60806040526040518060400160405280601d81526020017f44656d6f63726174696320506c7572616c69736d2050726f746f636f6c000000815250600190816200004a919062000a94565b506040518060400160405280600481526020017f24445050000000000000000000000000000000000000000000000000000000008152506002908162000091919062000a94565b506009600a620000a2919062000d0b565b6305f5e100620000b3919062000d5c565b600355606480600354620000c8919062000d5c565b620000d4919062000dec565b6004556000600a556003600b55600a54600b54620000f3919062000e24565b600c556064600d55610ce4600e556001601160146101000a81548160ff021916908315150217905550612710600160035462000130919062000d5c565b6200013c919062000dec565b6012553480156200014c57600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d7919062000ec9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000ec9565b306040518363ffffffff1660e01b8152600401620003a692919062000f0c565b6020604051808303816000875af1158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec919062000ec9565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200080c919062000f4a565b60405180910390a362000f67565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200089c57607f821691505b602082108103620008b257620008b162000854565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200091c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008dd565b620009288683620008dd565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009756200096f620009698462000940565b6200094a565b62000940565b9050919050565b6000819050919050565b620009918362000954565b620009a9620009a0826200097c565b848454620008ea565b825550505050565b600090565b620009c0620009b1565b620009cd81848462000986565b505050565b5b81811015620009f557620009e9600082620009b6565b600181019050620009d3565b5050565b601f82111562000a445762000a0e81620008b8565b62000a1984620008cd565b8101602085101562000a29578190505b62000a4162000a3885620008cd565b830182620009d2565b50505b505050565b600082821c905092915050565b600062000a696000198460080262000a49565b1980831691505092915050565b600062000a84838362000a56565b9150826002028217905092915050565b62000a9f826200081a565b67ffffffffffffffff81111562000abb5762000aba62000825565b5b62000ac7825462000883565b62000ad4828285620009f9565b600060209050601f83116001811462000b0c576000841562000af7578287015190505b62000b03858262000a76565b86555062000b73565b601f19841662000b1c86620008b8565b60005b8281101562000b465784890151825560018201915060208501945060208101905062000b1f565b8683101562000b66578489015162000b62601f89168262000a56565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c095780860481111562000be15762000be062000b7b565b5b600185161562000bf15780820291505b808102905062000c018562000baa565b945062000bc1565b94509492505050565b60008262000c24576001905062000cf7565b8162000c34576000905062000cf7565b816001811462000c4d576002811462000c585762000c8e565b600191505062000cf7565b60ff84111562000c6d5762000c6c62000b7b565b5b8360020a91508482111562000c875762000c8662000b7b565b5b5062000cf7565b5060208310610133831016604e8410600b841016171562000cc85782820a90508381111562000cc25762000cc162000b7b565b5b62000cf7565b62000cd7848484600162000bb7565b9250905081840481111562000cf15762000cf062000b7b565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d188262000940565b915062000d258362000cfe565b925062000d547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c12565b905092915050565b600062000d698262000940565b915062000d768362000940565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000db25762000db162000b7b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000df98262000940565b915062000e068362000940565b92508262000e195762000e1862000dbd565b5b828204905092915050565b600062000e318262000940565b915062000e3e8362000940565b925082820190508082111562000e595762000e5862000b7b565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e918262000e64565b9050919050565b62000ea38162000e84565b811462000eaf57600080fd5b50565b60008151905062000ec38162000e98565b92915050565b60006020828403121562000ee25762000ee162000e5f565b5b600062000ef28482850162000eb2565b91505092915050565b62000f068162000e84565b82525050565b600060408201905062000f23600083018562000efb565b62000f32602083018462000efb565b9392505050565b62000f448162000940565b82525050565b600060208201905062000f61600083018462000f39565b92915050565b613bd28062000f776000396000f3fe60806040526004361061021e5760003560e01c806372ae048711610123578063bf0a4b85116100ab578063e01bb6881161006f578063e01bb6881461081a578063e96fada214610843578063ec72d65f1461086e578063f2fde38b14610897578063f887ea40146108c057610225565b8063bf0a4b8514610725578063c867d60b1461074e578063cec10c111461078b578063dd62ed3e146107b4578063df20fd49146107f157610225565b8063954fe43e116100f2578063954fe43e1461063e57806395d89b411461066757806398118cb414610692578063a8aa1b31146106bd578063a9059cbb146106e857610225565b806372ae04871461058257806373a432bb146105bf57806378109e54146105e85780638da5cb5b1461061357610225565b806323b872dd116101a6578063658d4b7f11610175578063658d4b7f146104af5780636b67c4df146104d85780636ddd17131461050357806370a082311461052e578063715018a61461056b57610225565b806323b872dd146103cd578063313ce5671461040a5780633f4218e014610435578063571ac8b01461047257610225565b806316279055116101ed57806316279055146102e6578063180b0d7e1461032357806318160ddd1461034e5780631df4ccfc146103795780632198cf6c146103a457610225565b8063012aa9121461022a5780630445b6671461025357806306fdde031461027e578063095ea7b3146102a957610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190612d24565b6108eb565b005b34801561025f57600080fd5b5061026861099d565b6040516102759190612d60565b60405180910390f35b34801561028a57600080fd5b506102936109a3565b6040516102a09190612e0b565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612e8b565b610a35565b6040516102dd9190612ee6565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612f01565b610b27565b60405161031a9190612ee6565b60405180910390f35b34801561032f57600080fd5b50610338610b3a565b6040516103459190612d60565b60405180910390f35b34801561035a57600080fd5b50610363610b40565b6040516103709190612d60565b60405180910390f35b34801561038557600080fd5b5061038e610b4a565b60405161039b9190612d60565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190612f5a565b610b50565b005b3480156103d957600080fd5b506103f460048036038101906103ef9190612f9a565b610c39565b6040516104019190612ee6565b60405180910390f35b34801561041657600080fd5b5061041f610e39565b60405161042c9190613009565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190612f01565b610e42565b6040516104699190612ee6565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612f01565b610e62565b6040516104a69190612ee6565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190612f5a565b610e95565b005b3480156104e457600080fd5b506104ed610f80565b6040516104fa9190612d60565b60405180910390f35b34801561050f57600080fd5b50610518610f86565b6040516105259190612ee6565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612f01565b610f99565b6040516105629190612d60565b60405180910390f35b34801561057757600080fd5b50610580610fe2565b005b34801561058e57600080fd5b506105a960048036038101906105a49190612f01565b61112e565b6040516105b69190612ee6565b60405180910390f35b3480156105cb57600080fd5b506105e660048036038101906105e19190612f01565b61114e565b005b3480156105f457600080fd5b506105fd61129a565b60405161060a9190612d60565b60405180910390f35b34801561061f57600080fd5b506106286112a0565b6040516106359190613033565b60405180910390f35b34801561064a57600080fd5b50610665600480360381019061066091906130b3565b6112c9565b005b34801561067357600080fd5b5061067c6113fa565b6040516106899190612e0b565b60405180910390f35b34801561069e57600080fd5b506106a761148c565b6040516106b49190612d60565b60405180910390f35b3480156106c957600080fd5b506106d2611492565b6040516106df9190613033565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a9190612e8b565b6114b8565b60405161071c9190612ee6565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612f01565b6114cd565b005b34801561075a57600080fd5b5061077560048036038101906107709190612f01565b6116e6565b6040516107829190612ee6565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad9190613113565b611706565b005b3480156107c057600080fd5b506107db60048036038101906107d69190613166565b611819565b6040516107e89190612d60565b60405180910390f35b3480156107fd57600080fd5b50610818600480360381019061081391906131a6565b6118a0565b005b34801561082657600080fd5b50610841600480360381019061083c9190612f01565b611953565b005b34801561084f57600080fd5b50610858611a25565b6040516108659190613033565b60405180910390f35b34801561087a57600080fd5b5061089560048036038101906108909190612d24565b611a4b565b005b3480156108a357600080fd5b506108be60048036038101906108b99190612f01565b611ae3565b005b3480156108cc57600080fd5b506108d5611c9d565b6040516108e29190613245565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610970906132ac565b60405180910390fd5b6127108160035461098a91906132fb565b6109949190613384565b60048190555050565b60125481565b6060600180546109b2906133e4565b80601f01602080910402602001604051908101604052809291908181526020018280546109de906133e4565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b159190612d60565b60405180910390a36001905092915050565b600080823b905060008111915050919050565b600d5481565b6000600354905090565b600c5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd5906132ac565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e2557610da4826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc39092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e30848484611d27565b90509392505050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6000610e8e827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a35565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90613461565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b601160149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611067906132ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906132ac565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e906132ac565b60405180910390fd5b60005b838390508110156113f457816009600086868581811061137d5761137c613481565b5b90506020020160208101906113929190612f01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806113ed906134b0565b905061135a565b50505050565b606060028054611409906133e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611435906133e4565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b5050505050905090565b600a5481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114c5338484611d27565b905092915050565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155090613544565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611636816005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b6005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116da9190612d60565b60405180910390a35050565b60086020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b906132ac565b60405180910390fd5b82600a8190555081600b819055506117b5828461212190919063ffffffff16565b600c8190555080600d819055506003600d546117d19190613384565b600c5410611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b906135b0565b60405180910390fd5b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906132ac565b60405180910390fd5b81601160146101000a81548160ff021916908315150217905550806012819055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d8906132ac565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906132ac565b60405180910390fd5b80600e8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906132ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd79061361c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d029190612e0b565b60405180910390fd5b5060008385611d1a919061363c565b9050809150509392505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580611dcb5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e01906136bc565b60405180910390fd5b6000611e1584610f99565b90506004548382611e2691906136dc565b111580611e7c5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290613782565b60405180910390fd5b611ec361217f565b8015611f1c5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611f2a57611f29612256565b5b611fb3836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cc39092919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000612002868661277d565b61200c5783612018565b61201786868661282b565b5b905061206c81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161210c9190612d60565b60405180910390a36001925050509392505050565b600080828461213091906136dc565b905083811015612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c906137ee565b60405180910390fd5b8091505092915050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156121ec5750601360009054906101000a900460ff16155b80156122045750601160149054906101000a900460ff165b80156122515750601254600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006122f360026122e5600c546122d7600a5487612b7390919063ffffffff16565b612bed90919063ffffffff16565b612bed90919063ffffffff16565b9050600061230a8284612c3790919063ffffffff16565b90506000600267ffffffffffffffff8111156123295761232861380e565b5b6040519080825280602002602001820160405280156123575781602001602082028036833780820191505090505b509050308160008151811061236f5761236e613481565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243a9190613852565b8160018151811061244e5761244d613481565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124ec959493929190613978565b600060405180830381600087803b15801561250657600080fd5b505af115801561251a573d6000803e3d6000fd5b505050506000479050600061254f61253e6002600a54612bed90919063ffffffff16565b600c54612c3790919063ffffffff16565b9050600061258d600261257f84612571600a5488612b7390919063ffffffff16565b612bed90919063ffffffff16565b612bed90919063ffffffff16565b905060006125a48285612c3790919063ffffffff16565b90506000811115612646576000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516125fb90613a03565b600060405180830381858888f193505050503d8060008114612639576040519150601f19603f3d011682016040523d82523d6000602084013e61263e565b606091505b505080915050505b600087111561275857601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126d896959493929190613a18565b60606040518083038185885af11580156126f6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061271b9190613a8e565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506828860405161274f929190613ae1565b60405180910390a15b50505050505050506000601360006101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128235750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461288a57606461288e565b600e545b905060006128d96064600d546128a491906132fb565b6128cb846128bd600c5489612b7390919063ffffffff16565b612b7390919063ffffffff16565b612bed90919063ffffffff16565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561293d575061293c86610b27565b5b1561299b576001600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156129fd57506129fc85610b27565b5b15612a5b576001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b612aad81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461212190919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b4d9190612d60565b60405180910390a3612b688185612c3790919063ffffffff16565b925050509392505050565b6000808303612b855760009050612be7565b60008284612b9391906132fb565b9050828482612ba29190613384565b14612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990613b7c565b60405180910390fd5b809150505b92915050565b6000612c2f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c81565b905092915050565b6000612c7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc3565b905092915050565b60008083118290612cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbf9190612e0b565b60405180910390fd5b5060008385612cd79190613384565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b612d0181612cee565b8114612d0c57600080fd5b50565b600081359050612d1e81612cf8565b92915050565b600060208284031215612d3a57612d39612ce4565b5b6000612d4884828501612d0f565b91505092915050565b612d5a81612cee565b82525050565b6000602082019050612d756000830184612d51565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db5578082015181840152602081019050612d9a565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ddd82612d7b565b612de78185612d86565b9350612df7818560208601612d97565b612e0081612dc1565b840191505092915050565b60006020820190508181036000830152612e258184612dd2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5882612e2d565b9050919050565b612e6881612e4d565b8114612e7357600080fd5b50565b600081359050612e8581612e5f565b92915050565b60008060408385031215612ea257612ea1612ce4565b5b6000612eb085828601612e76565b9250506020612ec185828601612d0f565b9150509250929050565b60008115159050919050565b612ee081612ecb565b82525050565b6000602082019050612efb6000830184612ed7565b92915050565b600060208284031215612f1757612f16612ce4565b5b6000612f2584828501612e76565b91505092915050565b612f3781612ecb565b8114612f4257600080fd5b50565b600081359050612f5481612f2e565b92915050565b60008060408385031215612f7157612f70612ce4565b5b6000612f7f85828601612e76565b9250506020612f9085828601612f45565b9150509250929050565b600080600060608486031215612fb357612fb2612ce4565b5b6000612fc186828701612e76565b9350506020612fd286828701612e76565b9250506040612fe386828701612d0f565b9150509250925092565b600060ff82169050919050565b61300381612fed565b82525050565b600060208201905061301e6000830184612ffa565b92915050565b61302d81612e4d565b82525050565b60006020820190506130486000830184613024565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130735761307261304e565b5b8235905067ffffffffffffffff8111156130905761308f613053565b5b6020830191508360208202830111156130ac576130ab613058565b5b9250929050565b6000806000604084860312156130cc576130cb612ce4565b5b600084013567ffffffffffffffff8111156130ea576130e9612ce9565b5b6130f68682870161305d565b9350935050602061310986828701612f45565b9150509250925092565b60008060006060848603121561312c5761312b612ce4565b5b600061313a86828701612d0f565b935050602061314b86828701612d0f565b925050604061315c86828701612d0f565b9150509250925092565b6000806040838503121561317d5761317c612ce4565b5b600061318b85828601612e76565b925050602061319c85828601612e76565b9150509250929050565b600080604083850312156131bd576131bc612ce4565b5b60006131cb85828601612f45565b92505060206131dc85828601612d0f565b9150509250929050565b6000819050919050565b600061320b61320661320184612e2d565b6131e6565b612e2d565b9050919050565b600061321d826131f0565b9050919050565b600061322f82613212565b9050919050565b61323f81613224565b82525050565b600060208201905061325a6000830184613236565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613296600683612d86565b91506132a182613260565b602082019050919050565b600060208201905081810360008301526132c581613289565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330682612cee565b915061331183612cee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561334a576133496132cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061338f82612cee565b915061339a83612cee565b9250826133aa576133a9613355565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133fc57607f821691505b60208210810361340f5761340e6133b5565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b600061344b600783612d86565b915061345682613415565b602082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006134bb82612cee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134ed576134ec6132cc565b5b600182019050919050565b7f69736e6f7443686f73656e536f6e000000000000000000000000000000000000600082015250565b600061352e600e83612d86565b9150613539826134f8565b602082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b600061359a601c83612d86565b91506135a582613564565b602082019050919050565b600060208201905081810360008301526135c98161358d565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000613606600883612d86565b9150613611826135d0565b602082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b600061364782612cee565b915061365283612cee565b925082820390508181111561366a576136696132cc565b5b92915050565b7f697343686f73656e536f6e000000000000000000000000000000000000000000600082015250565b60006136a6600b83612d86565b91506136b182613670565b602082019050919050565b600060208201905081810360008301526136d581613699565b9050919050565b60006136e782612cee565b91506136f283612cee565b925082820190508082111561370a576137096132cc565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b600061376c603e83612d86565b915061377782613710565b604082019050919050565b6000602082019050818103600083015261379b8161375f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137d8601b83612d86565b91506137e3826137a2565b602082019050919050565b60006020820190508181036000830152613807816137cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061384c81612e5f565b92915050565b60006020828403121561386857613867612ce4565b5b60006138768482850161383d565b91505092915050565b6000819050919050565b60006138a461389f61389a8461387f565b6131e6565b612cee565b9050919050565b6138b481613889565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138ef81612e4d565b82525050565b600061390183836138e6565b60208301905092915050565b6000602082019050919050565b6000613925826138ba565b61392f81856138c5565b935061393a836138d6565b8060005b8381101561396b57815161395288826138f5565b975061395d8361390d565b92505060018101905061393e565b5085935050505092915050565b600060a08201905061398d6000830188612d51565b61399a60208301876138ab565b81810360408301526139ac818661391a565b90506139bb6060830185613024565b6139c86080830184612d51565b9695505050505050565b600081905092915050565b50565b60006139ed6000836139d2565b91506139f8826139dd565b600082019050919050565b6000613a0e826139e0565b9150819050919050565b600060c082019050613a2d6000830189613024565b613a3a6020830188612d51565b613a4760408301876138ab565b613a5460608301866138ab565b613a616080830185613024565b613a6e60a0830184612d51565b979650505050505050565b600081519050613a8881612cf8565b92915050565b600080600060608486031215613aa757613aa6612ce4565b5b6000613ab586828701613a79565b9350506020613ac686828701613a79565b9250506040613ad786828701613a79565b9150509250925092565b6000604082019050613af66000830185612d51565b613b036020830184612d51565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b66602183612d86565b9150613b7182613b0a565b604082019050919050565b60006020820190508181036000830152613b9581613b59565b905091905056fea26469706673582212209b7cb8af5746ae56068810deeea9300b6a7836b939a9d049b64a641961deabba64736f6c63430008100033