60806040526040518060400160405280602081526020017f54484520576f726c6453746172486970486f7020496e752050726f746f636f6c815250600190816200004a919062000af6565b506040518060400160405280600481526020017f57534848000000000000000000000000000000000000000000000000000000008152506002908162000091919062000af6565b506009600a620000a2919062000d6d565b62989680620000b2919062000dbe565b60035560646002600354620000c8919062000dbe565b620000d4919062000e4e565b60045560006009556005600a55600954600a54620000f3919062000e86565b600b556064600c556064600d556001601160146101000a81548160ff0219169083151502179055506103e860016003546200012f919062000dbe565b6200013b919062000e4e565b6012556064600160035462000151919062000dbe565b6200015d919062000e4e565b6013553480156200016d57600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000f2b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000381573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a7919062000f2b565b306040518363ffffffff1660e01b8152600401620003c792919062000f6e565b6020604051808303816000875af1158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000f2b565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200086e919062000fac565b60405180910390a362000fc9565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008fe57607f821691505b602082108103620009145762000913620008b6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200097e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200093f565b6200098a86836200093f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009d7620009d1620009cb84620009a2565b620009ac565b620009a2565b9050919050565b6000819050919050565b620009f383620009b6565b62000a0b62000a0282620009de565b8484546200094c565b825550505050565b600090565b62000a2262000a13565b62000a2f818484620009e8565b505050565b5b8181101562000a575762000a4b60008262000a18565b60018101905062000a35565b5050565b601f82111562000aa65762000a70816200091a565b62000a7b846200092f565b8101602085101562000a8b578190505b62000aa362000a9a856200092f565b83018262000a34565b50505b505050565b600082821c905092915050565b600062000acb6000198460080262000aab565b1980831691505092915050565b600062000ae6838362000ab8565b9150826002028217905092915050565b62000b01826200087c565b67ffffffffffffffff81111562000b1d5762000b1c62000887565b5b62000b298254620008e5565b62000b3682828562000a5b565b600060209050601f83116001811462000b6e576000841562000b59578287015190505b62000b65858262000ad8565b86555062000bd5565b601f19841662000b7e866200091a565b60005b8281101562000ba85784890151825560018201915060208501945060208101905062000b81565b8683101562000bc8578489015162000bc4601f89168262000ab8565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c6b5780860481111562000c435762000c4262000bdd565b5b600185161562000c535780820291505b808102905062000c638562000c0c565b945062000c23565b94509492505050565b60008262000c86576001905062000d59565b8162000c96576000905062000d59565b816001811462000caf576002811462000cba5762000cf0565b600191505062000d59565b60ff84111562000ccf5762000cce62000bdd565b5b8360020a91508482111562000ce95762000ce862000bdd565b5b5062000d59565b5060208310610133831016604e8410600b841016171562000d2a5782820a90508381111562000d245762000d2362000bdd565b5b62000d59565b62000d39848484600162000c19565b9250905081840481111562000d535762000d5262000bdd565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d7a82620009a2565b915062000d878362000d60565b925062000db67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c74565b905092915050565b600062000dcb82620009a2565b915062000dd883620009a2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e145762000e1362000bdd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5b82620009a2565b915062000e6883620009a2565b92508262000e7b5762000e7a62000e1f565b5b828204905092915050565b600062000e9382620009a2565b915062000ea083620009a2565b925082820190508082111562000ebb5762000eba62000bdd565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ef38262000ec6565b9050919050565b62000f058162000ee6565b811462000f1157600080fd5b50565b60008151905062000f258162000efa565b92915050565b60006020828403121562000f445762000f4362000ec1565b5b600062000f548482850162000f14565b91505092915050565b62000f688162000ee6565b82525050565b600060408201905062000f85600083018562000f5d565b62000f94602083018462000f5d565b9392505050565b62000fa681620009a2565b82525050565b600060208201905062000fc3600083018462000f9b565b92915050565b61370f8062000fd96000396000f3fe6080604052600436106101f25760003560e01c806373a432bb1161010d578063ca33e64c116100a0578063e96fada21161006f578063e96fada2146106fa578063e9fad39614610725578063ec72d65f1461074e578063f2fde38b14610777578063f887ea40146107a0576101f9565b8063ca33e64c14610640578063cec10c111461066b578063d088935814610694578063dd62ed3e146106bd576101f9565b8063a4b45c00116100dc578063a4b45c0014610584578063a8aa1b31146105ad578063a9059cbb146105d8578063acef1a4414610615576101f9565b806373a432bb146104da57806378109e54146105035780638da5cb5b1461052e57806395d89b4114610559576101f9565b80632198cf6c11610185578063658d4b7f11610154578063658d4b7f146104325780636ddd17131461045b57806370a0823114610486578063715018a6146104c3576101f9565b80632198cf6c1461036457806323b872dd1461038d578063313ce567146103ca578063571ac8b0146103f5576101f9565b80631698755f116101c15780631698755f146102ba578063180b0d7e146102e357806318160ddd1461030e5780631df4ccfc14610339576101f9565b8063012aa912146101fe5780630445b6671461022757806306fdde0314610252578063095ea7b31461027d576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612a07565b6107cb565b005b34801561023357600080fd5b5061023c61087d565b6040516102499190612a43565b60405180910390f35b34801561025e57600080fd5b50610267610883565b6040516102749190612aee565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190612b6e565b610915565b6040516102b19190612bc9565b60405180910390f35b3480156102c657600080fd5b506102e160048036038101906102dc9190612b6e565b610a07565b005b3480156102ef57600080fd5b506102f8610bae565b6040516103059190612a43565b60405180910390f35b34801561031a57600080fd5b50610323610bb4565b6040516103309190612a43565b60405180910390f35b34801561034557600080fd5b5061034e610bbe565b60405161035b9190612a43565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190612c10565b610bc4565b005b34801561039957600080fd5b506103b460048036038101906103af9190612c50565b610cad565b6040516103c19190612bc9565b60405180910390f35b3480156103d657600080fd5b506103df610ead565b6040516103ec9190612cbf565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190612cda565b610eb6565b6040516104299190612bc9565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190612c10565b610ee9565b005b34801561046757600080fd5b50610470610fd2565b60405161047d9190612bc9565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612cda565b610fe5565b6040516104ba9190612a43565b60405180910390f35b3480156104cf57600080fd5b506104d861102e565b005b3480156104e657600080fd5b5061050160048036038101906104fc9190612cda565b61117a565b005b34801561050f57600080fd5b506105186112c6565b6040516105259190612a43565b60405180910390f35b34801561053a57600080fd5b506105436112cc565b6040516105509190612d16565b60405180910390f35b34801561056557600080fd5b5061056e6112f5565b60405161057b9190612aee565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612d31565b611387565b005b3480156105b957600080fd5b506105c261149b565b6040516105cf9190612d16565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612b6e565b6114c1565b60405161060c9190612bc9565b60405180910390f35b34801561062157600080fd5b5061062a6114d6565b6040516106379190612a43565b60405180910390f35b34801561064c57600080fd5b506106556114dc565b6040516106629190612d16565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612d71565b611502565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612dc4565b611615565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612d31565b6116d0565b6040516106f19190612a43565b60405180910390f35b34801561070657600080fd5b5061070f611757565b60405161071c9190612d16565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612a07565b61177d565b005b34801561075a57600080fd5b5061077560048036038101906107709190612a07565b611872565b005b34801561078357600080fd5b5061079e60048036038101906107999190612cda565b61190a565b005b3480156107ac57600080fd5b506107b5611ac4565b6040516107c29190612e76565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090612edd565b60405180910390fd5b6127108160035461086a9190612f2c565b6108749190612fb5565b60048190555050565b60125481565b60606001805461089290613015565b80601f01602080910402602001604051908101604052809291908181526020018280546108be90613015565b801561090b5780601f106108e05761010080835404028352916020019161090b565b820191906000526020600020905b8154815290600101906020018083116108ee57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f59190612a43565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8c90612edd565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ad09190612d16565b602060405180830381865afa158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b11919061305b565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360648585610b3e9190612f2c565b610b489190612fb5565b6040518363ffffffff1660e01b8152600401610b65929190613088565b6020604051808303816000875af1158015610b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba891906130c6565b50505050565b600c5481565b6000600354905090565b600b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612edd565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e9957610e18826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ea4848484611b4e565b90509392505050565b60006009905090565b6000610ee2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610915565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90612edd565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612edd565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461130490613015565b80601f016020809104026020016040519081016040528092919081815260200182805461133090613015565b801561137d5780601f106113525761010080835404028352916020019161137d565b820191906000526020600020905b81548152906001019060200180831161136057829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612edd565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114ce338484611b4e565b905092915050565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790612edd565b60405180910390fd5b8260098190555081600a819055506115b18284611f8590919063ffffffff16565b600b8190555080600c819055506003600c546115cd9190612fb5565b600b5410611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116079061313f565b60405180910390fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90612edd565b60405180910390fd5b82601160146101000a81548160ff0219169083151502179055508160128190555080601381905550505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612edd565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846118389190612f2c565b6118429190612fb5565b9081150290604051600060405180830381858888f1935050505015801561186d573d6000803e3d6000fd5b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790612edd565b60405180910390fd5b80600d8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f90612edd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe906131ab565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b299190612aee565b60405180910390fd5b5060008385611b4191906131cb565b9050809150509392505050565b600080611b5a84610fe5565b90506004548382611b6b91906131ff565b111580611bc15750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906132a5565b60405180910390fd5b611c08611fe3565b8015611c615750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611c6f57611c6e6120ba565b5b60006298968084611c809190612fb5565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d295750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611d3d578084611d3a91906131cb565b93505b611dc6846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aea9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e158787612635565b611e1f5784611e7b565b611e7a8786601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146126e3565b5b9050611ecf81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f6f9190612a43565b60405180910390a3600193505050509392505050565b6000808284611f9491906131ff565b905083811015611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd090613311565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156120505750601460009054906101000a900460ff16155b80156120685750601160149054906101000a900460ff165b80156120b55750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601460006101000a81548160ff0219169083151502179055506000601354600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561212a57601354905061216d565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006121ab600261219d600b5461218f6009548761285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b905060006121c2828461291f90919063ffffffff16565b90506000600267ffffffffffffffff8111156121e1576121e0613331565b5b60405190808252806020026020018201604052801561220f5781602001602082028036833780820191505090505b509050308160008151811061222757612226613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f291906133a4565b8160018151811061230657612305613360565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123a49594939291906134ca565b600060405180830381600087803b1580156123be57600080fd5b505af11580156123d2573d6000803e3d6000fd5b50505050600047905060006124076123f660026009546128d590919063ffffffff16565b600b5461291f90919063ffffffff16565b905060006124456002612437846124296009548861285b90919063ffffffff16565b6128d590919063ffffffff16565b6128d590919063ffffffff16565b9050600061245c828561291f90919063ffffffff16565b905060008111156124fe576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516124b390613555565b600060405180830381858888f193505050503d80600081146124f1576040519150601f19603f3d011682016040523d82523d6000602084013e6124f6565b606091505b505080915050505b600087111561261057601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016125909695949392919061356a565b60606040518083038185885af11580156125ae573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125d391906135cb565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161260792919061361e565b60405180910390a15b50505050505050506000601460006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126db5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080826126f25760646126f6565b600d545b905060006127416064600c5461270c9190612f2c565b61273384612725600b548a61285b90919063ffffffff16565b61285b90919063ffffffff16565b6128d590919063ffffffff16565b905061279581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128359190612a43565b60405180910390a3612850818661291f90919063ffffffff16565b925050509392505050565b600080830361286d57600090506128cf565b6000828461287b9190612f2c565b905082848261288a9190612fb5565b146128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c1906136b9565b60405180910390fd5b809150505b92915050565b600061291783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612969565b905092915050565b600061296183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aea565b905092915050565b600080831182906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612aee565b60405180910390fd5b50600083856129bf9190612fb5565b9050809150509392505050565b600080fd5b6000819050919050565b6129e4816129d1565b81146129ef57600080fd5b50565b600081359050612a01816129db565b92915050565b600060208284031215612a1d57612a1c6129cc565b5b6000612a2b848285016129f2565b91505092915050565b612a3d816129d1565b82525050565b6000602082019050612a586000830184612a34565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a98578082015181840152602081019050612a7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ac082612a5e565b612aca8185612a69565b9350612ada818560208601612a7a565b612ae381612aa4565b840191505092915050565b60006020820190508181036000830152612b088184612ab5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3b82612b10565b9050919050565b612b4b81612b30565b8114612b5657600080fd5b50565b600081359050612b6881612b42565b92915050565b60008060408385031215612b8557612b846129cc565b5b6000612b9385828601612b59565b9250506020612ba4858286016129f2565b9150509250929050565b60008115159050919050565b612bc381612bae565b82525050565b6000602082019050612bde6000830184612bba565b92915050565b612bed81612bae565b8114612bf857600080fd5b50565b600081359050612c0a81612be4565b92915050565b60008060408385031215612c2757612c266129cc565b5b6000612c3585828601612b59565b9250506020612c4685828601612bfb565b9150509250929050565b600080600060608486031215612c6957612c686129cc565b5b6000612c7786828701612b59565b9350506020612c8886828701612b59565b9250506040612c99868287016129f2565b9150509250925092565b600060ff82169050919050565b612cb981612ca3565b82525050565b6000602082019050612cd46000830184612cb0565b92915050565b600060208284031215612cf057612cef6129cc565b5b6000612cfe84828501612b59565b91505092915050565b612d1081612b30565b82525050565b6000602082019050612d2b6000830184612d07565b92915050565b60008060408385031215612d4857612d476129cc565b5b6000612d5685828601612b59565b9250506020612d6785828601612b59565b9150509250929050565b600080600060608486031215612d8a57612d896129cc565b5b6000612d98868287016129f2565b9350506020612da9868287016129f2565b9250506040612dba868287016129f2565b9150509250925092565b600080600060608486031215612ddd57612ddc6129cc565b5b6000612deb86828701612bfb565b9350506020612dfc868287016129f2565b9250506040612e0d868287016129f2565b9150509250925092565b6000819050919050565b6000612e3c612e37612e3284612b10565b612e17565b612b10565b9050919050565b6000612e4e82612e21565b9050919050565b6000612e6082612e43565b9050919050565b612e7081612e55565b82525050565b6000602082019050612e8b6000830184612e67565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612ec7600683612a69565b9150612ed282612e91565b602082019050919050565b60006020820190508181036000830152612ef681612eba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f37826129d1565b9150612f42836129d1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f7b57612f7a612efd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc0826129d1565b9150612fcb836129d1565b925082612fdb57612fda612f86565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302d57607f821691505b6020821081036130405761303f612fe6565b5b50919050565b600081519050613055816129db565b92915050565b600060208284031215613071576130706129cc565b5b600061307f84828501613046565b91505092915050565b600060408201905061309d6000830185612d07565b6130aa6020830184612a34565b9392505050565b6000815190506130c081612be4565b92915050565b6000602082840312156130dc576130db6129cc565b5b60006130ea848285016130b1565b91505092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000613129601c83612a69565b9150613134826130f3565b602082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613195600883612a69565b91506131a08261315f565b602082019050919050565b600060208201905081810360008301526131c481613188565b9050919050565b60006131d6826129d1565b91506131e1836129d1565b92508282039050818111156131f9576131f8612efd565b5b92915050565b600061320a826129d1565b9150613215836129d1565b925082820190508082111561322d5761322c612efd565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061328f603e83612a69565b915061329a82613233565b604082019050919050565b600060208201905081810360008301526132be81613282565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132fb601b83612a69565b9150613306826132c5565b602082019050919050565b6000602082019050818103600083015261332a816132ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339e81612b42565b92915050565b6000602082840312156133ba576133b96129cc565b5b60006133c88482850161338f565b91505092915050565b6000819050919050565b60006133f66133f16133ec846133d1565b612e17565b6129d1565b9050919050565b613406816133db565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61344181612b30565b82525050565b60006134538383613438565b60208301905092915050565b6000602082019050919050565b60006134778261340c565b6134818185613417565b935061348c83613428565b8060005b838110156134bd5781516134a48882613447565b97506134af8361345f565b925050600181019050613490565b5085935050505092915050565b600060a0820190506134df6000830188612a34565b6134ec60208301876133fd565b81810360408301526134fe818661346c565b905061350d6060830185612d07565b61351a6080830184612a34565b9695505050505050565b600081905092915050565b50565b600061353f600083613524565b915061354a8261352f565b600082019050919050565b600061356082613532565b9150819050919050565b600060c08201905061357f6000830189612d07565b61358c6020830188612a34565b61359960408301876133fd565b6135a660608301866133fd565b6135b36080830185612d07565b6135c060a0830184612a34565b979650505050505050565b6000806000606084860312156135e4576135e36129cc565b5b60006135f286828701613046565b935050602061360386828701613046565b925050604061361486828701613046565b9150509250925092565b60006040820190506136336000830185612a34565b6136406020830184612a34565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a3602183612a69565b91506136ae82613647565b604082019050919050565b600060208201905081810360008301526136d281613696565b905091905056fea26469706673582212205cfca04e69dea2325aa4e3beeb5943226ac8b91028e5df9f5bc1823d6c2cd3cd64736f6c63430008100033