0x6080604052600436106101235760003560e01c80636c0a24eb116100a057806395d89b411161006457806395d89b4114610377578063a9059cbb146103aa578063dd62ed3e146103ca578063e0a2254314610410578063f42938901461043057600080fd5b80636c0a24eb146102cd57806370a08231146102e3578063715018a61461031057806382bf293c14610325578063893d20e81461034557600080fd5b80632b112e49116100e75780632b112e49146102105780632f54bf6e14610225578063313ce56714610254578063425ecff81461027b578063495bb3ea146102ab57600080fd5b806306fdde031461012f578063095ea7b31461017c57806311704f52146101ac57806318160ddd146101cd57806323b872dd146101f057600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b506101666040518060400160405280600b81526020016a78436f6c6c65637469766560a81b81525081565b6040516101739190610a5e565b60405180910390f35b34801561018857600080fd5b5061019c610197366004610ac8565b610445565b6040519015158152602001610173565b3480156101b857600080fd5b5060055461019c90600160a01b900460ff1681565b3480156101d957600080fd5b506101e26104b2565b604051908152602001610173565b3480156101fc57600080fd5b5061019c61020b366004610af2565b6104cc565b34801561021c57600080fd5b506101e261058c565b34801561023157600080fd5b5061019c610240366004610b2e565b6000546001600160a01b0391821691161490565b34801561026057600080fd5b50610269601281565b60405160ff9091168152602001610173565b34801561028757600080fd5b5061019c610296366004610b2e565b60046020526000908152604090205460ff1681565b3480156102b757600080fd5b506102cb6102c6366004610b2e565b6105aa565b005b3480156102d957600080fd5b506101e260015481565b3480156102ef57600080fd5b506101e26102fe366004610b2e565b60026020526000908152604090205481565b34801561031c57600080fd5b506102cb610660565b34801561033157600080fd5b506102cb610340366004610b49565b61069c565b34801561035157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610173565b34801561038357600080fd5b5061016660405180604001604052806007815260200166784ecac7f1424160c91b81525081565b3480156103b657600080fd5b5061019c6103c5366004610ac8565b61074b565b3480156103d657600080fd5b506101e26103e5366004610b62565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561041c57600080fd5b5060055461035f906001600160a01b031681565b34801561043c57600080fd5b506102cb61075f565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104a09086815260200190565b60405180910390a35060015b92915050565b6104be6012600a610c8f565b6104c9906001610c9e565b81565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610579576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526003825283812033825290915291909120546105549184906107b8565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b6105848484846107f2565b949350505050565b600061059a6012600a610c8f565b6105a5906001610c9e565b905090565b6000546001600160a01b031633146105dd5760405162461bcd60e51b81526004016105d490610cb5565b60405180910390fd5b600554600160a01b900460ff16156106375760405162461bcd60e51b815260206004820181905260248201527f43616e7420646f2061667465722074726164696e6720686173206f70656e656460448201526064016105d4565b600580546001600160a01b039092166001600160a81b031990921691909117600160a01b179055565b6000546001600160a01b0316331461068a5760405162461bcd60e51b81526004016105d490610cb5565b600080546001600160a01b0319169055565b6000546001600160a01b031633146106c65760405162461bcd60e51b81526004016105d490610cb5565b60038110156107175760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f772033250000000060448201526064016105d4565b6064816107266012600a610c8f565b610731906001610c9e565b61073b9190610c9e565b6107459190610cd5565b60015550565b60006107583384846107f2565b9392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016105d490610cb5565b60405133904780156108fc02916000818181858888f193505050501580156107b5573d6000803e3d6000fd5b50565b600081848411156107dc5760405162461bcd60e51b81526004016105d49190610a5e565b5060006107e98486610cf7565b95945050505050565b6001600160a01b03831660009081526004602052604081205460ff1615801561083457506001600160a01b03831660009081526004602052604090205460ff16155b801561084e57506005546001600160a01b03848116911614155b15610918576001546001600160a01b03841660009081526002602052604090205461087a908490610d0a565b11156108c85760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016105d4565b600554600160a01b900460ff166109185760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016105d4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526002909152919091205461096a9184906107b8565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461099990836109ff565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ed9086815260200190565b60405180910390a35060019392505050565b600080610a0c8385610d0a565b9050838110156107585760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d4565b600060208083528351808285015260005b81811015610a8b57858101830151858201604001528201610a6f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ac357600080fd5b919050565b60008060408385031215610adb57600080fd5b610ae483610aac565b946020939093013593505050565b600080600060608486031215610b0757600080fd5b610b1084610aac565b9250610b1e60208501610aac565b9150604084013590509250925092565b600060208284031215610b4057600080fd5b61075882610aac565b600060208284031215610b5b57600080fd5b5035919050565b60008060408385031215610b7557600080fd5b610b7e83610aac565b9150610b8c60208401610aac565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610be6578160001904821115610bcc57610bcc610b95565b80851615610bd957918102915b93841c9390800290610bb0565b509250929050565b600082610bfd575060016104ac565b81610c0a575060006104ac565b8160018114610c205760028114610c2a57610c46565b60019150506104ac565b60ff841115610c3b57610c3b610b95565b50506001821b6104ac565b5060208310610133831016604e8410600b8410161715610c69575081810a6104ac565b610c738383610bab565b8060001904821115610c8757610c87610b95565b029392505050565b600061075860ff841683610bee565b80820281158282048414176104ac576104ac610b95565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600082610cf257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104ac576104ac610b95565b808201808211156104ac576104ac610b9556fea26469706673582212206e9428b11b5d2018d749cfc8b8574734efe22b88e536c0e8d0e2515e1254261164736f6c63430008130033
0x60806040526032620000146012600a62000251565b6200002190600162000269565b6200002d919062000283565b6001556005805460ff60a01b191690553480156200004a57600080fd5b50600080546001600160a01b031916339081178255815260046020526040808220805460ff199081166001908117909255308452918320805483168217905561dead9092527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169091179055620000c86012600a62000251565b620000d590600162000269565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001186012600a62000251565b6200012590600162000269565b60405190815260200160405180910390a3620002a6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001935781600019048211156200017757620001776200013c565b808516156200018557918102915b93841c939080029062000157565b509250929050565b600082620001ac575060016200024b565b81620001bb575060006200024b565b8160018114620001d45760028114620001df57620001ff565b60019150506200024b565b60ff841115620001f357620001f36200013c565b50506001821b6200024b565b5060208310610133831016604e8410600b841016171562000224575081810a6200024b565b62000230838362000152565b80600019048211156200024757620002476200013c565b0290505b92915050565b60006200026260ff8416836200019b565b9392505050565b80820281158282048414176200024b576200024b6200013c565b600082620002a157634e487b7160e01b600052601260045260246000fd5b500490565b610d5380620002b66000396000f3fe6080604052600436106101235760003560e01c80636c0a24eb116100a057806395d89b411161006457806395d89b4114610377578063a9059cbb146103aa578063dd62ed3e146103ca578063e0a2254314610410578063f42938901461043057600080fd5b80636c0a24eb146102cd57806370a08231146102e3578063715018a61461031057806382bf293c14610325578063893d20e81461034557600080fd5b80632b112e49116100e75780632b112e49146102105780632f54bf6e14610225578063313ce56714610254578063425ecff81461027b578063495bb3ea146102ab57600080fd5b806306fdde031461012f578063095ea7b31461017c57806311704f52146101ac57806318160ddd146101cd57806323b872dd146101f057600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b506101666040518060400160405280600b81526020016a78436f6c6c65637469766560a81b81525081565b6040516101739190610a5e565b60405180910390f35b34801561018857600080fd5b5061019c610197366004610ac8565b610445565b6040519015158152602001610173565b3480156101b857600080fd5b5060055461019c90600160a01b900460ff1681565b3480156101d957600080fd5b506101e26104b2565b604051908152602001610173565b3480156101fc57600080fd5b5061019c61020b366004610af2565b6104cc565b34801561021c57600080fd5b506101e261058c565b34801561023157600080fd5b5061019c610240366004610b2e565b6000546001600160a01b0391821691161490565b34801561026057600080fd5b50610269601281565b60405160ff9091168152602001610173565b34801561028757600080fd5b5061019c610296366004610b2e565b60046020526000908152604090205460ff1681565b3480156102b757600080fd5b506102cb6102c6366004610b2e565b6105aa565b005b3480156102d957600080fd5b506101e260015481565b3480156102ef57600080fd5b506101e26102fe366004610b2e565b60026020526000908152604090205481565b34801561031c57600080fd5b506102cb610660565b34801561033157600080fd5b506102cb610340366004610b49565b61069c565b34801561035157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610173565b34801561038357600080fd5b5061016660405180604001604052806007815260200166784ecac7f1424160c91b81525081565b3480156103b657600080fd5b5061019c6103c5366004610ac8565b61074b565b3480156103d657600080fd5b506101e26103e5366004610b62565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561041c57600080fd5b5060055461035f906001600160a01b031681565b34801561043c57600080fd5b506102cb61075f565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104a09086815260200190565b60405180910390a35060015b92915050565b6104be6012600a610c8f565b6104c9906001610c9e565b81565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610579576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526003825283812033825290915291909120546105549184906107b8565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b6105848484846107f2565b949350505050565b600061059a6012600a610c8f565b6105a5906001610c9e565b905090565b6000546001600160a01b031633146105dd5760405162461bcd60e51b81526004016105d490610cb5565b60405180910390fd5b600554600160a01b900460ff16156106375760405162461bcd60e51b815260206004820181905260248201527f43616e7420646f2061667465722074726164696e6720686173206f70656e656460448201526064016105d4565b600580546001600160a01b039092166001600160a81b031990921691909117600160a01b179055565b6000546001600160a01b0316331461068a5760405162461bcd60e51b81526004016105d490610cb5565b600080546001600160a01b0319169055565b6000546001600160a01b031633146106c65760405162461bcd60e51b81526004016105d490610cb5565b60038110156107175760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f772033250000000060448201526064016105d4565b6064816107266012600a610c8f565b610731906001610c9e565b61073b9190610c9e565b6107459190610cd5565b60015550565b60006107583384846107f2565b9392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016105d490610cb5565b60405133904780156108fc02916000818181858888f193505050501580156107b5573d6000803e3d6000fd5b50565b600081848411156107dc5760405162461bcd60e51b81526004016105d49190610a5e565b5060006107e98486610cf7565b95945050505050565b6001600160a01b03831660009081526004602052604081205460ff1615801561083457506001600160a01b03831660009081526004602052604090205460ff16155b801561084e57506005546001600160a01b03848116911614155b15610918576001546001600160a01b03841660009081526002602052604090205461087a908490610d0a565b11156108c85760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016105d4565b600554600160a01b900460ff166109185760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016105d4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526002909152919091205461096a9184906107b8565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461099990836109ff565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ed9086815260200190565b60405180910390a35060019392505050565b600080610a0c8385610d0a565b9050838110156107585760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d4565b600060208083528351808285015260005b81811015610a8b57858101830151858201604001528201610a6f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ac357600080fd5b919050565b60008060408385031215610adb57600080fd5b610ae483610aac565b946020939093013593505050565b600080600060608486031215610b0757600080fd5b610b1084610aac565b9250610b1e60208501610aac565b9150604084013590509250925092565b600060208284031215610b4057600080fd5b61075882610aac565b600060208284031215610b5b57600080fd5b5035919050565b60008060408385031215610b7557600080fd5b610b7e83610aac565b9150610b8c60208401610aac565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610be6578160001904821115610bcc57610bcc610b95565b80851615610bd957918102915b93841c9390800290610bb0565b509250929050565b600082610bfd575060016104ac565b81610c0a575060006104ac565b8160018114610c205760028114610c2a57610c46565b60019150506104ac565b60ff841115610c3b57610c3b610b95565b50506001821b6104ac565b5060208310610133831016604e8410600b8410161715610c69575081810a6104ac565b610c738383610bab565b8060001904821115610c8757610c87610b95565b029392505050565b600061075860ff841683610bee565b80820281158282048414176104ac576104ac610b95565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600082610cf257634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104ac576104ac610b95565b808201808211156104ac576104ac610b9556fea26469706673582212206e9428b11b5d2018d749cfc8b8574734efe22b88e536c0e8d0e2515e1254261164736f6c63430008130033