60806040526009600a62000014919062000a20565b650125d93be98062000027919062000a71565b6005556009600a6200003a919062000a20565b6503d37ec7b5006200004d919062000a71565b6006556009600a62000060919062000a20565b6507a6fd8f6a0062000073919062000a71565b600755600060085560006009556000600a556000600b556000600c60006101000a81548160ff0219169083151502179055506000600d556000600f60146101000a81548160ff0219169083151502179055506000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055503480156200010857600080fd5b5060006200011b6200087e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350603846036200021d577310ed43c718714eb63d5aa57b78b54704e256024e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000397565b60014614806200022d5750600546145b156200028e57737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000396565b61a4b14603620002f357731b02da8cb0d097eb8d57a175b88c7d8b47997506600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000395565b60614603620003575773d99d1c33f9fc3444f8101754abc46c52416550d1600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000394565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038b9062000b1d565b60405180910390fd5b5b5b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042b919062000ba9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004db919062000ba9565b6040518363ffffffff1660e01b8152600401620004fa92919062000bec565b6020604051808303816000875af11580156200051a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000540919062000ba9565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f10aab119c18ae88b75008ddf36d5dbdd779fd16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620005e5919062000a20565b66017e9d8602b400620005f9919062000a71565b600160006200060d6200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620006616200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007ee6200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200084d919062000a20565b66017e9d8602b40062000861919062000a71565b60405162000870919062000c2a565b60405180910390a362000c47565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200091457808604811115620008ec57620008eb62000886565b5b6001851615620008fc5780820291505b80810290506200090c85620008b5565b9450620008cc565b94509492505050565b6000826200092f576001905062000a02565b816200093f576000905062000a02565b8160018114620009585760028114620009635762000999565b600191505062000a02565b60ff84111562000978576200097762000886565b5b8360020a91508482111562000992576200099162000886565b5b5062000a02565b5060208310610133831016604e8410600b8410161715620009d35782820a905083811115620009cd57620009cc62000886565b5b62000a02565b620009e28484846001620008c2565b92509050818404811115620009fc57620009fb62000886565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a2d8262000a09565b915062000a3a8362000a13565b925062000a697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200091d565b905092915050565b600062000a7e8262000a09565b915062000a8b8362000a09565b925082820262000a9b8162000a09565b9150828204841483151762000ab55762000ab462000886565b5b5092915050565b600082825260208201905092915050565b7f57726f6e6720436861696e204964000000000000000000000000000000000000600082015250565b600062000b05600e8362000abc565b915062000b128262000acd565b602082019050919050565b6000602082019050818103600083015262000b388162000af6565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b718262000b44565b9050919050565b62000b838162000b64565b811462000b8f57600080fd5b50565b60008151905062000ba38162000b78565b92915050565b60006020828403121562000bc25762000bc162000b3f565b5b600062000bd28482850162000b92565b91505092915050565b62000be68162000b64565b82525050565b600060408201905062000c03600083018562000bdb565b62000c12602083018462000bdb565b9392505050565b62000c248162000a09565b82525050565b600060208201905062000c41600083018462000c19565b92915050565b6141ab8062000c576000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063a9059cbb1161008a578063f2fde38b11610064578063f2fde38b14610577578063f87dc2c6146105a0578063fe48b4c6146105cb578063ff511828146105f4576101a7565b8063a9059cbb146104e6578063ce831ed514610523578063dd62ed3e1461053a576101a7565b80638da5cb5b116100c65780638da5cb5b1461045057806395d89b411461047b578063a1d79776146104a6578063a333b4ab146104bd576101a7565b8063715018a6146103e357806385141a77146103fa5780638c0b5e2214610425576101a7565b8063313ce5671161015957806351cd7cc31161013357806351cd7cc31461033d5780635d098b38146103545780636dff2eeb1461037d57806370a08231146103a6576101a7565b8063313ce567146102d2578063437823ec146102fd5780634415fb6114610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632598cdb2146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c161061d565b6040516101ce9190612c55565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612d10565b61063d565b60405161020b9190612d6b565b60405180910390f35b34801561022057600080fd5b5061022961065b565b6040516102369190612de5565b60405180910390f35b34801561024b57600080fd5b50610254610681565b6040516102619190612e0f565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612e2a565b6106a8565b60405161029e9190612d6b565b60405180910390f35b3480156102b357600080fd5b506102bc6107a8565b6040516102c99190612e9e565b60405180910390f35b3480156102de57600080fd5b506102e76107ce565b6040516102f49190612ed5565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612ef0565b6107d7565b005b34801561033257600080fd5b5061033b61099d565b005b34801561034957600080fd5b50610352610a5a565b005b34801561036057600080fd5b5061037b60048036038101906103769190612f49565b610ba3565b005b34801561038957600080fd5b506103a4600480360381019061039f9190612d10565b610df4565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190612ef0565b6110c8565b6040516103da9190612e0f565b60405180910390f35b3480156103ef57600080fd5b506103f8611111565b005b34801561040657600080fd5b5061040f611264565b60405161041c9190612f85565b60405180910390f35b34801561043157600080fd5b5061043a61126a565b6040516104479190612e0f565b60405180910390f35b34801561045c57600080fd5b50610465611270565b6040516104729190612f85565b60405180910390f35b34801561048757600080fd5b50610490611299565b60405161049d9190612c55565b60405180910390f35b3480156104b257600080fd5b506104bb6112d6565b005b3480156104c957600080fd5b506104e460048036038101906104df9190612fcc565b611388565b005b3480156104f257600080fd5b5061050d60048036038101906105089190612d10565b611469565b60405161051a9190612d6b565b60405180910390f35b34801561052f57600080fd5b50610538611487565b005b34801561054657600080fd5b50610561600480360381019061055c9190612ff9565b6115aa565b60405161056e9190612e0f565b60405180910390f35b34801561058357600080fd5b5061059e60048036038101906105999190612ef0565b611631565b005b3480156105ac57600080fd5b506105b5611741565b6040516105c29190612d6b565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190613039565b611754565b005b34801561060057600080fd5b5061061b60048036038101906106169190612ef0565b6118eb565b005b60606040518060600160405280602c815260200161414a602c9139905090565b600061065161064a611ab1565b8484611ab9565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a61069191906131db565b66017e9d8602b4006106a39190613226565b905090565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f4611ab1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b906132da565b60405180910390fd5b61077f858585611c82565b61079c8561078b611ab1565b858461079791906132fa565b611ab9565b60019150509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009905090565b6107df611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108639061337a565b60405180910390fd5b60011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f6906133e6565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b6109a5611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061337a565b60405180910390fd5b6009600a610a4091906131db565b66017e9d8602b400610a529190613226565b600781905550565b610a62611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae69061337a565b60405180910390fd5b600f60149054906101000a900460ff1615610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613452565b60405180910390fd5b6001600f60156101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b610bab611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f9061337a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d906134be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613550565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6867e944970fe7ede3b1a987e85026d725a5faa1e05cc2f89ec2a7a27701c3f560405160405180910390a250565b610dfc611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e809061337a565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906135e2565b60405180910390fd5b60008111610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613674565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f739190612f85565b602060405180830381865afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb491906136a9565b811115610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90613722565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611053929190613763565b6020604051808303816000875af1158015611072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109691906137a1565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611119611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d9061337a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61dead81565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f434f4d50524f4d49534544000000000000000000000000000000000000000000815250905090565b6112de611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113629061337a565b60405180910390fd5b6001600c60006101000a81548160ff021916908315150217905550565b611390611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061337a565b60405180910390fd5b80600f60156101000a81548160ff0219169083151502179055508015157f3a9ce3b0c56e8f872f7647ac57385353c6cc3474ddf4b76a77ffbb8ad1fb0ccb60405160405180910390a250565b600061147d611476611ab1565b8484611c82565b6001905092915050565b6000479050600081116114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613674565b60405180910390fd5b47811115611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990613722565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561157a573d6000803e3d6000fd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611639611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd9061337a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613840565b60405180910390fd5b61173e8161277d565b50565b600f60149054906101000a900460ff1681565b61175c611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e09061337a565b60405180910390fd5b6503d37ec7b500811115611832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611829906138d2565b60405180910390fd5b650125d93be98082111561187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613964565b60405180910390fd5b6009600a61188991906131db565b826118949190613226565b6005819055506009600a6118a891906131db565b816118b39190613226565b60068190555080827fa9e7efa397abfe063ede969429ba0525e3083d62f05f959f8496552d2e812b5f60405160405180910390a35050565b6118f3611ab1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119779061337a565b60405180910390fd5b60001515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a906139d0565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f90613a62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90613af4565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c759190612e0f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890613b86565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790613c18565b60405180910390fd5b60008111611da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9a90613caa565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e495750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ed757600f60149054906101000a900460ff16611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9490613d16565b60405180910390fd5b6064600c60009054906101000a900460ff16611ebb57600854611ebf565b600a545b83611eca9190613226565b611ed49190613d65565b90505b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f785750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f8257600090505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561202d5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120835750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561213e576007548211156120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490613de2565b60405180910390fd5b600754826120da856110c8565b6120e49190613e02565b1115612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613e82565b60405180910390fd5b600d600081548092919061213890613ea2565b91905055505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121e65750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561223c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561228757600754821115612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d90613de2565b60405180910390fd5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561231057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156123665750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123bc5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123fb576064600c60009054906101000a900460ff166123df576009546123e3565b600b545b836123ee9190613226565b6123f89190613d65565b90505b6000612406306110c8565b9050600f60169054906101000a900460ff161580156124735750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561248b5750600f60159054906101000a900460ff165b8015612498575060055481115b80156124a657506001600d54115b156124e2576124c86124c3846124be84600654612841565b612841565b61285a565b600047905060008111156124e0576124df47612b16565b5b505b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252d91906132fa565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818361257c91906132fa565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125c69190613e02565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848661266491906132fa565b6040516126719190612e0f565b60405180910390a360008211156127765781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126cd9190613e02565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161276d9190612e0f565b60405180910390a35b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183116128505782612852565b815b905092915050565b6001600f60166101000a81548160ff021916908315150217905550600081116128b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128af90613f36565b60405180910390fd5b6000600267ffffffffffffffff8111156128d5576128d4613f56565b5b6040519080825280602002602001820160405280156129035781602001602082028036833780820191505090505b509050308160008151811061291b5761291a613f85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e69190613fc9565b816001815181106129fa576129f9613f85565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a6130600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab9565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ac59594939291906140ef565b600060405180830381600087803b158015612adf57600080fd5b505af1158015612af3573d6000803e3d6000fd5b50505050506000600f60166101000a81548160ff02191690831515021790555050565b60008111612b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5090613f36565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612bc1573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bff578082015181840152602081019050612be4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c2782612bc5565b612c318185612bd0565b9350612c41818560208601612be1565b612c4a81612c0b565b840191505092915050565b60006020820190508181036000830152612c6f8184612c1c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca782612c7c565b9050919050565b612cb781612c9c565b8114612cc257600080fd5b50565b600081359050612cd481612cae565b92915050565b6000819050919050565b612ced81612cda565b8114612cf857600080fd5b50565b600081359050612d0a81612ce4565b92915050565b60008060408385031215612d2757612d26612c77565b5b6000612d3585828601612cc5565b9250506020612d4685828601612cfb565b9150509250929050565b60008115159050919050565b612d6581612d50565b82525050565b6000602082019050612d806000830184612d5c565b92915050565b6000819050919050565b6000612dab612da6612da184612c7c565b612d86565b612c7c565b9050919050565b6000612dbd82612d90565b9050919050565b6000612dcf82612db2565b9050919050565b612ddf81612dc4565b82525050565b6000602082019050612dfa6000830184612dd6565b92915050565b612e0981612cda565b82525050565b6000602082019050612e246000830184612e00565b92915050565b600080600060608486031215612e4357612e42612c77565b5b6000612e5186828701612cc5565b9350506020612e6286828701612cc5565b9250506040612e7386828701612cfb565b9150509250925092565b6000612e8882612c7c565b9050919050565b612e9881612e7d565b82525050565b6000602082019050612eb36000830184612e8f565b92915050565b600060ff82169050919050565b612ecf81612eb9565b82525050565b6000602082019050612eea6000830184612ec6565b92915050565b600060208284031215612f0657612f05612c77565b5b6000612f1484828501612cc5565b91505092915050565b612f2681612e7d565b8114612f3157600080fd5b50565b600081359050612f4381612f1d565b92915050565b600060208284031215612f5f57612f5e612c77565b5b6000612f6d84828501612f34565b91505092915050565b612f7f81612c9c565b82525050565b6000602082019050612f9a6000830184612f76565b92915050565b612fa981612d50565b8114612fb457600080fd5b50565b600081359050612fc681612fa0565b92915050565b600060208284031215612fe257612fe1612c77565b5b6000612ff084828501612fb7565b91505092915050565b600080604083850312156130105761300f612c77565b5b600061301e85828601612cc5565b925050602061302f85828601612cc5565b9150509250929050565b600080604083850312156130505761304f612c77565b5b600061305e85828601612cfb565b925050602061306f85828601612cfb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156130ff578086048111156130db576130da613079565b5b60018516156130ea5780820291505b80810290506130f8856130a8565b94506130bf565b94509492505050565b60008261311857600190506131d4565b8161312657600090506131d4565b816001811461313c576002811461314657613175565b60019150506131d4565b60ff84111561315857613157613079565b5b8360020a91508482111561316f5761316e613079565b5b506131d4565b5060208310610133831016604e8410600b84101617156131aa5782820a9050838111156131a5576131a4613079565b5b6131d4565b6131b784848460016130b5565b925090508184048111156131ce576131cd613079565b5b81810290505b9392505050565b60006131e682612cda565b91506131f183612eb9565b925061321e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613108565b905092915050565b600061323182612cda565b915061323c83612cda565b925082820261324a81612cda565b9150828204841483151761326157613260613079565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006132c4602883612bd0565b91506132cf82613268565b604082019050919050565b600060208201905081810360008301526132f3816132b7565b9050919050565b600061330582612cda565b915061331083612cda565b925082820390508181111561332857613327613079565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613364602083612bd0565b915061336f8261332e565b602082019050919050565b6000602082019050818103600083015261339381613357565b9050919050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b60006133d0601b83612bd0565b91506133db8261339a565b602082019050919050565b600060208201905081810360008301526133ff816133c3565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061343c601783612bd0565b915061344782613406565b602082019050919050565b6000602082019050818103600083015261346b8161342f565b9050919050565b7f43412077696c6c206e6f74206265207468652046656520526563696576657200600082015250565b60006134a8601f83612bd0565b91506134b382613472565b602082019050919050565b600060208201905081810360008301526134d78161349b565b9050919050565b7f3020616464792077696c6c206e6f74206265207468652066656520526563696560008201527f7665720000000000000000000000000000000000000000000000000000000000602082015250565b600061353a602383612bd0565b9150613545826134de565b604082019050919050565b600060208201905081810360008301526135698161352d565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b60006135cc603683612bd0565b91506135d782613570565b604082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b600061365e602283612bd0565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b6000815190506136a381612ce4565b92915050565b6000602082840312156136bf576136be612c77565b5b60006136cd84828501613694565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b600061370c601383612bd0565b9150613717826136d6565b602082019050919050565b6000602082019050818103600083015261373b816136ff565b9050919050565b600061374d82612db2565b9050919050565b61375d81613742565b82525050565b60006040820190506137786000830185613754565b6137856020830184612e00565b9392505050565b60008151905061379b81612fa0565b92915050565b6000602082840312156137b7576137b6612c77565b5b60006137c58482850161378c565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061382a602683612bd0565b9150613835826137ce565b604082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f616d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f203125206f662074686520737570706c790000000000000000000000602082015250565b60006138bc603583612bd0565b91506138c782613860565b604082019050919050565b600060208201905081810360008301526138eb816138af565b9050919050565b7f616d6f756e74206d757374206265206c657373207468616e206f72206571756160008201527f6c20746f20302e3325206f662074686520737570706c79000000000000000000602082015250565b600061394e603783612bd0565b9150613959826138f2565b604082019050919050565b6000602082019050818103600083015261397d81613941565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c756465640000000000600082015250565b60006139ba601b83612bd0565b91506139c582613984565b602082019050919050565b600060208201905081810360008301526139e9816139ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a4c602483612bd0565b9150613a57826139f0565b604082019050919050565b60006020820190508181036000830152613a7b81613a3f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ade602283612bd0565b9150613ae982613a82565b604082019050919050565b60006020820190508181036000830152613b0d81613ad1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b70602583612bd0565b9150613b7b82613b14565b604082019050919050565b60006020820190508181036000830152613b9f81613b63565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c02602383612bd0565b9150613c0d82613ba6565b604082019050919050565b60006020820190508181036000830152613c3181613bf5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c94602983612bd0565b9150613c9f82613c38565b604082019050919050565b60006020820190508181036000830152613cc381613c87565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613d00601383612bd0565b9150613d0b82613cca565b602082019050919050565b60006020820190508181036000830152613d2f81613cf3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d7082612cda565b9150613d7b83612cda565b925082613d8b57613d8a613d36565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000613dcc601983612bd0565b9150613dd782613d96565b602082019050919050565b60006020820190508181036000830152613dfb81613dbf565b9050919050565b6000613e0d82612cda565b9150613e1883612cda565b9250828201905080821115613e3057613e2f613079565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613e6c601a83612bd0565b9150613e7782613e36565b602082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b6000613ead82612cda565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613edf57613ede613079565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e2030000000600082015250565b6000613f20601d83612bd0565b9150613f2b82613eea565b602082019050919050565b60006020820190508181036000830152613f4f81613f13565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fc381612cae565b92915050565b600060208284031215613fdf57613fde612c77565b5b6000613fed84828501613fb4565b91505092915050565b6000819050919050565b600061401b61401661401184613ff6565b612d86565b612cda565b9050919050565b61402b81614000565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61406681612c9c565b82525050565b6000614078838361405d565b60208301905092915050565b6000602082019050919050565b600061409c82614031565b6140a6818561403c565b93506140b18361404d565b8060005b838110156140e25781516140c9888261406c565b97506140d483614084565b9250506001810190506140b5565b5085935050505092915050565b600060a0820190506141046000830188612e00565b6141116020830187614022565b81810360408301526141238186614091565b90506141326060830185612f76565b61413f6080830184612e00565b969550505050505056fe4761727947656e736c6572436f6d707269736564596f75417265596f75476f696e67546f4861766554686174a2646970667358221220cb9bfd3c2bb0a75d291063be6a2b8fae571e74dbb3105931c7bba4c677b066d764736f6c63430008130033