nls/doc/LicensingFlow.md
2025-03-27 08:17:52 +01:00

61 KiB

NLS-Instance Debug Information

This file describes the data exchange and shows some payloads. For Code reference see dls_instance_token.md.

[TOC]

Registration Process

First, the DLS-Instance-Token (dls_instance_token.tok) is downloaded from your NLS-Instance. This Token must be uploaded to NVIDIA-Licensing-Portal. After that, you can assign entitlements to this NLS-Instance in the Portal. Then you have to download the license.bin from the Portal, which you have to upload to your NLS-Instance. Now the registration is finished and your NLS-Instance should be ready to go.

  1. Download Instance-Token from NLS-Instance (dls_instance_token_<mm-dd-YYY-HH-MM-SS>.tok)
  2. Upload Instance-Token to NVIDIA-Licensing-Portal
  3. Download Licence from NVIDIA-Licensing-Portal (license_<mm-dd-YYY-HH-MM-SS>.bin)
  4. Upload License to NLS-Instance

Public-Keys, Private-Keys, Certificates

There are stored several files on different places:

# Type Storage / Name / Indexed By Usage Info
1 Certificate Docker configuration-Volume: certificate.pem Webserver
1 Private-Key Docker configuration-Volume: key.pem
2 Public-Key DB-Table public_private_key_pair, Column public_key ?
2 RSA Private-Key DB-Table public_private_key_pair, Column private_key ?
3 Public-Key DB-Table service_instance_artifact, Key service_instance.identity
3 RSA Private-Key DB-Table service_instance_artifact, Key service_instance.identity Decrypt data from License.bin
4 Public-Key DB-Table service_instance_artifact, Key service_instance.client.all ?
4 RSA Private-Key DB-Table service_instance_artifact, Key service_instance.client.all ?
5 Public-Key DB-Table service_instance_artifact, Key service_instance.global ?
6 Public-Key DB-Table service_instance_artifact, Key service_instance.deployment ?

Private-Key from License.bin upload is the same as service_instance.identity-private_key.

DLS Instance Token

dls_instance_token.tok

  • Format: json

This file is simple a JSON file with only one key: identityToken.

{
  "identityToken": ""
}

identityToken

  • Format: jwt
{
  "jit": "<uuid>",
  "iss": "Service Instance",
  "aud": "Portal",
  "iat": <timestamp>,
  "nbf": <timestamp>,
  "exp": <timestamp>,
  "si_version": "3.4.1",
  "service_instance_identity": "<unknown-maybe-base64>"
}

service_instance_identity

  • Format: unknown

according to current knowledge, this is a base64-aes-encrypted string

License

liense.bin

  • Format: json (base64 encoded)

This data is also stored in database table license_allotment_file_publication as json in publication_detail.

