0x60806040526003805460ff1916905534801561001a57600080fd5b50604051610ff5380380610ff5833981016040819052610039916100b7565b61004233610067565b600180546001600160a01b0319166001600160a01b03929092169190911790556100e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c957600080fd5b81516001600160a01b03811681146100e057600080fd5b9392505050565b610eff806100f66000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610115578063ac8a7b431461013a578063cf3090121461014d578063d25f82a01461016a578063f2fde38b14610172578063fc0c546a1461018557600080fd5b806306661abd146100ae57806321860a05146100c557806351cff8d9146100e557806361e7f4fa146100fa578063715018a61461010d575b600080fd5b6004545b6040519081526020015b60405180910390f35b6100b26100d3366004610c53565b60026020526000908152604090205481565b6100f86100f3366004610c53565b610198565b005b6100f8610108366004610c75565b61034a565b6100f861071c565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100bc565b6100f8610148366004610d3c565b610752565b60035461015a9060ff1681565b60405190151581526020016100bc565b6100f861078f565b6100f8610180366004610c53565b610a3e565b600154610122906001600160a01b031681565b6000546001600160a01b031633146101cb5760405162461bcd60e51b81526004016101c290610d8f565b60405180910390fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561020f57600080fd5b505afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190610d76565b90506000811161028e5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f7567682062616c616e636560701b60448201526064016101c2565b610296610ad9565b60015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156102e457600080fd5b505af11580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190610d59565b506040517f4b307f80cc21019c905454c1c2554d6c56b30b99ef046416630e7a407cf999c190600090a15050565b6000546001600160a01b031633146103745760405162461bcd60e51b81526004016101c290610d8f565b8151158015906103845750805115155b6103bf5760405162461bcd60e51b815260206004820152600c60248201526b4d697373696e67206461746160a01b60448201526064016101c2565b805182511461041e5760405162461bcd60e51b815260206004820152602560248201527f426f7468206c69737473206e65656420746f206265207468652073616d65206c6044820152640cadccee8d60db1b60648201526084016101c2565b6000805b82518110156104645782818151811061043d5761043d610e8f565b6020026020010151826104509190610e19565b91508061045c81610e48565b915050610422565b506000805b6004548110156104cd57600260006004838154811061048a5761048a610e8f565b60009182526020808320909101546001600160a01b031683528201929092526040019020546104b99083610e19565b9150806104c581610e48565b915050610469565b506104d88183610e19565b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105539190610d76565b10156105b85760405162461bcd60e51b815260206004820152602e60248201527f596f7520646f6e2774206861766520656e6f7567682062616c616e636520666f60448201526d07220746869732061697264726f760941b60648201526084016101c2565b60005b8451811015610715578381815181106105d6576105d6610e8f565b6020026020010151600260008784815181106105f4576105f4610e8f565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600082825461062b9190610e19565b9091555060009050805b6004548110156106ac576004818154811061065257610652610e8f565b60009182526020909120015487516001600160a01b039091169088908590811061067e5761067e610e8f565b60200260200101516001600160a01b0316141561069a57600191505b806106a481610e48565b915050610635565b50806107025760048683815181106106c6576106c6610e8f565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b508061070d81610e48565b9150506105bb565b5050505050565b6000546001600160a01b031633146107465760405162461bcd60e51b81526004016101c290610d8f565b6107506000610b43565b565b6000546001600160a01b0316331461077c5760405162461bcd60e51b81526004016101c290610d8f565b6003805460ff1916911515919091179055565b60035460ff16156107e25760405162461bcd60e51b815260206004820152601d60248201527f536f7272792c2074686520636f6e7472616374206973206c6f636b656400000060448201526064016101c2565b336000908152600260205260409020548061083f5760405162461bcd60e51b815260206004820152601b60248201527f4e6f2061697264726f7020666f7220746869732061646472657373000000000060448201526064016101c2565b336000908152600260205260408120819055805b6004548110156108ab57336001600160a01b03166004828154811061087a5761087a610e8f565b6000918252602090912001546001600160a01b03161415610899578091505b806108a381610e48565b915050610853565b50805b6004546108bd90600190610e31565b8110156109485760046108d1826001610e19565b815481106108e1576108e1610e8f565b600091825260209091200154600480546001600160a01b03909216918390811061090d5761090d610e8f565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061094081610e48565b9150506108ae565b50600480548061095a5761095a610e79565b600082815260209020600019908201810180546001600160a01b031916905501905560015460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b1580156109c857600080fd5b505af11580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a009190610d59565b5060408051338152602081018490527f0acbdb5fe8f7bd60af8959d4cc711ddababe08cd06b46da7d6bac08313e55056910160405180910390a15050565b6000546001600160a01b03163314610a685760405162461bcd60e51b81526004016101c290610d8f565b6001600160a01b038116610acd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101c2565b610ad681610b43565b50565b60005b600454811015610b365760006002600060048481548110610aff57610aff610e8f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205580610b2e81610e48565b915050610adc565b5061075060046000610b93565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546000825590600052602060002090810190610ad691905b80821115610bc15760008155600101610bad565b5090565b80356001600160a01b0381168114610bdc57600080fd5b919050565b600082601f830112610bf257600080fd5b81356020610c07610c0283610df5565b610dc4565b80838252828201915082860187848660051b8901011115610c2757600080fd5b60005b85811015610c4657813584529284019290840190600101610c2a565b5090979650505050505050565b600060208284031215610c6557600080fd5b610c6e82610bc5565b9392505050565b60008060408385031215610c8857600080fd5b823567ffffffffffffffff80821115610ca057600080fd5b818501915085601f830112610cb457600080fd5b81356020610cc4610c0283610df5565b8083825282820191508286018a848660051b8901011115610ce457600080fd5b600096505b84871015610d0e57610cfa81610bc5565b835260019690960195918301918301610ce9565b5096505086013592505080821115610d2557600080fd5b50610d3285828601610be1565b9150509250929050565b600060208284031215610d4e57600080fd5b8135610c6e81610ebb565b600060208284031215610d6b57600080fd5b8151610c6e81610ebb565b600060208284031215610d8857600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610ded57610ded610ea5565b604052919050565b600067ffffffffffffffff821115610e0f57610e0f610ea5565b5060051b60200190565b60008219821115610e2c57610e2c610e63565b500190565b600082821015610e4357610e43610e63565b500390565b6000600019821415610e5c57610e5c610e63565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114610ad657600080fdfea26469706673582212209f047117b5affc3ac86ab1477a744df32476e93a5baa1d7072e90fb4108eedfd64736f6c634300080700330000000000000000000000000e2e120f5e18f2d0a1afd0fab02b09aa37a17f7e