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