0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806398807d8411610097578063f2fde38b11610066578063f2fde38b14610216578063fb468ac314610229578063fc0c546a14610231578063ff50abdc1461025857600080fd5b806398807d8414610193578063a5a302d3146101b3578063bd8d99f4146101da578063ef40a670146101ed57600080fd5b806329cc05cf116100d357806329cc05cf14610149578063372500ab1461015e578063715018a6146101665780638da5cb5b1461016e57600080fd5b8063118ab4e1146100fa5780631d62ebd914610116578063238a6d9e14610129575b600080fd5b61010360015481565b6040519081526020015b60405180910390f35b610103610124366004610c75565b610260565b610103610137366004610c75565b60056020526000908152604090205481565b61015c610157366004610c9e565b610271565b005b61015c6102fc565b61015c610307565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010d565b6101036101a1366004610c75565b60036020526000908152604090205481565b61017b7f00000000000000000000000027d72e38c23bdcacab5b31f58627393097bd846a81565b61015c6101e8366004610cde565b610319565b6101036101fb366004610c75565b6001600160a01b031660009081526003602052604090205490565b61015c610224366004610c75565b610329565b61015c6103a2565b61017b7f0000000000000000000000008b227d72570d3ead66014bca8305cbef7f90d1ee81565b600254610103565b600061026b826104c9565b92915050565b337f00000000000000000000000027d72e38c23bdcacab5b31f58627393097bd846a6001600160a01b0316146102dd5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064015b60405180910390fd5b80156102f2576102ed838361055d565b505050565b6102ed83836106cc565b610305336107e1565b565b61030f6108c5565b610305600061091f565b6103216108c5565b60ff16600155565b6103316108c5565b6001600160a01b0381166103965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102d4565b61039f8161091f565b50565b6103aa6108c5565b6002546040516370a0823160e01b8152306004820152600091906001600160a01b037f0000000000000000000000008b227d72570d3ead66014bca8305cbef7f90d1ee16906370a0823190602401602060405180830381865afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104399190610d01565b6104439190610d30565b9050600081116104955760405162461bcd60e51b815260206004820152601f60248201527f4e6f20726573696475616c2042616c616e636520746f2077697468647261770060448201526064016102d4565b61039f7f0000000000000000000000008b227d72570d3ead66014bca8305cbef7f90d1ee6001600160a01b0316338361096f565b6001600160a01b03811660009081526005602052604081205481906104ee9042610d30565b6001600160a01b038416600090815260046020908152604080832054600154600390935292205492935090916064916301e1338091859161052e91610d43565b6105389190610d43565b6105429190610d5a565b61054c9190610d5a565b6105569190610d7c565b9392505050565b600081116105ad5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016102d4565b6001600160a01b0382166000908152600360205260409020548111156106155760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420686967686572207468616e207374616b6564416d6f756e740060448201526064016102d4565b61061e826109c1565b6001600160a01b0382166000908152600460205260409020541561064557610645826107e1565b80600260008282546106579190610d30565b90915550506001600160a01b03821660009081526003602052604081208054839290610684908490610d30565b90915550506040518181526001600160a01b038316907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b6000811161071c5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016102d4565b6001600160a01b0382166000908152600560205260408120549003610757576001600160a01b03821660009081526005602052604090204290555b610760826109c1565b6001600160a01b03821660009081526003602052604081208054839290610788908490610d7c565b9250508190555080600260008282546107a19190610d7c565b90915550506040518181526001600160a01b038316907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c906020016106c0565b6107ea816109c1565b6001600160a01b038116600090815260046020526040902054806108435760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b60448201526064016102d4565b6001600160a01b0380831660009081526004602052604081205561088a907f0000000000000000000000008b227d72570d3ead66014bca8305cbef7f90d1ee16838361096f565b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4826040516106c091815260200190565b6000546001600160a01b031633146103055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526102ed9084906109f4565b6109ca816104c9565b6001600160a01b039091166000908152600460209081526040808320939093556005905220429055565b6000610a49826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ac99092919063ffffffff16565b9050805160001480610a6a575080806020019051810190610a6a9190610d8f565b6102ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d4565b6060610ad88484600085610ae0565b949350505050565b606082471015610b415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d4565b600080866001600160a01b03168587604051610b5d9190610dd0565b60006040518083038185875af1925050503d8060008114610b9a576040519150601f19603f3d011682016040523d82523d6000602084013e610b9f565b606091505b5091509150610bb087838387610bbb565b979650505050505050565b60608315610c2a578251600003610c23576001600160a01b0385163b610c235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d4565b5081610ad8565b610ad88383815115610c3f5781518083602001fd5b8060405162461bcd60e51b81526004016102d49190610dec565b80356001600160a01b0381168114610c7057600080fd5b919050565b600060208284031215610c8757600080fd5b61055682610c59565b801515811461039f57600080fd5b600080600060608486031215610cb357600080fd5b610cbc84610c59565b9250602084013591506040840135610cd381610c90565b809150509250925092565b600060208284031215610cf057600080fd5b813560ff8116811461055657600080fd5b600060208284031215610d1357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561026b5761026b610d1a565b808202811582820484141761026b5761026b610d1a565b600082610d7757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561026b5761026b610d1a565b600060208284031215610da157600080fd5b815161055681610c90565b60005b83811015610dc7578181015183820152602001610daf565b50506000910152565b60008251610de2818460208701610dac565b9190910192915050565b6020815260008251806020840152610e0b816040850160208701610dac565b601f01601f1916919091016040019291505056fea264697066735822122089db6dd4051800582027ff3950854ce2f493f18c7ac683d5733ce70639cd029464736f6c63430008140033
0x60c060405234801561001057600080fd5b50604051610f94380380610f9483398101604081905261002f916100bb565b61003833610053565b6001600160a01b03928316608052911660a0526001556100fe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100b857600080fd5b50565b6000806000606084860312156100d057600080fd5b83516100db816100a3565b60208501519093506100ec816100a3565b80925050604084015190509250925092565b60805160a051610e5561013f60003960008181610236015281816103ce0152818161049a01526108630152600081816101b801526102740152610e556000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806398807d8411610097578063f2fde38b11610066578063f2fde38b14610216578063fb468ac314610229578063fc0c546a14610231578063ff50abdc1461025857600080fd5b806398807d8414610193578063a5a302d3146101b3578063bd8d99f4146101da578063ef40a670146101ed57600080fd5b806329cc05cf116100d357806329cc05cf14610149578063372500ab1461015e578063715018a6146101665780638da5cb5b1461016e57600080fd5b8063118ab4e1146100fa5780631d62ebd914610116578063238a6d9e14610129575b600080fd5b61010360015481565b6040519081526020015b60405180910390f35b610103610124366004610c75565b610260565b610103610137366004610c75565b60056020526000908152604090205481565b61015c610157366004610c9e565b610271565b005b61015c6102fc565b61015c610307565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161010d565b6101036101a1366004610c75565b60036020526000908152604090205481565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b61015c6101e8366004610cde565b610319565b6101036101fb366004610c75565b6001600160a01b031660009081526003602052604090205490565b61015c610224366004610c75565b610329565b61015c6103a2565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b600254610103565b600061026b826104c9565b92915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146102dd5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064015b60405180910390fd5b80156102f2576102ed838361055d565b505050565b6102ed83836106cc565b610305336107e1565b565b61030f6108c5565b610305600061091f565b6103216108c5565b60ff16600155565b6103316108c5565b6001600160a01b0381166103965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102d4565b61039f8161091f565b50565b6103aa6108c5565b6002546040516370a0823160e01b8152306004820152600091906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104399190610d01565b6104439190610d30565b9050600081116104955760405162461bcd60e51b815260206004820152601f60248201527f4e6f20726573696475616c2042616c616e636520746f2077697468647261770060448201526064016102d4565b61039f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316338361096f565b6001600160a01b03811660009081526005602052604081205481906104ee9042610d30565b6001600160a01b038416600090815260046020908152604080832054600154600390935292205492935090916064916301e1338091859161052e91610d43565b6105389190610d43565b6105429190610d5a565b61054c9190610d5a565b6105569190610d7c565b9392505050565b600081116105ad5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016102d4565b6001600160a01b0382166000908152600360205260409020548111156106155760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420686967686572207468616e207374616b6564416d6f756e740060448201526064016102d4565b61061e826109c1565b6001600160a01b0382166000908152600460205260409020541561064557610645826107e1565b80600260008282546106579190610d30565b90915550506001600160a01b03821660009081526003602052604081208054839290610684908490610d30565b90915550506040518181526001600160a01b038316907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b6000811161071c5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016102d4565b6001600160a01b0382166000908152600560205260408120549003610757576001600160a01b03821660009081526005602052604090204290555b610760826109c1565b6001600160a01b03821660009081526003602052604081208054839290610788908490610d7c565b9250508190555080600260008282546107a19190610d7c565b90915550506040518181526001600160a01b038316907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c906020016106c0565b6107ea816109c1565b6001600160a01b038116600090815260046020526040902054806108435760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b60448201526064016102d4565b6001600160a01b0380831660009081526004602052604081205561088a907f000000000000000000000000000000000000000000000000000000000000000016838361096f565b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4826040516106c091815260200190565b6000546001600160a01b031633146103055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102d4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526102ed9084906109f4565b6109ca816104c9565b6001600160a01b039091166000908152600460209081526040808320939093556005905220429055565b6000610a49826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610ac99092919063ffffffff16565b9050805160001480610a6a575080806020019051810190610a6a9190610d8f565b6102ed5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d4565b6060610ad88484600085610ae0565b949350505050565b606082471015610b415760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d4565b600080866001600160a01b03168587604051610b5d9190610dd0565b60006040518083038185875af1925050503d8060008114610b9a576040519150601f19603f3d011682016040523d82523d6000602084013e610b9f565b606091505b5091509150610bb087838387610bbb565b979650505050505050565b60608315610c2a578251600003610c23576001600160a01b0385163b610c235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d4565b5081610ad8565b610ad88383815115610c3f5781518083602001fd5b8060405162461bcd60e51b81526004016102d49190610dec565b80356001600160a01b0381168114610c7057600080fd5b919050565b600060208284031215610c8757600080fd5b61055682610c59565b801515811461039f57600080fd5b600080600060608486031215610cb357600080fd5b610cbc84610c59565b9250602084013591506040840135610cd381610c90565b809150509250925092565b600060208284031215610cf057600080fd5b813560ff8116811461055657600080fd5b600060208284031215610d1357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561026b5761026b610d1a565b808202811582820484141761026b5761026b610d1a565b600082610d7757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561026b5761026b610d1a565b600060208284031215610da157600080fd5b815161055681610c90565b60005b83811015610dc7578181015183820152602001610daf565b50506000910152565b60008251610de2818460208701610dac565b9190910192915050565b6020815260008251806020840152610e0b816040850160208701610dac565b601f01601f1916919091016040019291505056fea264697066735822122089db6dd4051800582027ff3950854ce2f493f18c7ac683d5733ce70639cd029464736f6c6343000814003300000000000000000000000027d72e38c23bdcacab5b31f58627393097bd846a0000000000000000000000008b227d72570d3ead66014bca8305cbef7f90d1ee0000000000000000000000000000000000000000000000000000000000000007