{
  "preamble": {
    "deployment_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJqaXQiOiIyYjM0ODc3OS01ZDIwLTQwNDAtODRhZC03MzQ1N2M0ODU3ODkiLCJpc3MiOiJQb3J0YWwiLCJhdWQiOiJTZXJ2aWNlIEluc3RhbmNlIiwiaWF0IjoxNzQzMDIwODcyLCJuYmYiOjE3NDMwMjA4NzIsImV4cCI6MTc0NTYxMjg3Miwic2VydmljZV9pbnN0YW5jZV9kZXBsb3ltZW50IjoiU1ExT1kyK0o3VS9xVVMzQTJSejV6TGtHTCsyZHFmRW8wNE42enM5M3FGZm1SRjQydUZ4U01MSU5tcGdNcElmNWIzNUZHd2lmRUZNRTZpekY1VVpMR1pVcUtmN0VJL2FSazNkMU55UXI1azlpTFhVWFVhc3R0dnM0dGE5R0xaV25vTU1MZjVvbURuSUkwdEorNngyaUp1QVJubE01bmIxak1mYWNVM0VzeTErSWxPQjNFRGllbUpNclBWcWNsTFBUZnp0ZGRpRUptV29GYUQvN1RXdnIrcjFtL2xNREZxWnhLNVd4bGkxWUxMRE1wdEdFNmRRekIwajJQKzVpYmowemlKWVZuSjluRThmWHNBQjY3R2Jkb2g0VEJFMWVpWXBQWkptcWxlMkwvRTNhcE14Si9TVGY3ZjVjYjVFWHpJQ1FxVVFHK1BiUEFwNU9kZmNldXp2RzlDMmhhOGxsVUMzdUZpWHNTT1puVVJjeHI0RmlxR0xkaFI2cGdqRDlFeStGMDZUSUQ0WUhXeDBZUkNtSi9NMWhkSzJNbVRRSy9IUmY0cmxZbzczblJTY1N6SDYxQk02QklCcmhlZSs4YXZxd2ZlR3ErZHIxVmRVM0liSmFnUk4zOGpQRHZoaW1MajNHQmwwOUNFeTRHYlVHS1pDMVNNY1c4TVNRSHFCZVJFb00xZlErdlV4WkpkNVNSbkFnVWZ2NWdraU9PWVZmQVh4VEo2TzJVQ2YwWnREcjNSRWpDV2RUeDBjdDNEa25lUzJjenhQSXczK1dZWGU5cXg4TWx3aDVyWGdFalIzZlBoTlpvckpueEtvZmJzY1UrK1Y3N0dCZ0ZrRU1mMVExOFVBYVpVNS9td3JnK1dIVnpuSWQxYzNTVnQ4c3dsQ09tUUdTNWp3Y1YwT3VxSnUzd21BUGZ1RFd0WXBKZTNicEloNnFML1VtZnJFaGtWdEVVN0piQ1c5cERKam1UZXg2WjB3Y2l6d1VrVHZnNkJYL3QzWTB1NkR6REF1RkFXV3hHNXlxRWJSbWgrVm9RSFh3MTh1RHdQejZNWTQ2U1cwMCtRU0Y3ekhoSnVBcitES0t2bnlaUWFNUlRscmQxZGcydThwdmh5dVhJcklLaDJQS0ZsZk9FeVhyNmIrbjE5anNVaWZ0c2RXdWc5OHg4NVNMbTJaNW1IOXVrZFUvZWVPVGcvVFFoTjRzUUxaWis4VWpjaHBnVzJvQ1JZMS92NHg0VHZnUXcxZTF0L2laVTN6VHhob0ZtNEd3cUZibEEzNTg1YnFaNHNtVjBvekI5ZG1tQ0ZnZ0UyRTZGS0RaYVlRc2Y4WldDSzJ4WTZDYmVOWUllTUxwUWpPbG9qWXJ4OG43TkMrRld2M09haHFlVy9TaGZ3cXMrb0t2ejNYd1hzM2pKKzlISHdTN1l6WERzWmhrcTMrM0pYSzJmeG55ak85VGlwbXNFY3NJM0Z6U1EwcVptQjRCaUE1bnVCWTVRaE9FN1ZVTmxwelhzd05aYytBc0NZbnJxdHBta3VRaFJ6ZDRMNTdLYTNRWlBZWE8wM01UcmtnSFVha1ZSN1J2VEkwbFN0NkpZTjZNZStTbDdIWG9OYkVEMkd3Uml1bTZabXBnSStiTWZZdDRVVFZoK2tvMkwwTGJDVUlLQllvaTNLWjJmN2owZERxdDVuUm5DNnR4UUNYT3lEY2c3RmUyOC9CSndYS0ZhbzhuNXBGc1RzcjZ2UjZoTXZYUzNJUEh3U3FhaGFla2gvQjYwZUdYazNJc3dRNnU2eWdEMTR1K3lFby9aUFd0SWUrVVpPamtYSHpTVUdiQ3puRlM4cUxzRGU0eVFteVFZcFJDRGFqZkxpNldUUU9ENU9KRzNzQTZuNG5oU1RFU0FZenNoc3lJSG9oS2xBR1BTTXFtUzBFa3llMjlFZUlsUDZPK0RndlVrMnNxTEhrclpYWHlOejhpaVpPeTBiRzJDZ1E0ZG9JaUVPN3BjMURZY1VUMVFJaENLbkNsZ3RBQUt2M3VONGd2TmxNaEloYk1URjZlbTBHK2ZESDMrRUJoZEdHSzVZNmZSWm1PZm5FekNaYk9Ed29vY2QybHJ5S3dHbUc2TnJVeGRGZUV3THVMVVJPZEk5ZzNzcGtrMVVOQzM1YVlJSnlnNGwrUmNWMk1NZDRxNWZuNlNrdUhsQWs5Y3NVd0ZrNEN4NVBmbzAyNmxNUklldWNzUVNsbzZUTzN3VkdUTGtIRjBJQXd5MXpnNFBMWExaaC9FeDI4b21BamxPWVZCNEZhY1pINTZPbWp1VjdEY1VHU3RDNHg2d2h5Y3NGcmpyUmxrRmRhNlY1VWV2ejhhMlIvOUEzZFRodXNlTXlmbzY4ZVJHMUdGRlZzTWpxZWlkZlNiN2I5ZmdkUnRmcnRDT0F1SjQxNVRzY1FycXgzMHVpZXdNZzZXbTVxN1J0ZE14VzdGMFFhT25Oa3NiRTNWUmliMWFneFphbHUvOTVCL21GbkN1NUZRK3h0UCtaNDIwUnZTUjQxRGhEWU1DM1d2emp6RUZQa09wbjRSUWY0L3pXTjQ4U09CY2tGS1YvN1RMYUZpcC9ncTJUVEVPV2FKeXlXSVdDUW8wREp2U2lpbitzZ0FTcHBJVDZUdG1QeGR2QVlqN3h3NEdrL3ViVTBKdEJzQlVOeVV1RXh2YVlsTXJRVzUxc3NvVjRWWUgyaVpnZjI5RU52eEgvdDMrdm1oT2swWGREblczeGNncUE9IiwiZGVwbG95bWVudF90b2tlbl9sZWV3YXkiOjQzMjAwMH0.iC2SNUmseAumG9DUkI0dG9lSiXa-WKFi0pTR-nyOGNdEtKYCecmWD7YA4e-Vt8smNGkG3gjAT41YD3Y_4I-JH989HNFEpPVHam75eky0Xjh7RW04334MfEqPbMyK-UgmTicZnkgXFrg4xuWB-aoKFmPrxlOoJm1BHLDfvANr68j6ddUwrBDxPZJ8WWQ4YHDrUP3aj9EsYXWOOlTSk6RP8de7NvdshvKS_1V_aP_NC0dGkEIul4xmmLlrPwPqI7XgEEiYVYkOtRnUJQ9B5_7fCWAe7yzQTd-TquDMYffGSX8qgD8eiRY0b2XG-Mjyaik-GgfsMtqRtLmTRdZ7ebKq6g",
    "product_mapping_token": "T1Z6T3JHaFJhUnVzTnFMVjh5QVIyR3Vvd3dCRWJ6cVIwWCtLUzhYenV1UncvOHpjYkFKMlRMSzBNbVo1VSs4djZGeUNZRHltdE9OMlVMcG9YNy9taTFtYmJGYWttK1B3Qi9nU2xJa0JmajlSOEkrZ2U0UHM0TWxhK3JPYmFSVnFtMGEyNlBRMHk4cldGQkpnVFRpeVNCbm9tZWNUMHlrK0VNak5SNzJVOUx1a2FhcGFaenA0T2YxK1djRDNoY2VvY0ZwdW5ncE4rd0V1VE50MVFPKzkyY045U1BubjZ1d1QzeVMvaXRLVk9VMXlqb0Zac1QyQ0tJbWMrZ3A5RTBLNGxoZVc2ZGJyT1dSTElXRC9KaWhvUmxpTFBrUnoyWUtYQzVUanhOU1g5bFdJS3liT2xyS0VWV2pkT1Y4cEtlVjRsMStLNHZrenJLV3NkSHZySVlzZGhYMFQzYzJ1N2hYRnhDVWc5THFtcmloNGpVVmVyT1Nhc3p5cHpYaHQxN0hkSHlWSHlDU05vNFV1S1dUcU8vZXVJU3Mwd2htZ1pNTkMzTkZGYmpyWjVwN0tDRVBmM0ZzdjVlQllEaloxeU93WkpuU0dEL2J1U2VyMHB5QmJjVVc4ZWo0d1FKTmtUcHltU2NDNnQ1alZZY1F5eGxSN3Y2Y0o4MGR5VkJXUFNHRkRSQWwzQTlMdldqTno1T3loWUtEVE9CemVLMWpKSDVaQTE1ZjBONWVBOXlSVHJ3UitpM2d4Y0tPZzVLR21OYUVTa0prZWF0OGRGdzlxNkdXdkowZWZTRC92Nk1pd1BBcnVIY3ZmVzNxdEtXdGFzNWZkaHd3Zm5NTzdOMHVlNGpITUJrcXpNT3BtTkxnS2E4STA0a2hHVVRrZlVPd0NkVTBoZHhoaUdQQlFkNnV0RWR4RCtuS2J4dGE2YzBqckI3QnVaNXEvZXhTeUFya0FqWXUzMGIvTmRiNzNaUnVmOElKOUxTcGk5elN0djNyaE1FelcyVzExUnRhWXVHV24ySGxxSTIrQVpzY2RyRlkvMTdsbGVsT1JXTEUrenF1NUZNbXF0eTUrR2dxa3VRQnJPTXBBdkkxcGEwWVBCdUN3Ymx3MnNlSm52bTVHTXRrUzNocUdWN0hDTTBvY0cyYU5Tc2Y5aDhIYU03LzgwUlFvR3FlcDZvMG1PdTZWb09qVHMyQjNxYU0wZ2orLzFJZ1RIdHhyd2sraFlBWUFFRUhBSkNLUFhPV2Z2Q25NMnMwY0ZwcURUTWt0NXhMdmkzSVExcXFLaW11b0h3VVVBNzdJdlpTNzJOdXcxZ3dDb1BGTnlVU3pSaUpYVUxvQVQ3eDFsSU9ibWhMTSt4dWk0bzd1R2oxSEtmNXZBSlB6S0VvR0lTRnROV2FUVlJhU2Y2NUU4UHNvL1JlZGhlcXdKamZDM0k4YzRmZnNPcXBVZlEycnJGS0NpTXlMeklBYStNcFphekQ4Nmd4Mnd4RCs3dFVJcU9ZdzZ0TGZFb3BtMmo0REhTbkNTTy9nRThWNDFYa0wvb2Zhb0czWldneWJyeUJiN0M3aVBKZW9HL3hrelQ5eEtHbWNkbWxnZlZER01lYk9rSks2YmJiNENLS2g0MmtrTWJ2Um1hdjQxcENsNkRmVy8vU2ljNGwvOWhhbm1nam5ueDRpZXFJWTRpUU13cUtmcS9DQlNaRkV2OEtpMEVPaDJnMlpXTWUvclJrNFhLRW1zb2NhdGREMlB0cFJGdExaeEMvbk9LOEFLczJzbVZRYTI2Q243TXFmdVIrbXBjUnUzTXY4RVZUcjdaRXBQNDg1S3Q1RmRUT01NNjlHOG9HWDVoelkrTjh1QXdNb1NFSTNpRDZYVlJBVGNsdzI1c2p6TmpvNjkyWHVySG9zTXhCWGttSUVQWXBOOUVHMGozYkkxQnlVR3lSSTN5UHFMU0QvSmh6N0FSYjkvSjVYVXdtUm5VUHNiK0xab2ZEc1F0cEdzSCtWbU1DNVpEOVVid0hTdGJRaElWK2l2ZkdnY2lxTEF4eDRHYWc2SW1SNWNLZlF5c0V4TmFQVXZWYUEwbTNRdy9LdWU4UEJtK2k0ODFnSGtzOTNaY3MyNGFob01kM2pMamlGZWtMMjUrT2RTM3g2dnl0QmRRRnlhNitqSzdPYk5EWW1zWjE3WS9WcDkwTjJMRVNDRGkyRytpUy9KOUFqODNDL0hvL1h5WVpYcVZxbDd3dURLVkFGZkZaVXk5ejF1c2xmWGpTWExaak16V3hDSUQzYlVISnR4a0o3cDJrT1FSU2tFZ3U1YUlWQ2dGRXBiL2s3N2ZaWjg0Zi9UVFNKcFN6a3c0YWE5OFpQQytMVVBNeGRwMXBNTHNxelN0b3JRelBMdENHdGd0QUNlSVNCbHRKWFRrMU9PKzcwRGhrdmgvMDJ0ZS9DN2tzU2x5c1lIeUpnZVVyQXc1MENIU1VsUXZJQ1pGekdwQ0VwRmdoYTk2QmJPUlAxMGdGTG1FTXFXNGgyUG1PYVlRUmJhR3ZqdzNub3RzbFJScVZCa2haa3JxRGZNMGhia09hRFJLOGxIODdjbWFxTS9UZGdNQU1EZ1VJK0E1aHpuSUtrVUlJNllZeWcvQW0zRGw3N3FNTEc1RGNVM1hPR1RMRmpHTmttcEc0eTRRdk9UalJoK1JxcmN6ci83VUhyWVlSenRlL1pwMTU2VHEydnpwWlJramdUUHNFNDVPYjV2Wmh6ekVyTEhWWFk1eUZpdStkQjFRRlZoK0lBUWg5YnFpTXBNSHBYTkJqVmswWDlhMmVzK2I2dU50ZVR6WjFzSmhraG1wSDJiTUtPemRmQ3dPUXR6SXpsdGVSWis3MnVjdnJHa2NTcmpIYWp6d0ZzamFucEhqN1Y5SzJjK0JaT0FNQXBpUjk0bi8xRGFjWExBcWI1UDlFMlVzM083dUpSRFFWME1VTXhXdjc2MlNreCttUzVwYWJCMU81RjUvMUMveFFVK1Rzb1EvaFlFU2paZ2dYRGIrd1lEb0lmcXVHSkJPU1c0WjNPSlRzOWVmQk1DZTdGZUVDVzlCSS9YVDVkeWZjOUozSFVHZjlwRHR0dUVPVjM0WjZiRDRGcjg3Y2ZtaFArK0hVYSsyY3JmREp6b2MxcWtrdFpSZUxBMmhldnZ5RWJpRUZkemUwSmc1enJGRE9CeWF6VG1ockUzNyszWFpnbVpGbWNsak5BbjFKdzJUd2I0NHpVdVhicjlyWGFFUTE5TGEwQXp6WEtLWjRwaHRXWEt1VDVSb1ltcVBSNUdzUWVoRTFQVHQvZzBYenUxalh6ajR5eTRYSWxUSVFzL3hRUVI1enhLbEtTamUyc2EyVGdXSzNINytjYjlpbkdaL09OSEMrUDhZRGQvbG56NnRzNUkyV2dPYzZhdUErUDg1bGsxU0N3WjZhUEdzdjFqbFNTZmJGNjVDdW4zdlF2V011T3ZLaVRWRndXUFc1UldXMUhWNG5HMy8vTUxwMU1tNVZpTDA4NHpBcmp6SUVLVFA3bnNNRXhjM2VWY2wraEI5ckphS0dXQU9reWpLelBUeTFGWjcrNDZKdWNTWTdsL2VWUkxCamVaVVcwMDc1YS9XdXNEMUNWMDdLWFNob2N0Qk9oRTRncVZUWWNiZEVxZDZSSXQ0cllKRXR2WHdmUXJ3aUt5VUFiaTBPVVVtbk9NV3owYU01UEFGTC91eWttZ001UDY0TktGTTJMYzY4Q3FLcXVIbWw5NlE2QlAzdW5TZFVwSDFFSjFUT3JzWVkzR1hwbTF3bEVySklIalFtekNxNnlzQkxIMmE1WFE4QXBOb256Zm5pbnJBNzFFaU5FNFpnMzRsY0FURTdLZEQvM0t1TUZZRk9lK1VGVUh0SHJVTFZucnh1Kyt3Smtla0VBY2NrdmlRc3BoNUQzUGJmWG1BTEExaHcxb0FQNy9sVERqMWlaYXVxaDlVRW9Kb1Vrd0F6aDFYeEkyMHNGZFNtbTdIdStmSnV4YzNtRytZeDg1Ukg4WWRxbHI4VGpLQXROZDB6a2ZnbVFabG42VUF0WnR1V2lUNmpwL3NyZHF1WWZpUEdFL3RsWkJ3TEdTNVJQaDIxZnlkYThncExxbVVCS21iekpQYXhncmFrcFJZcUNtSmVUSlRSc2graldjaVFxVWpMUmM3ZW5WN3I2UzNTYVFCdUdvNElJUWFWWml6cEM3T1RVREFyWGFodG1ld3JTZllhZm4wNTc0K3dJeFIycStHWHNWZXNUMHlGcFJ4VzFVQlp5V1RaYjNQYmc3cHdtbGNvS3ZpMGQxeVlYbHZ3RFNDQ2lOWUhKLzhLWE1vUDVrcUxiSTZNR21yTVlJODVzdzJtYnhnQjhQME5oRVQrVnR3UEdJSlprVzEvSi83eWsxTFErNUtYWXNMcTV5WWI0NFVMNGZWU1hUeTk2SDA1TmxDaHRxYnRQNlZ3eWFqS2VEcGhaeWV2enlualAxMVJIOWVwZmZNblE2RlViQXd6bFYwbFdNRGJVN29meGtOdU1EMUlPeFRPRnF3MEltQW9VS24vT01ZVWM0b1JmeHRDVmJxOVBWa2pldUppR29KOUJwM1hUbm5naUlFY2ZjbU5iRTBXWUl6TThTOGY5ajhpOGl1dXV1aXZKM0c5R0xiQ2czR2ZNOGNUanAzUVpZS0NwQ1JBRzlQL01DQTRWQ3FkdlM0MUEydW51dXRidnF1Tkl5YWQrSy95UWdhVzlrTlVxblNneWxvYkhGbDY2dGNBL3FGS2lNUWJ3K0NrWDZmRjlnQ3hCRlZQeGs1UmdQRTZzTk8vZStaT05YRmM2ait4ZVc4VWRZYW0rNkRLNzRaWTRla3I5Y2c5V3RHOUVDMWhQbWg3dlJCK2EvRXZkbFovaEY3cHR0cWQ1cnVDMTQrS0J5WXcvZXRoTVFEUS9qOVlncm1id1BnRDhOV0hoVXZHZ1psMFV1djVJMUVDd3dpaTlCbjNlK0xtUk5IWHRMQ3lNN2pScXJBaWh4bVNaMGRGVFJWN3N2d3J2RHBzbUZjOGJHUlR5cGQ4NS9MYUZ1eE9tWkYyaWluMGFJbCtxN0MwTURIWVZscUYrQUN2OFFDYXNIcXpLWG5NdkVHNjluZ2RlK0hnQ1hjd0U1dmUzOFJvci8xS0FrUTJyNmJkbVhDN2R1enVxOEgyU0E2NTJuKzdOK2NUMFhQY3hFYTlSZFBNZC9BdDdITVJ6L1VueVBZSU5rcDd3bXZXZERJaUFWVWZINy8yeFRKWE50STFDTjRuUDZXQ1krcnB4eDRFQ1BjTUpycTRldlcrbWgwZitHeXZzV3l6SWdZMldocDBtZjFlemZsNVVwRk04elhBbmd2MGNORGtLRXlVNlRjSGpPOWhjSytZTlU2SnFva1BrS3JEdTg4NDVOVDltYU5IbFpKTG1CK1VKcGJyRTM5Q3paMjRxWXhXRFNDSy8rMGM4eSthbWljUlNSb0NEdlUyMy9vaW81b3FiSlJzYldxcklIWThNUkwwajBwbTJ6ZDJEZWJTUDFUOGRBbXBpa0NpQngwdEc0TFBaRmREdTQ0a3FPMUZPWThtYVNXUmFicjR6UzlEV2s5cndRZklORjh1VXpUZjZBdEJ1bDlEazg1RXRNUE1lelZjYm8vWWNCVVN2U3NqbTJOK0Y0RlNFWXU4UXM2K28vLzFrV08zd1dpVThPdEhLa1Ivb3U2SEpTVXM0bml6UlI2RHFYcW5ZamxsUUVkdlVNYVp5M29TQjBNNjZuaXBTcWlWd2dOc1Nad2FVTFpvRFBkWUhueWpTdHljMVMyQXJpTU5VZCtmdUFIeUNXR3puUkxXTWEzN0twOUFUakg2bmRSRCtlaHpXQTNiQ09DdDltd0lFb1V3blhieWcwM0JSOStZcmFsYjVtUWZhVkJiK1IyQjNmSlR6KzMyUXRNUTVOT3d3Y3Y4QWdjZGZsWFA4cjJQWFZnODVaK2UvSTluSTFDVS9hTTNMMVZza05WWjduNVhENW1HRlBOMG0zVmI4QU9aN0JlSFA5WHlYaEF1VUZWMVBPZEgxSDAxWU5XYzhsYTVia1V5UkIxam55Z2xDVlAvbzFkMC9FV1dabnJBY0hwdThXYmJqU2owTzhWRUNLWldNa0lhbTZOWmFIN0pxc3lqMWlFWjlDRWNTK0VLczhTcG9WNi9pTG9xUEVEQnNJWHBaM3hEM1B4YUw1SnJ0LzNDRkx3c0hxSGlRUDZJSy9MWWdEMzRiVnRaMEdkUHdqUllsTkxtRlFqK1pHM2hldkt3VXJMYTZIZlhqd1hIVVBDVWUyM0lrcG9rNGdqb0RER0NGdS93Y1o2bHdXWE5EZEc0ZGhGbVVXcUMyTE5uYkc3R2NQbUZVTm9qcFdVWEVMVlROK3BTTkJ0NnFQTngzUFNYblFTNk9lVWNXdktzYnBwVXNMSUNHZ010RmdZcG00S1hnZHdRTENTODZCWlZUVzRaZjhpV2JPR0xCaW11Qko1ODMxYWtJMU5PL1VId2tLbjBCZXd4MFVRYmE1TVV2MTMwM3BuUmpsVzZZQnQxaW5HY0tSbFdxMzVGSW9KR01JRmZObi9rZHh5aGhYd3kyMVkyZ0kyd2NPUTVYWXUwVjBBbHpYVlJoNzVvOHNodEZ5am04M1IzTkpNc3IxYkpzNWVhdWxnYi9sdnBPeVRpMTVySDZBZ3lyeXVUNVZuUWRiWmJZazB1UHN0QlZIcmRJQ29BdEhScVdzVXJORXhVc2UzUjNVSzA3MXdwcnJBeWVuMmJvMnd0UVdFaVB3VkU4cWNUR1NYOCtKUG1sUGJ3MmhvekcyZ0xLZjY5ZjVtaTFjL1hvSzYvaUNRbjJ6ZHMxUVZRczgxSXNoU2RPSWJiY2tzcjNCRjNCRFVnSDVWNDdQd0tjZXlLTmxjTDI2N1R5YkFsS3NzUE9FalR5aTVSbU5pYUJGc3RSUXB4UXVRS05wSEkyRnlqbmN3SWRxZ2grWlRIOHRmWHlDLyt2QVE3bmZkTjRZTUYrVkMzVkd1Qkl6NjZvQmljN2VtNFVFTzBhNWwzd2xad0U2S2dxM3ljTktPWVMyWE1BZUV4anc5OXJNS2kwbW5FR2JHMFZ0M1d0eXkvL2FUcHdYcjFVT3JKeUNLeWl2Z2U5c2h6TDE0Rmc1N1J2bGFPTTYwU1NzWnA0eHhtYjZ5YUhRRHYrVVdIclNacXNuN1hZd1NBd3VSK1BPazE5Rm5TOWVTWkFMbEp6dzlUd2xuNXFldGx1c2VEUllXKy91cXNMdjQ3YVVHNCt2b1c3ajdYemFlTUt2Vm9MdXA5bWI0UnNuODlwU2NGRTJmaHlQLzZ0U2JjOHJTaENoanZmZGhTQ2Z3OVZmYWNFWnhkQXAreGFJKzIrRncweEJlaVZacW4xck1mSUR1T2p3WkR6VHVqbG5HV3gzTVN3NElXT1puNUVTNGhUNkcveFpKcGZTSGpkV1lIZksxbkJjUXRwY1RqM2pNekkvVnhzNkVNQ044TG5jYXFsQXFzOHgrYzVVeHE1QWNRV3dRVlFkZTUzdnlqY29QK284RGQ3b3Q0NHJ6ODN5OVlnU1BXSjJSWkRWYnNqRitDYXQxOEdIdHJoRFRkTGgrVWUrRUpmV1FuOUZLbmNXOWtncXpDRVMwa09HY29Hb1g2V1JiNXhLN1ErSVRPeGtFck9ERksyd3pZdEFSeStFWHRxZEhEOERMS1o4OWgydnlvQk5NcTBudm5CVjJPSC8wZUc5MDNoQStrbHRIcThZbzA5ZUIwdmQxZUR3Y1ZHV1ZWanMyWXZuVGFGSThQQmNWQk1TeXVPSittakl2SUdjcnBNbVJBMTA1WVhtU3I4MUhkN1YyRjBBTzFVZXoxejlLY0IzL25ZdFAyM3kxdXl3bTJ4WDNjU1NTaHIyMkxFYzBpVCtrcFB6ckU3a0RDUVA4MHZEamdsQ1k3S29LalpDaEg5VE5kZFNMZWpXUUdIRm1HU0Q4a0crM0lldlNFWGpNOXlUak1GZFYrcHNsM1RNd1RldVdPQ3JJVjlIenlWdW14bHpXVE91S0ZwQzlqd3BZcGFhNVJTczAxWTRteHdKZWMvcWU5SFU4eGF4dU9DVUtOanNyRDRVdHdwVkhDb3d3R1I2UG9iL3JMdkRhNG8ySklEclNHVlhjckM4TWk3dUEzTXRSTHpBdDV6SmliRFU0TFdkWEdDOHlKUGFlbElEMzROK1NGSDdNbGNlWnFFY0NnSUJqK2VMajVuZ2tDdWFib1Y1R0VyaUF1eS95bFdveitZSEFiZzNUanBWVzRXMkJld1BXazFrb2hhb3VoQTJBSDVGSldvcXBPYmRJcnJnZWtucDZNZVB3SUhlM01SUG1IKzdFWHJ5QXpZWFcrZVdHTWVQS3JsYWQzVytOTWpDczdpZE4zdmVxSm9wbEZHRDJFT2t3RnVuU1RFU0F5eWlwS2N2ZDNzNk1GQlBsakRtUi9MM3JiZnhsWER5M0VDbGxxNTZ5R2hzZFJGQ1NoTTdtRElMVW9EbW12VXl6YUlOOURwMGM1dTd5c1lreVhtV3dYajlwWGphcXBJMHFRWVlNQUdPWGpUUnQ2TENSV0JrWE1FLythRlFDczRUbHFxd1RpR2l0bjJ4M0pZYmxQMnd6RE91ZTd4UkZvcVBySTJ5NmJCbG5sN2dXWVluNzVlSzZFcTQ1dGJDY2pLb2ZwbkVabXFpcktSclVsa3loZmlOQ3RDVEUweXVpS0JJanBXQXJaaDM4Q0hySlYvcndRdTUwYk9DMjU3b3dET0lZMkZHWGhJZ2htQmU3bVZxdzVoU0JjK3pYTUdzaUt5S3BCNXY3ZjNpQzVsdnpDd2R0elVkRGRxNHdlalJrTVFidEp5cjZPNTJZdm9rNHZ4UjRUUG9yWUxzYk54VFRRNXQ4WVJrM1diYzUrZitZRGpOOHRKSmp1WVlNOUNZQVJrSTBIaEg4M3JreXBWWHo2WjlzRUVNUmFqcG5QVDc4MnllRlgwZDV1aTVBMUpCNGFmQ3cwWi9BeXR2d0JwR3l6UjVZNGZLZGRodGh5Yk96Z1FoakRibUxyUHRibVhGbXQzUFhYYmh6d2JMQlNOLzBWT0UrU2tEelFSUTBIdFZkNkdJV2NpVU5DVFA0MFBPcGtKeFN6N2daTjh3UndYQXVra3FiNG5KKzQzSnFSUCtiT2RsVFdaRW9MdEJCdEQ0NlA4T3o4U2dXNUwxS2RaSnhqZGo4V0RXeVp5Unk2aUZSMFZPNG5oRDZzbWV5L3lkNDJRdzFURS9jZ1ZlbGMrVE1VYkxpc3NDUkd5emlMSzFWOHRETzlLTGFYcEF1aTZBN09CVEI5dDFDcXEwY0xvaU9xTmtnd1NXVVFueWFKWUZTWFhCcDBKMmhRcGVvMUZ6eXdNNkpVdjI4S3JkTWs1Z1lXTlpQQ1NjQ0lUMUkzbTRQU3J3UkkySFJybjFmMHhBN3ZtOWN6TmZWYU5ERTB1K0d0QURYVTNTVDNMb3dENWFKbVZ1cmVYSE9oY0ZTbFpkZjhPRUxMUFd5NjNucTFUOHk2VjNGdkY2TWNMSU1WVFNjQnIrT1g0a0d2eUgzb3Nqa0RFVXFvNXJsTFpyckZFTmNDKys5Y1NWcFdMU2tCalZtVUhoVTlSaTI4dUY4ZGFlMzEwUEszeGtPbEN3Ty92U3ZtRzcvU3BCUEg4NUhJYzdOSGZIdld5bU9pZmVhU1JRYmhDK1R0bjFJWTROalZZSGxBOUdSS2RyVThmZ3ZXLzdKREt4NVc5TkxZYVhNNEN4eDlHamVDR1lCY1Vya1dFbVJCU2wzQUkrZ2Roa3liTUVOdTRzUlhrZDBHbkVMRWdHNWR6VHZYWlpHMFB2WllWSXg3UkFNcms3SXpXRlFoZEI4eFRDKytuMlFGakFkOFA2UUFDMHE1d3loZTdYNzdabjBPSko3NFpNTUtwOHg1MGxNdG4rb1Q2Zks0UkhWMDhRTkZmVENtL3l6aDhoUUg4YW5qMFI3d2VkOVZUdGhrQ3dNYVBMeUtRM3pZeUZUN2hZdzUyczU1bG1BWi9JWWxxeEFMblp3WWFsbWlUZENyTGJUcHM5b0trUFFiZ3lUcXJJTXlsMlpPRnU5a1JiTi9KcTBaYVpzZmVOZ1hwN0Qwb3Z3Tm9OUDh2NS85SjlmU0xpakVRNnZGYzVNNThDckt3SHZaUGRaQllMcWV3TmdWUnRHeUkrSFVscnR2eEdOTnQ0aDBzbHk4a0dQK3ZuZjd1b2d5L2p5ZHlWZk9JclVDcTFhUFNFVGlMcHBMdlZKc1k1SW1JSFJlZEh4QWo1b2hsTDdKSXBwNFl1MGhWaWJYQ0FDRjlkQmFOYmFncmx4WDFlUWJ4djc5QVlvS2hEeFpSMWZLdUh4V1lzaFZwTy9zV0VtVXFNUHlxK2lkYmpTU0t5eFZNdXo5d0dma2d4YnBTYjA5SnJsSkgybWZuWWhIYnd3TzgyQjI4L3NzZmY5QnhjSzlJZXcxQk5IdUJKeDdKQnNrVVRYOW56WGxBMWZrWDVqS3Zud1BHVDF5bjBHTGNmbWpPNXVlVVkxYWVDWnBMTFBjK3htZjJ4K0RDNFhWa0wyUitaSDFmSXdqYWZtNndEOW5yRlR0RDU5VndTNFg1TUVyUGNHTnFtemFiR0M2YWtPVGIwOS9SMTd1TitTT0dLbjNLb0F6MXlLbTN4amNSTzFobjZHM1NhWGFmTEF4ZFFPRVRHNDBGM0NYOVZqdUNSTDUyV1pTS05wR1hlZTBmcUJrUEFPTHJ5eUZCT1R2SW5lbk9TNjJxNCtibU1rci9MYUxPdmNYbVR2bklXaVNFZk9HT0dWZXBic3JNREJEUWY1bXBFRXJCY0RCdStXOTVUb3dQU2NQWjBaQ3ZWbFdTSjh3bjlUR0J1N2JTV0JaaFpNeW51WU1ieXlXVlh6S0g1V3RxR3FxeGRlYUpyN0tISU1WcjJhUTA5bEVOVG5TNmg2VklSK0xGcW9pUjNtUHFZSlByWUp0M0VCbVpxU2lncTdkcWl5UmZtT015dEFCMUdLdlFRZnRLUm00QVlMd2k4M3VpeDF6c0lUYVl5VVdidmlaVnhwUWdwaTdRMEFVUCt2M2pBTkJwaXlYYzhhcnMrSXYvT3F6aFZEeDdRWndXT3NndjJYNVN2K2hSaG9JUzU2UWhoRlZEZVdvRGl5Z1JZNUpadXN1LzFLMzNlQzFwdW1HWHZ3NU5ESHhhNjloSTJRb2MrTlRhOVk1MVppOWhZRmdLbVU1MnZxY3dZeVA0Vms1djBxdXcxaE5RNWJCbThlLzhvQytJZDV5bkZSM3FEZEl5REN2ZDB3ZVFOUTdsVjFKOXlSNFQwNy9KY2Yra3RqME1TTTJpaTJrRENZQ0JqV254eUVrU2VKNW1jSGpWU05iWHd2VVprZVUzQWJCQVJYZnJzVG1kNEdYRDNTemtEYjgzVVZqQWFMTW5RcDM5SWF6U3V5Vzc3ZENKWWdXV2Z5bjZTZEE0SXlnSW1yWEhRdS9WMGFsSTdsR3JoMCsybnlQRkRWUVhwUFVhTzl5K0ltbWNvQlVoL1ZDSndrT3Y2VStGdzhwb3hUWXFmOE82SmhLb3FhMzRabHREM1hodnQxcHQ4T21lZlBMM0dEVnZOdFliQUhINkZodzFpd2ZTVE1XdGhHYkpwRzhMN0lMeFRCY1VVQ2lMdVpYUnp0ajNOMlIrcHlVWlI5L29CcUtqS3d0Qm1VSnI2VU1PRWw0SFBiYkJaWFEvc3N3MzRxU1V1TUpkd3NMSVZwQWdvd0hQc0U3QTE1WHY5UjJvQUZhbjYzY1cvQTFqN1I0cTRXSDFsYTQ1RG1INlYrOTRFM3lUZFdJSjFMU2lFamkrSnJENk90MXhKNTRUaVU3dzJyNG9XQWFxRSswS2tQTGZnOEJyVE5ScmdUdFRoNnh2UG1zYVpnU2tXMVdHdUZTUzkrQ0Jtb3Myc3grQUhLSmh0ZllkSXZuM2l2UVowaTNKYktNekpPTlJCT2ZyUnczdWVGMkFzNkFwK21iVjQyM1pPUDdxUWFvdGlhbmNlMUF3MWcweXNKdzdnaFhPREF3YXc3NnpXTEcvQnZzZGRveVVXcys3YndTSWp0d1pWempwMC92M3cxTVhOQTRXanJvbHY3WXh4VWVxUDZua1FGaEpoSmtGZElTZVJRK01mMkNxV2V6RlFlcmUvOXR3bW94Ym1mUmlxZFl1c2srS3UrMUdrQ1dYUHRGM0greUFjMS8vVGxPRXdXZTFwKzUzNFplRGxjTEw1VURpeWVVYVlCVGRwQmRZNlVhRmk0cFVmeHYwTURyUFBWcU5qUGhWb0J5UUN5dWlDMUQyNWQrbVp1Njg3SFZTdHlWZEpRTFpINkFERkM5d1EvbUhjbDdmU2krMXBicDg0MXU3Rlg3RURnTkJRRDdIL29lWEJjWERzaWZWOHR4MWpFcFZkRDZWejNuVGE4RnRQWUhxdmRYa0dpY2hXenRKbTI3ZlRKWEtpT1NLRjA3MnZxazZhQWhyY1hvSVRJa3Y0TnF2Zzh3N21QSWxOaE5MdHRqcWNCcVdnRXI0Nmlhb21Ma0dQWmNKc3VvSGhVd01iK0Y0UTlKWlU2MHJpQ3M1akViRUhZU3QrWVZoSTRKcnBvbnRFbmxmVnhJOENHTWNWOUNoK2xnZ1JDMjM4ZUhoZnVjcHljbFRYcmFDZG9oTk80Y1BFVkVYM1NoOG9jT3FqU1FaWThmRGRrRFFSR1Byb3gwY3VGdXBxSi9INVRDc1lIMDRSZzI3czNMVVFPVVV5cVl6cVJBSHRUMXFDalVpT2VkOVVDZTRIRzBkRDRuVWRJd016allQR2J6WUxCdzUyOUxuT051RG56dUdndlArcjlMWmlLT21MQ3U2RGsya0k1N0RGc0EwcTRiQlcvT09DdEZlUVJvQnlBeDhQVHRBc2ZyTWZnOVhrYmxEQkJHNXVndk1NcElLTTlYYzV4b3NuNFdlR3JlSFU3Vnh1RjNNdC8xMDNzK1BaYXBHdEk0NFBwY0dLNHROZG01RXVzc2p2eituQXpRRmJKc0pSS1NVM25UVkozdndMUCtHVXFwL0taemtEL3lhN1VEaEdBSWVZZmc1WkJ2VGpCcWpIUEpidnR4MkpsekVrWUgybk1WSk1tcFlPNmpkWlpoZ2pOVGdBbkFhekN6STJXT294MXJLektjR3c1dlFRNkNzUXNqbzN3eDNXMlZQdXhPNTNQUVI5ZzQyUjdodlNQMUh3N2l5ZCtRQ1MwTGQraWQ5T2Z5NTY5YThVTGRTajhEeWE4d3IyYU5vR0N6Vy9aZDNBQXN5dlVoVWpIaVNUZE1PeEpTb3lETzJZaTlxckt2UnJTemUzb1hTQ2UyTUFNekNoK3QwRkR5eTI2aGtLY1dHTVBOb0pWMWNZVWxxc3dxSTM3UWZORGJUbFp2dlMrQlpKWW9LaVJXeDU3Q09tdElCUjlDcGVoWmtDT2d1SzltcTZrZXRlZzBoOXRzY29oNEVZeVJuSnZGYmpPRnI2SmY0K1ozaHlCM21TLzE5V2pYSEgxYTF4VElGSmhPWkFhTC91ZlBFM0R1S3FRajRnaG5kT0gxTGQ3eTBob1puTFVDRUF1OFpJRXJpaEpKUXk3WE42dVNXUUFyMnR6SU0vM3FYVVQ5cHVYUTlTNFdQRkhlRXVrakVYY1lKWkJhL0d3NkN1bEpUcERJeCs0Mk0rSmFaRitNR3piTkR5UHBId2VCQS9EdTVZL0x2Z0lOUEtqVEJiamJhMUZBL1pNWFRHbzNab1Q2TTVxdjF0c2NOdndaYkYyQmVSRjRuYnNveVRtQytSdGRWelY1QjBrZ1N6alN4cDFjWFpoTU1jTnFkL01EOFRIQ054dXJ2OGZMaGZlb09TdHd3ZzRpbkhQei9peEdUOFJsZnhCYU5zVXcxZWo2V2NMdGRMbnU2clhPclozeExodmI5clhoaXRxeXQ2cUFBcXNFSGh3b0s3YzJvZDErUkEralpEdVFaVCsvcnNNai8yc3ZDTkFaaDFKVWZGcm0yUGJpRWpkWVdIMThVZTh1OWhlY2p5WHJSazlzVVNka2RDM2JLVSt3a3BwcjBHMEFNaWJXTzZ5RHFUOFplUVpreUxxd3ZiMWpkeDlwdHBnWW5Mb2svYXdob0FUTDhNcHkwQm5WYXVMM2wvekIwSFEwbDRuQnNNb2RSSjZ0Z2VLbjcwc2pUcDRkblNENDVvQTBOWG11SjZham9RcUJ5b0szcElUanlkUVZQK3h6Y3M3T2xrYklOa0QvVHNRM2h2dGdrTWhsRWRtVUlqQWRicng5WWt2bjZtWjArb0p1aUhnUkRiR2piQXRSeWtMTVVlTDdUOFpraEczM0N5MXhFS29BbHpqdElhcEtKQ0xzOFJGaUtvL2ZCeTg4eVd3RytJZFBRNDd0bTh1Q3oyQTRMczVXNGlNNlF1VjNJMWNFQjNIL2Z4dXd5MzVLRURJdEZCbS9DT0VPZjd3QzR3UjR5THdKZ3RYdmNZQ1A3WlRYM0luMURIa3JTZ3ZXbDBSQllUM21GRU1icFRjb0ozS1RPN2c0bmc0RndpL01qS0poRFVqR2dMeTBnZC9keHZFNS9VcEZxUGdmb3o4Y3FCV0tLNnBKOFNPcllZa1F4a0kvWHJLWVRrZ28xcGQxSzJSS2p0VWZnL1ZvWEV6d2ltL2hESFo1dDBqcDVZRVBYbWNyVk9oQ21NWlFsR200UmVZUWpJU3ViL1lVeHhNdTl2cjUydUdnc2lhc21tUndrSUZhK1hRYWM1cTZubUV4MUl4cDZzaXJWM3A0MlpadXdGaE1Rd1FaV0k3eGtnd01WUmVGQ2xpNUtWeUQwekxkNldCeitTVzYzcVZRdFhqL3hINGRpTnlZMStmVTJ0emVCVGUxaE1YR1d0R1dUWE1DMzR6M0crenRVRHlwL040UGJZYjF2d1FsZTlnSEY2S2RRbC9SUXNXeS9ZV3JtSHc1MkRsYmNpNGdHUlYrWGJsSmdTZ3NJbUQzWldGV21FRTg1T0xySnl0NncrU25ONW1jdWdPNk9yWDNkazdESkpGL3ZSV3l1Lzhvd1ZUNjdpU2JHeXpQR002aFlxNElOT0F2cGwyOVo3U3ZQUXc4b3BRTDE0bE50WHFqN3pnSHVCL25TcHh2c1NCcXVBc0swM2RkWFVqNSt1QTB1YStNTHdtN05MNW93eDhwMmFBcmIxUFdVMjBzQW02R2hHakl2akgzWGQ5eXY0ZFRESzhKVzZBMDhpOTViL2R6NlUvMXozYitiM1Y5N2p2ci9CTEpKa05sUUVFdmJoSVdSbFVhLzRCZmNwbURKMEZZSzJPZ1BaQmZhb0lINnV3ZlVPeVZreEUrUSt2MHhNcEFvM2VVa3l5Smo3Umdhd1VRTTBFUSt0RzYzUWZhZHB2NFVWY3o2Mk1jTjFQOTdyanQvTmViTVVpRTZrS0Vra3pGOWVjWjI4ekJ6ekRrOWpCVFhJSGQ0Um5vbkNEUmJiaVA3KzFyKzF1Yk4wSzJaWTlpSCtGMVJ2OGV4OVVhUG1lYkEwN2lXZi95Z1ZLb0hoYi8zSGlYLzZCOUN2TjZhODJIUFFSdlJqNU9sSnlWdE5lTGhBdEJnV0hUZTU2M2lvclFTS0Q3YU1FKzd5Rm1seVZwYm10TGYvWEV6OEkvN0Nvd3ZmWWY4TTJwSWd1c0NBWW92Q204ajlKSFZMTExMbnlOY084d3Rtc0RRc3FXcXl3cGk1dDZlWXlxOGpPL3ZsYXllc3VQR2d1R2YvZUcxZlo1WUluc0l0SERydXFTRnJaTG03MGF3a2JRblVUbEhndERpQ25XbjN5ZndGK0NTZ1N5aGRsR0l3d1VOMkZidmMzWEhyc3Z5ODl2TmFGZXhITlJJVEJDeTdoZUdsQjRKUTZ2c0k3TlR3cFBlK2pRM2EveW4zbWRCRHkzM1F1U2dtRFcyc3ZwckMzUTIxWWxPeVV3VndSOEphQlRrOGJmRXJSWnFucGpKbjY5S2Z4RVVWZnJLcDhKVGRXNnhzWUJnY3habTlUT2J0cldmNWZRSmlxNytUclNKc1YvWWt0ZzhMUTBzbExPYUduTXlRK2pzYkszS1FhMjRuUXB1bU45WjY1NDBKR3hqb2dHOExRMlpkOGM3UlpxQzVHeHYzZHpKb3pqQUlTbkJJY1RsWWtKOUNvYzJXUjR4QzkrV0JXZkU5WW9Oc09YNXJ0US9mbk01ZGVmTVlxVDA2QmdVd3drUHdGaDlJMjVvd0NiSWlpRzVPNnY4NXhaYm56UGExRzJaejlWekNFQmkwQ0RHcGUvc3lYT1o5SmFMSGhDcktWZFFkNmlCa1BESjdpY21vVG9OcXdmcUNSS2dXZUdXbVBzakJDZVZKMitBUUhNZExFYWVVVWtMQmdjK1JXNXFSWnZMTDVTYkNYYjVGZlVESitkTDFQTm9sTWZiSHpONytrRHRaS1NDRnZvNHhlL21rSFB1K0FKcGk4aDJRamt5QUJQK0prdDJoVUhZYUFtMU9UTXRmbGdiY0JZYVRoS2ZTMndwV2hBT3laRkwxSzZyRzIvTGU5RXhUeVQ3ZmpFbmc4Z2t6Ukx2THRmQzdCZmUwbjBHL3JhWTBRV1U5MTgwNk1nck5XdlZNRkxJdUNmYkN1V1pzdjBKNXAzZmZZdUNmekNTUFNyeGYyeW9HYWpBOTJzM0RUU0FqRjdld0JEbHZ3U05oZEVHdnVCKy9hZ0dXR1U4WUthdU9UL1BtSDM2WDFDekFOMlcyYWtPTmQrbUxjaHMrR3ZyYVBxNk42T21CRmZyWVIvSU1WNXQ0TVZPeGdRcUphYklsSXBIVWpERElsaHZldmdDRFJjMStFanBJWGM4OXdJNk9IbllQZUIwT2VjOUM1RUZuM3Y4MkhvMWlaN1VrczZhc3o0OXpJTjRmRjhDdU95VXo1L0F0RWhEb0o0TjJHTnV5QjVYZ2xPVjI3cTVGRXp5K0pMV1JmY2RNdkxNZElHZDh5MmNER0RCRmJUVHBldFZiTUhhTy9WeDVvUW11MjNkYzNTenVqSjlndjhuUVNPOUpLOVFJZW0yUVIxakVjeG1YMHhiOUNRS2RXM1FvUFZ6UGxNL2VDbXNweGNteXllZFhkK29hdGxSZ3BsZ09WelA5U0o5eXdVVkhuSWlacTF1YTlOTTEyclFGV1djeXQ0Q2R1eStDSHRPVElQbHJVRXAzUnA1bXdSanhhSExRc0VLWHNpUjk2QkZISjRtWFlod2M0SWRiUVEvcUdHQUtoN1hTUGVGWWhEeERRQXBkRk11bEJySEduLzQyaXpTQm1EUGsxcTVVdFFSUnRhTlNseTdBTHQ5d3czMWhlY3l3eGUrR0JCN2pzak9iNnIrN2c4aEptZENoVnZmUk1BWEpSOGRKdStuQTlSMkJEWlVRQ2d1N0h5UE9JUEs1YWpGU2wxWUlBVm95Zmx6WHFId2tWTW9NWXZqb05MRXZNVzhZMGMreURlTVRQMnV4aC8zTENremI3U0FiVi90Zm5XRG45U2txTGR3RllYZjR4eDhCRWU3ZlRnK1hJOGRUbmxPQ09kWSswMVhRaTdHVk05MzlUYXhvdURwOE9TNHhncWFZbVpkUnY5WnVEelovVHp1UmlLai9sRVNBRTA5U1oySE16bnhMZE1WcUVNc2x2ZUpFVFZIUjdjaC9Jd1cwektKWDR5Z3FicERCQkc4dDZSaG1PbzFtcDhmUzRCVHlTOVR4eVVRaThNNjhmYUcweE8vNjRHdk8zbFlTVnJaeG4yUlcwalJmenFUTW5qVzBFUkJacld6cS9hNmZZVE96M1JVWjhrdDMxVWZuUXI3WUFVNFFueFRvNmlqMVczakkzOHdXNmozK2hpSkFpdkNpQ2M5b1lNWEhWVU1kNEZ0SEVOeXVVenNHdkREcjFNSWd4OFczVENIeWMrRGt3elpuempaMFg5d1N3emZERC84UTVyMzVDRm5IRGZIQXFiOXAwSVJSNFVZNEsyQ1d3dnludCtNV3hWVW80ekFmYUFPUk4veXZkNU1uL2ZUQkM1N2FzSGEzREVzYWZnTDZpR0FwTUQ5OWJsLy8wb0NDc1RWejFVYjRGUzlZdjBJdkQzd0xsQ1pyUEF1STFyMVpnREYxVUZ4cjZoMkZmVFdvU2ZSbExUQzNya1RRWkR0dkhsTVhKWjBaVlVGUnlaV3lyeHRqanJ2bnVhSFpPTEhNTmZLT01TU3Y0eUpqaDdOcWVzNkRZL2JxZW9XNU1Dd09yWlhEd1BBcUJZRi9QbG9vSnVPa0IzNGhWeFNjdXd6L0ZDV1FUelNLbDVEeDJyeGx3aXErZ3lBckVML3VrRlBqckRiZnBUbDVNdGc0VVBpNmFhRjMvN0lKMXpONTgwZlNkdDdMRFBtMXgzV0pCc0hQdk5zWjIyWGc0ODZGN2gzMDA2NERseURMMWtmODJSajZnMTRvanFwdlM2SU14Y3dDT3k5Qmo2dXFGQVR5eUNSV25PYUMraDAzSVoxd25waHpmSWtOVHIrSDJsLytuamZ0WjJrcUJuTlpodU1Xd3FkT3dIbFFRNlpReFpqKzFCMTkyRmRveTdVMVlUdElhRW1YcDFaV3FIMjEvTlBVaUFUbDBDcFRGejJRaGJMZmxIVlp0ZENaMjV3RGtSblZ0YlVxZnVhVFk4aVFMbjN2UFRIUTZJcjgvaHlYQUNMQTRsQUlza1FOUEhqMkJzNTA5cTBKNzVUaGZsWjRLYXp5TXh0bWZWQW5tMFpBdnBjV1NXVjRPUGZFU3ArMDZsVFZJbGF0YTh3VXJTc2pHRmZsYUt3Y0xHQnVxSFZGUmo0Nng5dVVGMGR6MWpRWHMzY1kwa3BTelVHUjVvK20yZ1hZNU15YWxWTWN2b2tEcnhBMndEMjN5NHFacGdMNTlDU3lqNFJ6czVuK01JRHpiTGpFT1RsOVN4cUV3Vm5TeEJiMDg1VHdFTVhVWXlvUGZCR3NpUTlZa0tmNTBEWUYwUDdBUWdvb0NuZE5xUzNxaFQxaWZnNzRTRlk2enZNNHRCdTlrZUp3Q3JzU0lCNGVlWng5Y1VLSHVYaGVndktxekVPZXA1ZVZmOHBQb1UyVHN2bHcvYjdEaGNJUjd5OEVQdzNyQkF0bmxOOXNQRUl0TlpjZjhSSWFTTFlnUXJxTDlKNVIrV1pZazNzeW41b3o4T1p6cDQ5emUwSGhqNncrcjBmR2NIZXlxa0hCZjFqbGVSUWczdmpyZWVhbEdHb1JKMjE1OExoYzdYN1RoUFBZam0ydzNOMkd3b1d1UTVtU3NpRWdZbENnQzY3ZkVrQTlndiswMFFVdmwwTFFKVXNXNU1ucjJaOFdURjhqbWJIRUdneFBsdit3RWhLTitjNHJFMzdHUXJQd2FDcGtiQlR6WnBVNHVTd2x3ZUVEMmxBY0QxRTY4UTl6NnRiNTF4OVdHbERRTkhqZlVnWmlDMHE5TlVIa3lha2dzQ2R2citsUWczSXdaeDlnS0l1MmhhbU90VU5VY29mMkFDN2VQb2Nkc3RTbFhFTkZrZTM5dHVLTCtqNUNqS0tsc2tZeGkwdU80L1dwdUJ2MUJKdUJ2NzFBRm9zS0Z4b3YyMWgzcXgyUEVwaWJzZkYzRUZKalBxYmEwUC9RbmwySDNjbjVrbTE4aERGVWVSLy9LUzVOemZLd3RqdXAya1J1MDIrQUN6R3BLbC9BbC9VRCtEQUZKTlZaTkx0ZFhoVnFMVGhIRkovUWt3bnZCaWd0QjVCNXpsWW9TT29TNFVNdEE1R3RKVzFpcE5nY0N0UXlxZnpHTUV0WXp1WSs1YUdab3NUNTlSVWEvbDdrd3lqaDBJY3BPUS9FWDcybSt2T1o0SWIxd2dRSm1Fdmh3WFN3RkZuUFV4UU9VOURHUjFZRG92cFg5TTh3YzlzMlRjRXAyTGVqbmdIcGZHekl3WVNsUG5tc1k3clZjQnlmb3hMWFBKOEpTeVBHSmIzbk5yVDNRWkxLdDczQ3BWbVUzYzQ5K3dIQUxSRytlT0RMeG9DQTlhMlRTWHNVbFNEUlhnekFQODM5TWQyS3dQODNRY3BsSFduVWZyZlZDK3NJQWtUQXcwbDJmdDZnVHhKc2hzQXpySHp1NGx6ZGJjNlY3cVNQZUZmenB4bGkxcEFTTHpSdXVNQ0FTQlU2b0JVSVFKRTJHRmpkbFJyaTdZZEhQWWRUUXFDSDMwSDU2S25zaU80eUNDeFIzdFQxN2VKeWFTK1JjYkp6NHVBZWRKNGo2NVpheFFYM2hjbGhncHo3TStWekp1QU1jUFBTR1JpaDhURGFHVG84dmhqWnM2OW1LU0pLZDZORGlpbkl1ZmdpL3RjQy9vQW92T1M1UFRkNFFyZzBLMGhWQkJXcjdrdGFFU0R4ZkNxWGMrMmVwT2JRSHBpUVg0Znp0NVorS0VzSUJoVG15czdWTThCMlpIOXI1Q01LdFNTbnExL0VxbWZXemszZ1ZseHNIREI0aHlOTkk3ZGFaNTAwd01YVWFnZHk5TjBsVEl2OGdnTG0zTE5YcWU0Q0NVS3ppeEduUndKQTMxL2FwUG9rYi9DOHExVHhveFJ0VWphd0Z4MkZWQnBOcXVVRjhobkZPTFI4TGtWL3FENFZZdmRGWnZuZTltd29ueWR3Qy8zWlpKZnRVZDFpWkpVbisyYzlrdjFiMUY2U2M0bnFpdG5weEJNZDRMd0lUTXZmVUNLMmFsVmw4SDhsVmkwRDhEK002RHNhcVVsdm9Bd1NRTTdqUGdoa2NxdHVGYlZnUyszUDJwaE9VTDhJT2lrT3RFWjVBbVRncFMvN3lmMGhPN3h2WnJNWEw2Uk93UUZLUTMvYSt0alMrYUdUMjNyaHhCdnRsQkZrQnBOQ1RrTWJEY2NxMVNHZllseUE4bmZXSWlJL05lamxhU1oxNzg4Z04vcmQ4bE0ybCtZKzBEZFcvc0hha2NjWTRkT3UvQW1QcXpJRDRwcm1ZQVFHbHdlbmRHUEJVVWd1UzdpcytMT2VMakpIa3h4ckI0L2pBR0R2TFNKY3J4M0NuMmNIRTBPVVJTUjVmUXcrc2dOMkd4eVk2cTZpeXlnNmV2bnJ0Vmh3b2MvZkR2NUtyOFhmZXk5NzFob0ttcFVZNnNWeDIvRWxndWhiTG1obVhDcGc1ajJDTDZDT0JWRVk3NC96NU5hQW1FdGxWcFVWbE1ucHpkNmlkZERLYWxJS3djR25MSVN0dzZiWDZHVGh3ZHZpNFVFUGVPRW84dEY4TUp3UmZsZDBZbDJpakdnM00zWVZ6UzZFb3FqQTZhaGpRY0JkVXZoSkFhbnhHZ3ovSDR3NEFjL21YT0xpMnBzTEp4MnBZSm85dGI0UmxJMkErNVFieVV6NmJzTmJKTVNUMDNNSjRoSnlsdjRzeVBMNUhtMkhtSjc3Ym15d1BrWWs4Ky83WTBFL0ZsY0pKSm9tamx4Y3Y2YUswb1E5a1RFM0Uva3BlbjNVd3ZMMUlWaEF3Ty9SYjU0bXorS29oeWVJaGs5UDRnQThQeVNOc1VhZm1yWFpOZHh5SzhzWHBlZGRSMldjSHJGK0VHMzJGTVZTMXhRcTdnNk9WUnY5dzdHL3p3Mm9uNENWM3p2SkN3TzY3UTRZQ2VycWh5SHMxdjkwRldVdTh0RFJRNkp3RE5hSGo4TkVGVU1FUnVhT0lwNUpTU3pHNndKUlhuSDlOUXltZjZGTHhnQnBRMEJRd3lPRTFwN2U1akdmUVAvUElrMEhzVHdJanpVaVBwdUlxTHpjTVVkNHRjWmhTS3hwTFloVGhOWnhHY2IzTFlvajBQSVR1eGRnb2Ntc0ZITUtKbFdsVHRuQTQ3YStOTFljcmh2R0RwejdOZnlPeW9vaUtBcjQzdXVBRTljemNicUJ3VkYvWVpJOTZTMmlxSG5QVlI2bEd2Z2IxcHJYUUNMdFlUUUwzcEJJN2lHTE03U0lRdGNpYjJyTmZJV1hHODU4S0tyZ1o3L0JvRUI2VE1SaVE9PQ==",
    "api_keys_response": "cSs2UUlMVWc1MTVqWUF5OWt0cFROUEErQnV5L2JrUlQvRFFtRVRrV3p3SE5RSXpsSGF5M3k2L29wOG91bHJ3bFZURERkaE9RVUxldGVuN0lPaGJwd1AyNWVkUFRjTTJERmdSdGJlMElhbG95VzBYZllJa2xreVRNdFM0K3NFUi92eTQ5bDdsTnczc2NsaEJWT2psRGp0bDVPVWxONDVoUXlJSjRVSURMRnc2RUQvckdVWWFndkNXbXgzbWFzK3hSTmVQdDRMZ3paakV0bk1vTTRqTFBMc2UrUllseDdSQU9IcnFzQzNvWnFoTDJkZ2hrY0FJYjlkaUxoLzZQaS9WM3JVNzdHalQ0S0hkU2VuSTZiNjRSNDZwcURmU0QwSTArdVNtdjl0U3Bmb0tPUWVMVVgzTHZoVUU5YlF0S21Fc2pRV1dxT05lSGl4akhyOTFLM1k1K1NScmc1cHI3RHhwLzdUS3ZHWjI5cDJuNEJBdlBHMitkY1owald0OStJSVFLVVhiakNuSTBYRDJtMjBDZEJ0d0E=",
    "dls_certificate_token": "UEQxY0tjRDM2VHY2QU4vK0FRQlYwampKV1dkRmVrYnN3OWJaSWRVbDJ5M05Rc3ZreTVvd09mUFRmbzhueFpGZnRsUHA5SVo3WFhST2xZeGIxa2ttTlBiMjVuOXc3ckwyV3hvRGt4d1lJb1lndWNYdXZ5ZmVlYkFsZHhyZnpOdUhtOTFzclFYVGNtV0xvb09tOE1CNWxyZDRzVnZNYWE2Wk9wT0puMTE2WXNTQTNIZnJCZy9qdDNmWkZsMEpvRVI3NGNrNTAvUXREbzJic0RFVFhoNHlpc3lvRWRvSEo0L29QRm85eURhMitoUFhocVArdHFMdS9OdzZBdnJuREpxMG9NYUJKVU11RGhTc04ya08xMWppK0lsT1pHRGhsU1BPZ1JjNk9LK0QrSkN3NmVKaEJRTGNUbjY4bXozYngyZWRLS0RQOWRCc1NjYnFlemJUK0E3ajE4N2hEZkFjRUFDcWtQa1F1SDkzbDVXNS83U3dTZ2t3VVYzUjVkRTJHWGlRRUNOc3cvYzZHZ3dib29STUdjaGVvckhyajZpTzkxZjc0S2ZESUFPTXRHZWRXdmlyQ1p2blFBUER6MisrQlRVZFFQRzU5Y2g3eWlxTi9CUGI5MGRrR2c0U0Y2RlR6bnBicVB5aFR2UjZveEp6UG5aUWgxN0l5ekxVQk5vY1ZUSGZJRmRwbEFPbUo0MWEyRmpSRndicEdMd1ZGaXhDRC9mdzdNWVkzN0hRWkJLdStxTXFzRnl0WFk3TWIxOUhweVAwVVhvVTdvaTZNMmFMN2FnSzR3NDhmU3JTWm9lOGJuNlJEUkdpL2hvWmh1aC9VRzZuVURIaVlvdVNsYmNiUm0vUHN4aWVVcG4xZkFka1JPTThEQlFvNDhzL05hbTg1bDJzOGJKN3h3NmYxN1lvQnJEQTBMVXc3M213akJOSFhIMEVScHA2cXlrMTB2d1hEQXFWeDcraklERlNNam9vWDdvSGZUZ285eS9LcHd1KzhxaS9CNHdyU2plbWpub29xOXBEME1ZRUdlbTZtdzIwa0RMSXo1a1A1ejUzT3NFL3RWWXVwdHJFa2RLUnBlelp4Q21NOXQvVzd1MytxR1dVemc3QkVDc1NjeWNMb0J6SmJZRG9COCtOczRBaHlnR1VtS3Q0WnpyK1VhN09ucWJTTWFJOTNiVlpxVENmMlhFMUNTZllwZi91M2x1SlVzbUIrQzZTck5UT1hTUGIzM3UySVB3TGFjajZwdVhHM1lXYWQvVHU0MkZrWVhqMmpDb0dzVWkveDI3aW9NVEc2N0s2enUvenArU2Izb3ZDY1M1VkNNVURqOHBIcmRqRGhhTk9VemJpSXdlZEQwU3VuTmFzWlRmZDhOcEtJSjgyWkFHM1BxMTRWbDhHdGdKcC9uMWdhQmw5QzBqNHprTFpHdHJPazRmYTZpRjVCbWl1cDFSVlF6YjM2d2xyZ2tmV3U0Zmd4UUlwZ3ZIME9XZmFXTTJrL2hrZUNUZnBUTjFDMlA4akc2RGxjVnZLamJsb05yOWc4cFhKNkJNWjZUUE1pRzdnUkZ5UnJVVnNpZ0FBVHRrcVVyWU02Mi9pS3JpM1lpMGkzQjloRXZKTkdHMXI3OWxuRDZMV2tQbVdIUnNYQ2RoQjdyblhPOGJQR0hVbCtkVlFIKzN1emtmZGtKSEhhNVVVWXMzZDRpU052UE5GZkxaUXQ0NkpRVnlpbzlaYk02bXMwT0N3eXRyM1JrL1ZSUUU1alE0dVlvS1ZqeHA4YjJocjJzTk9ESlgrYUtITDYrVXoyNkN3V0ZjVndLZ1l5cTM4aWorOHh6NFQrNURCYjZqT2lveFJJeU1XMmRYYzVSalJXdGdOZnpaZ2RFSkZXRjkyWTJBZGlQODY3MUplS2pYcktqNlJVc2JCVWdudHJHSEdJQ3RSbFRPRlcxU0JHRDhLR1I4YUJ5Tk1SUkx4bFVzdTBEcFlHNkREOS8zVmJocGR3dGZ1T3IzU2dMREpqcHB2UXY0dXBxUFFXK29BaDhSUVJGVHI3L0ZUaVZhWFFZNHc1RXJwcDYwSVN4ejF1dGdrOFl3Zk5aYUVPWEo0cDJBcmhDUlMzMFRyU2hvdDBFMTE1YWkxcnN4SVlwZ05qZjJJWTBkT3V6cnBEbWFsMkJwZGoyRngyZmNMTlNQMVhrM0crc3N4bUJJdDg5NkJNWUVxazU5MHBqcGpUemhuSEFhWHpMVERkS1JPRlJVRWg5T08zSVplRzRPdGVQTlNhdnFpWDJJdzhQZ2gyTnFOc3FuOTE5Z0lPSnRkZXBFdURBM29nTzhCdGw0WEtQcURJZElha0w1NURudC9MaWpVZW1BU05PRjR2bWk5WUc5cUFKdFJqbXhIbERXZ3BkSDVwSzVxcllyTktmODlDR1FUQTJzcXZyb1lFQVJPTTJZQ1QrSHp1NktkL2VXbHo3ZUdudUo3akdKVzdxTmFSdW43NDZWY3E2NllleVQ0SlIrUmtacjlkaWxhWHVyc0xjQWNSeGdIUC9vV2M3dzFoSTdrTUV2UnlJbUJ4WWhYWEF3b0ZOVnl3eDZDSWNlRmlNaWo3ako2RS9XL3BaNGtXN1llL2RDYko2Z1hKOE92THg4Y3RjMEdseE02Z0hFcHB3K2RnMVJtVGQ4dVVVNVE2cjJuQzEzbGlNSFVZdHEzMGx2bjJueG9CRFJCSEJhVXlhb2VtTFN5S0FKTEtSQnNmSDRYOHo2RmJhUkZ0MWF4MGRoRnM5S1JhOXJGSmQ1amNYaHdSb09MQzZlZ29uNVlaSURlL2JmODhsT1F3Y1hxL3VBQys3bnV1amRtR0FoVktOWVU2aGZWbFpTZmwrMDNjMEw1TXEzU2FBTWNrTG1Ya0o0dHFpSUtWd2k5UDFubklHK1Bha0lTNFVOaFhwWTAwMkVGcTFWMmlsRGFkcXBzNS9ob1AxRFE1TXZmOWdTRmwwbEVmdFRxTklNbWdYeW5rUW81SmQyRlI2MzVqRkx1a1hSWlE4QUI1czY2aFZaNVR1czgxQmt4b09KMTNtMGZRUUF1VkVncWFZaUtjRm1qMXM4dUFyVSttRm1jQkIvdmg3MUY0bEpNNjBUV0RIeEUrcnlxNzlveTRybTMxSDF4MWgvSDhhcEJpV3ZCdHJsQzhQYzVPbVBzNG9rZHJhbWtMdW5ldFJSVXJwY3dFT3VLWXM1aExyQmlVZEtlSVRsNGtvWmpRR1grZHg0Z1p6TFZqVVBPdzQ2MHhUemNNb3hiMU93UWVlanRXb21qcDErYU9wTk5LNlB1MTY2NElYL0Q5cUlobVhLblJuY1AxVVFSR1NJMmNYMTdwY1RkaTVLMWFKWDFjSFZxUklUN2hoMVdqcUUrREtyVE1WMTUvZ3hVNzJNMlIwK3p1SkFzMFY3VTc4ZWU4anNpSE1KQmVqMHdUaUgxK0NQRThvNVJwcXd1OW80ZS9ITXlpYStmTUxiZEJpcEhEYm1NV1p2T2dRa3dmeU5sZTZzMWJCZEdtblZyckNFTmVGMVJhY3k5dFk5dUJMV2M5dnlyT1A3VHZsQVFTRGFlREY0bVZPK01QUUx5NWhqVlNWbitMbElsekxQVTFzRnpGUGsyWEFhS2VpN3hIOWZWYnRrYjdyNEdZZUxhQVRQaDYxM2NSUFlSdkFaVFMxVG90anlibmZGdkpmYVdjN3kyWHBaY0padFpQY09JR1RMTEJuM2hscXNlUU5sNytxYVZzTGNVck5lUmhSVVBIL01RQlh4YkZkaTBVaStsalRCZUZqNjRrSzNsNEkwOWx6TDYrcmlOdnFHZ3pjbTVDVEEwbkczaTdpU0VZZGhHN0ZEaGZ2cS9jc3lkSDdLZ1VoVkt3QWFoMlRkWW1meWE5RWx1S0ltZDBZWlVIcFEyUTB4cnhEbUt1SlJXM0pUZTZqNVRidTBxYzZjanJJS2NkOGlkZHNjdkdSREp1K3J5NXowOG1lNThrTEthZnBnUEg4U01keGxkZU43bEViQ1N1ZzhxWi93SE1JcDdQeVZLZ25wOGtvMDdpaU9IWkFRM1B2a1RJZ25KNnhSOW5PMnFsamV0MzBNVkhaaWpPdGUyTXF4UG1JR3FWUmRYb0FlRG9vM2dhRVpwUUREY2xsTHIyYjdJa2NhZTNSeER4aGhKQmdsVDBUV2Z5czJ0bUYyOVcvOHd2ZnIvSzZrRFJuTjBaOFJPTmpTYTdkREVuZEY3cy83VnJlanpKRU1SVDEwQVQxemVSM3NncUpxbEsvbEp4NlFJdGVsNHlCT3hwdjBwK2ZtZURuVDZ4eWtMNkc0ekx5V3hTeGlZc2dvR1NRYy9ycVJNTDZnenF4aS9nMWFaakVUV1NtM1AzZTJRQWFESTVtN2VGbWpDYStJdndTNTNMQmNZdm1lbWRSL0kvU1FzSFkxZUxBdDlISm1HOGxYYnpnNFNYZjd6QUZjZzhxQ1FNM2ZhcmVHZWdONTdUY3lEZ252bDdnOG5KdE9hU2NYbzZLU3NUTXR4QlhYWi9BcEtFZGxpdHB0blpzMjZxaklwZXhycEVXK21DZERreUFCOVdLejBsbmdLTGtNd1ZaQXdRVHJyQ3JIOStNU3o3QTE1SDc0Y3FHUzBqbzNpTkRhRlBLMER1RnlZM3RjdGMzTTJqNHlRYWdCMWxhSlpiUnEvREx1OFpCVGJ6TUpiMjZkOGlVaGtwclVjL3YvWjVYeEltRlA3TlBlc0kzZVJOeTdtYlRyc1FLRSt4aXEremtwRVdodktWRWg4dG9jbERDT0pQOC9maHo2aFdiMkIxYzYxQko2K2owazFCWWJyMEJaMTQ3OS80d1BucHFPbmhxUm1sUGdKS2pueURHenRZU05Gd2VhSVhQdUJCbWJSVTgzT1lJYmF3VlB4T2kvVHJzRVlGd3N2eFYwTVNlRXM3OXZZb3hDblZyRUdiSEdxejBuOUQyYjVEK2MvdDBlbUIwTUc4clV6Y0xwOFlHaXRsUFhkWjFYSnBvZzNTZ2JRK0huc0tOaXI2MXFIc1FiaktWUm93N1RWR2lRdXg0YWFFVXovcUZnUGcvUmRNcGZUZHBNNVpHSXZhWkdUTkpFU2Y4OU9NOTRYbmJwYmZWR2dzY0NPN2NmT2owRFhHS0w5SVpUejF0YUM3MDNzMVhId2VTQ29aS1FOcDVkblpFZy93S0tQeFdLTDdlcVdzdUt6SEF6NUYyL0E1K3E2dkZ5c2ZodDQ3VTlRdnJFaCtITUwvazZhdHlkbUxpU2JVS2U2RFREVzRoQzZ4WXFUajZBczJlOGdnT2NSNzNBZzdYbThSbzFram5XWmEvK2ZGb3VkaVNPNnlvV2ZId05TUDFaS0s0WTUrNXNSdW1SU09FSk05bUp6aEFuRWwrVXV0bE1PRys0ck15cTBQQnVQNkxTTlZvdGVrdHgySERDQzYvcVI1c3poNFhmTmFKMTNPUG1sQkJad3Vvbk84aGZIbXlIbXFYMi82a21wT1JzUVg3RVdsM1M5MW9aVHRpOUQrenhLa1dYcXVpMjFhUlFVV1FJbTNXbHRKeWs2VHJmdFZHWDhmUGt1eERNV0VDeUNtbWZLQTBEbFlYaG1nMk5HNlpRZ1dMeEdHdDA1TmpFeCtFbVR0ZWRQZEIzSkF5eTRHVFNIT2RCYXVoRkVZY21IL2t5T29Sa0d6VGhtTTR0M1hkcGVEaTlxbGNLZXo0dklTWDJ5QVRESzhmZ2VHRWh5UFpTRjZIZjhJTnRqaXJ5aGhDNGthRzc4TlRsQVhhS0xweUpaYko2NkQrNVZrRDF1dFdkWXdRaC9mRUFOSWhyQUZwZVlzTTNmTDZjUzhINDV4MkpDQnQrTTBOUk1pcG1SejE3NGJrR0U2QkR3Y2hjUHRYcnhxc2g3Z3ViYXE0NExJdzV3MkxKU2ZvbW5ZOGRmMnZEU3NWK3VJVm5XbngySFYwUmtkNm9KRkp6Z2dhRi9lR1R5T0txL2pZdTJCd2VlbS9XS21KcHhmU0NrelZCOFdPM1ljTnkxQ3VGM1NmaFc4WDdPeGdITWYxS1VTMVJ2WE5kd3VjNjdQU09JTDB4RS95RWV1c2tiYlRYMWl2T2JIU0VuVjk3SEZaU293RWxrdU4xRkRUSFhDelVQY3dST1lYa3g2VWhmdFBscjR4RHlRbWxhQ1NUMW10WERQWU83c3lKNktpR04zb25TakU2dGZOUUZTUmh6Z2U2RkwxdURnUnVRTm1UcVVsMkltb0JNY2VpODc4TGUyVjcrUmM2MkNIS09oYTZaTmFKSEpMNDFPR1R1cHQ3cDRCNnJRalJlcHMvZ3lsZHVTUGVtK1ZGSnZRWDBtWXdkQVJ2N3pSdUN4bDhheGU5VU1ITXhUamZtNXprZjJOS05wSzFqNG8wc05CMTAyU3FjVndES1hLNWZGWGlYdUtqV256Z1M2bGlLQmxROGVXL0E1QzZacnB5T00rd0xxdGhpN1E3MUJLTFByclRuSDQzNFBTdjNHeldDZzYyZmlwaVlsZUtrdmhqZFBEeEJSdkh0N2c1SFhHVit4RGZuajh1M1JLYkl5WWwwWVAvTnpzVS9WNEJlempqelMwM0NTdmdzRElWMXd0TTFuL1hjcnpDdngzczRibHBLRFhoVmgvUVBHZS9vZFc0V1JWYkJ6d1VyY2ozOG83UVpxaVhJZmw4ajR6SG9OcEtYczA2SUJ3bThPWGQ1OWZrZ0tBZS9DYXlva3BIM2JZZzRpQ3luOFR4SjdlUTNRd2JmTERZVjkySkt2ZFY2Rzg1Nm9hdE5vWDRka1JScm0rNVkwdDFZY2lUajBLdFhDcW5aM1ZTcWZaOTlQdmJNWFdxUHcxK1NHYlhaU1dsU3dWSWVUYVJBYk4wRFpXRHFGbWhxQkVPWC93aU5HNHpwYjVnZmNuaUhxcnhsR3k4V2Q4Q09EZ3c5QS94aVd5TTgxaSs4SVRZRzFtc3FFcGE1SFRLWllwdEN3TWlpMHhPV3ZhWjRXQ3VVamcyOGpsSlkvdlExcTM5UFhRMFdvakpIaTVGMFkwYWY5aldNOXBKWEpKbjFOVVRDVVVSNUdzNjVPREl3OUtINEtBZUhMR083am5mV2NqT0lOU295U0lNQTcvcWtXd2Z5dXMvRTFvODBGbUl4V09yMStyS1pwcjIvalYrdTdGUkwwWVE0SWE3TEZTRHJFN3c2aDdKNjdBWDJNK3ZEbTRZM3RrK1lGaFhobVBDVkkvTWNpYkY2ZlArUzJBWHFrdWhwaUV4Ti9UbWtiZ0N0M01COEZYL1NSaGpibjR0cjk1bmh6cnJRU0Y2VkNaNDkydGpIbDRIY1FUaVYrRzNvNEV1ZEVkcDhIZ25mam91QjFyNkR0UUdCNklWZlcvMjQwbWxxek9pWHZnUmVYbDdLNy8zZzJFRE5uWnlKRXZ6aGlMb2ZHbkhhR1FQU2VtVGlSdFN2Z2l2SEFqWHBLbytYME9zTFppb2xpczh6am5VTlVENXBTRi9Ma09YUDRLMlNzMkwwelhDM2pDMmpsc0lBeXoxMjA4N0dZamJpRGJ2Q0JwMnVJa0p0N1lObVJReGlQb3hvRFArbWhUU25hL2cvR2VScUlJK0tMV3o1NWdNRmR2WS96UjlvM1JEL0RwdExDbyt2ditGVGRIaFU3cldVL09lSXVqd2IwZGFsSUU0NFdvOFFYaTl3R0w4bzRseFA2NUoyMWFoSUhPRHI5M01kNUxiT2d6OFJ4amgwTTllTUFLZGxJYW00TmxHeG4zSTJnbUZGWWlWanJKdGNLamdUdGMyQTBqUVVMWTNlN3pkT1BFb1FsYXRvYmRBM1hwMElOUUYvNEVNZ054OWNya1RqZVM0VnRxWWFESmM5cVY1STAvNm1YZkoxVnU1ZjJRWmFBY2c5cEFtQjd3WlBZVE1iQmRRaWR4a05QaU5GNTdIVE1FSTZmS3J1RG5DQVVmN0tSNEFGZm5mTXNQcmVCUUFkZ0hvOEJGSHl2NkFWYTlKUDNVdWl2T1Y1R0ZVdW5XQXFEYlpMLzFTaS8rWGpwbFBoZnJaSE13UFB2QmFqeHVMK2VCYlFxdDJxalNyREdoVGVJZzhPNG1sTXVJWFFjZE5FaVh2b0liSUQ0SktERDIwMHcwM3NJREJ1cGthamtmWGc5SU01eGQvVGpsaTdSTWR0dUg5cHVHQUFVd2tkRDFvVWJPa2dpTnhORm9YWFdudExSVEd2aENIUTFlbEZ1MGhIdlo2S2xDb2R4bmJSa0hHc05BNjBNVU5CNmMveUYwMGtMTVNLZURTbFRCYWs2bk9GMVV0dVZDc3RNU1ZpYm54RS9PbVZSMUIvL1pTejRnM3lLaU5aazBOQkR3RndieGdlbXNSaXFKT2pubHlXTzQ0aWtFdEx2b1VuRUxDR1dlbktFNTZOUTUvcnpiVkhmbm9XRjNjcnVCcytpN0xXY0RVRG4ybno5SlJwRUs1YnJ6RSs0cGFvdFh1YlBLdG5pdTlpM250eklpK3RFbWt0aGZnc0tEZFk3WFVQNC9WVEVxZkl1bGNUNGJuRE9nYitpV1JsNE1YdWMzbCtCSEVlNHBJKzJrcXBLSmRkdExRcldjbU8xK3ZaZ25TK3J1Unp0RHFrQ0FmM09obHA0dHRvWVArd3JaaWtxQmpmUjFwaU1CTFlBZUlkM1dLNUtQa3NXc1BzaXB4a0paZGlqQ29oRllsMDQxcDRlZWhUQ3pFNDZra2VJazF5Z3N3bDYycGc1ZXk1R2Q4UjRnZTh6NUdhc3AxUnVTS3l5amFMampRWHZqQkdtQXFJWnh2WGJ5cTFOeWJGR1MyajVwZGxUV3R0VHRFZ2pTTzcyUjBIY0t1QVlKRDdMU0h3ZUdYV1dRNTF1NjFNOXhrZVRxZy81M3czaVZXTlFQRmRJQllxaWxZMmxWMGVXek9xL0pQSHlEeGs2UXA2UGQybjdnWVRoU0RoZ3Byell0SEVVTk9hR053OURta29md1FKd1lHSWZRazBDRFl1MFQxbzhDcEF0NjdjdjFrUzRiOUw4a3RmV0lCNVl6U3RmL0V5NlpyaW5rU0lXVXk0TzhnS3lyK3JPT0hpd29SdHRhMFpnQVIvYVYyNitJTjBjOWczMXVnVGdHNjRtU1hldDBzV3lWWHFRMzJmNUJlakJGaU1Qa3NTcmh1bWJ2QVY5S1NPZklFWHZEVUVCS3grcjh3N3N3QitVNS9PV0QrZFRBaXZaRW1PR2FySmhsNnlyT1d4ckMwbTlod0ViZXo2ZnBpR05XczBoZlRiR3NGYjhScnNLRkpucHhvVm9YNU9Ldzg2YTRvUVNVY3J0Y0JHUXRna0lPQlRGUGdpMDFqVnN4aVN3SzdSajM5K2Z0ZWRzYWJveENxNks0eG1keVY2eG1IV1A0dytsZHVNOGtQY254cU1YaTJxdTlTUXozREErNUpkSi9pSXZmeUszWStaRGIwRnJKc25VQ09JRlRUNVhyaDNvcXRNRG5BMzYwWXgybWYvKzJ5eEdibW5NYklYZm56MXEzdHdyd3hHOHR4Ti8vZXE0N1k4aWh3V0U3VDV5aGduaFh6R0V4NUxaZFo1a3MyZCtOM3ZJSjBQWTlyM3JLM3hmTjhaWFc0eGljVXZldTNORTlFT01CK3NTTHA3b2QzTnFVT21aZUcxMmtlUWtjQXJOL3ZhaE1FbFVnY2lVWGF2dEFVTDN1ZVlSaEZXSndHNktvS0FQODc1V2QzdjlDb1M3WTA1Zm0rUDg5ZTFuVHlqVlVRblhxYTYwNlp0Y2RmejhQNERBdVdReHZYM1NVaWRxVEd5a3B3TFJSN2txQi9lVWF0UTQ2bW52eDVNVjFLRFZqSHhOSDZYaWlISVJIQi8vOGh1NzJjVHJlRkNDdkd2M1BVOGxhUzJSK0V2bis2b1Q4NEJCS2RMd1QrYWp6cDJJbVRvSjBrVERxc2ZlaU8vM3hPU3JXYjNmZE1welhzVUFyWkN1ckZ5NmRSNVFxS0tPWTdsNVB5WEtQOHFsajZRbm9PSjRhVkU2WUl0RUFMdjhTWXFxWVk4cm5GQ1ExenhFdFJ4dFJYcHdjSld3eVdRYWNNQVdMZEd3dW5lMWlmemdlajB5SVZvNTBVbjhUeDk5bG1rWURyL2F3Ym9BOEdHa2RPZFBZei9JK3lYZTNJQ1BZcXZJQUxxQUVGS3lYb3BRKzhxS081bjhhSGZFLzVuY2RuQnlRUCtsVTJNR2RMV2ZZdUVMbVNZM00vZ2FaMHJsRE5jVzJqRFhTVUp5SjFBR2Z0bVhUbXBXY2VGMnlDbHMxM2E4Z1NpQ3lDWHNiWUMxcXNoR0dWUSt3MWRaWElsaXVvOXFGM0o1SE45b0VIT1BzdUhiR1ZxMmk5V3Q5OWRoZk5XZzZ3Z3JkMDV2bGZMb3ovc2dqS1BFTURFRHMxTUpjYldHTDFJa21tZGQ5SnJrSWdldTJtWFNyckRqaVorbnpEUlJLMHFHanpLcDZyTjR2djlaTHBiVldjZDhHcW80STc0bFZ4TVMxaHE4SE4rSVd3RzN3d1lSTnU3Z2plN095VmU5Z1RZRDlBdEx6VlB3dWlTOUZEZ2hkb3YxTG9IR2NpNy9keWlKbVpLYkU2MEhxekxnVnh5TmVyK1Vqcmg0R1VMT0s2NVVoaXFvL0kxNFRHRWkyV2xDck1xRHpKVWd2WXpHTlhtSlV2UXVUaExWc0NtWnFNVk5SYmNxNjhjU1d5aDlwWTJaanlINEZ6aHZZWEl2SkdvemV3VFhQVFNaMDdGQkxiOHZwdG1FdnhHYy9sZzNGYUdzdzBqVllhQ3EzbE12YTBhZkNVT0hKM3pXT01EaG9naElUTmtDU2o3VzVaVU5zRDJiS0ZMTmtrWHpaZlU2SVpEWWFZclphcVk3dHN3cTZ0bzd3a2ozMFFpREJ4UjBFN1RNWEJ5dXN4RUY1cTBQeFVLU29MMEtVZ3hyZVNxV3V5YVM5S2x0TGh6aFR1TjdueFMxeWxIWUdVcVR4M1pkN3BPaHFDTVM0UklMVXJiTjhPTWoxOHZmVTcyMHRRU294dUdQMVRraWhYVkJVWVhXekhRVUE5V1NIcHV0K29pcFk5OXJ2RUthdVkzZlQzSzFSWE1FOE9nWFhvenFIeTBGR0FEZVVrQTM2NFFjNHlCWHM3RklvRkcvU1ZVMXZJUTZXeGU1QmVjQW5vR0hxK0dXNlp0emxodXF3UE1relkxSXN2S1FUVzJ2OVZBMVFLOW9weTJncTY1blVmTUtTaCtaUUJtZ0NDSUtadW1Kb0E4MTVkTDJvTkhodkk4eXJuN3l1T3NJc0tGVWJHMjlWSllWTjVLL2FDRzVvTmVRcENCaStyQ2F6UUQ3SEJwODJSdS9tQWVTV0hlRkhQM3RITExrc0hxWlRKQWRQVnZubmllYlUxYzlqdC9lekkzYVNiLzkrVTVjVmdJT2IxQWh6SUQvS0s2TzhuM2xXZ3NRVzg0a1U5OXhPZjFsdU9JMVhkNmkrZkk5bXV2bWdTR2pBeUdRRG5KTWdhdU5YY2U2aTVaaXl1aGFCWUFXdDhTNU4vT1REZmk3WmcwQll1aU5KY1EzSVNVV2dMMVNZczAwRVZINWliZGUxN2tYcHVsOGRUUnlVUGpvT3Mra0ZBUGxOOS9zQ0JlVUpHOUJsdkFmTUtEbkwyRVNwTmUwMzJEb0tWUHpHTnoyU1lvMmtaVGZPTGJWdVJHVnZpcXhtVmZzNmFVRGFJVlRPTGJ1NXVnYXJ6d3UwOUtJcHFRUXlLQWUzbFBLbmphcDA2N1pjT3ArbGdTSTI2NFkyQW9XMkdwY1BvUG5CdVRwN1R0L3hIdlJMV3N6L0svbDFFdHRVSk8wZ2VZaTFMMDdIMUJUYlZ5eHpZRi82MFpENmNMNkpxeDEvaXpVMGdBVk1TbFhBNCtWOFY0S2EzMzJXbFpzMWNyVzBGNUlrMmRHMnNhcVpMcFhGSFdGYms4dnVORTFLTWh5ZnJ1S3V2c0N2eW5PNmdGR2ZPUjZvTTlQc3hyeHlEWHRHb3BBeTEyL0lCNDVwYXZtcnN3NWtkZWZrcldGMTFrKzlBQnV0UExVSXVGbGZGdzRTS0pJdGFxbFVMZXNvNjFsZldBRDBoeWVtaDN0eEROQ0ticWppNFVGRkpQVGFMM1NOUzcySHYwZlZtcmF4V3BacTVLdDZMU3JBa3lmeVhrN28wcEpvUlI4WUcrcDU0am55cVk1aWg3dkRLOW0yaWRuSkg3c0l2dkpqS1JZc2JodytzMjltdGF3SE9VUHV3cXZFMDJiU0c2ZkpHY2xYOSt6ek1xYnJiLw==",
    "dls_feature_display_mapping_token": "clQ3OXU1ajRtbjhxZGViTGZEU1ZWdXBybHhsZGgyMTVENU5CRE9ObHpaU3R0S3BkNDJEY0Z4c29pWEVKUE05WHZPYkpoeU5LUURJRWtOVjhoeTJySVlocDZHODF3NnErN1ppUEdJNm9XM09qWHRYeHNmaE9mSUU4TFhwZTdqNFkreDc2VThzYWVhSGxjYncwNDUwNTNYOUZwdlJIWVBqMlFDb1BmUWlDYk1WeWZwMURlWWlGcENQWGNMdm9MQmlJcXJxcWpqNjlkL3ZmOVRaemxuYUVCamEwSFp1a0FCaXlRYzZvQjVZWFVySS9aNE1SOVpvS0l2aWt6Rks5VFdqMUpzVEYwSUdkV0JlYTJnSFFBWE0rTkh6WllaSjlKbjRzc1M4Q1FtWXNMdFVBUHpHTmROOUFtVENWcGZOb2IyemJabFJmOWlDUEhPWmhrVWoxajFPSnBXVUp3NHZPdlB5dUh2UFVwUGh4N1FmdjJxWmtneXM5ZXJuY25waGRYUHNuaFRucHlLOVFuaXFWWUZ2bEJjRFNuaGQ3bHJ2d2w4MVFBL3dkZ09zc1ZGcWtKTmlTdURpOWVveG1GS2FNTmtVcFVHUkpNQ3BYL3hid2NxZllXdmxmSkR2aG1oTkc3VVJKU2p0K05GL1NwWlBkQnN3Z2Q1QzE4NTM1MGNEd0FuWUxQUVRBRXFVdngrSWYycm1WUlN2UzBCclBvWWJWbXcxa1F3czduUU1tZFlMajVIS2tlclY4VDZwY0h1SndIZkcveEEvd0FNSW9MZ2FLL1dkSDFRdHNJQWRsSFYrZXdkbnRsVzBpLzJUV1d0L3FZL0tjbFZEampFaHRDWTA1OHo0bVRoVm9nK0tuc2ZaWVdsR3E1bHVtakdaWnZsV2RYbHovYm80a2tYSktsYWxpSi8weTB1MHBrMDR0Qm42SzcyZkVBbzhFemxmaFpZQURlUG9iNGVueGdJb29oQ1Rlbis0NjFEczBIek9KK1NnNGJ0TlFmU2ppSVpjd1V1blp3b2x3bTNCRDducGt3c2oyb0N5TkdFOEY3Q1hEbzZDN2RVZmJPZ0FoeFBReXJUYWpnZzhkUHdvV3MrQU1kSkt2RHc9PQ=="
  },
  "payload": "VC84ZkhaSHl5Y0lva1lkVk4zbkorMXQwK0xhZTBwU2tCYVFBRFA2R05HYVJzbm8ydHlwenBDTHR1bHlqVUdadVg1K1lCMjJDQnJxSUc2U2U5WHR3SjdUc0JmamQ2Q2JmUDdkejZ3R25BRS9vTEN0bGNNVDgraktNNWVzT1lIZDlRK1U5RjR6Ti81bUxvZm4yVUlkMlZVRzhhSDArUVY1RTlnYUxmSWJsREI3bWZPWjFVOGdhVkV6OHA3N2VlNmFOODhEdkFwNWExTjJkemsrV1h5ZHBITm1kZkhyTUZ0d2JaZVlLVVVDVXhzMm9sRU1XVEU1cDR0RXN6Um5MMVhaNUllL3ZOY0hSbVdUT0UxVG5jdUJGQkFQekZwYjcxdXhOZTVIVjVpMjZUQzJtWGlWTnFPR01WTjRIRzAybWg4bitMZTlERjhna0drN1lGMmJnZC8yRnpYZGo3M21HSXRBdStNUW9hdUNlVmR5Tnp3WnlXQnJicllqT0lwOW15WG1BeDMyV3pnZ2tySHZrRlF4WW9oN0FsazJjb1BqWGdienh4UmMwNUd3emVka3pzeWh1WXFMVk15ZThTWitYZmhwaUZwbnEybE4xMFpKdjBxUERXNkEyNng5cFU1ajlVbEJnZlRkTmJGOEkyOHVWRjV2TjV6ak80Sm9hczdrekJ1NWU1YXAwbHc2blhwRzh4a3A5bWd6TWo5cjlla0d4QUpqbVkxQm9vZFlFNG0vTzV0NFUzcDBZZjZ2a0ExMGtqWWE4R2lCeVBiUUlnNjNIN0oyaGZ4eEJKUnJsQUNQb3A2K0xRWm1lUDZ5OVZ5U1VCQmg3cWZ0bjF2Qlhqd2d0SDYxek5kRERVTkRkMWIyeDEzWUs0SnJkQTMwUmxIczU1S2d0dnBGVWt5R2VmanZnUTA4NHI3WHBQazAxWlhyYXBrb29qNXVKa2wrVmd1b24wZnlGMzJwS2F2cjNqdW5KRXFpWWh5dFV1ekJ4dDNsNFF5NzBMUkNZZ2Q3SkZ4dWNBei9ZU1hjeEhSWXRwTk11c3NraEhMVDM4L01JR2JFVXplaHlRMTIxcGZmQUNwdS84cFNUUzI4WEQxNzZtTytjUDRzUTI4Tms3TzZqd3dPSDlvYmJReHd5TUxVVHJoU1NEdmYwUEU2TDJ4TFA5L2ZsUi91NlYxaTh6VWFPcmhXMFU3QUZhZE0yM25Dcnp1QXJHNXB1OVN4aXFsbmZmcDc1bUhVemxXTENXSXJCam1yVHZBRkFZd3lZci81NU1TWjNtOVlXR2hVTWMzS0NaUk1QMElBZ0IrWWpnR2tmQVlqNnl6d3lJT3dVcXIyZnNkU0NiVnhMNVVLcTAwWTNXK1YwQUhxcW1ZQTJ5WC9YOEJTWWJXVEp4MnhzRk9iVU5YMkNQYmQ0SHh4d2Z1dmZsQml2VnVmWENpUy9WSDFqbExUK3dZeW4rb2sxdW45TlF2QUxJZVNGOVNSOE5tL2Rsb21vRm9IMENWTXd3YmRBSjZ0MTNEZTZmb1NoVmoxUlp1VWQ1aXYrRGpscnQyZkNEVzlmbkJKeTJKWWRma1FtYXVlaVhvc2RxU21NOURzMlIvRXlCaTR2T3BCcDhDVTdKcmNqckhOZ3l0Q1U5a0dqeHVlNW1yYmppTzBBbmF3bDU4Y3N3dC9OUVJSTzk0OXEwQ1dwbWQ2SzZhTkt1Y0VhT0V5ZmxPRUNGVzFWdW5WMmRDa3JnODJianU1Q3Bvc1Nkc0Iyc1JaUHpEdENlYmVkREgwaXcrWDFqWFNqSC8yUlRYVURsSDJwUVpjTlBRdjJBVUpsRHFmdkU5K1JSNWtRUW56ZnFEdG5qcHhYL3IxVDZETjhCc3Z0MEFxTlJRMlJhOWNwWHI4VGV3TkxmZEtMb3BDNTl0OGRrQTluVU1zak03cGdyd0tGRVcrd0FuS0krNGxKMzlOajkvTWQwMWphVlV3eXdRTTNXSjRXZ0xyTVMxT0FLVmM5bkdjVXFid1FuTzhtVi81azV1a0NPN3Yxd3FJTWVGd2J3VlhiZ3dHQU1ocDViTVpDQ1U1YlNseWFHdzVPS2Z5cUxndXdqaDZaZ3RLdmNZMERWUmVvWCtxeFEzREY4UktwTCtIQy92YTF6STNQZXdKV05jSmQ1eE1aSC8rMCs3RUJMWG55Ym55dVdmNU9JbUE5V2t5T3BJOGpWYkkwdWNETU9ETnV0UnBlM29abGFtQXphUGQ5eENwUXVCZTJOREZrTCt2Qk84VzkvRko1OWxUQ2hLOU1oTDg0d0YxREphTmxIaHVuSFlBOFBBVnFHTWJTMUgvbjVVTFJSR2VrdzZUanFMVlkzT0NMZGk1Q1NGK3JXa3dIcVFEb2hOWEtLWlpaVXJBWDBhaU54V2VCZTJsSGhmOWJvNHczK3VIMWdGN1RzS1BIS010YTExU2Z6NE5XcHR4dWZpRE5hZDRpd3lwdWlRbXYzSFFyTDFhWWU2WEFTMTBneDM5RUROYStRSCthVVYzQS8xZ1FkVVpmZTZXM2FkcnNlYVZlSWJEQU1kWTNZTFc2TDJuVmw0RDFZbnNvL3doSFQ1eTFuYk1sMXduQnp4c05GYVJTeU05ZmltWjFrSXo3ZTM1Rlc4S0NmVFF6Q2lHcjVSMlU2OTZBemxobU1DRzBMbkZSbHpCc3FTaFcvd2hwWWpiY1BtcHZVcUREYjVROHdyUUZhcEJQTWM5TnBNTEp0R2RuV21vR3JhWnVPcnk1YU80ZHpoKzVQdWl6Z3ViK3BPMTRaU2k4eGdjaWdVZ0FmZ0d3TTBxaVNTQXFoUm5kRDdoQkt1YzV5OWdRVUxnanp0Z2RuTXN0Yklxa2pqVXprVG1LUWZtaXR3YTEzZG9zdXZkbVhDNWlDSEVjdFFCeGxHdklWcWgvSURiOUF5TGtIMEtjLzdCdEtyU1ZNSmFaWlc0bTRpMThnRm9KR2YzT2ZuQmIwaHF5ZVdoK2NKTXVMVVBENThCOEpXaDEvdHZTS0xMQURJZG1PVU1UUEQyMHdmaUp6QkxGMGtyeTJFQ1ZrcGtHRGdjQkxYWlA1a2hYcjd6TWJ2SlRFTmIzN2FSd0ZQNWN1UGFuZDhCejVJVHlZNVhCUlVSMUk2REN0WjN0ZU1POHN0bmVvYnBEdzViMHZHZWRUV3dyQ0NTdnNWOVFmc0hCcEZqbFpwMUErVUxVYm1YQWgzN1E5SThPTkRmNG1WeEpOeGpwa1o2NTMzTk1BalFxU3l5Zzk4WjhUM3pnMkp0cGc3MmN0N3lKYytZYmRwOW5Qd3Z0dXZxSTBIY2lLclk1M0NUTk1ibUYyZXdla0IzeDNBU3AyVE1ybm1sUTRxZDhGT2JQVEx4TjR6RGlMTi9kRHJPanc1UjlST3h3NkpadXZKMFpQcEc0UjZOdFkyZlF6bS9wc2p2c2Fvb1k5Y0JZUjJqbVNydWJKT1NsTWRJNW9kM250Ym5xMEthSUQ3RTNJc2F0elZoTU9FU1FXdWVKUFljNmRmVkdFOXNaOTVVOXgvdTlYVHQzWktJTW9icDgwZEZXalVDQUJVYnA4OXA4SXRBclgyYk83RktyYU1yVTEzVjNvM0tJMGJmYzdWVWdpSVc2dDdYYVhVcGZhbVp4SDlpY2VBeVZOVVdLaWpDeVMyVUIwQWZ3cmNlUEQwU1lkeXpPMTh3UGdQUzZ0Mm51QkVvdHRjMkJlU2FOT2ZKdjNvUStTZDFZb0xJaEZDdFdTMDEvbFNmZUZkeHFmclJyZmZqcnVhWTdrZXFtc0oyMXY4dFF2VDJYS1dmdUlYSHpWWENCWnZlV2dkS3RwWGJlMW1nRVNad3Q2dnZ5RUd5NHJTMGQwZzVFamNld2RXN2d1SlAyd1BJY2xZQVlmbnhCRDBFc0kvMUlqMUxqazZibUttKys3SDRXUnVWeTd1NmNaTTJrbmw1eGFvV0Ivc0lsT1JnMmxYN3dNeFczTEI0ZVFQL0dqanBldmpnR0JxM2FtWkJzd3dUTkJocWtKU0NIUVp3MDRYTjZLbXdZQTE4RU9pSUFnQkgrUGMzQ1M5QW9HeDNhUG9kaysxM2dDYS9TOWJkS0R5eWRXb0tMSmVQdEFMYzBxdXVuUXo3N2E2MDYzSGxvclR0a3l3QTVJdG9vYUJRM01aSXJMandTZkFxS3drNE1vU09NOExXRU5Xb2JqTTdyQ3UyK3BuYjFQL0d3bkdZemY2MUxRN0JMQUpuMlErZVEwYnZEQTE0TmdUYzBhV01pb1ZHRnZzR0wxTGJaV0kwT1ZHUXJCQlFNL2pMUHRQa3NKQ3dnaXI5NEhMRU5UL2ZLU3V5THErdE1pY25xN0U0K2lHMWIxSjhwM21waHBJT1A4M21UZjZaR0w3MnlIcnVHaUdhbFNDWm4zRkpvN2pkeU9xQzJxMjdBT2FIbGF0VnhxMGtYZm5TYUZVNlVrcThCdCsyNFNZcEx0OTh2a2hBcloxejZWTmhFcmZ1ZXUvYktTNGZFOWJ1dEd4UExlNlBDZFVnTkNjMnM0MGZvM21qbnUyS200eEtGV25vbkRjWnBOQlE3QVJ6SEdLMzdjakx4R2pXT21TTUJSdk8ra3JrWEp4aDNDYUJVU3gvdkFrTThZMm94Vi9CQ0o1UDlqQm9NdGFLOTZiMkZnWDNBM3oxOVNib3l1bHZmdEFUVVBSc2xFaW9ma1JoTGlpUllBN3FTVkxWVk9vczdoU2pXWlQrbitDK3FXTDBRVWZ0Rm80VEFiT0R5K0JYUjdVeVI3TmFGN3NzYTNZVHpPcHhHMmxsckVYKzJsZkxscTBqVlpEdmpiUkVTR2g3eEM2bXozcHpxZFBxaUdpblByeFlKakM4ZEYyNjZRZElSMEJCMk5Yc2NIbVBxVHVDU2VjMGYxMWV6SExqTUhrWXE4TXRseThOaEFzOG5KM0JxcnhRVzNVckp0Qkl6TFZFUjJhRlJqR016YVV5R1FkNWFHK2lkOHpNVktaRFoxNDBzQzZjSG9vQStIWlB6WUhQTW90dnhCQ1VTcUMrdFdTdEJXWW05Ri8xR29zdzQzVkNuZHlpei9rbkI1T1ByYTlKd3RMa2hZS0M0MHViZGc1M0Q0ajAvVHNKeHJKbmFpQ1lVdWt2NlJ2YXo4Vk40amllSm5QVmRYQXZmM2w0MGJhTlRoS3c0WHV0YUZMc2RNblkvU2N0RldoNzJVNmlLTEFXczBRemhMektOYXcxNW40TVowRTlxMU1oSnhzNi9RS3VjejdSZXNwQWQ1aEp0czZLdjhvcldsMFlkM25OWDVpR0dRSzJ2NlpiUGZhaFpoUDh3RmZWSmtBSjNWZGloczJOY1hKU216OXZBK0d2eGN5Q0tGMFVKaUxVWWxIbDlEblltZEtJaU1WRWk0T2xZN1hESzNjck1McmdTS2t0cjdZeHJFaGN3ckxaS3luWm1iUC9ueVJ1OVhydXRIZWZnQlp4eGhFeUZQeStlSzZHTVFzVGRnb0NoQmQ3UGp0Tmd1Z1h3Ym9PWitIL05lVW03cGJwWVZINmRRVDhJeFNWNDV0NVNMOG40VUVJY29wbkV4TitSWHhCR2VQa2NMTnJXdUVSKzFCSVF6UHNyc1JQbTdHZ0N6WnQ2NzFDeWt0K2RNRjBxMFNLbjdKaGREY0tUdE54YlBvZW9CV1EvV3FwQUh1RXlmMGdEN0JSVHpoTTZuWHNKaW42cUdwUDZKMWxXSXVrS0tGL3Vmc3E1Ynh3RTV3NlVQcXgwMUhXQnRyNzZuRE9rdkhKTE9SK0plWjE5RkdMZlhSN2NoSnorRjMyS0tCMzVpNVRzdGtvZ1l2S3poUkExOUNPS2hIYURIVTVqNjQySmx3OUJGb29Yc0dKYkZVY0Jhb1FGaVh3VVhKaWpkZzA1NDV2UlgxRW1kTEV3czBkb1ZjdFZUUEc5RkZiS3E2dDdJbERlcXhiRzA1VlFZV2Z0eWJwUjhlMitBYnpCakdKY04wY0pzazFyUXNGN1AwWk9JQ01HME1QS1RvN095bjVqOUZ5U3ZYL3RuVjJYWGh5cHMydlhxL3Z6WTg2cTIzVGZRMTh3dGJOUnFvUnBvWjVreE8yMXBIU1ZFMUFCcnMvT1ZhRTcvRFY1c0xkcEZUSlBKSkdvdnBleEVKUTZDRlhpaHB3c3lXeVovWXMvMk1IbVJ4eENHZDhUMU5JR3dSWS9YSlJlalluR0tyZFFRVDJsNFU0MU10bkR6UTJHV1Z6V1ZxUi9OZVgwakpuSDdCTHVjaXJqZk8yOE5YWlY4Y01ZK0ExT0xNdXphcWQ0cEVrY1pWQkFJamVDOVBPSEFsbTdFc0JpajhOejZLUTMvS2hoVkxxYjUwUG1Pb011SHBuRXlZdDJSa2VqQjZxRzZKZEJ5NGExWkgyMlUrSE9rYk9HV081MVFyc2xRbW1Wb2RGd2ttZy80SmJKakFKTUU5cU1WV2RHNFBxbmRqNE9xdzlnNVF5WTZiSlpockJkVGZQK3FEektwOFlpeEpnWWE5TDFqVWU4YkgxcVRFYXYxTkM3SlduUlBsWWp6Sk0zQ1NoUGhKQ09ZeXZiYVNuQU9hNXBPSTcyUFFMNHRiVWRJV09tMGgxdEQyY2JLMmhrbnZVMWppb3RWTnBDYVpVZ3ZZUGk3K2JUSjdQa1hwbzRFRmlYR0JXek1TdUZRR2Zyc1lINDEybjRlM0Y2NG1FbWZhLzJyZk9iZ0ZGZXBJSGFkUGlVSGNieFNjcWhHZTdyZkt6Y0dHNXhKZFROWHRRVTJDbm9GTUp0L3J2c1pyQmZ3NVFjN0J6L3BxSmZJWnpVSkRMaVFXRDV1eHNVd2xldjl5d2ttM2VyOHVFY25OT0huei9Jb2h4a2NIZXl1cW8wVDBPWFNnM0RmM3hLOElvbDB4c3NnTkZKRjNqaFNvS3k3YmN4dFhCVkxZWXhTOW50UnoxT3lEWlFwamJwVDFnSTJyM1cvVnpCQjBqbnlTRTNrSGlMc1ZHaStJdlNQMzlXdUlvdDk2dUxPN0xpRmlIOHNkYTYrWDdvdG1MTnZMS25GL0pHSXJsQTFFb3pkZGpwOWxhendtMm5iMTBJWkFKU3BVU3BQQzlBQkU1Um1wckMrU1J6ZXI4SlZ0Ry8wQ1Vud2Rtcm5laWdjcm56dHdhYVFlcFdLU0FLNXhQTXdneGRKOThzVEN0SG5yakF0c0cwVzBFV1Vxd1dWa3JIenpKR0RmSVBXOEJwN0JjcUlvNnlHSkFRUFdvYXJPQ1JPY0llT0x3bGpORVZQcmZnOENNREc3d1VVWXdmd0ZBamJFR1ppZ3ppQ2VKYVpDeDdCVURWNEFoYlcrSjVGUnVDWU1rUEZxdXJoNFFCSW4yNi9UYU9pSExiNmlNVUxlR3ZvWU85YStDdnZ4Z000a3FOU3k3WmVCNU9uelVidDNlQ2FxaG9rYkV5UzVua25ZaWNKMTdRYWhaMjc1UzBENDV1Mm9ycHl0RkZubzcxdVBPY0pSWGlSTjU4amg1NGJLMkNIaDFma05ndDRaNzVzZ3UxQTdNWEk0UTlIVlpqM0YrSmQ2bjVVemkyLzNnV1hZSHZWMlpqYWMwZ004Q2piK3BFUi9pZEUzbjRMdjV6TGRpc0VwSVZnMDJNQlFuL2pkWHlZRUswWTdITzBLV2RuUTNHQTJ1bTJUdEM3a2puZjVtZ1E4QzJaYnNBeVlVMnkvZXVCbHEvMjRqVU5NUDVXRVByVkZ5MFgzYUVGY0w2RnhtSDFrQmpoanlZRlp6WlRjNkV4c01CcWhNdFZ4OTZZOENUTFZ3Tm96a1dyN2hPY0tsRXRyL1JYQ3U4Tlptc09MT0E4b2NzNExKYlRUakZwZUcvZGJHaTVHUkI5Z1RqSytiQmFnK3pucHN4dVh5MTNRc0hZcWhWVXRXVWROSHhiM1FzdVBabjlvWGhZRkJTMkpHYVVoeEtiMlFLdThxYzJyWlVUenNKQllab25ZT0RRcU8zd1IvbHRiaTNFU09VUXYvNUdpYVpLTnJZbkFneFNwWmRYUUVCb2NXdndtclFrZVRMSDh5SWkyaFJZL1Rzakc0OFVqaElISjJlc2JIRkZtRkJNSGVHaGtWdnFpczl0YUVsTDQyOXh5UlhsbCtBVUt0V2psQUZKdXg0MGJWTE0vSDREQUIxNFplMC9XWlFkL1Zxb3pjdGZENWthQWJaRTFFYWFxZW1zRHBURUJldlZqSktlbithZi9lMjhHZUlNcDc0OUZHaFBUWTVGaGpHOGpnN0lQbUM1Y05hNjRtSUdtNGRub25rdHNFWSt2Z2hjRG5HUmdseHFrSjc2MVRITHZzQjZabDNnRHB2WW9FOXZsR2VxMFYwSXRPTjlUSVlTbTFuZC9aeWd1S3RhejNsOFBCOGJnUUpnTlEyMTVvSWdLMWxSLzZHVGg0QlNZejRwUjg5a000ZkFLSURIMGs2SFRYRzhDdlp6QTRSZW5BVk5Ecjd4VkVicWNVV1lqY2VlZ2tqdm5XT1dEOTQvQ2l0cTJvSE16emRjcjA3b3A2akEvZHFDQ2Rva1IyL1NCQmRhYTBBU2UzQ1FEQmFKd1ZjTWllbVh5MmFJMEJhcGtGVzR4VW1wamdGb1RrbHhOS3Y1MURnWUpzU3BHM3VMSWRKNlRVRDEzK2tKc05pMEJIZElEcldaMmpaNmhzYUJjakMwNUlKcUJraWRtM09ua1JkckdTN2YydTBwNHlReUFmWkNyTG9hclcwMkdYcUdISDNseUgzTzY2OXhPTHRDTVI3aFUyVGlyMXNsZ3VJY05aMm1NUUZPNHJ3d3hFSmkreVFZU0FnOG9KT2NuQ1FPdUllU0VxMjNMeEU5eXpMZTlySHU4eERrRUlHLzA3RjVOYys2QXhHQmJVMSs5RjJ3UjF0Z0hIYStDZWY2cURTZFN3NVROTXE4NFlxM052bFB6S3dNUU1MZnVWb08yMGV3ZC9zbDJQSjFBZGpoMjJyOEU3NGxNa3BmbVFxLzRYWEp1eEpkczJ4NmZhaTRpTzRWNFNsSS9venI5MTVEUnVGVXJOZEh3TWt0RlJrSTY2SnNkUmZKdmpYcGI0SFRhemJRMEdwMmliSEIvSENEL2ZoZFJGcWpFSWhBZEM3R2xWNDFJb3hrcnB0WkdFVFF2Y1NPd2RodHk4RGZKZ04wUklhaDAzeGo3TUJSbnVtM1FaT2tFYWZnYlB2SnJEeTl3ek5hM0hiOHRWOUw3am43Wk9RcjcwMkFJWGI1YkpzaUFXUy9NdytIbm1vVUQ5V0pOY2d4VEUwaU13ZmhLbHFjYlZVZ3Z2MzZ1QldYSGNIY1R5SkEyeWpKMkMrNFpyeGt0bGJCVml0dmJEUlZkQXhTWDgwUTVMZzJIR2R4MVJad01WWnphdnZUYjk0dTBmSlRxcktJUkUzRHZQa0lObjZ0cEhHWE9QMTRpaGFXV1RqamNTS0tmN0JFZjNEemlFTUMreUVwWnR0N1pKNGIxdThqN2l2VUNVd2hmMXRXQUpDUzlqcTdIRG82bXI0VnRsRHhzMnR4ME5zSEJkQkNrWjU0QlZ1dk1RSlB5OEJBbi84dVhDUzQ0Yk1yWG5BVGxIbCtKYngwZXpzazRpUm9rQlJrMmJTQVJXWUJiZDFxek44QndFekJSY3owbDJkVXcwMWtEaE56Wkl5Tko1YVlLbWJYdUQyZUlXZENSTSs3dU50NFd3OGRONnBsbytZWDhYQWx6YWgxWHFIL0xpOVVxTGFycHM5S29HNTVsek1XU3BScE91OVhSUVBtOTZyU2FYekxzSy8vdUI2b3VOdnkzcWhLZjJFZm94RWFaekkwNzZXUDRNWEc5QmsrUlk3L1VnVDVQOTk0Mk9FQUxPSDdpdG1ISGxXa1hoZC9PSFVYc1FwYUZIeWxvNFlLL0g5Vk8ydE84R0hhNkh4dzZDenJZWTM0SEt0VTJUcjhFd05JWjlPdFg1RkRFWG5vKzJMeHZ5Y0FsVHFsNXBmS2JJcnBQRkYxUWJTbWYvNWpsQmRXRFNRN3RKcVB6dzMxZnR5RnBwNS9tbi9Icm1EVnVGY3Y4MkRLV2R3TThDSW8wckJXcFlWak5YR3h0VWVyUXRxRzAvamtZOWNxOEJLYXhEVzl2eE41WnBaRW9YaDE5NDkxOEpNWFdOam01VTU3YmlUdlBjU1AxS2l4RDJyLzkzMkRHakorRVgzVFlhR0w3UzlFb01UZnVBa1RsUDliTFhIbzlQZzVtNUtvUkZiUFhVb0VBREgwNFV3N0tBTlNhSUdScit2YnR3RW1wU2czUUhuR1NvblVCZ1pFa1VVc2wrU3MyT1doalZWYWprek1WYUdsUzBpMzdJOEovamF0Q3gzZkw4VGc2Z0RtMWZVUVlZMjVQblpIT2ZUUmJtbngwVUlhL3dpYWEvRmFFSTA1VzFsL0p6ZjFjaFpPOW5vVTc1K1Z6b2VESUFQbmNKMFROaUZkL0tmT0x4OEhFSm1ONW4weWw2ZUYrTVNoeS9EcDRZeVJld2s1QlZ4ZjJhbEI0cXlpaHZKS0VuNUZtaEtRM25SR09PekR0cDdMOW14R2w4Mm0xM2o4R1MxZVRYR2w0b3hqcmYzU0ZhMEJSSlU1QnM5UEpQSzMvTGJBV0dNcmZrTFBiUlpjakdoTmtoejJEZXJwbnE5VU5aVzc3WDVOSnBxQkpjRDVpMXkzS2txY25reENzRnEyVmtPaWRUK00vODJueG5jLzJIL3YvZDY3RGNtRnZ0ZWtacjUxK3hod0tJdVdwY285elhXeFRHTi9VSFM0eWhXL2ZtM3RNTk53dFFUbXMwbks1eVh4Q1lTQ0NDb2hGRFYwUGRneGJvUkt1bFV2L1FDUlJXOW1aZ0duaVJoaE5xeFpoRzhXelpXZWJkSlF5YzFtK1dpeWIxRTJETE1UdmlCVUZWUU8rWUVZOWkreVhKUWdxenJRTVE0QzBuQ25DMnBMbmJLRG0zMGZSd1F4ZHRRcnpvQWVPSHNyVllSVVMydWRoVjhJK2ZxUDNJSlZxa0RiNzlUdjJiM1JYRHJsZzVHYUdxU3ZMcmxwWENmeFFLRzJGY2pSMU1XdFdURWRDK3JIeEhQUmpTU3EwOUQrVXpZR2Y1VGd3OVBLWmpKL1NHWkJNNnNubmxhVWt1ZFVHZmRBeWZTKzduWEYvaHM3cG9TclZqTmhCT2hxR0I4VGhzWldna3U4Y1B3dTJjSWRvUE85ZEJ4TVRQRlpPZlBCdFBWUlZBa2hBcDhZdmdMSlhWczN2N3RnR0xVT3owWXZLYmJzekhkYUVKaXErU0UxM1IvakZHSWVMVkhReDNrYTZOUmlrbjhYNW9GeEFNKzdmNExzakwzZWJRcXVqR1h1WnhpTUZLeC9XWHlzK1U3ZkgzZmNkMUo5SkhJNy9HMTM2K3VLSUxkTkU3RVBLZGlsQmZCeHhib3c5VWRMeWE2WlFJK2dsVzEwZE1mbVlEUHBqdVNXaWtYakJ3TXRQanpnQWNvaTFSVnRMa1lNZ2NRc1FUMisxUGlwbTNaeldSTExQVENJTk5sYXBqeFRpaWhQZFJLbFM2bnZwUHh5TDN6UFU2VEFJTExwaXdjTE5kRmFUOGl1aUZGV3dGNEEyUlE5YzJsV0VXd0xPeWtiZzEvWnBNTjdneTZwdFM0V1NyUHpsQmZKVnlWeS9zSjJYaVJlY2FuV1pVUFgrK294eE93TDZLdUpFNGd2aXRoOUtveFNoVXBXRmRLcGhIc0xvQyt5YW9oZ1ZiYkxtaitSelFlNWx3YjY0NVM5bFZSS0lsaHVlbFJSWXVVZGNMTjJDVUxtOEM5M2lMSTFtalc2MnFGbnBSaG52U2lNME0vemRLYTY1NE9FdnMrUkZpVDBraHRtclo2N1pXc0J2cFQwTUE4OTQyaGpwUHQ3WVBLKzhqUEFXK2p0VCt5Um9hejg0SUhqeTZuS29CaHpvdDhlSVdrZFVyVy9TN3IzM2QwU0JjdXVZVFRWdnNNZUFDRG1mVWc2NnJCVmZpclRCcDZvejlWSWl2VDZ5U29SMTRSNW1SVGlXUnBXamFMT2RUYkxDdDF0bVI4WEp0SnI4bEdhejdYYnBkRFFxd2pZV2dXSms5SUtOZENleVZJSWtVaXVwTzh2VTdpL3k4Q2tUbXlWdGp1a1ZxS0x2TGxOUHV4MnJ2dngwbGQ2eWhYVU9WNXVBd2o2MC9ZRGttRTJUbEcvcml6M1VNd204Q2ROUWoyQkdkcS80WE1wVWlLbThhMGlnbTY1WElmczJSSTdJZjNGZklua2lQUlgxd25KS0U0OXR6S1NjdlI4ZTRNcFdibzBRZ21MdEFQeWwwWFhKZXBURnVQVmxFZFNiTFNQSmsrSnVaeENTeiszbEpZTVdtck1HV0lnV2VyeFdoOFZhUVdZWm1ZSVgvRlMwVjI5Wnplc0Y5YVpabnhIeDJ5VWFjQ21iU3JOaDZiRmRidFJqdlhEK0xBWCtpY3lRMVNyOG1tY0ZzNDhhWGNUNi9nWGhaYStxMzQvTml3Q0Q4YlBVUExEeGlEZU9TYnVvK1VIRThOeG9GV0ExdllPOUw1MkdsNTNET2FlOVl1Q2dlcjFZcTlKeDhIV3Njb0RGb1A0R1d2UU1mVUNCSnVzZk83MmpOQ1RTaVNFMnpMNjRMRzNpbmxDeVAyZ3NZbEQwUFd5TkJwWVBLelBSZllBdXVvS0cwTzlpbnZoZElzQk9TRmRFZ2Z4ckh3cFJnTTllbWRNOHN5MEpLbUFKQ1FKUGZQdVEwWnRGVzcwcDZkb2htM0ZxQnFLUVdxSTNtaXRnbDNnMGxtVXk0Z0F4anN4ZjRrdjhCd0JIVW1Xb3FCd2d3M044TmdRbVhaQWh2NGhoTWRnOWxJeFdLV0UvcVJDS0NsMnhvTit4ZUpua1dPcHljcW1SNjdORWtsc3ZTTEpScFg1SmFleVF0TERUOHdTQlBoLzdlYmVGZ1RDRHRQRGxQbFRHdmkvYkNVNzZHMjUvd3JZTTFuM05xcmxod3h1VW1aa1JFZzVQTUx2OHZnMzBxbGZwUWQzak0vM0pNMkNXejJ5NU1iRXh5blB2cWlJUHpwV0p6OGVDOXF6YnA0MW1CQmlPdDkvRmRGUFhYTmxCVWRtSGlZc1VkQWRSY0ZDWE03WTY3d1kzSDFCRisrTzR0NmVpVWhjbmJxNHdmK2Y1a1NMVGI2SmNkTkUwcVZNTTg1c1ZkZ1h1NzhCckp2WGh0Tm5GdGMvaS9KVGhibkhzQ0w0czRQRlNnc2hiUUV3STdodW81WC9UVUp0LzJaU2VDODZhRjBZSTBQUytrQ1BNVGtuZkJhajVmTlA2Uk95WDhJS0lLQ1BWd3VDS2VhM3RGUEZTUWJxRG05Z0FEa21ocnZNdHZrZFAzVVR2UC8ydEJxeDlDemFPendUZFFNSVlzdWcyeDJSdktKb3o2aG9GdHBGVFRva2VnOGc2cHFDOE45RmlGc1dJY2lZTXh1UHR6OXdzb2FSb09nU2hlaG12MHdCZTVmaUJIb0ZYTEM1UWhMS3JwR0U0UVlYZTlBSTVUK3YxSEtBczdYVGxLWFUxNXdidjBVOXJQbEI3VVFjS0t3cm0xTFZYZjMyaFlTOGs5SDZVOWJpcitKWWI1LzRDeDBMZk0ydW4zMTRKTVZOZ0ZFQTIwQjZxS251cVkw"
}

