0x608060405234801561001057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426002819055506118bb806100686000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e979251161006657806378e97925146101355780638b712e05146101535780638da5cb5b14610171578063ce7460241461018f578063fc0c546a146101995761009e565b806301567739146100a3578063065dc4c1146100d5578063144fa6d7146100f15780631d8f78921461010d57806348c54b9d1461012b575b600080fd5b6100bd60048036038101906100b89190610e2c565b6101b7565b6040516100cc93929190610e81565b60405180910390f35b6100ef60048036038101906100ea9190611100565b610201565b005b61010b60048036038101906101069190610e2c565b6105c8565b005b6101156106de565b6040516101229190611178565b60405180910390f35b610133610701565b005b61013d610925565b60405161014a9190611178565b60405180910390f35b61015b61092b565b6040516101689190611178565b60405180910390f35b610179610a8a565b6040516101869190611193565b60405180910390f35b610197610ab0565b005b6101a1610cfb565b6040516101ae919061120d565b60405180910390f35b60036020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028890611285565b60405180910390fd5b80518251146102d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cc906112f1565b60405180910390fd5b6000825111610319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103109061135d565b60405180910390fd5b60005b82518110156105c357600073ffffffffffffffffffffffffffffffffffffffff168382815181106103505761034f61137d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036103ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a5906113f8565b60405180910390fd5b6103d18382815181106103c4576103c361137d565b5b6020026020010151610d1f565b15610411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040890611464565b60405180910390fd5b604051806060016040528084838151811061042f5761042e61137d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1681526020018383815181106104655761046461137d565b5b6020026020010151815260200160008152506003600085848151811061048e5761048d61137d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201559050508281815181106105415761054061137d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fe6b83177f11971ba30369bb38b914ffba97d5969a3c857b286fa8fdbb150b3ba8383815181106105935761059261137d565b5b60200260200101516040516105a89190611178565b60405180910390a280806105bb906114b3565b91505061031c565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f90611285565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fa07c91c183e42229e705a9795a1c06d76528b673788b849597364528c96eefb760405160405180910390a250565b600062278d00600254426106f291906114fb565b6106fc919061155e565b905090565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061074d33610d1f565b61078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906115db565b60405180910390fd5b600061079661092b565b9050600081116107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290611647565b60405180910390fd5b808260020160008282546107ef9190611667565b9250508190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161085192919061169b565b6020604051808303816000875af1158015610870573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089491906116fc565b6108d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ca90611775565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430826040516109199190611178565b60405180910390a25050565b60025481565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061097833610d1f565b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae906115db565b60405180910390fd5b600062278d00600254426109cb91906114fb565b6109d5919061155e565b905060048111156109e557600490505b60006103e860c884600101546109fb9190611795565b610a05919061155e565b905060006004828560010154610a1b91906114fb565b610a25919061155e565b905060008382610a359190611795565b83610a409190611667565b90508460010154811115610a5657846001015490505b80856002015410610a6f57600095505050505050610a87565b846002015481610a7f91906114fb565b955050505050505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790611285565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b9c9190611193565b602060405180830381865afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd91906117ec565b905060008111610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1990611865565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c7d92919061169b565b6020604051808303816000875af1158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc091906116fc565b507f32e95f921f72e9e736ccad1cc1c0ef6e3c3c08204eb74e9ee4ae8f98e195e3f081604051610cf09190611178565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff16600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610df982610dce565b9050919050565b610e0981610dee565b8114610e1457600080fd5b50565b600081359050610e2681610e00565b92915050565b600060208284031215610e4257610e41610dc4565b5b6000610e5084828501610e17565b91505092915050565b610e6281610dee565b82525050565b6000819050919050565b610e7b81610e68565b82525050565b6000606082019050610e966000830186610e59565b610ea36020830185610e72565b610eb06040830184610e72565b949350505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610f0682610ebd565b810181811067ffffffffffffffff82111715610f2557610f24610ece565b5b80604052505050565b6000610f38610dba565b9050610f448282610efd565b919050565b600067ffffffffffffffff821115610f6457610f63610ece565b5b602082029050602081019050919050565b600080fd5b6000610f8d610f8884610f49565b610f2e565b90508083825260208201905060208402830185811115610fb057610faf610f75565b5b835b81811015610fd95780610fc58882610e17565b845260208401935050602081019050610fb2565b5050509392505050565b600082601f830112610ff857610ff7610eb8565b5b8135611008848260208601610f7a565b91505092915050565b600067ffffffffffffffff82111561102c5761102b610ece565b5b602082029050602081019050919050565b61104681610e68565b811461105157600080fd5b50565b6000813590506110638161103d565b92915050565b600061107c61107784611011565b610f2e565b9050808382526020820190506020840283018581111561109f5761109e610f75565b5b835b818110156110c857806110b48882611054565b8452602084019350506020810190506110a1565b5050509392505050565b600082601f8301126110e7576110e6610eb8565b5b81356110f7848260208601611069565b91505092915050565b6000806040838503121561111757611116610dc4565b5b600083013567ffffffffffffffff81111561113557611134610dc9565b5b61114185828601610fe3565b925050602083013567ffffffffffffffff81111561116257611161610dc9565b5b61116e858286016110d2565b9150509250929050565b600060208201905061118d6000830184610e72565b92915050565b60006020820190506111a86000830184610e59565b92915050565b6000819050919050565b60006111d36111ce6111c984610dce565b6111ae565b610dce565b9050919050565b60006111e5826111b8565b9050919050565b60006111f7826111da565b9050919050565b611207816111ec565b82525050565b600060208201905061122260008301846111fe565b92915050565b600082825260208201905092915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b600061126f600983611228565b915061127a82611239565b602082019050919050565b6000602082019050818103600083015261129e81611262565b9050919050565b7f4c656e677468206d69736d617463680000000000000000000000000000000000600082015250565b60006112db600f83611228565b91506112e6826112a5565b602082019050919050565b6000602082019050818103600083015261130a816112ce565b9050919050565b7f4e6f2062656e6566696369617269657300000000000000000000000000000000600082015250565b6000611347601083611228565b915061135282611311565b602082019050919050565b600060208201905081810360008301526113768161133a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b60006113e2600f83611228565b91506113ed826113ac565b602082019050919050565b60006020820190508181036000830152611411816113d5565b9050919050565b7f42656e656669636961727920616c726561647920736574000000000000000000600082015250565b600061144e601783611228565b915061145982611418565b602082019050919050565b6000602082019050818103600083015261147d81611441565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114be82610e68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114f0576114ef611484565b5b600182019050919050565b600061150682610e68565b915061151183610e68565b925082820390508181111561152957611528611484565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061156982610e68565b915061157483610e68565b9250826115845761158361152f565b5b828204905092915050565b7f4e6f7420612062656e6566696369617279000000000000000000000000000000600082015250565b60006115c5601183611228565b91506115d08261158f565b602082019050919050565b600060208201905081810360008301526115f4816115b8565b9050919050565b7f4e6f20746f6b656e7320746f20636c61696d0000000000000000000000000000600082015250565b6000611631601283611228565b915061163c826115fb565b602082019050919050565b6000602082019050818103600083015261166081611624565b9050919050565b600061167282610e68565b915061167d83610e68565b925082820190508082111561169557611694611484565b5b92915050565b60006040820190506116b06000830185610e59565b6116bd6020830184610e72565b9392505050565b60008115159050919050565b6116d9816116c4565b81146116e457600080fd5b50565b6000815190506116f6816116d0565b92915050565b60006020828403121561171257611711610dc4565b5b6000611720848285016116e7565b91505092915050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b600061175f600f83611228565b915061176a82611729565b602082019050919050565b6000602082019050818103600083015261178e81611752565b9050919050565b60006117a082610e68565b91506117ab83610e68565b92508282026117b981610e68565b915082820484148315176117d0576117cf611484565b5b5092915050565b6000815190506117e68161103d565b92915050565b60006020828403121561180257611801610dc4565b5b6000611810848285016117d7565b91505092915050565b7f4e6f20746f6b656e7320746f207265636f766572000000000000000000000000600082015250565b600061184f601483611228565b915061185a82611819565b602082019050919050565b6000602082019050818103600083015261187e81611842565b905091905056fea26469706673582212200d6b32668a8d9a22fb867ab1c835cfa8a40110db337afe28548afd9b3a938cb164736f6c63430008110033