0x608060405234801561000f575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a33360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f978061014a5f395ff3fe60806040526004361061004d575f3560e01c80630752881a14610056578063715018a6146100725780637884e7c6146100885780638da5cb5b146100b0578063a0ef91df146100da57610054565b3661005457005b005b610070600480360381019061006b9190610a33565b6100f0565b005b34801561007d575f80fd5b50610086610652565b005b348015610093575f80fd5b506100ae60048036038101906100a99190610a71565b610799565b005b3480156100bb575f80fd5b506100c4610869565b6040516100d19190610aab565b60405180910390f35b3480156100e5575f80fd5b506100ee610890565b005b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361015e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015590610b1e565b60405180910390fd5b61016782610984565b6101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d90610b86565b60405180910390fd5b5f600267ffffffffffffffff8111156101c2576101c1610ba4565b5b6040519080825280602002602001820160405280156101f05781602001602082028036833780820191505090505b50905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561025d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102819190610be5565b815f8151811061029457610293610c10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505082816001815181106102e3576102e2610c10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b815260040161037a929190610d03565b5f60405180830381865afa158015610394573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103bc9190610e68565b9050805f815181106103d1576103d0610c10565b5b6020026020010151341015610547575f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f34856040518363ffffffff1660e01b815260040161043d929190610d03565b5f60405180830381865afa158015610457573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061047f9190610e68565b905060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4134835f815181106104d2576104d1610c10565b5b60200260200101518633426040518663ffffffff1660e01b81526004016104fc9493929190610eaf565b5f6040518083038185885af1158015610517573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906105409190610e68565b505061064c565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb3bdb41825f8151811061059757610596610c10565b5b6020026020010151858533426040518663ffffffff1660e01b81526004016105c29493929190610eaf565b5f6040518083038185885af11580156105dd573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906106069190610e68565b503373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561064a573d5f803e3d5ffd5b505b50505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690610f43565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081d90610f43565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490610f43565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610981573d5f803e3d5ffd5b50565b5f80823b90505f8111915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109cf826109a6565b9050919050565b6109df816109c5565b81146109e9575f80fd5b50565b5f813590506109fa816109d6565b92915050565b5f819050919050565b610a1281610a00565b8114610a1c575f80fd5b50565b5f81359050610a2d81610a09565b92915050565b5f8060408385031215610a4957610a4861099e565b5b5f610a56858286016109ec565b9250506020610a6785828601610a1f565b9150509250929050565b5f60208284031215610a8657610a8561099e565b5b5f610a93848285016109ec565b91505092915050565b610aa5816109c5565b82525050565b5f602082019050610abe5f830184610a9c565b92915050565b5f82825260208201905092915050565b7f4e6f7420612076616c69642061646472657373000000000000000000000000005f82015250565b5f610b08601383610ac4565b9150610b1382610ad4565b602082019050919050565b5f6020820190508181035f830152610b3581610afc565b9050919050565b7f4e6f74206120636f6e74726163740000000000000000000000000000000000005f82015250565b5f610b70600e83610ac4565b9150610b7b82610b3c565b602082019050919050565b5f6020820190508181035f830152610b9d81610b64565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050610bdf816109d6565b92915050565b5f60208284031215610bfa57610bf961099e565b5b5f610c0784828501610bd1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610c4681610a00565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610c7e816109c5565b82525050565b5f610c8f8383610c75565b60208301905092915050565b5f602082019050919050565b5f610cb182610c4c565b610cbb8185610c56565b9350610cc683610c66565b805f5b83811015610cf6578151610cdd8882610c84565b9750610ce883610c9b565b925050600181019050610cc9565b5085935050505092915050565b5f604082019050610d165f830185610c3d565b8181036020830152610d288184610ca7565b90509392505050565b5f80fd5b5f601f19601f8301169050919050565b610d4e82610d35565b810181811067ffffffffffffffff82111715610d6d57610d6c610ba4565b5b80604052505050565b5f610d7f610995565b9050610d8b8282610d45565b919050565b5f67ffffffffffffffff821115610daa57610da9610ba4565b5b602082029050602081019050919050565b5f80fd5b5f81519050610dcd81610a09565b92915050565b5f610de5610de084610d90565b610d76565b90508083825260208201905060208402830185811115610e0857610e07610dbb565b5b835b81811015610e315780610e1d8882610dbf565b845260208401935050602081019050610e0a565b5050509392505050565b5f82601f830112610e4f57610e4e610d31565b5b8151610e5f848260208601610dd3565b91505092915050565b5f60208284031215610e7d57610e7c61099e565b5b5f82015167ffffffffffffffff811115610e9a57610e996109a2565b5b610ea684828501610e3b565b91505092915050565b5f608082019050610ec25f830187610c3d565b8181036020830152610ed48186610ca7565b9050610ee36040830185610a9c565b610ef06060830184610c3d565b95945050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f2d602083610ac4565b9150610f3882610ef9565b602082019050919050565b5f6020820190508181035f830152610f5a81610f21565b905091905056fea264697066735822122012a6e764ce8decf1b11edf01dd00283ce30e168a1dd3d3e0ae61f321ba7a1f5264736f6c634300081a0033