preamble

deployment_token

  • Format: jwt
{
  "jit": <uuid>,
  "iss": "Portal",
  "aud": "Service Instance",
  "iat": <timestamp>,
  "nbf": <timestamp>,
  "exp": <timestamp>,
  "service_instance_deployment": "SQ1OY2+J7U/qUS3A2Rz5zLkGL+2dqfEo04N6zs93qFfmRF42uFxSMLINmpgMpIf5b35FGwifEFME6izF5UZLGZUqKf7EI/aRk3d1NyQr5k9iLXUXUasttvs4ta9GLZWnoMMLf5omDnII0tJ+6x2iJuARnlM5nb1jMfacU3Esy1+IlOB3EDiemJMrPVqclLPTfztddiEJmWoFaD/7TWvr+r1m/lMDFqZxK5Wxli1YLLDMptGE6dQzB0j2P+5ibj0ziJYVnJ9nE8fXsAB67Gbdoh4TBE1eiYpPZJmqle2L/E3apMxJ/STf7f5cb5EXzICQqUQG+PbPAp5OdfceuzvG9C2ha8llUC3uFiXsSOZnURcxr4FiqGLdhR6pgjD9Ey+F06TID4YHWx0YRCmJ/M1hdK2MmTQK/HRf4rlYo73nRScSzH61BM6BIBrhee+8avqwfeGq+dr1VdU3IbJagRN38jPDvhimLj3GBl09CEy4GbUGKZC1SMcW8MSQHqBeREoM1fQ+vUxZJd5SRnAgUfv5gkiOOYVfAXxTJ6O2UCf0ZtDr3REjCWdTx0ct3DkneS2czxPIw3+WYXe9qx8Mlwh5rXgEjR3fPhNZorJnxKofbscU++V77GBgFkEMf1Q18UAaZU5/mwrg+WHVznId1c3SVt8swlCOmQGS5jwcV0OuqJu3wmAPfuDWtYpJe3bpIh6qL/UmfrEhkVtEU7JbCW9pDJjmTex6Z0wcizwUkTvg6BX/t3Y0u6DzDAuFAWWxG5yqEbRmh+VoQHXw18uDwPz6MY46SW00+QSF7zHhJuAr+DKKvnyZQaMRTlrd1dg2u8pvhyuXIrIKh2PKFlfOEyXr6b+n19jsUiftsdWug98x85SLm2Z5mH9ukdU/eeOTg/TQhN4sQLZZ+8UjchpgW2oCRY1/v4x4TvgQw1e1t/iZU3zTxhoFm4GwqFblA3585bqZ4smV0ozB9dmmCFggE2E6FKDZaYQsf8ZWCK2xY6CbeNYIeMLpQjOlojYrx8n7NC+FWv3OahqeW/Shfwqs+oKvz3XwXs3jJ+9HHwS7YzXDsZhkq3+3JXK2fxnyjO9TipmsEcsI3FzSQ0qZmB4BiA5nuBY5QhOE7VUNlpzXswNZc+AsCYnrqtpmkuQhRzd4L57Ka3QZPYXO03MTrkgHUakVR7RvTI0lSt6JYN6Me+Sl7HXoNbED2GwRium6ZmpgI+bMfYt4UTVh+ko2L0LbCUIKBYoi3KZ2f7j0dDqt5nRnC6txQCXOyDcg7Fe28/BJwXKFao8n5pFsTsr6vR6hMvXS3IPHwSqahaekh/B60eGXk3IswQ6u6ygD14u+yEo/ZPWtIe+UZOjkXHzSUGbCznFS8qLsDe4yQmyQYpRCDajfLi6WTQOD5OJG3sA6n4nhSTESAYzshsyIHohKlAGPSMqmS0Ekye29EeIlP6O+DgvUk2sqLHkrZXXyNz8iiZOy0bG2CgQ4doIiEO7pc1DYcUT1QIhCKnClgtAAKv3uN4gvNlMhIhbMTF6em0G+fDH3+EBhdGGK5Y6fRZmOfnEzCZbODwoocd2lryKwGmG6NrUxdFeEwLuLUROdI9g3spkk1UNC35aYIJyg4l+RcV2MMd4q5fn6SkuHlAk9csUwFk4Cx5Pfo026lMRIeucsQSlo6TO3wVGTLkHF0IAwy1zg4PLXLZh/Ex28omAjlOYVB4FacZH56OmjuV7DcUGStC4x6whycsFrjrRlkFda6V5Uevz8a2R/9A3dThuseMyfo68eRG1GFFVsMjqeidfSb7b9fgdRtfrtCOAuJ415TscQrqx30uiewMg6Wm5q7RtdMxW7F0QaOnNksbE3VRib1agxZalu/95B/mFnCu5FQ+xtP+Z420RvSR41DhDYMC3WvzjzEFPkOpn4RQf4/zWN48SOBckFKV/7TLaFip/gq2TTEOWaJyyWIWCQo0DJvSiin+sgASppIT6TtmPxdvAYj7xw4Gk/ubU0JtBsBUNyUuExvaYlMrQW51ssoV4VYH2iZgf29ENvxH/t3+vmhOk0XdDnW3xcgqA=",
  "deployment_token_leeway": 432000
}

