jtdearmon commited on
Commit
fa3721f
·
verified ·
1 Parent(s): dc16df4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -0
app.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # run_encrypted.py
2
+
3
+ import os
4
+ import base64
5
+ from cryptography.fernet import Fernet
6
+
7
+ # Replace this with the ciphertext from your local encryption step:
8
+ ENCRYPTED_CODE_B64 = """
9
+ Z0FBQUFBQm50MTVTbkxmUEZiMkMzVDMwN0duT05xMm54VlJYUnFYWEwxMnFXbWktcTdsT2FjaU12T01EeDh0Z3hFekg3b3lwZWxTNUVRTWJvZkJYOWc1ZXpDQ1VGeEltRXp2S3hxSFVLeUxxVWp6Zmo0eGd2MlJBalFjaTBoUHF4cVVOTlNURDBmalVOdGNsYm0yYkhpbXdGUDJBdXM0QjZtZGpHVkx2VWtWSF9DeERIaURnSFFabDFyS3JJc2RkdmtiaHRvZ0IxQTRzT2U1WGczVG9TTVg4ZWpiXzE3R2ZKbnl5QnJmUW1TYU9KYXE1SEk3X0xTbVlYQ0xKZUtXNHlMRHl6QW9Cbkp0cEY3eEJRa3dkQkFkU25NOEhFeGh5LWlqWklvN0JnQVpVRWoxVVByM2lBVGR6MFVOcGRVSlduTHg4aVZPdkktVHQ1X3ZmbHlZRlItMkY0UEF5YTdMaFNHV0FuTXVMRUEtRFRJRmQ0U19BR1MyUjU4WXo4OFhpN1owYll4VGVUZ0lKMGhaa3lCWnpDam96YzdxemxSWXA4dHBpRlNZd2c1V0xBZ0pjQjNsR0F6MXl2SDNrMzFYYVp0QnluN1JDUGJnZDR0djR6SDJ4ZE0wV1U4bVliLVRFcmpGa3NyMnhmdjlaMGdUSWlPcmllMVVINXpYRDNaVENnMUhLY0dibnRKdEdSS05HdDBEb0lUNzQ4ak5UWTlUMkJfS1BhU0o4NkR1bk9QSjBVbWdsZGFvenE2TmtuMy1qQl9SVHhoREltYW5tdFNQTEd0WXJqQzJ6NjJTeV95V21iUzFud1QtcGVIcENoeWdvbDVoekoyX2hHN21oNzA4bzRkV3BOa0Y2d0kxZnBkRUExeEVLV2V3OVhTaGl5b1Joam9YemEzb2hYNUN2MHBsNllOMzdCTmREbXA2aXg5bmV1b24yZjVhSERSTnVWcG1feGZ0S09rN3F1X05yeW1QbXBUaXVTWlNneWktV3RGNE0wWTZndVNMQVVCYzN6cUc5QVZRNDA4bXNrbEZjcUphREdfYUFDSGQxUDVsZnczTkY1T0YtRzRIbjI0WTMyTXVLcWd3Z2l3c3ZSdlVQYVRkVDFjbVdzelVpdjVBSV92Nk1qY2lXM016TERsVHRjTEpZcGdfWWhxSjdBQ0lIRzRuLWVtWFV1M1BCNDJLRkE0TGstOElPQ2xMZkFHS2dpNXNyTHFTUUpsZ1o3X1pUUmtjbi05Ujlnbm1ncnBHUDBXXzF4aWo0QS1mWkduWmxIczlJaVI4ZDBwaDlVQjZya1lOeGNHVE5yUDIwUm91ZDFmcERaSGpxREo5MWIxUkdJVVlULWhNU01nWFY0cUcwUTF0V0V3TU9UaXl2dFBRTUU3ZDd3N1pSMms5WWdFeTdLWVdtYVhHakJkU2hCYzZzUlZwVWZ6MFNVY0E5MzFrZGtoWk5leExPZWtYNmhPaXZuUktvVi1VeWFmUEVIUjhVOUQ3Z0R5b1hXVUZpeUtkNE9Ea3gtcHhHdDFQLVlSeWhyTS12VEtMV24yNTI5MWtBa0p0cC01ZTYyM1hWd2l4TEJXT3lrbVdSeUFrdk1SaDY0N2t3MkZZblM1OWVVelhLdjdWeHpHN0ViMHQyVVkzS0ZWY0RSNUhHeHhNRUdPZ0E4V0ZXaF81M1NBTGUzRG8wQ2dKN21Pdmp6b0ZKM1A3QVlPQl9Ybjc4TEk5U0s0UmJyaWFPZVFDdFlXQlAtay1XMjdjUjJMbFViZHZJSlNtbXc3ZlVhTnBLbkc1bGlGSDk0ZXBpeGVRM3IyMUZ4bXQxQks5d2Yzc25DT3JCQ0ZiWElaRnRtMkdGZnZSUVZLeEgweTZLbHk1RlItU3Jxbi1RaEFzZ0lVRmJkd3lucjBFd1NDTzZXRGkzSFEzaUU1dXFabm9ZakFlX2hrcnZIYjA2OHY4S0RXdTNFR3hQQzJaWkcwRmFVU0d3LWVCRnRFUWVfWTU1NHdMMDRIRVo5RjlxaU93X0VMeXEwMTljNzRsYjd2a2thSExkeW5ZWElHdXVSaDBnYXgzNzlHMk5IRFUyNmZhS014UkJJamFvSHFpdENxZFc2c3RoZGVRWF93cGY2MWRTbnctRm1xOFh0QVhjUGJtS3hoWTJuX2lCN2VDdXNCQ2VBVTVka25IRnJaV3pQZy0zSHM0WTRZSy1XVUpWYkNEb2d0bWFqQ0plRjRzZDhBMkZ4MXhvT0V6aGVtWXkxYldwbUZHRmFaSnlMOXNlMDFWR1V4bnJwcUxhQ2ZLSGhRcjhJd0pkNDNrdDBOaGtoakFoUkYybm9QdWNrRXF0TzR2LW9rclNTSjBnQUVoX2JfdTk2d1M2S083alNWRFZnMWNDOU56cVNSYXRaT0dXT2x4NExKcVdwcERJb1A3Ujc1azZXOW1ZSk5FQmIxNFI4YVRNY2pCYm8ySEZyUXU4NlpCczFnWU9qT3YxRzF1ZTFmQllHeTdoZjBJMzJhOWxUbk9nQjhiSUdEWGpxQUpWOWNRck9ZMFBBdzE4bUd0QU5ld01pNjM1V19yOVJoRjlaWmF4WWdNUkhSbHFIX2tvY2dWTnVGbDlRMldCUWdBWW9Pdl94Z0dFaTU2WEtXRFh2QXJXdFo1QVFEdEV5emktOUhiVExIT1ZsN2JfVUpLeUhFUFJsSVV0TXV2NV8yRmU3RTFhT1c1TThHMzFqbzZ4YU9lRVl0aXd2bS05QWFLRkRlSHloSzNRYURlNnpwWi10VUFIQ2ZCb3hBNlVYaWRSZ2lQNnV6MkZNNEdTeFZLQlgtTDZfdUxFOERUdzJVNFh0ZDNkMnBZNUozTG1FLVFzTFlnM3dOZ05Qay01VXhlcTN5UXFWUi1VUi16akVGZ3R3QWdrLXdPQ1kxTU9ld1BWT2pzcXdoQy1xbE9lQ0pwMW9aV2ZFcHdtRXZ5Wlp4SzhLMFJPenQ3LW5MSDVILWM4QmVWNkNPNzAxUzJ3S3YxUHFERERFXzFvd2ZieW9wLWoyUWxkeGVYa3ZscjQybzlmWDg3cVNGbGVjcm5jWnJDemhrcWduQUQ2RGh2cjdXNVo4al9HSVZCWkxyYW1EQXpnOHpwTkMtcV9qenBGTng5NXFfaGpnMDJ6VW5NTWRxZzNUd3lGUTBHYzNtM2ROZ0xmMWpaNmdRdXVIckw3YlpJN1RRazdadHRTUXJ2ekxQMDlOc08td0EzN1pla2JjS2p5WkZFdGw4VnNVeUU2RGt1NWNYYWVmM3NERGwxR3duSGpvNnRWbzRwN0FVWkh6dmlmUGdObGNaclNMem11R2x4V0piTzBvd3AxMm9Jb1Zma2J6WTZFdmxpQVN2Y0Z6dnNLdzB3aDNMY3pfaTRINUxGYUFOTm5rRzJlVDVGeHdVb3RoaGN2cDFSVnJmS0toaHhZUXV6T0FFS0RFc2loOFVFQnAtSm1JdTNMNkI4UjB0c1luYV84dXhGbGVCT3NEcHhJbUdjQ2RZV2lGUWEtU2FjVkFLSTdJUVlOTFJqelZSYmN2T21FZmE2NnBWNm1CQ1ZoNmxSMHdOSmZWWHFoc3VQVW5fMFRzMUNjU1N2djc0SzRLUnFFTkFyQVBVeDNydTZwb2V0UTk1bjFBaHI2YVRMMkFKemdtaWdyRndjS1pBT0VJb1Nla3FMVGRhQUhLWjgxek44QkxPZGkzYTJmLS1UZkxkd1ZpUVprSUhtZ3E2Nm5uTV9EcS1HWFQ4c0k1d1BLR2Ntd21yNzZHNzQyTHEwY2VCdXZwYjNGajN4cTRfVDBGN0FyVXpPc1Y1SDJUNGNNV0lRUDJpNGZxZjRjQnlCYXFDVDVfVEZmWnRQTS0zU0R0UWxQdmJlRjgtOGI5Um56VGlOc25rVmtldDZSVzgxcGVkMHdCVWtkNUIzS0JPOXlCVURNV29GTzR1c0xaNFV0V0h2V1JrNEoteWZyeEVGcEZtNGZzTjJpZ0ZVMEM3TEtEQTlWMkE1VlRJbHlvZURtbXVjYXpvdm5PYkRwOWxkN0U0UWl2SVdUQVhkUmU0TUdMS0NJSnUxcFEtRko5dUxpSk1TNmpOVFFFLTNqOXJzcHU2UTJPeUVVZnRiOUctMkJtUHk3dzBHdjZLVWR5TjBoMWI1WmtNSjR0VUhIV1YxOGJmQzg5NkZDcDRtMDRIOUNwX3pGZ0dXU2FfUWlCZDNXaXUtTHdRQU9OeGFoSmpzbko1TVNJcklaY3ZCZDZmUmtxa3BlZGtRN25fYVZ4WFNHcDN2X19DSHpWcTVtTzM3R3dNTUMweHlMRzhEMkRiWlREU1R1b29XemtyLW9EVnU4ZDVDM3FEY0pmeUR2V0NvVGlrR2xwMHhuTWlyLUZHblU3cVNIeDJlY1V6OS1WdmhBWVZLR0VJT05xdWFXTmZoYm5UVmlsVGFaZV85cEM0MWZpUy1yQXFGdERyb3lET1FnNlJiSEtRMFV5OXFyNkZzWWZXMTBEZVZ3TlJwcUNGSG4wRjZqajlTN25Mazc4cDNQcHY5WVlCWWZDVWpNUUU2OThSTXIyU08zc1NaRlgzNHEyZjJzNjJpTGFHRDZteEg2aUtyVy1rU2lvMWpkckRHWVYzdEdpRzJEa2NCQ2s0R2hJLVQ5MjJkUFd4c2NRUnZlLUx3WUJOeGxxSmFPWm9xSmVDX3JoT3BDcVdfaUttUHVBT0R6SEJnejFyLXh6N2xqU1NuUUZrN3RadVZIcUptMUsySXRoMU9pNDhOVW5Nc2VXSE5CVHFubHdhS3NhZ3RadzlabFBEeEVzcHdZVU9xM0FFNnZEN3RXVEY4TlVkc1AyZ2w4YjRmM29nYm1iRjUwajJvcm1lRnpmeWZfMTJlU2hiZXpOaHNuOGdKXzZuMXR1czhXUWRrR0Q4N1ZGckVDZDZWNWFRSWR6SkwzdHJWaWlZb1JYYlk2MHMwQUFPUzE5eDdYRW9SWktvWkNXcWFrWTNRUVc3a0xuVk1Vd1pSVXU3eTBqS2pKdFpVYlg2aTBhQnA1VUg3Mk9iVm9MVC1kTGxGbVM1cXlHWk9uSGd0Yk1Hck5TZTdkcjl2aXNQQk1aSWwzU2RoSkc0Q0tnUlJUaVhxWG9FRkRKZDItQnd0THY1ZTVVV0pYMHFWOGhnOWtUbk5hRl9tb1BVV2p1TUVqRmZCWTZHMl9RaUxNMmNMelBrOFBWTEdsZi1mcHpoeXBNTC1jZVlVS2dsUFBaUnNNazVDUVQ0THBjVHZQMG1MeGZCMHotbktadGQ1NGRVVjhIc011MXVMZm52aVEyY3VmR0FMNk1yN2JyV1hxRGVuMkNwQmdOb1l6aUZjZ3VDUHc0d2FtZGgwMmh4ZHVOVm1leDRTRUxtZGdtaUdrdjM0WDdRMkQ2YjBCT0sydVRYaUhCYlpoa1RaNXM1dDNHTmZyYXFKMnh5b2ZfUXh3eFR4b3M0WUlJd1MtdVdLdnpWSHpmS2tfaGMzZlphZE9NeHRUNkhlZXlpR2Zlc0ZUYWdTVlJlVzI2YkY4WjZ4NkZoWnNTMFNrRV9SaGlpZzZUZDh3M1hlOGt4R1JUekRXZFJBWEcxZ2RvVC1WT2pRblhLNmcwRkg1RVNKc2w5SmFKajlKMTRlRXBqUjhadTNaTF9VTkRYT25qVnhFdmhaaEJIWHlvdnpWY21QaURCbk5ES1M5aVJJUkk3TV9uU3o4SkNpa2t0MjZtMGFSYi1ZcDg1ejk3VGhKakNxODgzOVhYaXE0TnhCaEVEZlJoUzNpVE9ibFdXTEdjc3l0UERzcUR3RTg3NGV0dEhfM1FyV3ZlVjBOdGdxMGZuVG9LWEh2bUVhXzFMTTNNbW8xeTM4OWMwMUxPZDRQNGZpWGZybnFYRTNPeWEtRGV6VGx1NDE0Y3l6NS0xUk8tdlVZMFRLYkZwWEtCSzl6UU5WeWw5ZFRlc1JBYml5WjlZZ2xaenhKUWZRMnhKLXhGX1hFNHpEN2pBNHMyekY5ZXhDc05HbmVnRXU2YlZCMVlKdGlVbEFwR1J0MmFreXRsZzdmT19TUDR2MDRkSTc0d3Rja2NyWDNLSWpFanBBTGZRRFZOSGRpZ3g2UVU5YUpEeGNUSGtGaFVTeVI5SWJKRU5WU3ZoT0xYdmctOU04UmdpdjFCc0JWcE0zUnl0SXRLZmxiSjJYQmI4cFZ2ZXFKUzBYSHpOOTBZZVlReXhadGVudF9uenJkU00wTDYyM3QtY2RXQVVHVjVnTzgwWW50Wks1ZGdhTldPRHRjeDhMOHA4WXczWlJObHU0aVpMeTc2S2Z3TktZLXVtM3ZNMzZOT0djdU9FbjVOOHZPeDRTQkNXNlRDZElDNTZRUVhNd0diVmdCeXIzMzhHTTRZb1lrZkl5UHdZdkM4NExyZjlzdHNrUk1QOWdqWmd2YWZXWkdMdzRUN0dHTWl1cU5IQlB5Z2w2dWM4cS04MjUzY3ZtMGowMU1qVGpST1ltRUFrN2dxazlBRUdsdWVfZzRfMENWcXBfRnB4Ym96TEs3ZHBWaEo0THBTWV9hYngwaWhyWDFEM1I1ZGh3S3ZzeUt0ZmtwTUhrZzRnMjFvem5iUmN1SFpESWJmNWxEVGVaU0lDeWtyM3hLajJfSTVRY2ZlLWtSdmxRS1NrR3UyWmphVlRpdjdIZkxQa3pnVmEzQi1maXFTaGFGV0VfZWhyV2g1Y2pXYUxzY1hxTDkzSlBBMTh4bnFuMk9sLWJfUUhnWEpTVHVsVl9UOXRoNXFBcGR3RVQ5enBacElvRkNvRzUwcElyWmk5OGF2bEFrT3lFb05BakhHVDgzdWx0V2ZfbzU3NGhwa01ZcndoYWxOeWdraWVhbXBsckEza2c2NGlFZDhYMlhual9rOWNzaE9feUdQZW1WNDJiMjVnYjVUMXBpRHk3aHQwNy1fLWcxLXI0N1RhRlpQcWl2bUZXd0JHSmxzV3pPUFc3eVZPUnlrbENNOGdXWXR3M2NFWm4yYzZ2eUJma2Y1UTY2d2NMc251S2Q3MzBxQ1NnajRZaVVXT0VyRVBFSUdQc2stT08zMS1oaDQ1QVg0cDFfbTd6ME5YUk1SalpGQVdMeXR0bFZtdTlCQmxFdFhRNXBzMUFOTmh5YnpsSHZSb2NrQU9nUE1DaUdXZjJMZjhCVnR2ZXBqRWpyaWNzRzFiTEpJRUFTZ1ViRTFJZmZvTHUzblB1TzFXNDhGM0E1dG00dG5zTzdETkNGcXdSMHdHbWhMS00zSEE4TFpYVnFlejVNbjFxX2VKWTJ0YVd5TUhITnJwbWwwampaSExLSVAzSUtNRDhLa2pDdVlvclhxZTQybHRtelV3YXFVclEwS25YT3BSeWMwY0k3cjhFdkw0UXQzZ1lFSXVITkNZU0MycTV6Y3NidE01SmZuc01xa3ZRS0E3Q2lNRC1mbHU0WlJnTDI0RkMyVmFEbThLbGVsdWhvdXJobngwRHVQOVBITTlLRElxUGp3aXhoekJLclVfY3pNMThNRlVRYWtIcjVxMi1kVHZoSDBBc2ZWTWswM0tWUTY1SjF6XzdCMmt1NVFJM0FLSGVKMUF5dEJHUkoycDFwSVF4c2Y1SGM2UG5XWHZSRG4xdEVHYWFUYVBpMzBEQ3VlYjNpZ0VDSThQOEJHQkI5ejJTRkNrTmh1Q0l1RU1PYTFkTzZ0aVJRS1laVGNfSnkzYnVCUm41d0FidHhiemllQjBvbGttdl96RGpHM3hvSFJfU1kwSGxBVlZQOEZwbEhpc1Nic2Q1dmYyM0hHREYwZmNfMEhqNXlYc0tqWGxQc0NWUzF5NC1icEhvdU1sdzhpQ2pHbzJXcXN3MnJNX2NGOW5NTVJ5M3VXVHpsa0JoVXJPa1NNZDdLeHBYbGdrYWs3ZVJRZmxnRUhFbEQwaFZMM3lwalJWZVMzRE5nMzF3UTY3cFFoY3QzSkMzZEJ4bG9ZVk5yQnBZbThINTYtNU1yT1Vha2dJREw5aXJYWDJOc0l5Qko4dVk1ZGZPOFF4OUh4MlZWbC1uWXZOZjctRWFTNFh1Z3k0TUtOR05vVHJ5dWprdl9QNkpyUGpFTkdmNXRqeWRSRjY2YnpvcTBXblFrWHJpLUJyb0QwdURXNXNOZ2pWRTNXd2QtYUF3VEw2WE1NSU51UG1fQ0lNTF9JWGZXbEYwVGRmclZWNlQ2cU1CUzRnYW9LNTFzbHlMdnF1TUVhVmRiODNkWXlkelV6U0lmalR2NFA5YkJ2V0lnaHdRY0RlbFZXZjhyamtQMzg5Y2R6bWdlWkpoNU5PQVAweHFqMUdHcDRQUFdzNDZFN0h0eWlsUFJtUEU4Y19EdWFWOGhNamhWZE9jcFViRzN0TnNGaG9sZGdDYUpqYW9xQjlUNl9mMFFNbEpoRnctZXFQdkxYbENyU0U1TTJCXzVoM0hCc05UekROWmJnMHRNckVBejk4R2Y2dUlCb2FMMWd5RlQxT3k5UGRJbFZ2V2p0N0QwUjk2NDJnaVQ1aTlfd2EtWFpVY1JvdzZMb1E1aV9fY3h6MmRzMmhPZXIyeWg1dzhiMFpmUVVpaFBnQnV3RmhXU1laOER0U2Jod1ZGOU1OTlN3cGVNSmk5LU1RX3RaQ1ZNc20tSGdhOGd0cGVhQUdNRnoxWHdHbWZPaWd2bHBaWEFpanhRZ3BpUlFKcDE4Z0s0ZDM1LWI5RVVGMGZidElJaVBVVjZ4NjQ5UHFHaTNnQVJnXzZxUTJ1cXlpckFqd04zWU0xY0c1Ni1FeDBmdnYwR0F3R1pFUHU4Wldwb3FldUpFR2x6d2xqODBKY1FkX0RlX1ZHcFVwOHhWbmE4eEM3RlJUOWNTYjRZbk82YTZrODJHSjloU19MeUpQWGFfNDNVM2QwZ1hxcFdlWjdIRGVJcmdHdzRqSEQ2SmVKYWxsUzV5d1lDUkRyc0VZZWppUkRicUpmX25nYWFKaGxvb2hpdmFKb3pEQ29UNFFhdXhoN1VlQm1yVTVsel9FRjF5cF8wcWNDekkzNkZFWlduUy1mS0w4cmRUTUlyMV9oMUFwTU5tWFdpbnFFX3pRRjJTNElILWVuS1VaNjlSOEQ5dGJoRUxRRVgxdFhVa2NxUXFyNlFZcDlBcDZndTZZWXZtR2RaMm50b3ZXTTdEdGJ2Q2huZDZ6NG1KQ0ZvdTZoOWJLTk4tbXE5QVBLXzhTQUxlTU9vN005Mzg0T3daTjdtQnVlV09BRVo1a1c4REVPTDlRdV80WFB6d0QzUDdUeEpWWUlKXzRNMGNLREpDSFlCVEpJVGpmRzJiZ29oQjN3bkdCNVZYU3o2V18yNWdvUktOVm9XX3VOckczZVJLclppNDdMemZydjJVbUVYQl9UeXduekJrbWRSSElZeF9oVFZmb3VSY2JqV2V0OFRNSFIwOEhxdTdhSnB1Zm5uVmFQVkVPejRabU9oclItMUxMcnQxb19la005Z0xVd0JUZVBEMkp3bnpJMFpkY1g5MzZpdVhMQ2h4SVY5Y3d0MVFpZnFlTGRlZ2kyUENXM25WamoxRVljc2RicTJkY2k1alJURWFmLXViWGJNeFJLWXJUODdud01YamlmMG53dVBISWxqOU1WRzlib1J5OTMyVnVGalhPNkRzN3RTckJZNnVqTUtrVDlicXQyZnZEZGpVTEYyQXA5SFdYWjBZcUREYWhIMWRMMWRWUHVIcUlGR2JfUDdoUzhKU3o4SHlMdjVRZG8zWWxsSXozSWxLZDFDb3pyS0UyY3Bnb3FySjJSUnhlejJJbGZWSW90UWQ2S2cyaHBDcEtLS3drRnY4QWp6US1LQmlXU1QzNngwWnVzOXlpa0stYjNDRGxfdzVYQ19lTnV6alRFQUExcDc0Tk9hd0lxYmNremROWVhfMzBpSmtGRjN0cmlqS2tyTWl0WFZvcWsxa0hILVpiRW9pTXFrSUdmWmN3aVVsMDhmcW9kUnB5OXBKOEFMQ0ptdEFzcHA1VVBjMXFjc3lFZTZPTDhtbUo0bElVZjk4RHNIeThtZXoyaU9HcHg1cXZqMDVZaGpkNFh6VWwyT2lidUM5QzVfWU9TazVfdVNSMEFsc3EtcWxEMm5NQm5IUDNxRXNtX1EtR09rSGJNc3VhRFFCLWUtY0dxa2g0UE5FMFZ5bWwxS0pSTWtsTGRRcWZOTHh3alJ3cUEtMmhmUkRhbW1UMEVLR2RzcUFVckZHektyZldjZ05pdGNsa0F2aDZYR2Q4MkhoNTlOZjM4NHhTMWRMYi1QaUhRMzQ0WGdUNERHVlZJN0I0UzkwU3NFZHZPRndrT3hqRXgtS204eGdzTG12MWR6ZlRoSE9pNm9EUi10QzVaSmxqRzBqY3JYcXVkLW1tRFlyR1U2VUdaT1NHdE1iMjZuZmZqUTlGRi1EdUJWeDZNOTJMdUwtTHRyWW5BelNKSXE1ZEUwOXREbjhjcjVjYlJmYWpUc0xZaU5tZE9zZzFGSzlXVjJnT0ZwNklzUmd2bk5Fbk1sZENneHdUZmx0NlV4VVp4Zl9RSTllX1dsOXhfRWhRejE0d0NJRVhHaW83QTF3eGpRTWZtV0ctSEtlUk1ldFJoTFpEenNrUm03azh1bVJiUi1scDQ1UmNGZGtBSkplMHZBVExGa3NDS2hsbTYxaFRhU3ZTZzN2akczbFJqX0tFZHJ5Ui1kaXN1RVdXYm9SYllTNVNVU3RUdWVCc1BYV00wWDVvRHRSZ3lhd1ZhSFZqcGR0TFRqWEdJOXY3dGI1cmRYTzMycHFjZEd6ZWNwNlRFMi1rSGI1QndTVHZpSUtXZ3NaQnNKckhrMHUwX0tONlpJLXpUUjJqT3ZYUjNSZlgxWTJPM1dLTFFmN0tJUkFmelhwekJPdGlqZTBkU3BkeVl3Tk9Da3RTMzNUbUt0Mks5X0JiaFM1SFl6YTk5S0sxVUN1NnRRWldwM1NTNnZqOV9OMVU2TWY4QUZmdmpmRTZ1QWV6QTRTNjRMNXY0WUNEZEJGYm9xcV9JUXIzY3VJTmFSSmpvbVNWOHlKazNYbzFsOVNYWVY5YmU4d00wLWEyRVdpaTVMQ1RhUHJGREpZWHFBV2hzREU5Zm1GaElKSWIzelRLSWlwbEJLMV9Ea0VMcGcyN3E4SGlJcGQ0QjU3eFNJRUJvZmFtblM1WTNYSkJyVUhWQWRBaU9jUkE2TGRMN0Z5RVo3UlVOcF9TaDhueXZYbHNJNjJuUThYSzZ3SjhJS3lLZnhJYk5uSW5mcjV1VGlfVFB4Z1FsVlU4LTlWZkVwRTBoRV8zU0RLbkhnZ0tjNWJPcUxETVkxY1pCTUphYjVFUENhWVNaTkZ0SnFhUkxGTzRYVHdWTjFvektqVzFyanpjdUNBMEZvb2J6WTc5dFZsOWNJYTBtbWx4UlJPWUQ1dXJTNUpVYmNIVm5XWWxndHFzcWFxeWNOc3N0YUdxNlFCclZFc3JjRy1SdlQ4WDBkaXQtM3c3X2lYek5TeENJQ2NBcHBGRzcxRWZRMHF3NDloY01DWDc1VWlLVDFWQnpyV0ROa21hWUs3VkFuNmxzRXhiVXY3Z0ozUjE0TkUwWFVRU0dvd2dfdDhQWWZsUllIRExZWXhpNGMwaFJYZjNyenpjaTRHWFBIVmZkSXEzMEVkNFlTaDJFcFdWVFFLNWlEdTZJSllpUFRSNGFKOG9Qb0tWVG1ybFZKSHZPZjBEYTZFcXBpWWxYTXlmaDNleGdpOE9wajBmNmdlVFZjWFdQWWhpaURKbEtpekJVelhHbndBOWEzY2M5WnBrWnhsaWxMVW5nU0pRcVBsWVpfN1BHc2J5OE93ZUQ0ZFlEaXVEdjhES3RQa3hRZXdKM3c2ZG01RFJCRWJKWGswQkJSdm5ncjhoUVh0R2R2YVFiMHFxaHNNUnRRQ1BlTWZuTkpEajNzT2xpaW1xc2NTeV83RWZwWUU4MGVFYnV1RWNTTVVkNUQySHh4NEVDdGZNUTJfYmVXTGNtTGotMEltcnQ4dUVfQUNsVkhEZDhjQUlRS3kxSmxTWXF4aXkyUGkzZlNfTHFqOEh2Mk9sNkhKbzV2YS1ZMXNvVjBWUDZhNGVWanJGdmdSdzRXTlh3SW5mRktLaGFITjZOS2hocXV2eWhCX3hWZjM0QnFzMzQ1bzlFbTdPdUtlUGJVWWNMejQtM3pxYS1vendocGo0Yzhaa2w1Xzl5eE9aaGhQQXZqVGRiX3BKa0hUbGtxZ0M0OGpOdkh1R2hNN3J1aTc3cG1VMThJd2ppQlZ3Q3NCbk8wY3BrNVBzUVlRWTZpbHhWakpuS1ZJRnhpTjJZWTZaOXNZLTBZMGg4ZVJDZlpWdDZDS0NsdVBWX0gyOVFmdFYxb0UtTENYOVVCU3BDeEpOM01vcXNwZXY5aTgtb2ZQY0VnLXRwZ01GYnRKcjA3NFNPMWlEenVpNkgxRi1ZbzM0UXZ1QmhMajRvNHFwRWxuQ1pLMkJLemtYX1ZjclpibFJEMWVWSkVxRGRUX2ZtZVhWRWRpTHI4VjJrUmVXT09Xa08zZjhUMUJYeC1zN05VendWMFh1MklhLXpJS3RQXzlNMkhpYnBMR05DN1A5S18tRzI2Z2Q0M0hwcHFNZE9TZmpCSUZaamVVbmxPUzdSQlJOOEZsZ1YtSV91bjJnZzRsMGx4bHRnRWQ3aXFuSEo2VG1idEcySU1MaF9fMVFCOUZ2S0V3anhycTYxREpSYURIaFkwWi0yMFQzaTZWcnJSZ0pYUGFOdXJWT2RZZzh6Q01SZDY0ckhvcDVQU3lldW41M0hHREZ4NU5BNERXQ1lNTjRoVk0zNjk3MnA4bHlEbEVFbUlqRS10QUJacWctYm5xb2JvUFcwUEJGdnF4aUo2WDM0ZEVXeTZJcWlxNXp3cVpHeU9OU1NnOGVOQ0lJVzZFVXlSWjVLZnk1dXVSS3lEZkUyNjJTa3BzR1hrN0J2SVF2MVFLa01iWDlwMF8wb3RlVFJaSTgxV2poSFRTcWJLRFRBM0hMNGhzZXZ1eFFScFdwSnN3SDJWaGZrenBSUjlDOUJKRTRsYTZ4bkV6U0lSVThYMXl0SkV5R3k3Mjk1N0djMUZibU1iSGgzTUhLLUFUUURTa2pDSkVuM3A2Z3Z5eGUwS3Jmc3FDUVJrUHAyUXhvV0pXWGd3WDFzN0JQeUgzS3FSaUdhUlNzbmZKQTcySmtGZ1ZBWUllZW5DbHJ3dW5taGRaZ2RWaHZqbFpzOGVNQmYzVldmSm8yenVyV2NtNmhPajRrbm1vT2xRX0ZyUTV5bGlSdE1JbkJ5UlFMZnRCU0dLbm5zUVloOXB0b1dlcE9PN2JWQzdoMjhlclFRaDZrU0x1ZGw4YVNzcTY0NWdYTTFlVi13OGFVZmpXdlhNOVd3cUlBc0xzaWMwRVdCM25qbUZxMFQwOHJHM3JlMGQ1VnVONzFBcnA1SVVoelNmQ2x3SVpWc0VBQ29ndzJ0MVlETWw0cWZ2c0RHSC1KSTcxVmNMQUxvWTRpT2NXUUtUMkFQSVZTZzJXZEdLNk1zNm55czBpX05XN0d0VjBsOE12T1huR01pdERqX3hYTVJ0b3c1Sm1FbkVHMnZ6NTVzNXIyLUtmVFRVMUdCZWJnZGNUNkl6WnQ3NUVWS0RVeW1nZjhEaC1WTVgtSG1GOVNxV0cwejZOc0JOaUVDblpJRThVanRkVVhia0dZY3dZVGd3SlhoSE1CMjhhVkNaRzRVM3FQbmdRb0ltNmVEeVplNTV6LXRaZUwxaVhEeXhTQW1YX0FwTHVGZ0Jpc0h6QUtOVkRhRzRNb0w4NDVjSktsVXc0NktTNE9HR3REQ25nX3lPaTdHUGQtZ0c5S29iQzVlX29IbUpuMHNDdndlbWdSNkQxck5HQWNQWW1YeHhWdEFQLXp0X0dTMWMzV29ZRUJ2QnR0UWlITVlLN0dkalhOUkhBMXpVT20wdTFxa3pwMzhqaWNxTy1wb0NzU01US1lTbmIwcW9iZ2RmVVdXTHZnNS1mVDhSY19fUmxFTlhnLVRmMkFuQVgyX1VfQ3N1Qy1Mbl9taUdOTGJZRmFlSFhpeWJ5cVQzLXVnLXJrbnd2WGRUX0pKMlB3eFVkcHY2am5PWUp5V2VIYWJ5OGp4cHFIT1J0akhETXRSZml4RnZGeEotVlg4d1ZjRF9QLVhlWnNsR1BQcmFMSGc4aU94dWRzM0QzbjQ0Ny1teHp3V3Z3RnVtOXhNM01FMTNiUU9jVy1LU2tKeUFocnhuazhtMGJ3ZEZhdXV6bWFaVVBkTnlabVVwMkJQZFNUSXowZmxRUXM1cm1GZDJQdkc2cS11VFRIUmQxR3hsMENNUTRYaFlMdlo1SEk4RS1BdzBkNW1ibDBVZW9JdW9jYzlWa05GWFRXTnozNHE3Ui16dUpkTE1EdE9IdzNvcGNvN1hPMHAzS3NFTHcta09FcTdldEE1U1l3QlpBWnZZU2c4V28xTENOZHQ5NVg4X1lvM21HUEtQVENKbjlVaHFuMXRHSXhONWhxeks2alhLbk1mVWhiRUtVcWh5amZmYTFzOEdGTmVuYnc4ZkMxSkJjMzlZSHBKYUxVQndCeE9ZR1pZOXJtWUpUaWd1VTMyVk04VE1uUmRRTURmdFZpcDZXU1JKTmFzakl4VzMxeWFHY2ZtTFRQMVZ4TnlYeVZ6Q29zbXk1WkIteTdfZ1NQMERlV1pHa3RqR0dnUTFBbjBXY05pSGlONmw1RUxfazhmaHZDTW83LUVtRmdGWXMzNkZfbUJGdGxmNEpzdEEwQ1FIQ05MdmhYWExNbldUV0htN1lxQUFqSEpHbW1HUmNiWXdFcUFPcjlJVVducVA4Tkk1bk1IU3d3WGVqSEhoMERUQ0xEbUNmRWNBREI5SUJhOFRsUDdmX0RHRlpqSVJpZjVKTFladzZmSV9wbGZyS0NCT2dTS2dqMXFoeWxhR3ZPZFNaSVIzT082R0htTDRCMS1TS1BSaTRwZ1dtcXc4Wnl6SE5tam1aSUF0QXpfTjB3WVVHX0t3V3UzQmp4MDZQVVRSV1BRckV3QmRkZzFBUm9lTXFQSGhVUkhDNy1OeG43MkUtV3FJdE1hUjRnUTJISExrY3FsaHZSNWV6c1otTWRoUkgxWFhzYTRCd045dzZrOUxGSEpzVWpESUx0LUZHVGZMWGtoQ0p0djI0TG1xVVBRR2UzLTNaTTVla20yb3lNNTZkR1dSM3dySmViS2hsYmVZbUFpclljWTN1WEpkZGN1MU9hclVqVnlJZnhScjlTbkdoY2dYaUlkV2UzdTRuZGlHbEFxZWNEYTVaeFktSnV4M3RsSFh3ZW04Vk9fSkpaRTdWeGViRU50RUJrQThvLWhHUUFycmFHMHZXeUkwWXEwR1JPZW9oQXhBSHlsOGZaOXBiT3o5OEdOVFhTdXhlWUMtU1R3clFid0FUaWl6Z0pKSTdRYWlvU29ZbWJsaDdaRmFLcUZRTldRc3RTYndaV0lDNHlqYklBVmVXV1p6VXBldGl1Zk1ENDgxNWE1dE1YeWlTX2JUVExxY2NxRE1kQkpjVkU2MVBKeHdQWUwxZDBxNzBzWGliVkpOUEJoVWJxV3FobVpCbEZ1dEh1dElCa1RCWUd6VEV3eHpPX1A1ZEdjOTFYTDZlOEtsWF9KWFM1N0w5dTlsYTFfSzRHZVd5b3dNOTBRRTBhc0lzZW5MUDY1SGhZaEZtNmI1RXktRFJVdURLbGJfZkx2anppc3EzT0NIYTh6YUo1X29adFdKelJIOXpIQU1kWmFFMkZPVFVWc1V4R2E4cGMzTHp6Y0JlLU1manZlYWsycThURG5weHFJdjZLbDFKR1pjZ2FwOHlNeG8xOWFYTGhfamYzUUZiSkc3SzZ4OGExZ0RGbEdXYXM5UzhpUzMzTFFGbEJreVE4T09JWFF0NDJ6N2lUVktvTFZaTzhtSDVjUFByYzJzZVN4QWdrOEJ5WmdoeFJkdjRuWHlpUGdXaWUwb3llTjJMM0tiUkdoYS1RZXc5SnowRG1CMmg1VEEtNUxPRlpzaXU0U1RXODhXM05mZHExb0lLYTh1cjFwVy11b3FIQmFwemNEdkVJMVA4SE96aGgybDdCRWEzbUcxeHhncHlFeFo0QmhsR3R2NXdzUTd6cjRUMFhxQkRjQU4wYjQyWWI3bWtmQlJyMWlJbi03ajJsYmRpM1liRnNoWDBjZXBZcW5YbzZlRURsaDhPM0huVVNWTG54eTJFRlZMYUhLMEd0ZEhsa1o2T1gzTGptdWxiaGtxV193MTdnWUpGbDlTeXpNek4wcnFnYng5bzQ2VzVlV3JBRXVHTkktMDlLWUZXYTAzWTdKVFFDb0dtNl81NjVKSW5MX2NodUxrcnllbXNGMXFvSUtJdHRHc3ZHSnEzZ1FFamVBSVNPVzBKbExMYVJLM19hY2RtNVpPeC14UlRqbzJVWUxESkhRRkM4VnFOb2pVdnhTYUJTclRaZldDTGpITTNKQy16c2FCeU50QVBsVmx3Yi0yTUpiLTl0UmFBalVKWGRGSkd4T3FNOV84TkZCUVc1NlU2XzVmRDN2ekl6OFA0dk5BQUE1MVA3YndfRmZQQWdoUlM2Nm5UR1pkZmJaajI1N3ZFQlZzN3BhS1VZcHdodnRpQUlaREt4Q0hBMW16alA1c2Y1ZElRWUpIUmZBOWl5QnBHY2JJQjB0LWVmN1hMTmdYVkdVcHF3bS1QRTRfcTMzVkJPbjhoNXVDTmhLXy16SDZLWUlxX20yQWV2UjhkTFp2TE1kazZuQ2VnVGliSmpuUVN5NkV6bmtNZ0pybFE3S0sxcXQ5NFNPQmNia1AxaC0tNkgzQmhQalBpZmg3UE5xcXpBQ05CUXB5U21sWVo1ZkFXXzlVZUliZ3A3bnFMSlZXcUJVc2Vpa0N5dXAwUkx2Yk9ndTJnMllfQjk1dlVVOGNYN2l6T0tsYXpVZmZDclI4TFBvZ1E2cU1NNnhnNTgyTXNfSExRNktDakNpSnFsMW9pbDVudDJrNDVtdzQyWVlIZzNadUNKTXVUcmZMVlNmazlJN3Z6TTlyYUZQcXRCLTdyMlBwNExXQjBLM0JRZnVLbDFHZnVoNWZxRjFvTVFfTTlxVUZNc0w3MW4wYWJjeS1pTW5MZEc2WnNxOEhBT1dsWjM5YmRyV2FBUXZ1bElibEZQdmNsS2xfNUs2cFJIOV9HYUI3S1owa2hRSXVUWFVPS0VIOGRvTV9hVmcwZFQyTnZGaXBhcDY1WERMNFQzWUtXZHgyYWtfbUppd0NrajZOZm5hQ2NMOHZCbm9YZWlzdFVwbjVSYmhVaDljR0hZekZWWmo0ZTU0aUc1d0tMXzNEdUhzU3RvTGFKVXRIS1FuaGxwWkZ5QTBIbHhpRE5uSXp1Y2t0Q0pTekVPTE1ZQ1YtU3hTZy0yZmI4WGxvcUdfQkFYWDdKcHRvOTd2elJCc2xQOC03eDhjUGlIdzFxYzhvMlFYVTJHYkFmZWNES0pCbDU1aHVJREdwa29RclVRWHR6MXBZN0ZPbmdXNGJ5anJad3Z1YXVEWlNHTHFVMFFGZm9fM2t3Wm1BTDhFaTJ4Y19vemMwNmduNnFHNGtpalBadHlveVpNd2xzZm1zOUdDVXVwbEtZSWdiaVhuWU5DeUxjNElwWTR5cnJ4STM3X096WUNnUWlxazJTUmJocnRZMWh4QmdrcFV0THJqMDZYWE5uNlV3Z293d3FrSGNJckUtUk1maTNUenB4cXVadHZHYkVEalhmZnM5REFidjZMN1lVVXBhRG14YS16RVFmV3JUbnc5a1F0MUp0SjNtei1aN3BaWVNBVGh6bTFRejZtLW9rYzNRbFpkYzZFSGhPNExnbVZXQjAzWG03M2J6R3dHWVVMSm14a25CdUF0cVJDYXR2enBYd0ZFRGl0NmFuT0thaTZZSnlkUzA4dnZMTENoSzZ1VEFBMmY3eXBmR3ptY3h4WE9XUi0tUy05LUxlME5PU2Nib1RpakNmTVpJRFZNdmZFSmV4dFdXZTNkX0Y0U1hkck13X2dvOGg3YTFmcmxxVFB2b1VEY2ZfY0ZicXFacjRDdFBWZnltQ000VEtWMG1UaWhVMG10bjhEVDhYRXljdTFWU3RIMzhwUXRXemd2UlBzcWx2dEZiRENMTUYycFY1RkJUbHlYS1ZQWFJvTEZOUUlzV056ODRQWHhlaWZ2VTQzRGR5SkJyUlhCc3ViUy05VWZ4SndzVDZVR0FsNFZCNEREaDFtN1FGeXJ2eWlIS2tYSXdGNlJkbGR5dWhrYjJqYjJmTUhiSHNfdjNnU0d0VTR3ak9mZThXdktwYTFHeUk1clMzVzdQYWFUYnZvaXdRZjBOZkFwUm9YUlFCVDlIYTQzQndNMHctajg1aHpZaVRQTWVKWTdLTV9KZWZxaGZLT3AzZjRlV3FjeHBqdmwyUmtfMHhYWHgyWWpzcUFSZE5RUzFXa2ctY1NKaTVDLV9GR18zeldoUjJVSVZmN0hKQjhpSms3V2ktckxCWEF3dHpVUDdzYTIyZVFGOTE0cHFCNHc0R09nak92Wkc4MGFZQ2kxbmtMSndaOFBGUDliTFFHZzdTVTBWWkY3dXBULVBQMWtYMGpyNDJTQndSVnlWVUJRc2lmS2NVRDlobENsMTJaOVBLbllyQVV4Z3kyTGJzTXYxc1Q1VTNTRW9mTlhMZmozYXo4bVhqZTBRRWpkcjVSOXNJTzVCaE5fOGVpbXoyREF4SGRLX1o4bWZvZFlTdnFRQ1pDcF9VM3RQSUt4V2k5Y2hvWG10WTJJeUZVMElzMGhSeEhUNGdjeVVSOHZjY2lvdUNfOW5WSHk3WGxSYzBhVFptQlNWZmlKZzNSNHlDdlpaY1FWaUhxT0pha1o1OFR2emFZU01ySmRGUmtmTnRwVGRrT0h4X3JLMUpCdlpRQjRCUWFfcElaMDFUZlhSd2NqRVpwRGNVc3hKckxHX0thRXh3TmRLN0dBQzFFbUNqZEp4OUlVT2ZPczNhZU9oaFlibkE5SU5ndnE1YktXTG4yZThOaXFqTzdSZl9xa0hEUWUxU1VwUDVaN09rSExmMEtEdDV2S0Y4aFVxbS1JSjljRlJzSmtsZXk0N3BqQTU5UXhkbVlhVkJkMUswOVZyQnBYcDZhbFpRSENKUEx5cExXZ0lMdmtON3hQNUo2dDZlZjdBZXhacldXam42V3YtS2stQktzRUtnd3djMnl5MHF0QzRJRFlERG9TZmFBSkoyVEhLWnVGVlFiVmtRR0xYUm5Mbk9JU2xFMkhOaDVzdGRhMmtfdjRtdUpNZGhKVlBYU2RVRmZDTFJlS3JuRXRnc0Q1RVJzTmFoUkFMR01wdHpvX01mYWs1S05VMURrNDNoRndvVVIyS3JZejJIdllXdXY4TzNaLUJhM0o2VGtTbFFqRTBwWkMwci1vSHUtUlQxbmR4ZGl3MklRN1Q1OWx0RmFOZm5zc3hJX3VtT05STVJUM3pldzN6MlNfVFBpcWZjLTBqdUZZcl90OFFTSmJwdFZPU1JkdE91eDVwM1hIXzFkLXBRdm9QOUZyaGxVOVNLbmFvbHBVLUkwUlowUGFQT2M0SWxKcndoZi1TU0tKbXl5ektwZ2UwdjBnZVZCbThBZWtRUEtZVFZ1WFB6VjVHRlloS1dxNUxGaXo0SXE2WktlMVpGVlVFOGczS1VSWVdpY3pWSGN0M1RKMHNjOFNCX3l3SWRxN25qbHFXT1JZUUJQdlFySDBPTVlUY0JtMk1aUGpFQklERVhJZEhRM25CUjhseDZfNTk0Z3c5U1VMT2dwTmFYZVdLWEhwTFFxRTJpMEZFdERENU85M1RsWTFMcjU3VkxfY19haG53cVlBMGZxRU5mcENfYnEzQmlsR3FnTkYtazhDdENtUmpqNVVKQnNzWF9VUGtTZVBOOUJReEJOMGU5a2VqcHkxRExFRno4bHVud2hlNkZ0V0xOQUU5dWZNUkZyTDVfdVRtOWFUazlBLTV2TEhuRWRWbE5YVXZiZ29LMldZYV9wZFBPWWYtU2NxZGNmUjR1emNVN2JkcHNVSXlWSU1WaEF6YTBkTnEtYTBUZV9pMUM5VUZnbE1EeUtZUERaMHBEMzlWcG95czVheXB0YWlJU2pkeTNoc3QtbWdIVjJFbmFvalFnMGo3cG9EUV9wck85eDBSMjJsSlAtWk5ocXFnYm1jT3JJOWY3X3Z3NjZZVzNFZzFUZTJQbF9MV2R3MnkyZkI2blpPNzJrM1oxVGt2ZENEUS1zWEZmMEcyMFF4RXFaaTRsMXBNOW5PRExNaU1sN1BGV2h4dk1tcHFNRXJZeGpCSXJoRXVwWVhvNVJrVmZmN3Zzb3docW5MMTNOcFZrdUY0b1FDYlFSS3pEMTJicUFhRS1YZWdwdklBc3dzcU4yRTgxVk1YRUJWd3dfa3V2blR4VFZYMVV4UkJqLUMteTZPVG1ZSTRDWlhaNHJfMkNlOVNPYkZYaGpHcmg3bmRGRXM2WDRGamVRNHg3Y2k2Y1RFY1o2VEZvVXpTRkhIUXBPcE1WclVibkc4MGlzc0FyendrY0pjUHpMX0xwOHpFUmt1MnJQZWFlWlZsdEUyZlV1VWExX0NOOEx3T0IxRmFKZE9FOUFLT2ZScThUX0d0MHJkV2I1d1hkcmdEZkxQbEc5U0YwQmZTU0l0azd2c1NMaHRzWjBrZUdXWjRVcDNkM2VueE5qdE5EcnpjV0lCSVNfM200cTZZS1BISWYwakhUSXVJUTgtV1BLektWY3FNdHRJbkNIVmdNOHl3NkZwdldGbjV4LUdIRWYyaUdrQUhUdEFXTS10VDBTU3I5MDN2Vkp6U1hnaTZ4UXdXZXdrN3BtM2l4WUtDX2JWanFBLXpPbi1hY2tGbXZsTTRUaW5pMmdlSmVsOGNIUzJfUTdUZ3Z3Y1FMM3J1NHNRUVlIcXRqU0pGdmdnOGJuMTRkQ3NiMV9BS0dwQ2NlVzNmc3Y0U2lxX0U5OGhRdDZBaTBDWVRlMUpab0cxMnZZRzdtQ3oxYmItd1BpbExQZHBlMGs2VTRZaHFVanNrNnVtazl3bnRsZGJvMFdPZlZ4QUkzcmNxN1VidGJSQ2diN0stNkNxRG9oSENsNE9iTmhVSFRPelE4MTQxcHRGRUVrbmlCS0pZRmowa3JZX1BRckQ1VVA3YW1pRUxzWldnNmZSM3ZydWl4T01xU19Sa3pYcUszLXdadU9fenVTbjlSNTE4SHQzQld5U3N3SF9YbjhDWndCU1hYYmF0X09MU1BiWTNqeGVlV2hNcW5pUHBjY2ZkZFJCZUZINkF2eklsSjZpZjF6bEhPeW5vVE5fX095bWVkSDB2V3h3MTVRcUc4aHRKZmxhNEJiZC1UMnM1cjZmaUZ6WE93UFpCcUp3WXFZYzhMdlhZSW0wX2Q0MEFEaUFWeHVfTk5DcDJXM0g1UlJlcld2MEJIQndzM3IzVGNBVUp4elpkUl82VVlEdG9XTUlhV3BZUHlIVXVUZm5JM1VGUUhPZWNpQ2lMRWItNnBkY0MxbVJyZW1IX3RGMmNqRnYzWEFibGd5ZW84clZKZkJxcm5lVkREQ2tyWElrd3N3SjBLTVJ0VlQxcmV1TE95cEoxZ0lPVWIyMTBaN1dDTkVOaVpybTVWZUhfNk9tRjBQeEllZjd1dzQwcjBxXzMyQjNfa2Njbi1Ic3FtSkZucXVSOHVaM3NSeE5PRkIwc1gySllmQUZ3OXcxaE9udHNQMEpmY1NidkN0azB6LTRhLWlvVDluSndlajdESTQ1UDRiaV9uSFV1ZnFsWGFXek91T2FJNUVwNmNTdUE5cmEySUotQ1FNOXU3RlkzQVJzNDBNTy1Jd2d0NDluX29BbUo0SDVEY3U4RWxCZV9VVmJXdjFGeEREMXRkVzAtbFBxazA1TldjWVVxZzhkanUyZTJVUTRBUGJlcW94NnZqd2tvektuOWlpT3lLREdzaHNGenc5OXBOTUZpSnd4Z21SX1l6VUc3bTBoSGRWQno3aTNJS3Fvdm9tTktHN0F6eTk1VXVpQklQWEVfYWx6MEZ0MDlyZVpBQlVxc1RGVEhfRVRzb0NmSWg1bUlwdF9NTkxCY0hETnhNVFRqcG96NDVtM0ZPSk95WkVJSVhJTC1INjJtQ1IxUW1odzlmX0t6LVBuRVlaR016NWlMWW1XamNGcmVGUnJxdEFBdFpOaGdfWmpjMUhkd0pIYU9ZZlRIWm1tQkRXUDBwdGY3V0tZMGFZQ21jUU5pTjlSeWZ2bFBRRU9ncnUzSzBKeVRwVEZoYVRYenlOYkx5MmNFZno1cVZoSWpoVjIzOVhhZ2sxZDVVczFtY3NLNGlXWU52Zm5BcXNXcVVfb0tKWFJxTmJBU0pLcllwMDN5S2YzclpqcHZDWG8yTks1cUQwMXllSmxhOFEtZHloSXN0QzlCaHZmTnltb0FNS2FpbFBZZDZFQTFPdXk0WVM2WW03M2w4YUdXMlRtN2FVTWpHQUFOUnprYjY0UGpFU0lZN0NVMGw0dGpYb2tPUFFvWVNuYWJwWHg5SWJZUjlJZEFtaUZuSGg4aTFBdXBReGhkX00yZWhVMzh2MjVJRkNza01qZEM3MExTWXd3YTZKVGZneTgtTHV0dGNSLUowZEx4LVRQeWFUQXMydlpzRWM2TFhqSGgwcnlxenl4akdIZFRRNzhoZDFBRlZQVTZnZzRUSEpFemItMXZoQUxXejFwRnk1Y0Y1MWdSOHpBQmNHaDI2S2VwZ0VYNlducnhzYU5BdF96QWFiQm1UY29qZ1VfZVo2dXc1ckpkQ1dDZ1hXYklmSWVOWkt1MXhwaWhJeUpDQWlNeG1oSmh0am5uODRWZHVTOG9nVk1aR2MweUpCZ0lvR0oyM0ZnNnlXY3Bpcm5XWmQ1YXlld3Frd2xBOVFILXBuaEI4UjBvTWRGUmZOd01MeHdiRGN1b3NUblVTdFRqcnR6dENndG1UTDRiMk5HYVBFYmJ3US1MQXE3QlNJV1E3ZTZxWEJpaWFuemt1cWpqOGozdVhycWxoRWJGV20zbXJaX0ZNWGc4WWp6dDduVGZUSDRoaU1ZeHMzbXFfSkxlN1dVNWdXVElRRjh2enU4dDlwR2FXM1l0akJla1lSb24xd2xMNG9XOFVlNTdTYjMyLWptVjN6MFZYMEhnSUxCYnBPQTdsUnZmdTZMMWJiZDBfU1ZJVWZxYW90T1JuUm9DdWw1R3BMZU01WGFvTmdkcDNvak1ocnZHcFFHN2ZzVlVlSi1hYjA4VkoxbVluWDJELUZBcXItWWl4cEhSdTV5bGVDbldJVFBvQmxyOTMyb01JbnQ3ZUJieXZyeTlqcDN6djlZX0pLaHoxa2dfR1drZnpoNi1sV3NGZkFqa21leFJhY0NmMl9kX3ljbVFkaEw0TDljS2FWUG1qdmxfTG1rTlpYRDhaXzJ5LTFkaEtYQk43WkdZZXE0d2NIUmJ4YjVKOTFfVmhxd0tFcDhXalNJakNLNERGcXNTejZOYjl5dWRYNlMyaHdOSkNpbTR0MVVCRkRRcndoOHhkQjlFUGhoV0ctaEZkelRESWowa3laTUhVX0ZMMmlyYVE5Ty1pUTdfRHA3ZllTUnBVR0MtV25DaW5XYVdqM1VRUzRVUk5sOUlxU0V4eDdRQ2EydnI4YW1lczNjUGE1alNxWjBXMnBvcjZrOVY1RXNReXdDRWFERGxYNVA4a3Bhd3ByUkRrQVEzSGRlWnJUbXZXZC1FR25jTnpneHp0RDFFZ2xxQjR2a1hJb1VoRTVSVW1EN3BOR0w3T0JyOExDbTR3LVZSc0dZUENvWmxHdm84X0FnMXBsSUZ4RmNuM242TTdXQ2RNUV96UUw5YnlmX2Q3dmZqOGpmUVc1Wk5weUUxb29tTFNJbk5vellndHU4WEpwWVRhb0ZFYW1hQmtSWTM4VjVzVlJlbnVVRi1tcVgzck42eEtvMUxmTF9FekttdFBpYnpEUGRLWktEei0welpRLWNNX2NBY2J0Y0J1Zm8wQy1zbkYxZ0lPVUQ3dGwyczZoVXN6RE5SSXpLa0UyOHVVOXhIX3g3NnFkVUxELVpLZTc3dDg2SUVCRDUydWFYcVNneGRGd0FILV9lNmJVYjUxNXN2R1M3cXAzVTdKcXNCQzZqYlNKT1g5aFgwcTRoZ2wyYklzaW1xSDNZalZIN3Y5SGljaGd5NUhISEhseVA1T2RjMEpaZEdTZ0xVQmtiM0RxbmZfc0hwaDNJX0JKYXZFRVJjZXJPSjhtWFg4VVY3Nl8zSlk5NjVUSTBBX3N3MHN1OU1OU1dENm1aUVpuXzlxTzdOSWZPeUdqSldGUGV5SDA2XzU5VjFvdWNVbnlndkZwTVFIcXVINTRDaTQ3R243NFBObDFFdktfUThyNnpZZVRmYjFLb1MwOHlYZW5hLU0xT1EwMWd3U1lSZl9WY21MWkZhWTRmXzdRTEVYdmFZd2NuWWZTTFlwNmoyb3l3c0V5R1NkbVdZdG5VZ1RnbGdUWlZ0U1N2Z0N0UHE5c3czMXBoWU9yVHBHTXNGQ0MtX1NFZnVxUUtua0UzTDhncWNaQ05VeTdfaHVMTFZ3Rk1IdWZqLWxBdndXcXdGWFctTkNMcjhfa0QtR0Rha19rVEMyQVNiNDJ2WUZFT3IxUndRT1NZOHNvZG9JU0E1VGYzOHBUcVl1N2RuNnhpTGF2LUcxWE1WUUx3bW0ta3I1ZVZhVEc5TUtKX3RxaFF1RUl0Ui1ieXFvWkpya2VqeGhreDlBNXRzOUQzZFR1bzgzY1MwaTZjTE5sSTNaS0hqX3k2Q1dGeU92YW1ET1VmSlZmUUNrQWQ3ejBzVkJlaHZyaTJjUGpIMTVXSVhGaEdTdlBXQ2NIckdyYzkzRkVWVGIxVmVwT04xUWgtVzRyT1JEdC1Ea2pVTnkxYm45S1QyUVNuUkNTRzdUZ2p4Sk1aUzI5SHQwUkJaQVpSeXhEeUtHbnBreFhUOUNXajlrRGlTV2doQXZ1UVZjaXl3R3ZsTzZ0c1dacmRJeHhIT0dORTJmcWNRU0FvUzhYalJSVzdLU0V4Y011aFFyZEdtZnJiRDNUTjBXYmFLZ0F6T3d1cWpiMmdIdlNKR0RlNEZ5YW8yNWthWGxna1J1eGoyZm5TY3Q2Uy1hUGMyeERDc3hCVHplSmczWjJGVXlxZzlsanhWTWVhWUQwbHI3T3p2WjNrLVVQTjE4dERwTUZoTVBxN1piZDdZel8xS191NVZuN3RxeFNZcTcyYkZIOXBZVl95b3pyUGxfMWdKTWNpY2pOVGdyQzlyeHZjbGpMRHE5dzRlb181VzVaY3piektFTEE3Z3pVWXUwVDg5MVExWl9WWlFqTkZlbVdzR1VkcGVDdWFaWktNMmNLQWhXZjBDcUU4SEFJUUJzWTlCSlI0TkZwbVppSVhtVTRmVVYtMVhxaG54THBoNFpQZ0VrYm1UTEQ4WUUwZTJVVkFwNXBZbUVrS0xOZmlQM2dIcktpaUpFOWxXQTIyb0d4SVQ1NE03bmVrX1hjMFUzVDU1NkxyZmMzZDZDandLSm5KMUdlTGF2TklMT0JFNDh2U1Z4cWdrSXc0cE0tX09KcTFpazVZclVCUm5Mc28zYk41YS1mdTU3NGhPb2thcGdSM1ZSSmx0YlRUT2o5b004aWtRSFJfa3l4NXJZcEZfeU83ZU1iS0lJZmZfRGNVZ3E1dVRjX3pFcGtqNUVad2xzdmhqamJBTTJrWThjcTRsMmVQdFk5NXJtcEhMX1BCU3lkN1g0NUxYY2lGVWtyNHg4Z3A1OFpGcHU5RnBUNEhaVHJUTmhhMEEtYVBheEZJMW5WLV9YSkw1RGdqVE0wZDNrb09WemhlaXFPZUFsZmhpMUZvdU15QlNKUjZKRU0wNlB3NzdPY3U4N2t3VDY1LTY1TlNxWUV4Mlk1YURsT1JEdFpSekk0SFU2RHpvR2puN1N2cnBWN3JKMGpwV2dnZHRZNTJCQWtVWWx4SDVuUDFnQU9MdXd3SUZwOVZjZ1RuUFlTQzJILXA4RVFNQTM4MTdzWmZLeDdseUZNYWd6TkFvbmNqNU9XMG00NzRFWTV4ZU5JZUlJMERIMnhWUi0tOUQ1X0FMQklmMkhMYzJaLXZTM1ZrbjdreEFuOG5HTWdoNHUwSlJLc3BYSlpIZE83bkRwTm0tUnlycUkxODB5VTd4T3gwa2JFTUF5VVdYekNPbjZub2lxNW5NUkY5MTYzNGZ5X291bmpIQ2ZadlllOW85RVZQRllqZVVaT0g3S2FBbzZFdHMybUxJWmZQR3ROMUxfRTZMN2NFSndJaFl6N0ZJUDYwcEk4RVRfaW5rby1sMm10aU5ZellTckZTenFTQjh6TnV4MUdoc1p3QmFJQTlhSHRleExyWGxubHp2U0ZHUWd0cTJXNFRTVVNKT1FCeDRKcnBrdU56QnRpOGFGcUpfb2RrMTlvU3BHT1AwU2dsSlZwZEpoR2ZYYWxuY3ZYT2sweXg3RnZfOExwdnRkdUxzeXJjU0hrU0NXbTFldlN3U1k4aGJfUjdtTi0zV2VQd1dDVE5pNU53UUhzbHZUNWY2NElQQmtlWl9ac1Y5NS1KdzlocUlCUmpwMW4wNDZ1Q21HVnBrVG5kYWFKS3NRVDNGcXhUODZaTUtNczZNSnRrZlFxUXRtdVFXYjRNMHc4ci03bTNIZXBiWjdWRi13NVpyM1VxNzlBN3VVRGlPVDZkV1F3LVJVdjRITkhVa1lDZFpxaDBSM3BPdDVPTGtPejBMRWJlakUwNGFuRXNQRXJlNm9zSFRuS2hXal9nMG8zOXlaMUY5em1fZ1NRSHZBRjl1dzBYZzk4aWYxNWlmSXJ4cUthUV9vc2dKSHFGUUpjQmRfRlozUFRPZlc4VTdxVTU0ZHJWV2xmcHJyNEhyUUFhZG9ucjlFNmJJQTc0N3V4UnFMejJ5WWJFY09WUlRsR01peG5weTdSZFd1bFRDTnNYZENUd1FLdzBiYy1qTTczSnFjZ3pCQVpaOXhVbThjRHBNNkNKYXlZeVUtalRvejdXT25oXzhxaG9fLWFkbzUwT0lFdkI5Ti1QRlhadEF1WEZoRDM3YkxYaVdXYkFuZ1VKTWI1SmtpZi12ZjZlaWNzNkNsU1FldVVuSDJ6YmlkSXZRb0dmNzFDMDNHbDZOT1YxVVZYMjdsS0Y4VXFEUEtqTl9kQVo1UFZieTNrdnNxUWFSY3hCSFpYQUZfMUZhZ3BPdlRMQjlFZEZMaTVWc3ktWkMzaEJSRmlIOVI4Ql9vUWs3MnNMMDhfamhsZ3huUDlFbno0NEtMeUQ0dldydnhfLXZCRWhWci1KQlRoZDM5ak9iYmFVdXowOVpldnlXX2tXZ2FEblZhd19BMk9admd3eEsyLUdoR0VOLUV4bjJtWFJJcHZlcGVGdW9ya3RDYjB4Mnh5YlpzRE51dmxnSkRnQ0lhT3lJN2dPV2ZjQjU4Q3JwcFBROHY1bm1adEpuaUpZWU8xMWNYTzZxMnhUUHFvVmVjX1dwcE1BNndaaHNLVTFJV3UzVU9tc3hOYU5ON3laZHJBUkN2VWtZTG1VZGJaTnNOb2RZNDZBdW1MMFdWZGpNeXVWRXFCVHllREw2bEF6X0dlLVVtYUNVOXFLQ2ZXYm5ndGplVVRQX1lySERvUzV4cVo5S2VZMW0wYkJpOFYyZ25talVwUjBIVnBRM1VVc3FUWmlVN1RCeFFheHFnUXhYWE9JZU14Uy1rcnVKcDdCYy05ZXJtWlN3S2FVLUFCRTE4SThFc0c1OERBQWJfb0pKZnp5NUxDT0ZSZmk5ZGdDOEdCU0ZMUDEwc1loa0RMSlRuR0d1Q1NiYTJEVU9paHJMYTl2VFBPR3hXX3pOT3d1bWVEVmZCRGFKS2M5cHNCTGNtdGZyUnhfcFZVcFlXWnJHRXRVcU1nd1lxUXNCUjBZZk94REpvZDQ2aEdLTFJhV19GNHdONWdPVm5pdjQ3VjBYYW1OeFVNZHVSMDhqajg4WUM3c295VUh6SzB1Y2szZ3h5bEF3M2FiRXJ0a2RUWjNpekZmYm9lTFlYMEprYjg4RGM1YUxRa2dPSzFnSW9OZ3BoQ3JwTDUzVGNTcEpfa1dWczMyWURKUTVwS3lnMngwQ2Z4S29SVlBHV21HX3NyQ3pFSjN4MUhvNGJiaGN2YUhFeTYwR2d1R2VDQlZuOTJ6amI2V1BhNGRoUU5SNjJfYjhmbkRRcnh3b2ZRa1kxQ0Y5dVRUUkwzUjd0N2lwTDJ3a2NZMm52ZWRBanZTZWtVQ04zTEZVcDF3OEJ6U182MXZsby1KQjVMNHlFVGtyOTE0YU5WUEZWMHljWTZvSVBQTE0wXzdKRS1TNGlJRlQyWFppclpKdDF5VDRWN013NGdLelhPenpTZXZ5SnozQi13VndEMTRNVF94VkNzQXdpcXU2Z1BIdzFQeUQyVVM1aVhtX0JLSDBLNnBCeHZwSXh0dndLNDRBalBBUGFmVlBtTnRBek9uUlRrbkF5SnNYRnh2VHBwSmwzODlXYVBoTmh0U244STFZYUMyZXJ0SUZsT0ZxUjF6NUw3LVROMEJsWGJoWXRlYm9Ya054OEdqa0ZyN0xvbV9ER1doZmt4ckQ4aXBRVm9uaTVaenBnSS1mZXBHOVZaYmo5U01qTWFYZFplbzRra0tlaDFVbHIzc2FpOU5XNnhNMWVFVWUzdjlnaV91QWttN0dhdl9fckFncUlyYUdCWHNvQWt2N2d4WWlqcV9CSE9ybGVXOENFRU9MSFNoWHZKbEY0YWJCelhHRDF1ZkJVbUw4RnpubWphajQ1bjhhS0d6VEJydVFBUjBMLWloOXRfemR1WEExTEs0VURISzFlZGhCVExzQkw3bmxkMHRENmNiSE1ra0JzOWRLenRidXVFTVh0ZF9rX2tDWFhkQTBQYUF3R19aNUdoSnBicG9hRi1DRVN2SEEyTkZ0VS1XUDJNX2x0ZE5hR2hPVm9zaFJGeTZVSTVsRlNGRGltcVNrY3VUMmpnUmhOYnJEeFFjbldEOUhHb1o3TUNiek5IZjVpVEhSUFp0ekZUTGZhbW9JS2kzSzBjNUUyWGVPZjJCaDVqX0ticjVTeTg2UkNOVU9JejJyWDZIcm5YTmk0Yk9vVS0zcUF1NXJBSjhJLU15dmViMTBucFpoYkFnZXllaWY2c0hyT1d2QW94M3RIREQzdDBIc2tqSFlYdnBlUkVFdTdET1daeGdNd01waWtHRW1HYzZOTktpeFBEX1BrbzlEd2xxbFdNcE43Q0xUOVRsUGRSX1RWZm03bG9CY2VpSWl5Z0o0MVpJNkxnd1BXTkx0UFEwVDJyTEwtdnF0Xzl5dXZDeEV2alZOLVg4dXNwS2E3TURhMzVPbUppXy1sVEtRdUVxMGxxMmtrUEJDdzdiMTRsNlZZcjJwU2NyZk5VN3lLSlg2M2lsd190STVWLTl5eW5SMmZSNUx0c3FMSWoyYURrTktucFRkSm56NGt5VEJPYU1mdTBSX3NrZF9faWZqaGdfYUJuN3VVd2dEOTdFb0prejdFSmtFRTFWUk9RSDdTbVNXb3pJUDFPdHpJa0RTUzFwUVJPbGprbExGSTRlTkFLWnVUMktGSnQ5dkJUZFRCQ3VNcTRDb3pJc2d4YUhiQ3dBZ3Z6R3V6Vm9qOXhrSG1jajhuZ045NkFSNVVyQTQ5Z2c3MGFCazY0bV9vcXZwM2ZmMlhJc1JuS1N1a0J1bmVqcXlraDBwVnlqUUlpcmVRM1hTWm9idDR3am80QjNxVTBJRFlvd1RuOVVVWTItMFdrZEJvajFnOHItN0EzWUJ3bHlOYjEyM3podTZ5VTR3b2Q2ZHFNX1dVbXcwMGxYN0ZDQ1hER0doazVpRGdVTmFxMEZHRDZhU2NNbzJsQTVNN1B3OEsyMzd0TmJGTGJEdU01VTk3UE41ZjRvWGFfTjN5bjNQM2NvYWF0c3ZZb1laY2txdnFYVUdheEt4QnFvSXlhWDJhOXAwdXpnZ1RUMHJXc0s4aXlLN0xtRERGUDNXQWdoZVJxdlNSS2JneDRjWG5xVGZDQS1CZXlxdTFtN2k0aGhEajhoYkhQNkJtX21yYXAyVTh6MjNuNWRBSDVIQ3ZXN3JlcmZESFFYbWpvd0pkdVVsT0N5ZG1haHJpMkJLOHBVdWxVLVRIU3g5cnBuSjYtTU9wZ2ZVemlqZXJFTmg5WE9wYVM1SFA3Z3d1djU5ZlhXTFNaSXkyTVlweHBLeVcyY0JiZTRRcVM0RzFWWVlCUlF6YnNvXzJVb3JjUnJFTURHR0xJUHg0NFhqTFhPRjR4VUVZaDdXdFdFYWdQNy1nZzY0UFZnT0tPSEIxcHJQTThZWWZmRXJUR3hveTdZaWlPNy1qM0l4VkdMendQOXNiRmluaG5XZW01WkZlUFJMYlJzNDVReEZtekRac3FYaUhRTWxhZENEVVV5SkVqWnN0Y01uMnVLQ055MFJXRUVNM0tvNjN0UFpSYU9acFdHbV9qdFdsMWZSMXpnMlBwajd1VUNMdUFfVUZEb2pkSHFwSllKTU1TbGhfeTdZNTRadzBQbXVMQUg0U0JhSUpSdHNmZXVkQVE2RkVxSVFHeTliOHExYjBEektWWHY5cnk5YUEtU05jeWtjZDVsQnA4NUo2UWIyYmNvSHpxcVRUQnJURjFyMVdnMFJ2WXB2dGoyY2xBR1E2Z0V5WWdMTjFpODRzTDdtZzd6SGxHR3M2NG5UeGl3dDlxNmpGWmtvckFBRWNIS1ljcUJzUENpSE9RWlNMd3AxcXYya1Z6ZVRXSE5VcVFXNEdfVlp6cWdibnZnTGpGYUpzeG1UOV8ybmczLTk3NF9ERlpEMkFaRmFTUG5KR2dfLVU0dmtBc3BGaWxzWFp4cnJXM3hqa096dVJoZVYyVmstM1JoZDROaGpVbHRnR3p6dFdwOHRBWVhKOUcwWDViYWJZSUxENVpRbGlJT29DdUxRUHhrQWZCVXFuaU9iOGg3Zmwwd1lxdnprdFRMYWRodTdIRDhLTVZVT29XWHBJU0dGOG9xUnZ3akU3aWp2MVhsUkhTSG1NT1E2MUV1Rk1YdzNGUzBDYXRuSXBJMm5JaGFyaXlkMlVCNTNGdTVlYUU4LVc0Nzh3X0dPT1VrVUpkWmItWFozZWJiNGY0ZDdDOHJSNkUxaTc3c28tWWpMM1ljOHdyNlNMRlAwQmxBdG9EbW02NzJQdi1yeTliNWFpNlN3cXdKTjl6VVhZM05SQ3BjY1ZIczdyS3ZlZ191N0VWVWJ4Q1R0YVJxemw4WUpKUmJ2LVBrMng1RWJpdTFGT3k1VXAzbzZWS3BRb3hYQVhpbXU5UERuZnJqeDh3OHFQU2tvcnRwY1VvZF9YYlVSYnBDRjlZNW0zTWVNa0dsdjg3UndiWUxGTnJsS25nZGsxSlA0bzVnbmRKZ1pydGluaWdjcmFLaGFJd3g4bHJyS0tUel84RUFKcDNpMndVSmRzRzFuV2NYd3B6bEJQX0JjZUxPZUkwSEhma0FqY096c0NFVFFwN3JPcnVjSWpvNUlfelhPazBQMXdEaGxwU3VjaWxHQVUzZFd3a0pweG5DdHItazdKa2dvZ0txb2dzU294ZWtpaGtYVVJpbm4zWTBaTkpldGxuNTN3V1l2WHVMejFFYjNPOHp0Z0NSbFc4al9lblpjUlBtM21fSDlLa0lWUXl4VC1RUVdUZVJ4NXFIRlJxVElQcmNxWWxmdENjbWk1V2MxNTlLVU1NS2g2MlU0MXJ4aGZnS3ZOZ3JPYUlsTWJXQTIzTzZvZWFZamVnRUNfaW5jMXdVd3hvWFF6b05PaU5pY1hnWXk0YmtjY2xXUnJBS1c2Vm1JSzh3YlpUYkVjOEVFZk5felJGQXlmS1RDbHFyZnh6WjBHLTBOTEg3MkFBckd4YkVHY1o4LXZTT3plRkVibF9haDZBVGtMNmRiR0lGYWRSN3lacU5BRlFZbFpHNDc4ek1aLVJMQjhfZVpHcWRzUWNfVF9LbEgzTXl3MjhxOW9IbXEyZldOVW5JN2dLZ2pDZnh0cElMTEYwMmZsWUZpR2dmLTJ4NU9aZE9mNmJvdjk5M2U2YThjSEtPYmdmWnBJSDZTUThvZE5yc0lSNVlEUGpkbFRZeXBMTUZMWHFyYzlSTHk4dS1MazVQNlBMVFozQy1iQVU2Z195SXBMR1ZZS3cySlVOOHBkVUZqTWxXRkMybWY2VVVZSmhiUnk3bkpiY1o5OVMtTU5WcFctNFprVlhzNm15aTlqY3pkSEp1b1gtUXozY0FmWFBQdXFRbWRVcFFiRnQ0MEpMQlRUc2dKNTZYbTNpa3ZMdmNFRlIyTzF2YjVtdGpZUWJHSFBXMFdqVDdsNDZEODlrcmtwSVNXdG5udmR3T0dOMHNyMW02SGlrMGRQeFI2STJmaWh0TkVKaElmNjQ1azE2Zkp5WlhYV2haVG54QzZONW9CVU9ncjRKRTQxa195MFJfVjY1eW84SlNmamFCRERzV1R2WVctT3hvSUdVdk8zZDVzaGpMQXVDWk1vbUJtVE5aak1PWGE2LUFxX0FiT1BJaGtCZDBEcHJJZlI2Zzd1RGJleG5OUEZmQnpHZ216N0xxVnd5MjFJZFZsSWQwcFBJWlpVTXhGSkUtX3JjX3dzMjF2NTBJOHBUeExqNmlpUUdIVURrZzhfX1hzVEttZ1BIZXF0REN5Q0xoZHlnT1ZGdjFQQVVIamhoWWs3SGdsT1huVTlHZmctVzNXNXBVSk9FNExSdlFnYl9HdDBYX2t1cDMydnRReFFELVpjYU9YcWlsdzY5Nng3UnhvRGhsRmk5QXNkRDhVREpQYnBwOEpsOUg5dmdETEJrTnJ1YTBiYjVaVVpadFppZWcxelJBcHRpQ0FHWGo5ZDBFZXFyNnNqXzRGRlhsc3gxTmpyN042VVVqaS05eDA2ZjM0d1pQVk1tRFZCaXZBUVNDYW9aSXg1UVNPeWl3OWNEcVRDWXJIczlhUWZKZjVwcEQzNkVzTkJ1QU1hVUhJa2lVREdGT3UxcWRROTlMWkNEOF9IWmcycklJcjZkd25GLVA3R3Nacy1VMHJ5ZGNtOEwwVGREazhhRmZGT2tZUlE3REtjMmxDcVFPeVF5THg2cjAtVU9NakNVSHBRTnJiVGtIejluNlQwLVg4NEp3UXotRHVVV05UQUNlRFNRRTNYT3VFYkNGc0tGNGtnMnpaNTdKS0xVaEYwU0JuWXFzZ2FmSHpSckxRN3JPOHZMdVJXRS1BbkVucDBwb3NobmxZS0ZLUmpaSnhfalBEeEhpYnF5dGo0aEFQSDF6TTRncjcxaEtidkp6UG1Dcm5GZjJxbXdXNGpSOFBCOHBvdHBTQ1Y4WDZPcllVUFNXMmlLNlVBR0E4dTZ5V3A4aU9DS0k3OHEzMFpGNkRtblZsYS1Ibl8yRFFHaktzT0VsbHlkUjU5UGpIM05LYkNWd2gtLXZiNTM1NU11VFViVEVyemppeTJWbjBFSHFycUJORGxyVjJzcldoZG1uVm1iSmFfck5CaFdXZWx6Sl9hbVNSV21qVGd6YlI1WFQ0R1oySTZGRG9MQXdUeGxydnd6Z3U4VmR1UHN2QjNxYkVmRm1QM0MxV2FPVTA5MGFoNS1FTFpoZFFUTmd2aVNaM19ueGdpQW9VQUZkckJqTFAtMS1mRjhtXzM1c1NxTmVYTUxrTngzazFERTQ3b0E2WjVPNDIycFoya2lTUFBjRTJ1Uk0zQzBYT3RDbnFfUDh0Z2VaaVJIcEtHQUZqRnZpaW00Ym1ZMG5Rb0tzMG50SmZUTGZfSkhKLUFUMnFDVUhTbE9wMWpCUmlsQ2dNWFExeWIwby0xZzY2OTg2bE9PaHM1WDRQSk9Vc2ZzanJmT2dpN1V1eXNzYkhaQWp5c2FBM2FWQlp4SUIzOW5UZTZWUXY5NDZiM1JFVGR0YzR6MWItZER5LXNSaEIwSWlpYXd4S1Z2VzdIb05yNGhZU0lVTURaOXk0a055VU5nXzhPaHBaNTlEd1paQU8wY2VhcEsyMnlVRWxscG1zazFUcHlFVmJneWNhSzRaeWxWLWtnR19wRC0yWTdGZldaM3h4LWF4Z1dCRjFJMXFXRVNtQkl2SGJzZE5OV1lWNW51UTdyZTVsVUt4OTZacmU3WEs1N3dtRzhSWVd6MTZ3Y2ZYY1lWYTdtX2dwSzR3YkNsUVI2dkRMUm0zdzJ4bkdnZGRPUWRpTFA3eVAtNUxoWFlwNnA1TWpkQjdRdHdEWDVSX0JET3lvR01uemtyeWtIU3BYeTNkM0plV25xSmJwM3owc3FTMGRfMEZEdHNTcmpmRzFCZzRLUVR2VW9EbGwtbnJ0LTl2T0l5bWJLUkFmX19JUlhOaEszNFRPTlNkTU9sc2ZZZFJBaUZmN2dXT0JIdU9nb2tyQ3VVOVltUGlHclhNSUsxa2hncEUwcGRlV0hGdGh0bVlRWmNVcDV5anlHSG5DRDVHVnFDaFJCNk5HbXlOUS1aelcyQ3VhcGJoRDVOUWtNb29UaFpYZEFOMjNYSDYzMV92UmxJYW1LVXFESWFlVTdtRE82amIxLWVOV2pIMUNNb3A3dGpOZUVSVkJuLWtOalE4ZHR4bm5ycXA5dGgxb3B6Q3cyelhMR3JGMmNleU1GRHR4UFMwMEI0cWtNb0lfd21RRUlKb2dGcXI4SjVjd1ExQjdCRGpGZjR0d2dfNjhqUUpHZnFmSlhsTkplVDhuOUJ2LTZlWmNfa2o2OHpucXpPMi1LOTVsOVlPVC1zS3BSRWVTdFp6MEhHQXdfVmVWbndSLXhoU1VOUGRHc294b1ZPX2FncGVwOEhyQjQyQzktWkc3cDBNZUstOWlEaXRnNGtNVy14blV1MVNUaHhoYWdkUk5SY1o2dUR2YnlRcW52Z1FsTlhOQ2QzdUpnczg3RlpiZFFDRnVlOTcwZlpYcFRmLUw4MmhSckRhaTVUVVZucU9lM1hTNWpiMlZsV0YybjFwbko2dUQxU3hTTks0SDh4SXBWRTBWbjNjVW1jdllYWWpiT1lyY0VYT2Yxc0lKWTRvYTJPOHEtMXRTZHl3Y1BLMXE4VGItYUNuOFdWSTlyRTFNTzduSGdCMlJ2NHV6Rng5YmhSaklxSEJseVlpVkV1TWF5MTlRUEVZPQ==""".strip()
10
+
11
+ def main():
12
+ # 1) Read the key from environment
13
+ secret_key = os.getenv("ENCRYPTION_KEY")
14
+ if not secret_key:
15
+ raise ValueError("Missing ENCRYPTION_KEY in environment variables!")
16
+
17
+ # 2) Decode from Base64 -> bytes
18
+ ciphertext = base64.b64decode(ENCRYPTED_CODE_B64)
19
+
20
+ # 3) Decrypt with the provided key
21
+ fernet = Fernet(secret_key.encode())
22
+ decrypted_bytes = fernet.decrypt(ciphertext)
23
+
24
+ # 4) Execute in memory
25
+ # If your code defines a Gradio demo, it should be launched here
26
+ exec_globals = {}
27
+ exec(decrypted_bytes, exec_globals)
28
+
29
+ # If your decrypted script defines a 'demo' (gr.Blocks),
30
+ # it might automatically launch. If not, call:
31
+ if "demo" in exec_globals:
32
+ exec_globals["demo"].launch(server_name="0.0.0.0", server_port=7860)
33
+
34
+ if __name__ == "__main__":
35
+ main()