Mw0NChZae2MRFwAA4wAAAAAAAAAAAAAAACgAAABAAAAAc3ICAABkAFoAZAFkAmwBWgFkAWQCbAJaA2QBZANsBG0FWgUBAGQBZARsBm0HWgcBAGQFZAZsCG0JWgkBAGQFZAdsCm0LWgsBAGUDagxyVmQFZAhsDW0OWg4BAGUPZRBkCZwCZApkC4QEWhFlD2UQZAmcAmQMZA2EBFoSZQ9lD2UQZA6cA2QPZBCEBFoTZQNqFGUQZAmcAmQRZBKEBFoVZQNqFGUQZAmcAmQTZBSEBFoWZQtkFWUXZRBkFpwDZBdkGIQEgwFaGGULZBVlF2UQZBacA2QZZBqEBIMBWhllA2oUZRBkCZwCZBtkHIQEWhplA2oUZRBkCZwCZB1kHoQEWhtlA2oUZRBkCZwCZB9kIIQEWhxlA2oUZRBkCZwCZCFkIoQEWh1lA2oUZRBkCZwCZCNkJIQEWh5lA2oUZRBkCZwCZCVkJoQEWh9lF2UQZAmcAmQnZCiEBFogZRdlEGQJnAJkKWQqhARaIWUDahRlEGQJnAJkK2QshARaImUDahRlEGQJnAJkLWQuhARaI2UDahRlEGQJnAJkL2QwhARaJGUDahRlEGQJnAJkMWQyhARaJWUDahRlA2oUZRBkM5wDZDRkNYQEWiZlA2oUZRBkCZwCZDZkN4QEWidlA2oUZRBkCZwCZDhkOYQEWihlA2oUZQNqKWUQZDqcA2Q7ZDyEBFoqZRFlEmUTZRVlFmUYZRllGmUbZRxlHWUeZR9lIGUhZSJlI2UkZSVlJ2UrZSZlKGUqZQFqLGUBaixlAWosZQFqLWUBai1lAWouZQFqLmUBai5lAWovZQFqL2UBajBlAWowZQFqMGUBajFlAWoxZD2cJ1oyZAJTACk+ejZCdWlsdC1pbiB0ZW1wbGF0ZSB0ZXN0cyB1c2VkIHdpdGggdGhlIGBgaXNgYCBvcGVyYXRvci7pAAAAAE4pAdoDYWJjKQHaBk51bWJlcukBAAAAKQHaCVVuZGVmaW5lZCkB2hBwYXNzX2Vudmlyb25tZW50KQHaC0Vudmlyb25tZW50KQLaBXZhbHVl2gZyZXR1cm5jAQAAAAAAAAABAAAAAgAAAEMAAABzDAAAAHwAZAEWAGQCawJTACkDeiNSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFyaWFibGUgaXMgb2RkLukCAAAAcgQA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