The value of preamble.deployment_token is also stored in Database-Table license_allotment_file_publication as {"license": "ey...", "timestamp": "<timestamp>"}

product_mapping_token

  • Format: ? (base64 encrypted)

api_keys_response

  • Format: ? (base64 encrypted)

dls_certificate_token

  • Format: ? (base64 encrypted)

dls_feature_display_mapping_token

  • Format: ? (base64 encrypted)

Code

AES Encrypt

NVIDIA AES encrypt example

# Generate license file response
# need special UUIDEncoder because license_file_payload contains UUID objects
payload_str = json_dumps(license_file_payload.to_dict(), cls=UUIDEncoder)
public_key = PublicKey.from_data(public_key_string)
encrypted_payload_str = public_key.encrypt_aes(payload_str)
encrypted_payload_str = base64.b64encode(encrypted_payload_str.encode('utf-8')).decode('utf-8')
license_file_container.payload = encrypted_payload_str

ref.: nls_dal_file_common/license_file_processor.py#76-82 (from def build_license_payload(self, license_allocation_file_xid, license_allocation_file_timestamp, license_allocation_list, public_key_string, deployment_token, product_mapping_token=None, api_keys_response=None, dls_certificate_properties=None, dls_feature_display_mapping_token=None):)

AES Decrypt

