0x608060405234801561001057600080fd5b50610019610026565b610021610026565b6100e5565b600054610100900460ff16156100925760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100e3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611691806100f46000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806379ba50971161008c578063b2cb961611610066578063b2cb96161461022c578063d13d8a3914610258578063e30c39781461026b578063f2fde38b1461027c57600080fd5b806379ba5097146101ea5780638c11e98d146101f25780638da5cb5b1461021b57600080fd5b806341976e09116100c857806341976e091461019b578063485cc955146101bc578063715018a6146101cf5780637547e30b146101d757600080fd5b806309824a80146100ef5780631f69565f146101045780633088794e14610176575b600080fd5b6101026100fd366004611307565b61028f565b005b610117610112366004611307565b6105b5565b60405161016d9190600060a08201905060018060a01b0380845116835280602085015116602084015260ff604085015116604084015260ff60608501511660608401528060808501511660808401525092915050565b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b03909116815260200161016d565b6101ae6101a9366004611307565b61064e565b60405190815260200161016d565b6101026101ca36600461132b565b61091c565b610102610a31565b6101026101e53660046113b0565b610a45565b610102610e08565b6101ae610200366004611307565b6001600160a01b0316600090815260a2602052604090205490565b6033546001600160a01b0316610183565b61018361023a366004611307565b6001600160a01b03908116600090815260a360205260409020541690565b6101026102663660046113b0565b610e82565b6065546001600160a01b0316610183565b61010261028a366004611307565b61109d565b61029761110e565b6001600160a01b0381166102be5760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b03818116600090815260a36020526040902054168061030757604051634e3160a760e01b81526001600160a01b03831660048201526024015b60405180910390fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b919061141c565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d1919061141c565b90506040518060a00160405280836001600160a01b03168152602001826001600160a01b03168152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561043a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045e9190611439565b60ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c89190611439565b60ff90811682526001600160a01b03808716602093840152878116600090815260a48452604090819020855181549084166001600160a01b0319918216178255948601516001820180548885015160608a01518816600160a81b0260ff60a81b1991909816600160a01b026001600160a81b031990921693871693909317179190911694909417909355608090940151600290920180549290911691909216179055517f40b39da51b8530ffd459fd9b3a53974555c0744c0f8b0f15499c129933acbd90906105a79085906001600160a01b0391909116815260200190565b60405180910390a150505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160a01b03908116600090815260a46020908152604091829020825160a08101845281548516815260018201548086169382019390935260ff600160a01b8404811694820194909452600160a81b9092049092166060820152600290910154909116608082015290565b60008061065a836105b5565b60808101519091506001600160a01b0381166106945760405163385fd8c560e11b81526001600160a01b03851660048201526024016102fe565b6001600160a01b038416600090815260a260205260408120546106b690611168565b90508063ffffffff166000036106ea57604051633642055760e11b81526001600160a01b03861660048201526024016102fe565b82516020840151600080806001600160a01b03808b169086160361071d575050506060850151604086015182919061072e565b505050604085015160608601518391905b604051638241348960e01b81526001600160a01b038816600482015263ffffffff871660248201526000907320ece8e8848e887e6db8ba4f89c4cc9bfc8ae13f906382413489906044016040805180830381865af4158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b8919061145c565b50905060007320ece8e8848e887e6db8ba4f89c4cc9bfc8ae13f6343c57a27836107eb6107e687600a611599565b61119d565b8f896040518563ffffffff1660e01b815260040161083c949392919060029490940b84526001600160801b039290921660208401526001600160a01b03908116604084015216606082015260800190565b602060405180830381865af4158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d91906115a8565b905061088a84600a611599565b6097546040516341976e0960e01b81526001600160a01b038881166004830152909116906341976e0990602401602060405180830381865afa1580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f891906115a8565b61090290836115c1565b61090c91906115d8565b9c9b505050505050505050505050565b600054610100900460ff161580801561093c5750600054600160ff909116105b806109565750303b158015610956575060005460ff166001145b6109b95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102fe565b6000805460ff1916600117905580156109dc576000805461ff0019166101001790555b6109e683836111d1565b8015610a2c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610a3961110e565b610a436000611228565b565b610a4d61110e565b82818114610a6e5760405163025e650f60e01b815260040160405180910390fd5b60005b81811015610e00576000868683818110610a8d57610a8d6115fa565b9050602002016020810190610aa29190611307565b6001600160a01b03161480610ae657506000848483818110610ac657610ac66115fa565b9050602002016020810190610adb9190611307565b6001600160a01b0316145b15610b045760405163538ba4f960e01b815260040160405180910390fd5b838382818110610b1657610b166115fa565b9050602002016020810190610b2b9190611307565b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c919061141c565b6001600160a01b0316868683818110610ba757610ba76115fa565b9050602002016020810190610bbc9190611307565b6001600160a01b031614158015610c925750838382818110610be057610be06115fa565b9050602002016020810190610bf59190611307565b6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c56919061141c565b6001600160a01b0316868683818110610c7157610c716115fa565b9050602002016020810190610c869190611307565b6001600160a01b031614155b15610ce357838382818110610ca957610ca96115fa565b9050602002016020810190610cbe9190611307565b604051634e3160a760e01b81526001600160a01b0390911660048201526024016102fe565b838382818110610cf557610cf56115fa565b9050602002016020810190610d0a9190611307565b60a36000888885818110610d2057610d206115fa565b9050602002016020810190610d359190611307565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790557f3763166362772a0cb8a4c0ea91ee8d3ac227e94a6bf004f6ba87709159231087868683818110610d9957610d996115fa565b9050602002016020810190610dae9190611307565b858584818110610dc057610dc06115fa565b9050602002016020810190610dd59190611307565b604080516001600160a01b0393841681529290911660208301520160405180910390a1600101610a71565b505050505050565b60655433906001600160a01b03168114610e765760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016102fe565b610e7f81611228565b50565b610e8a61110e565b82818114610eab5760405163025e650f60e01b815260040160405180910390fd5b60005b81811015610e00576202a300848483818110610ecc57610ecc6115fa565b905060200201351115610f0e57838382818110610eeb57610eeb6115fa565b9050602002013560405163f5d3e54f60e01b81526004016102fe91815260200190565b60b4848483818110610f2257610f226115fa565b905060200201351015610f6457838382818110610f4157610f416115fa565b90506020020135604051635cab37cb60e11b81526004016102fe91815260200190565b6000868683818110610f7857610f786115fa565b9050602002016020810190610f8d9190611307565b6001600160a01b031603610fb45760405163538ba4f960e01b815260040160405180910390fd5b838382818110610fc657610fc66115fa565b9050602002013560a26000888885818110610fe357610fe36115fa565b9050602002016020810190610ff89190611307565b6001600160a01b031681526020810191909152604001600020557fd1b3641b73e6c323671a85001b02db34d4e63a7fa6d264896138094dd6b8bfdf868683818110611045576110456115fa565b905060200201602081019061105a9190611307565b85858481811061106c5761106c6115fa565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1600101610eae565b6110a561110e565b606580546001600160a01b0383166001600160a01b031990911681179091556110d66033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314610a435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102fe565b600063ffffffff821115611199576040516306dfcc6560e41b815260206004820152602481018390526044016102fe565b5090565b60006001600160801b03821115611199576040516306dfcc6560e41b815260806004820152602481018390526044016102fe565b600054610100900460ff166111f85760405162461bcd60e51b81526004016102fe90611610565b609780546001600160a01b0319166001600160a01b03841617905561121b611241565b61122481611228565b5050565b606580546001600160a01b0319169055610e7f81611270565b600054610100900460ff166112685760405162461bcd60e51b81526004016102fe90611610565b610a436112c2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166112e95760405162461bcd60e51b81526004016102fe90611610565b610a4333611228565b6001600160a01b0381168114610e7f57600080fd5b60006020828403121561131957600080fd5b8135611324816112f2565b9392505050565b6000806040838503121561133e57600080fd5b8235611349816112f2565b91506020830135611359816112f2565b809150509250929050565b60008083601f84011261137657600080fd5b50813567ffffffffffffffff81111561138e57600080fd5b6020830191508360208260051b85010111156113a957600080fd5b9250929050565b600080600080604085870312156113c657600080fd5b843567ffffffffffffffff808211156113de57600080fd5b6113ea88838901611364565b9096509450602087013591508082111561140357600080fd5b5061141087828801611364565b95989497509550505050565b60006020828403121561142e57600080fd5b8151611324816112f2565b60006020828403121561144b57600080fd5b815160ff8116811461132457600080fd5b6000806040838503121561146f57600080fd5b82518060020b811461148057600080fd5b60208401519092506001600160801b038116811461135957600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156114ee5781600019048211156114d4576114d461149d565b808516156114e157918102915b93841c93908002906114b8565b509250929050565b60008261150557506001611593565b8161151257506000611593565b816001811461152857600281146115325761154e565b6001915050611593565b60ff8411156115435761154361149d565b50506001821b611593565b5060208310610133831016604e8410600b8410161715611571575081810a611593565b61157b83836114b3565b806000190482111561158f5761158f61149d565b0290505b92915050565b600061132460ff8416836114f6565b6000602082840312156115ba57600080fd5b5051919050565b80820281158282048414176115935761159361149d565b6000826115f557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220ac3e5f84b236f378f34745c89c2d95d3fcbe8ca0ccbbd5e29654ba99e830d65b64736f6c63430008160033