6060604052341561000f57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c8190555061c3506004819055506161a8600581905550635a830b80600681905550635a8af480600781905550635a8af480600881905550635a918c00600981905550635ae73d80600a81905550635abfb080600b819055506012600a0a6311e1a300026000819055506012600a0a6311e1a30002600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a0a6311e1a300026040518082815260200191505060405180910390a3611c64806101746000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063019703531461023f578063033df9cb1461026b57806306fdde0314610294578063095ea7b31461032257806318160ddd1461037c57806323b872dd146103a5578063313ce5671461041e57806332cb6b0c1461044757806342a6617d14610470578063443bdc43146104995780634acf071c146104bc578063545c5a02146104e857806354fd4d501461050b5780635b89a48a1461059957806362e8b948146105f65780636e0550e51461061f57806370a0823114610648578063775915ce14610695578063801aba56146106be5780638da5cb5b146106d3578063956cc8591461072857806395d89b41146107515780639bc742fe146107df578063a53d520514610802578063a9059cbb1461082b578063c204642c14610885578063ce9c39c9146108bc578063dd62ed3e146108e5578063e44bc43f14610951578063f2fde38b1461097a578063fafc56d9146109b3578063fb3ed5c7146109d6575b600080600654421180156101ac57506007544211155b156101e7576101be33346004546109ff565b6101d360045434610b1490919063ffffffff16565b91506101e23383600a54610b4f565b61023b565b600854421180156101fa57506009544211155b156102355761020c33346005546109ff565b61022160055434610b1490919063ffffffff16565b90506102303382600b54610b4f565b61023a565b600080fd5b5b5050005b341561024a57600080fd5b6102696004808035906020019091908035906020019091905050610bec565b005b341561027657600080fd5b61027e610c5a565b6040518082815260200191505060405180910390f35b341561029f57600080fd5b6102a7610c60565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e75780820151818401526020810190506102cc565b50505050905090810190601f1680156103145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032d57600080fd5b610362600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c99565b604051808215151515815260200191505060405180910390f35b341561038757600080fd5b61038f610d8b565b6040518082815260200191505060405180910390f35b34156103b057600080fd5b610404600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610d91565b604051808215151515815260200191505060405180910390f35b341561042957600080fd5b61043161119f565b6040518082815260200191505060405180910390f35b341561045257600080fd5b61045a6111a4565b6040518082815260200191505060405180910390f35b341561047b57600080fd5b6104836111b2565b6040518082815260200191505060405180910390f35b34156104a457600080fd5b6104ba60048080359060200190919050506111b8565b005b34156104c757600080fd5b6104e6600480803590602001909190803590602001909190505061121e565b005b34156104f357600080fd5b610509600480803590602001909190505061128c565b005b341561051657600080fd5b61051e6112f2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561055e578082015181840152602081019050610543565b50505050905090810190601f16801561058b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105a457600080fd5b6105d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061132b565b604051808381526020018281526020019250505060405180910390f35b341561060157600080fd5b61060961136b565b6040518082815260200191505060405180910390f35b341561062a57600080fd5b610632611371565b6040518082815260200191505060405180910390f35b341561065357600080fd5b61067f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611377565b6040518082815260200191505060405180910390f35b34156106a057600080fd5b6106a86113c0565b6040518082815260200191505060405180910390f35b34156106c957600080fd5b6106d16113c6565b005b34156106de57600080fd5b6106e661147b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073357600080fd5b61073b6114a1565b6040518082815260200191505060405180910390f35b341561075c57600080fd5b6107646114af565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107a4578082015181840152602081019050610789565b50505050905090810190601f1680156107d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107ea57600080fd5b61080060048080359060200190919050506114e8565b005b341561080d57600080fd5b61081561154e565b6040518082815260200191505060405180910390f35b341561083657600080fd5b61086b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611554565b604051808215151515815260200191505060405180910390f35b341561089057600080fd5b6108ba6004808035906020019082018035906020019190919290803590602001909190505061184d565b005b34156108c757600080fd5b6108cf611949565b6040518082815260200191505060405180910390f35b34156108f057600080fd5b61093b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061194f565b6040518082815260200191505060405180910390f35b341561095c57600080fd5b6109646119d6565b6040518082815260200191505060405180910390f35b341561098557600080fd5b6109b1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119dc565b005b34156109be57600080fd5b6109d46004808035906020019091905050611b34565b005b34156109e157600080fd5b6109e9611b9a565b6040518082815260200191505060405180910390f35b600082826012600a0a633b9aca0002610a35610a248385610b1490919063ffffffff16565b600054611ba090919063ffffffff16565b11151515610a3f57fe5b610a528486610b1490919063ffffffff16565b9250610a6983600054611ba090919063ffffffff16565b60008190555082600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b6000806000841415610b295760009150610b48565b8284029050828482811515610b3a57fe5b04141515610b4457fe5b8091505b5092915050565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050808054806001018281610ba59190611bd7565b916000526020600020906002020160006040805190810160405280868152602001878152509091909150600082015181600001556020820151816001015550505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c4857600080fd5b81600681905550806007819055505050565b60065481565b6040805190810160405280600381526020017f584d42000000000000000000000000000000000000000000000000000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515610dd457600080fd5b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209350600092505b8380549050821015610e8f578382815481101515610e3457fe5b906000526020600020906002020160000154421015610e8257610e7f8483815481101515610e5e57fe5b90600052602060002090600202016001015484611ba090919063ffffffff16565b92505b8180600101925050610e1a565b82610ee287600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbe90919063ffffffff16565b10151515610eef57600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610fc086600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbe90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105586600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba090919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110ab8682611bbe90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360019450505050509392505050565b601281565b6012600a0a633b9aca000281565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121457600080fd5b8060048190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127a57600080fd5b81600881905550806009819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112e857600080fd5b80600b8190555050565b6040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b600d6020528160005260406000208181548110151561134657fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b600a5481565b60075481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142257600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561147957600080fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6012600a0a6311e1a3000281565b6040805190810160405280600381526020017f584d42000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561154457600080fd5b80600a8190555050565b600b5481565b600080600080600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415151561159657600080fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600091505b82805490508110156116515782818154811015156115f657fe5b90600052602060002090600202016000015442101561164457611641838281548110151561162057fe5b90600052602060002090600202016001015483611ba090919063ffffffff16565b91505b80806001019150506115dc565b816116a486600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbe90919063ffffffff16565b101515156116b157600080fd5b61170385600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bbe90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061179885600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ba090919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ac57600080fd5b8484905091506118bb33611377565b6118ce8385610b1490919063ffffffff16565b111515156118d857fe5b600090505b818110156119425761191985858381811015156118f657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1684611554565b5061192f83600c54611ba090919063ffffffff16565b600c8190555080806001019150506118dd565b5050505050565b60085481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a3857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a7457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9057600080fd5b8060058190555050565b600c5481565b6000808284019050838110151515611bb457fe5b8091505092915050565b6000828211151515611bcc57fe5b818303905092915050565b815481835581811511611c0457600202816002028360005260206000209182019101611c039190611c09565b5b505050565b611c3591905b80821115611c3157600080820160009055600182016000905550600201611c0f565b5090565b905600a165627a7a72305820e7f487ecc6249a1fb40909bdca57b43cc66f81a80bd4f0f271bc6bbb441346920029