NVIDIA AES decrypt example

# Decode preamble and payload
encrypted_payload_str = base64.b64decode(license_file_container.payload.encode('utf-8')).decode('utf-8')
private_key = PrivateKey.from_data(private_key_string)
license_file_decoded = private_key.decrypt_aes(encrypted_payload_str)
payload = LicenseFilePayload.from_dict(JsonUtils.from_json(license_file_decoded))

ref.: nls_dal_file_common/license_file_processor.py#118-121 (from def read_license_payload(self, license_container_str, private_key_string):)

dls_feature_display_mapping_token

We try to decrypt dls_feature_display_mapping_token in nvidia_b64_string.py.

This data is written by:

def _get_encrypted_dls_feature_display_mapping_token(self, dls_feature_display_map_token, public_key_string):
    try:
        return CommonManager.generate_base64_encrypted_string(dls_feature_display_map_token, public_key_string)
    except BaseException as be:
        log.critical(f"Error while encrypting dls_feature_display_map_token: {be}")
        return None


encrypted_dls_feature_display_mapping_token =
self._get_encrypted_dls_feature_display_mapping_token(dls_feature_display_mapping_token, public_key_string)

More info

https://git.collinwebdesigns.de/oscar.krause/fastapi-dls/-/merge_requests/46

Sources