0x60806040523480156200001157600080fd5b506040516200397038038062003970833981810160405281019062000037919062001f14565b601260ff16600a6200004a9190620020c9565b816200005791906200211a565b600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60005460405162000105919062002176565b60405180910390a3600573606da31247c389aa52629016b7c6e5504d26516e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573877f35379ef23323a4660827586604c7dcf387da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057378f0d9a770b141fd5886e245bd470268149638349080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005733cf148d97e03bcc911b739a0d895fd44237c3aaf9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573c319a081f5ea45ecc1b8590dd572881f09bfe2339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573839275b859aaddd789005ced6cee51f5c655df9c9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005732b3fbb7c27d2619de68acb2c8ff27a3c4ccf1b3a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573e37add7f6b80d7e367f0015e0029a873081185c29080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573b270f34e23dba6b438df605a1a463bdd5be8386b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573bdf3160013f8e3652840136eb367fa2de57ef6859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057375df805a59997ad96efeac080c949c12289976ef9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005738242e079b9c9c2a31974898f0635e7355cdf4bae9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057306f6f105dd37ac6a3be59766b5407347ce49dfa69080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005737d4ae1aae068aea2b017440c52d1b69f3cd81d479080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d25ac219e3e9d04df0d327c760440cc54e4fd1ad9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057340d6e9c9c267d9592a7f17595db25d0f489a6c1f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573032ad2d0ab8abc27139f7795eb1cab2a62b4615e9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057360fdf9b6fe1eb870e33f90d99ab4bf1757c00f1d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573e6ccb30401332aee581a9ce083fb6a54973ec2299080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005735b4d485912dd82bda602974de0ccbf2024ed96659080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005731db45a65c3be4f00a25aa1680bdb5942ed7de2249080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573e6f900c859502d0a9d88ff7a7cbd32c1636edfea9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d67efed948df17f5b64218c23f0f77cf64d2e8d49080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573e6e91b308133fa7ab5fb44e536c836652f4386b79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005735df05fbdc3af464c48f6da6d9d8dca49c8a086319080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005739653b82be447e9894f9da66107c8f4657c6acaae9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573086996ae01c2dda4c9b0af5c3998d4ed3f7e650f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005733210c023b44b33fed106a6c9e762596d54400f2a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d40bc09a3ca07872fbb1ccccc153de1884bcf7459080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573982c4c2ceeb5fbb970818a3fd70b87c3468af7619080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573abf7a454d059a456aaae2077e65ab1abca02fba29080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573437bc23faec5e690db467b128629f7fb574068569080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005736ce7da5aa1a3beaea6341417dd6c3b506b86307d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057384f859ad3c2e4c43d33329889ceaeb08b899ca169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573a98a2c1749d9f801305c84af8f85250ce130a5b79080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573eee8cc8b8eee1daa5705dc00849a88834bdcf5a39080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d464e4291120247f8cec3bef45de1f827b7509159080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573eb3ee458a53c960e5f78faedb4fc93f1dcfb80389080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005731eca4a9778cc15c937cc02278b75eecb82a7e2129080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573dfb0a334e996a3c974904c97872d2c8f982aa4339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005736de9a86cec39a2214643baf981bf65d250a515789080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005730de4393dd3a5e7ba2bc428da5fe4d76611ec5ff29080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005730af31abb4fad5e58394135e9886e4224f8cc7da89080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573c672a7ade84f23ffa0c053173d689390d4fcce489080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057377fd60bbcb125c98032907dd283c992f485b4bdc9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057351bec20f54c6b30327924a1f175b3af5f731fa539080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573e9eeffa1afde4b7566a314ea1aa3d1e5b6366f2f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060057396fb368195b60dc1bcf5604c9d8dbf280d370d419080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005730227f882c6a82e93b1320f5c0f691a47fe6c1dec9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573185796c9e52430d55aa7d3ed28d7b3f0efe6a2719080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573c86204d7f4cd14bc0cc8e5e9db68cf3572f2dffe9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573b2dcf98c2f88e237af1a73dc2ace51659d369d449080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005735d00a6b82964e6adc05ead94a1b0506a83319e299080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573f1c896f644b1c6def75578f8109c481b72f274eb9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573a36347c84b4034493abbaf3ede195e0dfe1f54e29080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573211ae058c2441f47716589e920d655ec841976d29080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005735c5cd4a09ed7e5b6444c252e061dbe25886e1fee9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573698474421e301bdef777f16fdff892da4fab42999080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573b335d5903674ffd8d1778d9bcea7f916cec5f62d9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d9106e460d4e7a0fb76916c28bd719db5e0c50049080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005737482b1c1b1d28aab0af6f7d0ffd0a81d6e5b6c249080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573d28e1b3f4fac3a8fe0a940e9be05406008e370d59080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573417adacc402a23db404ac16d6b2e471ce41ad8fd9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600573f3b6b0bd6d014e9b3a11e2ca7d185d034d20e05f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062002193565b600080fd5b6000819050919050565b62001eee8162001ed9565b811462001efa57600080fd5b50565b60008151905062001f0e8162001ee3565b92915050565b60006020828403121562001f2d5762001f2c62001ed4565b5b600062001f3d8482850162001efd565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001fd45780860481111562001fac5762001fab62001f46565b5b600185161562001fbc5780820291505b808102905062001fcc8562001f75565b945062001f8c565b94509492505050565b60008262001fef5760019050620020c2565b8162001fff5760009050620020c2565b8160018114620020185760028114620020235762002059565b6001915050620020c2565b60ff84111562002038576200203762001f46565b5b8360020a91508482111562002052576200205162001f46565b5b50620020c2565b5060208310610133831016604e8410600b8410161715620020935782820a9050838111156200208d576200208c62001f46565b5b620020c2565b620020a2848484600162001f82565b92509050818404811115620020bc57620020bb62001f46565b5b81810290505b9392505050565b6000620020d68262001ed9565b9150620020e38362001ed9565b9250620021127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001fdd565b905092915050565b6000620021278262001ed9565b9150620021348362001ed9565b9250828202620021448162001ed9565b915082820484148315176200215e576200215d62001f46565b5b5092915050565b620021708162001ed9565b82525050565b60006020820190506200218d600083018462002165565b92915050565b6117cd80620021a36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063dd62ed3e14610288578063f968f493146102b8576100cf565b806370a08231146101be57806389158d8e146101ee57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102c2565b6040516100e991906110a4565b60405180910390f35b61010c6004803603810190610107919061115f565b6102ff565b60405161011991906111ba565b60405180910390f35b61012a610316565b60405161013791906111e4565b60405180910390f35b61015a600480360381019061015591906111ff565b61031f565b60405161016791906111ba565b60405180910390f35b6101786104d0565b604051610185919061126e565b60405180910390f35b6101a860048036038101906101a3919061115f565b6104d9565b6040516101b591906111ba565b60405180910390f35b6101d860048036038101906101d39190611289565b610577565b6040516101e591906111e4565b60405180910390f35b610208600480360381019061020391906112b6565b6105c0565b005b6102126107aa565b60405161021f91906110a4565b60405180910390f35b610242600480360381019061023d919061115f565b6107e7565b60405161024f91906111ba565b60405180910390f35b610272600480360381019061026d919061115f565b610885565b60405161027f91906111ba565b60405180910390f35b6102a2600480360381019061029d91906112f6565b6109a3565b6040516102af91906111e4565b60405180910390f35b6102c0610a2a565b005b60606040518060400160405280600c81526020017f46696e616c46616e746173790000000000000000000000000000000000000000815250905090565b600061030c338484610b36565b6001905092915050565b60008054905090565b600061032a84610cff565b82111561036c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036390611382565b60405180910390fd5b60006103e860058461037e91906113d1565b6103889190611442565b9050600081846103989190611473565b90506103a5868683610e20565b6103c48673d88fa142b67f561c5f2cbf803bf5ae906a8f1e4184610e20565b60005b6005805490508110156104305761041d87600583815481106103ec576103eb6114a7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610e20565b8080610428906114d6565b9150506103c7565b506104c3863386600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104be9190611473565b610b36565b6001925050509392505050565b60006012905090565b600061056d338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610568919061151e565b610b36565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105c933610cff565b82111561060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290611382565b60405180910390fd5b600082905082600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461069b9190611473565b036106b0576001836106ad9190611473565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106ff919061151e565b925050819055508142610712919061151e565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fd741e738a23fd18a03a26522320d9fc6cac1fed483e215ea9150fbc2fc43385d848460405161079d929190611552565b60405180910390a2505050565b60606040518060400160405280600281526020017f4646000000000000000000000000000000000000000000000000000000000000815250905090565b600061087b338484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108769190611473565b610b36565b6001905092915050565b600061089033610cff565b8211156108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990611382565b60405180910390fd5b60006103e86005846108e491906113d1565b6108ee9190611442565b9050600081846108fe9190611473565b905061090b338683610e20565b61092a3373d88fa142b67f561c5f2cbf803bf5ae906a8f1e4184610e20565b60005b600580549050811015610996576109833360058381548110610952576109516114a7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685610e20565b808061098e906114d6565b91505061092d565b5060019250505092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b42600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa3906115c7565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fcf96a7404357442bbc147c389fc2942cb6eedcaf1aad90bb8eb4b67ce43d4fb260405160405180910390a2565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90611633565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0b9061169f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cf291906111e4565b60405180910390a3505050565b600042600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d8e57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610e1b565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e189190611473565b90505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e869061170b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef590611777565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f4d9190611473565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fa3919061151e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161100791906111e4565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561104e578082015181840152602081019050611033565b60008484015250505050565b6000601f19601f8301169050919050565b600061107682611014565b611080818561101f565b9350611090818560208601611030565b6110998161105a565b840191505092915050565b600060208201905081810360008301526110be818461106b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110f6826110cb565b9050919050565b611106816110eb565b811461111157600080fd5b50565b600081359050611123816110fd565b92915050565b6000819050919050565b61113c81611129565b811461114757600080fd5b50565b60008135905061115981611133565b92915050565b60008060408385031215611176576111756110c6565b5b600061118485828601611114565b92505060206111958582860161114a565b9150509250929050565b60008115159050919050565b6111b48161119f565b82525050565b60006020820190506111cf60008301846111ab565b92915050565b6111de81611129565b82525050565b60006020820190506111f960008301846111d5565b92915050565b600080600060608486031215611218576112176110c6565b5b600061122686828701611114565b935050602061123786828701611114565b92505060406112488682870161114a565b9150509250925092565b600060ff82169050919050565b61126881611252565b82525050565b6000602082019050611283600083018461125f565b92915050565b60006020828403121561129f5761129e6110c6565b5b60006112ad84828501611114565b91505092915050565b600080604083850312156112cd576112cc6110c6565b5b60006112db8582860161114a565b92505060206112ec8582860161114a565b9150509250929050565b6000806040838503121561130d5761130c6110c6565b5b600061131b85828601611114565b925050602061132c85828601611114565b9150509250929050565b7f496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000600082015250565b600061136c601d8361101f565b915061137782611336565b602082019050919050565b6000602082019050818103600083015261139b8161135f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113dc82611129565b91506113e783611129565b92508282026113f581611129565b9150828204841483151761140c5761140b6113a2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061144d82611129565b915061145883611129565b92508261146857611467611413565b5b828204905092915050565b600061147e82611129565b915061148983611129565b92508282039050818111156114a1576114a06113a2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006114e182611129565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611513576115126113a2565b5b600182019050919050565b600061152982611129565b915061153483611129565b925082820190508082111561154c5761154b6113a2565b5b92915050565b600060408201905061156760008301856111d5565b61157460208301846111d5565b9392505050565b7f546f6b656e7320617265207374696c6c206c6f636b6564000000000000000000600082015250565b60006115b160178361101f565b91506115bc8261157b565b602082019050919050565b600060208201905081810360008301526115e0816115a4565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b600061161d601d8361101f565b9150611628826115e7565b602082019050919050565b6000602082019050818103600083015261164c81611610565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000611689601b8361101f565b915061169482611653565b602082019050919050565b600060208201905081810360008301526116b88161167c565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006116f5601e8361101f565b9150611700826116bf565b602082019050919050565b60006020820190508181036000830152611724816116e8565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000611761601c8361101f565b915061176c8261172b565b602082019050919050565b6000602082019050818103600083015261179081611754565b905091905056fea2646970667358221220699e084cfb533c0181fc22deea6645747df8a4e3f9754f01f1e0c80fa209d78464736f6c634300081200330000000000000000000000000000000000000000000000000000000029b92700