0x608060405234801561001057600080fd5b506000600360006101000a81548160ff0219169083151502179055506000600481905550610af9806100436000396000f3fe60806040526004361061004a5760003560e01c806348db5f891461004f5780636cbc2ded1461007a578063c085ecc814610091578063d24257c0146100bc578063e5ed1d59146100e7575b600080fd5b34801561005b57600080fd5b50610064610103565b60405161007191906105d3565b60405180910390f35b34801561008657600080fd5b5061008f610127565b005b34801561009d57600080fd5b506100a6610297565b6040516100b39190610609565b60405180910390f35b3480156100c857600080fd5b506100d16102aa565b6040516100de919061063d565b60405180910390f35b61010160048036038101906100fc9190610689565b6102b0565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ac90610713565b60405180910390fd5b600360009054906101000a900460ff1615610205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fc9061077f565b60405180910390fd5b6001600360006101000a81548160ff021916908315150217905550600060045411156102955760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6004549081150290604051600060405180830381858888f19350505050158015610293573d6000803e3d6000fd5b505b565b600360009054906101000a900460ff1681565b60015481565b600034116102f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ea90610811565b60405180910390fd5b600360009054906101000a900460ff1615610343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a9061077f565b60405180910390fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550346001819055506064424360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516020016103c19392919061089a565b6040516020818303038152906040528051906020012060001c6103e49190610906565b60028190555060025481036104ff57600060026001546104049190610966565b9050806004600082825461041891906109a8565b9250508190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610485573d6000803e3d6000fd5b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fefd5dfbf172aea755f0d90c770a022a349f80fe8cada286746b57a79b16ed823600184846040516104f1939291906109dc565b60405180910390a25061058f565b600154600460008282546105139190610a13565b9250508190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fefd5dfbf172aea755f0d90c770a022a349f80fe8cada286746b57a79b16ed823600083600060405161058693929190610a8c565b60405180910390a25b50565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105bd82610592565b9050919050565b6105cd816105b2565b82525050565b60006020820190506105e860008301846105c4565b92915050565b60008115159050919050565b610603816105ee565b82525050565b600060208201905061061e60008301846105fa565b92915050565b6000819050919050565b61063781610624565b82525050565b6000602082019050610652600083018461062e565b92915050565b600080fd5b61066681610624565b811461067157600080fd5b50565b6000813590506106838161065d565b92915050565b60006020828403121561069f5761069e610658565b5b60006106ad84828501610674565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792074686520706c617965722063616e20656e64207468652067616d65600082015250565b60006106fd6020836106b6565b9150610708826106c7565b602082019050919050565b6000602082019050818103600083015261072c816106f0565b9050919050565b7f5468652067616d652068617320616c726561647920656e646564000000000000600082015250565b6000610769601a836106b6565b915061077482610733565b602082019050919050565b600060208201905081810360008301526107988161075c565b9050919050565b7f42657420616d6f756e74206d7573742062652067726561746572207468616e2060008201527f3000000000000000000000000000000000000000000000000000000000000000602082015250565b60006107fb6021836106b6565b91506108068261079f565b604082019050919050565b6000602082019050818103600083015261082a816107ee565b9050919050565b6000819050919050565b61084c61084782610624565b610831565b82525050565b60008160601b9050919050565b600061086a82610852565b9050919050565b600061087c8261085f565b9050919050565b61089461088f826105b2565b610871565b82525050565b60006108a6828661083b565b6020820191506108b6828561083b565b6020820191506108c68284610883565b601482019150819050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061091182610624565b915061091c83610624565b92508261092c5761092b6108d7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061097182610624565b915061097c83610624565b925082820261098a81610624565b915082820484148315176109a1576109a0610937565b5b5092915050565b60006109b382610624565b91506109be83610624565b92508282039050818111156109d6576109d5610937565b5b92915050565b60006060820190506109f160008301866105fa565b6109fe602083018561062e565b610a0b604083018461062e565b949350505050565b6000610a1e82610624565b9150610a2983610624565b9250828201905080821115610a4157610a40610937565b5b92915050565b6000819050919050565b6000819050919050565b6000610a76610a71610a6c84610a47565b610a51565b610624565b9050919050565b610a8681610a5b565b82525050565b6000606082019050610aa160008301866105fa565b610aae602083018561062e565b610abb6040830184610a7d565b94935050505056fea2646970667358221220ff1f31e5bcc648796ec5835d2b43c5fa3d44400ba1b0f0872b2e0f7ce7c7bd9964736f6c63430008120033