0x608060405260646100126009600a6102fb565b61002090633b9aca00610311565b61002a9190610328565b600555606461003b6009600a6102fb565b61004990633b9aca00610311565b6100539190610328565b600655600780546001600160a01b03191661dead1790556009805460ff60a81b191690556001600a556000600b819055600f600c819055600d819055600e82905581905561009e3390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916731f2f31a6d9f36f7b99af12659032f6671d8300531790556001600360006101266000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560045490911681526003909252808220805484166001908117909155308352912080549092161790556101896009600a6102fb565b61019790633b9aca00610311565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101d86009600a6102fb565b6101e690633b9aca00610311565b60405190815260200160405180910390a361034a565b634e487b7160e01b600052601160045260246000fd5b6001815b600184111561024d57808504811115610231576102316101fc565b600184161561023f57908102905b60019390931c928002610216565b935093915050565b600082610264575060016102f5565b81610271575060006102f5565b81600181146102875760028114610291576102ad565b60019150506102f5565b60ff8411156102a2576102a26101fc565b50506001821b6102f5565b5060208310610133831016604e8410600b84101617156102d0575081810a6102f5565b6102dd6000198484610212565b80600019048211156102f1576102f16101fc565b0290505b92915050565b600061030a60ff841683610255565b9392505050565b80820281158282048414176102f5576102f56101fc565b60008261034557634e487b7160e01b600052601260045260246000fd5b500490565b61195f806103596000396000f3fe6080604052600436106100f75760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb146102c3578063bf474bed146102e3578063c9567bf9146102f9578063dd62ed3e1461030e57600080fd5b806370a0823114610223578063715018a6146102595780638da5cb5b1461026e57806395d89b411461029657600080fd5b806320800a00116100c657806320800a00146101b057806323b872dd146101c7578063313ce567146101e7578063672434821461020357600080fd5b806306fdde0314610103578063095ea7b3146101475780630faee56f1461017757806318160ddd1461019b57600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b506040805180820190915260098152684368696c6c2042726f60b81b60208201525b60405161013e919061138a565b60405180910390f35b34801561015357600080fd5b506101676101623660046113ed565b610354565b604051901515815260200161013e565b34801561018357600080fd5b5061018d60065481565b60405190815260200161013e565b3480156101a757600080fd5b5061018d61036b565b3480156101bc57600080fd5b506101c561038c565b005b3480156101d357600080fd5b506101676101e2366004611419565b6103ee565b3480156101f357600080fd5b506040516009815260200161013e565b34801561020f57600080fd5b506101c561021e366004611532565b610457565b34801561022f57600080fd5b5061018d61023e3660046115fd565b6001600160a01b031660009081526001602052604090205490565b34801561026557600080fd5b506101c561059b565b34801561027a57600080fd5b506000546040516001600160a01b03909116815260200161013e565b3480156102a257600080fd5b506040805180820190915260048152634342524f60e01b6020820152610131565b3480156102cf57600080fd5b506101676102de3660046113ed565b61060f565b3480156102ef57600080fd5b5061018d60055481565b34801561030557600080fd5b506101c561061c565b34801561031a57600080fd5b5061018d61032936600461161a565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006103613384846109ed565b5060015b92915050565b60006103796009600a611750565b61038790633b9aca0061175f565b905090565b6000546001600160a01b031633146103bf5760405162461bcd60e51b81526004016103b690611776565b60405180910390fd5b60405133904780156108fc02916000818181858888f193505050501580156103eb573d6000803e3d6000fd5b50565b60006103fb848484610b11565b61044d843361044885604051806060016040528060288152602001611902602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610f7b565b6109ed565b5060019392505050565b60005b8251811015610596576000838281518110610477576104776117ab565b6020026020010151905061dead6001600160a01b0316816001600160a01b0316141580156104e257508282815181106104b2576104b26117ab565b602002602001015160016000836001600160a01b03166001600160a01b0316815260200190815260200160002054115b1561058d5760008383815181106104fb576104fb6117ab565b602002602001015160016000846001600160a01b03166001600160a01b031681526020019081526020016000205461053391906117c1565b905061058b82338360016000876001600160a01b03166001600160a01b0316815260200190815260200160002054600086101560405180604001604052806007815260200166041697264726f760cc1b815250610fb5565b505b5060010161045a565b505050565b6000546001600160a01b031633146105c55760405162461bcd60e51b81526004016103b690611776565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610361338484610b11565b6000546001600160a01b031633146106465760405162461bcd60e51b81526004016103b690611776565b600954600160a01b900460ff16156106a05760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103b6565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556106e99030906106db6009600a611750565b61044890633b9aca0061175f565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076091906117d4565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e691906117d4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610833573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085791906117d4565b600980546001600160a01b039283166001600160a01b03199091161790556008541663f305d71947306103e86108a2826001600160a01b031660009081526001602052604090205490565b6108ae906103c461175f565b6108b891906117f1565b6000806108cd6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610935573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061095a9190611813565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611841565b506009805460ff60a01b1916600160a01b179055565b6001600160a01b038316610a4f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b6565b6001600160a01b038216610ab05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b6565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b6565b6001600160a01b038216610bd75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b6565b60008111610c395760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103b6565b600080546001600160a01b03858116911614801590610c6657506000546001600160a01b03848116911614155b8015610c7b57506001600160a01b0384163014155b8015610c9057506001600160a01b0383163014155b15610e2257610cb56064610caf600e548561102390919063ffffffff16565b906110ac565b6009549091506001600160a01b038581169116148015610ce357506008546001600160a01b03848116911614155b8015610d0857506001600160a01b03831660009081526003602052604090205460ff16155b15610d4b57610d336064610caf600c54600f5411610d2857600a54610d2c565b600b545b8590611023565b600f80549192506000610d4583611863565b91905055505b6009546001600160a01b038481169116148015610d7157506001600160a01b0384163014155b15610d9c57610d916064610caf600c54600f5411610d2857600a54610d2c565b9050610d9c476110ee565b30600090815260016020526040902054600954600160a81b900460ff16158015610dd357506009546001600160a01b038581169116145b8015610de25750600d54600f54115b15610e2057600554811115610e0e57610e0e610e0984610e048460065461112c565b61112c565b611141565b478015610e1e57610e1e476110ee565b505b505b8015610e9c5730600090815260016020526040902054610e4290826112bb565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e939085815260200190565b60405180910390a35b6001600160a01b038416600090815260016020526040902054610ebf908361131a565b6001600160a01b038516600090815260016020526040902055610f04610ee5838361131a565b6001600160a01b038516600090815260016020526040902054906112bb565b6001600160a01b038085166000818152600160205260409020929092556007541614610f75576001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f63858561131a565b60405190815260200160405180910390a35b50505050565b60008184841115610f9f5760405162461bcd60e51b81526004016103b6919061138a565b506000610fac84866117c1565b95945050505050565b818015610fcf57506009546001600160a01b038781169116145b8015610fe957506004546001600160a01b03868116911614155b61101b576001600160a01b038616600090815260016020526040812080548692906110159084906117c1565b90915550505b505050505050565b60008260000361103557506000610365565b6000611041838561175f565b90508261104e85836117f1565b146110a55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016103b6565b9392505050565b60006110a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061135c565b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611128573d6000803e3d6000fd5b5050565b600081831161113b57826110a5565b50919050565b6009805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611189576111896117ab565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120691906117d4565b81600181518110611219576112196117ab565b6001600160a01b03928316602091820292909201015260085461123f91309116846109ed565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061127890859060009086903090429060040161187c565b600060405180830381600087803b15801561129257600080fd5b505af11580156112a6573d6000803e3d6000fd5b50506009805460ff60a81b1916905550505050565b6000806112c883856118ee565b9050838110156110a55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103b6565b60006110a583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f7b565b6000818361137d5760405162461bcd60e51b81526004016103b6919061138a565b506000610fac84866117f1565b602081526000825180602084015260005b818110156113b8576020818601810151604086840101520161139b565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103eb57600080fd5b6000806040838503121561140057600080fd5b823561140b816113d8565b946020939093013593505050565b60008060006060848603121561142e57600080fd5b8335611439816113d8565b92506020840135611449816113d8565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114995761149961145a565b604052919050565b600067ffffffffffffffff8211156114bb576114bb61145a565b5060051b60200190565b600082601f8301126114d657600080fd5b81356114e96114e4826114a1565b611470565b8082825260208201915060208360051b86010192508583111561150b57600080fd5b602085015b83811015611528578035835260209283019201611510565b5095945050505050565b6000806040838503121561154557600080fd5b823567ffffffffffffffff81111561155c57600080fd5b8301601f8101851361156d57600080fd5b803561157b6114e4826114a1565b8082825260208201915060208360051b85010192508783111561159d57600080fd5b6020840193505b828410156115c85783356115b7816113d8565b8252602093840193909101906115a4565b9450505050602083013567ffffffffffffffff8111156115e757600080fd5b6115f3858286016114c5565b9150509250929050565b60006020828403121561160f57600080fd5b81356110a5816113d8565b6000806040838503121561162d57600080fd5b8235611638816113d8565b91506020830135611648816113d8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156116a45780850481111561168857611688611653565b600184161561169657908102905b60019390931c92800261166d565b935093915050565b6000826116bb57506001610365565b816116c857506000610365565b81600181146116de57600281146116e857611704565b6001915050610365565b60ff8411156116f9576116f9611653565b50506001821b610365565b5060208310610133831016604e8410600b8410161715611727575081810a610365565b6117346000198484611669565b806000190482111561174857611748611653565b029392505050565b60006110a560ff8416836116ac565b808202811582820484141761036557610365611653565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b8181038181111561036557610365611653565b6000602082840312156117e657600080fd5b81516110a5816113d8565b60008261180e57634e487b7160e01b600052601260045260246000fd5b500490565b60008060006060848603121561182857600080fd5b5050815160208301516040909301519094929350919050565b60006020828403121561185357600080fd5b815180151581146110a557600080fd5b60006001820161187557611875611653565b5060010190565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156118ce5783516001600160a01b03168352602093840193909201916001016118a7565b50506001600160a01b039590951660608401525050608001529392505050565b808201808211156103655761036561165356fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122098ce30d0faa2899c8e950bd8976149af513c862d5921169e7778286e79173f2664736f6c634300081a0033