60806040526001600560146101000a81548160ff0219169083151502179055507360ae616a2155ee3d9a68541ba4544862310933d4600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f600b5573b399fbfe08b7698efea64b4c5c85a9217bc971ff600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000db57600080fd5b50336040518060400160405280600d81526020017f476972616666654f6e41766178000000000000000000000000000000000000008152506040518060400160405280600781526020017f474952414646450000000000000000000000000000000000000000000000000081525081600390816200015a91906200114d565b5080600490816200016c91906200114d565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001e45760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001db919062001279565b60405180910390fd5b620001f5816200022f60201b60201c565b5062000229336012600a6200020b919062001419565b64e8d4a510006200021d91906200146a565b620002f560201b60201c565b62001996565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200036a5760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040162000361919062001279565b60405180910390fd5b6200037e600083836200038260201b60201c565b5050565b600560149054906101000a900460ff16156200076957600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620004bb57620003ff6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004735750620004446200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620004b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ac9062001562565b60405180910390fd5b62000769565b6000620004cd6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490508315801562000609575082155b80156200061e57508115806200061d575080155b5b156200067d5760095462000638876200079860201b60201c565b11156200067c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006739062001620565b60405180910390fd5b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015620006db575084155b1562000750576064600b5487620006f391906200146a565b620006ff919062001671565b905060008111156200073f576200071c81620007e060201b60201c565b600047905060008111156200073d576200073c4762000a3c60201b60201c565b5b505b80866200074d9190620016a9565b95505b6200076388888862000aa960201b60201c565b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600267ffffffffffffffff8111156200080057620007ff62000ede565b5b6040519080825280602002602001820160405280156200082f5781602001602082028036833780820191505090505b50905030816000815181106200084a5762000849620016e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000918919062001749565b816001815181106200092f576200092e620016e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506200099e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000cd960201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b815260040162000a049594939291906200189d565b600060405180830381600087803b15801562000a1f57600080fd5b505af115801562000a34573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801562000aa5573d6000803e3d6000fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000aff57806002600082825462000af2919062001901565b9250508190555062000bd5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000b8e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000b85939291906200193c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c20578060026000828254039250508190555062000c6d565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ccc919062001979565b60405180910390a3505050565b62000cee838383600162000cf360201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000d685760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040162000d5f919062001279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000ddd5760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040162000dd4919062001279565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801562000ecd578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000ec4919062001979565b60405180910390a35b50505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f5557607f821691505b60208210810362000f6b5762000f6a62000f0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000fd57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f96565b62000fe1868362000f96565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200102e62001028620010228462000ff9565b62001003565b62000ff9565b9050919050565b6000819050919050565b6200104a836200100d565b62001062620010598262001035565b84845462000fa3565b825550505050565b600090565b620010796200106a565b620010868184846200103f565b505050565b5b81811015620010ae57620010a26000826200106f565b6001810190506200108c565b5050565b601f821115620010fd57620010c78162000f71565b620010d28462000f86565b81016020851015620010e2578190505b620010fa620010f18562000f86565b8301826200108b565b50505b505050565b600082821c905092915050565b6000620011226000198460080262001102565b1980831691505092915050565b60006200113d83836200110f565b9150826002028217905092915050565b620011588262000ed3565b67ffffffffffffffff81111562001174576200117362000ede565b5b62001180825462000f3c565b6200118d828285620010b2565b600060209050601f831160018114620011c55760008415620011b0578287015190505b620011bc85826200112f565b8655506200122c565b601f198416620011d58662000f71565b60005b82811015620011ff57848901518255600182019150602085019450602081019050620011d8565b868310156200121f57848901516200121b601f8916826200110f565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012618262001234565b9050919050565b620012738162001254565b82525050565b600060208201905062001290600083018462001268565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200132457808604811115620012fc57620012fb62001296565b5b60018516156200130c5780820291505b80810290506200131c85620012c5565b9450620012dc565b94509492505050565b6000826200133f576001905062001412565b816200134f576000905062001412565b81600181146200136857600281146200137357620013a9565b600191505062001412565b60ff84111562001388576200138762001296565b5b8360020a915084821115620013a257620013a162001296565b5b5062001412565b5060208310610133831016604e8410600b8410161715620013e35782820a905083811115620013dd57620013dc62001296565b5b62001412565b620013f28484846001620012d2565b925090508184048111156200140c576200140b62001296565b5b81810290505b9392505050565b6000620014268262000ff9565b9150620014338362000ff9565b9250620014627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200132d565b905092915050565b6000620014778262000ff9565b9150620014848362000ff9565b9250828202620014948162000ff9565b91508282048414831517620014ae57620014ad62001296565b5b5092915050565b600082825260208201905092915050565b7f54726164696e672069732063757272656e746c792064697361626c65642e205060008201527f6c65617365207761697420666f7220746865206f6666696369616c206c61756e60208201527f63682e0000000000000000000000000000000000000000000000000000000000604082015250565b60006200154a604383620014b5565b91506200155782620014c6565b606082019050919050565b600060208201905081810360008301526200157d816200153b565b9050919050565b7f57616c6c65742062616c616e6365206578636565647320736e6970657220707260008201527f6f74656374696f6e206c696d6974732e20506c6561736520726564756365207460208201527f686520746f6b656e20616d6f756e742e00000000000000000000000000000000604082015250565b600062001608605083620014b5565b9150620016158262001584565b606082019050919050565b600060208201905081810360008301526200163b81620015f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200167e8262000ff9565b91506200168b8362000ff9565b9250826200169e576200169d62001642565b5b828204905092915050565b6000620016b68262000ff9565b9150620016c38362000ff9565b9250828203905081811115620016de57620016dd62001296565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b620017238162001254565b81146200172f57600080fd5b50565b600081519050620017438162001718565b92915050565b60006020828403121562001762576200176162001713565b5b6000620017728482850162001732565b91505092915050565b620017868162000ff9565b82525050565b6000819050919050565b6000620017b7620017b1620017ab846200178c565b62001003565b62000ff9565b9050919050565b620017c98162001796565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620018068162001254565b82525050565b60006200181a8383620017fb565b60208301905092915050565b6000602082019050919050565b60006200184082620017cf565b6200184c8185620017da565b93506200185983620017eb565b8060005b83811015620018905781516200187488826200180c565b9750620018818362001826565b9250506001810190506200185d565b5085935050505092915050565b600060a082019050620018b460008301886200177b565b620018c36020830187620017be565b8181036040830152620018d7818662001833565b9050620018e8606083018562001268565b620018f760808301846200177b565b9695505050505050565b60006200190e8262000ff9565b91506200191b8362000ff9565b925082820190508082111562001936576200193562001296565b5b92915050565b600060608201905062001953600083018662001268565b6200196260208301856200177b565b6200197160408301846200177b565b949350505050565b60006020820190506200199060008301846200177b565b92915050565b6120e180620019a66000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806369fe0e2d116100c3578063ccfdd2f81161007c578063ccfdd2f814610391578063dd62ed3e146103ad578063e14f08d5146103dd578063e7f444b3146103e7578063f0f4426014610405578063f2fde38b1461042157610158565b806369fe0e2d146102cf57806370a08231146102eb578063715018a61461031b5780638da5cb5b1461032557806395d89b4114610343578063a9059cbb1461036157610158565b80632c60e32b116101155780632c60e32b14610233578063313ce5671461024f57806340a4f8ea1461026d57806351bc3c851461028b5780635c91208c14610295578063665a11ca146102b157610158565b8063018770201461015d57806306fdde0314610179578063095ea7b3146101975780630f5a98a0146101c757806318160ddd146101e557806323b872dd14610203575b600080fd5b6101776004803603810190610172919061176a565b61043d565b005b610181610489565b60405161018e9190611827565b60405180910390f35b6101b160048036038101906101ac919061187f565b61051b565b6040516101be91906118da565b60405180910390f35b6101cf61053e565b6040516101dc9190611904565b60405180910390f35b6101ed610548565b6040516101fa9190611904565b60405180910390f35b61021d6004803603810190610218919061191f565b610552565b60405161022a91906118da565b60405180910390f35b61024d6004803603810190610248919061199e565b610581565b005b6102576105a6565b60405161026491906119e7565b60405180910390f35b6102756105af565b60405161028291906118da565b60405180910390f35b6102936105c2565b005b6102af60048036038101906102aa9190611a3e565b61065f565b005b6102b9610697565b6040516102c69190611a7a565b60405180910390f35b6102e960048036038101906102e49190611a95565b6106bd565b005b6103056004803603810190610300919061176a565b610713565b6040516103129190611904565b60405180910390f35b61032361075b565b005b61032d61076f565b60405161033a9190611a7a565b60405180910390f35b61034b610799565b6040516103589190611827565b60405180910390f35b61037b6004803603810190610376919061187f565b61082b565b60405161038891906118da565b60405180910390f35b6103ab60048036038101906103a69190611a95565b61084e565b005b6103c760048036038101906103c29190611ac2565b610860565b6040516103d49190611904565b60405180910390f35b6103e56108e7565b005b6103ef6108f9565b6040516103fc9190611904565b60405180910390f35b61041f600480360381019061041a919061176a565b6108ff565b005b61043b6004803603810190610436919061176a565b61094b565b005b6104456109d1565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461049890611b31565b80601f01602080910402602001604051908101604052809291908181526020018280546104c490611b31565b80156105115780601f106104e657610100808354040283529160200191610511565b820191906000526020600020905b8154815290600101906020018083116104f457829003601f168201915b5050505050905090565b600080610526610a58565b9050610533818585610a60565b600191505092915050565b6000600954905090565b6000600254905090565b60008061055d610a58565b905061056a858285610a72565b610575858585610b06565b60019150509392505050565b6105896109d1565b80600560146101000a81548160ff02191690831515021790555050565b60006012905090565b600560149054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610603610a58565b73ffffffffffffffffffffffffffffffffffffffff161461062357600080fd5b600061062e30610713565b905060008111156106435761064281610bfa565b5b6000479050600081111561065b5761065a81610e3d565b5b5050565b6106676109d1565b620186a08163ffffffff1661067a610548565b6106849190611b91565b61068e9190611c02565b60098190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106c56109d1565b600f811115610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090611c7f565b60405180910390fd5b80600b8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107636109d1565b61076d6000610ea9565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546107a890611b31565b80601f01602080910402602001604051908101604052809291908181526020018280546107d490611b31565b80156108215780601f106107f657610100808354040283529160200191610821565b820191906000526020600020905b81548152906001019060200180831161080457829003601f168201915b5050505050905090565b600080610836610a58565b9050610843818585610b06565b600191505092915050565b6108566109d1565b80600a8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6108ef6109d1565b6108f761075b565b565b600b5481565b6109076109d1565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109536109d1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109c55760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109bc9190611a7a565b60405180910390fd5b6109ce81610ea9565b50565b6109d9610a58565b73ffffffffffffffffffffffffffffffffffffffff166109f761076f565b73ffffffffffffffffffffffffffffffffffffffff1614610a5657610a1a610a58565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a4d9190611a7a565b60405180910390fd5b565b600033905090565b610a6d8383836001610f6f565b505050565b6000610a7e8484610860565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b005781811015610af0578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610ae793929190611c9f565b60405180910390fd5b610aff84848484036000610f6f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b785760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b6f9190611a7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bea5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610be19190611a7a565b60405180910390fd5b610bf5838383611146565b505050565b6000600267ffffffffffffffff811115610c1757610c16611cd6565b5b604051908082528060200260200182016040528015610c455781602001602082028036833780820191505090505b5090503081600081518110610c5d57610c5c611d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190611d49565b81600181518110610d3c57610d3b611d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610da330600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610a60565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762b15628360008430426040518663ffffffff1660e01b8152600401610e07959493929190611e79565b600060405180830381600087803b158015610e2157600080fd5b505af1158015610e35573d6000803e3d6000fd5b505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ea5573d6000803e3d6000fd5b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fe15760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610fd89190611a7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110535760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161104a9190611a7a565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611140578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111379190611904565b60405180910390a35b50505050565b600560149054906101000a900460ff16156114dd57600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611268576111b961076f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061122457506111f561076f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90611f6b565b60405180910390fd5b6114dd565b600061127261076f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16149050831580156113ad575082155b80156113c057508115806113bf575080155b5b15611413576009546113d187610713565b1115611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612023565b60405180910390fd5b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611470575084155b156114cc576064600b54876114859190611b91565b61148f9190611c02565b905060008111156114bd576114a381610bfa565b600047905060008111156114bb576114ba47610e3d565b5b505b80866114c99190612043565b95505b6114d78888886114e2565b50505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115345780600260008282546115289190612077565b92505081905550611607565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016115b793929190611c9f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611650578060026000828254039250508190555061169d565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116fa9190611904565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117378261170c565b9050919050565b6117478161172c565b811461175257600080fd5b50565b6000813590506117648161173e565b92915050565b6000602082840312156117805761177f611707565b5b600061178e84828501611755565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117d15780820151818401526020810190506117b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006117f982611797565b61180381856117a2565b93506118138185602086016117b3565b61181c816117dd565b840191505092915050565b6000602082019050818103600083015261184181846117ee565b905092915050565b6000819050919050565b61185c81611849565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b6000806040838503121561189657611895611707565b5b60006118a485828601611755565b92505060206118b58582860161186a565b9150509250929050565b60008115159050919050565b6118d4816118bf565b82525050565b60006020820190506118ef60008301846118cb565b92915050565b6118fe81611849565b82525050565b600060208201905061191960008301846118f5565b92915050565b60008060006060848603121561193857611937611707565b5b600061194686828701611755565b935050602061195786828701611755565b92505060406119688682870161186a565b9150509250925092565b61197b816118bf565b811461198657600080fd5b50565b60008135905061199881611972565b92915050565b6000602082840312156119b4576119b3611707565b5b60006119c284828501611989565b91505092915050565b600060ff82169050919050565b6119e1816119cb565b82525050565b60006020820190506119fc60008301846119d8565b92915050565b600063ffffffff82169050919050565b611a1b81611a02565b8114611a2657600080fd5b50565b600081359050611a3881611a12565b92915050565b600060208284031215611a5457611a53611707565b5b6000611a6284828501611a29565b91505092915050565b611a748161172c565b82525050565b6000602082019050611a8f6000830184611a6b565b92915050565b600060208284031215611aab57611aaa611707565b5b6000611ab98482850161186a565b91505092915050565b60008060408385031215611ad957611ad8611707565b5b6000611ae785828601611755565b9250506020611af885828601611755565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b4957607f821691505b602082108103611b5c57611b5b611b02565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b9c82611849565b9150611ba783611849565b9250828202611bb581611849565b91508282048414831517611bcc57611bcb611b62565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611c0d82611849565b9150611c1883611849565b925082611c2857611c27611bd3565b5b828204905092915050565b7f466565732063616e6e6f74206578636565642031352500000000000000000000600082015250565b6000611c696016836117a2565b9150611c7482611c33565b602082019050919050565b60006020820190508181036000830152611c9881611c5c565b9050919050565b6000606082019050611cb46000830186611a6b565b611cc160208301856118f5565b611cce60408301846118f5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050611d438161173e565b92915050565b600060208284031215611d5f57611d5e611707565b5b6000611d6d84828501611d34565b91505092915050565b6000819050919050565b6000819050919050565b6000611da5611da0611d9b84611d76565b611d80565b611849565b9050919050565b611db581611d8a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611df08161172c565b82525050565b6000611e028383611de7565b60208301905092915050565b6000602082019050919050565b6000611e2682611dbb565b611e308185611dc6565b9350611e3b83611dd7565b8060005b83811015611e6c578151611e538882611df6565b9750611e5e83611e0e565b925050600181019050611e3f565b5085935050505092915050565b600060a082019050611e8e60008301886118f5565b611e9b6020830187611dac565b8181036040830152611ead8186611e1b565b9050611ebc6060830185611a6b565b611ec960808301846118f5565b9695505050505050565b7f54726164696e672069732063757272656e746c792064697361626c65642e205060008201527f6c65617365207761697420666f7220746865206f6666696369616c206c61756e60208201527f63682e0000000000000000000000000000000000000000000000000000000000604082015250565b6000611f556043836117a2565b9150611f6082611ed3565b606082019050919050565b60006020820190508181036000830152611f8481611f48565b9050919050565b7f57616c6c65742062616c616e6365206578636565647320736e6970657220707260008201527f6f74656374696f6e206c696d6974732e20506c6561736520726564756365207460208201527f686520746f6b656e20616d6f756e742e00000000000000000000000000000000604082015250565b600061200d6050836117a2565b915061201882611f8b565b606082019050919050565b6000602082019050818103600083015261203c81612000565b9050919050565b600061204e82611849565b915061205983611849565b925082820390508181111561207157612070611b62565b5b92915050565b600061208282611849565b915061208d83611849565b92508282019050808211156120a5576120a4611b62565b5b9291505056fea26469706673582212209d1cbf5b61d79b2ee0ef7636da5254c306bebab533c4e44ef974c0d515aba7dd64736f6c63430008160033