Mw0NCgxae2PQTwAA4wAAAAAAAAAAAAAAAA0AAABAAAAAcwYGAABkAGQBbABaAGQAZAFsAVoBZABkAWwCWgJkAGQBbANaA2QAZAFsBFoEZABkAWwFWgVkAGQBbAZaBmQAZAFsB1oHZABkAWwIWghkAGQBbAlaCWQAZAFsCloKZABkAWwLWgxkAGQCbARtDVoNAQBkAGQDbA5tD1oPbRBaEG0RWhEBAGQAZARsEm0TWhMBAGQAZAVsFG0VWhVtFloWbRdaF20YWhhtGVoZbRpaGm0bWhttHFocbR1aHW0eWh5tH1ofbSBaIG0hWiEBAGQAZAZsIm0jWiMBAGQAZAdsJG0lWiVtJlombSdaJwEAZABkCGwobSlaKQEAZABkCWwqbStaKwEAZABkCmwsbS1aLW0uWi5tL1ovAQBkAGQLbDBtMVoxAQBkAGQMbDJtM1ozAQBkAGQNbDRtNVo1AQBkDmQPZBBkEWQSZBNkFGQVZBZkF2QYZBlkGmcNWjZlBWo3ZTiDAVo5ZSBkG4MBWjplHmUfZTsZAGU7ZRNmAxkAWjxlHmU9ZT1lPWYDGQBaPmUeZT9lHmUcZT8ZAGUcZT8ZAGYCGQBmAhkAWkBlP2QcnAFkHWQehARaQWUeZT1kH2YCGQBlHmU9ZT1lPWYDGQBkIJwCZCFkIoQEWkJlP2QBZCOcAmQkZBmEBFpDZT9kHJwBZCVkF4QEWkRlJWQmZSZkJ4MBZSdkKIMBZCmNA2SgZT9lRWQBZCucA2QsZA6EBYMBWkZlF2QfZRVmAhkAZT9lPGQBZC2cBGQuZC+EBFpHZT9lP2QjnAJkMGQPhARaSGShZT9lP2U/ZDKcA2QzZBCEBVpJZT9lGWU/GQBlP2Q0nANkNWQ2hARaSmU/ZAFkN5wCZDhkOYQEWktlP2UZZT8ZAGU/ZDScA2Q6ZBGEBFpMZT9lP2Q3nAJkO2Q8hARaTWU/ZT9kN5wCZD1kPoQEWk5lP2U9ZD+cAmRAZEGEBFpPZVBlP2RCnAJkQ2QThARaUWUZZRllFRkAGQBlHmUbZT8ZAGUbZT0ZAGYCGQBkRJwCZEVkRoQEWlJlP2VFZCOcAmRHZBSEBFpTZQRqVGYBZRZlPWUaZVUZAGRInANkSWRKhAVaVmSiZT9lRWU/ZEucA2RMZBWEBVpXZT9lHmU/ZT9mAhkAZCOcAmRNZBKEBFpYZT9lP2QBZE6cA2RPZBaEBFpZZT9lRWQjnAJkUGRRhARaWmUjZUVkUpwCZFNkVIQEWltlI2VFZFKcAmRVZFaEBFpcZSNlRWRSnAJkV2RYhARaXWU/ZRxlIxkAZFmcAmRaZFuEBFpeZSNlP2RSnAJkXGRdhARaX2UVZRVkAWRenANkX2RghARaYEcAZGFkYoQAZGJlDYMDWmFlAGpiZT9lGmVhGQBkY5wCZGRkZYQEgwFaY2UYZWEZAGQcnAFkZmQYhARaZGUYZWEZAGQcnAFkZ2RohARaZWUVZRVlH2UVGQBkaZwDZGpka4QEWmZlP2UcZT0ZAGU/ZGycA2RtZG6EBFpnZKNlP2U/ZT9kcJwDZHFkcoQFWmhlP2UeZT9lHGU9GQBmAhkAZHOcAmR0ZHWEBFppZT9lQGRznAJkdmR3hARaamU/ZT9kc5wCZHhkeYQEWmtlP2UXZT9nAWUeZRVkH2YCGQBmAhkAZR5lP2VAZgIZAGR6nANke2R8hARabGU/ZUBkc5wCZH1kfoQEWm1lP2UeZT8ZAGRznAJkf2SAhARabmU/ZR5lP2U/ZR5lP2U/ZgIZAGYDGQBkgZwCZIJkg4QEWm9lP2U/ZIGcAmSEZBqEBFpwZT9lP2SBnAJkhWSGhARacUcAZIdkiIQAZIiDAlpyZT9lcmSJnAJkimSLhARac2U/ZXJkgZwCZIxkjYQEWnRlRWQBZI6cAmSPZJCEBFp1ZUVkHJwBZJFkkoQEWnZkpWU/ZT1lHmUVZT1mAhkAZJWcA2SWZJeEBVp3ZUVkHJwBZJhkmYQEWnhlGWUVGQBlGmUeZRVlFWYCGQAZAGSanAJkm2SchARaeWUXZTpnAWVFZgIZAGUZZToZAGUeZRllOhkAZRllOhkAZgIZAGSdnANknmSfhARaemQBUwAppukAAAAATikB2ghTdHJpbmdJTykD2gtmaWx0ZXJmYWxzZdoDdGVl2gt6aXBfbG9uZ2VzdCkB2g1UcmFjZWJhY2tUeXBlKQ3aA0FuedoIQmluYXJ5SU/aCENhbGxhYmxl2g5Db250ZXh0TWFuYWdlctoISXRlcmFibGXaCEl0ZXJhdG9y2gRMaXN02ghPcHRpb25hbNoGVGV4dElP2gVUdXBsZdoEVHlwZdoHVHlwZVZhctoEY2FzdCkB2gxEaXN0cmlidXRpb24pA9oFcmV0cnnaEHN0b3BfYWZ0ZXJfZGVsYXnaCndhaXRfZml4ZWQpAdoLX192ZXJzaW9uX18pAdoMQ29tbWFuZEVycm9yKQPaF2dldF9tYWpvcl9taW5vcl92ZXJzaW9u2g1zaXRlX3BhY2thZ2Vz2gl1c2VyX3NpdGUpAdoHV0lORE9XUykB2htlZ2dfbGlua19wYXRoX2Zyb21fbG9jYXRpb24pAdoYcnVubmluZ191bmRlcl92aXJ0dWFsZW522gZybXRyZWXaDGRpc3BsYXlfcGF0aNoKYmFja3VwX2RpctoDYXNr2ghzcGxpdGV4dNoLZm9ybWF0X3NpemXaEmlzX2luc3RhbGxhYmxlX2RpctoObm9ybWFsaXplX3BhdGjaB3JlbmFtZXPaCGdldF9wcm9n2g9jYXB0dXJlZF9zdGRvdXTaCmVuc3VyZV9kaXLaFHJlbW92ZV9hdXRoX2Zyb21fdXJs2gFUKQHaBnJldHVybmMAAAAAAAAAAAEAAAAEAAAAQwAAAHM0AAAAdABqAWoCdABqAWoDdASDAWQBZAGDA30AdABqAWoFfACDAX0AZAJqBnQHfAB0CIMAgwNTACkDTnoCLi56GnBpcCB7fSBmcm9tIHt9IChweXRob24ge30pKQnaAm9z2gRwYXRo2gRqb2lu2gdkaXJuYW1l2ghfX2ZpbGVfX9oHYWJzcGF0aNoGZm9ybWF0chgAAAByGgAAACkB2gtwaXBfcGtnX2RpcqkAcjcAAAD6Ny90bXAvcGlwLWJ1aWxkLTFmaWNvajRzL3BpcC9waXAvX2ludGVybmFsL3V0aWxzL21pc2MucHnaD2dldF9waXBfdmVyc2lvbkYAAABzDAAAAAABGAEMAgQBAgECAXI5AAAALikC2g9weV92ZXJzaW9uX2luZm9yLgAAAGMBAAAAAAAAAAEAAAAEAAAAQwAAAHNEAAAAdAB8AIMBZAFrAHIifABkAXQAfACDARgAZAUUADcAfQBuGHQAfACDAWQBawRyOnwAZANkAYUCGQB9AHQBZAR8AIMCUwApBmF4AQAACiAgICBDb252ZXJ0IGEgdHVwbGUgb2YgaW50cyByZXByZXNlbnRpbmcgYSBQeXRob24gdmVyc2lvbiB0byBvbmUgb2YgbGVuZ3RoCiAgICB0aHJlZS4KCiAgICA6cGFyYW0gcHlfdmVyc2lvbl9pbmZvOiBhIHR1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