0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061088e806100606000396000f3fe60806040526004361061007b5760003560e01c8063a6b206bf1161004e578063a6b206bf1461013e578063d57bde7914610167578063ecfc7ecc14610192578063fb4cd8e21461019c5761007b565b806362ea82db14610080578063677f8c14146100bd57806386433374146100e857806391f9015714610113575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190610581565b6101c7565b6040516100b491906105c7565b60405180910390f35b3480156100c957600080fd5b506100d26101df565b6040516100df91906105f1565b60405180910390f35b3480156100f457600080fd5b506100fd610203565b60405161010a9190610627565b60405180910390f35b34801561011f57600080fd5b50610128610216565b60405161013591906105f1565b60405180910390f35b34801561014a57600080fd5b506101656004803603810190610160919061066e565b61023c565b005b34801561017357600080fd5b5061017c61028d565b60405161018991906105c7565b60405180910390f35b61019a610293565b005b3480156101a857600080fd5b506101b1610518565b6040516101be91906105c7565b60405180910390f35b60046020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff167ffceb437c298f40d64702ac26411b2316e79f3c28ffa60edfc891ad4fc8ab82ca8260405161028291906105c7565b60405180910390a250565b60025481565b600360009054906101000a900460ff16156102e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102da906106f8565b60405180910390fd5b600034600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103309190610747565b90506002548111610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036d906107c7565b60405180910390fd5b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461047c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002549081150290604051600060405180830381858888f1935050505015801561047a573d6000803e3d6000fd5b505b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550600560008154809291906104d7906107e7565b91905055507fdd0b6c6a77960e2066c96171b4d7ac9e8b4c184011f38544afa36a5bb63ec59f338260405161050d92919061082f565b60405180910390a150565b60055481565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061054e82610523565b9050919050565b61055e81610543565b811461056957600080fd5b50565b60008135905061057b81610555565b92915050565b6000602082840312156105975761059661051e565b5b60006105a58482850161056c565b91505092915050565b6000819050919050565b6105c1816105ae565b82525050565b60006020820190506105dc60008301846105b8565b92915050565b6105eb81610543565b82525050565b600060208201905061060660008301846105e2565b92915050565b60008115159050919050565b6106218161060c565b82525050565b600060208201905061063c6000830184610618565b92915050565b61064b816105ae565b811461065657600080fd5b50565b60008135905061066881610642565b92915050565b6000602082840312156106845761068361051e565b5b600061069284828501610659565b91505092915050565b600082825260208201905092915050565b7f5468652061756374696f6e2068617320656e6465642e00000000000000000000600082015250565b60006106e260168361069b565b91506106ed826106ac565b602082019050919050565b60006020820190508181036000830152610711816106d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610752826105ae565b915061075d836105ae565b925082820190508082111561077557610774610718565b5b92915050565b7f42696420616d6f756e7420746f6f206c6f770000000000000000000000000000600082015250565b60006107b160128361069b565b91506107bc8261077b565b602082019050919050565b600060208201905081810360008301526107e0816107a4565b9050919050565b60006107f2826105ae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361082457610823610718565b5b600182019050919050565b600060408201905061084460008301856105e2565b61085160208301846105b8565b939250505056fea2646970667358221220199f5cf5c2dc6a6da071b079bbb35fe3cbd9741e0e47730d9fa135d9c8c98fd364736f6c63430008120033