60806040526000600760166101000a81548160ff02191690831515021790555069152d02c7e14af68000006008556a084595161401484a000000600955692a5a058fc295ed000000600a55739e5033b223e54708d481f82b1bf8f6e1180b3bbe600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e793649575294d9c16329c757dca546570d19131600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060028152602001600281526020016001815250600d600082015181600001556020820151816001015560408201518160020155505060405180606001604052806002815260200160028152602001600181525060106000820151816000015560208201518160010155604082015181600201555050600560135560056014553480156200018b57600080fd5b506040518060400160405280600e81526020017f545249434b204f522054524541540000000000000000000000000000000000008152506040518060400160405280600381526020017f424f4f0000000000000000000000000000000000000000000000000000000000815250816003908162000209919062000ae7565b5080600490816200021b919062000ae7565b5050506200023e620002326200062d60201b60201c565b6200063560201b60201c565b6200027d3362000253620006fb60201b60201c565b600a62000261919062000d5e565b6298968062000271919062000daf565b6200070460201b60201c565b6001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000e7a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f0919062000e7a565b6040518363ffffffff1660e01b81526004016200040f92919062000ebd565b6020604051808303816000875af11580156200042f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000455919062000e7a565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000ffc565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000776576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076d9062000f71565b60405180910390fd5b6200078a600083836200086860201b60201c565b80600260008282546200079e919062000f93565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007f5919062000f93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200085c919062000fdf565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008ef57607f821691505b602082108103620009055762000904620008a7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200096f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000930565b6200097b868362000930565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009c8620009c2620009bc8462000993565b6200099d565b62000993565b9050919050565b6000819050919050565b620009e483620009a7565b620009fc620009f382620009cf565b8484546200093d565b825550505050565b600090565b62000a1362000a04565b62000a20818484620009d9565b505050565b5b8181101562000a485762000a3c60008262000a09565b60018101905062000a26565b5050565b601f82111562000a975762000a61816200090b565b62000a6c8462000920565b8101602085101562000a7c578190505b62000a9462000a8b8562000920565b83018262000a25565b50505b505050565b600082821c905092915050565b600062000abc6000198460080262000a9c565b1980831691505092915050565b600062000ad7838362000aa9565b9150826002028217905092915050565b62000af2826200086d565b67ffffffffffffffff81111562000b0e5762000b0d62000878565b5b62000b1a8254620008d6565b62000b2782828562000a4c565b600060209050601f83116001811462000b5f576000841562000b4a578287015190505b62000b56858262000ac9565b86555062000bc6565b601f19841662000b6f866200090b565b60005b8281101562000b995784890151825560018201915060208501945060208101905062000b72565b8683101562000bb9578489015162000bb5601f89168262000aa9565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c5c5780860481111562000c345762000c3362000bce565b5b600185161562000c445780820291505b808102905062000c548562000bfd565b945062000c14565b94509492505050565b60008262000c77576001905062000d4a565b8162000c87576000905062000d4a565b816001811462000ca0576002811462000cab5762000ce1565b600191505062000d4a565b60ff84111562000cc05762000cbf62000bce565b5b8360020a91508482111562000cda5762000cd962000bce565b5b5062000d4a565b5060208310610133831016604e8410600b841016171562000d1b5782820a90508381111562000d155762000d1462000bce565b5b62000d4a565b62000d2a848484600162000c0a565b9250905081840481111562000d445762000d4362000bce565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d6b8262000993565b915062000d788362000d51565b925062000da77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c65565b905092915050565b600062000dbc8262000993565b915062000dc98362000993565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e055762000e0462000bce565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e428262000e15565b9050919050565b62000e548162000e35565b811462000e6057600080fd5b50565b60008151905062000e748162000e49565b92915050565b60006020828403121562000e935762000e9262000e10565b5b600062000ea38482850162000e63565b91505092915050565b62000eb78162000e35565b82525050565b600060408201905062000ed4600083018562000eac565b62000ee3602083018462000eac565b9392505050565b600082825260208201905092915050565b7f45524332303a20496e69746961746520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600062000f5960238362000eea565b915062000f668262000efb565b604082019050919050565b6000602082019050818103600083015262000f8c8162000f4a565b9050919050565b600062000fa08262000993565b915062000fad8362000993565b925082820190508082111562000fc85762000fc762000bce565b5b92915050565b62000fd98162000993565b82525050565b600060208201905062000ff6600083018462000fce565b92915050565b6141d9806200100c6000396000f3fe60806040526004361061024a5760003560e01c80638a8c523c11610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610869578063e01af92c146108a6578063e545fd6d146108cf578063f2fde38b146108f8578063f66895a314610921578063f887ea401461094e57610251565b8063a9059cbb14610772578063aa4bde28146107af578063aacebbe3146107da578063d34628cc14610803578063dbe66ca01461082c57610251565b806395d89b41116100fd57806395d89b411461068d5780639d0014b1146106b85780639e252f00146106e1578063a457c2d71461070a578063a8aa1b311461074757610251565b80638a8c523c146105cc5780638c0b5e22146105e35780638cd4426d1461060e5780638da5cb5b146106375780638ea5220f1461066257610251565b8063313ce567116101c757806370a082311161018b57806370a0823114610509578063715018a614610546578063728f8eea1461055d578063751039fc1461058a57806375f0a874146105a157610251565b8063313ce56714610422578063395093511461044d57806340b28c2f1461048a5780634ada218b146104b35780636ddd1713146104de57610251565b80632253163d1161020e5780632253163d1461033d57806323b872dd1461036857806326b5d32f146103a5578063273123b7146103ce578063293b7ef4146103f757610251565b80630445b6671461025657806306fdde0314610281578063095ea7b3146102ac57806318160ddd146102e95780631816467f1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610979565b6040516102789190612cc3565b60405180910390f35b34801561028d57600080fd5b5061029661097f565b6040516102a39190612d6e565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190612e2e565b610a11565b6040516102e09190612e89565b60405180910390f35b3480156102f557600080fd5b506102fe610a2f565b60405161030b9190612cc3565b60405180910390f35b34801561032057600080fd5b5061033b60048036038101906103369190612ea4565b610a39565b005b34801561034957600080fd5b50610352610af9565b60405161035f9190612cc3565b60405180910390f35b34801561037457600080fd5b5061038f600480360381019061038a9190612ed1565b610aff565b60405161039c9190612e89565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190612f24565b610c00565b005b3480156103da57600080fd5b506103f560048036038101906103f09190612ea4565b610d8d565b005b34801561040357600080fd5b5061040c610e42565b6040516104199190612cc3565b60405180910390f35b34801561042e57600080fd5b50610437610e48565b6040516104449190612f93565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f9190612e2e565b610e51565b6040516104819190612e89565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190612fec565b610efd565b005b3480156104bf57600080fd5b506104c8610fff565b6040516104d59190612e89565b60405180910390f35b3480156104ea57600080fd5b506104f3611012565b6040516105009190612e89565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612ea4565b611025565b60405161053d9190612cc3565b60405180910390f35b34801561055257600080fd5b5061055b61106d565b005b34801561056957600080fd5b506105726110f5565b6040516105819392919061302c565b60405180910390f35b34801561059657600080fd5b5061059f61110d565b005b3480156105ad57600080fd5b506105b66111af565b6040516105c39190613072565b60405180910390f35b3480156105d857600080fd5b506105e16111d5565b005b3480156105ef57600080fd5b506105f86112d9565b6040516106059190612cc3565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612e2e565b6112df565b005b34801561064357600080fd5b5061064c6113e5565b6040516106599190613072565b60405180910390f35b34801561066e57600080fd5b5061067761140f565b6040516106849190613072565b60405180910390f35b34801561069957600080fd5b506106a2611435565b6040516106af9190612d6e565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da919061308d565b6114c7565b005b3480156106ed57600080fd5b506107086004803603810190610703919061308d565b61154d565b005b34801561071657600080fd5b50610731600480360381019061072c9190612e2e565b6115fc565b60405161073e9190612e89565b60405180910390f35b34801561075357600080fd5b5061075c6116f0565b6040516107699190613072565b60405180910390f35b34801561077e57600080fd5b5061079960048036038101906107949190612e2e565b611716565b6040516107a69190612e89565b60405180910390f35b3480156107bb57600080fd5b506107c4611734565b6040516107d19190612cc3565b60405180910390f35b3480156107e657600080fd5b5061080160048036038101906107fc9190612ea4565b61173a565b005b34801561080f57600080fd5b5061082a60048036038101906108259190613202565b6117fa565b005b34801561083857600080fd5b50610853600480360381019061084e9190612ea4565b61190b565b6040516108609190612e89565b60405180910390f35b34801561087557600080fd5b50610890600480360381019061088b919061324b565b61192b565b60405161089d9190612cc3565b60405180910390f35b3480156108b257600080fd5b506108cd60048036038101906108c891906132b7565b6119b2565b005b3480156108db57600080fd5b506108f660048036038101906108f191906132e4565b611a4b565b005b34801561090457600080fd5b5061091f600480360381019061091a9190612ea4565b611b22565b005b34801561092d57600080fd5b50610936611c19565b6040516109459392919061302c565b60405180910390f35b34801561095a57600080fd5b50610963611c31565b6040516109709190613383565b60405180910390f35b60085481565b60606003805461098e906133cd565b80601f01602080910402602001604051908101604052809291908181526020018280546109ba906133cd565b8015610a075780601f106109dc57610100808354040283529160200191610a07565b820191906000526020600020905b8154815290600101906020018083116109ea57829003601f168201915b5050505050905090565b6000610a25610a1e611c57565b8484611c5f565b6001905092915050565b6000600254905090565b610a41611c57565b73ffffffffffffffffffffffffffffffffffffffff16610a5f6113e5565b73ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061344a565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b6000610b0c848484611e28565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b57611c57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce906134dc565b60405180910390fd5b610bf485610be3611c57565b8584610bef919061352b565b611c5f565b60019150509392505050565b610c08611c57565b73ffffffffffffffffffffffffffffffffffffffff16610c266113e5565b73ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c739061344a565b60405180910390fd5b6000479050610c8a84612327565b60008147610c98919061352b565b90506000831115610d1057610d0f8385610cb2919061355f565b8483610cbe9190613593565b610cc8919061361c565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256a90919063ffffffff16565b5b6000841115610d8657610d858385610d28919061355f565b8583610d349190613593565b610d3e919061361c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256a90919063ffffffff16565b5b5050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de757600080fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60135481565b60006012905090565b6000610ef3610e5e611c57565b848460016000610e6c611c57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eee919061355f565b611c5f565b6001905092915050565b610f05611c57565b73ffffffffffffffffffffffffffffffffffffffff16610f236113e5565b73ffffffffffffffffffffffffffffffffffffffff1614610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f709061344a565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611075611c57565b73ffffffffffffffffffffffffffffffffffffffff166110936113e5565b73ffffffffffffffffffffffffffffffffffffffff16146110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e09061344a565b60405180910390fd5b6110f3600061265e565b565b600d8060000154908060010154908060020154905083565b611115611c57565b73ffffffffffffffffffffffffffffffffffffffff166111336113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111809061344a565b60405180910390fd5b6a084595161401484a0000006009819055506a084595161401484a000000600a81905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111dd611c57565b73ffffffffffffffffffffffffffffffffffffffff166111fb6113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112489061344a565b60405180910390fd5b600760169054906101000a900460ff16156112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890613699565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550565b60095481565b6112e7611c57565b73ffffffffffffffffffffffffffffffffffffffff166113056113e5565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113529061344a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61137f6113e5565b836040518363ffffffff1660e01b815260040161139d9291906136b9565b6020604051808303816000875af11580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e091906136f7565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054611444906133cd565b80601f0160208091040260200160405190810160405280929190818152602001828054611470906133cd565b80156114bd5780601f10611492576101008083540402835291602001916114bd565b820191906000526020600020905b8154815290600101906020018083116114a057829003601f168201915b5050505050905090565b6114cf611c57565b73ffffffffffffffffffffffffffffffffffffffff166114ed6113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a9061344a565b60405180910390fd5b8060088190555050565b611555611c57565b73ffffffffffffffffffffffffffffffffffffffff166115736113e5565b73ffffffffffffffffffffffffffffffffffffffff16146115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c09061344a565b60405180910390fd5b6115f9816115d56113e5565b73ffffffffffffffffffffffffffffffffffffffff1661256a90919063ffffffff16565b50565b6000806001600061160b611c57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156116c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bf90613796565b60405180910390fd5b6116e56116d3611c57565b8585846116e0919061352b565b611c5f565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061172a611723611c57565b8484611e28565b6001905092915050565b600a5481565b611742611c57565b73ffffffffffffffffffffffffffffffffffffffff166117606113e5565b73ffffffffffffffffffffffffffffffffffffffff16146117b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ad9061344a565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611802611c57565b73ffffffffffffffffffffffffffffffffffffffff166118206113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186d9061344a565b60405180910390fd5b60005b81518110156119075760016016600084848151811061189b5761189a6137b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806118ff906137e5565b915050611879565b5050565b60156020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119ba611c57565b73ffffffffffffffffffffffffffffffffffffffff166119d86113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a259061344a565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611a53611c57565b73ffffffffffffffffffffffffffffffffffffffff16611a716113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abe9061344a565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b2a611c57565b73ffffffffffffffffffffffffffffffffffffffff16611b486113e5565b73ffffffffffffffffffffffffffffffffffffffff1614611b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b959061344a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061389f565b60405180910390fd5b611c168161265e565b50565b60108060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc590613931565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d34906139c3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e1b9190612cc3565b60405180910390a3505050565b60008111611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6290613a55565b60405180910390fd5b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90613ac1565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f9c5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fb55750600760149054906101000a900460ff16155b156120fd57600760169054906101000a900460ff16612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090613b2d565b60405180910390fd5b60095481111561204e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204590613b99565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120fc57600a54816120b084611025565b6120ba919061355f565b11156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290613c2b565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806121635750601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121b75750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121c55760009050612259565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b5760646014548361222a9190613593565b612234919061361c565b9050612258565b60646013548361224b9190613593565b612255919061361c565b90505b5b600760159054906101000a900460ff1680156122825750600760149054906101000a900460ff16155b80156122dc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122e85750600081115b156122f6576122f5612724565b5b61230c84848385612307919061352b565b612928565b600081111561232157612320843083612928565b5b50505050565b6000600267ffffffffffffffff811115612344576123436130bf565b5b6040519080825280602002602001820160405280156123725781602001602082028036833780820191505090505b509050308160008151811061238a576123896137b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124559190613c60565b81600181518110612469576124686137b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124d030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c5f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612534959493929190613d86565b600060405180830381600087803b15801561254e57600080fd5b505af1158015612562573d6000803e3d6000fd5b505050505050565b804710156125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490613e2c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516125d390613e7d565b60006040518083038185875af1925050503d8060008114612610576040519150601f19603f3d011682016040523d82523d6000602084013e612615565b606091505b5050905080612659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265090613f04565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612926576001600760146101000a81548160ff021916908315150217905550600061275e30611025565b90506008548110612909576000600260145461277a9190613593565b9050600081601060010154846127909190613593565b61279a919061361c565b9050600081846127aa919061352b565b905060004790506127ba82612327565b600081476127c8919061352b565b90506000601060010154866127dd919061352b565b826127e8919061361c565b90506000601060010154826127fd9190613593565b90506000811115612813576128128682612ba5565b5b60006010600001546002846128289190613593565b6128329190613593565b905060008111156128895761288881600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256a90919063ffffffff16565b5b600060106002015460028561289e9190613593565b6128a89190613593565b905060008111156128ff576128fe81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256a90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90613f96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fd90614028565b60405180910390fd5b612a11838383612ca5565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8e906140ba565b60405180910390fd5b8181612aa3919061352b565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b33919061355f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b979190612cc3565b60405180910390a350505050565b612bd230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c5f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612c5b969594939291906140da565b60606040518083038185885af1158015612c79573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c9e9190614150565b5050505050565b505050565b6000819050919050565b612cbd81612caa565b82525050565b6000602082019050612cd86000830184612cb4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d18578082015181840152602081019050612cfd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d4082612cde565b612d4a8185612ce9565b9350612d5a818560208601612cfa565b612d6381612d24565b840191505092915050565b60006020820190508181036000830152612d888184612d35565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dcf82612da4565b9050919050565b612ddf81612dc4565b8114612dea57600080fd5b50565b600081359050612dfc81612dd6565b92915050565b612e0b81612caa565b8114612e1657600080fd5b50565b600081359050612e2881612e02565b92915050565b60008060408385031215612e4557612e44612d9a565b5b6000612e5385828601612ded565b9250506020612e6485828601612e19565b9150509250929050565b60008115159050919050565b612e8381612e6e565b82525050565b6000602082019050612e9e6000830184612e7a565b92915050565b600060208284031215612eba57612eb9612d9a565b5b6000612ec884828501612ded565b91505092915050565b600080600060608486031215612eea57612ee9612d9a565b5b6000612ef886828701612ded565b9350506020612f0986828701612ded565b9250506040612f1a86828701612e19565b9150509250925092565b600080600060608486031215612f3d57612f3c612d9a565b5b6000612f4b86828701612e19565b9350506020612f5c86828701612e19565b9250506040612f6d86828701612e19565b9150509250925092565b600060ff82169050919050565b612f8d81612f77565b82525050565b6000602082019050612fa86000830184612f84565b92915050565b6000612fb982612dc4565b9050919050565b612fc981612fae565b8114612fd457600080fd5b50565b600081359050612fe681612fc0565b92915050565b6000806040838503121561300357613002612d9a565b5b600061301185828601612fd7565b925050602061302285828601612ded565b9150509250929050565b60006060820190506130416000830186612cb4565b61304e6020830185612cb4565b61305b6040830184612cb4565b949350505050565b61306c81612dc4565b82525050565b60006020820190506130876000830184613063565b92915050565b6000602082840312156130a3576130a2612d9a565b5b60006130b184828501612e19565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130f782612d24565b810181811067ffffffffffffffff82111715613116576131156130bf565b5b80604052505050565b6000613129612d90565b905061313582826130ee565b919050565b600067ffffffffffffffff821115613155576131546130bf565b5b602082029050602081019050919050565b600080fd5b600061317e6131798461313a565b61311f565b905080838252602082019050602084028301858111156131a1576131a0613166565b5b835b818110156131ca57806131b68882612ded565b8452602084019350506020810190506131a3565b5050509392505050565b600082601f8301126131e9576131e86130ba565b5b81356131f984826020860161316b565b91505092915050565b60006020828403121561321857613217612d9a565b5b600082013567ffffffffffffffff81111561323657613235612d9f565b5b613242848285016131d4565b91505092915050565b6000806040838503121561326257613261612d9a565b5b600061327085828601612ded565b925050602061328185828601612ded565b9150509250929050565b61329481612e6e565b811461329f57600080fd5b50565b6000813590506132b18161328b565b92915050565b6000602082840312156132cd576132cc612d9a565b5b60006132db848285016132a2565b91505092915050565b600080604083850312156132fb576132fa612d9a565b5b600061330985828601612ded565b925050602061331a858286016132a2565b9150509250929050565b6000819050919050565b600061334961334461333f84612da4565b613324565b612da4565b9050919050565b600061335b8261332e565b9050919050565b600061336d82613350565b9050919050565b61337d81613362565b82525050565b60006020820190506133986000830184613374565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133e557607f821691505b6020821081036133f8576133f761339e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613434602083612ce9565b915061343f826133fe565b602082019050919050565b6000602082019050818103600083015261346381613427565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134c6602883612ce9565b91506134d18261346a565b604082019050919050565b600060208201905081810360008301526134f5816134b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353682612caa565b915061354183612caa565b9250828203905081811115613559576135586134fc565b5b92915050565b600061356a82612caa565b915061357583612caa565b925082820190508082111561358d5761358c6134fc565b5b92915050565b600061359e82612caa565b91506135a983612caa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135e2576135e16134fc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362782612caa565b915061363283612caa565b925082613642576136416135ed565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613683601683612ce9565b915061368e8261364d565b602082019050919050565b600060208201905081810360008301526136b281613676565b9050919050565b60006040820190506136ce6000830185613063565b6136db6020830184612cb4565b9392505050565b6000815190506136f18161328b565b92915050565b60006020828403121561370d5761370c612d9a565b5b600061371b848285016136e2565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613780602583612ce9565b915061378b82613724565b604082019050919050565b600060208201905081810360008301526137af81613773565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006137f082612caa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613822576138216134fc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613889602683612ce9565b91506138948261382d565b604082019050919050565b600060208201905081810360008301526138b88161387c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061391b602483612ce9565b9150613926826138bf565b604082019050919050565b6000602082019050818103600083015261394a8161390e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ad602283612ce9565b91506139b882613951565b604082019050919050565b600060208201905081810360008301526139dc816139a0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a3f602983612ce9565b9150613a4a826139e3565b604082019050919050565b60006020820190508181036000830152613a6e81613a32565b9050919050565b7f596f752063616e27742062757920746f6b656e73000000000000000000000000600082015250565b6000613aab601483612ce9565b9150613ab682613a75565b602082019050919050565b60006020820190508181036000830152613ada81613a9e565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613b17601683612ce9565b9150613b2282613ae1565b602082019050919050565b60006020820190508181036000830152613b4681613b0a565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613b83601d83612ce9565b9150613b8e82613b4d565b602082019050919050565b60006020820190508181036000830152613bb281613b76565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c15602183612ce9565b9150613c2082613bb9565b604082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b600081519050613c5a81612dd6565b92915050565b600060208284031215613c7657613c75612d9a565b5b6000613c8484828501613c4b565b91505092915050565b6000819050919050565b6000613cb2613cad613ca884613c8d565b613324565b612caa565b9050919050565b613cc281613c97565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cfd81612dc4565b82525050565b6000613d0f8383613cf4565b60208301905092915050565b6000602082019050919050565b6000613d3382613cc8565b613d3d8185613cd3565b9350613d4883613ce4565b8060005b83811015613d79578151613d608882613d03565b9750613d6b83613d1b565b925050600181019050613d4c565b5085935050505092915050565b600060a082019050613d9b6000830188612cb4565b613da86020830187613cb9565b8181036040830152613dba8186613d28565b9050613dc96060830185613063565b613dd66080830184612cb4565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613e16601d83612ce9565b9150613e2182613de0565b602082019050919050565b60006020820190508181036000830152613e4581613e09565b9050919050565b600081905092915050565b50565b6000613e67600083613e4c565b9150613e7282613e57565b600082019050919050565b6000613e8882613e5a565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613eee603a83612ce9565b9150613ef982613e92565b604082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f80602583612ce9565b9150613f8b82613f24565b604082019050919050565b60006020820190508181036000830152613faf81613f73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614012602383612ce9565b915061401d82613fb6565b604082019050919050565b6000602082019050818103600083015261404181614005565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006140a4602683612ce9565b91506140af82614048565b604082019050919050565b600060208201905081810360008301526140d381614097565b9050919050565b600060c0820190506140ef6000830189613063565b6140fc6020830188612cb4565b6141096040830187613cb9565b6141166060830186613cb9565b6141236080830185613063565b61413060a0830184612cb4565b979650505050505050565b60008151905061414a81612e02565b92915050565b60008060006060848603121561416957614168612d9a565b5b60006141778682870161413b565b93505060206141888682870161413b565b92505060406141998682870161413b565b915050925092509256fea2646970667358221220de511df6682f1df2e35848e1f296ce044572dc0d6f2c71709b774ee93253c60964736f6c63430008100033