60806040523480156200001157600080fd5b506040518060400160405280600981526020017f50757265205065706500000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f50757265506570650000000000000000000000000000000000000000000000008152506200008e6200036d60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38160059081620001599190620007ac565b5080600690816200016b9190620007ac565b5050506000600760016101000a81548160ff02191690831515021790555060006200019b6200037560201b60201c565b600a620001a9919062000a23565b66017e9d8602b400620001bd919062000a74565b9050620001d133826200037e60201b60201c565b73814b6fe70ffb60712d9114c31cf99195cb2660bd600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731395e296e6fcde2091cd3bd80936c34973006df3600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fd73160ec5e4293bf7b1d4aba7c43ff952937dc6600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000bab565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e79062000b20565b60405180910390fd5b6200040c816004546200051a60201b620022f71790919060201c565b6004819055506200046b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200051a60201b620022f71790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200050e919062000b53565b60405180910390a35050565b600081836200052a919062000b70565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b457607f821691505b602082108103620005ca57620005c96200056c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005f5565b620006408683620005f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200068d62000687620006818462000658565b62000662565b62000658565b9050919050565b6000819050919050565b620006a9836200066c565b620006c1620006b88262000694565b84845462000602565b825550505050565b600090565b620006d8620006c9565b620006e58184846200069e565b505050565b5b818110156200070d5762000701600082620006ce565b600181019050620006eb565b5050565b601f8211156200075c576200072681620005d0565b6200073184620005e5565b8101602085101562000741578190505b620007596200075085620005e5565b830182620006ea565b50505b505050565b600082821c905092915050565b6000620007816000198460080262000761565b1980831691505092915050565b60006200079c83836200076e565b9150826002028217905092915050565b620007b78262000532565b67ffffffffffffffff811115620007d357620007d26200053d565b5b620007df82546200059b565b620007ec82828562000711565b600060209050601f8311600181146200082457600084156200080f578287015190505b6200081b85826200078e565b8655506200088b565b601f1984166200083486620005d0565b60005b828110156200085e5784890151825560018201915060208501945060208101905062000837565b868310156200087e57848901516200087a601f8916826200076e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200092157808604811115620008f957620008f862000893565b5b6001851615620009095780820291505b80810290506200091985620008c2565b9450620008d9565b94509492505050565b6000826200093c576001905062000a0f565b816200094c576000905062000a0f565b81600181146200096557600281146200097057620009a6565b600191505062000a0f565b60ff84111562000985576200098462000893565b5b8360020a9150848211156200099f576200099e62000893565b5b5062000a0f565b5060208310610133831016604e8410600b8410161715620009e05782820a905083811115620009da57620009d962000893565b5b62000a0f565b620009ef8484846001620008cf565b9250905081840481111562000a095762000a0862000893565b5b81810290505b9392505050565b600060ff82169050919050565b600062000a308262000658565b915062000a3d8362000a16565b925062000a6c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200092a565b905092915050565b600062000a818262000658565b915062000a8e8362000658565b925082820262000a9e8162000658565b9150828204841483151762000ab85762000ab762000893565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b08601f8362000abf565b915062000b158262000ad0565b602082019050919050565b6000602082019050818103600083015262000b3b8162000af9565b9050919050565b62000b4d8162000658565b82525050565b600060208201905062000b6a600083018462000b42565b92915050565b600062000b7d8262000658565b915062000b8a8362000658565b925082820190508082111562000ba55762000ba462000893565b5b92915050565b613b8e8062000bbb6000396000f3fe6080604052600436106101855760003560e01c8063735de9f7116100d1578063a457c2d71161008a578063dd13591011610064578063dd13591014610559578063dd62ed3e14610584578063e8078d94146105c1578063f2fde38b146105d85761018c565b8063a457c2d7146104b6578063a9059cbb146104f3578063bea9849e146105305761018c565b8063735de9f7146103ca5780638456cb59146103f55780638da5cb5b1461040c57806395d89b41146104375780639c8f9f23146104625780639d76ea581461048b5761018c565b80633f4ba83a1161013e5780635c975abb116101185780635c975abb1461033457806364c3aebf1461035f57806370a0823114610376578063715018a6146103b35761018c565b80633f4ba83a146102c957806342966c68146102e057806349bd5a5e146103095761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd14610224578063313ce56714610261578063395093511461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610601565b6040516101b39190612bbc565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612c77565b610693565b6040516101f09190612cd2565b60405180910390f35b34801561020557600080fd5b5061020e610737565b60405161021b9190612cfc565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612d17565b610741565b6040516102589190612cd2565b60405180910390f35b34801561026d57600080fd5b506102766108e9565b6040516102839190612d86565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612c77565b6108f2565b6040516102c09190612cd2565b60405180910390f35b3480156102d557600080fd5b506102de610a31565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612da1565b610ad0565b005b34801561031557600080fd5b5061031e610b6b565b60405161032b9190612ddd565b60405180910390f35b34801561034057600080fd5b50610349610b91565b6040516103569190612cd2565b60405180910390f35b34801561036b57600080fd5b50610374610ba8565b005b34801561038257600080fd5b5061039d60048036038101906103989190612df8565b610fdc565b6040516103aa9190612cfc565b60405180910390f35b3480156103bf57600080fd5b506103c8611025565b005b3480156103d657600080fd5b506103df61125e565b6040516103ec9190612e84565b60405180910390f35b34801561040157600080fd5b5061040a611284565b005b34801561041857600080fd5b50610421611323565b60405161042e9190612ddd565b60405180910390f35b34801561044357600080fd5b5061044c61134c565b6040516104599190612bbc565b60405180910390f35b34801561046e57600080fd5b5061048960048036038101906104849190612da1565b6113de565b005b34801561049757600080fd5b506104a061179c565b6040516104ad9190612ddd565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190612c77565b6117c2565b6040516104ea9190612cd2565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190612c77565b611921565b6040516105279190612cd2565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190612df8565b6119c5565b005b34801561056557600080fd5b5061056e611b0d565b60405161057b9190612ddd565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190612e9f565b611b37565b6040516105b89190612cfc565b60405180910390f35b3480156105cd57600080fd5b506105d6611bbe565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190612df8565b612050565b005b60606005805461061090612f0e565b80601f016020809104026020016040519081016040528092919081815260200182805461063c90612f0e565b80156106895780601f1061065e57610100808354040283529160200191610689565b820191906000526020600020905b81548152906001019060200180831161066c57829003601f168201915b5050505050905090565b6000600760009054906101000a900460ff16156106e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dc90612f8b565b60405180910390fd5b6001600760006101000a81548160ff02191690831515021790555061071261070b61230d565b8484612315565b600190506000600760006101000a81548160ff02191690831515021790555092915050565b6000600454905090565b6000600760009054906101000a900460ff1615610793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078a90612f8b565b60405180910390fd5b6001600760006101000a81548160ff0219169083151502179055506107b98484846124de565b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061080461230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087b9061301d565b60405180910390fd5b6108c28561089061230d565b6108bd86604051806060016040528060288152602001613b0c602891398661276a9092919063ffffffff16565b612315565b60019150506000600760006101000a81548160ff0219169083151502179055509392505050565b60006012905090565b6000600760009054906101000a900460ff1615610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90612f8b565b60405180910390fd5b6001600760006101000a81548160ff02191690831515021790555060006109f7836003600061097161230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f790919063ffffffff16565b9050610a0b610a0461230d565b8583612315565b60019150506000600760006101000a81548160ff02191690831515021790555092915050565b610a3961230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abd90613089565b60405180910390fd5b610ace6127bf565b565b600760029054906101000a900460ff1615610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612f8b565b60405180910390fd5b6001600760026101000a81548160ff021916908315150217905550610b43612822565b610b4d338261286c565b6000600760026101000a81548160ff02191690831515021790555050565b600760039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760019054906101000a900460ff16905090565b610bb061230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490613089565b60405180910390fd5b600760029054906101000a900460ff1615610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8490612f8b565b60405180910390fd5b6001600760026101000a81548160ff021916908315150217905550610cb0612822565b6000610cbb33610fdc565b905060008111610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf79061311b565b60405180910390fd5b6000610d296064610d1b600585612a3e90919063ffffffff16565b612a5490919063ffffffff16565b90506000610d546064610d46600586612a3e90919063ffffffff16565b612a5490919063ffffffff16565b90506000610d7f6064610d71600587612a3e90919063ffffffff16565b612a5490919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990613187565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a906131f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b9061325f565b60405180910390fd5b610f6133600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856124de565b610f8e33600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124de565b610fbb33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836124de565b505050506000600760026101000a81548160ff021916908315150217905550565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160149054906101000a900460ff1615611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c90612f8b565b60405180910390fd5b60018060146101000a81548160ff02191690831515021790555061109761230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90613089565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160146101000a81548160ff021916908315150217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61128c61230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090613089565b60405180910390fd5b611321612a6a565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461135b90612f0e565b80601f016020809104026020016040519081016040528092919081815260200182805461138790612f0e565b80156113d45780601f106113a9576101008083540402835291602001916113d4565b820191906000526020600020905b8154815290600101906020018083116113b757829003601f168201915b5050505050905090565b6113e661230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a90613089565b60405180910390fd5b600760029054906101000a900460ff16156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90612f8b565b60405180910390fd5b6001600760026101000a81548160ff0219169083151502179055506114e6612822565b60003073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115219190612ddd565b602060405180830381865afa15801561153e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115629190613294565b9050600047905061159630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685612315565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af2979eb308560008030426040518763ffffffff1660e01b81526004016115fc969594939291906132fc565b6020604051808303816000875af115801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190613294565b506116cc823073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161167d9190612ddd565b602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190613294565b612acd90919063ffffffff16565b91506116e18147612acd90919063ffffffff16565b90506116f5306116ef611323565b846124de565b6116fd611323565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611742573d6000803e3d6000fd5b507f9101fb4cb96b608de64eae79af26fc5fbe69904c5e3b6108204eefd9212f4770828260405161177492919061335d565b60405180910390a150506000600760026101000a81548160ff02191690831515021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900460ff1615611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90612f8b565b60405180910390fd5b6001600760006101000a81548160ff02191690831515021790555060006003600061183d61230d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006118e684604051806060016040528060258152602001613b34602591398461276a9092919063ffffffff16565b90506118fa6118f361230d565b8683612315565b6001925050506000600760006101000a81548160ff02191690831515021790555092915050565b6000600760009054906101000a900460ff1615611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90612f8b565b60405180910390fd5b6001600760006101000a81548160ff0219169083151502179055506119a061199961230d565b84846124de565b600190506000600760006101000a81548160ff02191690831515021790555092915050565b6119cd61230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190613089565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac0906133f8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bc661230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90613089565b60405180910390fd5b600760029054906101000a900460ff1615611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a90612f8b565b60405180910390fd5b6001600760026101000a81548160ff021916908315150217905550611cc6612822565b6000611cfe6064611cf06032611ce2611cdd611323565b610fdc565b612a3e90919063ffffffff16565b612a5490919063ffffffff16565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d91919061342d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e919061342d565b6040518363ffffffff1660e01b8152600401611e5b92919061345a565b6020604051808303816000875af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e919061342d565b600760036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f12611ee9611323565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612315565b6000683635c9adc5dea000009050600061051490506000828285611f3691906134b2565b611f409190613523565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823087600080611f8e611323565b426040518863ffffffff1660e01b8152600401611fb0969594939291906132fc565b60606040518083038185885af1158015611fce573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ff39190613554565b5050507fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4818560405161202792919061335d565b60405180910390a1505050506000600760026101000a81548160ff021916908315150217905550565b600160149054906101000a900460ff16156120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790612f8b565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055506120c261230d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690613089565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613619565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160146101000a81548160ff02191690831515021790555050565b600081836123059190613639565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b906136df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613771565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d19190612cfc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361254d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254490613803565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390613895565b60405180910390fd5b61262881604051806060016040528060268152602001613ae660269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276a9092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126bd81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161275d9190612cfc565b60405180910390a3505050565b60008383111582906127b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a99190612bbc565b60405180910390fd5b5082840390509392505050565b6127c7612ae3565b6000600760016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61280b61230d565b6040516128189190612ddd565b60405180910390a1565b61282a610b91565b1561286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190613901565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290613993565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990613a25565b60405180910390fd5b6129758282612acd90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cd82600454612acd90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a319190612cfc565b60405180910390a3505050565b60008183612a4c91906134b2565b905092915050565b60008183612a629190613523565b905092915050565b612a72612822565b6001600760016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612ab661230d565b604051612ac39190612ddd565b60405180910390a1565b60008183612adb9190613a45565b905092915050565b612aeb610b91565b612b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2190613ac5565b60405180910390fd5b565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8e82612b2c565b612b988185612b37565b9350612ba8818560208601612b48565b612bb181612b72565b840191505092915050565b60006020820190508181036000830152612bd68184612b83565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c0e82612be3565b9050919050565b612c1e81612c03565b8114612c2957600080fd5b50565b600081359050612c3b81612c15565b92915050565b6000819050919050565b612c5481612c41565b8114612c5f57600080fd5b50565b600081359050612c7181612c4b565b92915050565b60008060408385031215612c8e57612c8d612bde565b5b6000612c9c85828601612c2c565b9250506020612cad85828601612c62565b9150509250929050565b60008115159050919050565b612ccc81612cb7565b82525050565b6000602082019050612ce76000830184612cc3565b92915050565b612cf681612c41565b82525050565b6000602082019050612d116000830184612ced565b92915050565b600080600060608486031215612d3057612d2f612bde565b5b6000612d3e86828701612c2c565b9350506020612d4f86828701612c2c565b9250506040612d6086828701612c62565b9150509250925092565b600060ff82169050919050565b612d8081612d6a565b82525050565b6000602082019050612d9b6000830184612d77565b92915050565b600060208284031215612db757612db6612bde565b5b6000612dc584828501612c62565b91505092915050565b612dd781612c03565b82525050565b6000602082019050612df26000830184612dce565b92915050565b600060208284031215612e0e57612e0d612bde565b5b6000612e1c84828501612c2c565b91505092915050565b6000819050919050565b6000612e4a612e45612e4084612be3565b612e25565b612be3565b9050919050565b6000612e5c82612e2f565b9050919050565b6000612e6e82612e51565b9050919050565b612e7e81612e63565b82525050565b6000602082019050612e996000830184612e75565b92915050565b60008060408385031215612eb657612eb5612bde565b5b6000612ec485828601612c2c565b9250506020612ed585828601612c2c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2657607f821691505b602082108103612f3957612f38612edf565b5b50919050565b7f4e6f2072652d656e7472616e6379000000000000000000000000000000000000600082015250565b6000612f75600e83612b37565b9150612f8082612f3f565b602082019050919050565b60006020820190508181036000830152612fa481612f68565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613007602883612b37565b915061301282612fab565b604082019050919050565b6000602082019050818103600083015261303681612ffa565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613073602083612b37565b915061307e8261303d565b602082019050919050565b600060208201905081810360008301526130a281613066565b9050919050565b7f546f6b656e2062616c616e6365206d757374206265206772656174657220746860008201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b6000613105602483612b37565b9150613110826130a9565b604082019050919050565b60006020820190508181036000830152613134816130f8565b9050919050565b7f446576656c6f7065722077616c6c65742061646472657373206e6f7420736574600082015250565b6000613171602083612b37565b915061317c8261313b565b602082019050919050565b600060208201905081810360008301526131a081613164565b9050919050565b7f4d61726b65742077616c6c65742061646472657373206e6f7420736574000000600082015250565b60006131dd601d83612b37565b91506131e8826131a7565b602082019050919050565b6000602082019050818103600083015261320c816131d0565b9050919050565b7f4f776e65722077616c6c65742061646472657373206e6f742073657400000000600082015250565b6000613249601c83612b37565b915061325482613213565b602082019050919050565b600060208201905081810360008301526132788161323c565b9050919050565b60008151905061328e81612c4b565b92915050565b6000602082840312156132aa576132a9612bde565b5b60006132b88482850161327f565b91505092915050565b6000819050919050565b60006132e66132e16132dc846132c1565b612e25565b612c41565b9050919050565b6132f6816132cb565b82525050565b600060c0820190506133116000830189612dce565b61331e6020830188612ced565b61332b60408301876132ed565b61333860608301866132ed565b6133456080830185612dce565b61335260a0830184612ced565b979650505050505050565b60006040820190506133726000830185612ced565b61337f6020830184612ced565b9392505050565b7f556e697377617020726f75746572206164647265737320697320696e76616c6960008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006133e2602183612b37565b91506133ed82613386565b604082019050919050565b60006020820190508181036000830152613411816133d5565b9050919050565b60008151905061342781612c15565b92915050565b60006020828403121561344357613442612bde565b5b600061345184828501613418565b91505092915050565b600060408201905061346f6000830185612dce565b61347c6020830184612dce565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134bd82612c41565b91506134c883612c41565b92508282026134d681612c41565b915082820484148315176134ed576134ec613483565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352e82612c41565b915061353983612c41565b925082613549576135486134f4565b5b828204905092915050565b60008060006060848603121561356d5761356c612bde565b5b600061357b8682870161327f565b935050602061358c8682870161327f565b925050604061359d8682870161327f565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613603602683612b37565b915061360e826135a7565b604082019050919050565b60006020820190508181036000830152613632816135f6565b9050919050565b600061364482612c41565b915061364f83612c41565b925082820190508082111561366757613666613483565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136c9602483612b37565b91506136d48261366d565b604082019050919050565b600060208201905081810360008301526136f8816136bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061375b602283612b37565b9150613766826136ff565b604082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137ed602583612b37565b91506137f882613791565b604082019050919050565b6000602082019050818103600083015261381c816137e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061387f602383612b37565b915061388a82613823565b604082019050919050565b600060208201905081810360008301526138ae81613872565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006138eb601083612b37565b91506138f6826138b5565b602082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061397d602183612b37565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a0f602283612b37565b9150613a1a826139b3565b604082019050919050565b60006020820190508181036000830152613a3e81613a02565b9050919050565b6000613a5082612c41565b9150613a5b83612c41565b9250828203905081811115613a7357613a72613483565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613aaf601483612b37565b9150613aba82613a79565b602082019050919050565b60006020820190508181036000830152613ade81613aa2565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220659ff113f8743a76a3fd269531d58a10ea56d2ee40e79525621c5524c740087464736f6c63430008120033