60806040523480156200001157600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200005f6012600a6200019b565b620000709064174876e800620001b0565b33600090815260016020526040902055620001ca565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620000dd578160001904821115620000c157620000c162000086565b80851615620000cf57918102915b93841c9390800290620000a1565b509250929050565b600082620000f65750600162000195565b81620001055750600062000195565b81600181146200011e5760028114620001295762000149565b600191505062000195565b60ff8411156200013d576200013d62000086565b50506001821b62000195565b5060208310610133831016604e8410600b84101617156200016e575081810a62000195565b6200017a83836200009c565b806000190482111562000191576200019162000086565b0290505b92915050565b6000620001a98383620000e5565b9392505050565b808202811582820484141762000195576200019562000086565b610cfd80620001da6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80635fecd92611610097578063a9059cbb11610066578063a9059cbb14610256578063dd62ed3e14610269578063f2fde38b14610294578063ffecf516146102a757600080fd5b80635fecd926146101d557806370a08231146101e85780638da5cb5b1461020857806395d89b411461023357600080fd5b806323b872dd116100d357806323b872dd14610170578063313ce567146101835780633bbac5791461019d57806342966c68146101c057600080fd5b806306fdde03146100fa578063095ea7b31461013757806318160ddd1461015a575b600080fd5b610121604051806040016040528060088152602001674d65727020496e7560c01b81525081565b60405161012e91906109e8565b60405180910390f35b61014a610145366004610a52565b6102ba565b604051901515815260200161012e565b610162610327565b60405190815260200161012e565b61014a61017e366004610a7c565b610345565b61018b601281565b60405160ff909116815260200161012e565b61014a6101ab366004610ab8565b60036020526000908152604090205460ff1681565b6101d36101ce366004610ada565b610480565b005b6101d36101e3366004610ab8565b6104b7565b6101626101f6366004610ab8565b60016020526000908152604090205481565b60005461021b906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b6101216040518060400160405280600481526020016304d4552560e41b81525081565b61014a610264366004610a52565b610537565b610162610277366004610af3565b600260209081526000928352604080842090915290825290205481565b6101d36102a2366004610ab8565b6105bb565b6101d36102b5366004610ab8565b610696565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103159086815260200190565b60405180910390a35060015b92915050565b6103336012600a610c20565b6103429064174876e800610c2c565b81565b6001600160a01b038316600090815260036020526040812054849060ff16156103895760405162461bcd60e51b815260040161038090610c43565b60405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156103c45760405162461bcd60e51b815260040161038090610c43565b6001600160a01b03861660009081526002602090815260408083203384529091529020548411156104305760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610380565b6001600160a01b038616600090815260026020908152604080832033845290915281208054869290610463908490610c7a565b909155506104749050868686610717565b50600195945050505050565b6000546001600160a01b031633146104aa5760405162461bcd60e51b815260040161038090610c8d565b6104b433826108d0565b50565b6000546001600160a01b031633146104e15760405162461bcd60e51b815260040161038090610c8d565b6001600160a01b0381166000818152600360209081526040808320805460ff19169055519182527f294a1fa77b3527289428eb8a72d35d4e94834951d96940e6fe3b7b0c1bd4ac2091015b60405180910390a250565b3360008181526003602052604081205490919060ff161561056a5760405162461bcd60e51b815260040161038090610c43565b6001600160a01b038416600090815260036020526040902054849060ff16156105a55760405162461bcd60e51b815260040161038090610c43565b6105b0338686610717565b506001949350505050565b6000546001600160a01b031633146105e55760405162461bcd60e51b815260040161038090610c8d565b6001600160a01b03811661063b5760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006044820152606401610380565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146106c05760405162461bcd60e51b815260040161038090610c8d565b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915591519182527f294a1fa77b3527289428eb8a72d35d4e94834951d96940e6fe3b7b0c1bd4ac20910161052c565b6001600160a01b03831661076d5760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610380565b6001600160a01b0382166107c35760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610380565b6001600160a01b0383166000908152600160205260409020548111156108225760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610380565b6001600160a01b0383166000908152600160205260408120805483929061084a908490610c7a565b90915550506001600160a01b03821660009081526001602052604081208054839290610877908490610cb4565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108c391815260200190565b60405180910390a3505050565b6001600160a01b0382166000908152600160205260409020548111156109385760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f72206275726e0000006044820152606401610380565b6001600160a01b03821660009081526001602052604081208054839290610960908490610c7a565b90915550506040518181526001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a26040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015610a15578581018301518582016040015282016109f9565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4d57600080fd5b919050565b60008060408385031215610a6557600080fd5b610a6e83610a36565b946020939093013593505050565b600080600060608486031215610a9157600080fd5b610a9a84610a36565b9250610aa860208501610a36565b9150604084013590509250925092565b600060208284031215610aca57600080fd5b610ad382610a36565b9392505050565b600060208284031215610aec57600080fd5b5035919050565b60008060408385031215610b0657600080fd5b610b0f83610a36565b9150610b1d60208401610a36565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610b77578160001904821115610b5d57610b5d610b26565b80851615610b6a57918102915b93841c9390800290610b41565b509250929050565b600082610b8e57506001610321565b81610b9b57506000610321565b8160018114610bb15760028114610bbb57610bd7565b6001915050610321565b60ff841115610bcc57610bcc610b26565b50506001821b610321565b5060208310610133831016604e8410600b8410161715610bfa575081810a610321565b610c048383610b3c565b8060001904821115610c1857610c18610b26565b029392505050565b6000610ad38383610b7f565b808202811582820484141761032157610321610b26565b6020808252601a908201527f4163636f756e74206973206d61726b6564206173206120626f74000000000000604082015260600190565b8181038181111561032157610321610b26565b6020808252600d908201526c2737ba103a34329037bbb732b960991b604082015260600190565b8082018082111561032157610321610b2656fea26469706673582212201adf926f2585e76c97bada418034c46a28bff93f5be3ef568b3c938cee33aaad64736f6c63430008130033