0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063ac8a584a11610066578063ac8a584a146101f0578063b297800a14610203578063e67c972814610216578063f2fde38b1461022957600080fd5b80638da5cb5b1461019c578063902db792146101b75780639870d7fe146101ca57806399666ac4146101dd57600080fd5b806354fd4d50116100d357806354fd4d501461015a5780636d70f7ae14610169578063715018a61461018c5780638129fc1c1461019457600080fd5b80632babf0de146100fa57806331b61a541461010f5780633371bfff14610122575b600080fd5b61010d610108366004610a89565b61023c565b005b61010d61011d366004610ad6565b6102f4565b610145610130366004610b98565b60656020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b60405160028152602001610151565b610145610177366004610b98565b60666020526000908152604090205460ff1681565b61010d6103da565b61010d6103ee565b6033546040516001600160a01b039091168152602001610151565b61010d6101c5366004610bba565b6104e0565b61010d6101d8366004610b98565b61053a565b61010d6101eb366004610b98565b610606565b61010d6101fe366004610b98565b61067f565b61010d610211366004610b98565b610746565b61010d610224366004610a89565b6107bb565b61010d610237366004610b98565b61086b565b3360009081526066602052604090205460ff166102745760405162461bcd60e51b815260040161026b90610bed565b60405180910390fd5b60005b81518110156102f057600082828151811061029457610294610c61565b6020908102919091018101516001600160a01b0381166000908152606590925260409091205490915060ff166102c957600080fd5b6001600160a01b03166000908152606560205260409020805460ff19169055600101610277565b5050565b3360009081526066602052604090205460ff166103235760405162461bcd60e51b815260040161026b90610bed565b805182511461033157600080fd5b60005b82518110156103d557600083828151811061035157610351610c61565b60200260200101519050600083838151811061036f5761036f610c61565b6020908102919091018101516001600160a01b0384166000908152606590925260409091205490915060ff166103a457600080fd5b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055600101610334565b505050565b6103e26108e4565b6103ec600061093e565b565b600054600290610100900460ff16158015610410575060005460ff8083169116105b6104735760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161026b565b6000805461ffff191660ff8316908117610100178255338252606660209081526040808420805460ff19166001179055835461ff00191690935591519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498910160405180910390a150565b3360009081526066602052604090205460ff1661050f5760405162461bcd60e51b815260040161026b90610bed565b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055565b6105426108e4565b6001600160a01b03811660009081526066602052604090205460ff16156105e25760405162461bcd60e51b815260206004820152604860248201527f44656e796c6973743a3a6164644f70657261746f723a2054686520616464726560448201527f737320697320616c7265616479207265676973746572656420617320616e206f6064820152673832b930ba37b91760c11b608482015260a40161026b565b6001600160a01b03166000908152606660205260409020805460ff19166001179055565b3360009081526066602052604090205460ff166106355760405162461bcd60e51b815260040161026b90610bed565b6001600160a01b03811660009081526065602052604090205460ff161561065b57600080fd5b6001600160a01b03166000908152606560205260409020805460ff19166001179055565b6106876108e4565b6001600160a01b03811660009081526066602052604090205460ff166107255760405162461bcd60e51b815260206004820152604760248201527f44656e796c6973743a3a72656d6f76654f70657261746f723a2054686520616460448201527f6472657373206973206e6f74207265676973746572656420617320616e206f7060648201526632b930ba37b91760c91b608482015260a40161026b565b6001600160a01b03166000908152606660205260409020805460ff19169055565b3360009081526066602052604090205460ff166107755760405162461bcd60e51b815260040161026b90610bed565b6001600160a01b03811660009081526065602052604090205460ff1661079a57600080fd5b6001600160a01b03166000908152606560205260409020805460ff19169055565b3360009081526066602052604090205460ff166107ea5760405162461bcd60e51b815260040161026b90610bed565b60005b81518110156102f057600082828151811061080a5761080a610c61565b6020908102919091018101516001600160a01b0381166000908152606590925260409091205490915060ff161561084057600080fd5b6001600160a01b03166000908152606560205260409020805460ff19166001908117909155016107ed565b6108736108e4565b6001600160a01b0381166108d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161026b565b6108e18161093e565b50565b6033546001600160a01b031633146103ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156109cf576109cf610990565b604052919050565b600067ffffffffffffffff8211156109f1576109f1610990565b5060051b60200190565b80356001600160a01b0381168114610a1257600080fd5b919050565b600082601f830112610a2857600080fd5b81356020610a3d610a38836109d7565b6109a6565b82815260059290921b84018101918181019086841115610a5c57600080fd5b8286015b84811015610a7e57610a71816109fb565b8352918301918301610a60565b509695505050505050565b600060208284031215610a9b57600080fd5b813567ffffffffffffffff811115610ab257600080fd5b610abe84828501610a17565b949350505050565b80358015158114610a1257600080fd5b60008060408385031215610ae957600080fd5b823567ffffffffffffffff80821115610b0157600080fd5b610b0d86838701610a17565b9350602091508185013581811115610b2457600080fd5b85019050601f81018613610b3757600080fd5b8035610b45610a38826109d7565b81815260059190911b82018301908381019088831115610b6457600080fd5b928401925b82841015610b8957610b7a84610ac6565b82529284019290840190610b69565b80955050505050509250929050565b600060208284031215610baa57600080fd5b610bb3826109fb565b9392505050565b60008060408385031215610bcd57600080fd5b610bd6836109fb565b9150610be460208401610ac6565b90509250929050565b6020808252604e908201527f44656e796c6973743a3a6f6e6c794f70657261746f723a204f6e6c7920616e2060408201527f617574686f72697a6564206f70657261746f722063616e20657865637574652060608201526d3a3434b990333ab731ba34b7b71760911b608082015260a00190565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220fc545d88fef44d57fa9c4d9e6e1f77c76fb4f3ce473432684c868ddc0d36fdd864736f6c63430008090033