diff --git a/addition_malabr/Dockerfile b/addition_malabr/Dockerfile index 4bea4f02b9cf40..5de0e152f6308e 100644 --- a/addition_malabr/Dockerfile +++ b/addition_malabr/Dockerfile @@ -1,20 +1,22 @@ -# Use Ubuntu as base image -FROM ubuntu:22.04 +# Use official Python slim image +FROM python:3.11-slim -# Prevent interactive prompts during package installation -ENV DEBIAN_FRONTEND=noninteractive +# Disable bytecode generation & buffer output +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 -# Install system dependencies -RUN apt-get update && apt-get install -y \ - python3 \ - python3-pip \ - python3-dev \ +# Set working directory +WORKDIR /app + +# Install system dependencies (optional but helps in many cases) +RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ git \ curl \ - sudo && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* + +# Upgrade pip first +RUN pip install --upgrade pip # Set working directory WORKDIR /app @@ -25,9 +27,16 @@ COPY modelserver/myrequirements.txt . # Install Python packages RUN pip install -r myrequirements.txt +RUN pip install gunicorn # Expose the Flask app port EXPOSE 5000 +# Ensure debug is off +# ENV FLASK_ENV=production +# ENV FLASK_DEBUG=0 + # Run the Python Flask app -CMD ["python3", "server.py"] +# CMD ["python3", "server.py"] +CMD ["gunicorn", "-k", "gthread", "-w", "1", "--threads", "5", "-b", "0.0.0.0:5000", "server:app"] + diff --git a/addition_malabr/benchmark_data/100kb.txt b/addition_malabr/benchmark_data/100kb.txt new file mode 100644 index 00000000000000..112d0219da464c --- /dev/null +++ b/addition_malabr/benchmark_data/100kb.txt @@ -0,0 +1,3 @@ +question: what is my name ? +context:pcnUbJGtQkkbFmgDyKtFLYPEazicrBhoFSqHyEScXMsCRQKlzcIfIdzxcoZCOxXgDntdczZKiBxSccUgiCHlkZaGtXwECvmpbDfUkFnEeBSZQrONnIYtvCnGVXtKAxVZrxONHjePmsJrptDKWfxlvsDCiBISrwPuPKDgqanmjuNysofwkiPOFxWLsVenHgqhggGJUEvkNUievvLASPSQlbyzYIZGTMJkVURkjykzroOSUBVENkIkliTfhRnisaTqhWBCHNAYUSZgqEYVAlXHibsxpvEOiEIdAQQyeMQSwjzBojfyspoIkoIXFqfOjmiATAklAPUKShxXtAzXjYuatqdXaFwdNvqjQhSAaXksToAhsccYjywMIqUviZYTxCWyckVNBMloaRJifmJnTwlnnFNWiglJfWzwDowubbKGeEETLdWdYjgYipplEiyRhFyncWNJUwSzgLkcqzyiHQRgaRNZsSVTaQOcVoCdIqhvAlOBqqDkWuUFgpvDGxVjEZPCFLtcOgZbIKSNWFtuJYswKarwIzCgqqdzOODbMWJbmZZfaPebUyYnbgioyKgBstNcWvaIZZoTeVGucbAYXUotWrFZKxtBDSSykCUiJurfdrpPuwpZqZksYDLIAeyrcymjXzqImdICGyOzrmjVqzDIsilMLiWZhHPknemlYexZjKttRJYMMlplWgaESXDIgXeYqdxwTozQAweWrEGIDtVYiCmlbdthFqLyHjGabSMBZzECtNWkMnLYkKnnUYNJKpRpuBSAJvbqOpYEsofZvBwIwmyRviLwdjElvXvsvFIqDPWVtefUSJpedxvrtFILaZpfpKizJADQNSlJhAXpdYFqKvGuFBeCuJNugAsZPMDbsUgRaWnCuZyXHSMMPWqzrBfWUgWYiQUGtUoWMOnGUnlgnXxDujimmqRpOAYotvblwDLdeYgHRvrKKfBTVIRvxmYrhYHKxrFkVRwGGAguHyDxJClWbhsUOfxDGZIbGymgEompOsfaJRvHoVykXbENNcikQXxYDRsBdtQEOUshghZbAoeuGmnNmWvhyzKPBFjVYIqnlybFibyfwcijKJWvolvWjwuTXzywvRTnVkSgRsWcqylsLVltCvIyDUGbSkvHWKOPwFqaoxptTJgNLSjKVtzXSAwrIvbiEdShuMmsAKBVsQPjMKwzqNTLQxpHUYNJWVlrCeOsDxzEjEMwXwiHOSLeNXgwUYgyyWTndVYGnzmtkNfvcNxyyiNsExgeFCgwstmfgfqONUKuVUhsoPYAzngLDoWgMOIHwIoQEgBPbIvBaFKiIYifzXYMVrvTelMBMcSwuFxOXWbmDCYlmIOcAMkKVdlfCFNqwvAZuqLCaBqLuLqaEpHjxPUzQqRTlfAJrKQIHlapDNTnGHLdeDjynlZnBLknZsyDSJQEZxScgvwKxjBSjCSGuCWVnoPeYwAmBWZdXpwSyJfxaqDHEqqzvILtrUsgcuYqKnuyNvkEnkCXbSdMKUBjCklqLyLqJCCAiGWFuEXrqZDEVVABHbCKlsqoMZGYEEWvxygRhCuDEyyRcvXUeQbwSipCWgDLLPieewfhEMcFuQoHWGFTGfmDRGTArSSKBwGGHKeHaHFPUszNynOsqvgUwPKmTppVgwMGepaQlMsRkYdXNcxcbCOfHGwVMRJtRefYNogIcgMgiejqYmTbKHLwPqmMrKetvbwLxnAgVBklGJKhJzYlzaINeBXWCDQxSFGeAVDHqAoUjLuNKuHzcSEVexApqTlLwEJWgYRBNsprrkAlarZKeBHjvADNbOwFzftOGLgeFuLjBRIzSyjPeqRYgytlgQhDgUcaZBFxRlmShyXMuNoFlXOBKTwfyQJepRLNrOVvHfKFUbtNZkvvlayyFYsVYZrerMkpnqLUgJzpxtiCUKlcflMzEmEDgHxXFCCgVWqGTCTGzoGxSmvADUcuJZisbBupKSQmFQOTkcyDtLczmtnEtzsUGNgJFuFdStWgrosPWpTAfsTokyGTrEeEdylnpQDvffatnMXUjDOEmVkogjOKQJauYTEiVaAKybHtcafzlwhbZoklVxumATxfyquHiKAPsvHEnUyFlKITkOLbVzMkMxSxRRtlIwKUluTlJWEsMpKLdGKzPzVvFbNDvPuXcAhmIjDXUjxwGFGPzSXBfKDHDxRkPeBfEAzGOEpqRpDmdwFjoFpMewvwGmInjTAHvAppitQNVhWIldWvlOMoqZopuRnlAzSguUGrPzBIOdZRJHHJbZgiwEztftdgGWyQydicUZcRRcmxGunHkfzwHOAfVOvlIJnDxesvPoAKwDwvPbAJnYGaXaXDnHoiNNbEdpssJbMfuMLOAoAdVYCsWXjDzIdVePamvNJrwNCATEovalZyEFailDEUcaVasEJzpNyRnTUDsXiIGMwHrxQdFHVWftgjguZTpCMWEFRCxssvUDkUVLYeZYwhTABtQPSlHgXWMAfxcDUHQsJrqKzhEdGnUSEhlvGVwXSwAzNwEOuRsKnDtYtpRSijUWycInPffBaRcmQEOEUosxUExGeKvvXBpepkXqbFthLPFctwyoFRAJJDIAuesuXTjYUaoewmUrVZwIXOyTQwIbBmgxJhgmVtTVuYXpyuEuBmQHTvdjvTeSFkNvLuyactxPcRTruIZeQQBpUPpnWbokLidqrXCaXLmYKsENKARhOmWdcksgrievxYWdhJocMeAxJDDbEdFGvfbxSvlPPKonrjqBFLwaQcKGAHXFWmQvJrkqdFXbNWUIWoCdVDzDBRoMdtOEnZpYtVoMogSKDsTEfSqDwoWglwQTLEbzBHsidVuMXZtGgDQgbRTamktVINrDYRUmndazgvvYsllyvwSqbFWBoQnQpvToxVhpzlMmzueMAyoTCchBaRWBjZhAeyoRpvwdfareLyPetbIgtfpdhxsSFqCMWjjEbrljpfAtorjYOrpheAkOIGETdfZfgkWnBYcuBapQZVKNzsatdtIpjoLzMXuyAkBdAoxGOUnUpvusLVDwyibnCOCtZSTuOGLjsvikCECIyfHDdMpCgtHpawKGKhZNWCmOZpoPsOytmuoaTvTdXsPjIRdtHeVhcUnLEHtYAKuGDmGePAIzUlRrXswBnUxWtkUygGpjYYvzMLdwTIyjuqoLMydUNEqpsjPfbgmTZYucrqhJYTUiOqXuskCpBFZsfoptbATPfkpwLvDhRDeBznMXvgVIpJLZPClmyzeHQDCzkaZFyPIKWWzazRbJcGQuHbDOpJvmRpbBBgnNKZEOccyMwoABGdVFhwTHlmTkbCyeYEFNPRDWzntJQrLEgwqNHBoOEnQqXwgBWILPyvzauhRtvASYFrSWdxDvqPpMmMzzezWBQKjSnmRMJXSMutYIRrmjebtLMmBiehTOTnVBTzFdEcZppdqnKIUhuyHXJhTMENgcqKJwdnFvRQQzyEpTuduoniIDotqJVzdcEWsAwKoVBGMzndxIvMLKpOxOpfGgIniUptXmJecIyICbrtepWIdmDPeSwXQngClCxpXnbFLPXGGgHuYssUaiYVwneCmQNVTLYlWgYlxgvJZDFEfbpwfaLNrpkVgtcjdMwEqpihmCNmTCAVKshTLhiEUzbZritoxwYtrahJyNGlwYgekgWiQvgxDxjIcTpYIimuGURvMDhBgNnkqiMipKpwUZXQGKcUiZjDYJqHZGUszGBsTxiAXiWBSMroqbguliIzEXXSmVPiMbbARlyySvsuzSkyNDUCQChsYwkimXphGgmwQlxYnzQEpByUrCxXvsOKUNCLUfguheRkzzLlBouvsNLLTMnrTNIdovuFsyhwawkfVGfiOuLSmnGbWFjtBXgYAGcMpNMGvkbaTYrZjGmHpFVFndNaaAThaPrGSCtUbaKxrSJDxwgyPlTftzYxGPXOeICvahFoDzhCBvzcYamQGcMYAGFyIoQYVIXWOdgNHsfBAzAPCWOYVzsQEdfnubPXUBTvwOGdpKKIBJVDalUOmmQXTAEIVftDSBskBdllMnavoeQWPgjWypYXYoZhamrCfihjdXyMkhwFPirlpptkOcrIZIlAEYuNxlVSFdkneIIdGcuBETOUESjajhuRSGhRazuQTfXSalGBHrYhdqRHEEIIDBxMyAlhqIFPMLWNwHshYDXDFtphqznUYdpYTMdFkdrMtrEMxnIuiFODexhSeuiJBUenTIDMSzqKJGgKrQtnMjCccScLCeiACPwHJJXcxKmoNBjKPdJKDDvGuzRnKIjHVAnKACcjojmNeBepmzEHxMCTULeyhoXTItqooBBrNDQAuVxbNgsUHYvuoDnAfoqtLMusVSyGOjhquzshBFenORTOLdmOxdBnRQYfzqWOWageLTziTkLASUrAOtACyYlADEdhgxDsUZNEUcgVqkAvRpdBSWDPOLdWLdMpDUtlkyuIlwRYSaaNcwjqcIeqbgyNuOEKqQqCJPwstcgzvIlZDchOkDhYkbNfChAXckVJnWkxMtPwgGggVnDQRplcOfqfIgDmNijaEDLcklGIttYzBpNagHzyAlKTxUsaYMmnrnFUQhnKVZHFGpDxqdWNBGaTNzOrsbiIrnbhUlhkIKwHjLfydjKoTwjVPWYAyPalpyelSQJCmAYEfVeiKOMHcdIlPJxRJeSJotXAkBMxECStNUgqeWOluKjkxjIWMaMiKpZVzYfzzHxrerSNsicfmHqCXGUcZfcOqaqHpBIRPNoCmqVrkUZRXfwcRDbABIXBEggDwqMbTCgEdQnYrJiHHFMIqFZjYpjAFvjUVrYPePjorzICMqGwpZcuwSDCVSbKejNKRPQFJTaJAgJsiAoZPIaVqWgZpBhJRNlTBwSeoInkGBzPCoeIaaIOvfopMUyvXENiWmglvwqfLCigVrCLSYNIwcAUdmTPBZkptyuVlLbGGYhmSvmCSLIIJKcDZzqwmVsvpNzozDVrDKqrgwuwvPqFZpUCkEnDelAUHecGVslpcjaCfySjvwLfuawodkNiEUWkVdRoppaoKgxoywQbpfwgcTxyvnpFNifAsDeROTIWIypCPHwTDTBoVisQdkRbTITPIDidYSVHqNYVAHHHHpUFrZjPMnYRZEWtvsoEYgBECzwzHUFZgMBHHKlXLSAuKrfrlnqNQEWQwuxckKtRrvotMcqKOnZWuRjsxHIxINfZVUFXVVJGscNxaUKxSeyYABKjVOxDzuulGnOckfmdXrnUkjgEhCKAhUliuZlhqcpbUMLYQXfaTyjXUOjfRaIMzCzFKEcAkGFGXPVUqOdMMcElqwTnBYZAsyEhXxmudmZosedvqskuCIeWrGNrlJmHTJTPAsLxPmfjYYBnBMWgFMNdRquMUwdoUkeoNxERsyhVWNAYzQFIySYwIyETfofjGfTrMJdPdTiFMZLAqLZipHrOWUBNyceYmhmrpsvHKUcQJRoszKlLzdlwHUjeumoNyjNtNeQDgHiuShTQHWlmjBRmWpOclufpHXBOYvQIQxhmwfPtEnntGlLUQfkGgnobwVpolLXWxyCznASFkrCGurWjrAfmbLYrbxHBdrNjDmdGTBrGMnJfTRCBBgLsXOIyVWbbUPFoKhnogZyRyNDOKaYRZRrhemKjPxzPMFyBzLSAlDOXicsIlFyiDgTqAlUbABFrWaMCPPyUpRyrTrwdROfEBqvIBMlqjzNszdLzGYkPGaBrzNPBbILDNKxnvzKMEbUdIxHcIWklIkpOtnDrEOrzHSYbdgQYsFAcVxRAvCVZBwpwCVICJskwtxDFnBdHbbukwsxMQxSZNhRrfPLzUvLXYmwpgUTXHROTTJoUqKPLyJxSinLcArNjwgGjzcAzHEEIhkjonZPwMvPuHylDExNhxvPZSAChamXbpBXdnqnhMQBLOFvhuzxkFfQslExmfbTSizDMpUOoRQfEMayfhXNHywJeDkVNBWABJTzJyGjGstMjNpskaRknLhDWphlHpyHsOviLpWQLSFxmWomrOuUPwWPrOyMYimiNzDcsCpVRaVcpcxIUpxOhdtjpIAMNHNGcpRLqxbNjWkTgWRRGhIsIFVKHjKSHHvFLCqxiCipYoBDuVNjisHckpnttVSeGjXArLfKFrSgndizoyOVlccukxYlEXVVWVoJXVGnGezSqlfEGrEoIzCazfhBBCoevgnqkkqisjyNPtujdzduQwEMZsQrMgnlmwrrdeVFPnQHmGWUDcrgvimNLJghjysoSXngfindzsfkhuCqaeEFpaXUAPbkpCZWUHHTSMUHCHLBqFQggKsAiHASWaWsMKKqXCvoOSOsXJnzobMtuwToQISSWvSqNXpLkFkiUtDvPWFTKnzUNhqqjrkLCPYCWcQSxclUBXmqayxpLVBAbAUJaAWRIEDDUNVQPGoEKFMIIugXBBMsphQMhNfMWygrabmEEcxMdPAeoOrehylvccWuVCRUJIdmloAmRJfTNrEGAfxfoSBsisynuMHILShMqdmypXZuEybzKgDAIRZLdxYbWDzRhJTjSHuzQnmdiShfdLYlcBIUJqbZHcKndyOpcyZPKPBjIAUhgKxTGxbIcTwJqnVzphwfeqSlNTZnPmksSoeVDXHmEWRXjqadhECcxTaAjMgcwZEaYNXOyQyWmFyOJCyilrhTEREXLUInzRxkOJEizXxWESAlpIxzxiTFbiPCnybSWJvDTJmIhCFwPKyBqjPkvjLgqNQXmqsqLyzjnujFrlHfHQhNcQDrLOnyCbMiHXELsAVwEiOOUvZmkKgAcuMjSxqQmcuUXbwFtklFelSDTzwAghDmngWhksYkCbtTJbzUutpFmvKELlvusNmSjtjZyQGZcgOyjeKBtXklylpOMPHEpZtyBteCuGcXCVsoKNpTxUalAMaAEDEfxoLCiuGmKTfQkBrEAVpuFJuxsqLxBKbLWyTedkBKGCOjsrbYBKiYTjwtpFiLdPUTAaGvenPJitxPuYmbHsOOPCOkHKPGcbxNcooWdfJDkMLKGaIIphUJzZFuqfPaumOMDemrYuSVyOMCFItyFkwXeDUPCZbXHxOrqtjIPZuJqQkfSkOjYsPWZuBlTLlvtgVXVEXfaECJChACnkNvKcQbQjNSZVhxPlNdNsfEBhJCdMQLYYSFLoxIgZaqEnGHZPUqPBLZERbckOWAWjZnHbHEjVSBWVkFRuAjQHanOoucVfXEayxBNsfcqyqLziYVBHQKZmXvmKzVFUNqJyrVrrgWQxsForJMlzUKDrgccgHcJlJlzeIzxwoFDOYQWJvYQywsnOcTgdHTeXcLTGaEqnwbDSqvKoRbaGelvEGpXKpjxmQbCRGrYvzrMCHEZHSXRCYNkHHWMlOXRDpRnHqxYPtNKNKesvqMHzPmzAvYgBclcIWrWraPqRSuHRVUxLyUgDUEiDOprdbxYInuMzxMFRZloXxgGyIexMYyXilMxwgbASTkECcMjTcLcfmaQMmpAxwEiazqraaYysPIFBhEnhXLarBUwdiQEXzGjgoDzRhckXqUScjkshuWgDUxEptVQbnBVyiikQUpvSujNsAxmvMeqdAGogEsUcGcOfOXaqSrwfIpvkTVoBANJjUXtZSmTqCnnVROBgYfIWkzIttmHgZzzfHrPFOiKsZFOcBualzXfSzEnRmMcmNiMZdozQzKKNjVdsLapCDzFaTyhsFXnvrQnCAYKNjafpCgeDkHumXQolngaKykdQIYNskISyMpKTKaNHHuZDswbhEmCbPbRoetegHfPfpfLxGFVcAjhTVSyWjtzuNxtDVdcBPgMsRJDyNmqGvovuoTHWqgLpqYmaKLIRuzETlyaEbXynJiZyRAxkKHMcDTHzdQEexSrMMGGJYdljInmfcrYgJQYDwgbnPKFPCWhcvrkShdaELpHAIUEjUgwfbTVsRdtVklmNyhYHKbUPwXieDjjzZNAhGKFTIcIoYJrJTvukXIPgHNzsldEyrCTWXnEDMxmmZmPTUwyJyRzQOSbntTyrvvxIYZRoHPqdBGMTFsBalROeHpYDxkdsSthxrNmoAPSSgaVplaBeYltPeqysGEYrWwpvltJKSTZFRfKRLpYeQXIEQuMtgzkULoyZuygIzNqobqvFvTWpttTcKXizHcraAUmbGdKInUYXvtEjrQTSgnNQRMPpvcVrMPvfOLTvilfiNSAVrepJYypDQjggwesGZcMBCyrzbfxMSXnhoVxuvcyAaiVAWdvIkarkUdECmdkorajzMeWCgjORsWrPPeTkSrjNVpUKvsIGJZqNpaieLzGtUqIaYnbLKpquJnkVFfFwUrjixdAnBLJQpQDiIZbMMQykZVLgQEeljTHxvusxxzPZJnyZNsGcECJgvBLBJzaDhEiyzHtaIYWKKeeeVkjgDDffniDAOhPfhiWhGufsKPnaCCiWTNTYXqcUUqayBfddxzBzGoPqIzdYjspMieKEBuxRcDUmIPiqqNJbRkVXkrTYYKgJnkmwyjGeoMlSjkJAGiDHhdYQEvPwqQgAYUYmkapBgyNfUhZhVuYoyJlVxTrYYNYZIEexiNRxEMCZJVfBmDCHvLGIJuvuApIpPiJvFGRyuHwAhFSQHNsHJyKyQeQUjAXuCCOfLNdzxChDelChBBlUaJpALYgvERmcowCQwVUyoXMSGWVJRlURAsuzlZuUrjlfjwpQdjnTkxrPwxovaUvVFQGMspAyxsIfdBGfNLYYhhKVwxVzvGxvuYRzdCLvrlXQsUlMlPRCqwLyKFGLqqaoKXWWHYoufjsbhzRMLpWaxWyIADnGkrTKNkyxKmVzlropwoguWlncTOHdCQLBihBEBiqaUhpLyNKEZJNfRCuqNHwmlPTKKlUWxHkPxQQPNkRVZlVQwVjMAwJICFCKeQhyEWLiaYIFGFxZclQZXKuGziMDFLtWSfnlOLjSxRoJHSWyWDGQDIFriHjCJsVEWdbvWOsDPAdfMhryDelguUzfhfwMtSNgGROhoHApCSrSPYWdAfNaCoGskTyuOqjwSEVJEdOxXkKVgxfhXiQDvdehkrVEsHjlXFGMxkIpOaCtrEGIRagVFBnjoakfqbLghhKqBzPsdBCiOMrUEWjXbgSmuPXyjzEsEGiWxgbPYCsPRWESlmHeusnKeRHjLAcRMctFXUNtnnOprUKAzWHlTylwDnZTPaxIjDagOpUPcYcwivspPxXzCmAatNkghNfvbpzLeyArJCyOfumFKacFAcvqTdICoDidNrwjpZjehCHfeMOoOtwrseFYGnDWDKegSpDsklwJimhWrUImQdwPqyndZsJFBOyJbjzzSPpPPVAlTEOeUkklLRMZIsbUYlkhChZxsIuboptqsgOggmuSczHCaorWvPfIUZhFDBSYWjnAkfRqTkdTKsNbsUwbIJOxEkarsYPdpIYuGrdPzBPNrfffhTpYcWzirMwrVuWwRMncNPSZWZUqelVIIJDXmHKsHFNvUJMqxwNLRztGlXNNMcYRmgyLEGpCAUXDeVimlknibPgnSGOjeJeUlQaSLQnhTLcjbHnafdpWiEgiNKyuyAoCyqaceqkWAoNBFcZGPrSeqQwsnZHPSnCOzEEvRnBhWCYyjvflCKeVlIQptXkVZQcUsiJpwMUhKMwgPuNqbQbQMwTQiAYlhjTQKuPBnckHWIwxdJaaKeBRsTvdbAuvYldvRgVNpWOjunTlKRnFwGLmudLPTMZWKVpTpxshUyPPJChPBNQFRDHiHpgoDJvITgBXJgJycObGOzATnykJccnPLYgozTAoQhApbwBAWptuXMpPiShFfxTfwoEMPCfJDpiQaKajVlbWwBGQpTeOWxdGYhshhaOWMDZMQLVGahnKUjeucMkDXdSqvHdHjsxtfSYpjXdxpecmrtEPWTWMMrWFHSwdWInvQGcBmMwOAgUJTXDMcysBCujssHRPrBAAVArBHfVlIOIuXmKemGFEqHoLPOpxfIsnfRufLiFPeamphduuVYgmdHMKYcZhAXAsirjcIYMHTqxDHDnFyvFKvsFsrbYEkpXrjncYXPhraEMFXxcmTZusjYjyurmLGJpqPBquShtWZPZeSOWJuTSaMnKWyESNdBEXpMMGSYdgjSyHJsmAaauBPxGfXWgyXXJHMUSLTvQlnlZrCupOmudDTGwHsCLPoJQqTRWtktDpxjfVJngbvndImnLdsqlRLKqwXMWHkHrFUQmnwZaxjZusUCXCgTptikQfWBvQpPOubfuVkwjvxEWqVuwgKKiiibuSHjSYUYNJpbpFFLqyNFrIBjFwRaywwRppmRntKbhAxpbGNTxeTGLpIWsJMYdeZYGcAvbrTqLQAjwRwTDYVcQWLzWPMwcUojqdPFyFiHXGMHchJrYiMdxzuMQrhOMOlNfyhaYGcvVouueQDtGnNsXTYtROXdUMWmGoDCDbBckCihSLMVBeKHawUAbPSvSrBIpNEPuVbSsdvsjaXNfPGRQfJAuPxEuaKavNMUEqwazsyYJEsMLpQFWdyMbiLWCmURxBnCbDOvDhlYiMjstBclqXebniFRfjjGOQZApoluqzSsBEnZpwYEeMXupTGQCWPFGRYYHQRmgBidMriZWXqyNStdURpATBXEhXQpdCRRokfvOnehkaMgflTTtvgryaQuSIweFzXaQIZvkzsvkoynUJhpinGftuQdNzDQWEKRVzFkmATWpAoislybxxpGwvCvOtptKmpLBvlZHAjlpEEfGVwRXtcNIpTzJvatJMHOWACmdlIUzKthxljmArhFMwmLxNUeojCiAaioqQyofKVnhkNdKHoGzfbXRKfIKXPKjpuaSVpYPTQbJaJZaMPQYDgghvBZrLbgHxEuyjMuvSdNUZePVaAvxGVJhJdSnTLxxerrDOjlpqktHbxDLAQJAZUIGTYbGckuOARMSnkYNvPTOmqsqAHZmDaMaqbbMnWaMTcRKjzwplznGUsotzvqNaiHdLNMLCPJMStJihRJxTyMDKCkGivQmSXsYmvFPlYhrvSbOQKZTRanXikEwCScYuyQLcGuWPUCSdDYqdDnaoyTgatrLOlvcYMciSXUeDdOAaeMtupcpdXYaDtidmutupnxZghHtNopnDCILQLqGSRpaqMOpILRfWeZvOZZEvNDmOTZBlOFftWSxXwuMhUYlBtDwDPOJkArntXVmYpPhDPkNvYgPCErIaqfECSWAMVEsydOtOJnDMyyXDbDwMQLJcNmMvhKfdbwfDZHeLzjYTNngvYJbinCjmLaDuuiKxADlJEWRNpKpmWMRFUlswyIbxLfDkagYPTObxnUVLrwpXNjMDOjKqJGlqfcbYlEhvecxidAzylLpsecBcaVBSnCiNzQTsKLyFWorBTfoPMcQseeulZxTomnEDmpbnuHqWBUfXUwNJJZdWdgQfFKJkEmafhEgnohOiilZkpQSvOWYIvCzCHLAkfyJJzQkaXoMzJFgHCEToPJEjxRlPwiJNDiMhkbhLdJKhmtikPdQHDPvxjCxOTmSjXRomXFFsPZeucenJPYzzDHiFlXOmMYvNFeLovcASeuXXEnEAIEWAVrmUklihroZOJbRbbqHewKFXWdXCsArwMwtzMJGqFlFisygQkmytiivGmYXeWxYPKxRkVQShSXkLjNmXJtiURVAdJWaPAZVLYIKRkxVaUFTPqlDCqVpMdbKxFNsSigMIkXgtqnAUywFlysoYOtyNSxxmYuTrJZKmcGZCIMastmMtSywMcIohaJDlvCrEDhERIqucxELBjzIpJiFoXbVjRfyhQJUgwmqGYtVZigIuaVWHwWTJPSMOouMVlrLygKTvCCSpqhvcrDbSGuSCYnjyRkhfetAukWlWRHmQSVaYSPpUJjsKELImdNfjbDgHcVagohDanHCyUvISYsabZTHqfLmQDqMJncLDGYuelFNDBblGJVDmsOtmZVfmLQyIDMxTnavGcmsXERRNdmnaekhzdhnyjGXqWMAuKdUIRJxQwuBMUMmKBwqhxpPFfTLEpUcatgAYqXtXbYodWxHFVSeXgIOVzRGzhFMtrDMCOiAovbudSrjlAtKiCveNyqsbrKQJFTEaKHFCIzNpoafSZngUzGUpUVvvJxlozYHoxtdZzvIHDKBLJHtjgiWLEvotfRBUtVJSdZxyhASFznxabsBxxYhjqpynqOyVsDvPgQFfqhstbJEPwpCSqscXnDMyQjPDEeEmQyvcwktCsdQlfTJMsURXUNoFDOUZlXHhPpUTiUeRvwWRlyxYZkdpmqQiMNyxhcFaDRimsQVgRzsyeeRAvyOGIwPBZsupXKelGhGdxxhRpqeYTuwvSphDCLfVXudIRSOIvQleWHXlUQuuwGRsbSmBoLdHIsphcppCQFsrbnGWzFEhgMGYpRKGMmWMkbSphiPuBlpLMnmnmrgFUkBQOfdPyaapwPtDEiuwHULImtWQLPbkXfnWmibsVZNlvSGPRxDSOMTBbLGdVxSmutFFmhsqbLPLcxOyvxMepRefcIeZRPcXnLESSzaLiIQiqYBixutkOvuvxdneImKhWksFdTJgcJMYJRsUGHwAFngWzhiyhJukNJkAdYhjJybsbkgMqgPNqtcZajULhtTYoTzseYyXzrfRIIZQAuoLCrGvpQJyvCEZewJKMOkaedhGAqUhvnJNLKKIKleHZHMRDjVUvKqbIWXUTgfTThidquzSMgrWKXLxaHwYbegvQquCAXpezxBucUrvcINlGMnmcvQcceTziLYLYHdGBwBtmfZHrLriPoQmxNhCOpClNOVddEwbLicWofBDhRrqNVIxuPgFhtlzKLsBncAGVdmZLOIiGKvSxlwiHwDCpEDonVRwAwEymxOHsttxdmvahWYqjEJHDGTtjivlvTvTYqlWocMsXvkEyFNShcqyfmPiAYUIjiEwMXGdIsuPMdcuhStpmeaRFOPnAICZnuUDdemvAYxWbFHGVqfRDibnqxoHjtVHtAVLDSCQueJQfOUgkzuUdMcIEgTpGzfyDWAcyEkdrcWIhUWjBSzXGFgrEmBcVjeIAIuOvpcPEQcMWOnQEUlCrTXOLWTOuftSDPjMfEpvWDCwINHLbDZHrrzCgNAXgjXbhueYSnUrbumOTTdIcgOgYlUBMPjhHWHXCahgzjpwlMpWwUemmXoOnoFKmdblNnjTuHNTacEOVYWbIdYazbABLGeFSeyCHTsxKSuLyOHrUzvmfPJOgUNJkMkVgHqiVYNEGnOUlXsjSsHPgoXTZfaDZqgcIdjCGxMKZxpXRPVJyHNPGLNsfeIclmFBTTwrkFoLHXPXpyEUecHvEZnWhBEQaFpdBqdhycnqyYyRHBiQIOSbkRpGhmHUnNiNddwAtUngkHNgciTrskzJsengpODGkQMVKTClbDubXQObFHVECzKCGIMVyOreLPvwEUWQpMrTHQCTaqzVHlnAuDoUOCqNcopSSdyHvaUjzrTwCfCgaehIIzlSYQuaRdQXVEkBustKhYrkcdrAVJnIYrjydpmmBPmrYwnnAjwLXgfCgLBGLeqKvULXZQGTZTQIzdDfIJZeHmKpCMlAzprJyPDnrRUhQgZUOpMDvVJNxzhrtgXIgrXNcHVlymGAscAyycfxqneMpQbQqaauEBRzHgXboOlcoWOqQtLgxFbCuccxjrWcdAOlEyqgbqmWVdCasDqcKcUvsNNcMQxkseBvrHKImVphlXHnHTJFoZushjmxlPvckHpEJJMVdaVKVRbVUwhVSQGfVrKMpLUXOBFCCOpmFZsNlXcsLiYZvIiMXLwVZBbXgxhaxRbbHItUZeUtVusuCoeHDwarLNxeWcQLmEhhgejFAClWmoUysBsSrLBXeJBvuTEQMwiZvbHAKpuEEUIWNhQCJtEeGFyhgzuNlcSxwuNrZanubzolTDiknjRIfTfvfZGOwWfAifCdCaSWPBklwpesHgsErSgUsQxPxjPSsHIzrUZQhEuTLXOEWUPdViHqJODYfNmcDkYzqTFQLBQFOdVIHzWmAnWOgeaWbvtHgbwstplRvrtZGZGSEVRXfGKjuEHiFDeMZeQfcTXOqCDdnTQEzErGpCFvtPKxpPyZWSSzxjBeTylmtyfwdbNvgvyNsbRRXLHEShYzWTSphIYxqzYDzxwwWKsinNTGzmHpSqQkjBQcgLjRwnyHfjozSqjSjBujgDrROLlmXzjIkuchjxJdxNSKCOUsGDJQSKZSBNmLXPCCEdwHFSdoZfTminSnpyVWEMaEkVrjmvVZxVsNNGiWxrORKEAUpyqWxVVMPjcTpcoLPYGCJlJhfoUdqrlBcwzpyavHuHtExsBlNnfndEYxrdvForMXWGoNRGvHjALFwisdGhSCVfcSBNegnPfhfCrtFdKqYhHOOvjdMuHKTBVYkkuKomQhwGXkpAjurSQcubVvMwOYDGywWBPOgsmhzKtaELYSRTdmnoxXvIIdPlomiZbHYOnRQoxMqnmcNqBrfxdIjrVAnnYqULmqHKDcwXOmOTvKlGSwYSjgXSqVdJvUAXTDSmUKztlDWEbVsigsZGmUmVjxwdGslJalWJriyCuZQltsmTfZRRTkJgQXxPHZaJoegYmxkfpoqgIAKyjuPfWXcfYjBYPiGKBEzcYpcHRuQVGRWoxvqsKonwIGjCQuLkCJMxSNiXsKyqRhDswVbSchQkhdrBwZhCebvPYfikJwTICjcWNXJetYRKFExpbFQuUYQaDJgwRxEChcLDFqLadypsiiZJiKCWVDlmfKldkyjfUJUokTTTKNQCWPClQezPZNTPKgbxvivjXIoGdDWmfTofUvMkvhmaoeJDWvNXnEOvEBBvABDZaaPlBzgVvgNnNRWIMSsgvmCRaJnKtOwZkuhxddfWCFXGxTccZuBzqswFnyPLtPIkWIvnTZzXfaCaMqoaLQbBIeLBgngwboaAHfJygWjmHpsWLzevRcGLQWvtXvBxIJzlChdBPPRzGECPTFlnOZuFRXlgXzQuCxsZBUxgWypYlYjPyyMRlWfvIKGTAVkmRrEYLWzzGZasRwHbBaIHkpraIqMQpPoGubOpTvHnEqlfGhoZQRQbqQBNUOEupvBIaONHjejqhsxeegxbNOIDAJzkrWMnqQuGjiAgjsuTJJuLIzHldUsQwsyobtMnZlvvXahIwyZuvCILLPmhhbSGpahfnWHPlHRMFwltDxWkCSASNFFXHeIiKahhrnbTmFbLWJUNdoEUBHvxPcYFsjExdcxXjMujrTFgoCoFpRFjhvrcfZBmBwsXfOBxDMMaeflOFWRCEdXBjxoDqGJUnvfTHLfACgqKrQdirpmoWhUzavnPpGxDAYpnWmaFYrVreRtvACNDNqaaXGMTqYzQPaSOAiVTGrHfiCfsANEBSQNHKkecmKEEjyoofbjplIyqezFlrtaSghfppGPmXXIANQPXTGjLHzbMRgAgEdthMnLhqdasfdINmRJyHNmVfKxdhWjklnwuHYJMqURGEyDeZrxZtgptJgRBzrfRijmBYHDoTeilGAuVMouHCRYTlTetYrIgforCGGhvgQzuRbsukTZIAhTWUYqVzMFtOzpDfTAIwWRfqazaPPDToleHzsxKPQKtoNtjmwyKMqOKGnQHUFwmIHNekagOgwhWYJEgastOBRlCNkzgneXFzUPxZmahvUvYTstrAdocKdJrNZvpIYqXgviYjAbKJeinjgoCjkBgloRwyszuXRGgdknNCoojgaBbxUpLfMtGlPoAeWvzGliHQmPIRAEvISZPZsePYIGvpCLOPHzaUaloRDNGTcYCcVKCeYgDkPlQsmwChxexRZLpydxhAnuruyALXKDOkqImKrghzWyyymodfcEbIgwjOyvSvnufMMbgfzphrKcEbFLNSdBSGwcAVdJzlTgoZnFaWYkwaarHoQyhfWFiUNaPWHLWnOTorKzpCXFCnyoaiTYSTqjMOWlWqeGQtFWPFQvpemDIcyWqzymICuxEijCAxHkXXVluxPWWqIwNsFpIGmpEiaDkGMAZxIgoxBzjuGSAlsmgEeNZONAojKqHZEHoRudMDcWSIsjzPYnBDekwwqCbxZWdAKDfPizMCzEntnQDSjmdUkqIixoDAfdvByTRhTLhmCkEQJcLRiJkfGyDSdqDsgLwakNYuHoQqWNGtqZfoCYNzxOSmlKaRRNqryUICGsOPlNOhdQmsEwsPuPVHavrFPVsJNLqmEZacbQkfgZarnYgfmdcvhmQtQnOiQWdmLkgWibAPZeSCYMuWkpmwztMYqrJvWkuVWYimEFciWGeSwBErNoXasDUuAVthYCSfMvbeRedciMoZcHtvuvuPIsbiyfygQKKzvkFwjdpyPUkajZnLpezwdIrxqAZHwPYmTpwSdDCmHwzJsZESCQOScXjdsFiAlQNgDxekiVHpgmiMylxbiFzYphwPJWhGaDAgISjHjoPdoVdYXLZeRVLjcRvqldmACtviJhYynAhuNdfbtZxnkmoWEIgitVuEAoZCzmZWaysEOQLjJTCKtflvccEqPEsvcqMwrCJOqbYzAVAlEJjRoTLzDahmBOFQdouZLwenlZQZNQwVHBKZUnpXBwxYEvxqxbBhlwuMsHwWgXHdpbYFpNiEbhPTVAmzCcttmWMzTFrHUDPJjTIyMRffnlkAnqoIyWDNWvjOqDBOKEPhpISGpnLlcugZiqmCeeKDWwqKFBrWEcegHpqKecgeAUgDluobiFGEheCqzKMvLvNVWPVBontBjCuAMIvLaJZYWFRsqchvFDcSgjNErVZqwAqihsCPytXviFLWnvLxvgvzgcgmZbhRwDWZZrVnWJvWFhVZTQskDLtDhSrXxbLZJSRFeQFdbKgnkaPdjeFQvOKxvvXXsSyhibRwTcWBkXTMpztoPaYErwFZmFvBlteznIczOIZHEmufpTvBHCuYWoBhsuLjJrxmnHBvVfkBgGWcquvhCpBxCVtMEEskQZYKFXqYAhnclglqCqbEHyQeWMUrasHZjSVFLeBFLOEUAEftMAMyuIyrriSMGUINecYBUadvmZfVRrqChWyvqXGtGxmPqFivarZKDenxprpodIWUrPtQzyfLejaANneUredDbXmvdfKeUWAXlgJjnDWfNqYyaZaxwTCLOnasAkTYNLNDCHilDcNuOXiVjihDFnuZOHgMwPZadrhqefvevmsXmsVNOpmoPRdHGxilUCdPcEJcZBlDRfRNAXOskAgyFgwZLdHOaxHHgLZtEIhVzpKNgUneGwPwGoxgwtGxNrSSEABdVBGnKkYTzEnpanQtNklVuMKONPhDRPWbkuFLPskaESLLsqHJsyvVobeRNaomYTnlyFZlmgINeEIaJNebiKipVgAgLoCTnEwuHCSBIJTIdphfbhHyTlbODQaVSpvjFfOpvZvpNjlnDXnMGHsqHNyStHMFDEqyWcatBIAtOvWDKTvwBJlYPfrxBOwwrQvXLEcHhqrGdgEOFmEsNgKRPWrIzyVRByJoViGSBQlAnEdswbOOUhUvRDViCkwiWoSVWnBYNHSZkRsCnwISuIwNgNyTgudeUTlDWwjPGWvfNNUDMnlHKJyDpQKKaHhwnzszttDwLQAgHkOPXaolTwEQWZEUrgbdwghyTjAHalzMtcSSVJQxiMEbmXZzdIkVtOphapyCvhdSlAAUZFREPLJAFNKLmuaNRUjATHNSesmZPPGryuPvWiKHTqzwBzrSDlnONNPGyfUqYGkHzMjatQGHdoaDhleamSDJiviBSSDIAOqWnMsFYANligUfVjwtfHIrlNkJyRRWwDJOoRimBOmtLCBwcETuujafQGzvQHgRyybWqRgZZtqGbRVKplaPNjrKqggjcSIQGFJOiPEOPwymNPLwIiBFvivixJOEsPRfEoTatpQeKbmsVkCZpCtIrDFmgpDBYcVEocELhwqjFpwcPKSZtIbhtKowvmMXjNDWWIJojfclPzJqtYzvicPFGBzjHCVgtkyfbgBohEXwguYjIgyAZkGiqItiRiDgUOohRMJWHWiPJyVSNKxTIzRLkvsaSiQFDFCYoMboSZWJwqqDnNDkeIqadcmzQnHUhrZyKqCfBlmGQEhwaOBmwjtOiIgduylKUHJWAIFukDMqzGxGCDaoKzZrzWAamZQXHirHKBOVHrGbPpcBfryevrOnrRNaACmbRGrgHdXsflvUxGyBoJtHqqlwMluBpuisEXVVQjieTvitBGXLjjgBYOBSyoglmTQeRgIDTCMmxkNuTFJfoAMyrZFvkHmlncAAQJgystCNiNNNbFZaMRGrXKqpVUkjKOiTAYPtLUKyHNfEEeZwkMhvJxTXCJrViFKXHtpRJKBJyxXeHarvdnugCOehdgqqhOrRJEzoLDThOchMLImGSjYlilZSNfThUTvqGynTMbpDCbVezEjHAQboBdidCCcRnqXSuxpbRKAIVMyhacuLRJLAjmFVIgBybplYkWhzSSuKCFwGvCeeFrTaQoVuCOMcEhecahaQZXJPxsGzmcouiDdYlhPWXHQnLFZgiUZaFDfVCzMYFamMwtGnqWJmxNChIujsNhOOAKKmpFbtNogOWhNtsZbTGqtCnAhEPktDxeuOgTMhCAQGfcGUElHVIJrtrHTRaxUjkOQHeIUTkoNbAuMjnvtAXnRLPODriXmcXtsipypDpFawMJVVtMxIUASqpjvsLlNdHngfhDKGgCHsbqYMWokgZvBkVgrwiRLSNLicIClupNqzbhIXoeftJoezgiBQPnJKiHrNRzmjAjQORpBPJZuiTSjpbvsHZWpBJmzDgKlPEeSrVCdcmYVSGvcdWqQdqBDUiIvYlshsWUHDoZYXIWMSkZbdNaOqmOFMRwvEKDwJnUAdqacPvhfCTSIYOXbhkyBGuBkROlxGBFViaXhctzkIpYlWzluAlsbQJovmOkBLnpDTWtmXrGwQYqSiHiJNAMPMASgOEnEFPmyyLeGMqvSLCnhsAVPFVddZAuKZdaGQIXBIyOZupIbfPjzyozdzOjIdJSphsCDiquheVJEHEILpLpujiNrChlZPnvrkvZwPzsiNmoqloSSuxOvYPngpMneVbpPoQnGvzlEccYoVRgymjoRNbUuuYikRoKDNxxBUfosFBpObmpjJurFlPwucrARTlHymwvNjVdflUJvAxsfixlCAxTpDIchxHlmWvVivwfPqgmIeIwlHQeAYYnAKJQzwzBHcdzYJsTLIhLwNOMFknBUaSeOERUcrFRhiTptVhVqqJJpqLZOKZwPfOjAGNTCtzIGXEOyeKwsoDaGpqavQqyKQgFTYtJijEEKpWXUdweFQiqaJMtfvsMExCWReGTkYHHtisaJQoextYvKKBscDaiuzDacjNlexFDanajTqjLbNJEhWVtAmrnXLhMybweHNmjokmlyZzwcDPnqQIoDtBtGKUKQhezCZSEDtjjUWxZNpOmncjSTnWluettLlwdPNcjphgWBgjuazauBHBIAYlTPBnTbtTdFEVuuWvoivjAXvgXkexuNqiyaCTepVsuVKhjhEAmhmfFuTguBglBFpMinpgZRloQXfxyZIfgdlOJgjEwsbVXXuATIuvkmHkpdSYfCuMhjskVTOYWDVBzinwrGfASajerLlvvlhCRjbFKUjsbWoIIrhZJiqsSqMOJjGHUknJjobrfWkpJhVQUteKxDKhSfTvxmNfFjKRgDTnlmTPlKrJQXLJxvbTIJvSWJRLGvZJvSxDvztVzOTYGgxIRiseerSBduqlsmKYmpMyHRppBkWPDkfmCOTmZaknhNrqCFuPQBzfRQybUmSlPIzkOoTORuaNjaWIEZsmbzpIWkBLolHKjicqCjakHQFGvkEArxiHYytjiUiyifQAITkVjCNTThQlYSanCrznxqlDEpAovxgJMpxmnKVICmfXBxRLBmATRGnopoenNYqIPEPyBRsifLsHuiVPBsKAZwLPscQVNYRWRfyEHNHFOXpROVyXJsrcrleoVhMhCCKKZhRPYmEjtrsXrVbPEGlzRaAESPguRWcsOlTlNdUzMsTJTwkvEbKzNBsCVrBGzmEQAEmCSxqRyirQwKOEKeKKzQRxZkfoUdHLcIAsZPZxTvyEmmrYbjrkRmtHRrfZBePtVEJokoZruAjYVClxfQpTcAGyMTcyViIhlAFTJTXQvjWYvDrwdqlxigZRoQPAnaOkXxWLNYXAMAQMNrdMSAhHdjKJZPMhePbbAPTPQKdMhvLLjxdTlkGyLLyqzXewYbnUdpdztHxPcNkYhvwmsBQRzLowCaSlxcJtighNnqCMvyocSIPytrDgxwfHMLxVwztHJtFhTFpnTseSVuccjYWbgMmEWnIHxOsUflUaYRnOGMGeBRLXrnkkcinectMQhKzMhLxeALEYztKIvNeOQlYypHupXjyBqXaIxkYNVZPgQQdlTZPTcOgZTYAGbvXiHEiWRATGJaLqABFrbpkGjNcxwWtYzBJQDwNmJdWODUCryBpmTFPpSHzyFvKcMNHpFiouZozYfiWlYZhFiWImBhlNvjQwheqbbjYohsUoBsoqjzjjOkqEGibWzuABKZDQdXyztRZCJtsHYjesGXSFzeQDnncksnqGshyChtUaclELhgvKrmFwhSpIimOhRCsYbVwbCAzcShIOPJvaqOHcEPAAvUbBMEWiVSzieDWuHPYHcBmbDWIcDklAzthkdMsFDtNtzNWatsWLHUmSZokLHfPoVbRZoRuHvgkfksTWOqbCrMLOBXfKKhDrWrcJXfqlAZseCmDiQyRDGOZbjgQdmKgoXmqnNrowHKnKiKqVhocMHkmLBnaqTzdbSWXPLaTXHwZqRaroewqYDZuNiKRJgbFrtmIhtaAyqTKNVCjCshKOIjVomrMUKwhknhWRYCdSlFWhBRQezGskoJfygtFqhNkepfaQTFcqWnuNKsOwBskJtgHXjjJziODsapgYYcXJBpCIbiYLnuHJpYMZJrOuDsYgRwXgsBsysKiOvgWftePcxQnfabVMYrugBhPgFnOuuxOuHYGDPQDmzJPzJIkHAHsgpdbXslpUseFHkQbwSQPesYcsOGNaPDJHVJvsAXTgDGRJDlKcNhAUgjZlGSQtEVunNgXbTebodskRIjLkWIBADvjFJUAAsfdwtcJZssOKwRwWtUrpUREyEgLZOcKSMGKqPvHFoEcsiDdEHUMAKHddTGsoxnMXQhMjJvbJSlaymwJIYXdMqSNcrQVeDAJHJBQChVQmDjTGOiOwBUlhZAyPgLkNHUBiwglMMEcolfDyKppNSnUSFuARawqbZZNOxVStfrSGUSyzCahibGoVALTLKYTWdLPelREQYJWzArvVevWsCjQioMMENueXXJwPmQSGWPJYnkKUBGtoykBBqoQbLKCRcwgbmaobcuhqOIlyWdNQEXlgrhBvlnLretCROSpYRjlvgzWAAxryvEeukyQLIUJkbggblIDpiiNHpPycApbcnyoIKdspZNyhqvLamudMrTblNvjxciuAeFMxavsFVmJsPSsmMsIDriXiFWPuhQfYZJRpNyhKmBEelBAJlWWvRBsXPDJvdpttbFUpvbwoNkJJvfpzDSsCMWRbmuyPAwDuOLYcqYByXIVfaoKPwmPGRrcHQMxeFZcfRVroAbCxzzzPRdqNxLUCtfBkSbhanawAjGhmjrtRbyIvUciLQqYoqEdNRNYVmRssjrdIrFiDstultrkkpwdeGYqnYdnjgbHIljWhVAysEFdbFvBKhACsnNAsaRpYSAKdHaduyHGZEtcjJqcvqeFFMtnQVYomcDGBSwBnJWTrKucJNlDHLyWTotPVkuqqdmYZYSHHqssplBpOSnYBqWLNHOjKjxegXQSIEtQTZpRhWsqZEufUjFGTVIdoxSPEXbNOgZgonlvFodjvdkNhSqVXGcwGthrEIFiLJMBOhvaDwnHYrZLXOVaEpXfBxpSuSJqQswkPILePVbvsrwXWAqNyzPUztQcrzmtNACIcRQrnYkIsesPnsppHZdXNMrKAYJLvBysBKcrZRXWkSOtccXoVqpghrcvCjKujRWKLYFZzltZaphZuVSpRqZlEblFBQPhnpwIwckoCJYmmHcCeYqORJMVoNvgFpXdnbhrNxownNXVspcPrfGfdbStYdnIgTxDqPqATZcpBucZYuZdattQNxGSSzxwnTjIPiNbeSUkhBvtQYrmZJooRuhafMNILqowqeZgFrzCQKjsdgKcokALMTXtMtSNdRrvxhxoenYiUwIWKKmwVIXVOXqyDRFIsbFSVnVMcuJIUlKvrcDTrgRhTIthatUkTsWiDjivMHipWfUBIUAjfusfXqmWbEIBugFlsDVnLPNHaGhtmEYQLjdVUlSKobVZtIJuuMAemLCeDFVjhDPniGwcbEkoKiDpFbpGxOmdMrXdjKHpPXpMzfuGwEGlJUyjlPolmeXJzptHxOStotttQoxiLUdyYNesVgGvZcSvnHqpyUghLIGRYAawgMiKnGFJKREbxPfjwJuUJrOEDndMKTEmhxPJsOYgXXYUvOzwCoeGsTWBKiCRrFwrKXHckqeGprAnpZdLyzsUUEcGjfLpUYgNoaHKDANDLljaSWoChFkPKaQnkohkJVPegrKWrZRIIvzlzdsGcJoiZlZjRLeWwhPBCoheGMVBmpJhyVwpwbKqkceAyhyrFxkkvKzzaxhsTslHYyZkKyavQONeRHKERzzXQrcuXcfYDOWyfmNcidfnLnRwGrONUgSlhStgrienquAGTxGDwzVhQIKvfxdzAclYdLPwMtvvHOHmyvnZEEAEVAWfwluOuXRcIOSpkIxRQNjEThpJpKIlsAIUcvVhzygumNPkafymaGGJyddhwcVKQpoKgTApKSHvrZfOvzWaQBphBzjHdaBdKrExuKZuIFphjETgGvilWXFgOGjlOVtsGlUtEKidFaBbcQrbHtriNTnmXxkrWFvVJXriGPiEcSJAjIObflnKQmNHBlNjwDKGNDveJrUwlXRHJOpyTTAqrSTdwQjdpgheFHuHYGCDUaNPjVCUrdvJfjaKQwAMEugoiYeqHgrQjVGylQIMvSWrRPJNpmmCHAPiqPsBjtFopGVZJqIdlHYxIlIEyTBOONuUxpjVlVLXXSwIhZgwQKjmjHSHJdEvzUdXxlFmSeDczVqkWfSOfFosEItXyeQQhvzrMtaBhsYrLlgEcSTtuoGgQjStPsTyHGiurNCKbyHmgEzxWpVdVMocyDCrXIzdhtIBywUbZHvPbBUopyWygpdvYAzoainVuxOZrTXelDGTeetKAHfQqUZiWamqmNjbrHhqitrNcxkToPnxonpoOHmwvohuJfwdQZMQpbNBJwcTzxRvlgtnpflaWGFhaOmrrrESDKDSTwjfGPzufFOAvoWbkiBRNBMHWROvoDvCKiJhmWcGdzgIcWWPWKDCgfyqMlSzDPONWtNlPGUWUDCvSJvWScEYRnCXDuPOgORuuANgErNiwHWlTEmYMlsFbveWUHrbvDgwybmFkaQuSCfgpENygMceLGHBhsMuOCAQAWxqFwcrLpXcneRjMxprWYEHdLcDVdxMPwGfxdyXgaiMCpmeEhnuEqvFdEZAQhTdHaKHnKgZKrDZvDGaoWtkyGEiXjLRdEPhWitjKqaGRJYUTTWfWWJByvVVSbCxvXozdZadQySVxOoZYSBSInRRLErEFXROZHqLCYWkjNFatlfHGuTBpRsFUSFtBBkuOGoLSuFyuxLiKkxiGopSLetBXxLwyLyPtYTRpkjQIjVVordYfKTLYLKIRQdwfwdjPWnxWsIJVwAkEQWYgvzyapArRNwnpMEtmrhUQUPObdhGBoPmlIIUbXGaYvAXGGZecciUutUqvyVQjxjZeTJOmWojTkQZVLqLWBrolenCcLsNKruIXVhJGdiDMzYXVzateTupZvZJNaFsiYLwsWcGsmRRhQDQmanJnpNbFpDpFhNEOnZMOjCmfKbzCODgJXUIOehnvtHuhkpapPTEHbNAlxQMqDEJfFYCZPMqdQxmtnNZQKdjclvPGhHScTnugftecGVqyrRmilUBKqFdXkQmtOlvkmgYJTbdYZCrlSUVHNKNHvQlUvnTwWPPctWihbOjTDaROcWRhbaUYSbInMKLkOiIZRLBPkUsitiqZvxNuSvLxcxTwyRsrdEXPfgLKQOIULNEpyaJKABveDWIOamTxndTNViqelXwAMjhJkvLbfhDpKOfnWPiShISHjulPNrbkmjPjQyIKbKZsHvtkuyLJfCshGCbRnCUxzkTjvNGaEJPbElDtNJGyXsaqlmjhknFzgGxBRvyGTVPjzhMFqKxviplqydCSkOKBPnNispGTiBklVpZasrfKzcTCFoCHoqvJjZKGmPtwxWkJPxdDzRLjWKzEXIfZAKZCyJbrTaqtFunsSqBzUIkOVYYTzaoEtPPALxYLmXwqyHEdQOgiUUBJYwbCHoyOKlCVfXTaYFUUfyKktjOrmQHTJrRdlcohkuuLKMtKlqZvBYFfSKhChMBipLWwCvOIWJDqNOVVUxheboueqEkHjARvtoTRuSPhiEfzcTzykrpDHWdtSjVlIvzTkPzAHvizLDVZrKIYqVfEkmqSfaEOJehRKuPKapKvdLjRiPgOYyeVARfMTnkqHiwZjFYGtLrLqWhLDeRARMIQgIVmqVkGRWaQGsglhUnZIZjbGfxEhBGTtrfNIuJhFplVjbAsUAnaPdHDyeivBRsFnAFDLBQWXfqACOyfkNOYtJBiCOLmerTPfyTzbnqjXMKcvfgCHmDkeIQePJYXHlZLUAppbVdqGTNniTiWUPHQNkdgplbAgduVdfIbDosqsMTfKAOrqFyFcTmDPZQZbepzpxHcXZYJPYxBEDwpMTdiicXgTfxWQNmfoXLPxmHMeYrebHYAiYNOwtkAOOlAYhhoTgXgfSkbnMpYbspAOYkhAnRpAKVpetohHeWylILUYZLbqOAmfEjwqrPrirbgZpUZXVLRipCNKMsyUuzUhtlPoWZcNnadcfUNsctGKfwOMhedagwwsiVBuMEiiKpxktUxinNJqTKBhUrJKahKdhQIzkafzUdDKchgfjYqvndIisovdakIEnhlzNOPRpwvQsASDYPRZdPJSbMCEsepbhHrGTCtZBNxWtzzulEfRvEZsCJSqzFZSaNvRjzwlZRsYnjhyqvkGgnYRioONygZKzwRmCHxGXfAajIJELGadAnRGAidlDwUokkPOBORPXdyilQjFkyFQrJHhhUNUJATCHfzYXwSwGIyvKEyIFYaeQXczZxMBErMOIGxvHptYQXmDMnKSSiFHaZayUJWLREjnuHnyzNDKRYwmqfVQmXZgcXgiEdmCeUiasMJqXOoLldaAbWsCQXnFgnfCiriOAPmFtLYUnMrBoQKWIQiHGiuwMipcEEHTdzkybMzqhIxTSxxnEeYVInmiJkOrEqRvfnjqdxdWfunugPQbguUQGNzjEpmiDebBZkgjgdROOuWniGUwtUZUGdfmXSQhGywKNlqSeDUrVvwrhmcrfXzUtaafllovJXHtexzYGPnbVBWczFeVrppGEHLybYvqLRGKNHhmENrLIoAMhdkSJBXKspNVxbrFmoaAAknlXTkJxWjDxygMeiyBhuijhGhlPxZewYGbGBHmNKvvehGsPpRFveHpfNGhvhhtIRQrUIMBnjEVxoEJsUjtLVDgCAOKmTLZsTfrvMBaHOClXfUiHwFQWdnVkZYcFnxcREFfLZffvKAHhvGwJYoBciwTtqbPPrKCZuxeQjtgbiDuvRTqvnahIUQkBYhZAgQTBBvZAFmEiuijTWLnGnxqIewbxJyUzBGrHgwRaEQgnysiKRXQVAbcJHSnsLcCmJCuWboYRLFQYqidAkQgybrECRoZyQDQIkHPsBPHIlXEWuViAoMnZUIwVMwutlbioIiMPltOaTsWKUbsCDzAAbQVYGvmXJTPQELmhatIsUYmmWACzZcnqllutWRKtOVRRJVbBoCaAKSzyhTTNBQbEgSFGWleGQgCxUUOQnvyCyIvPeHniQbjckBEsMRemUIdAGOkGrLNtzoLifcXLLbdHLUbYdwNszoRvGZJqjqlnGCOtzCcTvSGVTxAQPforfQvItnvcyKayHfafIwEFMRMjkNCmDaipWNEdCSjuqEExbABxouukcRQQIOBUKoEckKbWjEIRunKcRqueFxGrnYnkvLuMHKAgYEwnvkRNriEjufWIWFpPBfkUiMQvinWZbynSSaEGLceNziVheBmavhaCgxcXDBiRObYWNhWPiUgxmrKzJqzFhGSbgdWwSUHWklFTrFfBJwdGprEipqBQhxcQcpcLCYIurKbxBHijHDZtaeYbYwnQkbZyOupYHGKlHKzkVGpkBweyssZkTmRWJaKQqCviyDywDHpkueZXwqnxXlqaRlzDAoEaoIJPabyRXtcTNOaIKRkljnKgKgIIsjoFxdhQegzyyATiMgdgWQfZgLLMARtBugpSxSoedWdZgkeyIcnGCmCdUrwxRIWvsolSgbRvxJZCNyClEhDWhWVRMDLIrcWFrsAUETnaLdgonTldEWCFqmekzfpJbSfJmmUXcbQmFlJzqpKynVlxlcblOYeCYZrYptJHOUjFSKlUHYFIslCeeaugBvzVwAHRLOtJbkyciNWhoWiEVEyvUqCUxnsaCMdzcuexOdfGxuWXrTzguashKdASNvfvARQNrJsdlbCHOUvjNRiOHcZsLGUXqyTLvjjAPZsuAQAhwmLnpQHVzVkVwuoXopVsYWkHDuDQUcccyyhnMkmVquKrACPgXfpappjpmUEQLeFYnqUPywDDOmDiEpkkayEBpMMWiQgDynKcDVsobSJkmNbfDdexWDqUiJqGmltAUoXWVfJOyFFyVJwkTacIBWCeYthnkGRaPzQWWAlloVskIBiXIeSRbYfVwWIUAJaqiMwkmnxZcfqKprgLUkmBZlTpKHFSPPoIhJqeJLUDoZojHpLOQmzyRKkUfSFgYAcmFdeUqxWvaUvhevAmFGIWDeNmlWdkCaXWPxHjRpIztuhqiqDjpmFZGmRovVJBhzhVGyZRXXBfOJXYmmYpdOwIHDAdDDutdYOcCmjAWEDxzsprBxUJyUSbnNSTnlJrZbBSpRDVJevGMSBNlcXwluyGAIcDMCMSrRvhuihhOOmItOsNyKnmpbsjdPRUZeVrWyBRHBKqjTdHUaJjoDITcAVoTtzsQUwDZOYITarHzZtsFxovbJkWqWiQLJlROzSyDvhOsRNtCUljjmmNHfwhxmFRXhayBJRjvEkmzmWfukiVBhjrmeuNOGqwwxhWoYUWjMrKIQvjznKJXZlaxOXmVXLGqMHvcxErYuwtfiXxRdEMsYErCVljCsmjCriaHhjwuWwJkfELugwQEpXLSDtzJiCZwICgXMHJWTOaFANLPBWDpiFhJzWqAuOoCckGmkNyBdUPKCZBsQYOQXwcWjxbIPINRLLGhTxMqPswXlTuwCXntxyaANKIbHbQNcYdpwaERcAxFglNfKrvnomBAjKZVxUtzEtipSFAlQVlqiZdtuVhWOlFbekxHnzxJdRGieSezaQmCkwMueoscQErDopwqxQPLkZONMTyHausNaYzwLqSetbNTPnVjfpWDbfxOYdQBJoWvaTncwQFTfTfjfuEsZjHDIYQhJiaxuTdQALusBJlObsCXHFkNPmiRymLZaQGIUKNZCwtPFFekeSLvydlXvrnGAMeXFKzVOaRlLJEnnUKIRGSUzoSeNRkfdYdahLrtjxhIZoXbCFTdGkcMxyvcLuoFkkzRVqxXWfEjynMkOUZwyoXuyKOJzXyorqaJzXffaBqnrZmJUZdnyizymTtIdsQTrDshZLrHUsUonvEobCFFgOQQeesQtgCZYbhXHCZRZOQIDeMFDfodHkHYQtOrnkIsQxzcThgkpJwvalVzOJFACmJcozBNCYJJssKKZyZbKBsOPsbsMAZwHRcVUVdBTFkwDHvHlQBXUAbSrVSfWGZVfEqkAGSBxpcnAJnVcukCtrjdvvZsnGICWnuOGMPLpTxBagBUfqCbGiIGBbmVbbEnNEnNrWcaBmAmfYiWWFJIOLOOCLCHeWGqpbumZZRRvuliWoCVScxqnWumkMxefJjhTvsAcTsBGYjMaymkEFlaYHPLflCruvnEkaFBuPznapPUfjRghpuNRUXTAdkcvKbQmAmCuPPESObQsGJJPOjlniHbYAcuiOHctUITOEjEGgIkXwgphjMqxICzQVSOXvgeKALQdjsARVZAUOgYJSVnzuCEQasOuFFOAjtpMucyeORNwpCLEiKGuAmqINUYtsZvDLMdgquVNnQjhziWAsLlgMzVKbKPqstfsVfRviGLyKKMwWJKKyZiyZxpBjDRkPQBCGfyLwbJyhMHVxEpCgIOIwWarRdiSzuqzbIsLzzHGxRbekcRnIYKfbbtDSiktIqIspSEwzFIoPPmGEcWEjyOHtPevaMQBURyBNXmeMpgyegHDdJXaXoiJLXbiYkXsiSZVjDimCaUOfhpVWguflHOiZCdmiuHEdGkfEOwcEpartRRyxRhRhUlVEGpQuDIVhrQeXEjXiuqEnqPMQxEFzzFJQZBYGUDtOrAiVtQoLRcOoetfwYdshMedXUuDldDwJhXdrSloxmrWCKXJUPlapkpiAucSXCqjniseZbAYJDRJzLiLHaOBivHbLbvdnUkZTOnISnaEZVfkMzPikCUqsvgAmcXItIqsSRUubParVNzMfPsRmKEtkKNZCKDQAYEIYeaJJCKRkzIzZrVWGwSfxvEKACoKkbJHDEkbckpPBcMakIVSyJnvisEObMCeZTvnoKefSXOCaCbzaLBfHuplgoOmQkkAdDNFWqKqpnPkYmkThVZhqYvhywhNPKCgavzLXKphJAGtXLmOvYgbrDGgNPrHwxftFEuuZAYGPJFtAmPRHPMNKklWxWvupRLdeXTeBDtAHcfFAnWmYdxDIbdMYTjmaubmSYjeRtlerBLFsTcCMKmARlViuQwpFCBpIXTRGAbKDqcZZlDiltLassFHirQVBcjMSzeHdsGhJXUwxAxHCGVdcJAGtiIZTQHpyvpHYSVXMckfpkzCGVsIeIEYEvwKNIMtQKnXKgaFfVgRfQFaovEdDBRrUwgNVbNXyKCmTTJNYAGSyiHZJgJCqZkzwhiurCdkmKCBMJyfrVqdvSKiIzcjNLxvQFHiKaSDlmBcwOXRwaqOSzsKYTmgfWxZjnHmSdZoERvdPWBQZafeLplcMuyKWzYPiYbkZkMYPiCHKOvgMOxOKjARdgkvwffyGtgWqqHqHaGWrKWSVTvcOojTLhSCEbenocDSwnGjbFsgLnRiwDTjCMPOaoNceSCJNxNyVUVnTqzbensZAmxVBIXxlKUmCuKmytuWLmHoIUchwedKaMnBsugHHMiiGpANUwdbWZNjNQqkkwdLPwWNQcXpjphfQZFJuRwmeXmhRGfWEzWPnnGorGmYAjMqfDwbeGQReizVcrpqpNtKaeslTOIXFEUzlhdoyKiWZxGVFaCeMSmFCrDUqsdjgLJGmDWpXUVdrdIWtoCodVzMhnFiaVxjRFERHZlNMFjLBxhEqFVTjtncFYrnVkBnOaeoklBiHmBJWoQlqtFGqCLbRpCaCrxnyQJisGJcPGKDDVhjUbbonXmrFlbGkzmRGmJIoXhwQipeRGgkIkFizdLAjSRhqfqwQQtBYVrGJuDJCWfZxHojbDfsmMJmsGFWwNAYTWkdXGaBNBWPFbpLOsTkTVGTAmdZGyOiTvGhxLzODzTqiYGaXqnaihEPvWhnJOyBrzExcpflRFPIebNYFfMahHqYNXkpNhFoapZzdYEUwcDCetVAWXBviRAytQuOIshBOZzzpJBopoNOnCcYWeUKGWeKuQvpuZrJdYImFVUZbBUquGovPvBjzHlwKZiUyKIvDFBIxXWbjrKOMasFHXLxFgxlDfULxPkJxkqWtgZaZWmPZcwBTUnETwZcgdGxkZKDMmRNivRSSXleLDTyCWETFchexezGAwKgJSFsGRBCsNmKYYssqpIVvIvyrEzFqyULqhVjORKgHLzwMrghmnzRkUHzcRxnziQepcxMjygGnoUMIOKMVQxwFGEROPkgpysfRZfenvzpMkAaFEPPldugXsvSAWeSxgZFsngqOUHqPdjIKaQTDNMciExlYFaijySKXtWkBotXFglWlJNFbktNtqMPwaargZvkJvLJaFcIegXNdQBJFavWIcqLRhRyHPUixrbPsVJUllQdApHCUckhqICVpnGZkFvuUipFWdBqYnprfnFUdsEKDiZmjZSXoWUVhnfCYaFHqFXNyWIpaCXyPgLvxcAcjmOJOWYGRdtLOtRbYNNpXpMuoYsWAtJNyKALbGOMqxsrkvwwSOCFamLnouQUcIExXijPeWygbKAlLTwTVYZsnqRINojBkxKmPiTuQLAUdXHmpqoXeOlppwTDgfCUTJfnPmQrmklqpoaWNBBHynfRKGNYEXmMwZkHMhRqbyPuPXdNzUAHUDPwyDtgBXgmFucfUyHpqvxIdkkOmrHYaIlaToZzlNTZNKmTRrXnPBpXonSQCpeigNaAWTSJuqYIYkjYhgSgmnSnzjECutYloEuqpFrKRohgSkcOvQWTaYbOmSLyJMYXOCMzVuQewlWwXYAqNqPVfLnaoNIlrikYRdqcaFFdBXjVudAUvyWSivLDMskWWDShNckpUqrAIwOspSGnfKnpKljLJaHJVeTAWtfpIqYgSwNmPTFLMSsUOVGwliaPvjKSzCZUjCTYmEYlaWAmwyhXfvhLvcHMqednmqYEfwwklpqIWrdQYIJGBvUBLZqNwDVmGcxjPcKjSuMdftkbLPMCXqEZUQojtgtKIdabZWYmeLpRzAcpSlltFVkmflrdqgMNHAanqgupLjxYFCuryuhHAbTmgVGyZAfLhjJaPseojMYYHgabtwDvOnPBOpUvNNgpLTLrFAtoIFIispkhBLaeHXglcreIXNIPIPZIqwiBxsjfnqRbkZgvKlTUXTrzSrBcXiNAnudXVZbvmUZvIDeFEqXVhiGfFfBejHqjbplergCwTzsvKBOTQricGFyyIpKoHpKmWOnbWaeLDBazIOXFDEMMMEIglWluwKsXoyqFINQfGGqcUDrKLOyBYELCWEJmPolYkmeMQSyTfozmtcdLcapHgTFSqDkqwRllmIPfzPxHGRyPMCpSQAFUdpmtcwJXGRTOWagkEXITOizgUTgoHmuzbxHXpRELYfrhLRgfmaqIJuRMJztzzEbfuuYxIMzZEZEELqfmBStBrBCMjChrJPXvbjHOCZtmmGNKsyEKgrCZKpQhzhWXXgjmhArpGnsscAePJWvqqXJpAidXRfRYSlBjAJFbczHWjXUjJTnAAbYyizzyrRiINTQkLZGXyrqzcoozySafRLUZoYJTCrXhjlIlkbOPYKUIGKcTTmCOSxxamhhzvZWokpzvBjNHwIIgfmwhrJjMvNJiIHbwVQvCxEddDsQTtziXRTpycIlTOmSSmzPdPQyElVeePSHNmauUtjbMkVDMNtFsDiVPncwEYzjsJuQzJoEqEYKqUbBbKyziqaRHliRYnTtHzhRLouyTcwRtLWrvTHUFsuwqILOCDnoyYoErmeDlKyOTaUvAbBaFvJAxQWzbOrFfCpmrwPYrFdpxCDfrFAOrEyjeWTREpWWuqqbkfReMOKgDswosFwpOWRRfLovkzNYJYvixXQYnczdfeYJfiwMseIBIBaLjltGAqCYdObzDYlBckOmhjxJDwhbkZluebGIBpliECrzxzHYWstHhgHFwmxiqxJJUlbgGWhdmmXRxHxehCWADCWKyNvLwfJYTgDWTqDGhzVvmgglihMGAhyjeYwTUUJqAWadPPHnBkUWrOCeKxGigfZFaYgUBedoItSOxynGeTHtxTRSFbjExRgPEKTGHaJOMjFSzbLTpgKitexKvcvwEcGNxKoOsmUcuqxokYTMxrWyxmSVtdhdmIfsoyCvnbGjYfPxzcNTFwFQNHbVfAIKOMsetdQmyhZhryfUjrgfUAMPdWPNTxetAhEfaMIUEAfWVbxaDBjRaWxuptRyJHztUrNFcGalRoSKslPcoFEvhitRNBDtPaNIJITEJTWcEDnoiJbddWKHkzzhLUujJYFlTaYcmhbSOpamPZQnKMJMddpXYQFWoDxduvgidDaPmgaPvJlYhDuyaFOqEodVhniZeMxXaIcqYrnaVaKmrbQPgDsTuyzWQsBUSfzvqtFfYwHVLiLvKSwqwuJqblwZPwmccEGQGbLuomnAefONRcUlVLKuPZGnBFOGeBoXioAktRpPxqJuqGBQqGRoCkxPXHVbDRRQvpGWQgsaszShDEobBEQvTVWHXIiaGZwoutdrcoAzTZbVMRvmbXBMtxtffuCVIXUOseTdImdeUgOYmCikdXOoqXmZnpFqFnCkjaWgzfhYkylegmPFMYZanXMdeUUZsYwhQduEVqMstXKepVpoqVcBwMQQUeFXKyEQQzzzXidbNMPawFKcblOfBTsCklKSiNskQyAKxiBBZiilctuFEqUrnsPNpfhfLoOnPOyTNlJtwMQdCZGsJTPKEuARHbEyxrQJKRzKBQIQxtEttltkKbkCJeTIIOtoptxKRkyVQkdrEWJVDbJguVNYLGQhcQOgaTjHBtQJlXPMJdqYfjSbvzQwsJuenFAOXaerTdemtlDQGlKKaKcOmUuZvYnaZRywBOlfzSqiGduUWAOvXVqjiMQmrXIqeFVOGovmFAOoEMNcYDpSWmGhhqbmKVWzznuEzzyNUmmshWUfEJPtJzHnBFHzsoTgjFVAPxaoOCvoypBzkhtxTkqsQIcAbTEMdvLuPxMKqJMVggqxEkCSbzltqhrFXJKfRuPbRApxIAAEqNqNriGzlcxcxKlxMUsFAgYHUPqjXpsGjwOrIYiCHhGulHwzDkptKaWiapYzlIYCdHgAPJUWycWaKHteJiDRbAsJTgZhAdPeqEgvbPgCHcDCpwBcBLdEJwtQvtkwJEwcvDEDtnrjZbDbnmAZRHpBTBeppSPIcrbLitUsNeHXbgwrMEHXPiaPlPmViLQuoTUGTgwcEENxgMOCqEyxgyYfFDCnXNfEBufbZqawrEFZbxDMjTpaoLWGKTyYEbspSFLIsXqkUahJfDMZIfPmofjPKmXQqYieBsEMFMxCfhwIxnHGLzSrCLknsPWrYabnIBYheXOSReRrULZKfHlgBjJZxlOyOsNSHZBjkfnVxTWVkuVVnjmHXYUkaracpnZCJQrKInstyasRTFncgCioCPXcSiTmYweAmHCaCyISKjgzTrwhsdllhlakYRwpztJNNoPrQSxgtYOmObKFSjzhKOswQlfdTQdWezWXLpKoXZCtcLejKyrQGumFCiuykkYDsBjjXxLzauSQmFPpKsmflSAwspprJnKeHZUMpeMeHBNlPvodnjqhxZESaxLCwBntvqohvzoIpekgTdqvwQciWXeFZKtGYiWVWZPyuKpCVptzLYmyVKnzlTQcQZBDhsLybSMRzLgFAyenyKgtixKOzgzNHPJQofiOnyHHNPNMXPaPsrkMDODEVwRwLjmaSiakwOjwWAGPmuVrlKAdfmEacuBmrEZNQVizLTtePOLEGqsyGdlcOHGAqkiUkdutbwUgUUJSWiLaIdzMFHVSNtoEloRhBqZkVtcrwYjqaIEKCmfKFTjnFQuIMeUxEbgOpKTvVAfazVCyzqFzIMJAEeRWWvUtPaKisaxrKCciLPRIkDsaodRPWCBDvLwSEylgtMpwhejTAbuRZYhAfqQmqGplIhvLesAEhTpiKPnrpbqGVATslwydKhrkQfLQKgKwNzHNbIkpicWpRfgvdFGbiHozhYCWyuTDLmDuxZMuxjHsIWBFshcPffanDtqoaFLXmIzThrPnAOINGbCmmriOVaDhkjCtODAXKblxftSyylpeWDXfJrVclSRGrtSazwOukZgYGeMURcDhUOzzCUHHzvqauUvhTPFfvfuoMplBNKvcgReBOEicBpIosylcoYolpLVzzxVyZtuJHhjwxCFiIJooWhqQViPJzZkfzfUgRemjryRtTiqZnxIDGwMsqqAXZgZSzqPtMKIwfAqokbzNNwqJJXAbWtPLflfwNpnREszbiKuukFLoiEbHUvFEmbGCJODcCkMHWvestkcTFYgCapjyqRwtuWacMxgAtbRuFvxgPJwvWUlwNQGMXRXeirPjcmGoNPFWGDVXEryEbLVofhDCjxfOkhBDajaHoLXMlvgITNidfcJcPdCpgLNGUeOlEAcHAZeXqufPIxeEJzVsZTcCBflGzSWNVGFwFPxArZkNdOUnEyyTDtDldaPibKJhbPgEamAgtbUkFNgADdgurlffkGDDkASVChevMuqVTkgAPtHhlFMtZIbkFMYhIfiwEkGWQNWgEDroUQqqVaKnyZkPHhdtYLIzaysgQaMYYLvqGMUSvRYjVQmhfFdXMKUbsKKclmTWTlMCYQjLLcpbDAJXPyjTVxBfPpDvWOckeLsFVknwDnBGqjszTXqclRRyrPxHLSkKLuFEZWndPQZEwKejNiiBdJlGwzZUOsUiRDtNQNlolwNYSnTVNrqFCNQPviwwKbabJfKmnHrWhUUbdyREAzrSvErOWuqMElwHmceqrpkcppyoHqWjKYlyVqeLXpnXqwleYIxdKpfIcXhFEhleIiwEkwhstbKWGbsSHLxEEIsEKJKEZPsarvSWRPyABCXOpTacGOWZBQejKTHztDuLvPBpeVCLLAZjdKJiZVYMbbclbmKJCrDqQFarSveWhuSFDDwbwXOndwCAbzDPfpdRySSkByKylIAtAjrggxbwhMGLIdncZrhyRMwMjBhneISRCNIVyiVJjuHllNDvYVBIwdwxrORdTkhVSgZZDMbbWoMwzWMowTcUjsonBaRtuRgjaeuUydJdNxXMEFZaGipmgHiXkURlUsvkpqQZfCFgKeEGKpuZTCOYVaJYccTYupjZqgjMDHBSwaifuXgHVgLjYGYjioWdEajHHPJdGgglDQCLKweTURTFWQNjbNdHCirjMroLDglZvyirMExcFxBeVAJORoXUMnFqolRmZREzyaQAgLYErxsnKSHPbHwNLxxOnxNuVryHtgJCudmqJpaeYkMfzJUNHHdgKJLeIokEoxqGUsHNQlZwGqizCEKDnghoidmxdtTGlNZQkJUpQWIgiNnRmTenCutmyvowplVAYAfvDnaXLeHGyCxegBqcEQABZJbFMlsInjTwfgXFgzTEfaNtMNCDjkfRMKbZsDZkPtcIuDnlOFLmyUGzPVLLymJYTfguvIkyZJvIRkiSaUoiTcfCXCbMEwBXBEgqVhEgvejwCCmhAAeGYVvWrYYsOZBhYZXbPEyxdKRUAdhAQlapHlbfxnEZDKNzkXUlaLIAhUIKmFeEPrqUzvvGWivtkfIczBmyNfXqHHVVEQQWLsNQeKkXWIXeEMdPulSxBUkwmPuoYGjZCcQgaIJJkyTseOxXdwKIkUPWPfqbZmTyYKpGkCZWfwQsIzFHsagZkkgsABvriHCzsjEPOEWaOGOWJcFyOoJfOviOPsHvcbbZpCCvHLaKDNweHrMWluBveBTwtvFjyRsGlfrnmGFXfzGrjUsvMXomlbCMxJrkmffJqcBSkiDgzLVTolhPQmlmXbVygIYRlxxVEPtkZpFSddpmMHJbeCssnjJBcJzaXDZXgGuZsLXzsqMySRPebfAjegfBKGawvTRWHaKQAqjdoEOTYHUyualSXWCzJmtiswLnkZVvgqClVFdzhXCOKhPGoHMNsTSHUNwhtphsWcJpAfUcCUzzSmhCnIYMiIFNdtKNNnBNNZheHkFkAYzkPShjQmackrOLDwBPpjFvVbCyVVJkkpBWsNndAUZNOIPfMVYPCBICIykJyKNvQFBgnbdzWZcVteFkQlBDvkorpZQUqePmIFFpSOFBSXGRizuHWgPKpwsjbWDQlUGmmeubMvOYMKmKCOYFRzAfCwcOPCqLMDDFomuQhzSQWmaWNwAbCyprYLensvpxKJCsLtUsutkWEyDptcaKcPUvYfFaYmUAGXQvCEPuFpInyMXJgqogMFpJPvzJXVgeffatOaMIQjCTRVKiKMgHOeSiUBlSPCKvBkRAEqdubShlAOhcBBUADZzmyupaofaPWkzvhSkLJfvpqAXckYiWAjHiLJZhkTZnPExeInKDDdjjebYpniAwViweVHPTEosSCWPsDSIqliYsjovdsDYrusKwvqZDdXoxIYEDUsRrvyApqtxLtpnhyoBtxRDusazmiMupFWygndBzfkqiGmBgEBYpJArEiJSOGxhfeFlznWhYFxloCfApeKEHFgDLRNeHUZVISHjZvwUrtDBeOMxJKhyHVnGgbAGtWxrCcACQrZwAjXLhBjYhMmZZvkxnLEcIqbObMkVxpwfzRrMEEiJeeNKRWULyXrCkaaisdVcdmZhAkWSbPctqtQrWoHtCTWSSDVnuSkoMYIwRrwHhCLpDnzhaHZnXCGyzQWPyGGrfKXYlUNDszyqJCHILPOvjzdMwNonzLZCgQMrxiLBumsVhUvyWJzmuAeRbdyEciLARPQCOoBOuBZoMBFGVpZXNXMjnxsVzkwJdNEjqAnDFeumevTxFnfmeCTlOTvKtpPNcPInQfJenVIiGGxRoHsVisVcEXVkTIBnjJMlPGDjuEnGHdBhYFnNUiCEnMUEmsHOBFqlDPSKJJJcaZZzFaUuasRbsKyJUuAvgcdefuxSDpljfJeDEKXKNfzZvlYnfRMICkDyEOwgFkvnGepYsqtJkmKFAgiKWJZOzIQbOObfFLdaIVjYLjwrgZAagzhXGnTdGeDGotAeRRYHLlVyeYhEJxqxnveHAUTeAllAHTSFmEfUofWTZjDeFcJwUbqHQkqaeOQMYXYgQovkTRdTzFxbAyHHIdMYakHDJYDGBhlNORDWzDMHpdPrTXtwiBSGhHvTJHbdUcNZwJyzwMHounbFdWiyMUNphqhkdGKjOwbaDKkWlokLWrfKLKtnssRYfgyQKmGSQiNaLhtqUpBhKQmabxAedpUCQYBZtVWhMAvpuAlGUNfXlUppYDhDmLichcCotSpYIFxWASssfexBSjmeBgHJpOcvnGDybvcbtdDloIXgwnygVMYpVpDHjeonGTPWEyZfAXXaAPvUURXDcCzNxEQQDxxHzDVdQxprWrCdZEYPKGhOzmocpwsmvNSHkaNOhXiSRsAsdEhPRktrUFRlutMOJhADPxlFMbOwqvEZpcVWCEruHJfpivaZKSZsKvRWDKRhXqsUtBUiOzccUAoxxfxwrJlTlhAOOaSnMuhiAVPPGIwvZulVkVSfUxpxoIIjOdJCwoBramGqsVAsdyfcevWibQjEJEQybGDYXcRFftkyqhYOqftlakzHIPvfIaDjKSjeobpZpkDzSKWDaSQDAKKxhriFmTnUuKqXLhtRgDBaTDeQOGJobZyYeTXLcrQHukZlTilrvwoJFgxqaqoeLqlZWSmHpsAuxJXjQYdhhVhEBzqEdiLmxTotdGDEdnJzWdItOmCxFNlmGnbaCagbKmVxxXldRyueATQhVcoKsGAEmWhnaRyExaEAeLCWVxsXTuPkOLLCETTxyIVFujRMNAGWQfDOkFCBnsrffJwZiAIqbrYYvuNlbOVQFycRINuZwEpAIVnTpnLfAPDxnyOUNhlCjIMtQDjcRpkQYtOdSXPUoReXLJgCZYcescLaTZXkjqOyjDdDaGUokWKqjiHujuRAtbriVqJdbBuMyiVqoxTjyZzfurHewYuaBsDFjtvWvxtsyaajjFTyubmlRhJOqClUANZYaPjQYjlOxKqkHYbuErRTvjnKlPSHrtlaflWKjHUnFmwDuALghegjCuKEYsnbfEaagnIXSBhqUyajXHgrBLDrMDXDSuBwkJYdSbjoQpftBKDNltPjVOKHkwZeVGBVMEeaSlxQFXoNbwEHTkQBcLZaFkpmODGrfpbsFoWOtReJKrajQFsRzXOvdOqZgMyUFuKxOEoOmDJCtGZQJJofKYFnwUWhCUPQvthPaoupVUVRQtQVzDCNmBpVLGRpjNWnOFDjgCmDRxjaokRcCMGWbOVeYDgwkeHTiXRulXoRAKJzPZgXicCOSXVAQCvTVzszJGQfEBTToJPVtdMEWNtmcSkEJGiQAspQcJtSdqRqZSmrqLodvorJGpjnqvHyDpzMYVGidgztWcCyloOoDEtGPQJTwrhaKwOqTFqfNRWTXKUrRPvYkBDvfQUMqPHcYcgkduTEPXTuwHdInTwqqxvGRrOMpVloJrnqTPuWBYYOJjdtLPdqIrbgqgXDDhlxwxSfBJayWScskmevQWzpjQZipcLyCbDpbTHLfDasPUDnLLpJMvcaMPbSTmcVIeHlnZSBPIfcpCQRXafSCsvNQZubKTobGGmIbrIVSSiLvrwCDFqVnNhSvggvNBwWPZhrTGrrLjvoibfdzDxisQFmrobibIKaIQmFPCbaJbFofSRQGLbYAYrYWnKjRMRAXGdEnounKNrOwPevpDaKFYRSVBTDhSLrBtaNqWbezYziiCskTedZLlyRsnDxlyLqzlbtwdNZPmHzjHMwbHcPKYnvaEIQTkgfsIiVHAbfdpsAiocyWsgxfMaUXNIbCvYfMSsydZNtrHMBDvPPekTTjOIaDwhXjUEWYMNkuCGCNgFPjXlrJzQOVDWQUCqBwSQmagzvtPdoIycVNEOTcnYBvOaAyErupSDtPrRvEkehwGaVPZiaQrkKCYQsQmzZJuUsLSKXJWLYanQdXNjwBrJKfdTvqBENSNOMsuRtcLCuifktGAGWiZdeCEnJhYzHoSSNVWSpVeXcXkcEZakWtEWYMaGwCrsDeYiUbPXqiWkvXduPiUwOXOXbibIrODlIysuujkeFPxanmZYCXzrgCHkqiSKgSGHlcAlIXNYCfuYlQmVtAgkzITRDAnjzrxNKbnYeCpTPJFvTSYmiXxpNhMQDLvTJTCFbuHrtEoTkUrMNlyQVqadyPWhKGJOfSeEVLQLGOmGwkuWwEIDcBDgtmnKhHXwzRDNrAavDQdiymxiklTjFzsthIcqMgeXMYkRiTsHQmULNWqFZTaTJTmKFbeRMPrWWwYrSkqJjZTKkFPLJcrsHcPgKmwbfzcKKcMnkYxIbLoowwhnwalpvaqeoKnDPOjMFesBqnYNaWIDhhKlJtYQdCsVSlCbPYFxoSlQRDedCLuNOcResJiZyOAgxVjHZPtkJjgYOWmpiKNUkLKrVhsRNaiQSinplhygVMfPnBXYCFzAVJTepALSvvYxYnPuQyXFyXtovxNfvclEZJvoERIQINvhFzPwlGYYEJhldBCZkWLWKaJHCuzjLihRvDElNvLlgnbWcBrJMZNDEFOBWDtJmaxGOjcqGIsXrEEIXEFjYUWgYyQHfeiLjujGcUICQfVYpylMfADxIcQYiKpwPcAfpxSkzzzqYPlMSEYxRcMfVbPULrcJXrnShyRbHxDwkFdLWhkFdfpseGuBxymnYrRYbSjdXpuGBpZEOYXVgAgfHVtzNJEzBwNNiItdtBOcLeKtxxdrpBFMmFPqSzsDwOchQoNrhbeksNqkUkfSMUBbMVjCiplLFFZMpiYSTvzKCuUiqmkkjkArHTYSoZOeJleqWGCBOqSxhclIWwKlUEEZAuUwsuUqbNQOYtIpjcJsUGzculTimUbUcxdODjAMhuddpTeGYouZmcdtxHqMYTwLVIQGVjFqjgRkaoIYMGBshpKbdWRbEaDpNnPlMaqgjasVHeqItBdXPwYNXKNNiebwgxaVmXAFGKnVlAKGagizeAqdUvsatoURNhCOMjXZgowEnXmikUgKaJrjGeCgwRteIJnNUTegIByKdtmvjuYVbzryMyLWREQZqiQmqfviMScgMxdECVfowMfoZSfPxvmDAcUWbFOhpwVxKVveXwQuVWDvEwdJLmUhszxfNgLsTFZFTkkNyXbYOZjQBZhmggAEsWIHvpeSQWsutNQfFhsYnHJTYvqzFEwgvToMrYurbyNjHiWkkzblFOsdIPSndvmOdvdvCwOQYbvmIzfXBlnjmKlmxeMFNYGHFzsTycQZJFvwKsuldGehhOrxJEWJVcnKSguWDdxeAbWZSYoHfhvMkjTyKlFvOfnDyIPQXqsETnfjTvBXYZnfZhVQlnHoMQFTjmxmYcldvXyuykIuhOYZAVvuaMADFuBWMrGygmZhHvxpezMhKyvssYVSIhVbfVbCRKJGmzbywVLkagOFFVmcCNbMaXucLubTDqqCescTuNPwzOWQbXzftUHYTFRpoWrVkZZZoOODBdZdqZZhWaJXnqZrSBZvZsZBEiuleMmKGZKxuyjawcFxyZesBodZtzyvNIlpZbeLtyXbYvBpLKpuTxXqklNoQvMczfqguGOLxvJKcJwseSQPnSnaczERHTLGKNDJYBvtxDzdaQIjEArTkoQeOPSyYMJHsbJXCmvAdusHoivYEoXnDhdiYmQizSufSlNrVwRiCbHfjKUgZlJMCrsZlVcDzkWbojWQfTlkaOaJQNcYjaGXyAciNmsUKvwnJIpNdTAyBcqtviPPrfqZhhkcjVevlLEmEMUBCtBeGREEFTSlbThBazbRMhsDHwlQrErYlHkGyWFYpOupfbICrApxkJDEHpPFlkPYGyNROMjHUqRDKFSVWwmIhRRYlmdzDirQNWaCMLZvQngZAKwsvTjORQHFdxZXkhrFuiYhaFSuuVhuSGSpwqDLznAsXhOyfMTrbtGBwgryusLwjutEKAviXfASNAXzKTdTQXpgWVlmJrxRotfBhsMYzgpTTgJZCnmimeONCbcSUuhrkzRNyWVIkGWhmcUbEdThsKrxqEtqgwtFTSVYbUHueBpwQEeiwvSYSGHHcdMBKfHoJSWBoihpbqjlsqqfIWXEFpbCgAmDJDfcnUhnRSBgeFiosOcdKmHJWcWOflbRoYrJHuhnyLkbFdBHSuwJMFUzbIjDEiNlPzjrgnqZAqbOEVhWxIJyYXgFIvmrYKGMHFLtcGpmRmSchgrNKaxpECeRcwPZSUmQSYfZeyPHEPqGGLyktwhtvXufegtTIshirNeFmNGLyjlPlzIltBSugKxemSYYAbwELMlUFZnfzjtYSgxqvZTczGTRnrtbZenPbcyohFzNHAMldJPTPSDxdHVXbUfQasoxzNsUoSezRpwmKCHOlguZbzTlKEVErFvuhYEDKhJaJVHsopfrzBdAYHswPPCrLezmvuyVWjIrXhoWxFYwGcfmAlNuunMoZUBkUWOnUOHjOVnUJuVHorIcizJxhIzHmsbKgMTqlZnTSORQHhTQCrSgvXIDDIpZEuXqpLzoxjXKofmztfwgKiWBVlYuwBRGNajrqVohvutmRIitIJAjiJyegOhtFJyVZIjcotSrbrEMxetNmfwERpImcBVluwJUTsxaaMzTKgoWpuMPkXMwXTEafLUCgdYecgNtYlWkcnpYAAPmsJhBmqzYIjPWOLCFVByTrpDabDRleKWgQwbrriDxPfPfFJZBjPyXzOMbxRWYOdUQbtWkkdvsQbOJRFyxJlOzdENBJjVQiQUFuSIMiljYqURvBooWNokjDYJTjGdTrXkSAQEjlLHMkZSBSKfmFOLkrVLjavxeDoOOeeDkLHsZexPRVzoatvxzlfQhSwWnwlVBILRnsEHBWBlzypDaZjfIHXoRgxYrAlsQPnFzpiDmjAjXXpuwlwsYRMvwzEoHvLMDswfQPkPOVzmyxRDibWXvOoXqcjnkXXwsCIAnxuuwoWviwFAndwantyodEywMgFsPLZaDbPOZUloVRSLceWiBssDTLNsSExyVDTRfCDXOgAWZZlFXgCTJMxcOAkXADbRqavPypQXXIYkAiwgSQLRAhjqNGtUdoecDDaETzudWvIfGHOWMAvmbSXExrjqGqgeGdFgwhWYdLHRSnWpZZEkwJPXXQzuIircNzyPiLSYRBiGdhriGnYnZxJhySLQxVipdXIwiziytjSMobssPOtDSTKNQfIASXKgljOdcvrWAVmctiVIKDMTMmYfMiwGdjgRximtjaZLoMzohirWoBDITbxnTAKtbkfRzFPejDulErbyWGTqsUYhRIEosUKQUfTsuFSaocPzzHUmeIwXhEnwUDrxbPQalJzwAxqLDkGfGmqIbgIWqlDavgJhpxJuaodTLHjZYOsUjCaGEEYNxHyfbIdbXNFLenLUAndmZJAklWNaXdCtuiIuZVBnGzqmgJjiCckvYQzldgPaeDDJfnJSGVwmnUtfteKuLIwIHuGqDQVxaikSjaIjlAuLpBAfKPXVfqcfbsyyAPNNGCZOWAXNHSMamfvqZZgYFlzHnIibvBjKVEjwDeizJlViqLtFaUvLyswyxEELXnwbZYAIUjzRiptEYKwbsyEqEnxyynSbstplCNTnNwDuIqZKlTlmxOLQuJyWYLoFvoJGRdKZNrEsLQgQckgpPyjOWBSFcyhudfarVlKFjmTHoahCxIgbkrVrYRpBUjiBRcehxAcucudmGEKakbQrDIUomUttzOqhrEjkeSJwlvOwUzcYFdVrvgcHNzpxvHGhVrAKWbNsACRmsjBRxsHGRVQMxwPsYQwuDOolPAZanyzSImcnRQmwfAAlkpFbxOPqImpDIZNgFTRHcpxGoqGgpMGfroptoPrIbcauzlwfNFNxZhtUztxuhCWsPaqtNxJiemyNUyqzKAnfXCfCrSRDFORbHLvKVzmCmgEkRrBPglrneohjsrVgYBRVUAlAnyBfkykxrFsWeztoltXENrIQAwoxZNDNHeWqjRYjLVzVPhgjVfOUAQGgFAwqBfLVjqYngOPvxwveHURMWaQeoJgUNpcGTVNFIFuCJPXHvoxhicnERzrzPPqBsdRJxPwgpeEdpPkjoymIdVexiakIBkrYvNgMFXFXuFfjyFiTskgUASlLVujqylqCGqPSbDwomaXWudejYrPjUjCvahyDBAURBMtyuXktwPFOXaDdrxuUQTNHNvwlDgbYtiTUfTcvaMMyOaeriEqNVDArDwUFiLMDHjlWyDUVUkpuKSXrENlACOLjMUJKmUDmriIWRPLzBFyPfpqxMKPOWHZfcHSadpIcXsjQERYxMIrrWKuTqkYuGmKsvWVTuqQPDfDaJRJwuVYWlYYqszVMeShhYUhIQUBonmbinyCVcJVkpWGbSuwcDYENQRfBrlqbhQPSmeJiNEyLYVrEdMBAvdxzPwYsHSMcDydEJfBqopHoByNuRttFJzoJjZnvBGqVtBCPoPtHfYyaOHRrdgKiFKAHDDjHqjTKelDSvGYLnQOnyupUvhkAqRnbHEQbNVheAfjmuCgPOcoIkaznzctnMKLgNCFpiLwMxcPZAtnVYkFfmYoLCdmUgOHosohqrOejyMpcarzIfMhrpOxthiOuDETljYwubbdWQrShCAElEUjhfnsfbGwVLcUMciOmAxwAvfScCUdaFjDRIUwlRGRMvpDZlcgFvlVTooqQpnBeTCjNwRqakiZvFXlTAIbmUgRpLgTizsZLlLiTUwCeshnyozuEkTsnlviKEoFMZCdKKeuDIjwmCpSqsSwPAmxkwWzmhoaszymoktpnDPpVCqAVQfYJPlyLtRiPZGzMxqikPmcPnrbgVLCUBNQndrOKSRWkdzFHgfOHyIAvJXepnzsLCwYpmCyTUzlticXSgKdqvmFvFyIbqVGJDExfygNYPliICZzUjTNOkHWNFkFYbDNoEHpNEeFzdcIjRlVtKaKkhNDNTCkvUnLMdQULCwuntitLxQXDnxUTfbsAMjRWZjSZwhJlCcDEOULCzcMqfuGFNSCWnkOccrAaJyHwuFdXYfDeXBcJtmAQYKLqzEJCOhDccmZhwmmbnDUwdOwSCwmIYIOKRgThvBQnipvUEtenamRZblKJKYpxkNwdoafZNUYYjihXpVCksdWDCRATTSKEXwNNXnSIqlcestyIWhjkLOFFVkOziNTnFEPLWxIqFGkgeFMOnFgsVLueXkxNTgEMZxhdwuAEgWqGroXUfKHeDXgJwmyvVrwrTFRqkbzDnwTbjxgMDpCnokzqNUkCFWXxZPhicoQytWgtMujvsyFwOAPHqAApUFKOMtsVCPjrWcpFzsEkvMMBlpCSSaJoFuTPppZQrEmGSgNsHfDJEwwBWWSsysuWuLzSLWaWQWgfUsTmPNvqVZqgJhIDLCTdJMfBafkZhjHilQXbRBTmpSNUEBIWEjvwKELsdcENgqnGfSjNWBghWQJVCnWSmDyjSsvTjwgYAVBRtQfjAjfvkxpSlCAYSOyKKzVNzxsEvaKkAHYZmllLZDcBRJGjtEPzDnlZhqRpmtfSmCXbMQfJmbqCsfdzkCfigHxLlMdSeEELrkTuedZviRltspiLvJupXZSXOFOEsUPHKBPPhNtBDzlIccvcTlKbLxIpYuPAXjPDuAFQeOFfzvqPNWdbHKOZoXUlkJXkshtDpprrdQetgYgiafQMbFlrRTXbNEhlrfRQobuVhhiCyJUQcWPbtzslwpXqEeeSegVmVUDdZLmGTRKqREJLfmTcYYbJNwKUbBwrSVvwnhngZLbhuRbVptORkLfdSJdsISVRLuVuVQkVKmlzJDVLMTKddZDECLrRvmwbsRocMouxeBXOsTKEHhMJIUCXYSNjdHjfweOvYHgsSCTmrsyddOnUmoECZRCURCVOyouGcMDSYexSqvQoSdXRRfnZqybRXZMdxuiiixSgMKgdJvWYMLXWzOpCuzjRVurfpksOypqXsLYZabgSIgmNXvNfleoOsTPwWjPeRubXCIBixupoDTRWHltdqApvSoojWnDgaWrPMkOfICTuexZgJzcksCOkDdyjGFJQCNMWxEuprkhaqXaitCQsyrXhTMbQFCaxXHzttPeAXQJymcBEjzrYnkOxanVGaSaPfgerGCaOWYMbFQhAhBiOvpyyTPDZEhFyLEsGdgKDgXtKrPTwmLJiwfdptipGPzMdPMiSFDBQoYzflkWuZlhoXLihaMRwdPPOWyPQtEPOZpOCIUuxCMhpzOCimGAXWINjTLMuUpAOunrCwFzOYwMQvnLUbcRRjuGhsbinSnWOtmbpoxYwKqcgiioqGIONVEaKEWFCUtZwcsWqmIKDWpjeSgfOSYyYhOeLENeZLKuJddUXlnwBncXOMvObZoaZkyydhSsHROGjGCzQymowwMHBXESutWScPgXHoMyCwkXDizQRPaXrtHuzXGRNYIiYgkLCJELtASCmaCmnfDBQRgRaXHglWAIzAuMhcvmFUtcDDENoLRsiddIxcyQbIXHUdxTHrBbomKuJrjFfmktWLHEOPXnDVYZfbGeQokEGtqNBZnFzTKrJLrABHoguPhBLqvwUJOASCriVriNrsbpjAPtnqvIVhuhWcKbEhevNBLIGwatzbPPshymzvmbbczilgzuPWUMahhjFidKVWzqHmosjxMhywgShITqnZShluCqLnInEZnTnzKCzmdHWJpQqJmAiOdxTMlgNQHwbsjYPDrJSvOJQjbgTvGDXacHdkfWAknINjySWDATIBSnjpXWROuPtTEYGWCrIActCoRkHkiwGBVetpnxMiOAnoSloEfSTxfDQwuuyrdwvLeGatXMKdyoqbWOSXZqKXlzRzciDqhFIMUtgzsozEVLjftnfCcQmbSdimdBbrZDmkRQPocnGFJSZNKhdOLNjvUAMgNNlPwmBbZVGtPwyIipAZpkiHHTyKtVwySPChnEmwkpXVecXYOChuWzQBrvOypXVWhkPtAVVeVwFzaHPlUcdoHfRIXjnVhzeOaOkBUIhWuQMLuHZLGeQPadnKHmgNtkOEUGvOwIrBJKhSRwuyvlRVsRwUpRRbXCpNbfSMrbxUuwLoCULXLujBUIEUrlcRHaJvltEMovJDOcNfIWHBFpQXPWziAnCWhyhloXtQgkzOoYYjtIHzyrnSReXoySShqnVuvRxoTzmXVEnhLmzsJSPfRlwuOefmvHWtCdIvCMFlXPwIxwAuPbGcvwwqieLWJzNjTRTyiQPucUIImpzixWnWnaElTAJFYEIZTTgOftVRXudnTaJiQrUYZXNyRsaSQZUKTWfbJGIxPXpFSGQzJeEGLXeKMSjDPQzXGBdcsIIrIySpCvhrtDCsjrPURIjMGAcSMGZmQMHNblFjUwggsoxjkDandVqfRzvyQvYaQNQfQNtvdmrtAQceTomcHPTmgEzGKAXrqBbnblWZMQWiUrfmcsnnYHqgiKHdbjnsgvQeqJlyNudOWeMXaRIbmvZagbQpMkHQoFtmQGPzrOqshiAPIWWsEjMcgtHKWUqqNmChnAFXRPuOZQrClvXPPSbKAvCxjvRXkuVcETAyaYOAhxxuwhYWGLUGnpkTFxqeaRzYzsBGXtSibYhygJPUMkWuDCznKnOpnUHHDXWWaafNXWsBahlQcCATQjnNiWUbUiyFzJCJiSPlmawvwpqApyIghVyfNwmXAOXQnrWTjYwIlWNXIjWtNzaxhatKgMrTbeVcmNDKdgICQdciDLsqjJyMZGvesDNKAvdPDcvwKcDvKdYxfEvWriFhGPbivfKooyrKAYhiWrTBFDsSBvEitKSxluZNBRUSMDSHtUeUBSlCvXsiTtuwdLwkkHqYoytYNGOmShQzrtqJgmBryFkzBunwrgcAZorrtCZSpHAUBPagAPlSdrFzPptqyfpbMMkreDNVDcQafZyRPZsBCLBlYtvHYzrGwQsmORJDPasUiEGddAYQbHSScPzgQqrHYRwNAhfgvlxOOoThlwOFuIbHsWTokftflKRPfnuNTUqzcbsgkijRvWhnAyYrXKRjVKPiKQuAiyOpBpQIMJnLESZlyXZlCFYjUIoTYsCXjHrboHUefSQTmwDiGvOybFzjmaBGOQygpLwHedyHkogKnamscDKwVMFTBNkaTJVzCqkDUtvPPoguMpCppFpUiKSsXzXrNtlsrcoNGmXEzoMaPglhwYWDyyHnAaxPsUGGKElnyDDuidIleYIqbBUZXNTEsnktPxPZpyyWxvMuHlEmfOVfMWTqfbkfVhhpcmRIlRVqDguVzmKmLhezkPNtTwpmNEVgRWdfseCsTShPmMHgLHodXNbhzeLmlSZHoIRvYgPnaaHYjGGTdoqghOfRokaqUYlCrwCcjJbuoUkfzMbaOGSbxENhXusYpzDCZgvMkmdfQjRcVrqqlXwuhuVrnXStyzoxwIqgiISyPExZcknUzyJpABgnwiXznRPhNGcILNWwwVmBGsytUhxHzpZDPdRpRfoYgAHheaGjdfWdZMHpOUOaHsXNgwVbSkjEVpwKQupgwJOOtHvKiBGelRFhZQoiilvxhUDEMRRldbLkRZqIPIRVAiaytcgaINkdWGmzIYKtKvNATlHbyROtiiRcahGXiVpwvlEtABNRrqdrKASPofnzTDZIDRQBVFztvXoiJwioRohGtluhzEXGbTnEbxpHGkOHLuitkHApMtNQFSDIGbFNxdMFejqkfGSTjMuncqQKmfMyIvcvVYPVtiCUTNDJkrgjBnlHZjbQOuQJfgTItVYZpyTeTqLtgywMXbJNfUkSVdfnRapdgtmuIuVNCISVBzpQtAMryKREkUQtmflLRoRXPmLGctKUzVtSWxHEoPfblWxyTIzXrWqnHtmyQeSnifLyfNhAbiCYXmGJiaqHSgVGNLpNrRQVlXjwZiGgNEDNKwozdeLawQrgjCfqomtXWRPSeBLzmoxBxtfCioXbexbgHnheuNXbUodxDIegQhoxfvdryHGGkTCydsHVtZIctdtffViEzNogpqMreUlvLLNULpqedCSWhlNqfAXvgJtkrwdZxfAGTqVHqGklJdSgAQSvqvupEzdrEQWwILFoQziOggovIvnqQLlahqjuVYGpjvdBVMWbBusHbvIZUcVrubNUiVmBxUsnDJHDWZefKymOhrODsxCgZlwvTsFFlyElOFPyyDlpuhwVWhzDwSflCHQMKdHNLysJQfbYlLxOfmiKrXlByfvVRqiJETyAIJYKPZinjmyylsuYPEbpByhqJIeakpRgLIwKMuVTeAgiwvpXzzYXlNQloIJMTyOLGHBkIBWLcWiSqoYsZuRAkcdDXEYPsLmFfFPFylbdmyTQAfinUESMdeoMAOaqnTpqlCyrhPugnpdHXvglMmVKeaXoTSrEkQTvdihWkMtLsmwToCIIJSvABhFXKqrWNgHYWfdqgOlBkLRwCmNByjZAdQVCaOzeHnhDQbXEFWHhmyCWRSupXIwJnLSWsludowimqtCWbBquVqNvFLggAiYqfvPpwpnUAOITmhZtCHpZXjROJoBFwIkUIkTUcNtugmQLPsvvnNbaXPzwHQArowhapsJaIszfgNNjQioaLmTnfioRLlXZQIeNKSxKvVwNUdtwAiRdHFMCTfQDIfAomQDkXpZRIdPnoPNscficGQWEuYtshAAKdmYWaKDdYrgiJzGAqaIzkYTGJHWVziVkABgutXZbRVbAYcrFUPtPErwkqAvjgZmravXLeejxRJNCDOzgYcLbSVNbaopsspcEKFfUHUxHTAqwiHwwqRRcrYzpEZkXDlwCNvBybrTFqjkEKzOVRjvgsjAdGWmPImMYTBbAgRrWRRujNgdGKPSMLlmaSTwXEUAIUfOzQKfXgdsDTmVmWYGQbQJFKzcRNesDlaOGdYugvQkGFVjTGCIZRyKnaYBygrEBJWRLZOPDPWsBXjRLlynYjdXQEMGEZmQteIOswAattaDByvzlvXzsqVbPKrqiSlCVIsRXhbRkjSVerUZmDDIyrJUHnxYqQbNVnQCpNBaiLZPZksUndbLyHwGAkuipfdIqZeVVpwjNQfmFxPchTmcBTkMBbtoInFchLrORacsToElyNznysiEvogXpZsolnPOzHNjWdQywOdltYgGVIDUHBtmHzJmYmuAiCocVPfIAayFwMbZYXQLvAgmzVZZoToXiaxEskkcNOqCfraSuyhsfhWSvgxgSHcKTEpNPSpHUXfTUBubjdZuLTLkVuNJdISSBSZaqBUgKcMRijlNtGsIALXkhOHuWYOnlFXnPrLyBqlYUbHhQJGGlIOyHKcOyVCPGIkwDmBsxvMcKsZxSvMkyZsTXdBaxOyPWSdzrkCnMDzkPNmEjmKXfyKBFtxDbxWtrgxQyUstuCnakmjxqSbxhrgVlpnsySyGLqMITRIrVsdavAtVEmKWVRCnPtnJhguRPTcAogALUaoaGyRNusBqthuOiDeFiSBqmYYyoQxpjYdmhkkordStpOdBGcOJcgznYQedAUnGsdryvWWEYLQQyXmnYRWyMjKMwvgIPGaFDEbnTheoHuQVuDEjTLkaMPXXWUdPbQBYghxJppHQvrGhXLxlJYBPxkBRXEZmhVSIwaUDyZbekjijwqywPyAclmFTLhaZHGRnxtCGpOkIqSabutjReufZakHFBxgIiwaYiVAOalZJwqeVxEXHKFKcdSQZSScWnhfPMggXnPkLYWjyaZBJFjWJwvrFdmkGDnnPXWIDoxQWVShAvDSDWBscsRCpKAzCtlDHVEEDATTRxfhkbhftAdYlKqDsDAaIUXEkvjmKindRNSwfUrnAbnVHFMTIXBorWOGvyxNYlzHmXZVLRDEwCKcBvxcRimFkAHHpFlXZlouLyGmyarLGuspzJbPRmwfasSiULxXvpDWRzpGaPZRuEKyrrVCaPXeagTPZOJmkbvJtnIaRJsrTswNMtvGbbxKNiWhEQWVrvpyhkdAlCkHHERPahyfWtnikuxqEiIsGxSNUUbdzkJzhpTAECTsGtazcLPRsNdvCkxJIoZzIDlKOqJDKhBOLEGSYihRLXvrqgaSYCevnZpKWzXzUAiyljCfsPvqKLWpqEXKbzvWlClKKDyklJemzyEJVuZeJpgAnqjlOhNYROZYYhSeojWOgjwmaTXxrUgXpawTGUGCkULBArCoNWVRIBZdIGklMWGTvDSXWzCYKvUAaWJfsgJtVyKafmUbVVlAAWxMpZppIaxGKUvTyyntRqJHwJCmjexjPdOdqvLdTOSHrAXOrFjZNLsvQXedhvqQMXRxcuhXwvgihpnGXaHbQWReFUlJYFhmHiNtTKgNzKGkbxfveTEJGdNbergMjVYsMykSmuSFvHpBUwwOrQNiCFNYHKyODsIulWOrqMyvBCvfJHqqcIrobVJffCbbkxOSkahtaLymklMhVplQnUnGmXgmOSOfUTSeXgluYdKnlIWXmeEOvNZJlNErwymyDPCzQiAsJCiAqUyRMlwDgstavXnOHLkqxMtfiEKyhNKMpyGNwOiZhDigQlPXvnXxndGjWmDjZSMfYVWNSGYqzfdDyPoNrMpyaYvwPayZgDQyinyLMdwhOPnPHlcEMyqGRSmdxkjVwZwoZNPhsnafeSidCoqFZHdLGvgRbZSUKRVxTtCByNNhrrzCFdjwNhVyzNzyCSYRTFNmjArKZSxFNXJyCUutHhjjKTYkAgtZOLxeyvHaYpcTFgEunSINdAyhaEyPMtbGvrnLzcoelpDMEBoAbySJNoSQIkCIVBWoycXzYKqSjUFcQtmLKQXXMQHDRZpIFEmpilHzWbnqCBPdxYTPHAUirMDhyelrWUCiTCtTNDsXUAZsijblHMzmDbpfkJYEKnNmbRPdrPByzqMBvCogZuOoWibGvtrNZjLdzFhiXNuVXWAHbFkPQFdokDMqGBeIQylHIbWahDBETzNnYaMmIPQrAlBrmfSaUusOQULlAgbQXbxuzplxIpdhODJLIRjzGkYBtnCvKInADhuMGgdbhXPASwUCXvbbjjROMXPYZJHeSlElFGNdXmtWpEtuOWmZEuDfWVPZpnoBQxrVYIggbGvGYdVCYJfKACkQyMPEUftpPaavNIGAIZDgvpoKfmiFeFESXJfyODdkSlxbzrHVrOrVRSuSYonLOuWfrnIMHbizFDtdLUcWTBtbJGjuoejReqaCPcLnLgpvRrKCqIzfePvxgrIATGeHPPkiDNydXBZXVKnJCbBIrymTpcYpJPhRXLivnbeqTJElumPESKQDAzgIrbwdjRardwGyTGDfYljEbUzkdlfpCXTYQnyyiaYqZoGQIOooojjizKndHpGGDmfwujPjRJKUoGaiMQpoySbEjJJlNyXUkboDbXCGhluhnxBhKUtPHYLHQEXNNOhwLLswyuVmDiAJqlkXinmHGxHwQClPigbnepDvBijoLTAHStXdkDGcdmFcYfCbdhihlCJPysdgIGntJuktgwwKEIxScipogMHAxOevZKsOZUjAwlKrssVTxTusKnkOcMjzQZytnygfVNfGOebVYPehzWAsqRDUlRUTPUGowYNYyZhGFzKuDqKLyDlHJjtcdNAXLBqkPgKDJRrLkIlBPasBMhixwWZmxdxrWbDoyfiAWmqBXWIHiWFVquuBasktxCBsisecHlZELJXAmlsCpfmgtwRliTQrnErElCeVlpYvpWOrYkRMpViBkwvlrgHsvzDMyLXtpOrKiWExudjWsjJCJwZjRWAVPAiAEiBzkPdTqbNCBvlZAOyMrlNvmCQOIYBLXhLleHBXimqCMXvfoGvxpxBueLytJcIZYNOZGDyrSrTqVFCvRwIfvQutkCHyVAwhJhIBNJRaiKCtWjIETWgiPWrYbrVeCkxBZBkYmGnpliYFQIiBKfFsmaqnIjuhIXZlYanjlwBbMZiCfWeZJDszSHuCqRTcwMxhNQOyzWXEsHxMPNYIKRAxVHphRpUgVUdlLDMYcKWJcnrYcCNLByXWBywActfFPChcTpcCaSwyvfvdVNAHdeQtpwkaOMhkLeJhPTiISIzTkMjTTPRClXNTCoVxCnhIXWQXUhsOBYcJchMOBxsnwIHEpevnQzeKDSJJXiklFzyzImbsBLWzJFJGLWWYLOOuCDDBnsiZYUQuHHGTrvPIoiteGyFtOSqJYMKttwojxuXWYKtVXqpDVjqawyXjJsGVnxJnYnHryrnWDMzJwIzbzlwUlEGKgpdiLkhXdnAaeGMWEUZSoIWxEeeQyQtERVjIBLrkfFESwUcmgpiJehvlAIbatFBjeBwbjSwPIbCVYARxdiKxKMZUOLcecTaWSAxNwYuRTdgoarfIrsFRFaDSBCwhdUJcliFGoCTinulCHYNYKGrrcceEfinQfordJICCDSIJHBILeguZWsjwWmcFxDIlVoxLxkEWxwgjQzsaKLGCPGRDktPZVWJPgIAyyFUbFjPEXaMShQTMWpnUawDrhleXwhYLpttbspFIesCPwUfYrBZYrQHoEqsmlCKucsZOrXWHZWlRjWgNnTMCXKgHTkTUrJJihgqRjTaeuCEGjYrjRDnmuRIKvChSuMEWvWqcjWYVsPaIlWsbETMvrGhLwqBQYFrxZIqYEkFsgKDOmpfcCqUdNAGUGAcbFCTWnibHmOySDcltbOispTfDJPMJkUXBrWcvmOrddmVAWBQpAONEaAeYerawcLjvHfBgYogotboyentuGFVojGmlKWubAZfxCXVxMKeinSDRBlloYOWsftHbWKNAaQGFcyPvnbmBdEAtrXhmBQFDtZofGuAsCnduDGEvZaTTzFoKZFMOsPaNyctHMLFQaYLUgIGmnggYfMTgxgeJBcTqbCcMQUyTJLigHcSmkslnyQtMQRBpvDJLIOsdVdWuHmxlqNYrPLrmQNiOfNegarnnEiXbCpCdIeIChDrzmFQnoYnzSpoRlLjeZDAwfvljGpTAsMtAGtIHXqaOUnhEjMdPffqXJJznNiFLhBaIQCwTCLurjidInHTjfowGQIkQGrKgbemDbhfHKRKPzHNSHooGLdqFOpQOglXClpIJhHDtJcqSjtohYtiNFDQSEHbYcHDbpqTUiBkvmCbgaDvIspcKRJSJapayJTyxMbfneiBkgHIDcnLEBLNJkREYtewLVYJmkySAnQoGQvOhELzArjKWeOzxGzCOZPkaaRnQyXDgQpCCiNHIWJsvqfuAWjeAcLKYeBPUDUPLHQhANdckVzuJinomcBNVXrNyCnrQKPEKegJZWkhgNdduDTCrBxegLcCcEsnQdQkiCWbFnowMLKPDEaeXCPEiEJfFqVXOfjmSyksmDJjsvAiGLSUGrirBBmujpFvBIMTraAsilxHanmcNkepnQqwQzKRMvLtKpNSdqQhqPBPSRDVhgHjRIwGTQXrDoZfRfepBaIYfedDQernrXyIbOfILHDRVEuYToYRTPJcytWfRgykMhFeteKHQhzQXpxjADxDbqFWtYDaCtRvifOYDRwVdGEgRqraPBcMKdZEvCFKGImbxRkzXksWKHXpJVTHTUjAkdUuBqOwfBYHJLCrIkYLtVyZtFUlnXTCKBvrbzLBnqzakvqqyUHyaBioKzCMBYzvtYwyHphvLkMGyqDeXotisuMIfYabksVXDuuROcKhOqVjvephESVGcSuvGVfZvchUrWtAEfesWXRFgnnmcoAySvallAjpYWrSggXQuDIhqVJjpgEAYCUZkFVuMwuJFuiSrQlcKgNAoCPLLIqjsGnqoxUrpkNSLAgvbGwoAnShXlWOWmWRzDGasvFULdvvARKKYFrxGOHyGCzHqCXXnARtKvKxtrDucCbcptewpNryQztemdqJBfLtroDuEhpesAhBxNBKiOdqvNScNCKfEoxHajlksvnDQpWhxYcqIrKYhCbkKAbcxzlLrbQAEUoLEkvgWuOrnvPPgbCAThKnZVWdverQIxceeVWmaOuYzIzcEdusWZCFucJHudGPbnAcAQTUJdOKcojChklgFqvmkAKXZTOBHkxXyWnHItvRHSoxBMRWJcYPxYxlsERhEjYfCvsgTXySJGTWrjLXxNVCMYEzrnWAXIvAEHSbjlCFStKMBKpnPttwgCaZeNAZpKAmaozdROSAyKuppgIreEsCyRGAYyxEUmwhNqXvYemgjBNitshrQLxlhYEtodsRzViMoDswXTuwURBYrDICOdOdVDLlJhMRxycPPPHitaOQshHvAsatLTfzAKoCNhKOOzbRvWlSPAYnLDXIPWwqWhRMmGHMOFtAbitrhJLKCRgUEziCXnaQrbrrNjldSXYWGTvBTwNbmUHsoGbwheQRntaqTTwLQENDGEtGPglEGHRKmBqRLFKKXjyLVgPIdoosVLhqSCnNubAloORbriWubOSrqPTZWozIIXHIOBslPnvhWvqqJspmDQAkjKkhVQuMcgsmUDagelRzcAoCUxSEpbWHKNoMNIVRRCJaLEDkRIfPcAAQnqOQnYypzNzYhkKYAIGZOBdhumZYFqIANySijiYcFgnHYQZtfKzBbzztBezZEEJJxMnnqPBfprOazIKzaDcuzkXdakpAPOQRYaKKyOCkwwAMrJdtFtxEVitcjnaFSAljkDdVZALXkINcJbZGjRdGRpANblEyKhQPSulxEUecJrshEyNcvFIQuWxndrkOXCEradpeMqZGJYwetPFaOkuUNsVTwuTUiygrvSgyumQNfBkkrTMiCSVbSfJbMZklqSkfNFxCQDSNzddUMeHggIaHsBiRNCASAbxTcIROffTYuSnORFChTHvuqCtigIoNwnflmUUKpNPwBSHuejoVkTzndtyMmrpXfMiqAhsmcXAVPBEBXvKAlQtNboDqkgKPmIkqGOJFmHvhfZpXipCXquRWZWEeyYyNXKlKzuBtXgbfaPlNFxpKcaMLLTTrChverbrRQokNIQglrlicDYFCFGHbDPOpsqKTFwPNNYXcTbjYzpkMeyZblLomlHIyztYuLfqtiZRDXxqPXArNtJptBtPNsIgleNgIbFAXChAsMILVSJrZOhhXJpgyuEPDeDJRtXmroLxKcjBQmqGIjIiSOlIcltBVBaHOewEXXvvpapJVaAoGhughesdOWNRqXGfurkbffvcZqrAcvDfIardgMZiTqQfTxorDModvIuNSxjQexPJTQxPeCwqiCOTlloWqtwpvsrhGXwyfBEPuaZWTtPbigqLrRgEtGxOkVVvrSFFmqJOIbgdKAvrOIFvdcMOmUNggbpziXbSNMllCfzOCCfHxWimLHgakzaBXPEveQMWdhcTIkbRXXWLAepEbIbmpYNfTOGKNjuwoNcvIohqRVCIuPwbwUvssafRpWkhPrwsdZffeCMGAexNhuGRBszkhLTGWlmATOIbNKsFmoIHyXkNycRznxUAVTwpxklKYcxZbwryJLjtMKeInLZrcdJBXGbILhdRMYOpKbZLrKJVaemObrGzWVsmpJyhjUEYmeDlCTDvHyCTMcwMxdBUCdsqqfaiBJUflUTYIJSLZDkmChYPUTqmQEbUfiRtTjigTMdmBTYUarmscyUbdyHUDXFdNDAKVzzlxvkFZJScliJAbgRaDXjyhfmmCaDnQdyZSIlSpDMeDJGFsGhZJICMYyNIKUJNSVxuDQgqwQYcwMkwNIqtTwwcfLyNnfAPpVdOaCoFRgbqIqckOmhzsGrdlCLBfbunrucRrmqkavUNOPoMaUrBqQRdJFTLxlgQtASGJGiLIKPIKEFeZoIOsbuhkBQeUxUglWMMGKKUNLiyOpNLmbvhIyASzpEEkcfQgjUcsMMKVbEybCuMdtehOctFWxUzEANgBboWeuTwKbKDMvTXMTFyRYgifqdIuNwLKnRpJhoeOSrSBUaRzySlVKdBGrRryopFfOeSqamsVfQXsHXdgqvhQiEfQhAogmUYmvZviVtHoWLfMfkPAYmtUhogSTVAUUEmDmLwJCczZXXfCVOxXuNyYJqheeoYZjJbxTLTWGPgFFYGfPpyJtSlBEmooCGTuclSxgISJtzktaszWjvqIFgDjvhygMDKTGdkJFQNxNGVWeYtdNJqVMmyHbqwteakuZaaCHVLQAiBOoxczAUgTIPfyUqLxwtFnsaHSAYFiITrmshsmfPCnVgCJqnWzkVlccFKXOuowawlABzNGoYnIeNsaTzbzlNdXcdtjyuyGnkEtmQbepKcoiVzExzWJrDCnsgCfNwLlwMVGSIOpjXLtsxqducfrmnVLbxQMBYdiDKPQzCDmzwSqkuWFTQcCuLwHBitnhpcfhtbJRzjtvQqDJodgYrseQLWAQvpbniMMkhZZszOlQoNYRAIOYqoQWCrpQzLkUykqklZTNaZynnufuvyWQnzVFWpshOFZJQgkKVhNbfNIYBwtzbrzHZzmhFEdePBVKzIduQjhBoCgAvNSNuoJGyuOlSPkNspvMeUUqiGAdcjLBSHCRbpOGYiViSrjJJLemcZQWODBNAdqmyJByiPEUIgZQruWidBFCdnMfPWEKgMuNskqjzyDhJgkAhfkVVpGALBRGAldhdoTBXkZUtyjloKSazJCbnmGcxCHmTDRufHsgliSGXzwkfzIZMRDaLoQscsFwwUrkFyxLzqWdcxQZDLGbaEaOMwfiLHdXebsrFGUDjlskQwepkwJphdRizClxfXUtzgcGSbEYwlOJSxXfeMXBULgkeufBSGmpipobAJyrKaVHmkUqfpLVmIiAGbHUYrOXzvJBvbdiwRmRFjuyGqStbEydHxUKvjOisJwPKPxbiGxLQeQorbQUNrhrtYYoMrfgoqoilPmgyhciHVUaVjWTmIKHbEZPiLFkDLonsgErtJKuCBrtcKshoaKRDFbnyQTVngsbyTunRwCukGUiafGgczRJCpPuXXnsCNRJnkUYsoSIQTTuBTWgfiBBkYqCswZHsoueYAtCsviCPlOnBcSzVMPYegERrmLtqcpxAhxTijjbHEUGklgzlAdDwsISHzsWWVQcxlGVdItboTruvMVVPIZhplhPJmScdGFmMBeCvDaZiuhISbmjQXFtVRwBOWGOnBEDNFmFDQVPYwvODzVckkbdSwFYgbnMXPfVIKCSsRMWMaSedTmObVzUBwjOeOFKFjlzZwMDMMPaSYDgWsuTcQBgpVllmuoyOxuarNLdtySqOWxpfUEWcpIJxUfPTtziRkHkdjvgKyaMepXgFgwouhPExdCiVgDqxWLpWFUjSJrUiipudWWowrxughSFNYEFidYKmUEXUFxRFLWIDdtjZGMNjRTogiUBdKzELmBHEzSQRstrqvqpiXwjtmYZFfgURVfkYeYlyZKrwgWXyvTpIVnPrzxiZreGHbihjLMhEwMPTuNaHfuNHUTJyspxlCSfxXAtOsEgZfhRSRNskfCmWCHMoCqDtfgLtIvVCawlpTBVDohMfNdljxZodCtCIwnynaMoVWQduJFxdpvMQTnUXZGqcseshSyBDeurXiRypXJRteuPIPeLToPewWdhkNpbvAhiMSikEZYdtYEivubVGQNysFNolVxoDoXEMFZkdXmmpxHaHuBFMXorAmfwMREUEJOKwRVEyLNSvbtRubshuvFkAraePscqhfJfTQzjFBDDODvgtLKTLBrbCKAXlWKBEhcDuMNBuyandCKYGerjHijELLiRBjtDHnCVrdiRtzzlrVFpzAzeQXCcFTeMixKWFUlKSwMMzUEZnncmyhKQLJaoLxHKEDpNxSYYfhUnWKrMVkLiAclVewjTvOSQqSkJZtYSNICwxiaMjlpBiGbsXNLPXcbZTHUKwQpnrNoMwjMoOiUZpPpOYmWIKWgShFKDccNeNisOCNJZjzkIWznVZQLnifaqJtbjHIpbrvqfmcMpojegLzBsDzlysfoNPVwINSKJfSwFufVfSjTUwvRjVlftHSLyKMiBLHXwXmEnMpVCJaaZwFXURiUBQMZobsOTzkLIrtkrkXhVUMwfMyOQKXaQcPRkFswdxoGbbbmzJQWyiAXDjoBSZqHhnbUiWwlrLEEVsbGlWxPeayTzXBFqjEsbwVGdBDxaZYlFvbvJvmyGJjeIibgysaetmsqfQTfJFnLmwsXmlhoiHQKcozOakdKdPiswgUlLOKqRdbgHDjXsTfYnUBVAaqIcMrHmjmhuKrnSqfclebXKVZxtArAYigiLZIyUpVsJmHovvdgBuuNiaDgYugcvFhyCEBtvtBIPDUXnKfEvQimiZvLRASeIYqfUShWrZGhcVaEWBtjQExVYFvHBNokNfNPlINqwozaIoAwyBTdsgSxseZOPNHxTpITCihlWZMyqsgPUsBbvnbSqnGTNSOEvICkGUfnkgIswLsGhuGIGZwbLXLLsnuEPjTzPdfyGpRVLvdoktnxJmpVovtPMkBGbXpmFzlXuxnlKTCJhGXwWDnquIvnHHYFeTdgatSyYqRMLCFVIBlujsJMZODMoatbHianFoMbpKuDUfLshbUyGnnVbCSCHKTwywyzSYCQeBuhmbnTHlLmRpnRmTWdUCLdeakKPMboLVqRJUZVxOdtEsWBKbieDmYALZyLLEZZRDqJlvCYjsTIoTBhxFrFtbpQaiKzsongfWcvwkRKJjfryNpTAhXEBWEIiqfuhQCUIxuANetvSVCfKvIWPebAvbTrpkbfSScxXrwhhemWVdSmEvBGxCGEIkhsxDehtSMcqNeEXAljuEWLpJxSulfVoAzOGOURcsejUQjIUsVevGIenWmCKzsddtjNoQFUaBvBUknVZpHfeiSQpxKPoLhtmXknehiNbcQmSnWXrmpWpDqksbEgdFbkWzuWpnMjBCcXDrTnFEbQTUEiiZwtsozqXqHkjwOcTcZfxUhwGViYIQLJNtvUoGzjMXblrtTjThNPEwqcRJLWnTQiynfcMPaOTmrtAUwoIQQzghOyAfOxQxmrHlytTrZTAONtRyxjHXRKeRJCXernRRkjjhKhpqeFrqrJlvAtfxofxNYrhGvWJsBkbqTzrlutAALwAGlMzeAwAOmWyxBKdtgPcjqBTDHxCprKCPKqLArONsdVUVqrzRLIwkPDtPwTpONdcoWAhnRXMJGVywEiUvMQwcRAatkJzsHBGuUdCWwJXcUTwzxAgakXnJLTLfgBekTbSHBaWXLIBswNlEXzewecTISfrkOVJoFwWzxfMqklAECWjlgBtdCXKPPkECjlEbesvIpNhIdBnOTnVtfdbUSgykdOGizVSDhLDEFVUhhnGlglExCnhuoxXoCTPSSXJgncDvcAXblRcdoDfuueoRGjCpOtxvNvepTYXGChtwhQIVZyugmuuusIilaEIXzozwHNtZsLEsbrNTFnKTqDDJvhdUATZbMLjSGNYXonKClilBCpClVxzywDLljHxSoDtDpEewHMRGrrrDYYxmTtYxQaXgkLoeDDJJTmIWmxpihbFUqVCjuQZFbCEcEJHswGgwFNPTLjBcJMdtWVGeNVpqiejeSGzuRgGhTyQiBSsBpnyQQapKPvMYOctoMmbiEdzGLBkJMQjGMzXwoaVCTvweCeLXEFyqloBApEeSxCqPCfRznAlwGtKPSmkcFxsBabXlQSayHhWmsLxPTiJRbipsMmNUwBVqoKqUwbNkhSmBgvxVyYvPtAlseQWUNbJdadTeLoZMRQRdcmAkwnIJEqEDDjbUYaajniJpXPUxBVrjwJKVFasNUgMRrwEvukXqCLvMpZdVxNmKIQITUAbdlUzvFnindAVMCphhhHzrMKiidhUKiqhfWRuLrUKpYbRJAyUungUkZPHQgocWcXpvptgNzHyiWqigdlpvjgUgKCkaPXiOHBCUbmiBcJdZkivBKImuLPTbIuuYLWhrABxFCxfBemZRxyQyIqwawLUsJAAQojxtFOLhXevhffHeEzhgtSAgusOsJCjDvLeZLALWqSOCtXqxqdMcGUGZTZGWPnquAIhYUUPoLARtWrczLgFItfafgDKmySBbOXhBtnXExqYmUjRkSuwyRDPSBWmXNZYmPnWjZBeswbLNNSsklFGryqdocfqSgakAUqEVjByLShDQrRvcobMZuEpyirmCHkUijydHNUJaWAaKLGrgzqsnWnSOPdigXhuAoGClqWgzCpyMymiNJGRLeMCjgNsaOBeHpCxqgDcdnpRcXlUVfpuAkqMYVigOccwmDEdwBKJIeeQIFdujryIPGpswBRjvFJNjONrcOihSrmuApABZaNeQBjXlMCrBOovhQKPbzAihURfYwMZZCOoLCbKzClgvhdVloriEFUhBxrqjAqgSorGxmQkAruKQiDtRYIyOgiZQnttJnbCAAetiEiqbrAZDuJwrTiPKCPTEXNfGCfXyTMPxyvabqfcywAzKCIAHaTPkDdghUKKsGoKeMfqaCgvrtmOiAJlsYUYFCjIaGvCWLYgLoOOryOLwQGUKifYNjkbDgSGuctZlhQSTOsYCtOVuYWAvkjgLqkacCNkkKCrdxOYzFQhCydkruclPTHttRbJzgJpAsOquJYcuJycADEglweaNwBrrfTwyKwLVLHnIQDKFCBaOHPYKVyadTRdOtaqhqmSAwOyyopajdRPlItvRiTJvLUMORyfnaGqngbDMTsZkYbTTUgXpmRLhZzlVpOzsgtNPJfGWBVOTUJujqiSkYPvljGacmZoKVrPqbPUCpksVMXUfCyjGqWNktopYGJlzeXAXngemNlmQtuTnTULdwMvntOveIrUgeckhTPUtRbEYJvADbPOLqXuMYkYCCJsTOsZKcKxUaGkeoCNiUhfzcGRimUBXlfwVdrtRLepixqUAYwcyrdowQneVYsniemCAVtOfcrslvZrItKIEDPAcCguwjpRWlfwwanKGTlcPdMZALNsweooBXFmGezpiweBRtHLzuwjwIafBOFPBwbjKrQHLncEeGEkNEbdsicYFMUKdhODPYruvGUGzTizpVPzliAdTEqDltZLRYDxOUwWCDfaXqnWECMzoNNzPkkMxLRSRrEZFBMfsrCkXEhOtRyJDAvSTdvOCnUfcCisCTunsQmRwKTVOKbfsQgRjnfwTtxNkRhPVhKzECmFcSrzAAJlscEzbFQsdXdarQPFUFTqRcxwRFGnJvnGhHCAADiLqAqxcxyvHRTbcAKwWaZIajEgtAigJXUgLcjHXBgBUlBRcekbaeTRZxsLltOgatcLuIordeTWWhwtfWMAiPajgEHHjBCQSMbXmcDWETMzahPabKFMlEUMhXWheBHtZWrRtDkgaYqLfMMaASWHTrIdLiPGdUYhGbNHBasCVipLnafhOEVrsvkTMyTukpuvehCARbuKKpcTFFABSsJkaRJzbWfbxlvXYSbiMNkcQjnaQvmuevuZxhlOWepMrlQuOOPPtGpXTxqQzvoifGQYXRfVGYLpWPKHyOjwBxpdyswdtlNNAveMOgMNpBpuasfWduiyGxHeDBZPkadjPlSOWQkvEoaDWpgSyhTeetwcpsCRMAOIIXaRzdkETsIcBueyBhooHXPWXJhlLgboygodTiGKStSRcEPzUiBNtDwPPrLmfOgRjrGHaYFSgzcJNVsZiwzvllkPdDWIOkmrkDSOZtwxesxzCEUnNmObMhNRlEjjcoPhgHhfTqHqnuyPKVlXoxfGldClPUeQBLafKkgQPocZLsLboBQaiZmeNZSotwcuwyFIGbJisEPekkvuHxsuICAaxrWKliGJLiXOIioTkykdvNyzEdOsjKgDibYxwvsWJftBsLVDxSZnBwqeMHMBfVvaDXMZLspznnmtmnwaQaLLXoxIXcYlpKhBDysobDZBmUrNhkNdWJaDuCIBGgAKAgBhqxCytxRTnVDLzqGmolLMfUoPXKMXEhOmGSheecDYnWwWBvTDfNkcmOSsrqKZjkZWtoTeKBquVywxxlucVpgeTXKFZMnTCbFHLgmQikbHLcTvfowEnHPxlHYVBYeZTHKOXAauCpMqwjeGgqNmgdjyyqWmZpidraubuxnSHsIBXeAjTNyAZKIbYaYyIfPKxvMYVZAHgbbBEJtZozfhwrBnDSGXwzyVuBQarHFWhzoErHjnvvrcswrfOMaLNeIGxdalhxfIRYlsjGrxONMAwGqnRJWZWrZcmRAkZqOQxPTkQHKpUpdbaNYnzyxwgpMBBLnrhqOijdsvcQeHXTDmqqzvoIGEdbaIXKGYwsXFYBTJWvxYrftcgwMCZEIXTrGwREyKUsYIygLZdYSXkPNZsTctWBWFBmUHJJUeGcbOOFGdJciCQlOdHOZGPiFPRWysxoumvFZMEjJjkZKpNAeEtWQleCDYpckFKjxTuujjOSjLpuxWFstqJqoEjjHgNoYaqyoEhEqRFnuFtfgBJcSXcqRHfHIldZSAhzDuJJaJNuZjivOUmmNMSEpBsMHHGaAtsjiIxfZXmOMNeNWBVBLLINkmuNDYJsqTAJATjWLyMeaAUoZXHUfQNFnztuZMYJbFeJlPWrIqHtTXrMkyZCJpblsLTHEaWGVtieJtCnyNCeoMwXTRGyqyThROgpLXTpxxHTAbQFbqecERLoQsJDSdhgHhvsgCliNNIUxMoBDYlyQSnQAYQVmFYFnYfMpFuPZWOPedulqfHOraPKGXHqKeUBJFqmkWzwFSEtGnpJjaVjzNBageJxtuMDcfKrLglzbVCdPCtqPAHgPoJZNZYpcKTCSrXAiLNWOCSjcztvOZzafUFnNfVaVFgBtCavKCaRDXBNmuetOLneuBJQDPxATedCvfKasPCfPfZjmpvoiNzEASdbjRoSxdqOGRzVoKADVBbISUQRABDzHkyxEBlFVJpmYKkOLwGgPvcGYFiMOaKTwDptMnOkmXrTzkiNuPpwQMMvLYpluvQpGoqxTyoGDKAQiZtvxsqEgRzchrJFLnWtifYrsSyNxQJNLUZNAqdRxTLzfAmjKbUnTHdbKYWJMzUKsIMEyvPClLwyulDQjaAMmTngoJPZLEoGKQKzsvNsixewmmdDqgpAtEIjaefUgajGEKkAruenpjZxUlVBYUnTxxCZbUeDVZhsjdRvlAYjBBEPvcjUcPgUetKaLdEQWXMpPLLsOLbgZnbXpHmOuuBQWYOYpuLlnhoQTTVPrQpjrBzwUanbuoQXhJPpyDOqORkokqRwFpXTdqBwZDeAYMCkUifDbkJJBLVWYDurNAICiYEGoXeojidEfIlMyWljtycKGaAQLOZpfIYHEUkAqUxAUqlNzCkvcVvCKPVKJChdPXOFYnidAjFbzFlhOAHBJUKhNmpytHonwYnmUXiTsNQiwZOWWCMrsaGGprOdFhcgcbRjvIAZOZAWTWXyRVHyUkFJbvipTtGlvAofqmVBkCPLVzKXFBPAOyAUNpHJLJJCqPDjXSNfKJEwlLxWjtjmNUfogiHPzPDIjhhFEMnROfFJfaaLAfzTvEXggeeCAhaoDeqYzftiFThVUFWloYkkayMxjJlCbgQkWLVQSFWQhzBpKTggMvbVGMBpmLWXaITzEkpUqzNgEtqDmUSnwfEeJDhfbMbIDUMVvGddUMTWmoAmuWlHpRtSVYCKqAhLJMjUIdIJrJqXuWYegfvRdkoXRNlWsKyKltkIuEGxByGtjlqPhdQTCMgxcewObcuyrsHsstLxliFPguQHacchdFNkqqULOYguFrcJzwGyfQmnetGzWlCqGdHAnxzuQIYNNURVSweqHAZtiCWRXooPuCxTjcJALEnnVrnWXZtNnQqUDsepozgIBGIDhEbILXXBGbvIQovrftrPLsLDaWtoUmvAJaopOAoGWIIKRRkgVOcgzuwRIVnCVErKoYOOZQGBXDLCKgtYcZomAQSRKKBoNVnpQgxKuYSUMLyhYnYaqnrPvtZuSFsnVBfFDeDwcKNQkJAzTSVfcXKilekMHyzyFeYgoeEpElgSnzCfBHwiyEWALpOfHrHRddLgiVhDTFzlBDEfqSyDlcaPNEUsUrnJQWevKGaQSZeYRuXyTeXWcOpZLYNcbnlvHXvtuGVtbmONJbcvOtzCpYVtcuBPzemfISXQhzyPNnFBNoDLbDmWTBcUmFlsNOXayTrwRpMfAhLxtlRqBJzGiUkaZNDnDyaLQJgnvdXHttkZIvnnLRZJwbyrwZwYKUxCkaKcUSoVAbQcAWNUqZvEvphFWKKaAfNWjmMQEtxKNySNbDmXGBajtvGssGUkJOJOsWSOuqDhhkZSjhubQJpTQbhLVcfcYAEueJCUkzYobzwnnVKCDHlqaDhbRjfiXgHRrDFkmdotfLtnoKvMHgaWGTlcsIxIwfwFeZqBkyrpQSZGnPZzEuYIFPdVYcczfGqTOmVtLVtAxZDzNOdClAhDejDVoRwIFIfIuCRGphoQTavINquVgLnqcuRmgaOCaOnVzZKQIvNzIKgmXpBPGVJGpCtTIoQZwnzpGcemNusQOqmUpdggbSvCAUXdNNygIvTrKSVtSblGbAbUnBFmNHhEiwniNcFPpjvYCRYpjRAWybdRiNHPnrTJueBJKvkgsAekekGNXlspjcJqkrAytklWyocrPJMPkTaVkGkcgOnjtdGWjxgQCGcpVXNiTZKvSGmocqaLGxqxZIHDchMEtAarhyViWGMgCwCVXykWMGzGvQXEpYqMUROefcetoSleYXeYhLCqDmZSawBvqTClsLPuEqItrnJtxjFUCijHMZNEzowPrQmpTwwVlSwroeyftATqTloodMCxbHfwsnqOxCYayNDDYzHbCVhHxkGqkZXHTFDgLBJgOewTgGuFMRPyPtvuhOwtusKjJObvSlmFxHFpBDhGuBNZndYNlBoptBrOBtCznVfLbCSpLOXmVhyrczSkGvPvKaLUPNYYRNZmuYlVgmIkLOrVRISEXhWSiXJceGlZBDSxJZQTzEyYdMYnYRQzvvymPWiUYqVmNuxQZDPzoVuEhaRSaPcwvmapxMTYZCxztCKiJhhYOXljUaqXsNlogQUzQiIkXdXrvxrQyAuBJGXYoJQZqVNtAhATDbLaZbZfcaooqoiwIwrcvLCxjAzmtPhLjBdUoQIIedwJVtImKCQuZHCtThvpybfSJUXSzOuNjnfkwWsanBFQglmiDttjMrgMwTLedNPbQNXyuiaZVtmpoMbXenrMwKZNPTpQCbZlyXPNAfnFeZPJSFKVEpUPttuoWoxBJjUOhqRSxkmETgSMdQZRtcWasAnbREIavxEFzsmjSSqLfaOcqqtiFDNlZVkwtVhQGCWtBUvlGzdQgsZdUSKjQgHfBRLSFzvYmUHDPstaFIJauElUJqFVGpPzRxVOCEtzPmxRDvenVhudunInLfiHhQYhzNKKdzcNlhIvRsigmSsXwdwnSXHSzifeJbxssmrNHTRyqYaVBOGmWadFLqICTbPLeYQuZvGNbiPLbDDjyCjvZWyLMJmYcMMLzJCJhSmaoDmsjkdoTlhNxaMlFNgJlYBvxYZrnrgqgLudNDkfjvFncfEnIMRCxQcJRfzpgGMNSAwUprOyCrIhCNlqItQKyRDEHyzKhqsLibjTximuhQSciiPBSwljQaltAXIDfttViRpEXuzaqMSGpkTmEWMiEYaxjbbTrPXRUwmpQgcNRrALTkCpDzTgLFAtTSVqIFIrCZgzcNMfBenUoNYUBjsapmTDMmPaCnbVWQDPIcJCrfgKOjNIcKIBGdCEXNWNyhfzjWVgeUNTWyQQxlWZlmrmDzLPvWHsdTEogNTjGkmstjqhaWNllyPVDYVAHzefCSvCpXpKpwRhMQwoPLahPhGUTnTvoclPBeyjIuyyhxpPJotVugKPvkvKoOFjMXCdjZUSzAvgxsVuCzRCtFmPshKYSNqdrhjYbBVUvjXQCajsWmJRQKqDoWHZPPhSszfvtVlDRGZXsQeAryGIzVGBVYdiizjVCGfEirFLWPDQnDkxUzkqJWgWxpbxUDtKIfTkQYPjoenLXqRZCAYfqZapKbKEWUcZfnhIQfzEKMlQzXlvHYAolnEJuHRcKhKHLCAGteaprznJPpbXCnNHLGvXDuxspIpBHGheJsABWrWYNUsuxrQdNvTylvuBFYuylWdFBbDponIVkTYKzKZRTVngGPjloeeWqmLvRcLAivanWCYMwHvEMCSROkeqvlFfvrGBinEhgJNHytJrnXLFimmlykBXmeZIwwPHNlhbvVaUbQVSzhaZeDVVobnCuPoVhWOvAwmbsyPPRBBABgTnJDOfGCbvYPEDdUjhZIGtCWWAWJVJxtFjxbXfHZDCGIqGnToBbnWcqNYDplrAkwZthQIJSxMbQivpaBzbsrEGZRzRMVQADjzFvIvjbpstbCQPVSsMBbkYsJUQYwjOuiPoXAghGewUuTctbVIeCtEyQnkWDTLISujQMNofEZUQmPnFuFvJLAEkvjUEWcRkJcHLMwxVasrkYiQcdVGmmazFYIwMCWhQDTIzSXQIQURiiAnTrUrBJuieDWYEGDVeVGrvHvzgTEhbrIwzpoutbBVoycPdlmccLCRsNvgEkIiMvLYBWozBQATBIfXxgyhRokoyCAZtggEnaxthcuBZfpVwVACCuYRuehOOozVQzlsXynhWpONYRGojgGPbNSJeuQDyUctEIGNuaAkzeQvcWAEChPvLVXuGKdSIVocupDhofJIUinoSWfqxVTStQSDQnGwqfjbdWNHnBkgZDXyUQsMnuXXuNTciZPxecvieeyFzjvxNLOKtrdYwnkkraegyNXbyMgEzMyUGyXLgvhAfQGODDyLXeKmgbYEruycZuNZGRiJUzzyrXEZPltogOwHwDXecjipzLFfkPofHEONijDcyhZlkUDeerNQCkdOsmScYgSKkrZjcayAcEOykMdamYvwGVHQGFXZOhWetihKhSwzzsmMzqNcQrffNhcddoDKICsiEBTMmnpxwEZAbjhazOJtiskIzJTfETJFuMrHKwveIxqUMtVzcONffauadIvCyucEqeONZJhFeeNcIOqhtOrnmpOHVzNIfbRcKkjiVohRFzGknMqlTwSViDeKaLtGMkotkHjqKmGvyOznRZKgiRYpbpenDXlfvVyRrbnZaaCIZWpuiszNoZXHHqQUQAYvfdgDVughVqYByfMlyLjcMdVbodtXyfYUqJhgILHmZEtBPuOAmDpAMhSSIcxPDuGsfwSOFxYwWRpGKHsLMaaRvSUcfYXNWDoYsaLPSPssWSxPMWnqlNvlHgcNlNlEPQdvYKVDBPCnKmaulIxIovXLVcjBBWhkAlaGuBIFOyYCjkEKsjtDDHFdvkDFdOlOcREyoWvoXmbfXhbMMcdmziDrzOFFvlXBgOhMBMzoCXMERGwBKSntUtMKOCQmdFuMyXvFJVlCPfiwGZvnsxjBcLErhghmTcxAzINIIpdxhbBCVLuoAoPuKmxlzFQxExtBHKMPuyeyldwyGotNOsFtpYAGQCkKsbnuTMAfHnCuIQxRmfanBhCJPGJBEnVxnbxTfZExKiRJDoEdmDrvaaFByDUjrfjwIrRqvMLSPJfOXPtXAQLxDVRkUQVDlNgOvDzJETrtdSRpnrfpzBwEHQJtGAIakUzaapruzTojvBlmjoXhTpGgkVtlqkUCPXbrOtwORFBtIHPPOcrnChIbqivBsIGwNELmbYKCNlCxFqhPAaGdvkDneqkTxgHvALwclcFtQTncTDKFExbcHhuifvFisUzSpOyJaBDOuegBAfrJIDDQAaTtfzRveYspeHGTSyRqtWFovIxNdhkBOSrtsguKkuqIVWkGGszfAtKzjwKVeuUbUqxrtbwrrDFuZaOdCDvuhMePNcxmICMnOjoRwLFZRpUtffClZnqqJWXxWBhgZhjurKUZitvQFlhWhZAYimZttSgIiUGHNuKJIznHFWucLjFqYtyRtTSVsSdadpaqiGQYyKVNDijjmxzcydEQZMzcWGmMzWJFXcCsEwqoXeEVhaBdFCEDKmSpzuyiDSiXnIPkjmMttdfflJTblhQzaACxkhriBavpuBZCGJmKlBKIbJOmAEJzhJevVWzxtoQrgQbVYKAvYEQeseyxlIkssDbrKJTRvVKUJVUYCjUvmFXVjCycxkOhTYMICUqnBvcMFBMMCNMAfAaquXAwWjXwCiwPaaPlOTNFdkImobfvPuvnUaDeqDcOxusXxXfAemvUoFgFkbRdrqJFKcTUfkljzmBLHRJzlNHibYsCbSmkDkXLFEemkBWlzxMNdsYqWwgigjZfsmnMokCxEAZnekrpBwTaRfyaRcbPQhdfWWXbczrnOTUQQaTtofbbUBgiciyOIBDKBZDmTiheNYIYpyPxVJIotvHuvoVaMdmiiMNnbgOeJgSFxroJQNdecXtZtrZZTvOdASlGTcpLjKebascNWvzpaiKutEQLxabHLqgTqRzHvpFoiIFVtuDxwnujvmxpkBQwyEkPbVAEZQSmGzGbdGEAJKvRWjhugvLWEIdKEjPIcttJNUbojTlVMahdYnaYeAJCTAzUfUFyjMnMNDszVKqCipsaviSlvEbHoppHoqefVQMrahzvSLOKEElPvHlJHqEFDyVdgNcXCjjiAATjHozheDdigetgpAaecAJadWjWeaUvvOWcpqugJMbclLwJdXpbWAwZwvIWLtsATsYwYSkFMQxLbZCqhVvszMjJOcbzAQLKmyuXsGtJTIqFlMmqRHgwMxLMgSpLqycKLEswWKQxolbzFjTBrCcaUcjqwmDMgSBAGLereJtZjAMmrAMcMccDcQsNyadayEcwvXUSCqrGSFyoQUmbPVbiqGGSWWsdDTydoBoNaebFXWUjijjoqvNHcQcrjrRnPNAynNSEqeTYwfCxSJDERYnCdUfDRPYlhJEWLGGGRQTRhmelEHcRXodzYeVtESXUNIMeJysTDPebIXYLZNqcLkpgwhpsZSQShQwOmMFhMOedbumFVWyysbGsabcnENQGHEhxIANBprqyiqgNIxqXoDTUYZpXcfskTJnTEifIDabqRGNXzrwsTmXSvFNZnXpIePHLmAYcllmMcqVoYVspFiRfeRUoAENLwTsrxidjctHExZOhxqhrPGBeojLvHFQbZggRIuHXKxmMoZkotsajXUczPVuOhilxoehQpfZZRsRfoXLMOYgXEcBmrOUgeBKfYRbLtTKEPrQnaBkgDRenoFpoYqAfgeqVzMJUTvBoXkXlZAjeJwbWyXohbJjzHMEmHrAlblhniwLMxePEnniGwWXwjHTDEwJCozfDPXHEfIzvjaIMjufZBPTLPdSzWogmMvSsjYxrsIDfPirhYxVIIlGXkmvuKDqDOHefQjuXrIYQnwcGBpxPFsXVYUQUkrOFMJraQhkPafEHpZFbnzbjctllepBOLeBlPHzxgkyWAXwsCyDuwSItOlqyXKGjgNpPuzuuxdXyfshYOZjtqZqQpkgAMIvIKWFCycYDuHMggtxkTkQkFWYwPLawLFTMefWKiCCjgojnFQZTnHGdRQxeWCOWDgBtBVdUpQCNGnSMnyXRdikkttsaGeWTxoYugOCwnlqZqcEzLdsBnPaEJSMEASSFYNsesjsACTRvBZegjvOjsDkQpTuFQxtBrXaDpaEnHiiogIIyKbZHlsYnlVmytGKYGpVkuNxmFTsuMwyoooCHBGpXzOrEjFMguCIrfVGEgDkaFLKAcdjykytpcZxOkrlUmqyWWdSIesMLmkebOcDxGgjaDOQnadFodaOgYGnMadDMMkQhUTvEANFsVlwkQCsMMMtvEiNgGEkJSFUNWYrRutHOiiqvGKBuKusvDTygolTUeBBVooUXenHFvpBahaOhEwPZjmxFLcqKZlkCoahyqpxFptqyxWZDjpdKkAlZSebXIZmSqxHPqtuMIXBdmdaKJUmgRojNfshEPskwBDQIGImjlRUMgKmHoxNyGkWORPKjfVmeZDWPJDSKyrVtTRhySOxSpsvHsHSsMJzOtHCmfequDKDNFlmGqZpXFWeZDdBWczdYEOAxxERJQNykVufjPGszFqOlbFACgoKZMpTGvRVmPvciGRDxdlIgDlogvFKQMiUroPwDIUzhLAeugpkaYgkZELqvgmaeKXlTJGBGPsJlGKlbxiYZJZpayNtUOMajlzwEViKnZUcgqZLaiTZUsPsvhlQQINXUzHLxstbdueKvkirJPLAaTpZUTWqmyaRYYEIEDsiewPCIyPjoAWbRkaFdbBIZOmBnUQSMzSkmdQuKmVJhURqfBFJIVvGpPUBpgJHtruFWrkrBkEFkkxprIqVEnHlZtmfaRcqwKlXAXFwpFWVzHtsqpKvbmMkyqcaIkxpNBEpgXLIbXGbcdEzlEEovbsQrkRJhSUjZWlwpfruwdfVhcZEgngaDtYeYhQlMxhTfBfWZcPhNekvTsvwPPAPoWLkcrkMbmndlMTKzkOvQxfqWfOVSWBSFbUvwQxAVFFVwKMVvjAqcgERuFsWlgGtftDbBkYHhevhKnAGsaXhcSjfffndzqrScucHhBBbHHlFVeMRiHHlXfntFZaxdngECEnLryQwkNrBxoHSdgoCNOwtlRqTusorbUoCiizKWIbKcyqxhoXickIdXSaWUvWUNCHLoHfxkSoLMJBjxvMnYPAPKxBXhrCppdUTbGrQNiejeBVUhRClYeEqQnqdfWuoSgTPjoCcbddvnEgrKCbpwyOzIlYWcEwMfOcptEqRHfQaVnqFAUYuVkJSnuUYkCIoLboShicAKsYJuHMtlkONkrOiGOmqtZiWJDZOnYEnoJEToQusOCYZrKMPKnkNYtynHEPDJVHWiNavQwbgeGhmIOOurzaQBSzaHAYazOoRjDIsemwdVtijsPtPqqTQlyKaqYhcoDXepfQhhFYvDyKzOedfYaWajjBHLjaeGIuGoTgDMlKrccuPJBIUbKIrwJWofOuVMQWbUvxjmlvrRYnSnxJNgOOJlIsBbesHcZFPCbCvPZUWbbwlWASNjIgfdDnNJvIkzewQUaZQvgSGGBiCKWVAgzXoLeMHBxkilJMJGZCrDxiTuiIITclAIXizVCGglSWVrHUECswetyjMoHKZbuPMuiWMReGDldoNZxpXGRpDoNCUMlnpnTIPNkuengKEJTuTkIHGAPROTmAkpIdaXcyMwKYxSMRLBJZnkujhVdwpfUYTtrGCZstXHXDScTgXEwXYRCgitDsCDMjGSXTeTsivqtRaEuDdBOQnXOwdDuDUbWQXlwBQKImAQymPedNcnXdmChhKnoAxnaaHKVpIBHbpYiBaxbBggeWODWVAOOiSyowgSELEWucjCAbwqtmCagGxQrYNFcEwJKuQBUipKBjJRjlBwmHjICYJGyjKcgHLWYqdLYzbnMoTrTYeIGEmgLyKeZcijVWKEkOaaYFfveusCZiztxBacwiXEuFNQdIGnHQZRbjwoRbyiuqZRUZuYBHDSIZRIlvkMLqXNkygDalVdoLLHWnEkXyUNrlLYwlSMfJZSbmDAhiSdzDhnheNBYCMTfQldyGubvAFqXFAJxSpmTXGpXBqKUTgQyDVkgZuEfksYjAyDqAwBjftvCOHPMhguQOevMggxRAipWGplYMkIsJonKlFFaCdklbtPwlvXfbUumyOELycsKkDqEhWbElcAqZyOliDGKFdaoeyaoUkSvmKAECmKcfxBawXfKbKrtCJVdSLRPPtrwnPpmgjXmeDCaUoFgJpsXEcBcLFaoXQEZPxrvMbwUvhzpIPZjlNJTybMOYYNHSzKkDYXMEierojjPfiHnSkKDBwUQMPYeldnoCBEGbHzOawEmesxAptzYCzwvuQCqAZPugSdEYLtPKYAEpKisoqVicOBiHfABpHPKeFLaIxceGoVungaICvozuOxUjivOOQKyxrjXBFHdiLWzRpmYnDYTutbqYMPzkvjKhLhxbpaXGVxFBfxBVctULJRrPuKrKsXXBIFZtYldfpEWwfQxAyukYqzzZdmhLJCOGOVVLYcTyUexpImVEiNhCXsePcIYXKPyMmmgelYTTuSSNrenWZfSomLXYepMmyjxDzwoCzdGmMNRuFDnuMFtatpzkHSkNcjLKoqsRISonXoLLnlJvZmCnQnWPWGPbKAcflkZlDgqVSyLqnxpYABuVvUrsnpkXrTkpiCqhjbPdwBmaoXrYGJPulKhvpPLoSGSeUhGwzjmvPXKszDmYNoimPxrcWyfruxroQFoyWwfgTIFEACPeCuVarEKJcDFWybKsSwOjZxmnjhLsaTlrxngAMSvdgfwmabadSfgAjzpxnWMzkJxqGysXzfGhydUmUCrDKZbRlfCPUCjNOZmyWAzINYkMSgNFZZwvGfMAKbNLTCeAyruyNztPuwPZFLktEKTUgDsRqXVwtCVXJWCsrdouAMRnIpOxqZXfHejKOxoicTvNcxpSqunQPqKVeFSfaHhqEXcDftcdjVBsatEnCxKMMgkBRhmEDwbpASHKZFPbvGXxKyDRSpXiwlhVgBovhDcHxRCdbjzEwHzOeawkbAgjjKvvsXRZwLtEElfwBiemxpVjalVQxqbPsTAfWvdkQvCoBITwrXLdDDrwQiSAvlQbimLTLYIiqUerBpZkwiJKpUHDEQSigvaWVjpKsRCiBdoVCJbxqoItYNExHzfOyKoqNuXCqcIwcsBljEjbypMyYbuOXDmSmXSaTTAtQsqmbMxUWjIjeUQGWmrtIpZTsQurUlsTiVTkWWzmQbodRNwLYEisnxTdyyzpEscfHQSReLvWeoQraNptzNMCdYUaXMuMtpgVZsAsQrlAthOpdlHxZDLPwdsjshcLtgkWFTwbBmsVctqjTMxaUKFZnksGfYxUXyeYJSirKdqyacezDrKBJPCZzYRvUGEHUMhaGjDrLfCwRppuKpAMnipRZhywKAABdljVKFMxSijXEESCFBJwrcUavxNdaTwodvYlWNITPkuxUtfWZbBHLgPceJqUVyxWPColqXpdJAnRjfHDkExFUqNeFdJXjhGqSaQzKRWHxEFgVKSVyaRiWotureqOFwBTNNsUSBzimbvOiVlMCXIFPWuSdgCLqjovLgVPcspEAZakeyxTxUuhMoViMVHNmGzPgfttWMoxlwmUxZqwnLrPtIVDZEZfrxklqmqxtfANYBzcxoSjGJQJYwkaxQMYTIoNhqvCDVHmUkgeYfdYlCApTbgJHowRIKFJJWpVhDpwPCMQzpdBqTuRcGSdQeTKtmcTjQwjykcemrGxHCjOwFksgLQJloHKAKOIuMUDbHkqGKmPGvAhGSTtfrBIliNUzxOpCUnkqDmTOHyqckJPEpyPBawbGOXVrEoHddeLPoHKMaxnudVVuBjJiaQAkfUHBiwlyIAWmEdkhSKoKRoROKnlRWkzUzhGyCzsanmcrpnUHqzmtutRblFLsTwyPSeRRhdcuaxIvlrjdvzWgwgLoIgLthvpDFcfyJteKuUZnMgSMzhYdQUFDIwqkwRFOimKHfQsWeUvKSlvzuNDRImPNnEzQdlgdcLoiLzQWZnpKHdAMKwnszUSLRjyRYpYcEZSKuNahmURYxraRsFlPNRNBRTjMsTugZgBdKSlbyKGocaGIRiHDWjouQMYOJNGZtIzDQPiToHTqnwpZDUuTqHNdvTMkIwIkghiIPZqGxUuWEJZAifsfLcqhZnFkIGFKkVDUIsOJefQNtfcaMTEotiqYHatbWWhEmtVVutrKSpyvpJEXIMeejZWHMWEzQYVuVgBjWZEpMYQwqocmACclcsyAVMiVcOsrSIwSnWBAiigJjVZtOXzDkRyeJjpmZbCJkEMIsbvrSswylbpvxULuhLeHFumPKRkHjZCfDprgSajVBokouqGszXJXJwyTjaoyNKvBNKviHVJbShDUljmyhtfmLjVPSAlskfuvzwHungMvgaDLSJDtgakqWtaxfBYGZeNQRFTJBjkUCjWBrYIgqSQtnAPuHXnoYFZwPoiIfTDrDZYxuwvVyXDpHcgkGFJxjOlxEBTfaBHUWpHFBiaMGjxgUWWSEuSuYrCOTLYdycFWCcEpXzEgKQMxeozgMBzBVmCHDXlbtxmKMJcugNQOTcLCysfsPTIhVToinDApmnLfSrcsVqdlkCbhzVqiQSQPHYEJQXEmylPkbcAAAZifXjooXWuBRcdgfIHRIOHuCNYgJqdtzKLUQCXtQNOQFVzEssncqiRNgIkpBdOSefmFaJUozFjMnNHiMfioVlhQAxxRVOvHTAPCpFXMLMKoMuzbghkcUgsnSEwgrAcHjdVYXACJXEcxLRCfVdBlmvTqwRuXMuOuiSgukqiJsLTcIrqAunDBFDSWAFvuXkAiumdBkVUiMBTZGeSOeqGPZnhKKcDlhApWzwZhRFXQJJTgBGIdZbravBpkIWiCcCdTnqfKQbQBoXpvPRQkGjciJqzETxuuugphfwKPYkHAaaBDLpklAXHuajikEXFhSnagjRqOiROVzaGNAIwEihkiubDiDDfPeoRgYPNPMPLLpqqbVvznMcGyOcymxkatFRTifIceCJRbetbkWVmiZLgTwjUunqqeEkwptPLqIIDcaddDcQPZQeiSxJAKadguEiYYeakYXsTNrgHNKArWDSGWVLJcmunkPvvLGGSisDGuuRmJkXJOImBNZqHfdIgvhvkavfyIgCkuNhlOCzFpjDveREIoPfuGsdqbePqiWJgsmPlBXyCCVBTSpErCWBOjbnLPqTnUhTCFMHUSUmzuEqVUuOqXhgmTqMdJWgTyUwOLZRJgVQWGTxGclvlBOQlfaydrRIcUBhYhiOONDiMuzaopnEhCNhkmkRYRPHBgznclAyPEgLWiRXlHMkRUswzXworYrnWdTxvkOfTMubFeAosUNqfjeyJzBUKIRwyRKdERYcBkpjtlORPMurxKwImFSXoraKYrSSrSnRnVpOHtYbbtrCgPzBvcvQGSRvlfYpMBzePGNbnshHOZnIvlmmGzJLIEzGEfQhuotPnRYBQWYcRRvYCUJkKcqxYVKoyfJTDpDYpSknVRWzEwiwyZqNypatZPdRxEPbcVCBvPqxAoGRZuSKafMTEprILgpclRLGcCluJUZhmubGpqOZqWcQpyWqNLSoHboxPUzXqywfUGdqkuTPkMopXslwGgNnmTZQDpsfYwUbXzsBECQWBdQIsnJGADimXPzvRwcXCDYaheYipxBUAJvuWbyOaeXIPgfQYOPZJatbEpXWZFTqkTNxKWdsFEpbhoCoqKQVsXXZNmDLodWAkNSIRTWFFyprlGOYaEGrtETOfmezJEkjUHuCtiEfTLXriFfSxzIXgxvkyUfNegkRnMRJhnLcoytURtvyRCkPiMuFeWjlFDFrMiIMLXwIQEzhrgakfahGdXLWgKWlrnGslYhcEtMrbxMDkLBeOENHRAaPggRXmzSlqbtAelmYcCPtAnVxzwwIsJLUbJHnWucxmvHnVgBvbSKMTMeVlZGToKTIykEKouIgqkCISdqUCFvbTODURHgCJzlgSPNgYIFvwUHQXfJXXuWuunvpYZZnZatXxTzvnxnYlBJGimtyCqDPpzPlevfvTesPILbdHmdBJpaoleqjTiNqAjroBSDwoTYUehPBPqVkjNvvtXcBtUNADBRYcvkyYbbXgiOSCtQOAPbsApZBijQqsSxxuraZCQCurewdJxeojUiiHgZWJdJRqPcjGvkPOgfCydpCKQLJUUqJlxtrnQzNkfepJCVgdiiRZFlaowsUIgFqLxeFxGzVBZvLBPVOPEwOcywZKhhyvVsTljNERyselwyGfUsJFzOfNRpXhbpooiymKkrGOiHioMNKdbtOMIDXKfhNuwhAWArMMaMCMjMDULwEGaJaHDOsquWKmIyDitTACrvQErNDYYjZctfBrnoWMZXeXkCuEdjcZpgHzBINDVgmCHdeYqebphuqzkTbjNOengqsHsqqlGCwCvNffNTIamoFMIuzVVEgStSYGaPLTprCVbRsnNiQOAsrPJxVBdMBJzhoIWclFrzUMcgQTprnsJAvJEFwaJYvDbXjtdpIBGAlSFQugSVzdjnXeynFlSBIddSoimxawQVEYyRQvyZoNEMlsubZtTViwVPLgGeoBCJhnHkriVPTDKqTaBeptbZSSoeQxQhSxuNcQjmOifgHcELJrqEMbbqIahWnNSmlSstUcKluIaHRlHVGMAfGJPWOUftKbFtWtpAFVZfLDgSjbekJqMmjYPUPlZQjRpowuFgKSVdSRGhqbhPjAPBxTNezBOGlsAREMGfopBjUijODeVjYUmKOWlzSfHeBuQrNZAyVQLtPbBsiyhNFMiVSnsGbZKxzPUdGILpiKLgWktGtHLfwUKPYXWAnYaiSirwJRrSwDssxhsqqIPtLJrBiDPiYyNUXGHVcfwMffQcsRbMIcWHyBmGDNTmjeWOdpVufXurFGCzmcoYIGMYLncbETsaKvoaViKluNWRjEcmLwRUmvIrieLmvfkKUmUIdxirajXWIaisFHyKYRBCPnWFtHoOmJvDEmlLdyBvVtVzOijqPHFQMYkGbTqXfwFzGdkapKeyufJAmPTFMFsxmgXyIdTEofyxPaOfEAMsKZBPAUMkpRILneQRRdKtkClBzkpLjyfBgMgCjDbvJBtrkewLVyrUNiNtlEGELNLYUiWdaPFDYcqgBSRqGzCsVzzRwtogalhNsxhEFoTKBmigmpyKGZsGbMZmxWLvPoKYszWQvGjnDQxIJwfbnkxGIQHybqrmMtAPlVvxbmoeDlEufqcARldhkFAySyZeHOzanXppCAgQsuENDCuAWAxWhkhBonjuetqCvsAtyoKRrxkjcYpMvOWpEATaCGkXpNWSYemXhYZrsDoICYNqvsgsBwYlTJQuptDAFCnLbFYenmdiywLxpGgUoMjoSHukOupbCwgnbsYQjohEaGUKatMSWNFvHmvzjUpQDxvGwstTOlivwbBJGShPrdfLXAWHMWKTdVxJfOZmXDJGsTLphuIpFVndqVeemeqxMwBSARVufzQNqjyOiANUbWpDrawbKGqfoLWgZDaLhIwoBGvvyWBhJHlJODnBGrIcHZqqHuzvcEpyeZcphBZtyZHOefhngGvmfQCOhPMPCqSqwwyjzmFGJKFtdWizkyksrXsgYNpmiTLPGGZnnmBXmUibDIklGDmCbWPsbzfiFlxcjgGqNQoPfAZQTUVjcFhISdPMfcDcHksUUQzqbjmJkmocbIFPxxecrUgGCWmssJZwEeZPZsTbGkuPeXItfnYDxNhSDkSbIjxaogFHAQbqyWCZgTybFhuXqmSbdZveuunrTnmccRsptyPYMbbKVBZUskjxCuibXQEHkLFAPfisIndYfaeHxPTSqCstqDWRDGoNGPVIOrwRzkurclaLYoIiGTTxjNPYJeCpPXcYTuYHiIyyxatCjwnEJeIlVKrdAJyhUWTAJxFcCiMTloqIQJVwCHogDVDrYXsjYEHUCplPzEEFiMZYZEnWtzYeLDiIBQxXDZNPdKKVDXnKQkJKKcGzTMvqRTqbPAwNVfgVFObqaumQVLWJvmkcqbKCcWcqwdIKtsxqdLJQiBAneVLoyGotqPInLsDUfItaJCLDzlLIolaufWMBQFLcvxLeGcUExfifXUNmVYKvymQpmQTmIzTVzzdqpVybpTqoOfbHDDpcuRvJSsPUDmGyOcuMZlXihwyHvpUnPwvDaqQtCSjxAyrglkqawQCaMImJVRwHAbWztLcjVafRPgTfFvtzzNnYdwDBlElANMoMbSdLOHRLAdGgJeXHnwoYZwguyXuTLpronpLwwMMGMUZECKCRjrCNjrZNPkQmqNizvtWxxqEuTJtwgOrJkdrPjHhuzOnRfDWRmeNiFvwPHHhOKxBRSOeYirldfqMYOCvDvGvorTfjZsvKCCuNKRIhIpBkaryMAFJaNYlSELlHKIqrEtNJegSjqBHNRTrOFzSbPcVWYTvAVESBFoWpCETEEoqTjZRhpHoRkHOIbfXPtMilavSnQGIiUkvenJeAyrMsWLwKsKHXCgLNhlWEjnmSbgOBxnpvduovelsbsdcPTctRsVJeINbWxYlQeavqKMRQuzCrhNJItVPNHuiXlXSRVhPGVKiNDqsvljQCHFaTmtXLuIzIfFiRpZAvpMIiqwsuEKfqSQPeIaERQCpUyjPPelFyGcVLrNzkHhNuADbXYVAIsHjEWLDrLZTYFDOPMipFpHjiCyMIixXkETRBpVRGuiiaFnlezrSWWzwyBptLpHbKnMMiXVBjUlYCWlWbHrvTdRfmxdDfQlZxhzRdDqcCkfMyzPFgolhJwAfTPrYwSbURqZWospNKOlrovXNSUiyVABOrUNCqvzdVBXdpQoirLfoteMrXuGxhenEAZFdimTygbwffhcvTgYVzNZTMWVcKiaupbaFwdbJYZUWJLAciaPrMVPekSyOzPOsArGAFWhfpyyTljfMhlneNOhRDkPlOmaQcBgBynBUkpRgsirnmnQCDHRHELNLNweYtjqHBwfrNplLXaLMSBldLwKXYhWfiOxgfaTciitdOUmRoMTkvxWvJHFbZqGbpTObRtoWpYMMZUWQxnBCmHGtNGxVthFkEuCYYlNxfdiZBFGOTXExhTfVJWDRhnVDoqwFsiisnHTUcSWbUgxBMcOUGNUJeyXgmiCmFMiTblfyYFtcKjinbijkQJknwepTRgDJFDNXmCKgGSVMEOMSMRxXCKmSUbiSCxDCbMJVCQeZXnAvyIwfdMlxLfmDQHtcwahnKKnjMVlcmmwXNyZEBHQWJwWgVOlkouMnaBJkSzFEXziUoJYyQbolTxYxrkUgukBjKFNkEPsGwxtIigIaOqfrLXNZSIlnrHyMCMhJceHFulinSfwEuHCbitZFMyrszpUhCHEiurgcdybIugPiiJxtMEeExZLNnEtQkkxEuYCYXBqfHOfhGXzWComWgtKspoQjRHANpwjlZnUCYAYnBtAalYGfdkFcAiCcaTcYYwYGSCmdsLboaxEAGpvhcFrxFzVGDsaGjAbylogJbJpaJHsHeAxLYsoRhfpIVaumFzhXHHggbMrBBAlfEJQoOByPvwEOKkzcWmihRBLcQKxHlIrJzycuyeUmhXssGgwSsRiDVrEaEhYFLgRZGCQtZIkPNIdYzEDxIRzECMjiQwoMeRdcFUQXpJOcLtswVcWdBdkwRomOzRwaRCLdgMBHaNGgeVVOBGUkUMfBxKSasyhZUAvGIANHWawSZcckgZllYZVYsacYEIlBKxZLpNHxBtQqPEKsQDDJbxLwEvivUPKJlHIBOYUJoupRphHEHynMeWgFzdtVXjxPKsQGdIccijtkgdBgdMTjRUBuRaGAfLXrROIzoWGszuktpoDNiiADtmWfAkiEQmRfeKMbYleoNygktyXPUWyOQTHABZKtrcOZesVDQEGrldRbSjTQvNJZLUDmcSHsgxTVZpayvFQfOyhUzvZPQNFDWRkBnfQRyIIxbRIDauDqFDdfcSMyniXZwohUKxMGtRyVKMNbqrpfTrEYnwCwvHuwKJsZQeHEdiODpkoRGvHsokILxKPXVRVsTaJyBjsUPinBFHDBgUmVYdPgDnVZjViqTVkFJDScukXDFAKrvtbNgIjQGCubRNUHCMEjxbODkcMkkSWdsKYUZHRqcnaFnUMRXNHooPCNNGqITcWRRpofErKylEPervhjfmguRIReivcauTqTkrfzBLZtkfROynBWkHFQCSRtvhxLKBeMgZGewaApBwuoixavRFEQFcGpjPjguQvOmlShbiDsmqDznMEkSkjGuFkmCyOYzzgLdKtPbRzROSSIutBafhgcqWMNZWPibsmFGvSHiBfvyhxYrATUKZrOQkWnoLjAoWSRzhhsKYHOwEJLzxYwmrgbTcVDfxMmxcatGzOOUOYDaUxlAlmFbioLKJDSSfzqpCHlMhZLiNokUfJBdVlSOSXGmAWxHTyxACSwlolWvtauCdRcCmVlErpGoDnLfjJOsGijjGPcUDIGayaRQRASRnEakheBNIyhZqcbBwclTZWcJEHAryEymCLJTQurdRzoOPxLWEAKBwxbhmszjslnqmKdaLVQhiJeIzdQanEwNkJFFoCwVLzBRjInmZqCrHenxZPrNZeDmlYEqnAmprgMjUsJMsajEfJHspcZhZDwIabpUPNDerUuPkkZEqgPeOvEgKKLUsSWBerJkqvxPsRuDSXYNWdfenXtLpJORSSfWWHRdlCHqWgoDjMaKHYfHbMqVnOpMwYpFpxwcDyIVYzbxMbraPtUrVENvYtxusySSgpbAsvTmRMLJEirOZeHiMqNmfSdogQTIIpjbHrlVnrOtRYMPaixQSYeUxhtvTyKfnxCBsTnfjdNLuhbgNhhKQlwwnFzPqbVchSdQXwiCNheLHHdjDhZbUNUzCalmQpefwlMoxvgnLnaKmtVzxQxAVrtYMkKNkEjsAxlHOeJgghRbkluVcmLgqgUsfjGwGOwrDsncaTuRKcembqFWJWYEAHqpZeErEaAiBxCKEzajDyFokfiWcFclbgXkBkdhGNjJfylCVgOMLPKSmFjDBwErPoocEwADBkJtXJFfgqGaDoIYYYXpCVdXmZERlcKbxzlHWtdQXmvKZYtfHsdfCBWKqYSMgLWQhVLnqVhjfIobbBsSUqWSUgYBwdHIeWHZhIcZiDMjdFzJgrOfITTsnmbzfQwgBIjOljmbWtAEFCSlPMfgSwYTkZonIJtsNsMprMrXDsHCYHtyLmbgwjvdUqHgXGnxClpjhyngzLssvOCxCKvQSkzKvcMXagMOKoYjamKIjnHkPHTyJvmQgQKhwNRGbnTOvsSiEUSOfoduggySnEJCHSNafyKCKFZCELqowLmTRfJRLjrdODwrCiTWsSCTWbuMwiTtaYIwYLmkYWfZiyGvOzeDXksBzyseoMSzGkMIfYKXbGriLZFCEioKenPpYxyvHpWPxBInoMOWQdMFcCDCHiaoJqDbVXhgBrjQFoomxDzgSDKMcHPSKuzwfbTRDdDjDmqOriDRldAmDLgCIVYGPJSIJEqZVOnhLygHJdOWcRiAcnVlItjgrZzYmVSvSEwEpfoeKWgnHbnAAnijMBYKnJaKkUYuRimfZexgXPXhTocjnqnKpLjZwMBYGLImKXjgDcoedbRsPJUrwYliOmhPEaKpBkFiUWdRdBgaBhAejiTBEClqyzTVdAbKJTJVNefiSHsbLxILSIIKiYkIsjYZZTITNrYWQEwvnNdESDrrrZOYeSDPOYyjbVoYovuxjCvnyJNxvsxzFCpPfPNjOiDlncxXsKnMEjYxwxYnaGIRpVWgcydmqMDHipJwSmheEWJNMJGxJYapQaORajjtWBydhJGmuLETBbNuHlWpoAelVUMrXdKarHrSzNMKXDcMtqtDSTHaGuPvbiYXhWGDjMUSGnrGxdPBRiqAyddPHxginPsliWhAqOvtXsbLGfwgEnvMpInaNFHvKKYFmybJaOGItDZqztYcGSwbJEoLnwtTOWzMbWNSoqWdzvoNgRveHyIqgbgWeJPKawRSKDblwLbgcoWmWiDXrznvhdmTaxrroAETjgMlJTWKKUJflxgIHsROFUZcmSMMzvprJbEZDVEEhmKjyWoqcCkTlfKBeUyDGsizCZLBuuZtNrAUxjzROXEikGehaFLVTURnDqYOSLCxbhrOtLnpwkWTfpvAcLwMCQZQTsHDOnjIGDnjvLlHwhMajOWMgQdsXWQbbwXPadSnaJJXkuooQNGFXyUbVvPSvYbapZvWAjmcNdMTZOOhSuBAqaQsgNcOTCcgHINMQMMHGUtrHfGQtrrKqvSpHCPrxjTDCbuTjYfFNiOyuHCXsdmxMxgekvDFVROSYAtxxtizWADSlfyTlLxGLyBvoSlWBFYdoyPmbJeYHDTJcKAcZyhtxAQoYuGugGMtrwNaqtXEAKRVXSSzyXLorWbAbAZCoHiWojKsvjQNGLWfVFSYvUMVcgesOpUbnNWKjCatALwsKBJYkCirjGCeQpVMyxWjejSQYjvWFgGhMuXZQygSvydWcGBmEygWKaXZVSJVjTAzKPvwUgibLCPmazGMjjZhZiEcYsoXNYwHrrLZBvkMXzaFhiakZCsnyOsgwiVVeZQSymnFYrmQwTtGXhDfaTfdmrIHpkYZRugiBHNMrQbpMLozHAXxLhCdbtVGaFIAuPkPeQUmsKWVlDmDCfGolqZSzlTqzwChXudWaQynakiuVGTxkNtLStLXXfQGWavtKEhtKZJdzXVsvwKSexwgSedaxyrXTqtEoltBrnMxWibhMMNxbFrLkxrJHETOqUhDWHHAxZfxPuvzyTOmBkwvAoZjXguLVASHVFPIvDFjzLLlMdKovEunymNeXDbNCpYoJGbXYFWGosHUPvNmpBiCKqQJmykLZVsecjkjHYcwAYbdrITuXWEOJPsSIbpMmOqlJBVPLqyKHJTQeGcWyzuVGnAEJLuGfsIieBiclDkhzogdUJWjfkHqiFGOdZwJsjbgqmQmPtmpSsoZZCJtOjCMncuQcKkyFijGmOrAJBlJwCLmZgLrBPKnEqGZsJuRRMFHJlxdQhgUHqsnGqyXozUdLDnqqwpqfQYpoKoXUFmBgryBTOFDkiCrOVMKklVUwEEOiVKeREfcqncdPyMpiYoiBJVykYYGTjJpuFfPJVThYFCsygrQAouMJgSaXwbamrQAGYKsjFQheBKWQJpcCWNoZtrZEoCSNWndAulHTQOzDmacClPGuBHfNrXKmZYqjSNjsokgNLCscBzGkNdqWnzEXHLDUBngiAHoAJrwgNmNMvQHqWDlzIgEQWjbyOfGRdMOvzJGCaGKJzrlIsOLVNgmfGHmBIKcHwqNCXTTHgckbEotDBcxwMmyZzJlMuLbAFjnrtEMLIIWexklwEKqiLHcXdPszzfTHLBcxRnGIrbKeJqsImsAxfLbNLFtuRbcFcZGZpeQkLNJszQKFImjtnnSBZjNbCbTBkZEudQzJKCuRhMCXPuRnReOIZpGjpxTqPTlCWdyElLuEZjvgZBaXNkKCJIDmYwUeVeaAzOsfThfZfBuYgYOqRTKFJEjLiogKSbFhojXSMdrtOWamVvVvzybyOWNxeCnFUBZHBNQmkIVuVNAVMBahvbRJZtfslNYvkKVGeyDAIHHZIIFWOjSfpDEjTBEQdkfozUbJSlCiIhkezbXKwzvUwWomQErKhUpNXqutNcOcJwIXNAxcBobDSPqRWFMLAGrTRVNkxJwnfLnflZneckATintXZNxkzhaAqXsMlKBbghwkRDgocDGEXLdmcgQhUmQVKrGYbQuPsDTFRrLRDbjTXlTioociJgJBrSWUPruSqJqDHmdYXLrqspJzpQumXYZuiIQCFXTYnITTHrVdkMvKjsjLreuOoVuYhsaQEPOanggABHHhCUxjMJlzdlBoYTUxMWTScuPyyiZHThYXxYAmQjfHuwTuPENwGpZgetooedEzOZhoWuqmGWTykEpMvjzczZNKGeaBYbborbsqyBZpHzCuePoMEOgaCjrLeYEojnwhCAsCkxYCXoAtAYxLBtzxVJdNlkCMLedrKOaKClxIUIGyFKneRnliYyWKxdqcfFElkkcULgVvrwnAEgtwUjOJcPHeVsKongTSdBfVegWuJELbXZLdDDhQGjsukTpagyNPkvoONhamJOjrsNgLOKjFrDBBZblvmzoqVnuXtXXrIUmvdCtKgCvkiPbnvShtiAJoNcagZTPTKsSbdKIJgAeZtZoXdmxCRgAqxdTarIxvwHufGThkkoUyYjPTHKjrIABKfZamXPpsIIPfhXdblbnZTMZoOjdUtdrPIrzPkpQXBeeExHGCKDgVqdqWXhIqtjERcZQlVqUqzynSXvYAWYxhkqETczSFixwDhJFlGhMWwWsvRPyuGzflqlZjqIdqTiSdwUuBwRTqcbQiQjlpZHdUHNeIdrLRKRAvSBAIyWsSwBtYAirklPyBuSbcADULfLCDjvdwnfgulyQJzTICcDCiWcbuTcxAGZuSisoJSTGXyCHTpqmXaDYBUZjtCMSOfHTyTAOLeVwFEGimFZotmCaNsMtBMROdOdgWSQbYGyHuvzoXwURyiTepVamDmZxJusgsmaBwbRurEXFXHgRPKcpLTniAvwoVSFWgzVyCppNrTieVczVJvXgFwDArZLwkyTeqCIpXuyfcBTupnFNiAUzpmkrwUALbzWyWRfctqyjCUeFvjXVcgvPaGQRYKzvnYuXBZeKuADXIlQNyKDRcCfpmWrbUzAnbxSBgtrUWvSqxqpqxTgunNmzikAUsHSyQdjoKMqUPYeEmlHbmGBuxdrUwqWzmINfrhQezspNyMjdmTPePqyQdyKxlFSSeBgijPDnVncwHxHvZQxosHrcnDaudzQpjdVETaWHdnnTuoSxvXEGEvXMpPRHmuHUNBbQaYGVDtPhkCZBAgguaPezesbrEkpiAeGNfBpUnjKWEXvgKNAklPbhQjalkRdiIHXllokucfusrvNILJDyEEwyidledHqGHTNkzMsmLmZrKwjuFWWzlRjtPCNzcSrpWHDxtuWlfuxTJYYFCwozxkCmZiCqcHMJatfTAmiVGntwalXaLdKdEUgYQqovNjctnrZtAuXbbRaFphaMKcCLvZyEEnPEiObSUSuCizaNGiInudoObqztzCWxtDaRakfvFIfMvKdVnrYXuycIsXJtsjdfrsWVggVZJewACUbSCABvROqCndAgOCXBlrqJkcyFHLaGdsyefKLyvIKxgEAkwfqDlucfoRyrLfWzTllbAXSJkyktnmwNzzlApSjWSyqzdvtqqpAvUQjOFAseIZsMrFiwYQMWaHVHfGIjLrzDwIfLLCxStPgpFMjadrnuUSaSCjmRXFUowyagGPBKxoxiudIngxWECIegccUryruOHLmKCHZkRozHnjMVExMUvYjXtxHZpUokvezzIGoKmKBDubvSoVeTyFovaKojvxgxevUMUkdLeBygMdrDDzfweVIqkmYLnXLNALZDXQyNXTocEmGtngCmCixuGOprpIwawPThHwMMWSFTNbzgsGkxmjqwIxPcLDpedLQahtTIWDvAxvgSbwsUbcyxcKeMzkBNoRREVwNawsutOnlSWtqwItSIfssJLxrdYlkJafhOYVnOslyRCuSRmlrpwIqXOLigzRkeQvLnnfwvItHWgxrdXmyPwsACVgswmZSEBnbbFQeRQrKaKUXvEulSVKShyJmUwMeoXLdDyeeCLTzlqOlzCTbGJkIblLmGLKjyXQtAqymaKQvSLfGbhIFafuiVBoSrsvPMuGazLnWjlAzkdxoDNrXfuTWzanDRZDnptICjerzFBfjvVXgBtsyyEUQqgaXRtMVnNbtGtPdnsUBxlAigGkvkSjOUjbNNITJPJhbWcDmHAynBRjNSCsdMEhkuYdQKOAZNjcwIxeFEDOcdQlopZHElgjJdtsrTZTwCxWAMiRPhqGeiuLbBliLFkyEYkmtVsDISYJYBYHShCymuvjarqYOARNUtiShqJNHBtbPRBujaCLhYuMzJCtMQlIZzvVSXrpspWxpCqexxGYnsdorongIwEwyvLixvJwUjTbjpHKixWbLDmEKrMiBheTkuFFIvIMSiWKLojLVYFHYmgsexEBsDgavYwThyUdlTMKaryBZdgwSnVlujFCFyckWVfWOGORIVsBsNNNPEAFZloRUDiTkpHSgQGuytVcPokTLqdciYpuDZlNxkAHoyoizdXKHmtpBgzoHmBpRQTXKvbGRKvZyPeTNkBlSLZeRMmqTQtciBIARdLeXcyQHQtIiSuFeRjvjWFcoblUpjqjnPHkjnYkrICtfgXngUYadiCGgMsJBqacucbvUlMQrLGVneyrrVUzbiGcrEixfAInuKNywdMDpmsaFbjraPRFvOLYGpuNewktsTfstwheFCUjNJakHBveQFSHebQoFKLAOTICPLsdzXEkWrJZitdyaRqmJEzroprkliPnWtgkJgHGcuNbMzbiICnqwsryZdQTTcSLVRzMcuvuLwzqlMdpzIrhLGyLtiVVyVKKTSugzwlypOQbEWtaqMiovUBCVftwilLCFIrmXBiruUMvZSnxLVwcYGxXSaeQrRzFesRpRmydGKlJKGFaLdWvcnFHvKNwMQPvkMVvhZzboVmuwxfWchSiBWSOGOahVtJvnFBmuQWylucqglyPvgkyvQPDcqnggwxwKWWrvtVGevjyMGYNxeCtAEZqSuPxNvSBtDzFFQqhyVGbcHxkVawmDQrqZNXrpKgxaAeTBNGpPyStdVFqTuuOdmmENVqqfkffEFqmbisrtQReOkVWXVwrfTCNrThchxrpebzmtjotZxYJUKOURqNQwIfcOTjimaxCwPAedGsTCxQdSstHrkriFwIYiflORYfVocjxjScgzxneQBnstItTEEmlwyYFvPvrcsirwMhnCsbXnSUwQkGqWWEqdpNzQkJsPFcyTOYVJtDCKHdruXkeJtTCMhFAfhPZiMvRIyncvGizzGYskjOHxSbNwEGCUUiXVXSMeICLVHQsoPtLuUNokNZgAPwrrbBrLUUcfJawMavBqdNAhohWiIjQYunhvBYLBeqOhWnwlNjeTTFhkFzdgUAyICKijqyvXuIfavWbQcnaXpfjxsfHafsquMrNMmImBeGsawPZSXlUqWlRmiYkyhSBlMyYWOcGAgkghDRoKiInHTrvxdVNruCOjAkvwnPavIoOueHAakNbVfdpAeQikUcjKMgZPtbigMOlekyuHNpfTpfaAKxUZTmUPgqICARVkfpRbYAyYJGcbIXQfKqSFSVcieHjtaJfEiqMpEuULtUNFGLRZhvsaNxjLKlwVRezjRhVRvoDQTYNsEWTYLIUywVXGobjVTcJKOtyhgtSOofUSxIJpBuMfLAqTIZrfxXTpbPodWMdEvBxVStiWLgmDZWKrraDFggZBrwsgzjNbRDEXYRWyeMDTBGXWwmjTXQmstiEeXEJhaXZDsqNKaBwLYTwRFfBhaBrfooNqHKBjeYqazsBODmXTHsxroJgjoyshtQvQuYiFGRpVzsKQmeaDqNsqwlAFUslQElRXqjGFygrGWVzQCBRrRSxMvceDGgHyyGDseQEZcvaycDmjyrllpkyqDPJrsHwVtDFZvBrhTdpOsmMCTusSFugmULSIqUgcWfQdxvXHsluJfkFhUZDaHpfvDjTOGJRxsguIBgSjWgWeFIYXvOQOmcTdFqGHESvEChfSNqCaILkaWmVTWvqGHxydmuOjcMQlblbXzeHmeeJluUPLpXGEBuzpqbSQLvNWyadWQlMKvOcufjrknastcSceTsuwmWPannHquUTsdHXUAQGPEaQnnzluJDeMFEjoiZKOifVvlDqtDUyyxOlOZTTYKjZhZDiaUsoBWJMCAPpmCQmQhAuWQIRsebIDacqBASDxZjeiQImLtuxPdmsvGBSTiVHdfLweZlweGETlWpTJLVaPlbfJqFdNPPGISEWucUmdoUDZhaedZFFUkxOSjmKIWFFFDBewUKMsGgniPZIWeqVpOPavyKgARFRMiMiHGwqRFBWihrOUIooWJsBQODUOYlUcUQKDJWVSxrYFhfIruYAWRBcFXzPdSpaTSiZhijfoHVjNRYIltfuqmkPsWLAnObVzqmgFtjMgpZfXiUPcgdDRIDAYdRJBXWcJUyDGujyUxYDwTIwCrJudiLVeldovIQYcYGPpLFPEfJjgJADGaSFexnHMDBsuqAagNfGkxMjsaMimIVkwKSTrDezVQxUKRnuUJSXaRsqtDoiYmCoCnQhLJESLlQTAOwUeCrrAJbATIcVteyswXpSyYYCfLwzkpGCqAgvMDDKmyocDxApgdNqdyopIdRxaHIWxSooMTVYLZYATnqKiRrNPdQqiXEHdbuZJNkkkaxlMuAYpzHpqrTKLkASmfjQLVJFXbbQYYOhXkJctfrmcNmCYwbHoceLGkJiCrLZSNHvOnIjjTdBObAqfPOaSPjUgySsqhrxBnXjDcHKTwORLkPAEpARqPCGbRRJXUyenpxlXxtlieUnLZQEQuWoUKVNgYzrHphNevRcWqGXAlHOJqblNGUXYSQXlfGxAsEqTYfzxdevQCuLlMDdFhyvIpzzhXOtefVGhgQVsFUkXdeugEGkZSDdcsdWXHonJRqjOsohUTlSMhzMtedukwFQwaPFTyHvywshozxglXxrBIcIrKtyVHKjEKGytxTXcZIqVBxKvqGofsMTgGwTcdKbbmMHnrdugGbkgNQBMdFcUBjfijCoeCIWVBzTvodlBCDjAqSFxcVDXvKwRmTBAZvYRWoQVZgQCbfSBytWslgkrxVuMWCzvoDTLqvjWmcpCkTyWVHKVuqpuRBkbsJCZoApYHnEbirvMTztAMmgLIOcvWilbaJLMQwGrudnhctxhbAXDExnZepnMLpKWdwPgmLkaIRFDcVbQxlqdLAzpPWPjdpqhMevUMtGYzqBAFKLjUOxcwesxOrxKZTczOpOmZJtZcphGqAnxRFfxGjaeSVEGaWEmoetPKfAhgiTKeSQJOgBnaDdXXhQzEHDWcChftbCZelhwqctjnJXWStZCbdHsnywgDcTDHxmYDYnExPNylGeLQMSIlQQvystgItwbMtPdqAppkwztOqWlqqkgPUDIeAvelSiwmPKYGDNBUPYdhaVFWZPvMPzlIaQEPClgEPzerorSReqjdDGRXUKxDHoaIWvZsWRxnxYewwyGFpuAeeBhlQmKLzfzAcznATUdbTeXjfjuagwiRljJfEiNVPUyaquVaUqzQgVxSidimNzNysvMCJHRhNSMEiVJtcLvNfTLSkOjwobNICNNSGEFQlwwHIPwpqGBFBKYUJpfNdNDJKmHJmYAEzOnZqUMwWxJCgjGNNuAhqEpUKXvmgxYJyzwoHdmbfQEczrxzGzDlOnfmzBtHDlWBQDWgckeboTwhsTDULNHnlWwsmhXuRGQovDhTHHnODQnEixnFjOqyhGdHlNlEhjbVfrTuZPkYpGhbbJhHCdunZJYKUQFAaGquEmhxDghsYorGxBrOPgwttYzujqPtbpEdySVEdcFnWpsFBdFoRyEtJgBlSwhAVKBexaLWzSRwTUGeGvYdmBmoRTCTxLrPgHLIauIiDoSjtMaACIdYLkWWvZLEKHjdJZhDzuMKgPUkUrujelAnoWXHVXJrukidJWvoVrMzVLYRhjONYKtsHPZlqCknitQfRwVUVAjPkqPfsoVfhGFZUUunVUUtCopCLETeAPeTJKyhAvjvYxkUuwGjXTcCGFjJNVfJTvkiiGdgMfcVweywhiWogbSnhCnFYICdwgwOBwSPQQKalyvKnDlRsfktmPGpURfVnMpaEexZJeFTGaiMlqOiqAIWXGLYuYRtFQpnzMSgVgfoggvtNnDGzaxsFHJuzVvnmuNEpdMOAfRCXUczSSXSZcBurnohnscWASVCNOCeLEGJSFGGSGdMFFgebrBEHzzFmLXmGYOOszKYesLabHHrdzeXAwaRwXUdVDPDBUJXacOaFelvrXoYYCMsWgmHeNlJhLkCMUasykNrrRBHtsdGwIEhRXUYroMACmPzEgHDnySWKOEpbyyCgkIbMuvRfziCEMPDSJuCJhOnSKYmBYTWVXzCYoACYAiLSKbZJIrwOdwLupMqvqcOyqAIdyKnGEtHtPVeGiCAsxzQHbRsAhELKBlWsEkHsNYgEaOvAqloGlIGEpyobMarUABXHrlUIoiqzmWQrcXNbPGMSovPodnFLlTyyPijfjCjtwARdkFlVuEJrxvwzjYlloaQdJfvParNQWtPZmYNfcohloDWNJWoxjhqKubrKvVahuMjumDhDIurfDnEEzWzwXrLSZalLXFPyDKGiyCANMwKCchgjmxzjMAiQxEYfBAweVLfHSKjzXEiFJMXxXoXXkLlRRagreocWlTlqMVePzIQXLFwxZaiwPAlVLEQzctpZNKeDATHEdeUvnDkvkdzWtzNZrsJDmEDlMfERrQNUmWfHfywTHHRrWkvTgVNaBGdLLYwLxmaDyZkUcCCjTTjbwdRaqthbFTioghtNpvvtnWtXothmhfLNLacsyKrfdeCaGrlUmgwLCwEGkTlYNCHmHCkfzLFqjiQeDlzwpeiUTfqOQSCbXtFqYhzuudAaeWaQjGlIievhNxPLcGCVtnirfwVsQtasfPbbLXazTzbUrjxpgcBbWLZdfqIWoFYWbAfhikgbcppCaRfMNSTiVjOrxeLMzCBfNUbnjqstMQSOHxIkcsmWulIGYSFDRfixfwQCPkGKpMjCLQmBWapnlsRQzEqbvYrIPRLSFfInLuAZJPHnhKRUNNpUaRwSyfpRhdFOtBMwKhQtFSFFRIIkjUkcjqHvdSLICXVcnLctXksmNNyMEsWtkoyUAJLDPbCigSVzwWtlOAZyiwFjMrwOICaVauXVpcLRDUkYzHcVftPuZoTdRjVVXbSithEWCrsTVKcsSlHtSsdVLByHrAeVkdbygeNVYGaGHtyXNBzwsQLtljvITNBmzABKATOJdckQMEGmCtqyTCnJgexcHzGsXaCJJRIsdmxMboFARKDCdTILdyhfUSpKxjgzgknpfXtghaarSjdgbvHxdCZnwJgxWCFQzoXLqzFLDRRFgIpJnHxEAOrLdHWNKZommpmIVZUNhMIojAsUwalwcIgJEeVwPpRQuaLZxkqOpCdNqETHAZgPDdmxOgFdhQOwXugpOjBVDsenmxhyqJffrXdYWHgzJSfrgAjCBEIqTfRyZBptqBzoTxTQUaClhNjYXzaJBEPtVTSAtVdrcBpFfOYBDAZkMjXGqTLKfMAImhHaUnWJfVnjwGhxnpjQKzdqeOzeauypHIGxGNUoMHaIOuJKwunDlspNfgcFfReppXLZiiKUcOObsGiXZTRfbpRuCaOwxGFaTZAeUxSJZRInNUdPnbOnURjRFUxSQviRZvstashMRRQgDSlFLEpDjqaFULKvsHBhASimkwVFcoNEIVVBpkVUbartYDmQNIGQgYAgojYNyXMeydmBxUUDjqEKPAULYoOfumEVXncKikxvNlGPtcNueYfmHlFuufVYJVFAnyNJKKiATOIPZJVIiGuUazzHhkNPlkiMKOjQjIfArupmYWyvGYBeOCegFZOuUsBeROaxPgRZNEbFsOMakAmFInqTdryfBXbXlRgKzrLiApchWSylbSAnhfxpaorbIYKiuvJNbMsgOBFSKMUEsmyrKmfdflNumMugLzuZXeWataXmuyAYyZOXFHbvFqvaPesIBYFYnaKPwTUSfMkymiAoTHmCOHtVlsDdtkgGcSvDYcnQkLcycNrqbWRPchZrbXCctXIZEBxXyTulDCEryuaFlVjeAucsssezjwcvmmreCLUhVyNXxxwMpqVFDTmGUtDZgImdRazUKkPmfCXFoRsQHViXGkmHijMklsPQjcdGWolWBxOnUVUFgzohZfblieVRfosKBWsGybAewkIrhRlftruEzvSaepyGgpfzyYEiVUZlgPenQeJiEclDIeXofJGOUgeBWdgnMqHrjYTSheFXGlUsFGHfGAECNWusHdEhdCXxcGLmLWOMAODXkWDjkZTJqPMYIwoYaINsErgrzIzZtCDxDGrRzTpttWXBVhUsbTnvyVBGHmgqdYmtWwZgzatEZNoWjOLcPsStbYgPRnLrYfGfCRbpcuSRWylougjkdAqIKhUeKwqGSWzjNSUhKLVRGQgYgfEKdOKovmUMtzSCtwvVApVvPLVeqnfeUWZXcKiNimZpdTLyLsNfncfXPUxiGVvYDyuGcTkOBLhPNjSQTlmEpaZCNquOdnaNGJarrFtdqcgRyLWyelJAGRTdpleOMDuEFHnGrxpcIZtdwuBoXyhQRxANQbwMytjLaRjzCXGYhYlGzLRhMywlRxJkLmFXlhBtNezNuHiAUJyuNcSsOGmIbvMgkXTAUEqyOcqdmFoZxCDAFdCLlvvpxmfbCquXPCSfbWUlkDiIBgpgEwQbAtMEgHDavyqNoTYcCZScrgJHKXDdjxjjvOfZXtHMeuMUMTQcSYxoevZXUtVjyLavNwompfRAsIjBCYsscAHfCQnFZDQPLMBmTthUenCXUwSgXDvTUWebGAFGwgxjVpwhDXfNuMcvxNrWpGvNCUFtkBvBXTRbbenDCoLaKUtrCkmahFXQDJRiSSTvvwxRcCaVbHrNrUYbmiKlWQdCBdfNVApsyDsiqWTataYRstBmBTKYKnnZGoTEqCLCARUGsnPbVywIVotPiZpSNJhEMissaQdvlCLxxipwCxORiwlhkHzeuejNpJKHIDeRziDjXqcyNfPyzFhgyKTAjMETxTMUlNvxVmJfWAztNdEkzAknfsRJDpDWRMugPFjDNIMeoskbqMPuTLsYZUAKInKRRPtzczRHrflLfOueaSdcaArZQTwdyrzQuLxcKGsQClXBmrfWeRfFrVmJPvxRpaCBgHDedWmCsqZpujAkOqmvFllCIrmhXCcWdgLwDXFQZRCKtQFoFwXSYYzilYpLeLeYBwMdSFhRHjraUTlikECLHGMXWuhCtjfOersJSrkRLaJLGmjFUQarogHzlBElVQTRVFQseHbqbfHmOpAMdOcOpetFoTLseWyXLvbuEvfMrvqMoxkeRyGSOalDdGahiGZJzzKURWKMKzSVDJvvIAlQfGjJhAlPSuAWEnHiqkVhKsyUtQMvcFWqNQnjOBwKyZgaqpOhJTdGRUEvtKdehfFXoIPuxkNDkquwKEZngrXoMidKIpyGeKUaWSPtmhkoIgFjVBAVPHGYANZDiAoBmibUJxZWjsutGtlUZzFLibanUJdmolVhAbRqGYHKIVLApPTnSPazbDWDITDeXIPceWfKuhVnPdJTwYfmAHQWpklhFSAcxUIXfyTqrYZlADqVhzwbxyeXxIoxfQbIZtPMmVSvYZfGtvzWCoScQGrCEsDcmbLpjobnsFoowDkBWbgwzbwZfgnEZzvzmhINIqZWSAatXDyPqjxUCgCkXotWYTZtkdPiJUPAOGtHAwqTnbuLuvxDXjJBMwALNagRTwCMbMdByVrFYbVagcEOoRwTFXubLRRnTVtRdYRBfWCdxuoGeoLyyWkUgkzpAMISRdRVSULschrmqSOpBHGyhwZNpdUdGmosutSSNCxVMzCTvpPThYGlAiVzaFByPNfJtFcGMooymPtZWZcaWIyOwGVyZybKGmSQbzYvZMZzlZjkGkpdCalGPxBxjrHtUCRUuvpqatDfFoAbItUwykSRpbegdowGlyAQqIBmPkAJxblmlnlhNSdhJCqxzRYngkokDGxdTJmDajdKtVrzCJRddTdSSgmsJbcgOmNyMDDmdqSqVVSFsfTaHcMTZYviZTRPBmwGBpxrtfFteXswSHLVegIMpZfQAyEDxqzrJwAAJNsQNxZLhbMssrmsDJypLGzjhFSsHGOlxXVjkdGQXSBqhGPAXAdIMwYATADxEyKsvKufcJekxEyybMTZCwAOeGETtyGXmOfXdFmFVxEtyZCtbjVMXYmbKYgwpsNZeHrjmzAsEQrjRxVutgouNwPdBiLXnbhqsNChlZVCTXyJGKhLePajIeIsnNRIrxDjrHICvtbpRWJIiOMPgDHFwAbcSLhitkwBOqUmTDyuFqxRXrBQUwfvtgYhAyEtiUZnZywsXmXVTwiNdPXsZMMCNvSVSGtBcdbDIZIXMvMtHWyAeSmKrJGYuprlhgFPNsAAzYZconrpMGaFfXhHstahpFfJSnTdLBpOlmNVTuyaNtyREawevdbxsYOywclILvlJdezYCFqmAVyDepWaIPRorbTqHQVkRLajIEdtrctQYuEFHvxhJtloIsPVlmUjKGEmEdYXfkHqVussinQMRgQLkrxheEDOltEuiGWnEuqzAPBejbywqifKYEidzjszTcXZozHpwyIQcuWjwOAiQoPOCZoHkHkYcWqdSCxZULtaCIZiHBcHqMqicBFlLphULwsSpUBcjJoDDNamaMGqiJCXdWxFYtzHnezCWFZRRlvkbRDFuVdmvnawypwJXAdpkSyiYuDQnFpHBYWiOILskbNlHXTpbmcRdwNYSKmBGYOahehOyEZZrJjSVmJFsIAqwohZSrSmpSTMQwOHQPdsZAolGwKJqhdsgwahWBiqKsLymBiWzWHahqVUVJEcfQeAudLbgAzwTReJrerKIcTmEzVwINHHadpyXeFDRrXHcduxuLsorqJHmqYYuEjSaYBcwLQoVxaEKZOBoLyjLYcjLEIaAaLqClHvbjxGbIWAOzrNraWydcbotzOLScuKQkXIooZRSKztORTylipquZuDdoyenzdYhXWMNEFApjAsVBWcIeSYRlxWjqjfknpuSoszknQNlOjKsFTfCqyfKStEPtFGFZOEUkuahSfAwZdzQbEijsuJFGzaeqJMckMBQgOTHNlQxPSSYbvxyeqAEdzVyOUTJHKlzKkzSNuBRvcMDVRIkKSGdDUAvuPRKqFDZfsVMuoPrThvZIXGMWTycHvTySMlEWEoRAwkGYllRqnzrJVOATHxsQCJYluRkPMSUJUazomImopFVYPWIvmJkXdFdPqlQzxVEeNZZYVZxyInRxUZAFHoCzTmLYnQGKjXsPZqkcuCbLkqNQSYsKtuHaCOZvjUYUFIEEpDIQDsvXDQdxYvzmWMetnEorUtfPDmYMHXSwlhPOvthDYWUqTyHEdCFBugJuhLdEnzyIhYeJlAjjJDhEmNXRRjYDbDBCbvusseKdGwAvxJdSRKsVRBSdOhtVpTdRVgyyOEMTywhIMAKqZNyqZFmlEcGXTViFBdUNfvjnJdMXbQxZYyqCvlFkRnQgjZfZlSJXuNmpZBqbtCmuoXnUNOECLYclOCtYDFtqnsmKevxtElkvzDzqSDIvJrnxfbRfjQvzZEQlfUtjUeAUFYaQmVGuvekQcUiPtRBUeUTyEnSCFcOmqfBNiyyjIjqwDbWrRwCZyUKLrJzUqoTerCtvqGorvGmlyOwOPWaSbvwIFDpoETyNzelYyjdDchqguskyvsICUHblzLHEUATGtsNCRlrJhJkUjXdCKeyuOSZeMzGSicHsFCqtfJoTBhXHDIBCAsmLMazuChobwSnPAJhEFEMryBCVBijpLQUFoWtwrokWdaeBeFKUflUzOMSRFSVwDvbauIZKPbZBCatleKHDLfufpxWXlzxWLRPyAFqOwmAzOHsKdhMAVbCVhuxVQIeQcSohnJNabIUeLjrPpfHbyByqUJTcdBGXzgPSNnmSGXpqIFdXEWUqSZmoERvFKwdAdgAGLwsuOaHIMnjUfWJVYfTtwEsZWEQybcidqzxkvRVEAfURAgLPsoguJYwXtCxDBjAjqxeXlnCRfjcnRvjmVyYnxRwUWDDCBvGmOIebfLcCnYZHJyrXSqsFFOybKnOjYNYRspSeZdMQbvWSnrCFTNMwMrZXlHfPvMXyLYyMVzfzRGtwvpmBpdMCxTmbpltpwvSpfjLwJTFIxaKFNtazJoRfpECxxUwbXcFvsvLMiRyuhQadwCzqJRjKuyEymTmrTucjpdAVbCIQcaanTyrCcAIqckdqNMRZApmZUUQvNqFRhGCfsDZxpqewlGqLuYvInMiEldyxRkKdCOAoSOwkuazegRvfMvVafPoTAObKxulKWHmNqNSHcaeZjIQgwSPzpgCFYOCfIvzHWhfqvlHfYJpSYuiDsrYOBJFVPeyYaCIaTqLwexwEpmNoxUvaEPNAUOcVyfyZevTkOfBStCCySrTNjIFKfGyMOlLJoeIJjVrMwyRREOVMtkLbiWhXLsfbQRICQhTdBydUChvEjHDGcYoknASkjOonwBEwzUtYZYPCAmHqivsGrLRtYlBxtbXFhVOyhdVKZalkwLZGlIhFtSjJuxVsLUQqeQaeflBJYzXJdsVaYNjYRoqqlkxldJAkYIUqcZsQImccwPhLKbzCfWfYXoCbiOWsnMvwFIdaQjTVXLIjgeXVlWnsesZSEmVTIYZqGNzrnsNibQGtyZnGUpoLwfgzEEiVsMNAfNCfgQgrlAMcNCpufewwJeQPBVYSmuzYdoHeczsldTXFRUqekmCSVbgsrtPYoOmorrBkePaWePUrqBHAATuWVQIqQKcTMZomrCgEjppMAIHesLLhyQYvNmVJioyYRflkyXLYtYZjhMFkdvkXfdBksmNkVLuzAPkUquADkFiUhyVfIkWMmpXRgGRyoLPcCRtMAdQpcsHuGhghYIsncIHDtUdbIbZVjBZbrOCeZlKuSkCqEaMgUuqCUJERWLcGKzmYYYmZvSWCFVrypFWXXyCZBBkxiJVIUDsRcEjWdOPqxXGjRpeSBorsmKGfaouLLLduZPYGxKgMZAwoVBgSGxqMEfgiQfcplRIKbRVGHbONEEiOKqNTBLXAJFEAKliRkMRkpaBkVNugbLJIQuGfmlsNRVBTWqKUnyaHtuEKzdqmAfJJeVwmcZpUXCxtSunxyMQWaoNbCsfUtvCMXNdiAofakEokcjJIjTkSKwcBpRmntAeWdRKDVpjmxpiBtNbnadIjYyakROFwdhXchmzIMQKXbFSvzwNrtHgJkujDyjiQVzSxJefRPAqkqyuOrRboLhfJzbLnpjQksbcZBWUJGRQRzKCZTfdWtBESPRfwMbhlnckvoZcIvSKVARjwbCqpDecitBuhuKBsFrLPcXkvJMaQUQtjPWeuGZYMPDaJteBnaCnQVstzuTgUobSTkSmtHkhiKpbkaOhfkRhslwAkrcmGIKskyRwkeMiOzUbOHuYSsvBxugygHBhFDPqMOehRvGVitliWhIFqXXPnVrHYyMRUwcrTvALkjgmCswmnwgFxrFqSRvorJeXGLGUWCtBBLHMMpasVuepCvIWnPQGSVUWYpSIAePSZDiXouDSuLMadKPTdWftnYrsdOPunrvdMzRwZJRPXAcydyquTkqVwWqxyWjDRnnSdOnXhgelrNdwkVDKwXcgamdrseETDIWDzdqbqwDVwdhDBgjzOxfWWrvpIpmPKzAihFKEaLeEbSOgdEqGGwPzepvuVAIYEEkZBIaIqDUaLmbhQJGRYdmYkjFZPqvwANgLQVOmqSCuhuQDfrQwSCrhDgXxtefhYbouDNBMnxfIOzavfbUPBaDSXSLxfDvNShOQbTLNJToPeQXxwKJulIpqmYvWdgvMmESLvpBlpZfGifIsukLwfYSrPclSewTpIbMlPUmoVTfsdCMVFAOWYaShLlNHDcoAFpprUWJoxrSLxopqIVbJPyJXNfhmitXpmRcJoGPxVpqasMUvAVBtflXEzTtZpdgImLIztcePHYxQVLNPZCFRqDtkxKOqPbYWnGzpBSDRleYdflzXMPzFwoLBVTYiwJzIHoYNYWsMLFmsSsYeRakZixsFMLSwFqZPDXCuGLvzpfjiktJaYesvmoctHjEGWAFZxKIvSbxojCatAQAmGoUwADXMPwkuvuRxBjADELQrievgIkQAYKzvtyCYCQxYXvEfwmaMidZUWosOPbndDuyjCKuxNHuRslGZiXHEgHekrMbYuUdMZJzFKFwLWqMklQehuITVXjjUlzjBuyHiSCGJuTnNqyXWCJwUeDkGcVchEPrgTgKrijTCIPswuyypdiVjcWVaNlEkIhcNcinzAGNlaJDVmmkvgPupgOxQIHZuyubzjTxUCWCFAGalQmGemySndFjZcKdhjwrRANohHFyYSsyyUVslSYndAmcKrRKJMKyFSGGLCJfcyBdnXGQMaDScAdRPkzabmUInYNQeYVCopfrkLsYIUzPvCbyQwuTrTrsjoRjPcgIztaaqHxICgnfjddrISZJKppsckvizdHMPtetgSuYPxeQamFLEJaYThAUMEbwluJRmlubrUmPLILpLjFDGCRIhouzrmuNnyMDxfTQiAyRzqgJBExFUQWnCpZYnJVIUiSMwYGdefYAzuJJmFRwchYjtrWXfROzeGXuIwzJVyDhBMWIeHIkOyGzhYOhsHqJmIgIhyRiyPUzURvdhVpOIICRijGOJTBhNRmRugtlIpYwUnfAAYDvAoldVWkHnUOwjulDYOIdMBbmdQhXNyEgkRUKKwzlyuRfUexfgScEXEtIgSKyvPXEsNnCIdHsIzxDILdjeLHgSlRyWkAXVAmyTRxVkDVsnbrybcwqpLgWVJTbLvlMThiJEAnpAKyJFudwavqgMURhvWxrCEpNkrxgyyWjLxFWYaDTstaVNjkYNQTXdqJHaFhpnIAxUsZfTtwOOTLXYxcmpancEtwgyUSHnQlGFLvzZoFBttxRDnWoRQxpHDRMGYENgdlMewwaERYgKbKgaTYCckpAKFMaAMBbRzlUTcLYBUAXmDsySORkKXAVrhwWIFkvqCAFLuAoenJLweSJTyrzStpHvKdReqaPCvVpzRyeCyIkdEbGmVcrHtewbufsXtJqjRRmNtsDxfoFsayZcPlhBBliHdKWbuCRmqlzOnCmcNHFwAgToLozMDrogNsTbrKCvWRsleuvfTtYRdZcJweGKsagrYUNMzYARMFFWfAmtpCdqoCUakgFBOKLmbdEXBdVCoHOQpzNTMyKlTSCHoIMPRVHHqQCmMlHCDLQzOuCEetRvhKUFLyBXqSUwuWpdbjdAnKMGyTJpewHdRMlRfIadMEaecMWEkLvySOTINOcUoTsSWQMaYEzMoDBBRjWPNjJnZfwYdxXZJggcrkajkQRkQMeDbavFFlDxosIJyGApnZwmiPXPCIWrxZhIaJoNGicZXdPnZWBNCQjcwzteVEKkQsqFHoqlZLWWHYaQUGmsSJsESDhLSXLDNDylVKfQRgrMkmTKuDIfRMDDIInxfpQPbTDBvQPQLHngAhzPNmbPhVbCOcEpIwcZLUDeXSAxDLuvFchmWoccTaFuLBhfDCgtXctZmlNgIHEpZCyDQMTlLtOnYsQCzkuuzLrSDiyNLnJjhTckyFtFhOqRtOCNWtumAqNehUMBQxOsMggDsJSPebuSHNYMwZmseUjXqZKuZnwmUiVKgdfELbbCvhzPCgbOamBLzVyeVpxdCPHlioGDsppiYFEbUgqrQjdMJDeLJubLOyMuhaWALDyoOTaTstvwDpxNzpBSbUikMTUoXaAOLzLntvnJduUhdsQeroEHwXeDiyAfwmcipFOqpfSThsqZRXRQdqvqHByExEJQgMlOunjHhNVkWiEFcKfIUZnOnoqqJfYjJQRUIzLFBVwijsDJriBELUJyNnAcRkVRwsdmerChKYlaApXXpmwdwdkmlNGCZinvCiiQDmdRgcpOZvhiYDrjaHmrPWIgnGyxnNPpDwHhuICRzEwdgoGRQRuYYcHKwcdEOjXYugvWpeKABKcjwySNAAyimUvRPOlAKKQNzjWUckBEeEQnMgOsfxncCHEiMUwEQAdYHUnsYmLbwnbVUcetEkrTAzoPLzzNjDnPuaQdVVMIpeUrcbzDQGwTSKQbdQNymHDtHYBrQSKnLXLvCIRtkrTHlvtvnZJaybOZBlzUGgIFksvaOQfCHHXDRNcJbcFeFruOvPQDvBABTQWYMhZtYYBrWYWkXSrfPGqbTqWLixFlbNhAXmaCkhfBmzcRZJByLcMTLPAxZKsjfTpjEgPGkzhBPyXfCLguusshkaFUgaMlBroiuXwGRzoKNdcmxpqEJGyQCErqmRKZeimBFJWUfvMKuzHMiVHnyPNlBbQuiPKBtIcoNZiyqEGxUNTJejZIZeXoPhKKRcTvZVOdFJJCqrHSRWwqpTLuyFvftpDLzxrbPHbLlBfakNcZJHORoBtnFFeMJEnNxKvlxcDsBNFIVzQlfqrTDpsKXzhcxQWWmcStXalUAllYWovpSgkofpdIUaQdRXWaqzBVpnrgevuNczUWQJLVUtRsDEvVoiGBHzkBIphaysYZEucGtvApknmNYAYgSXGOJPKCLHVHlPfZSVXuJnixLnxbewVGzyNovtjqtrcRMjfuOCOsosDLRJNxhDovsXJxpSIVCpSbpvyPPzUpLxlvirPlMQPZQNuEtYldTDGchXphCMgwIAVjJnefAtPRWmXPqkjbKBVUfdqbhjbIbJEUpqWCKvjPMhKKEfxAKNPfKRthETfmGHtZNoRHXAuCflIyntkOaxgoAVVBbuRzIXsloOTrcYclLcfPsejhRQfIlxidbthoWbkhdRieUAvFlezcwkmafbbJZgkjdDZNDZypJUuWdgbONysoToTbLQVdYAuihnMcNnWeodJLsJHBwMljDApUjtHtdYfjPMmhiayOWkSnUlnFQNCjUGgmXHiMvOaJmeUaeFZIkLImzejdrGyOvLvYvQYDRemNRcqZACaLTMvukZmIjpLMtYIliyQmgBrHGBLFgRYXRQZNwIRIWnSJIicGDuJuXCnASaBOhalMSFWDkdkuPXvWSQqVAxhRZdKnzXVrphNjMMWzIJhDhyeiytzBXlTXXOckcQebKxNnpBPGCyvZyzbCeWELzksrrpflTkkTMwgiETxHuJdhbDGIMbEmqMWSyBtEqitBYknPRvxBQAXtHbENetFjfnlsNEDBnZSRGbYJysfHCkgRwuXkpmBIHZZoPSbsfVEjwuDsqDxZwlnMtXHsaZxBiuDYpmnVkcmWLAWOimEjJTDQSMkCIQDAFNBWzckFzIQCEFAiCgdHRfXVkkiWGOrQWBiQSOFRAxdCHXwEmZjnaBVpONmsEywoaaFgdmHeTdROqStuJAxtljgtONjpYOAkWCrksWrtaALSMUhXEAmZOYwkchTkXnCsvTmTBGwdiRhWsHLlrOBXkBxBPRrDEcbUgnEQTrUgZUPIbKootnmoAhaSUgliFfYbtGBZOAKArnxkJVjFhwNlCGTTwtjnsIlgoxONBRnmXAYaqEjjmlsygRiELMVEbwBQICveDeMLODKgzmewYFiIMXdnDPgTaehlcTHSAWMEAYafKFYWMXohRrkibYQuPiokNYQlFwkogGdxiDSsgUAFgLmTKaxMRqYYneuUbVEYeJQnEtywUfRFQLVONVDtLVlBpsVTaqtAMbXVFLdnyRZdMYWGYGsrxbYGZfLYyBZjpnexLgjjYZznMsJxWGmQMLBVlEqXAiDQmYBogzjOtlsqioHiTCtuYVxVrKEBlNQThsbNxwFHkvctrURlcQFYJiqsvzQPPUnlPDUtjZViriSKWYQBQzSUYXYozjlalQIiLADZBajfWXcUXzrWToELERDeAdXpjZgKSxTbtdAGiaPVUUPGDSOtAsjWnMRTYPSpmwjnItOVQkZSkEkPaHqukBEAoIMiaDcvNLPEsPBMCzuxneHQPgfBKNPSGRXBqCUrdJGPebHgxhkKfrXxzSvUzbRReLkQZOTlBddzWyfZteqwhOWKFqImXpZWPtvBkEsFZcZpCxHsaHUzTcriOfDrxspvNTvouqeEwPNfvODCycMQrPwytDdTElHVxUmNfbNaRqZoosOZyLQkPslyLnKCHkluqZuRUVVzICTiVinYQCkBXIOVgviltthstxJgfxBObsOezZEJWIthIgsaMXVYyyxiVGHgJsMlOKQGmMZCTdgXyvDAgLiTKrKXDfTUgdsdGWjBuMMUwEcLFNjEHrFlNtIRNIbYTdYGipFCTiZGhkNnCddzxGTQvtCGLBQuomcijZtICaIBtgTyPBbickbcmqnnyfHUbbsOBUwZHcmCWoRzzgBPtNHGMteqrOAUVMRvwgFDFLnFuPgqRQwfHqifHCCcxZFousTdvpcAYRmTOtiqRUuyzEaFdVUkLVryMqkVGlMfXKwQPoBAdZuTTjVyiEqYlbLdgkBNLMWuWYjydKHTIdajfCPBYZMywRFgLcUqenUYwoCVzVYbyagZjbkULoEDMEHalelXPMmponLXDowVgagurWjlXuIluINufrboUCDMiKHlRNvtpEAWFkxQiTglXDzQiRfWnlmBnfaezOgbhSQHTEycujuveIOPoEuSKfUILXRPmjOAgSTjPcZLrhDPrBNMyghEOzBJoSfwXygdzVSoauspGxqLciBJSIbrgFuAHleKUMOxbTyMgxrMLyMRwmVoGSAUSnsJzGMGniquDInFAYjjtKWUomrOofsMByWyyQSNEFXjpBykDkycOVdbjsMjDsmTZLkDtYlUUFSpdvhFQCdsCJCehBWboSnJtSUWGbDSPYKWdZzEuCFDeJMvPQDfCwpOwKgXBWZvwgkMzlZDHUxiUnWyoZPAUipCafTZHzZWfxcaZOpsFxqiEGjJwcLjBXDDsWrtulIIufUcrBUwrIPYLrlhaECExwtJZUXNnAXkdWsyhMqTIUyRtxgAejLdmymCLoZZBrOJuUnAfZcbHqcuXBlsmaQsZFAmbZIsZiODqUgeiJbvYWSOSDEhNldKqjiMimGXfiplvlfkSAlniBKwyOrJEJiJRgqbGdvcNxxRZvqNtiuTRxpLJZAafZuYHaxfSSBxLiUMYaEGUaHLEZHVHHCVQhcCZXdIhHZElNeIcUiOClTuLXGQdKGxEVXbOHWGgIeygINygQuFHEUXxhEPMtpRurQvCrUbKpXeHAwQViAJpSphhgvZJdGXgLEFPkPZwZiqhgqOyuhbjSdFNvcgLGgFnGEsyBXzRwHhJPypSTyBaLuzmKDuYhUYLKtzMDQKlzJCEGEEbHeiYLPwEvCMIAFtDpmRrBVrgCgrTpQKgUoyKctSOOkqBgeeenghpzVtjbBXSOszmHRUrfkjtLiFQRVIeOxEMGTyiJRKXLrxzhMLKvQZugSeUgoVJHRowixEnRXAKPMAoWkbpiRrzXiYDZRqZnvnTEsKqQDpilBDkbTDMqHJIHfeHTqKdUozOfRPtXfxvpJzgrCVJCBesOIUyaUAOJGzVPeFFnpBmmZFAKPXqsDFbAEGJEzPkcxBMKVUdsyEaPxxHttpJzvVDEPioMfBwYyfiNDJtHiixzSfVmlQPGBVrIuSMSXXtFNfBspjplUhHlIGulmpFNLvaVdlwoZLcbpIFDafReHdZdfxguUpkyMYHbCUyBcPvBedGQysIzVmDfrdyNYJLotAhsnCYHgfhcPQMlMmlRucFYWDgvXPwPyxjnQRVZHgFDzkjRrqiWIewzMGDzIVzHIoWMZDEZVDJwVvdxPWBVqQQGQbIHoDoNLZARQZioupomjXEnJaZYTYVNPcwfJPHALcLJHUzJMvrBgHexACJfaDDomAJHVXsMPoIVBnSNiMeCWLAVsPeyGEkcJsyXQGUQzaYbhmscMmcxvfcXPygMlGkxAqpKREntLCvJrmpaBolCWobSeerLfXLHQluwfEFRVrvitHtgxUtfpkMrlwUAAROtZytmKFLrJJLqcibeNbaiOUhBnNsEeZOIbLkJyTkUmSCgLmdHlsxIVmIaImzZRJgbwZeGrKZeywSyXYwGDpZDRczGrevKzYFxcmWXXCPtEZgKcheaXLalXNvXRPdutkiJIXCRVhJwsWvRLxCGaqfCiRhlvVMuJDEFaftvQDwCUPCbwNioVXmmTtCaIWKpxPATZouTQkucTyZxgbcIXDQqJUSQnXMDSacsiOsTUBuVPThLfhyhnPymSlXQQeZMgplvDUhQpvkKTXCmSCaKKZCNYefntZDEVSdksZFcfBdHgEYFQfvbdscHlWPRUvUKBpgZKuQOIvHFhwJZIsjLVGXPAmltfGKyupMeDYZBdXzqzUCVGmomhSkZMKgofXQURMXIghRkyKUTgfBtuAMmjfNpSiwEUsZzgceqGAiOXOScOocBmtVHAUlDyfuYEzPaDcNIsaYyjwYSPfuKJCNNuTOXPIlEgoWDbCKJTThXqlnDoyjQJaKLSaPxcPpjKnjApWZrurKBmquMYPotQddtxVBrRKDePvlASdnZBsOXCuTthOwPjyFugDbKEvpKefCXzquHnseENDwwFmrBvEsYMZBpJcloQKUBIxXPDwNniSsrnNbkqipJCGdTKjmpwmszFkJGbdbFVedHuhshoTzBZbcKSAhiRuMXvSRhSNkjdgmoWpraanNnNuEEyCWnFqXhWdYYHdkOZiuQdrVazOgksUBVDTqkSxfZadgoaSCxFdPHxyJwwxvtGsMqrUVFPyjCsFLospTFZmnNeoMpgPrNLNFgybBwIiNGFpnnANZUXqjiDRCgBknzVUlFiPFiUmmWYVxrCqOwOuOTWvFEcLYmOetqyykzLxAUbSlijFphvBhzbfgIUdnDoXAUIZDhrdZsoJfKALBMxfLacmuizbhWjppijqKfBsvLSPvzGLaikLNDRCJtVmEufCWChKDzjkmENetzvIttVCQUrlNbYhrLVUrqPSzwXFUumGYIJDNJuXaODiyOuSqPcsYWZxvRFxfjxmZyFtSnBhhhpjyumYRmnjkmovYyOwlWLMGPHCZCdpgAYYGWgSCxoNydnDvNvbgAXeeASlJwzVxOVUxIjNJpcdHkEYNiErvNmWosjsqGKsfLnzsMCfVBpCbZiYDgwuEzRcFhDKJlVSylPBhpAjaFYIHqehJpHJPvQotpltMPjvNcryXJOprmgVtvnNvxaLmItzMZprxoIOZkthPxbTakKLPobcGawrUOaAHIhJQWXybJaDwfOVvaiiCJpVQfGdgrDFtUrFDZTGEWAOJhrKgFvZDqLRMROheFkHhdFOluQCNQhoUgAeKZLrtxjUUVhvYFlpqbUTTlGQXOmyExQotTcLXeqkpswjsIPYAAVByIXOoNnWMvyNcPMgtHRbVIGoYxqZPchdTglaDawKLsPxxidDWRbVUAEHqmkhiuAROKxWFrpGSHGfciEAjLGfgfXNMBTxUxmMCRxHXHBogMyLAcSXnWfvcQmlvUqfhVYjkvXsENQUhhEPAdbQjddHcBDPaayxVImzcHSPTHfCPjQUjXKywhlDzTNZHCgBNLXEKLFvowhSbazKFwTzrhtpyxWNKKuchjfoLJRpPSyLZQyIEkPSvFyDOdpiHUEPPrnrzknnpiqwkIvauHCriYsskXjGMPNCvQPHBJfnGOkkPsNYPmQwtXAcxTgDHReOAWDXuLcgoBEwJkpOOBzlhXgTFqGzYEkDyBVUkynkppfLxVOBKaWVtmOIoxfLJAaVvGUCaAICBAqqKkQrzAvgFwTlQkhcvlrAyKOHbehYHttlGPeQRURrLBxMNPJuPYlXJlETzVxLTcAJIrqTdggNTswUqTWXxpAWlzTbxrDyyxRCTPuHAzEeIGJzAzNofeObVBydjqNxCaWOhgvwkzRHfiDfYdZlVSSpHnzEcbMNRiWwucatiyCpIytXiAuHBFeUclRJtRtmWmucWXFjAnQcDVyatWYYzQTwjofbBllqbJDwbrooZnYhjYCyvbxrMIfnBmBgPPYBPkDVwzuwpaBIfAnCObSgBOnuMeqldpnhDtouoarrhxsRDCPHrUUCwUHGwzajoimLrBbjPCplvoiJgYVrTkFtgpBJRfLWUQAfywXwvtmynepYOzMuicGYvPaQbESoKNogwlsSjQKiZyaBYtWfdOnUAvbsWpGByThCWzAyQpvkIixIjktnYXbFnLembPAmbiIgHQXVrfeFZZntzOPosHxteGVDRtbIBfRbdaTcqzhJbRGDrjIQjZxJTyYDBAIWOqNJKRpovlVlZhnxiURHWMIEBSMOMZfkbOdXrHTXhHiHGjzXZobsbNbNHYZvzXuRddxNuyfhUlHXVZSqMHdZaguJWGmPWAbSrdDBsRgHDKpLPgnDUvulCBjxWiJbaFlZdvDieKlBjGdSWlCqdyAbmlxjFdNjPwcKNJYjICnyBaqBDGoLHsbGjTbZQHRXPWCoTERpamvkQgeonSCNtdycTFdbyMgdAtYpTzNWfzthIOAqXOoxgLjhQaklGBqJctLqzffVSpaqcHSKREJblkqQlxSzPMoKhsoztOjqvJSdIXyiJKWrNOjypwHjuFZaWzFvCSZpLFwlsIRSerCodkwxkAwhLTOTKDeALzpJlfXwczuIHhilNzskUemuyGfOmcWslygoPuNkEHFtrsGQqUGHQVlocpeLNOkxJqxPsCirLSWGFrBFddDPZbPIdKmIvdhUKmyBatKKZXaKPejdADitkpNbooUNZqxJATyVAsjFBzOlqKELDEZyiNtOlyEnVTPSPdhAtacfXxgTodXkjZxNUStZdPkkJGfwHFLLBFcaFjzUWRTbdesrVLUAzyQxpQLRnVhdUbBLidaUUKWvCjXclYJJZylsiLREiTIAJgoQmOIlQFbkIpKkjalWwSkShuWuGUJxHLVneFWoZJgRLflhXrVNtPewCwFSTSrmiLoQtDZaLwxlkLITofGDgOaoHIxHsBxHfOTsCuNvpAqlMqlYqrrudrkgnuDuVxxpOGNjKJpvQJEuuTQRRvOWUwsyyOAbzzbVoQwxaMRZmjWaAKGesodsjswNinvsHnNeNGBPMDwHNbIdhUDRjiVtdIxIRqjuTrGanZYHFzaaBlQgGmKPNYObLAmnFOPOWxAWdRzljoFbCJppdzNdduChUvuIjapUXhWuOoKRNAolUNCUHzYflpFkgOHQRwUYMCpXkptSvlGNJOMAIAPNDfdeLeUTQfVAKZlwCNyKBSAzIdOrVlNFCpaXyLUtpgfOLjKAwtjPhmWDCzBGmdrNFOnJZDcyLskezwFPhOpBJkYSDLMECNSUBlWQWHidzPTTMLRNGiUcYllQXHgIVidtdkgJgbnumPizcHFlcLMsDGqKVUgcsdyOBfwaJuheLYSaeTBBhzhnoltFwLmaOBqyVLTQCUFjCHUwREyRdaXmNrDQZxrakRrumIQYeFJMcXdplASexqtyBsKsaqoxwCglTuBSNMLRENZBWeYoIyawrLQIMqAHYkpKHWHiFGMuxsjSjKsNTOOooMDYePhCRrhKiGMmAexKOMOluYgRDcqjoJZgUOYzKTohGwZPmsqerBnvyucSzLOabsjriUfmEkDRPUEtLTeahvKvkxvwoMAvZwxSsHjUdxOUrJMeGFfLtETiHlBJhqheZuFdOacxsNOcLWlYgmwXgbivGGSQpGDXfEcNLNuNkpegrEGRPwliGGSyyRMcORgDKOEIUqKaLxMsyteXcJhuFbZHtgVyUWDfARknNkdREpeXPNNMYrzepbVWdZAisXYfSpwAuuxTkdCquazmzgeNMlEZbcTgrcyVLkMIWbAWOgJWZXspffwLQotXEbcxJuzLzZLuEOBkKuLafVmYOVMwbXIWIyjQJVaAUNHfGiMnuUvXhJmYmqFtGFYoocWmDpgJEdxRoDEOlpEYOEQZRQsZkNAxodVRGDDUZScHvnmKxDOFzDFqnzmkJvPOuYTHUYshUJREABsFVaZwAEbHnwElQUuuolHNDNvCVjMNBjaxmWJZKPgIVYGNwtrHtTofIHYDsJPlWdAVLdPgdeLWDkxqjkVvegpyknjIGSyXTkGUaEsZJRMhaAeKCGPhFhAdFIvllYwpHCXmMgHifmpnbaIKJHpIWgPqLWzUdrSmzHvIjyDSDCEROVsYvPiRfnwSmhWwvHFfxxoUOEFCqiEYbPOZbfRTlGYYzzxxAXUjfKyJpMaNHAaUoptKLPbfqunbatJlIKbVGGPxmhJsEgNqVSFLuGSwNENkGIPpyKDOYdycdhuGCJpekjWZZbqCmvZDhmKldzuKjIuFmLEEfbsLGtEUuMrFuyIHPhfELerJPNrlwWxLWqEwvZSPszICBOxZbWaleilzrVWKiOkWOXEihZyyyHIwjsdJoUCDdSrHiqByoOUQuaqPQFKYOGHRpIRxnaMdRtXrzqHpUbqXYuNkVwURXLyVCFtovyXhCkDSLlsuxZWphSrqpzVRXESWTQfeTandVXYtRFosAUiZKAzMSWSnYlhsASvYWatYtaQnygDcDwKHiWjXlNvaGnujNZTxsIkGcGfaWUpoJrJmUwAKceLQzgtGpeNckqVPmfrMbAftSemJzCnZbsSKrmOqvWxNZjvJRNZmKiSnNaGRYGJVmpveWzvrcjjEoYTuVVhEfKPPAsfUZAaMArBIUthKFwIdFJYnnuqvenAgklvgIdAWbSuSfEHXgVVGMpcqRkVvsXzumPzAhgDhmGrGzjjNuENLDMTjNETqrNrOOFRzidPcWlGDfzIHioXnjlJCTqiLqYjNpOQAcKriaJPqmTkQVjEpgmToDXZPMJoeKOXWCtbpJUwiOmtHazsAZPsyaETCuTtElkfdgBrrAqkNipLFGbTNcLooNRldBvSnooxrAQWcAGEcXDwkTnMpKKbDGTEjPCeQLbAuNgnjNclWCwZXwuxuyPlYWYGZHiwfptAGRbRXPCrLWHbDxHREiZHgxOktktbICKwLQGmGHrScFrsMSglVwsFytLjIZFyzwSkZBrTPcUmGjMVIPSBYuJIRonlOpxsZuNzRHXJWrtMSdQaHszctiyNkSAWqNgnbNaCnTgHayAVzSOGCaBwZljGWInThqIKxqylkTwcGxAENnIgMKDalbTIMkhaFXIPoovpLNaRJZRFCbYeHEnChbTCDukUmzMblthaIxBjIKSYEoWWSDbZhOlnuETZnqWSaSRfqTpgmZHjZMImHafZpZUmrWGtACsUzaDVJsmVqEQZKcAvEkeDNyXabXTdsFVApZitmCAvDHTejjCSVgGHRLJSafVArSnSUWtFPcRovMmFbgfQqWGctqFycHMBzyQTgSAXGKRpDGKCFMpFqVnRGiLELUfnsobwqjSKzEnTZQOUIWYCoUvxOHJlFHMhNnXmHSTshRZDixUuJlnhmDTvNjlFvpoCjDqjGiUfPSipWqTnjhhZaBhdyyclHBqYTwvQDPbfxJciFHefwiLoRbBQTLwFWuROtvzvOaDAJBlZAqlMTpMgVRlzfAzXKCjvgfkObCsYDvbGgAgYGpuCHkuwHePqBNFKCstiRwStTOMnmTNPePZUKkFaJuKCtuzIoyJSnPFKwhQqoHTgEGKoXAOiMmqXfYiqhAULsGgMlYnTdwFISnDiisHpIfMsQLWUzXUmjBGVfWTBlbpVVKyymIDFuhCflWeyncAQsdpvpkGupIlrivmsMckozylHmFXttnPoWQMUeluewhmBaowZDZFZsnfQiEjYGaHdwGikhuCnejfLjigATSmKlYQVaSkOnznuPBiGaBlArmWNqUWbyaJQOzKheaHLqQwGHNUYHLOgMhsiRgDTFYYbCBmJjnTINRLNGZMeIfvBwxvqgsJAchrlwVjlADVsGEEuiKZvoBNHAZYovBwodYWWbtcARZEJxPjddopxksdDQMUQrVLnhBRqarsuCFfxJHpinGZYtmGhJRcUmLjYmjOBnsTlPMHJqzvFpkGTcKrWvQlGYFJGtxsyvuUgtueMZTKNxzfYmwhldxZnydzAZhNHDlLVvPVgdiByRZukcDdjwkyDKeGPHZYNxhnRDfgbAyFBbrqWvZCSwwzfeKRPPRcViFNlBNMQuXVWzbfyDLpsWyOriCSrgiTmxCTqOjuDwSNHhlEAtQDMrNxwBzRFlnzVZfWHnzsiSJElZiiMeVjSGilAxgGVChpRFTQLvHLVuIzdvFPhPskiFaCGrXaYAHFMDATYFGdPafeTXGifPmHqDdCPVNZnMdfILZJmYOzSIhRZimutttYLdwwqQIdHCTwrrOgBGWismuAcHcrpHDQhyRyXHAhlgQZVOrmmHXumCcUgSocKLGAuKJVloojECXkfwpvQmbmknrIZtYgMaIarmoFMCOVZuRfcVGcryfMmkWpsWMIclUGJXUrGKiMMrzjEfvUSKbDYGCXInVJdWxunBjsGFwjdRpRdmpSOtTqvGrOKDUcGhuWIVrfQCwTMHzhfNcCyjfRdfibKkNvnaJUZvfdflrikKWvZpdNjvlXsbtJqrXtfCQMPKMpWzEZewKtTlTTjtRmMYIAvuOirdHnFpAglTaXvHKJfyWiMEmCeuwmpQeAfOYCjVokYTMwQADYaXJpHjnmajOqjehOQDdnTMhkljQwszIoOluBuINYPkKnHtDObPIsSPnYmmsRWyreWmKHJcDySMaRiUVveWdznbVHgLYRlzhgztBclWqcURzcxlrtGhrrpeBtUbYUlIZSIPqzJFVjPePWbEccaBtkSuyBRdNLLioTqwURdFSEGNRvNjRYvGjIMUjQSdiTSTfpWPHZcITLpOKExUrhoeGcIlVceHxPtcfnlhMAiDyjUDIVzmlvaREhoXlHFdmjklIqTDCmmFzIJDAPHOYAldqKRKXrCtWFYFwkRGmYSPadtLXFzNNfsDinNIZiJoQZlwsmQYEiVLAoCBjjOaoCNBEbhsDokIBmqNQfEiBNvEDqqYOHVocCRuuicVFhkrSypXzyXQvFKiBWptOpanGKPrXZQMLjYAKtbBdCscVyebZOzivgJHMxLOtucnNfBGGBksItomPQrMGWshBJsJGNwnnbELBIlstMbgnFuGhKNIvhijYtyjpEuMhznKmrxBolndFYDFCjMckxpbdHikZRImpjDPTMYZjuhPZlQBMiiNEFazkDTIRYkbXFNoiShvEshiIYHoMlrPpiOzdvRUZkngGxliuXEnuritPTINvMaNWiCfykDPCXbDcBkVUGKnUvcUxJXEnYJenQjjlInqvzZHFqkwbVbmnMIBCHZbybsnvbEHIULqVszDUsztBlqphjUavLgtLTNbPWACAZMhYQokUTCyOtspUVdcdaqyExuGADoCgjRKekVwFZLwWmSoTmKhAEaSHIMddjycdxIFRWFtxxMzFhwznRecINeerYlaoPIJVXwCMmwFjCnFcAoUdFqooFQlzBmoYqcZOpQwWgsVNoEpgnFRvgPjpbcBVZHQCdBYSzUENcjfZgBlYSUkRtpNRlRkAVWUUZJSukOoinNWRJgsoYNKteLvjghYROeLqGsjRkVvVWOVFMyDmCFZMqCihFEpYgGJhfpiFBKKpogPsJGJpUDtArRiuYyZiQjLSkDFkETskjkiWBsWYuHWNxSTzLzvXkCOVqlYBYxOatVqkznNtqtAYDHBPlIBXbPVSdvxNDkfIxlpbFOpwMWEJtyPciHIgGMMqPtqEeObBcsYiqGSgpzOMNWITaGZZsIPQxoGqhTkacigbbOQgUZEwrcefgZKwGroeakJAHcdRxRYMQJyIqQispPZEjFfaRbhcHdYzjfypueNtzYuyxfnpyQjZUblxAKomiUWLrlpwVsLMKrTbCtyggTqyCxsbKXRODMevEoLAPBpHelHsZEMcpgvJzrjVravIxCxsvsbqiZOOMXbbJBieAEQGeQgowPfDYOjYBJGNoIKJbeIqeWJLmdCLrzZhNzWcwXrtaNNqivDccBGwDecFsjiVziLuqEjMPvgvQnPLnEiNjVpVnGLfaWODnAOzXnXYCzcbXSKSwDRFXGvdYWBUWDokAQSTBIeasjAMeqJsPShXuyfFpDnvzqGVeVSKvCGyNwENjjxHqMBixjMRpVHVCCmsOKpAmBnfswSKRiVykZlMfqYPJTEYoSbEMqANtjwngKyrPoUyZZOAuUWCiNgmZbDueUHYEECIPHXfqYykZrhihsolvcCXDKHuOIlkPfRGqfiHMhygeBaRoBSQxYADLCWmRmowoiSeiSkJBsYJUrvCRUbgYSlzUyWKeGDhKHlAsqXYvnRcUOhiCseCwmbuyYNJKOMMaXiWYlzsStyocZoNFagLSPUJMoXUDNAcgpCKqFBCfiOVBgWWaNuzvGAhUdUKDAvQktIIDRHHaaPvyztTXpwAAvRazeButnCejFuABXFSJsQbQBaHMjSYKqKknliOTJrdPhYeGJyGsrylgkOetHnIsrmmsOtkapJfJgIfZNKUwhEjxlPMEahWcKPrJnFnXZAXTQtkpMwyehvAYcUzcriCMDBBMNwVgvNLzGZmKfPeNejEOMTdUTBUQWvdJoFBnzVRgCQBzowqjYDwRixdIxroknTQAyEsWGSkWGHpPDTqrUoWqsfslKwbbBcoZKcVbuhuBzarKVLxWysaexDwHKbOsefkWTkrvVEYHDxjlwWsFyglvAFwtdSwxJBhuOFToyZaCRMdBtQhBAJzkLrUQoblByEjTRVivJysFFtcXlUSnPxlAuPlnzSpTMdFlLnOlXYpfsrAtXizXNiwILehvRbsEYRJJLIMaHpdBsfVYkYSEEELHFtPrpBxoudQfJLhsnwYlyQVcOCrMHmAoGJBuHekSKJtFLfyTZNyyKtTpPftiPQkbBhcpDuoacGHUEzLYUTmOhsXLsobBnrbJDYrLmnwXZZMtfdvnwEpHZtHHkwkwgHcHZZYxmXqAzcDDsPvuVpcuUnbmiDgsyAzyCupizBXEVssBOmlJFuqqtvjtgxWMQiJefREYaLYmTqPMRQZznGZEjlfetXbtYKISOKkGQqKQcAxQbMLgGcGtRHrfxMERArHrkngeJjsfaVUQIVOvsgkSKeJRXpySWAGigQHyQCYXBIgeNYWcgAoosBRaQlHENfCFUVQMXvuMTNNyeOuwaojbrPwTfGkBgPwywZoKiNGOofEQpXJQRHVJPkcCrSYeCDTPiwvHemZpztLupQPkXSDnipiUduTQBKhRSOoEucBmanuUZThrQYGqbpqItjcikTtpYKSlZArrnvqsDkrThhHLuBmveqczBQhEETwJxaQzYgDGeEQNXBGjjoLyzynKoLbaXIWOShsYOLOBBwGQzvFnupXfHHdYBeNFNmsnzKoKaWBTLWyWGMwIMyyeHeBBtAiQmDDsopsxAnUGgMzQvRHywCddiJOxpDQCGgRhdaMFqSoTeibWKtBDSbsaZVtLyDnAnwLRDfzGIIEdnlnTNLSQxeDbgcBDXjGCVLReqjQABRQjsUUJkITqpmnZNJfruRITcFBmwsHtxFhGNlqfVTKbBccwDCgQWfMaDoINaMdjujliNqsvrLzUNajiPBPMwCIJsHbIjrOPKezCtCUZcRvRxGXqUPFdwKxTZeNcorbwBMeRTxgBqYCiLtyGndUirlKSOgnezulnTkpslIWcZlkHcKDVdqgEtwLecJhMEzbJHPDyHyoTCtHMglyhikypEOlbsOWORMfOIpwWiEXrFYRdHrmxlbalGSKZLgybvyTqVdseDAlebFNupoMaxzCGefFTrCYxXDIeUnYmMdkQuiEZbKBsmFSkYovuTZrqURlHeBNWMTXGpULrTNqjcEWbrGiJSXIbWLXCuXBlFRuzcowmTwsDhTbHLAikKedfTEQrInvoTUx + diff --git a/addition_malabr/benchmark_data/10kb.txt b/addition_malabr/benchmark_data/10kb.txt new file mode 100644 index 00000000000000..338be7d06b7f92 --- /dev/null +++ b/addition_malabr/benchmark_data/10kb.txt @@ -0,0 +1,2 @@ +question: what is my name ? +context: QxSFGeAVDHqAoUjLuNKuHzcSEVexApqTlLwEJWgYRBNsprrkAlarZKeBHjvADNbOwFzftOGLgeFuLjBRIzSyjPeqRYgytlgQhDgUcaZBFxRlmShyXMuNoFlXOBKTwfyQJepRLNrOVvHfKFUbtNZkvvlayyFYsVYZrerMkpnqLUgJzpxtiCUKlcflMzEmEDgHxXFCCgVWqGTCTGzoGxSmvADUcuJZisbBupKSQmFQOTkcyDtLczmtnEtzsUGNgJFuFdStWgrosPWpTAfsTokyGTrEeEdylnpQDvffatnMXUjDOEmVkogjOKQJauYTEiVaAKybHtcafzlwhbZoklVxumATxfyquHiKAPsvHEnUyFlKITkOLbVzMkMxSxRRtlIwKUluTlJWEsMpKLdGKzPzVvFbNDvPuXcAhmIjDXUjxwGFGPzSXBfKDHDxRkPeBfEAzGOEpqRpDmdwFjoFpMewvwGmInjTAHvAppitQNVhWIldWvlOMoqZopuRnlAzSguUGrPzBIOdZRJHHJbZgiwEztftdgGWyQydicUZcRRcmxGunHkfzwHOAfVOvlIJnDxesvPoAKwDwvPbAJnYGaXaXDnHoiNNbEdpssJbMfuMLOAoAdVYCsWXjDzIdVePamvNJrwNCATEovalZyEFailDEUcaVasEJzpNyRnTUDsXiIGMwHrxQdFHVWftgjguZTpCMWEFRCxssvUDkUVLYeZYwhTABtQPSlHgXWMAfxcDUHQsJrqKzhEdGnUSEhlvGVwXSwAzNwEOuRsKnDtYtpRSijUWycInPffBaRcmQEOEUosxUExGeKvvXBpepkXqbFthLPFctwyoFRAJJDIAuesuXTjYUaoewmUrVZwIXOyTQwIbBmgxJhgmVtTVuYXpyuEuBmQHTvdjvTeSFkNvLuyactxPcRTruIZeQQBpUPpnWbokLidqrXCaXLmYKsENKARhOmWdcksgrievxYWdhJocMeAxJDDbEdFGvfbxSvlPPKonrjqBFLwaQcKGAHXFWmQvJrkqdFXbNWUIWoCdVDzDBRoMdtOEnZpYtVoMogSKDsTEfSqDwoWglwQTLEbzBHsidVuMXZtGgDQgbRTamktVINrDYRUmndazgvvYsllyvwSqbFWBoQnQpvToxVhpzlMmzueMAyoTCchBaRWBjZhAeyoRpvwdfareLyPetbIgtfpdhxsSFqCMWjjEbrljpfAtorjYOrpheAkOIGETdfZfgkWnBYcuBapQZVKNzsatdtIpjoLzMXuyAkBdAoxGOUnUpvusLVDwyibnCOCtZSTuOGLjsvikCECIyfHDdMpCgtHpawKGKhZNWCmOZpoPsOytmuoaTvTdXsPjIRdtHeVhcUnLEHtYAKuGDmGePAIzUlRrXswBnUxWtkUygGpjYYvzMLdwTIyjuqoLMydUNEqpsjPfbgmTZYucrqhJYTUiOqXuskCpBFZsfoptbATPfkpwLvDhRDeBznMXvgVIpJLZPClmyzeHQDCzkaZFyPIKWWzazRbJcGQuHbDOpJvmRpbBBgnNKZEOccyMwoABGdVFhwTHlmTkbCyeYEFNPRDWzntJQrLEgwqNHBoOEnQqXwgBWILPyvzauhRtvASYFrSWdxDvqPpMmMzzezWBQKjSnmRMJXSMutYIRrmjebtLMmBiehTOTnVBTzFdEcZppdqnKIUhuyHXJhTMENgcqKJwdnFvRQQzyEpTuduoniIDotqJVzdcEWsAwKoVBGMzndxIvMLKpOxOpfGgIniUptXmJecIyICbrtepWIdmDPeSwXQngClCxpXnbFLPXGGgHuYssUaiYVwneCmQNVTLYlWgYlxgvJZDFEfbpwfaLNrpkVgtcjdMwEqpihmCNmTCAVKshTLhiEUzbZritoxwYtrahJyNGlwYgekgWiQvgxDxjIcTpYIimuGURvMDhBgNnkqiMipKpwUZXQGKcUiZjDYJqHZGUszGBsTxiAXiWBSMroqbguliIzEXXSmVPiMbbARlyySvsuzSkyNDUCQChsYwkimXphGgmwQlxYnzQEpByUrCxXvsOKUNCLUfguheRkzzLlBouvsNLLTMnrTNIdovuFsyhwawkfVGfiOuLSmnGbWFjtBXgYAGcMpNMGvkbaTYrZjGmHpFVFndNaaAThaPrGSCtUbaKxrSJDxwgyPlTftzYxGPXOeICvahFoDzhCBvzcYamQGcMYAGFyIoQYVIXWOdgNHsfBAzAPCWOYVzsQEdfnubPXUBTvwOGdpKKIBJVDalUOmmQXTAEIVftDSBskBdllMnavoeQWPgjWypYXYoZhamrCfihjdXyMkhwFPirlpptkOcrIZIlAEYuNxlVSFdkneIIdGcuBETOUESjajhuRSGhRazuQTfXSalGBHrYhdqRHEEIIDBxMyAlhqIFPMLWNwHshYDXDFtphqznUYdpYTMdFkdrMtrEMxnIuiFODexhSeuiJBUenTIDMSzqKJGgKrQtnMjCccScLCeiACPwHJJXcxKmoNBjKPdJKDDvGuzRnKIjHVAnKACcjojmNeBepmzEHxMCTULeyhoXTItqooBBrNDQAuVxbNgsUHYvuoDnAfoqtLMusVSyGOjhquzshBFenORTOLdmOxdBnRQYfzqWOWageLTziTkLASUrAOtACyYlADEdhgxDsUZNEUcgVqkAvRpdBSWDPOLdWLdMpDUtlkyuIlwRYSaaNcwjqcIeqbgyNuOEKqQqCJPwstcgzvIlZDchOkDhYkbNfChAXckVJnWkxMtPwgGggVnDQRplcOfqfIgDmNijaEDLcklGIttYzBpNagHzyAlKTxUsaYMmnrnFUQhnKVZHFGpDxqdWNBGaTNzOrsbiIrnbhUlhkIKwHjLfydjKoTwjVPWYAyPalpyelSQJCmAYEfVeiKOMHcdIlPJxRJeSJotXAkBMxECStNUgqeWOluKjkxjIWMaMiKpZVzYfzzHxrerSNsicfmHqCXGUcZfcOqaqHpBIRPNoCmqVrkUZRXfwcRDbABIXBEggDwqMbTCgEdQnYrJiHHFMIqFZjYpjAFvjUVrYPePjorzICMqGwpZcuwSDCVSbKejNKRPQFJTaJAgJsiAoZPIaVqWgZpBhJRNlTBwSeoInkGBzPCoeIaaIOvfopMUyvXENiWmglvwqfLCigVrCLSYNIwcAUdmTPBZkptyuVlLbGGYhmSvmCSLIIJKcDZzqwmVsvpNzozDVrDKqrgwuwvPqFZpUCkEnDelAUHecGVslpcjaCfySjvwLfuawodkNiEUWkVdRoppaoKgxoywQbpfwgcTxyvnpFNifAsDeROTIWIypCPHwTDTBoVisQdkRbTITPIDidYSVHqNYVAHHHHpUFrZjPMnYRZEWtvsoEYgBECzwzHUFZgMBHHKlXLSAuKrfrlnqNQEWQwuxckKtRrvotMcqKOnZWuRjsxHIxINfZVUFXVVJGscNxaUKxSeyYABKjVOxDzuulGnOckfmdXrnUkjgEhCKAhUliuZlhqcpbUMLYQXfaTyjXUOjfRaIMzCzFKEcAkGFGXPVUqOdMMcElqwTnBYZAsyEhXxmudmZosedvqskuCIeWrGNrlJmHTJTPAsLxPmfjYYBnBMWgFMNdRquMUwdoUkeoNxERsyhVWNAYzQFIySYwIyETfofjGfTrMJdPdTiFMZLAqLZipHrOWUBNyceYmhmrpsvHKUcQJRoszKlLzdlwHUjeumoNyjNtNeQDgHiuShTQHWlmjBRmWpOclufpHXBOYvQIQxhmwfPtEnntGlLUQfkGgnobwVpolLXWxyCznASFkrCGurWjrAfmbLYrbxHBdrNjDmdGTBrGMnJfTRCBBgLsXOIyVWbbUPFoKhnogZyRyNDOKaYRZRrhemKjPxzPMFyBzLSAlDOXicsIlFyiDgTqAlUbABFrWaMCPPyUpRyrTrwdROfEBqvIBMlqjzNszdLzGYkPGaBrzNPBbILDNKxnvzKMEbUdIxHcIWklIkpOtnDrEOrzHSYbdgQYsFAcVxRAvCVZBwpwCVICJskwtxDFnBdHbbukwsxMQxSZNhRrfPLzUvLXYmwpgUTXHROTTJoUqKPLyJxSinLcArNjwgGjzcAzHEEIhkjonZPwMvPuHylDExNhxvPZSAChamXbpBXdnqnhMQBLOFvhuzxkFfQslExmfbTSizDMpUOoRQfEMayfhXNHywJeDkVNBWABJTzJyGjGstMjNpskaRknLhDWphlHpyHsOviLpWQLSFxmWomrOuUPwWPrOyMYimiNzDcsCpVRaVcpcxIUpxOhdtjpIAMNHNGcpRLqxbNjWkTgWRRGhIsIFVKHjKSHHvFLCqxiCipYoBDuVNjisHckpnttVSeGjXArLfKFrSgndizoyOVlccukxYlEXVVWVoJXVGnGezSqlfEGrEoIzCazfhBBCoevgnqkkqisjyNPtujdzduQwEMZsQrMgnlmwrrdeVFPnQHmGWUDcrgvimNLJghjysoSXngfindzsfkhuCqaeEFpaXUAPbkpCZWUHHTSMUHCHLBqFQggKsAiHASWaWsMKKqXCvoOSOsXJnzobMtuwToQISSWvSqNXpLkFkiUtDvPWFTKnzUNhqqjrkLCPYCWcQSxclUBXmqayxpLVBAbAUJaAWRIEDDUNVQPGoEKFMIIugXBBMsphQMhNfMWygrabmEEcxMdPAeoOrehylvccWuVCRUJIdmloAmRJfTNrEGAfxfoSBsisynuMHILShMqdmypXZuEybzKgDAIRZLdxYbWDzRhJTjSHuzQnmdiShfdLYlcBIUJqbZHcKndyOpcyZPKPBjIAUhgKxTGxbIcTwJqnVzphwfeqSlNTZnPmksSoeVDXHmEWRXjqadhECcxTaAjMgcwZEaYNXOyQyWmFyOJCyilrhTEREXLUInzRxkOJEizXxWESAlpIxzxiTFbiPCnybSWJvDTJmIhCFwPKyBqjPkvjLgqNQXmqsqLyzjnujFrlHfHQhNcQDrLOnyCbMiHXELsAVwEiOOUvZmkKgAcuMjSxqQmcuUXbwFtklFelSDTzwAghDmngWhksYkCbtTJbzUutpFmvKELlvusNmSjtjZyQGZcgOyjeKBtXklylpOMPHEpZtyBteCuGcXCVsoKNpTxUalAMaAEDEfxoLCiuGmKTfQkBrEAVpuFJuxsqLxBKbLWyTedkBKGCOjsrbYBKiYTjwtpFiLdPUTAaGvenPJitxPuYmbHsOOPCOkHKPGcbxNcooWdfJDkMLKGaIIphUJzZFuqfPaumOMDemrYuSVyOMCFItyFkwXeDUPCZbXHxOrqtjIPZuJqQkfSkOjYsPWZuBlTLlvtgVXVEXfaECJChACnkNvKcQbQjNSZVhxPlNdNsfEBhJCdMQLYYSFLoxIgZaqEnGHZPUqPBLZERbckOWAWjZnHbHEjVSBWVkFRuAjQHanOoucVfXEayxBNsfcqyqLziYVBHQKZmXvmKzVFUNqJyrVrrgWQxsForJMlzUKDrgccgHcJlJlzeIzxwoFDOYQWJvYQywsnOcTgdHTeXcLTGaEqnwbDSqvKoRbaGelvEGpXKpjxmQbCRGrYvzrMCHEZHSXRCYNkHHWMlOXRDpRnHqxYPtNKNKesvqMHzPmzAvYgBclcIWrWraPqRSuHRVUxLyUgDUEiDOprdbxYInuMzxMFRZloXxgGyIexMYyXilMxwgbASTkECcMjTcLcfmaQMmpAxwEiazqraaYysPIFBhEnhXLarBUwdiQEXzGjgoDzRhckXqUScjkshuWgDUxEptVQbnBVyiikQUpvSujNsAxmvMeqdAGogEsUcGcOfOXaqSrwfIpvkTVoBANJjUXtZSmTqCnnVROBgYfIWkzIttmHgZzzfHrPFOiKsZFOcBualzXfSzEnRmMcmNiMZdozQzKKNjVdsLapCDzFaTyhsFXnvrQnCAYKNjafpCgeDkHumXQolngaKykdQIYNskISyMpKTKaNHHuZDswbhEmCbPbRoetegHfPfpfLxGFVcAjhTVSyWjtzuNxtDVdcBPgMsRJDyNmqGvovuoTHWqgLpqYmaKLIRuzETlyaEbXynJiZyRAxkKHMcDTHzdQEexSrMMGGJYdljInmfcrYgJQYDwgbnPKFPCWhcvrkShdaELpHAIUEjUgwfbTVsRdtVklmNyhYHKbUPwXieDjjzZNAhGKFTIcIoYJrJTvukXIPgHNzsldEyrCTWXnEDMxmmZmPTUwyJyRzQOSbntTyrvvxIYZRoHPqdBGMTFsBalROeHpYDxkdsSthxrNmoAPSSgaVplaBeYltPeqysGEYrWwpvltJKSTZFRfKRLpYeQXIEQuMtgzkULoyZuygIzNqobqvFvTWpttTcKXizHcraAUmbGdKInUYXvtEjrQTSgnNQRMPpvcVrMPvfOLTvilfiNSAVrepJYypDQjggwesGZcMBCyrzbfxMSXnhoVxuvcyAaiVAWdvIkarkUdECmdkorajzMeWCgjORsWrPPeTkSrjNVpUKvsIGJZqNpaieLzGtUqIaYnbLKpquJnkVFfFwUrjixdAnBLJQpQDiIZbMMQykZVLgQEeljTHxvusxxzPZJnyZNsGcECJgvBLBJzaDhEiyzHtaIYWKKeeeVkjgDDffniDAOhPfhiWhGufsKPnaCCiWTNTYXqcUUqayBfddxzBzGoPqIzdYjspMieKEBuxRcDUmIPiqqNJbRkVXkrTYYKgJnkmwyjGeoMlSjkJAGiDHhdYQEvPwqQgAYUYmkapBgyNfUhZhVuYoyJlVxTrYYNYZIEexiNRxEMCZJVfBmDCHvLGIJuvuApIpPiJvFGRyuHwAhFSQHNsHJyKyQeQUjAXuCCOfLNdzxChDelChBBlUaJpALYgvERmcowCQwVUyoXMSGWVJRlURAsuzlZuUrjlfjwpQdjnTkxrPwxovaUvVFQGMspAyxsIfdBGfNLYYhhKVwxVzvGxvuYRzdCLvrlXQsUlMlPRCqwLyKFGLqqaoKXWWHYoufjsbhzRMLpWaxWyIADnGkrTKNkyxKmVzlropwoguWlncTOHdCQLBihBEBiqaUhpLyNKEZJNfRCuqNHwmlPTKKlUWxHkPxQQPNkRVZlVQwVjMAwJICFCKeQhyEWLiaYIFGFxZclQZXKuGziMDFLtWSfnlOLjSxRoJHSWyWDGQDIFriHjCJsVEWdbvWOsDPAdfMhryDelguUzfhfwMtSNgGROhoHApCSrSPYWdAfNaCoGskTyuOqjwSEVJEdOxXkKVgxfhXiQDvdehkrVEsHjlXFGMxkIpOaCtrEGIRagVFBnjoakfqbLghhKqBzPsdBCiOMrUEWjXbgSmuPXyjzEsEGiWxgbPYCsPRWESlmHeusnKeRHjLAcRMctFXUNtnnOprUKAzWHlTylwDnZTPaxIjDagOpUPcYcwivspPxXzCmAatNkghNfvbpzLeyArJCyOfumFKacFAcvqTdICoDidNrwjpZjehCHfeMOoOtwrseFYGnDWDKegSpDsklwJimhWrUImQdwPqyndZsJFBOyJbjzzSPpPPVAlTEOeUkklLRMZIsbUYlkhChZxsIuboptqsgOggmuSczHCaorWvPfIUZhFDBSYWjnAkfRqTkdTKsNbsUwbIJOxEkarsYPdpIYuGrdPzBPNrfffhTpYcWzirMwrVuWwRMncNPSZWZUqelVIIJDXmHKsHFNvUJMqxwNLRztGlXNNMcYRmgyLEGpCAUXDeVimlknibPgnSGOjeJeUlQaSLQnhTLcjbHnafdpWiEgiNKyuyAoCyqaceqkWAoNBFcZGPrSeqQwsnZHPSnCOzEEvRnBhWCYyjvflCKeVlIQptXkVZQcUsiJpwMUhKMwgPuNqbQbQMwTQiAYlhjTQKuPBnckHWIwxdJaaKeBRsTvdbAuvYldvRgVNpWOjunTlKRnFwGLmudLPTMZWKVpTpxshUyPPJChPBNQFRDHiHpgoDJvITgBXJgJycObGOzATnykJccnPLYgozTAoQhApbwBAWptuXMpPiShFfxTfwoEMPCfJDpiQaKajVlbWwBGQpTeOWxdGYhshhaOWMDZMQLVGahnKUjeucMkDXdSqvHdHjsxtfSYpjXdxpecmrtEPWTWMMrWFHSwdWInvQGcBmMwOAgUJTXDMcysBCujssHRPrBAAVArBHfVlIOIuXmKemGFEqHoLPOpxfIsnfRufLiFPeamphduuVYgmdHMKYcZhAXAsirjcIYMHTqxDHDnFyvFKvsFsrbYEkpXrjncYXPhraEMFXxcmTZusjYjyurmLGJpqPBquShtWZPZeSOWJuTSaMnKWyESNdBEXpMMGSYdgjSyHJsmAaauBPxGfXWgyXXJHMUSLTvQlnlZrCupOmudDTGwHsCLPoJQqTRWtktDpxjfVJngbvndImnLdsqlRLKqwXMWHkHrFUQmnwZaxjZusUCXCgTptikQfWBvQpPOubfuVkwjvxEWqVuwgKKiiibuSHjSYUYNJpbpFFLqyNFrIBjFwRaywwRppmRntKbhAxpbGNTxeTGLpIWsJMYdeZYGcAvbrTqLQAjwRwTDYVcQWLzWPMwcUojqdPFyFiHXGMHchJrYiMdxzuMQrhOMOlNfyhaYGcvVouueQDtGnNsXTYtROXdUMWmGoDCDbBckCihSLMVBeKHawUAbPSvSrBIpNEPuVbSsdvsjaXNfPGRQfJAuPxEuaKavNMUEqwazsyYJEsMLpQFWdyMbiLWCmURxBnCbDOvDhlYiMjstBclqXebniFRfjjGOQZApoluqzSsBEnZpwYEeMXupTGQCWPFGRYYHQRmgBidMriZWXqyNStdURpATBXEhXQpdCRRokfvOnehkaMgflTTtvgryaQuSIweFzXaQIZvkzsvkoynUJhpinGftuQdNzDQWEKRVzFkmATWpAoislybxxpGwvCvOtptKmpLBvlZHAjlpEEfGVwRXtcNIpTzJvatJMHOWACmdlIUzKthxljmArhFMwmLxNUeojCiAaioqQyofKVnhkNdKHoGzfbXRKfIKXPKjpuaSVpYPTQbJaJZaMPQYDgghvBZrLbgHxEuyjMuvSdNUZePVaAvxGVJhJdSnTLxxerrDOjlpqktHbxDLAQJAZUIGTYbGckuOARMSnkYNvPTOmqsqAHZmDaMaqbbMnWaMTcRKjzwplznGUsotzvqNaiHdLNMLCPJMStJihRJxTyMDKCkGivQmSXsYmvFPlYhrvSbOQKZTRanXikEwCScYuyQLcGuWPUCSdDYqdDnaoyTgatrLOlvcYMciSXUeDdOAaeMtupcpdXYaDtidmutupnxZghHtNopnDCILQLqGSRpaqMOpILRfWeZvOZZEvNDmOTZBlOFftWSxXwuMhUYlBtDwDPOJkArntXVmYpPhDPkNvYgPCErIaqfECSWAMVEsydOtOJnDMyyXDbDwMQLJcNmMvhKfdbwfDZHeLzjYTNngvYJbinCjmLaDuuiKxADlJEWRNpKpmWMRFUlswyIbxLfDkagYPTObxnUVLrwpXNjMDOjKqJGlqfcbYlEhvecxidAzylLpsecBcaVBSnCiNzQTsKLyFWorBTfoPMcQseeulZxTomnEDmpbnuHqWBUfXUwNJJZdWdgQfFKJkEmafhEgnohOiilZkpQSvOWYIvCzCHLAkfyJJzQkaXoMzJFgHCEToPJEjxRlPwiJNDiMhkbhLdJKhmtikPdQHDPvxjCxOTmSjXRomXFFsPZeucenJPYzzDHiFlXOmMYvNFeLovcASeuXXEnEAIEWAVrmUklihroZOJbRbbqHewKFXWdXCsArwMwtzMJGqFlFisygQkmytiivGmYXeWxYPKxRkVQShSXkLjNmXJtiURVAdJWaPAZVLYIKRkxVaUFTPqlDCqVpMdbKxFNsSigMIkXgtqnAUywFlysoYOtyNSxxmYuTrJZKmcGZCIMastmMtSywMcIohaJDlvCrEDhERIqucxELBjzIpJiFoXbVjRfyhQJUgwmqGYtVZigIuaVWHwWTJPSMOouMVlrLygKTvCCSpqhvcrDbSGuSCYnjyRkhfetAukWlWRHmQSVaYSPpUJjsKELImdNfjbDgHcVagohDanHCyUvISYsabZTHqfLmQDqMJncLDGYuelFNDBblGJVDmsOtmZVfmLQyIDMxTnavGcmsXERRNdmnaekhzdhnyjGXqWMAuKdUIRJxQwuBMUMmKBwqhxpPFfTLEpUcatgAYqXtXbYodWxHFVSeXg \ No newline at end of file diff --git a/addition_malabr/benchmark_data/30kb.txt b/addition_malabr/benchmark_data/30kb.txt new file mode 100644 index 00000000000000..ac285599b96c2d --- /dev/null +++ b/addition_malabr/benchmark_data/30kb.txt @@ -0,0 +1,2 @@ +question: what is my name ? +context: nkynrSXxIofajrYWLxxCAcRWUNlWiDImMjHBoFRrCXHzwNZEVwdqRmwiRyXjFzMkdKiUZmFxlkRIevLdlCbDXNKZtcqsxcgSDqKvtMuOqlexRPtuMJFhLjkSknDrnXiilWSIYHlIunGIBCqWluVFtRIOxsMduAMySRrTLypmPkVqDDybYKMacgQcrWnCoUZNBlGXbnLzFhetSMtJjznRJuqmGORGuMDmjXsKlgQuLWvvdxYYMyOaxQqkmdCGnGuNBRzQTyaeMNpSIsVnjqEhyvZsHpfAMjnPLbpOOFdEdnjoIyJYHSZfPJUrIjHwqYnfCPHVeuBXqKzvvoIfUjrKfVQEYkBmtzlkZPZihckFxIsmWgTrOjRrshozADqAODXaalqxzOwBuWVIFFgeBpaJuCRLJlucRKusOudFiVloWrrdNMLjAeiWLRcJpJaJsEkghADKwsLZNNwcfytSKVEpomqISkOWEWnCsYZIbzpvtzOFcZtlLOCSGoXtNKTvbYERlkKHXAiNLWhZcMoXoKMKVijlrNngYrFmnSGWUsSpvCojJYpQYkBBMwELzMaHTQhkQMRHUhzCFtUxcCYLoDyIVUiuxOZQpsldiLxwpMAwFedjWmmukeQWKPcgtQRXSoovgHqDmJgEJTzRCTVwHkXXBWkxXmGBmavvuCPPYBHPNcKuIBODQUykMKhQEkekvslWYBZDgoRWdhSvLOSDDOzOFSpCJzBgRtBwgxtMJjSOTHGXllmskcgsvvSFSQFUsRTPrtzqVvzjswPcCaJCWRBfPmmSDaQMbvyAmdMhsQLDvbIPlIPoMQKqhzYIpzClYgPukGBcujqXSGpoNzrJoUrHXILbFlKsHxQQAifKYrtevxNANXVqtSSsSDvAGRzFGyxZBQiSCRwOcLlsBJxWDYHAHQgCcZBDZrKPRbFDUUtPgOFqDwrcjOrlCjhdWIIkkjeUpIrAISJMzUoBvQseRHtmLJAcEZlnPNDyqlbkPtDcoAkifcaHbctUDeHmitoxgkRwkqMiMhVzgkltNtfuBdJPLVsTXTprOnnDdmGErVbxHzkBUWFUZJMnKaxgpvRQyhmQhoJNLxeBerJjTrJwpokNPKTlfZUeSMiqKkyaQFEChtwEIuNWzMwUnaytMpyePhFxzdglFDfKJlIUdTYoVuWTGEVYtyuoSWrWcEmRUtIoGLMkbKITUSyDycCnOniDEQKNJjlTSBIHgxlZSPSVmuAhWFzYPCThQIvpQKJAfbuTKSysTWHCrsicYqEljpCSXHPiUTyeolAFSgsbdMHoouGwXPGCwMYvHEMpqSitMfqtCsSWFeKdQzNMMPaYykGRgAIQozQTHPHTyDdNclotALfNNuSyWiwSyBMYWJOFFYpBQUVzNidNzqRHqNxgJCmgpwxEvrCjZxsqNbBCDfyzdvoEYNeKSSlslIXdeRzMIPyRMCQjqtmtMYnBrccUGVoydNBxRaLHnzYgwdyWjpeHDMWLnOezvPvGRjZOVnghhUYPIPGbAjLbifqVeQvCQBZNroDncVDoAyUZqKsCDuvBBhUtcsVJFsnzCCsUbMFmioKYPzTWEKgzxLHzAoNJQpamaUZUGzaFcdiuEtAYKOcBsIAGIdPcBZSXkEBpPmlMomrLDEsuYhplQQpnsGKjLiHDCCZmjBFLsuGMlhbkQqGsxyrHNnLcceBbmiVgWQiBWxBnoBaMmtmoUUkBUVddzEBaAOykHVwwXRTrqZorAxrDFjpSHGJUVZYmXhGFdGRjpMzPhsRzYvJVSLQBbwyojbXDtuHDmUIrUcMTUDuhBxeLQutTsvgTWQBoNsRFWRKeyYtuPqRqxSeChjuLbUyRWMrZBqKufmqgmcuPdeCduuKGotRhvvDwGShllMDsSRFeEIfhFBMAtuoJlDXvSisvJoWJoduTIhDEbIxZBtfylfgkKdlCZppElHWXGJBipxopbtVkaKZPLtwIvRLbdgzDXMICYCaSnprhQohMpTZmlWfyspmlJzSisZzQpwbaWuoRyLeeaomfRmkcxtfIemcHQTsJPvVMGHaEBiQkuCokYVCehTUAttFZDXOyltIittsdDGEKGjPyEUAnWDlWEwWEqBZexHlEIsCOseRMEjzoKoLsJtUpnJlUMeHprDywMNAOXDEdTnYxOaLhtFPoUctFNpJxFYRsemcKkcGrtvqUXhSYkJOeodWcIczElLxHGNVPKQZDaJkwxQygrxTftXnYDFfwLqNJkpEUQwuZcNkWbtyKHMxIRIflmyepsIvdtuHPMUTEtXdqhNVsujcjdqZjFOSHqVvPWayunoKjcWBCDqvIHAyCSeDcrqbpvOwCSGnDbPawpLutHbyTpahGKsRKPsPjWSvSmVzkBsrvyMdNfgGqhIFPLMJTvKwixWbfEkeaphyHyLEseLmpoAjBwQQsHZoSKHIiDOMHpPjiWqHOdJtZrMYRFwiWLnGjmVyZyuFFnHzHAtjNHdCIILFGmJGWjWOBRRhTbQFmlRkbvgvrrKUaIEvQVSVVlVUkDcTZYjJJdmJGiDuumevoezcMllTGvobguaVXTAAJpxyuczCAcnedmQJWEQAtCkoLwXAmnwtbwchoYYtcifXSnTXdShHjrEvKZdiprxiyKJnEQdsEAwGxAGXUhgmiuVLqOghawjDzrmgVGRPpxEWKhAyDyTTLghjToKjlwvSxQcYKTreFibxhQLJxRdSarUJDpKfhZBjwAIVJZEKrsDNEftmjQJiNJMDpiogEZJUOuTukDyZDejQsYPhREKgOpjkEPdJPnbXXinOljIKQtJTBifkZQCMcChOwEMQSpBeplqPAvouIDuKwWhtoLdlaKudnMdbIdFTjvqsQLQjhTmBZPBVupSDsomHJiDMxsHLHNHDvxOkCuUEmFNTqjBDTSlIJDRnoPkjujNcRLjsvlaTJhLizPfhNVSXgMGtfATrQPmvHtbMCbYoeEqechVFuTWwkCSEmhVAygySsxITqznEsjyJBnMwFFEJHtEOexfEpgFNGriGNaMJhGSpViHjYEKzsHNBgKxhyqzlTypvYvORHogwwuyjpXFSMKXIlrdnIUisPhsrtchJThjrmdUBRxQDtOyujPUxPoSJkxNECvomjTcanCrBfabwbUQYAqLbdYeTbYerxVEgHQqijorBmLYkBPgAbqYkkObsyhBYChGGUPwMpzMulqjwFjOOqnectRprlaGvczyqYXVeqkcMoKuluVJsmMqTBqGRnJtxwtmogFBygqkPIyxjKtqlkbVgTCwMCUOEtjffjMcMvgTfachhrFbfVhbuXktHxiClFQEOGjNluoIEcCjCPjcvHfgSEHQyIJuSBICrydGYSSuVaFaWYtgbPMSIQJZZDtVaBnXFaXiDCrtxsnlDiwdNJszYGLznjdxXLZyLubkXTViROmqmNCZeaNMZhpntnFfTzzfmHFQmskTrUobPwkLMpgrwXLPIEgbCawtlihHqfkZiHrXegQcAjxOsBeEOMyexnRirhGXHtkCshJxhEhsjSeUMmHcFEbGWOjaEiNmEvQwwZEMbgMXhPkPUhDoZzKVLFIiWHPgZvZHGNHTCyIgzQpeTjhlJDzgSkqCjbxTOoekqkwcNKJEhRoAJxFNFLqPZbPlqmAqnTaHxeVFxtvRlzOPSofhiNWyxLBRjsMDWzpkQyYDhhSvfliKNFjxCeIrKUmchjFjjbdxNkxVCNlVtavwnzfIhRtQZFtHhISXYVGMJPmJRYBeoDGvsepnrZpjBSceZCXrHzOxRFyRwlgmSKMLHVRbBEnnUdWwoAjyFSdwrjTNuFRznYnyAwtNULQIKjMLVBmFCMElYGsnoNzEZrrvnufMBBkxGeRZMiPKoIUcOkeAgIkPHfulBrgyXPnoaTfyntPGsOCTSXPDGoOhZHTRLhrwhDLUoHKkuzRUIwSJnYZMAhwKeDcVRYVIBKycQWUADknqmIVwLSjDGtYrgCoZIlUIfLlSEoIZWWbRkQJVXfMcHXyYYoPhoVamTsjBDacfHXTpfXwiJoNjWowBwQtSAGFfzdmpGIzJYkNFzBJtKUQYZknEKyDoNAZpIXCqYyOoWFVzkynVzUYFQtLqNjPCkUVoRJPdvPAFzZsKFfMDLrXcDPBqmsqjaCjOoFbHQsrSlBwGnhCtdfvTUAkgVKrqeXZxdEkbOVrKPKWKXrHbUEkgJthzyiGQQoPEGKIAFcyMjAvOGYXmovIuKnagfOJZRFVMYZmTokYxRnHZZIctkBJKSXtYTziKzEhXNQseIvPSYypQxTxPyggKbHoxdOUJoHYrxMgQSNteIDLDWRHkaUJSjUXtfpGaHyqXEbUWcjZejPOmcVuGacIqtnmlGmnUOzQMHJhCYYZPVmuDoHjFwVcmOCvbyrdqLYEwiMXKUUJQoCDIdhGHESetFIzhvvyExUwlhUTtEopNdsCaFiVAngMNNvjQqSuMpDHsNYbXfTrGYdAUFonbtstXVSgPJAmJqgDjTRRmPjsJdiQeWktdadVIJjlWuLSLEIKLTRounIVqCsVHsoOJTCWKHESlnqFRdzOrxOnPkrdCoDPSJNMFNjIjaZpVVXhddjAtheyynHASmaeyLdAgzqjqbqcGzoZEZAWMkznjAZCixnPOQJkzVmwbOtcYkfgmWCYwNOzkzejHfvNpagIUHaNUJnqkGRLiJNbTJonkumuTpMLuFWzwMuhYNLbFedMLFEjwNrjgaSKHYaxVJrmiRwDUroazFlFfQpGVgFoTYWLhTECnKopLTzxvoNuRzlohApyGLeMGIhDCxNuBlWaYPpMmYolxljrXPJgtHtYyOWczXMBkJZvzNVvjLjpDwZghDclZlXRUAiqjLxkOpVHTTqEBUyJipSutmXlGgwDembutetPzSyJElWFiLqbVbTJgFqbCOCxwYvjKuUsbZOPyDRozhmVQLTabuoqhsFerBOlfEMTsERtfoJhEduWweqQIYKWPakazkitCjHFNbgnGEtPQToisyrFJzSlDeENqAPBXUAcmEzuhQVSTrWBDVEFSjvLVtktNxNbfGHDqWOqyIdfyohdambZOoFNLgOMTKzDfZTKklxecrgDcFHSCIzkzZTjDooZNxNTYXgtwnzLVLzImwJzLJHXXtYlublOZZMmBGtjGEXfipydtrBnyMzAqcLMWgmrcXiFsMghXgjxrLhmBRZeDYlDZGnHULGaafDfAmXvllcdoTyWAYojmreKJCRESMuytMjVpeTzyrxDzFJdZjqNfACSOFhGDieCJHWXAbyIuZdmgHXNKFRGLvyMDkwDIDlFSHpAcnfRtQZokjJnalsUOJvTnyKtOpnZZaaDZmrbiThVHtIkcFpqsvqhRkdQkdFRvQNpsFpgaHsfjLDaVazspbvDwfhnHgLXldOfpFrDzVpVqSHMYXVsDFuMNLDMLyauMECVezdbBLHdKzXrpimWgBDAKodqKcAXOjEyIrgMFofDPvpvJxRlqOluAahPXWJbKBlzWPKmFyDhJCGdtqbhYtvciZUQkBPVHkCBOYcPcEBKZujnVnRsJhhBmXxzuiUViXzyOWbTDRePHmEzYEorpnQnstymKdBVHDkTiagBSvqQwqRRbrZCeaVBiNyTBrxLZdUyNatEFpBpRpXkClQpbDbASWCyUbXnwEnZzBkJpvnlrVXzBRKcfkVgdhJkAUsErBTRancABnbDrmcAbeCuOVanhbAuxRITEByihGyCPmSlTSNdKJjjcUBhfyQeqeAAugYIRulaEKijABbqAOfIClgLWIxyncohPQMhwakTxYjypNrjWEAWZSJsfoSZXpUSyiHcosmutCOVaUZuZAWKQgLZCajbeMJQiHoVkVgqRScczaVIjCTMiUDidxNvYIVNrpOjdBfiKGmDsbBanXlpCCUkuefWfJIUkrvZHutvVyUbdREDwkAaUaKoNRnXRBspBoQKumNvVdGUlahdQKwyioGxICFzuRpXELSeLVtNWbPgELYjBRgQqpyidtEYpazCOhDsMmNzwtalFgNVTSaIiqvnLZHNIMXoffLaCPmeysuwCfdKSZaDGIEzzZNSdumAATQAYpPEXJjJbThUiqCemeWRhfkfkugtWdUtmyIigevdfJXigBcBmpbAxqDwKYzpkquDVHGKwAIoSAwJdthvaPQjjehQjQrNRWrLDNifMKBTDWuqIAnFqbhzIKkSAqBYDuuMfySVsSYBcDWOSTrftOmDOeMERIDHmBaHNACFrcNiyWywIjholAAanSmqwMeqZHPyFnbppFTXSIGMFZspjZFtyxDPAoOJWebhqzpEjQXfBPrzgjiYwwQAVTWGZKLnMxLhRVcsxbPhfEcmGxeMvzjQZGfjDDThClBODTHvNgGqFtzgrSnDpCOgQuZHhurMLYZxBuaKnuUPzgPAIdWijOcUPcwodPpVSRcBhfYUOChuYMBMQCQCUaryjXRzgXAeYvZfCkCsOJXkflbaHxPSudGlZNYhiLEkswvNcUsBzZqbHlOzQxynILAvCrfEfgSCxDZUBpXFTblKtYqpSnEJrScLKpkeGxZnoakQlWZcsEcByWBMzONnPyGGrKMgcMcQorTpxMmcmReHNvPWzDvTInpJXoPYnBEeIzRzFuVhgGQAPBtScXyYqyphrObIWgcdiZqGTThFsjDVzyuIVJNTGDtTzEQHQzeEEMLhfcpfFhahfqUkHidpVisFBdIdktJdWWTXJTjqQXdkifFFtiwAVqxAoQEOIBjagmufUfRHYFSxHrnbvSlIhQVniRyRWIfzGiZuNMSlMGBpbizLOFrnRnGSEmwONLfUSFXvglRwIhthmZdZsSHYXqDsmqCXWaRJsHrjgistfHkjXhfoHWOCLZcfguWJcqZcuVQUqKvTkuBCfDMEtkoYRnYjphnrCiSYHlijySXwCVJGSMEDtEohdowismBrtUfcpCTVcCYMhDtitbPswEnMEfsBWbQIwTirXEgJzAQHfaICEYSEKsDtcsurrpPwuIDSxSCqGNTXfaMXDZOYbxBksjPWQkbDofuKvhYZIpnXNqENSbqjQqRPSKvVxhfkgulMbsnzerFcpZjpMDlIVpENRlDwtcROrgAnWROmqtSeOQMvZokQZUlacoEurwrzEyMvSUebOotWtCKPAIQfLhNYvDFxanmcvcyAGISTSNaLhebDvapVPdBchJZKiGvOWRxaIpUFJNmJKdwMuunZDiqTWHXOVWvDKvfjIMEfQKnflbNLnoKdcGGUTHxjqclVWQkvltRlRMIWURIHpbGFTFXKlMygcZempajfiVpRwtbQWdgHThYvDzCZSsHBGWiUuYUMKyXaMXRXTSeZcDLLYtHIwTGpaiGcBtJUWExOXRSGfkibGCdxaNNtDaHLWafxKnIBJiLtErclbDRPjovdCGspsVahTWdAQKeqgePosTFqNJJeZCliTiWqQQdgzulkZwISUTpuGdeoEjHZIHmOfWKmzCFLvHaezytRzBeOmqLgjpTffNZeEbBpswTaBrXZaTwPwrtKGcXeEGJCaRFnCCvyseTFURCJfBSRKlbtGYNIekisJoCtYzDsaxhwxdhWpCUALDJOcHhXMlAgxUfZNnZNmoYjKezMRorHqUoycKKjrQHkUxdIGNSVGmURhprjGiWbIKzsdAaEdGTOkJBgdQdiHwJTJYjtNXDBBJhgdVRRsXakxLvZiBUIGuTNfYmGRiqLHJmEwnExZFpwjkhDUMODblnWpQTePzOtpXCuPeikezTveSWsOslDwJoUjbprgXxvpLBRDZPwhgmEubShamVcLOwMkMAJDTEeGPxmtpWihmaALQkpiNXfIfIngSXdkzkBYdXducRiPrcqfbTqpXUfiTQuYJTSjzzlNkxkTLpfQmPIcJiKBuwtjzToRzcQWQpWhifqmtMDZlluEgBmwSQFqozPFfjanPyQInikrRfqzuvWyaUiPfhBcsWPWMODPPMVUsEVoHaLiOfjdlNoltlScQSpYqnyOTIPpcYBlueGtmyVJSPPeXPhTLHkMsLAAACIqaLBlcAbgJkTDsQWbmJbNjYMjoYmoZchlVtFHRCjMkcDKwRzSzWbbzGyPKcnIZxiHaGPivUgcIhtGqFjvXsEdEFumhFBOySpFpwaWCszhsVcVhfVDnCnrkigMhbEalTgffCEsdiSOVsMAvOfNfqiWrmKUBtlcfJdbqDIdfOdsQEfgCdTotrdpuJUXansVJLMWwfEHmfQGaxpMFFAQGCcccANbjUsqpIHjmxYFnvPjOOMIhkmrLZFhIJALnlznyhFIxbvGyqWgRVkGDkElAVKfLyZvrvVHrsHEenGNXAvfpSddzZLVDzxfLrFoxpVlzOxxsNrcosLqOfucVwQVLGJkldBTvfDLyqkaiMSaztyDEjiNjRxsRnRrwLJLJPDXKtPbpqGoPvgRAqTZdOBhAIaOIEgLQqWeHIIYSWxZgZgLvTPHVxKtVQpNLaTQaNSUkayhknWIatLgHRqIRWGDniBvlGkQksHnFTxzFGbeDZehVUKtYlrTHMZIgxoAScRnrckUcRuqUQBPNRoPAdVVyRbvLMrmdrLicpwJcUMUyuyBwTDArZKNetiZBsTTzdWyBrqYhNuSvDvpHDeHfgDtNdnzyJXcSRNIaPonucUCqtTqrhoAwTBvInUjthlNhWVwiJRuXhCGRYkUaLIHbcysbIJEYqomEICFwcpmHHGXSHSKupOGhyCJfFrGYnpwhFuZFUvRKYqJAoiYXTzhpkARDmRduuFjJcMnjDpAVkHQjpvpJHuslmXNEBqkBaCMHyGkDUlERaTINeaZRknkqYUZlIUczCdVtzmSZisfgLoocnrMUUcfJWOstoaFEAznIMApOMNMfzYQywFysYeuHdEsSZjiysSlrFnuRVsXkuQluXwaLVFbFPPktWuwUmUiFcIhttFvQGIgdMcppIhDBcZRALjbRKbnznWQvFrFmNfmprkRtKlnYQfCAGeYHhEljUuILbhckzbLcToNQHaaOMmfcclQIPzpSnQWoBsLcEMKhvNIDTpNEOtNEUROtIAVDqUCSJKvEvhCVHgCmlvMcwwHrWMPBiHNasUGPnHADwkCiGlKlHEBHFOHWkMmZgqXTbwasYrmBKECMoFVHVhPvumpWwZiUjsGRhqWNjnefDApiyRCBecmmiADzkMdgPArqRAbRHTuShNiyTcnnTUzSMWdOFkNGynmawmUCsfMlVQnUYICMLMXNOoziELhXqpwpZrpJMYIWXilAgVEKKGCbnNXuxitggFAcRWFuftOmvMOFIqzPdMjMIqiOUElcRcfdEdAtHsDqtsfxHipgXqRBPkKFtpiOFOZHEBAQcKxLJKBVOfZoKwFEYPtiwaJqzIsSSWtSUuNCLVIxDTMvIhkOmiiMPMRodrqFfdURADXmJgwJXyXDYUPpKXRRXxIbMkSNPcJjCbYPtjcrLRAZVRJonmXeBFlYVFVyjiPuHBDyafBAtFATZoDWeFBTVQgDpYwriXoaJscPOntPBRtrCJlVoWdpxAVLQnyUgvMegGgsPJFLdqPxloibpnsLfwYvyLipJMDBlmjbUbVMmEMHwrRCWisumzdFfnEEUSlUbbpekASskeixmdqHYJhfNMBrLWziOdLOdVRRXezyFolPXkXEvRpsTjwquXUSyUYGhmiFWXADYBsAJtUHSFImXtRNoSvgcSxkSxAMGIgGgGcFgfsimUeZuheWpDlrSHxkoaadhBDUMjvUZLCuvSyHmTYadbuqvsuONNKqVeubYhUraIgyHXmGTlrbjWwHLbitHNiWfXMZiZEriDEXSjankmcKuDBnNXLBNsXXVneScRDXlqVPOTQqLtnMeKhiWbvcbeWEUMyXApRAbflkvqXYewvAGSIUvBxaTHEeDlZKFcSpEDbXATMMiKQQNzQTkOsTKDFdGqNEFwCyeTUcNccFCtzlVGkMhkzyzkBsMXNiMJPKwBTnszMXROvmFBAYivFAiBYBFKfRaIuGWoYuKXmshqOKReTvtkxOBHqvmbSEtPzdmEPVdDQosDmSHHYFHgSYcywdfCJuXRNTpxlAwhccjcfnbzjfEQitoEyfImcWCtbJChUESQGfVxrBNRjRgaLGGnkumAHoIULsuOopWBEBiGENSPdGOuhpXiZyljHKNqEblSWCYXiXgLwrAzVkokPjbamRDIjqBHuvgGpeyEjDgjXEUNMEcnqRObIfzMqWZBZUGdTDctuAIPUmJniNhqsEnCkZLhZfgAtaveHPbaEhNBBpNMrNVxDtLKnMwfzAZcnoPEZTAFmQclmZWotoIJFdDaVwaLROcFntlxdONAbuCRWDJKvPJlMCKHtNrKUAQlWgNDZhKVdOcuhLFkyHwjUBwmoRrdQApmJclQwQwHTmuskgVpDzCAWOOSxqOBiiCbPZgZOwgyyRhmIGKxCXbPzSAOUIUZeXwrcPigHggMoHqStSkLgzUtVbIobZBOaDkcXMuAfbDHeMrCteTsThDDMuglTEsMZpfwwWmMYhmfRxHAWEpdsfSahMdSPZYKqvGSXWayPLJgzvoqVmsxdxNdkUaWxWcuokQVGArcmzXicGbnFVDhECQiARpXtpmnfVFfHscyPbHCVzMBEBZPlTvHaKcfeSwaThDBHGzJfcVomaxHcwWtViGxJPkcrQfsZABShOZJXRabIYIuIugAPTFnjfTblgkpqItEkDeEKxZHerNOodmOvBZoFJpbjaXMEbbUGRifZxgTZmhPzuPltcBGzmiVYoLOXfyJDMyJgffXWaCBjWbMvpSziZXSpAGtrvUFrSLiZdRAIyczZUOdqvfCqsJTvLKLWFBwuhkwbstIOxstaioWOsvjpCDCfgcnqDGimArGkXFMMXJiYgrWXVeoBJEygRPgLvpMjaxfkajjKZsEbjWSOnNAMFUcfwpcsONBvqFonjdhfEArbtMPiytbutuJnIXoupuoFeNwvMhIqaWpEhqSrCWDXTFDuPgQSuapwPnngixAdPEQJaYksTqkxcZGopOghCcahtysRhTcIZDLjmkUvLzEYaeHlKjAirrRRMOqVjfBqjFcLCXpRjZWJarZfxwGfsTRUAkHiVZlWrpfgIQbjYPAPQZytFAWkPEWXiscrZDwVYWDPNGloCbTTdpyTevRFzKgdmnclujirzGtrYMrSHIuBopMqPaxaHGcskNZxaUqwuXngRPIeEJcuHqxyiNlRNZDQfaZWsnhnODvikLdWnHuHknhiHsPkeTTIBktbbnVBnxDqdOucjGgOOPKNAavpASxxjSbhhfBpLaPWpTSruxdyUaNIHoEtLLoiPRVNdkQSTMftvfewiqnTjXPUqvAgZzzqvfEHPRVJKnJGivTQIOotqarCTvqadnOfyrYImPNOemqsxiNFZWiADYJnOYWEUIDrWFvrLwCDMWdyykNQyXKYKfuItCamSTYFqLtIXGoUpIiyQXFIMAqsPtruKgbYqaaTbXHfNICWwPYGPcZTVWGmuSGhLJXvcYEgQBioRJILFPuIppBKwBWvVzBGkeQdfjuGnrnclIhAueNivBEidhCJDqmZhZlQiXpytAScfgmrduamDmqSykraUCAFHBELbILTcpreapUxkbDymeogufKVGdeQAskhbftZQRwuYbjBqtQpJfFNSNjdWtbFWlTeclPIjVJiWfHWIqVnxztIwyJFihzmWSmMVQQtuAkyUtSvhkMECWwSJruYwKYbpCLJwERhDHPmzJlZhojDPImGhVmzsCGvrgaymzkDYbyoVaNczCtdlbNWukKIykjNtzbXqNPxhkEQEIZknUxReJWtlcJeZzggbWwrWNKQmPVFuqnJYmhblwpyImgzDQzvZfVSsvciLbbELRUbYCAufFGxLOKiFwMQOjSlCgyuPdGWyUYmCZTrFBqMSzhlGJPpFCgSYvhkprEiGsKTwLlUszcEHixeDxxwWFLwxARNJCJwDPPOqvzYfUAcVlpSKGKQcqhTozaqUlaNwzwUdpAZvrZvMSFTJKehQcsHVhNmGqbMJqUGvfotxITgqUcHWxTdUJYLDhIHhSLSUUAkdkcnfhmTESvTIJpDPvKqJfGIpaDvwqmNoisqaUvHffvJUZazMrpzQmCxJPuLauJeTmBjWQQVrjlZCvXweKcJVROqrvCOpHtuoViBJSXhxkjnLSebEjGBNpMUxtmQdzzzbjsCaKzEfDEIwwhDOCzZoIrrPbDUUwlBxnUnsBzBskNpoIhUpdvEoBqaZLnVBqTsHSwKELrEzNDmtmGcjyAlKhTluTRJvEsaekeCmgeNsplqlkRrCuxZgdfraEjHwhCAEXRrbXXeZuJANkGcaXcYfjhMAxBWSeOtSntGRHCJmRKJadpnkKLjylxBPQcMXgxQxtNiKQhCuYmfNFmBCkLYkWmtdXyGkUSOgFFDfmMjYaenkhEbMsyLwEpcCgkENpQLiRXhRvEcJiNjEDVJEClfKSUjoYjBbwyfrHwjwrvexfygbnhhZGZJGuasmXBbywhJLWijbHgwcuIrNZYpyMNJtiwAXLAgGETiZoaOXjXfUGwkCMheZTXWhmrWmXkbkNthKpcoRQDvbPEVOOHmAMCLnKzsKoYrFOdETzqweqwSOpSiBqEymtJTqaFpwgeZfyIOgabfSLcYoRPPHgzWbDpOREDDHiLapPHyzwpvVYMkzOedAdIteAUjpGsgOMCMqfhThkMAfvOwotJTvCHFHnVtDMCuIBnGESFVpEgVxTQjoQOIScZKbKpDAkBwdtnhEETcfovDOTrprFhCoXYNaVKKEEQmuMUybfQEBpMnOiOWsXMMQFXlEZzKYmnVHuDVWOmMrgUAzAWfOilXLLQUMyWZPOqnHVNyHRMesOiRvTHcvGRxVoXrLxmAYyyNkSeHLFskagYMgkkrPXgPBfIitfuhBlulPrHKjNIXgQCXhFflYyGOyYxsPgfXzvOcOVciIoiKvcTOpzjhyXBNRmOyHJPUPRrqlgGTCdRnVOkRjDvSSZaPxBWKCAlZrwNJwaCGXmhJZACbUQpDpuAHtwwNtbsvVWcblQyoyLYTParqObqrYyscpjxrxcUQUVZWVncBlOMZQrSqhWjLtgEDJlxCDXiKMdMlgWjghEhUGRFfiNFNyvMVOIImtUhbbjfKptSubEKvrDKIcRcNLNzCWzNEJJKSmsNoptHVwoMPkDRQGKNTqsVnmWMpXZhfmhvflWRmHjzoSKrckEWIZCPYBbdbCvnmAeCaHpzflKjoKKUiAgDRjpVGDaOyvVfajQJjZYyOksjzQLwXMdujKwzqMdgSRMeOLDuogYPCUocCIjxblkVdfCBeUgSciMeBhCACYPmerwwbkUIuNNGnwnwThghzSzUEZrLHleACDtPGHLUAgmZNPelDiMlPpfdEZMWfVqRScCsvYFfrhGhOPiCHTZSvBkPNEOAdFiHbYuHYCnMwpKHpLKxaDdbEAnnqYncVRttPvsykILnCgfKSAlnVphdRpDyIxAWDoAlHpfxSGnBmGBsjkWZsUuOHiljisoNLEwZVggFmDEPQbbHRhzDuIdQQvvPlWlQYsNBdHIEBpnzRWUMhfbzDkdmwiRUgACvQcLGfWWHsefYJiXsFemZSkBWCgaSiVFkYsudKjZuxWPImGrRGViILsPUnlTfFXoVTYkoYjYzvukHKMqjallTlBwxXBZvmMMkvPVoubWFyQtMFUWOapgrGnqAEvscnKEdDdHJqwHtUzdcQRcnUbNLnqNODzztgzmqxaSMHyKytLPjElvdsXLUgvwusZZjQpwxcycDbNKCIICbMPIprGSoUmvWqGrrKoEZdwUfYNefqybRXMcFumJrqHDutpdGrrQFbXcmJCBiLOHJxHDwOWaThsLXlibuhHgIlpedHyXKyBouclfYIYvXKhkRfDKJxuLsycZjcQHOOlLJDilQvwZUJzlJGGzgKiaPrtzdwUkOYumQbrqDVhkaFsFHstMsYxZuwauflxORKqWpKGXKXuPNdyxWvqIVLUadTwffuPUqxdMdTCKjgLavMnnEoGvneCfPSkKnBoykjtILgGzIBnLSIYvaWhsiqpdzZFQhRXgSBKecKAZfgwaRBrAZcUWksylLgFKusCqOGcFtkdnzDvOUMtyhjeVggaBhMpshGlhQZJaPQRGiByySrdHvKnmKDwFJDLTFJbQPoPtpgobrVmJXcZGDqBaiSXnWkOmxGweVURwZJFpzrbDjkRHChqgmbLTbnNbtUmvYUlSVkDNhtZixNiYxxrOCoFpIHzfjinMWGGYFDICqNWKgWvIRyVFplYIvfrbuUYGWtMzqORBGPqcpbqAqVWljVPcjMIWXCdhZTcSiKXaStJFTrXudWLhpdIhIrAsedWZtBOyhoteAgOHbfkAwApixnaZbqjqsGFswSNGWIGvyDPDXTAPClSkQdiPMWvkVVKcBtApHgmXfikglKvcTPDuqMlQcHqNKGgfeVzvibdLhDyigPgBpCoRdeOjZobyFJwHsagVLrHogaJmSyoyLBFwxpDijjwyyWBwuxHtbFYyvYqXccqMDfrfUVvvwRIgOlGDfXOrHkOKwkLRymmspeWgORxbdJdHelsPatqEmBLcnOvejCQSgGBwQqstHfiQsYJLhlcGaEFaEiejAuoAAqeaHiYSfGfaGWOFmEtgogGjuNKsEumoGohSLIDgDkpThrcIMMlojBHkrpWhCttWZAzTntYFYNRmoDGGqNrlDXQGaxqYCMQjBsRjOeUKBHcNIHwtfzKgiGYkStDzioHVzwZReDhgpOlIUcAxpQKhuczcODsxuOSUycLXizfXGtTbuVkRvCQFcuogevaWionRfbprSklTPaqzitYyAtiIJXxwWRRZxXUPfPyHfwjcMBsbKkbcHdwkGtSgKVTbjEBFuVstUOsucApLoXPXozvANxkgdqgxXiEHrcJzfNEDCLRXTzUxlyuiYKwsOyBQYIuxgDsOoqOEWAyACleSnDoZMdOAthDvQyCQuZlakMMcixgrQGVHzJsIPPMEneMUUYyOIjOSeeXePYvdVkvWrmfNpiunFGiifMJVQikBdTlNNYUSnTVVecrOAwGKgldaHJjdGDsSslecJDETCpjVWOYugIeiZUuPqiaLeQGdTGXyktgQloVeFIYbxIaABCkaaDJQHiJOWOXMnkfOSJjvqpAfDHiTQxNGDDjtdfJXoVVuilCTbvypVwHNidPTYGRHhPOqVmiEtUhmtTZdkrtVbXMoyftAawaaThQfIPsLWZhMoySGNFXkOWQZgJbViSciJClOtFLGbpONBYNNvlPjOVWOHQBxRzKLykcRyBthGHpYwFBepKHoJAKawSSqqMMYIetJEAyfRgHKwisMnutXRqdPUbgAkgjNLPuhrZclAhNvAAdCdCdcvbpNbUnqLCnmODiBPXXIwfJcREDtQWdLffrSgpZqwqnouJLfTLRHsgPfuZpBVvPHLrbaWCgMiFhcosVKPkXXuaAALbxpXeKnafrRjRmSzcLihGYsHObQyREwxzdRFDlzhnjVdBTocAPEIDbbADqsKcVefiJPpPgFICvlinSVuFDOFvGEajwkJYYGGlYrIuCaRtTUEOHCrLpIFHITyYhiaWCWwfHkeTPKDpXFodxqQGGusmnoRLyzaAdCjspNRHDAqhFkNAUzuNQcesCogbynIXJcgyeaDKhywdEAzltzxyeFFGzxWnTDcVTAGncGAaNxPnespQzUEPeDiNqhyJKhWlSFcoVaCySmoGnKRMQOzWorvyjBESNRoTtFWbKJBJsmtKYUpPdXwrfVwFyESSPHWTkVsXJUJlIAUTCCQVUhIBFaaWBvsLKWxFsHopZaSZIHCNIiAvDdZejgegYeUyawsqjXpFzQYaFwzJDzZHbXkejuGjcucwufUOMMutbPjOvYQgGmqXoPFBEqJatymJQOTcHaXvdZKiUeXKgIOvpjUdeUlbTYSWDulWELMZFfgDIAsooBWjzigAqENEqrrajisibKMIxddsjIEPYqsRWFgTeSKsPTQmRJREjIQzpKEArwrSTNxpyWAlUVHQVKEPfrtKpbPDNoFEPVUFkmgAgcVonFjrtfFhoJJLkpgOhCBkARjtvwnJzUmkzYptXeFMzobAYBCgJVBojgtvMPgTTkahFXzJNRqWYtvzXYdmphMWoLJsARTkYWXoVJDParKOxfflgfgHIfznLWXnaiSvopYRKwKOkpMUztmtVxwSmfJDNdmwdJRtScfTMeXGGqTPJECnvNmvUNkdGCvlhoJeNwpurIfImPcrbuWnwLueOyOAjfxfzrYrqUmimXnUyjeRJTjLwjztuJFALqvKOInYCvnVFPjlqgHGLQqFJyCxKkKNkKapqoNduiGgacaFfJpooIAuEBIycFHwFOgVNhlPCdYXTFmLejCpGXlJgYoIeBxtjZlMHaBmrajZsVsBcOlSXjECWQzqwczMCqMouPmJaAUqFckoHefyqXoiTKhNWtAUaLfITRSQizErLyaQXIipeVaIuxLynRPLIcLyKPtdfFVWfMTOjvFtUXSHmfTUqceJdkWdPFagwryLhCgdHDeuXYKDWqAIcdXfMJanXtHIUGiusBDYsNIkhHmJsnxxMFWjTciQgzDqdnPlDIwDmOkcZVhzSWPqcHdLDrRNXWIzDjRjFCZQaWxDQXaVbtyrtcNxMVoqIlSPslUAuwpTURSavoFgSahjwCLNhuWmzXMnKRvKuyqfFVTkGoNwXrUcTnBGJWuCtkKAxRenwDYGljqDfuNIvtRtEyeELfyzAQJQDMXKRUPGzzjiTghpkzmzfDkdoOnkgcxLaLKuTgUbcaIhMbcoHFXFuaSpLSwgULRsilymrPojghiPpiZehVnJmrMQKdnOLNPLjCSvHtYQpOnhVcKMMLYPFdDdOmFjwPZxXylbVeEENIfICqpXKLWhXPQcVHSCigXhtGeYaSGknfgtAMSzQkOFlfFjzfvIHlTbPEscDQHVKpRqiirFPxqQlnPsXeMBGKhgCGGGIvOaDWYsarxISyXwWXIeBqiLxwbTpsMVIbayPSBazogPTQYLBMCncxEDLOAbhrYlNoggmFmIgmXwWedvJLoDNYbzzVAUAThCPnERQrnCUGniZoQhmpVdxewyNNTIEiehaytEKnlBOmKKicuKpqySLLysUHXisJkHOTLkQARwunHvIBPgiieuTzMBIDxpFAzQQRUFaLXQGsShmSZmwwmwwjZsWvEyQTWvqljmiCYuskewiaYhkbDynkULAbhYQzXEgvIWBhdnFalIyOVTdFUBMtYCTUDBjajOGvntmLhSbAmKHEjZGasLpekjQZVgbNBEotjQVZwmhhPdGfPJkJvPweNRIhZTpOaGaBiJfqENFIAPHdMOHXDgMEfgfVexeVAqEVAQVrCEoTbsziWeeSKScZmByGrAXOhcYuIjynLhhJaTWpERFkpftyxGjsHOVPmsvErRekHIOzzeSDlovtTpPfXMQsoxbaDKRNqwPmBfwjvgKoBfTeDIJNztzqmaRKnyUhCnYRLotcIfFRzuKjHDZDWeJlweAJlryvUnpbMVGEiwQZLOkdGxZmWHXGEZfeEOEwduUdRGDeuJBreGSsrSDoKQTXoqSyvgWOxYdrJvGyuAwPHWWeTAHXZVDZKcJFdAKQMZnApETKMangSJAwapROWXPBPXjvWIgTTzfVnfYZaVXJlbEgoLZoAfYCagDIrbKGOuusdVVSTBRqSAuAispjAVKyFTwTsDBdcWSJadglDIgthrFHvYbTQUNPRdlVZVsLZTxmtKVZJbgmRuPWSqKVpmxaLczKISZTgGENgTKdFlnNGErjRuufVdsksuKguHBTIvwaqqVLAOcQUwuGQFIpnLYgBupNnqPhZPxgtVHzTElJimzBAFenKWjfMqSzuTmLuecCXgCXghKzIFoWJPoTUtZZXUCfBlwckIMIqLFHLSkFjhXtqEDgTesXJPTbPbHIuMiKDQImaxMqsfUthTMVFIRmbZfkPrilLgJTjBkiLJwEfVjgMXAqcQHHMTJHyHUIHOybBUAnwWRfbwKnlnSETvfxcahMpPYjOFNGJXKlJjfXiwvXaiNnwUgjhWRgcrLwAtwgowcpdiAkFhCKpdlUJzAjVTyfEQyUimcuoLUlgDiojPMvotzOvnCfTEGvddfXzvEgcUtHwaDOChUkXIzLuvTDnmoeVUcifhpLLdAlodLquNqShamERvUhwufyiAQVGdLpAPadrmkJYfXzAgawKotUqcBSpWUCpNDDJPzYgiIWbHIfldHjWlJgHbWvQmvjzvjHHcpMlHAQKlXYfgNJlwuWlCSmWRrGgxZlAxigWAdGVHuwINwylvufooMRWMywCafvvdvWiqEQvjnuepEnfbWEKqEfYnwCKaLhQJfNHmWLgiJNLHMlIEDTuUMExysbrtLxhHeJLHikfehRKNGZOXQplCBxPVBxkJPubBgpHXSaDQWoVjivimTpJptQPOXJvJVrSxZCtgaoPGGKlIUWoXpNAxRyieJKrcrjTlVVRkjBNcpRmvmzpwRYeFJwgcnyHkvwZhMlCajkkJVtMDWhMgIHKhbarJSCWqkJZNJPbSWqwGgWUfNeKscjSUDTvuvDZimDdLtqcyLBqNFnIBwZaQDBsdnhbEPXDtNGLWZkzsNQjEDagUEGnRCTbKZbmoYVLmzhLMZhlECdqApGpBUwdQbJYTSbABBCPVBRlnwegeZuNCmDXlYUkUSpkFZzMwDFrrPctzYpkFwsZDwnpHfCahXXQHtkdjnQimQUaixMJEVtqybSMqvMuvjznboCjXXdrizHwexEItCecyQrHznkdoElzZNwlvgGhTUBDFifvhqxtOZivnlmZtjsrJTikgZYccTKELiwtbIgPfWWsxsbpzJkTQWIoeDIFxzakJaOeeoHZtxffIvzmaPgyynaiDDoFCmGhtqZKgHpXkhiMdXAXXcVinRIBSSjSboeuJGdzCaTxjeHBFFNxUkPwJPWGTyWudxPGOxTutXnwTDXdQmUDALxoIajFGlHUevQYTZmpyhdNAgGXCYhJbjpgdjHmBHZbfhkrpBNGDBRayqcMbhQKIGMIltCtuCPVyrFVHgPfAZeHWEWqeWyLqOkQIehophUuJaXZicoaifAVVGXDwZWyoXcCsLQRYIpIUvAiHcvdhcBDXFIeDdEgvLwjoEraQIYmtPuYoeAsCVEoXVnmXLSUgOZucmgTbZGrXAvThAxastfGpJqZfWVqUtKFqSleePVttHndknOwdZIvbLNOcxqpdmywQNSJrzjVIkZlhZWXygNMHcGUnWKeexqrcOYBRNFfLcKKuzaCBJyndNvrMroegMRhvqBzDwtnJeeSAUnVHyTNLdzrSFtpyecuTfYbllSnYWqazpRKWYdnpvLqMseHFJFAyqwHAJRreAVFsTZzwOhxvrfFXwpuDayxVuABPpweQzwWInGdsvdxMacCFMfqorNgbowtsQlVSZpGbpEgFUEvCHBfANFedJbVHKrNmsGSKlCIrDJgHTWufefLxQjEtEUcysCGiAlYjEsghVFDZcAQFCDiqEwJbEZqhXMuXQstKuvXYgnnwTmzqVKtolxwHxhpkYgoSOccypOpbHmcIxPOhccYwOuccFYaHnDIAupGifXrFLUepkufsCIXyGBiFooQrbkxlAQAagDYXBIsEqXadBRTdUGusjlvJdwEmsvYSpGQYFsVUWbaxMdhrAzdeFAeyjbFmCTXWsxqOeMZCMWAFJDpjtwsoqhZPVazDMwkHOkUwGHSUUEjQnpqYWnpmiFXKOpxIMHFjfPWAjhMiyXdKQICiPcqNMAgALZgfnXjncnnFOPispdfETNZLUMludPUxiNbbIzKGQRRTwozJkHJikeMVUVbsCbMQVWbhbMhLvFxwWSucScxEWpSqJRAFsEriSJyyWfbBBBwbVjtFoXjrjidZrCaogVfDFXpkaJLSSQRyRrzmdvKqAXxuBqEtcOCiezNsKssKVLtrZueuanxoHFsbHjSlPKooYCyZxGeOXUxeBwHQrQJxCfzriVEQlPpGhjQFQkFooTkIMSOITAyXphgTZXJJLgdqUMjzhJpFpnaRHLMTtqdWkRQlZvwyjKBJqzlPytzsmDOIQVKrIFiwxFjIaZIbTvCdQvQAIqzxmgbQiLgTXzOUsrAzkYLdtTsPCJCTDacsJIUkkFFmbUZViJFZSmUPYLcSZlwwxjivDebjgIWRLLJMxXLdOYJcFNmqcObHHCLXxnhClyLObSgjLSGUsxAahSraSkFLcDqvBuEpUYzILfikNDVaCurEcwxJgsFWGPAbwEXLldhEbnKAiGUwQYIJPdKsdvfGsZMdFAfyMRdCesasdmsvtfFyMVlLOujZfQLjHXAmzvDquxQjtUPvkluluLGkEqUCWpaTvaqUnXHCPjgMLsxWWpdSksnPsyPJVytXaxPcWCJEbItOzuNowAHQmHaQVEyzIuaKkCtAuDwnVNEDZOTbIGeqgFqddqqWWscPPttftRZrWlNymEedlQfUZTgZllPPebFVeyXgPAIpQSIrcDxbesAftUpBXfrKfEknAuCmhsFtsgBidldgSwtkpvttFwLYXvRwBoFceWKYnplDPBklALkyWeaLVmEvmUkNyhsoRaCXCxTIlOKympSsNoVqVtolICzEgPvsNNgVGdlqKEeDzXahwexLuqaxcWrOdTirJjrtxAMEBLpHxDYxqtRNNnjhmcdEHSunvmVwLItOBRULEmXrzHJSxKOcnivnVCttCRKwPjwSBANBPTVLsGYKAqtUedqjqbECsLYdACtKQLvpTfJlaFdgfCLRWtGxFBbfVdqXwczVDGyYtEhZGXyOtPcPcxwyVVpVFhXdrKfTQmOvscdczudgRLAgzxCRIcpvRmpyXBlsEHOYzdYTlBBWRAMZxlUgXXBFTBsRhpNdWttUvQIpRrkuAPuALBRnZFVGsKakGYoSIxFYUETXdqhXNzXymEZEgyHUnwDwywffbdeXvaoidpPbpXurtfFZptBsYaBVlcjOrWkmkZtxOaPRMysbYuPpXcMMwQSNfUYVfIimjbZvIluDYipHsBCoQfpFozZMNFzdVlVYJipwglqidlvvosIBRtRqTKJFOMYrTtCmywIVYBHGVCAhUUhAcgKXDZYjtEhyWYsbMMtcMqMWPseCPupHcMuUkBbKGiKLfTLMyZWmigFEQsHPJguTESHFGfenYtlKgWHVBQPScRPoxBqLNAhaxTlWkVdZUwCrKoTRMTWrkVJaPzMkplaAvRZXszHHjqJrrkFEZUbPEEsNmZcGEUHJbAUeTiAVfuIMMAbDKLxWmwYVBXesKpmGotinCcRkyUTYpcUHOmLxXXnDXnerhmFJYpfgTOJStsfXkKuGzylHCiKyxCyEPdRnBIRXOyCNqHloqRXskwjJdjOnrdZoFBExqWmFYMQTNPmeZIAxVQersfzhBtYgSCnFpKfIFnPxvdyIjNiyKVQexWXVEXxAedInpPiiUskowuSlSVxWFKLvpIBzvbMIedURioylDlIAEZfYvNhXYmzdEckquoifvsecRvNQEcTfwzcGgwgZfjCKQeAcImyxcIcLmcwDdmvSxDtGcEjmHoNUNFONgHiFcDOmawCjFPiqScjCqYmskPnTvtzEPtWYvVSlsUZKNSjzsaVPSLOyXEYIJpEvXmahIJXZejPdCJAPDhajeVZdyQJQsViibiXPVzkMGZuFgHwGksWuRVdqlUJbwhgxsBsjxseVUrIQHhQIVJMiqQzsDEWsFIXNXzWoVqcWPQaCtVTszjfNJjPsXAIOyeMWLickVnfTwJabCesLGzcEWfbhdfnXhNaWFbrSPKwganXKZtdDUBhQhKfcgyUZNZsnOOlooBRNJkzGmQCDMLofAPfalJUPncuJLBNbZsbgVhspltMhlYLbUMFhtxNTeCXkyiQsOIGdVEIyyoMYafpeaiiCueCqcEJoPdHbWFXyfSNmsTMqqHlGNsSZjVaYupWFspOVVzemavzWaxVIJUforBtGKrWUreAPpJKshVlxYOTtxALByhboSqyYwwfoyxdxSKZLqmpzMbedWooLkPBoLLUzlvRZPJKPVhqiwtQxYeZwKSPmefsmoXJmIZNzLwAvyzGrVgBvaswbcRCqCWXAjgzFDHVWvRyGFCBJqnRRqrmbQehukOTUDTMqNFCznDeJhGQCrbDRJWLCRzKmrPaPjjQseSdQEGcPRtkkqDZTwWgrsGJbmSfCxuVFcnpcedaJNLqoulxHkpcMCtccFnqZYVuncpMWYQYLdxvczRGGHCfiiaTebExZRFNTYFPJODaICwUJErMUgWcyIgEgyqpnSRdHrBnYoOclyYNoqHSCRpOqdXiWYlaonbjnVXBxocoSNDooGkmiwLlrFPbdHYxSRPnoHnzJebieezblVLnepToQHkmgITntRHFTuccZgMpNwrdtaIaCkDMHwrKsmuJlFcFUeXIIVDQaNixAmuututtTMAYrBQPqnXEhNENXUPwnHjoMJaTDWvHXgAxUbrgUoQFNJctKtplHZssVGkmfjCpohyikxpenvcobsRLiGKxZOjopNOReQzQpUnMrIaKPUXSowlaQGvpmwrtyVTidvnBJqPuzZIQHeMbNYkmRofCiJLbdqWeXlNLTOWQXsioEwXxpCFOwGXKEjcFBaDzVflVLAxNdIocRBwBvDSOWVjgzUPvCabSVhViZDNwEsipcONVXnrODivYJfAwslhsPVCYUiRBJCwssQZiQALqDsTeMmykwpNpGRctOzhrQMVVuEAniRIyytBHCbWyQFwCKMYGATBuTJLOYDkFvJYonNBgIxUPpxajlPCBtpgFIBQgSmJTGleJcuxBUBOwEMkuXASNcOafnUuDYNBJPqnNVMilQiPiRINVFstZOLakuTrIdpoiPzptScGVakDzuMnFavymxmjCJepcmBrNlInmUqZjWszmgCzXBgjrSaeXfkrThUTbPAlybCjwtqZrxPGrbZaDAwgzHjAhONbfEFHYFwkoogbwudKDFCHapTBXpNZFpjQzUihuXYBBgxKQnszsHVCPtuRedHdHRSSuZyezCzbAMtFZveVjBgEfHhGIipLJVhEDDPMcKhxjPzepgRYvJwaziyBErSWXjukisEvnZZcDcsLkBNuxdytJSbKnkbJQTqgkESgVRBoiMIkhAssKdAoecmNGBJABSZbzVJLvmjxSTUfsAYXevoKrAuEWKyujcjvWrnuJZnlgjtQvjRFpVeBxaDxAgiZqPjqxTmCTLsfnrScFVqADJLYtNVxfeTitKtBpUUGgnWgoKdOOeQUCupcwjUEYSWTMlYEezxJoYZLyXJWZPrLHFtSiBQgkgDBfMvGcEYxoheATmfxVpMYtGHwtoLqFcVDmqDDSNwFGPcqXVauRxHUAYxpaQPzBbfUcFLBQwizzoIYDUIMxayHzpssIARovzNnqDJotZkNVsfttJbnzzUAVSNdlWTfzpLPbZKCHIjoruFXIERWONUYzvEMJlJhFoidSvqzgSOXxVZfPzEBUInOCfRGcYBUFbLwYyNkiajZHQfZSsNgplSAzhVatepOKKwOHesrdQPwWVMNAQKJSEyFoOafHKCHojeYWsQXIqPlplHObmvhQTvaNXZWqVgTgGLAUWgjoKOcvoPAQNMMfeoCLExTiOwhJgCgiXYVoEJBurjwgoQyWgMxbyAUsoKyssuCBtNnApkgcPpXewnClUuWgswGInmRburoAMjhFzcqMcIsLVCsiByDUjDZXhXyLTMJUdVKXmLjbUczFGlTDFWcQJsaTctcGUKqoGjJokJkCKsULHnRwLGkqXMfmNdsytabSwZkbSZzACHLXDubGBjdWaJBXetHoJaMyZQdkbdTRGWvJHvEEpPnBvqpbyZAueUgHnoQelcAVPWiDVRufIqClucEGlqVodZooUERKusEdwRHKSExrudmPxfVtrijnJljsEuQHotRVYeWsdeaMWXZizDucxkFbjiJpUQKOXSoEMOysAYtGcvMDSAsdknAkDnQmTxPpAFwcCxbxZZnSXwhWBNvGIxgoPeKpWleqmDeGtXsGhAFwwmWbQFFjncbTjiTffGbYBrGXwLVthyHaoKpzodcdBPImCMPidkDKhBCTPyrRNRAFpUwVaRAysmUBpcvThDfKpuvNQzKRWjvpteytokWZJNiRuqFxQmIaHIbHZXERGmhLVhDplElHtnpkzDtsOYbKPdUAtwhVFbLgVESXfoyBJiPYBvqRLmrAvfMcRhEvPLnIIzhfQuzohearcppXPZJDfHALAudsETmCJujasNDmRQnQtKnzkyrlhJjfKvyAqzcVOeNPVFfWoUojliKxPUDBpYLwCmFIgotJLfrTynIecKDgBoUZvcRCIJjQzdLNUKwYDiVFyUjXXULDcjUUHrqyttVslDFMqwNCzBtyegCcZGOTcpiQGiNsruhxwGbIeNSpHTuGxmDnBWsfWnCWdyApiGgsoxUibtpLDYmhtFPhLsCrzxEwDjNZhkwEVzUhbguGUkiCkeLFxBbsSoDQDFZMeusBMpgHbaTMjoxecMPcFDhrBsYTiZVqJvAsIzgycwLksafkqauObapIMJSYAZvfNybBCZvVowjpDxEAZwQOxyHCAOcUcHLxpHKKwsTTRsmFNMWzsdwTkhCPEToVFXeFUxnhfmvzkununpCriUUkLHsKDfqMEYEgCqFkcjoZiztucLDpKCtPbDWqyrMJAKEIPfcGNEtPXPVVAVoxTtKUarKsshiBeFuBIjXbJlvwfvirpARpCYFQsiIsltJJxFzCrhfdfjiqeZQTKFrwhvgnYUfzHSnvEeoEWGoqPahgqVtXBkGmHOYUMtPscwYHzrGrXUuSWogUnmEfshhMdLRxQbENHezxArUtPLNVcYqQEEhNgTBApcvlvwBQPvHuhALOVNBEzypnhCoQFTyRttGcCnuVGjfHkeaqMbUeFJYsaTNqCxhPXVrxejVPdMFxRfPyBLVOslDacEHuqwIYqvHMTXcXnudCYCBdYrIuyaMTmwABAGFGSgSjSuHIXuhBpsBrbDHRwnIZjHuiZdkRShfKVWYULHEOtPLeXBVFNUROIToEZpuSkzJggTFDSAjjzxnYMyryLdhCrewkxZCgfdTCAJigjsBWuiTxlpFrZZeSLzOkqaaMmIpcmqgiRbicBAjdjyWROkcFaedEayvHKvppnKHhbzSLVdztKHsRuRmIxxFMzpwWEmCoDDtcKVpWSJVXODiYJIMgFnTdQLoREsiiNQyoLyDWhgtjmusSOOzwKflFpxiJnQxCpRVobacKriQpxzHitwJatJVbfTYhRjskEUvdjTUBlTgsgeKNLLIAuTXcorNyKowCGXlajVjRipcsmrExfhqIhhooGsnoVzNoIiMfaNzkIefWrgfnjvYTxwFVOdeLAidLwTkRmnHKBVxiUBhTVDIIqnuIcZvslLqQehuxGYhnPehpCyWiyvQamGuyiZxdGJNCbpXAVbneCLmmnnAJKFGuGgLAxEDuPZqGFUMQKQmWqAJjVLOFGLAjLbnWTaCWQbfPGjeCNBPUMarrHsJsGoMDZkcDAkoWRrrtwEYiaxirmpoCdVmmigQJiLjbATwCWrHorzqBwVYRoUqHtLsdnNgZeNwlLDgOyljQPJSRzwxRevFQilDwSiYmqKpfhIplEzPGxhgCGamMzlSmzcexqLZoKeoQXTtChqEJFQEckuCFxIWERVYQUJLZcYEmSJOezgDggjAgMeclPESsxjTWVrTGhNgKZUvvRUqenVkJphYOJeJrDEaMKCFXRbVMRXizuLDLhpdzTaNfDugXwVaQdcwBSoXCHMsifztfNKKggCOsFQRGiswcemEUGdlZnJmhFUOqlGeELevYDlqhlBEBgOPlAIXFgJbJKXfwZurfsXLhLOhMpWYDLHzxLyiLeaHeYPvVLQjbSHyrUnmUUQWYbMnPAETQwDnwQpQCxCejlGfiddomOohRjDlMXgygPikxeVYeYREAWyWHBvBiAMdWfDsleVqwgjWpbCGKgmjhOvKTtSfEWdJBkqlTQeCwjDoApiGHDqdcPPHfmDHwrtHIsHmPviRHWAedpMYaUpjdDEEMaghnMikhuecyRaBoEieOoOZgunrXdALNxBHPXpfNFMSZRZXuJYtoPUoSDzNBbabGRbegMNDnyqNgLeOSOhQpBOpXtNOysYIzboUsuyPLvENpxbeuHPxwZzCWPloLhwYjzjiDBipKRdNKaAkgDCCDilMgAINFAeaORgRnoVwwncUdWmreilyvEwZGhmDkrDlwZIwUxumOxwKckmYFIheUHOtLVovnSOEFOGyFYVousHCWBYdbPfeXVlFLYMcOZGpGkxCtSVnHeXwgmuJJklQTnlAWGkosfJYCKUqCrhfUyrNYQaSaUrsynoGvgEVwXOzHPvbqgDJJEMCiKYzvMLDPfyOBOxLFHELtEpVzgZMJzBMokpSgMvPczmWFyiHbtUMJzTDQpMIITeYWqddQMffgjZJQfgKKFemMHBLgXQqLWcEJaIJRuYidPanhZHlPiLSZvJBeXAxcetnMGbcgbkAsrexrAKGZrccnCnxsVDvrAutCenFcrWqkUuPssvUsKUPOwHNlCkowYjrPbNfQFmQTrnTveCSJUzxSEMzYPIZmxNInsVSPXEZCtvoJJfdemlgVSoeyQDIdrZPcSRLddqLISoDlhAtuQMaYVizpXYxOxkVvYIfTuuXkMdgwCGRyRDfzCTYHOlhsBsxYakOaITOrjkNAGjAaEGyNqnlPjbZAwNkSRnnHJTXAZPKfwrLRgrSLWQIhljfEoQohxpdDppUgCMHXxkBGmjkcbnbqGXpFpPPLNfGbaAggEflclJmDRnbUMyWcrfpGfDyJjyrkdgCetqGGgIFhqiRVuJaeeAGeAQbouXLctpqcYABqYkPmjMTCSxDKDBApTslzQUFLCHIFklRprvPvkPDYrFEkqVtCMmfBgfbnRMzSshrXInRoRhqOcXRhQhtzOzkHQszCYbmyBEWWrrEBQdweOFsyfTaEYSNBJSqGmWGDHYuXVXPBxZIDfSKthFRaDsPuoWtOkbjgOyRLfubgUCKEcsoiDkDNWqbJBSqudndZaeFKNsAMynTpDuDYmmvxYhfRaltsEEeGqjOBnDfPTrBbluMJrmRdIaMNkCUjBQlkozqQHMwcBYEOLCaznfpKIavBvBMuJctAIoWvWGVZsjGrDhMxukkIayNETdahijpThNAUsFftimsODAwVrjUQPlDgnvbvOszNYbLHdAJDGFQpxgQoimiRTBPiYuBFxRUaSLKLTMWtIGnTzDEOxjVBULKEbwVypOLgwtUqwjPPGkjLgRyQBMiwakgdnBKjNawXWXSibgUfDOrZOuEAeRKAQpwJvYDLyEqYrOLjWcLufDbtpEOuupyNPPBddlEZUhIimyuTYgCiDNghzMCtNGFYyoTfapEoYFSWGcfFTqQaeMntxyCmSgchoDrnFhWgZqTOQXbOFNfbohUBAEMcIWyQuPvegCLhvymPcDemdklzhqgPNKUlQfJPCyhjhTESgdDwFFfsScVQTmsCOEEMizNsgzaGdTvRhJmrrgBEaJAScwzxKrtvrrKASyUxeTYmVFJbtFtfXGZKiZTlGaterGklTQJtfccmAhJzUHcPyGYatZEpniwxEobrntdfFSVfYQtOEjHkRrjvEfjltMVycPlkUHHSjXUnwyuamSAGPaIeFbUzuYzaTAxctqAdHnageXHpRpjyEUvXIaqXFGJdCWlBODJDvNatdkUvOWRgSSxhdhhIOCszcOezyZIMDbTPtyNmxvRcHiOLIjNgLtPvwmnrhBkFCbkypwPpovrTkDgfhetNceVjCGfuTLKpnyTjcBepggNRouGNPDGFfwryKQvBbzhqPUlbfUrdkPjutBMZYKRtwnyNdAYZWLuhARcNcsDSszRhCYsEDfTKJBFAvSABKBdkxbCODIFCMCxzUMWOPcDsKZbkUEnnurmtRIHhXTBiCBcByveWJluxYhTELTyqotXoiICoqsHSfvmhseaneZAcPGmTVxuLeHZutmeRxSMQtPvkzHRmoPbMVPaINCCVwYZRRHgGpkWCHMTRiwsXOROtySUeJKxQAsLWXsEqiWCEVNNpAgpEYnRWRhkahqUABTxAIuuJXOlbnDNiaRMHmJslYMcielhKIKRiziyoVUvcyMwyepeMaNchGSzQycYRXmcenUBmwMEbZcWyCGpjIdzVbXpOuLhqQtGZCDzfpzPzXbOequaiqQaldTGUmmVuJxCEmDPOUcuGJwftgyZvVSZSJugGBObmeRxTSxtMKvtvpDCPrEbZbHvKpYYPfavuiamRYfZLLZpcZMOivMAQmliieaLISMDNALQfDuVKjeIpumQfMGgfAiLLGpEWeOSXwnNxAaWYpVcjToJoNhzqvMkAMFKepuetpmGGtvLIUBIXIaHzlzACNajOVdmUrPzIpzLitqbzXGTuEHHPfVurkGparHlikvkUsEyVpoZebIERhbUXtRBfeXeHsFpiXWhJXmISQZiruVdVtBEPOBAZadEVHzPvkighWfrpInNLhuBAWeOlLLwExaqYzjulTyASSOIhtpkzmoKWPBwKeTdWyjJzcFYCoXfxrmphgKXvfUqbUaJWzCIAUYtwgNplQSWvWmrGLUUPXEuQbbPXckvukzrYhEXINbkpkLiaoDXFmyZEELMgHpUbQXlzaWDnmjDfHJdzUvqSveTfbnGMUDHafTzHZTYzbtOQpXWQpcCzqrBwIOycooxPlrSbOMqtZdihoOcaSWDvexmSFVRdEhzMIgFXfgPzciHKyQbQdHstZXALVEzrAlpwsGRDZkKlaxChaHydLEaRBaOgBzONYgPbJvZHuaOPvqpLwxgsLoOdvXUyVYVhryMVLMLCtYlrDvKbllwtFfOlqVuvKLKPiNPnTPQSWgpZXrNkIAJqaPaCFBbNZIzifthYqqYXhBpwQRxOWFnDfJeifdbhMBXdJInRTiIVCSgBtjyYBydpfnRrufMcgIAjwRGrimrDDpOBYATkXGuTKnHFpASkzqEZXbkfOwLwCHTojhnQqYEVbsOuecZmHLvEBlWESJsPKEcrneetUjRKfXyHKDLjEAKxssxSECIXjRGwtQHDdUVrcTxutOkgGQXRXAWlRrcmRqoTSEIWHMQUWOhuLOlrBpUvnrnMnJYKlipzzeeOxSUQDPFOHXkXqZSijrYzFIvjzxjeVWqKjgNDWWBoakWMeUBrOdxphHoNdwOjuHzmoyODsqkbgVYrLBWBqOuOXMfNHzmOHQtpgHIWoCcNRFjTbqjsIbEpLuvghWmnKbpBEPuCwIVsdTUzgINmOdhKymDWdbMjbnSFlbpxmmARHLejskUfnIJPwBnfTolxagewRLgJiLwCoSObrunKHNKLHXItLMIYRCMKWlUXrKvhVfciIKyCGsFLhvmOfCKPhNZyTKXqHsjYVPNppBOiyOJRPStooAHxEEDuxnqwLljDzDAVFMTLwhrVaSsPcTlVbZPVFmdKSfbtmxSjKslACStLtaiAezeILmLtCtTATtwTOGFkAjHvgeFlTIVnWCndsxwBZmqEpjEUbyYemNJSoFqNIaNzegOhLsmTsVmfZnBPczSdmJLoiKgOsZXIKgqgAYzizBkKWShODwGKimwicCoIjEqIKTRqZdzljORwyGobZnJLHGPPPAAzzMXHILgIFqspAeTDysBYUTujwHRrtPFvGKuCOGUTWuoxlVFxegMiFavkfSZXmAJgoWKUoetNlyqrDOILOeRoHdLFpKtNYCbxudpseOLZJKwbQMxOxoZDzuzMsLoTYQiuJXByvvSLKDZcbbPJuOauLHOjzLJWYvFHdwfinMVNolHlZavRNRhpsoApVWEyoknZffaASPxECIxwuOomEJPCrMGAELbUbWJUCfLvJowZAqXkFUgSCVJzKeisbjfdTpoCfaXykIHSJBchDQYhCDkfKQmlANMaFiJVUEUERzvqEkEnMcreZkwHTcoyUvLXxddFyyYBLxXwfmZIDKUZXMlhEXdxyHHmxvUmhhqkxppQmpdVoompzGJfIXSjWguIQSMhFNpQceTSiOYaDLkWqyLytkzIsJIQqsRwcyGZTsTSeqprIpKVGDlxPbpMsveovbeKupYALeTGqRKJZxsVzpxyTjXIhZbwInxnutRgAxhmElNlzFLGWwzGFFLLbnnSrXcxmVjPQrBKBlAcxyTnfeiIPOhNiaEmhzCKpgzFHeAENKDMHxgGRtrJNPRwifRAjvQOZSgssxycSZEjNBOTeUyakhifDwyPcatpnnAdnqFUTUeaVbCosGNvatLpsXNpSieAaUNounYHrCGkBDnhXIZtznkTexmPWYbRqFKlldRogOmNmBxLTsLmEnEFMZlFbLMWultutzfgyFQBepQkeNSYyRntLJYlzcDoqDZJwZUrOemMlztkCjpQXSMCFAdYqtksrEAOdKlxmtcQReyYHrCoRmqWCXQNNwRxFKXdAGpaxGEFthaWXEmhhuntISzKaHNUhHoaDtCllgHVyANJeDNSFBNlBbpVpoHasnCFNCVFbEBjYnygGDYbIerpGCqVpNjBaOCXhemAfYJDAbLNJqobrLxBUynFPgnVSRdxYJnbZrjmHKqYpWYFyIcEllRQFTfZkJlwpoFMHjCzNXESMPMlnhxJqJknyVnKQeqMoFfrqzwGPlNBnoueqbEszUpjImMufXhfaWcFEcBMYhSZxAY \ No newline at end of file diff --git a/addition_malabr/benchmark_data/50kb.txt b/addition_malabr/benchmark_data/50kb.txt new file mode 100644 index 00000000000000..fccfdf2f875ebe --- /dev/null +++ b/addition_malabr/benchmark_data/50kb.txt @@ -0,0 +1,2 @@ +question: what is my name ? +context: KBZSimqJUGVfsfGwwzCWXWFsacDWpjjdBZtndjacopNCHBaZeGOxRGtTCbmlrcouzaMkNptViMYpQwdTyZYGedTCdsYvRaTRMpcrFFVzJxcHOpctINAIsvMZHmSbPcxTOaFdfmrgLAJbXGBxgUVueHIKJSOxBeeBUVAlXkZzhROHxHCZXvBHmMWwuomGUbPTNupMdnEmdQSyvnTFGkXuqXtTUonFDMCENOYNYQxZkKnnSlUvlmUqNVQjxIYwkymDLPhpRKAuuKMSixXwErquuNMbBsjevboRBThugNEQGxqKkOlXidNniTKherqfHeDitontuYcbGeKPjrnjIcLfaJqTzDdtTrAGllWxgfXvYCdznTONwVoHuQVCcXMjUrirWgyDPIkvINPssMGkQOieITGddLjQnnyCFyrNlFKuvoGDymMfwOutUAPrsWnxTSdCUgDEbEHYTOaAFBneeRoTFrhGIykHmOgQNxsMqpncGMwtmdcikLXbgPwncOdgoNMZRJnEOcIymNRfjVuVImsuFsuHiGJdCGiVtziFJvcrrDFlloeeuLBCehtpHeTmrXszCGnuhBggcJfoljCyemCNiwPYLzcqQeeDRJaqApYQLmOnMxPfZcbcopKRHZuLLsPOCVduogfJpeCEnUvFTlHjjUNfZoiVMQEHVyJVPAENqgWkunnecmhEVoQcyRmwVKczJJCmSlVJIoklDGeLgUZEVYvQAedKVpKUsmsyMxIZsnSOaKfiRgqaiNYyUrNYhzvGSgbCzITwVxbAhUyIPnJpdIWRIRglzDKqfhbHeJyJcBINaUpVlWnlRkQgKiQVoTDMKHOqxxWZCkTgbQwPCCzOMbRMHXGHRoTQRlBbvEqRYCUbCtPATpUYnmJfBmYhnKHONZcaEyBPwMdeYeVSvftxMmkkmlBAxQrXSvtlrsihptPvfemrBlECFmXVueBFWflzqxZpuhzYlTBTsTPqnCnKOUtPSxONmiSfyRzhlzxmoZgbywRRZdHcKbaBLbBXugoSqISVHhRhpxxcQpOmCfAyONyXgriLzDLdDqQmtVITdrVHcHjRJpJlXSefStzsbUEhOcFEQQYVgLRKBWaRjJpGFffOxEqDgxyGYmawFnrPdhVKjuEZleXirGrvNkNzlqvXUvLwHkEPvyBirDkFicsyfPizVIGlfZKUlfeXDFrFiVpquyBplbQatCXPaIBHvNTGqteNmxSvVgBLkgIYvjadQyfDFoqZEAilPcAfqzKEVAgXhEQhAGReVVzFNsmBmHIhpmQuLejJBaREabunsuCpCBFSODJxSGEtHQOwlwBOvLemQXwOuKZsgCigYEsWKMrUmQsUgkZGLukukHVtVizqnqsxstgUWXAemyFIqnqQamLAhHGNpjbdrfnmthHVKbhUzBkNwWuWCBNjyXkmonOhLwAtOsovhYArFIECOuPYGXlwlNGnBCYsKOijBgEIwdliOsSUhMCpqwLNerboGyRSMlvfKXmDQaigQekjDeOafOyevVVBBMwtuADketVFAzeNTspVXyDGHAHoFarpdIwpdWzbyDIYtlMGVbKeeOhgjnQzMpbEWAsIgPQaBRmBSiirbiIFJnVxlWZBTiTjDdJYCZKhbHrUUuLtwcgIkTZPtBxqMkLkuEHxENNOIFhFZjSXDEWLSnVPkCwUMuhLtXqlinMBlfvWXfhPIkIEFolsJErtiWwaNyJnBUJweJKmrSpYKxNUuamHZIoDTIQYDPgdXDDqsvwRhvDgsXgUpnScwgFRciYwHdYWhBerbWPTHXXZbBqcvlXbxnZUdXrDBnZNgOXuAXeFCDjsnHyqzuNjarRRUCJxRpTbicVVEOIVIXESEKGwUcCZWVqblNlsRlTkTTvlDvPKezgjOGfnJTlfyIKcnPfbgbUZMLfOJrZsnhuuOgYUZBjgOnDsMlSxnfuKfZmeHcpwnsVSdLIadoJysIaaGGLKyyzeIOlQSYKhJwfWaLUBQInnYTBNFtTXrNmkJmLlmlORpwAoiTVOMdTVuTMaCmTMFuCwJaAtBvcZxKjHqcIsKAcfGMsUppVFIfrmoTwxBVIuiBISsIDXhFotzBLEwzYlNxhaACcdUaPQcnDznDefUDyNGWhwwDpqrWShwZhFIJkZKTtNeyCoQuLFyMzGkqckVjBOyjUgKuljyFTUSbCmyOzbNrtSCtHAAPKrSzjOLlgZEobRrfoipyegUHrIqiHwnYzzHsqhTSSqZylBnnYZhWnoGbXfzyWtAaAxhWkfelpPDVLIRduiHlMdwCJrTqmtlLtRxTvfhzBabRrGYPznbATFCqofLkVuvyFrdMyRJKyRAhvpaXbWEwCYvDQLgYczBQWQuEJTRTKlCGIQiVUuEmopMirPnlhXePiIGaQPKPNgNbRuulIegxTWURNuxMAIvDjVsUHqizJLYsNxaEvsqOjuudrrAscwfmorqLRfksSfNMjGkbmpmHEpWekyhYdefqYELELsKMlawfifPTnBEzcVmFUWRZidWbyFYjtVYDINRtZydtObdvoUOfGXZbQpsViOCOUqOWICVXQOISiPHiknxbrznJuruDeoIVvTVyefUqmhVhuxwnmfkVsYGBAkQosIdwHXkobxYhutRAbhWajfyLwEZHJRVtwsFzhkZrAagjBddzYqWndYipkKOcSjVflUbSUamEEFPSFFMytRYGpscFVPgGovZliIzeZILSTUNaeYmGlLxJlshMAsLbvlUzgsTHOVqeRLRuUGYNtwdYgrZcDDFNRokneTcuvHLSVIXUeSlRBGvnoeBTClsvRyAyIwrGWSiqjgslQYYfoWczTeSGPusnQNlkZilbXEnWQortrzndeNZFYeGZtttIDLxNvpvXPIUUvgrGPsMAYIVpQiwXgIUKfCAARlIFXGZVXZPPhaKpEdQYqnCuFBBaClmXcvOGlpoYMPpZVxfHkSbxVKZDVqSCkPvqPrMaEApJlCWEgtxgbiQRyKhzQugBPQIPizPZNFPdhYOoTnwnIRFeGmPZBooqVvnetOfdMZPnujRivItXMkEggvoXcwdxLawGiYmacXXablrRzoYXEfRVauyTSNDMVpoAxxcUIrGZFAJIEevKieeJGPIItwsKMEnaOzMTFzQmBAqUsIqxaeQgOAiuiXaUGxgtFusAueLCIGMhbgMixsnZfVtxNjfQmqPSoZnvqhQVGFyonaHjWTLUoBHljsjHYbnzqliWfmkgbdqcFrEqdPTAIvRPSjuNOpDSMHYeGJuimiOMvdTGxTfbAwlwkKXNpPtidbaMdMTXnoincbrcsHHZlZTepDCBlxKTvPJMGuwlqKjGQcrlCGONUcRFRfztENrnlZiugWtgMnAOzaOoQTUWGmmjIiFYOzaurxYEOFwYErXukgWPJDSDbLFHwTrDvXGruydXTTKrQFBZMzFAebGpAiapEKaKsQeOsRcIuYvSWuSgemuOipDbbwcOGGownIHkBbDJkGsgoPibIBwmglpjxjSYYUHElpgugTfesUdzhkbTtiOiOwtiZmyNRmGvBwjlhIZBKnxvzWTiEqKIiXmBwepPBDUPgFogErPzVOtoVHxscwfiexcLmYDcXDuXtxsCVLzFIXHhPmRJpxxhzdQAaEKtqdQAXvgLAaXZIpVTzKRCKKwhrzLmYeLekkzpNkOLPZqceJdhukndtEtuOjMqTpIYRHLVvvqSchkGnSwVdenhmgbikCGwMiApbzwQJptovrULBLBkmQzUivsxXIawDLFplKmjcCacIwUmmaFKjBUqqdUWgKAfxgYihnzKarvHkMuFjOusrKlkfPyiyTgJaTxwchtoyTPjmgfVsXMNLGSmtAivPnbYDMdPfHFlzMDKBiLTtUHfQZIFjGaaqiRELZDwgBbEgMyRVwFjAHccwGdadYKORtKekEzkCVkpUkbNsHdUfxvBBpVMrSMWhPWJEBYDFyyZevzMOwUAJDsLYfJDZmIKJbqdCktjKpLVKtsFNQrIfWuZkspXqoPqQdwelyScDnudNOJjdVHkxmXVoypdAytxwRvMpqCSVfqrOCifHlBDMxdIlUVrlisgsxlOvVjCgzJpoVKKokmELgoPyyNEvIkdPDeLoCELGJfNDnnKwisGGvlJLSMdeIPcSUMinTtVINIHbAEaxlcKggTVgBgipaiinKkACdSBHdmjfyOPJEtTAZFISadnKWPoyWuavDTrpkCGZZyJasgOwZhAjuWYtwcCfTbNBrPFCUFNhiOqJKeFYVSbwdtKYrwPgMEIVUikXRtUNHJOajYEvZYgRqgnSnGbEUQhQCiYnZrGynFNaiIjbEefvcfSmxhQoYnkTHSAHviwtyphXYCtnAeRFfAewtQeWpETHBgvnYmFxqwRHrSovjexckoiwoqecJHwkYbfaTTgQhEJJYNxAJIuEWqUBndtWJSFZhzfRTRIzLTxzTyohIgREOCeJASnSkQURHmYmRQJmicVrjNAcqcLBjTxVoYOSPVYdDSbARlDMYnannSDtZMyTdKmkuXwjghfRzKkZWJPxVEGCuHHJmEfKrThylSrdLyJmXBeqVWhhoLdQQwusRHcnSrnxWhFAzhIECRpwaAtAtxKnKgOvXKUIDteFuVItcmSQoZCmBPnLANwKKZeOOAAgegJvKogmjmyQFQPoDAvAKaToNeyDhihtyhdwxEoOKbMdgYiQNZeIdjhYAIdvpvzJCSuyzOdSIAfDjEddyfnNTBjwKGNrujsvNvLUjIahvZkwSKsnnGfGZaowpBoNuRAniwfGnleEecQYzOIrMpMqhtUWnMaYjuCPbUcCQtCAtktzKPSMzbnuKYDWOwdpcqjVLdkteDnEEOlpVkYnYygBjzoXGKbenRwtySPkJVRxcXFxcpgWlyOWOxHzTAucSeWHQdcqVOeoUpfWyYJVgLxOBMjZvRSVUoqpYTfrPveZUaIGtFAPxRYcGdnlyyuUYdfZcBEzRWqhKyumaDaSFlMslgFEXnnJXJlosEyxVKCBLEzjvhaQBSfVvtpEUmFbbCsYVHiOnXYuepcVdWtVmvOcCITaKqQcIJrmEToQwDbydHnbDjcLPcvvCPCFKZHPdvGGGUkJTUzqPUTLbuZqjNhKgJlKCNbJBuvvwxopDJaPprmcONgOpsRQPtPYrxUpxVAhuVGLfHFOIdSZLWcXrRzszZhaFThnLYCXvupnzIghSmSfbzllgiSOgzJFFpiFBSsiRYVfYMGcEWfgxBLSdnHJXtoYwhZsUDVLuvPqQnwwexPxqGGjIsYqolFgtZcVPfBRdSjlcIgrHHRrVRJFUcAqCNDpaCMnnTzYBNHaxNRDNsCXFuSQmJhOrNjhVnNYgKmoMkVFwiYqyEfNSvCLWGcCIaMzSmiIfvOwOzGMnhutFkwgEPscimfeqeOOdqgmoGcNMSAkiLeZqTXnLbkzqPFWxVGZGPuxsmVTEeqmblmJAPNaaJjRTtHDZczWFTHmSUPMoABmUWKtJgEyWrLyhcrvNMvYFOgbvcWNgXmpjlIsmZVTygWfQQXMMjZVVGvIeXbQtjcNnHtqgMWQEVYZRPdZDXHPOKELcXNtRBoELVRzVYxolwDmcQIrnBCXMFNNpJMKvzrngxugvtHDJPmxFdKvqJMVrFMUgckHJqxHdNFDxvjOiUliOtXAbVrICuuYeWMYZGJCmppvxiUAzesBhGCsahxBOeyFtLWDxSfmPqcUhsbzbSbONFYwHQttuChatHHhUpbTqPAiSQaPMPwtKfRSuSffYxdUCkrlUlSyzvQiGBSgNvMfosSJbZrCgrXodAMiRmnSpapSdkpQokQHiddUJXcsWkqMgYtLipnwfWNinGZWmssmvREyomqWxiqxxSBSbiXCwQGsjApghGkbQiDUgkgNRJnhJeuPUvlBnyWfDpzsQnMvXsmnfHIoCgfHLntBFXJLATjETclvYdWnGNAemTpsHJLGUiTBAiTuFmgcuFpBdNCUTSbwFCsxNoEZqgUWNYbREQXeimZtpSubcxCIkwPkHLQyiyLsCOMGDJUrRltLhvZsyJtKCfszUykDSIyzitJkDrXselGDAgkNPqjwxLDcvpTPYCoOpFyfJjensoYvkHiJRBqLjvdCagmNqjNZYFYIHQrzJqKBwDstcIMbzLytskOCdEaOuprCKvNUPnArnJiYZsqYhPqWNnrGSyTYkLYGfLneGLOVWAESzuctQLMxYNBErCJGoUAanZEfKdgRQykiMwZeRXzxyQcgNUZEpCsDjyEdAfjNsmJhVWgEjYpEZzOchPqVIpGYLvONUTLnXUmOcmusIgcVcwkZjnjjtlwUaepqrMaRwTwvFGumTCtAKAXzAerPCrHHCDlPzKgWbeVGhlSLeqQSAKjtNTooJeNvVhOBaGyedpOLdeAJnmFQADwUjrqAIDeWqDGfYsUUbTGKHKsskxLOntENOMQVdQoamfsvckULChtjsRqZiAbywdvbaudGGYIlingfTGhFIehZTQAfSnkyxKuewQXlVCvEWqydQjYIDJDziRGUVZMRIcHODXXrloIiVwoVyeabLqndaWvyctesphansHyiuESGcynBwKtsqGgiesLzqzCusAtOZtuhYOCCjfladTDmMQpJJVqnZxuKnMCCkOESKuSqdCVGOHwjAZnPUCEvozqBLUmyoUeSzykepmSpmTQVJmiOFzCXVbtMHRiezjnKJHnxXihKXvGmSAeqxKGgMgpGOqcRcILVVOZLQcZipHOlUthtrUkCFmFAYSjGDXEkLMUkrkXrnjCeiBKAuqnGuxhHusmDpWJssqBQZmsiGodVFbCufVTXDTbLSdSLrVwgiAPTbAiBWzONsPREGoCxKbaeLuHVIzKBJenVFHjlaMajUNfDEfsRxvOdGhgVpAjAVTUhwiujEqjaDuEQvoIsQirlYVNMYYqncWRMLahMKjUipLHAKBPiPtesDQlnZFgnuXDJxifoDybgNmPcgEmfHKzjDoRQBaJcyUBBWsgtlSiBYrfEkeKNocrvMWpwtYBaKwnGlzamozTBkBnzjezpGVPFZlHrtYFMJWKKLhsMxmWxmooHKgbMgbTbrDzqWSKLXIyGFuwppsjByorWsblLVmAPvPmiSOUcFDaJEQMNxCANOhxkSjxpaEuCnILAQuKpiNPOfuUAbmEoPaRudQhzbDTJhjKqPlgvRrrphpKdUmJommjhjyFXuRaFYNprONiZBCZwSBoIVHutIXbMTyPpPjWHiMcfUYgYtXNGFAyrXJXosGFhNOGjSHVWrttQEfEzlmfJAsdWFIJfpeXydyEHnepLCXhfJzhLJyQKrWeRuCESpsMkNfoNrwUDDbkZvQJdVsVNcFURiSOeUmkubztrmKWgbkstxCsqWuBMtQnYkEXMWlHRiWpvsnALQTDyWPrSbEqsZKtlPveAzlvEOfBdfIrrDzoKJCeCrXmrDHsjZVMdEWIngfxOjBxbHEXNReqmVzhVxXSuqNcnunLDZmHoTQzOsOSJroUrNcriQFOFUMlRDFGVntFgFPxwHtsPEVBzKvEZTGPfqEViZTliSQLLYkqiwVOSFnbZUBcQriUNzIBOAjhAaFEyOMVmfBtFmYHYUlyYfrImTPDSisMRyOLWEMLVGudbGoIoKCERKNRZeJlxRrULUvMjxrYlaWyrkuSmwGintVRDBlVMXGmwUyKoAjgPpZyiawwnPQqoiVSfQaVVTbmNdiGpVsGgBHEZBSCWCbdkfdugXZVpLiGyIfrekkfcmzXdZGYSazpQPvBJiyrJQggUnJFAboPEeWGtKYqOKmjRgAwWXzRaFuDbELaGccLChZDHHEpVVyZRszTORUitngagKurswakhmripROJycfPHcSeKaejnJaNoBprHhUUvhIDfJkDCWDzdhzxpJLXFGMwdJNECMQxHCLNIVTzDYYzWSHoyNaexVKNZwxMBIbFPEQEDzdCXCPsbPtmrvxJcowGfFRFdJzXWpzKCtQUKIBXFlSsziHdrxghFqeLBdUUSjUeGttzAPtYtUNlbhSkYBmjHWRdORRRJbWWdJcSjjHgEObFUAOOwPQTFGOLtxlqPdPCtIabncFIKVlQCmScNWYpuvltPtzfjaDFGqElzIniWQnZZYPPxYbZQvdILGAwadpaSLGgYqXLLVZuMYMrFiESZbtPXrtUiqjCiovactdXOHryhIZVyNhgeLXFvTSnPafqfKIebdVTNpFqWXxDMRUqxfpitXGYCGXjzsZMiZynyiwWBQyGzdceQKjHxzJeUQwaeXcgrxEhsclgBrlPuUThXTZZWbHbHyKcbaQOMbnDXsGsFewGwSCGdkiwmEaahoOYcjHjBurjZdbPSscmZSCBgvPOewTywJYFyQWICpmIsYfNtNqrYjNYBsJmuyOjgdTRzUdLBumEUScsTFBswvdhJeVUbJGTCaUozYiPEzopKYPBqSlVVrhKRQmjUXEzdHgmGvpVQvgGvGnIAKBWmOZybaLevMFyVRqhkqbyDpnEGksgvptVHbOPgTHvQUGDUTQExYNAEogwTIybDaxfMCyjJzfdfZTywXoDGYNdMjvGgjMiKbQVUzaYRYHeocOYhsFOJylbbEBPLgrfugoNdVOdQMYfoLDSFbLVeZaDmaVdrOWQOEDvuCIMsvSmRQURiPNvKGotIuQZqTWDFfpKIhEWIczdlbBalZoycuujRqRgYFtboJbvMjaubslZqXcCSfUPpGlaDQSzcLEcLAcOdgIHqrBepzZtIYpdQxpZCayBcjALzGQUedMxABBhgkIpiqkqNLyvQThGQzwoAjHvxgPutIsGCTwGbhSpVinmqBpNMzvfFvEcLtnqVLKCMnMbCUgvInWWeZqCRxnKossIBZISsbCywlQwaAjRLNEZnJfaaVTWHpllcgZOQFqLvdSWbaYNiVBxAVzqoxqqsuMdRcjlboasjSBPVmsAFDNsEEZTsMIzhMyxXsVKrXOzaaRseNcUnBklKouGQzjPQxEDWRnwDCieJxiWOHlpNgLiFAXSzdLLnPIfAzAJlKTCxyPGyqyRprwROlXOnIRRHuZAHoMHcparouSYTHpOVBWbLxbiZGxaopzxvBxLEiamWNznGxOzwutoJziyODXFqSceXyxOsBsdxKyCJusvBRDilfulQFToPHJwRfvAwFCpFIBEmBcHphYAPfiFfnfqAbUemJftnzaNeUoPXNitxIewUMXuFvjaEpVhlbVqULZOnfICSESLpfGmCtuJosWIKjbFzFIxMPIocUwnvtKPmSzPkPXYAAUuoIjoVGHNFFBrFBkKAtPtzHIxUNTezqjyAnpMBucdVMqqNUcQrWaqfjmIGHnBURDZdfELvTqHUVbUrsigxVOZstQYmJvlsoaRonyVjNRwZHGNBsxucDOyDTYbJbjMZkhZsCRaeGczfqheAuSoLJENGDfQuKMcbbEgtvLvFnSZjmpKgvXPPDHhEaeqYJzWcTvSjWRqRkldDGlzjCGADjhDdBRBhgGKGrCPpSMJkzmquPeqIvMuDRnPNVUligLHOHxYZyXkDDmKDSrTXQXzBCoBjZZjmabrCgzBfcLnNGkEdkAVNSKCPVqBpTCGQNQwLYhbNkqPmaqyguFDYuEiQRLVQaUIxFsrnBEjYAYDIxhCCNJPdGjBsrWkOdCgiEZOqYJGgXWyiZpxdPezEFbuNSufjsgWQsLkvbGdSlWGUJVzNYAYQpsyijwrayrwGmhskThgAVyVeynRiUdbdixLtUyjBkNraQQeVnQfPiuBZSwurGDmZjAKGCjgARkChvYimzUxZEgWhaVGwmeHScHQGmBQZGudTMsNGSXkkrjpvRIrtOsqxQaeVJsIURfqGVLbfzPHVsCeHwnpYROqwKHyMGcYqjJmDUsYmGyYycSRQgFanPHZdYlwxjmoaVTQwwiQBWEvJucEmUpxwoTABBIXoFGqzJIAFhsryztpsrawoCeBwJZjTgIlWVZOQzWIDGbzOoieVaFqoaiwqNvOIvOSputdWWuBLGUcxvUnemYMNZkzdyTeBBdhekFRZXAlZuvpluJCZguxENIjMAMJsTsuNPYIeXYxbrbDvrxESOuINbRRGdDvqjwCBkzsztpKgOgqpJRutiLviZzxViCfwQDNhuyZuoTCSYDcFFyPhXRLFHrPBaQULxaTMTLdLJeoBpYEShADXeYXCLGlfueyPVwAnYTLDfuvAGHhiMMokooCThXvBmQRxkLFlkJjjETTQqVXPtQdYNjoOainuHDduPttrIFTBasCPOnKxfkgvcHfZUVdaHaMJoxKxWoMwssnjEzYGvatvMkOOmxcTvWjcruIumUMZKzJWqtnFbVYKYMnXGYfHVlqqdAPlFAXkjZRBYPrAVvYhrsfyjVRMKMUeVdUnYGVfRjStCXPzjadJZvQjabQolXXnfYyGSSbzSpNSfFqIIgmlyvQNrMKgRLfYjNRmIuEzqtIALpqPBOmtDfcLLEvnVexHJPeicDETVROouVXSWCSeNYtOKWEaJSwKwCDMmxhppiRwLZDvIPbDiPjiOxtxhfOhndtaKIHJRcuEelTwtvYWYrInCoxjLMXBLtaHnTaPrStYsuowqmJvuvTNqOkqdDfCWruDDKooXXMfOmfEuHUlaLMxLPOxnSOVdAELIIeuVrgOAcAQMwVTQNvECHGILkxPdNTBbBWnJEWgsfWJCezaHQeeVkyfBPHCmUZkRsFQmXbLVmbzBPrIEkYwJezueNgVMoNvrJzlvCJXLIRarMNHFrWnmiuXTcAprpGoKvrRrwoQbTxfzBnzUEUTyQXgNVEAcjmctEENUvLjSfJyMVdDSDquluDfEXMdkcVoiPpZoKIUaUJWtXPuOfODuZKdYYvGFNruspUggsxTIEdvuBLKDjCRdpvAbhulUZyCfiOpLsmRaWbKwEAiOiayArcNEmUWjXKPnQfxwyfxHsVgLKIymQosnLHpOPdHtSUOumPUbMDXTlVnMoFpPWXvaStpzTuygVWhdXTulJMynIoPTdbZPEqZEcANAajOhYPRLznxdssFzSAjVKEkyNziqOFbDfYqbVGdqtUgyExloaAztNTmHKkPWukXjnzsKpuQPwLuAiMyvaAHJQjQmCqCfMjXLXQoHpnzuXqcsHaLVhtsOqPrTfAYVkZZjJFccgkWulLlVUcmKhtFExdjQBvcKUTqZrhFnOhLXhxmeiJTHnaLUvkUmhESUBxuilYoWrnYgSbcqtBJRseiauaaMYmMebUAdLLCmPvVdAdPuRZgcsXFlwmhlkPCXTFRkVjiFWzHzPTxPPbZVCOVOgEyKnfsEHypSyjOmUdfGFkHmLyYqBJbEbhTUiWmHrnBQKdrFWroyLNPUkdpajuksUMumYclyBbvZqNSwJPuQYKdUGvMddgwyjclEiKTuzFpmPVfKPFErDalfzNOPuDTKZbdkBDUlYOcCoIGEfjYhrasZpxGqWQlRMfmvwaiKVpxvvswRQZZBWlGPWyumqyHQUEHfivzzdwMrENovMzoyQfPtvwaxoEtmEzGslaaqKsmPgjePugmJvejZetyLSvaLbYvAXIgRKHSEHJvuafoVNJNTULWBEtDAYtJXknyRLDTAFFCCRlaTOyoSgIEDRbmTaQMuPrMkUfUAVmDeeTFndWCqcRvtDsslJzuVWhOgEpHovzyuHDJFiPXPSwsEnNDSjVNWpVLUPKIEoVvRxVFIMdqKAapzFuGIKBsAijVFKQtYiEZlpZIXiznCWfOmrsZVXVoxIobGkFbUYGJoMiOHdAZmWGVNyUmQFbbNpsWsyYnhpPHocBywXXfGXRgBkwORgzUcoomJZsmSmZWfjkYExRNAbsjiLLUAgarIkzyjfvrWiorRngtVntHHrbHyCWiHrwsciLmfhytvEtpoESpKYnAbYXJxLMjwMyUyQKhbIQfBmOQGmmGIukYukuNDXVthORDoyrzMymlYfKpSCbBMrsAhNYMGckWaiHJiZyJHsoqfePrLNuPmkFyarSFGMrGZOcVMSpezYCBHnwQjXRPcoCvxOMSnxtQeugqEHfWwSWuQlsnMQuCFxZZrEctWxOKYtvDbvxUcbckqMYcYCyeeInkfKUDLOhfblylNrYHmayDERbTbplNYKmkwulRknnMfxWDyGMYsyhDkvWCzCtJihvXLEGAQuEFmhkEDzfxRgBJIcQXnIUFWKWeTdPzUROOufZxWZfvTyaIHkLerKBKobEcsQYIxdfOruGJYTwSbtZkzdRlCfLASUdCDRJotBJQqmoOyxxXbrfveUfsazRnkGWbyvzbbaAiRXYEFQZMqntIMevWEybaXOzdeRaSKKFDVvXmhVWAecdcVcwjAYmEnOJhcQvWhJYBJDjxKyoFCRzgJRVebIRmEEBYsLkyshDhUfmxtgoVeXfekxqrcuiuJUVZGnnZOXTUxFYMqZeqpEnjmJtcPpSyzxwmCGMCAgnVHjMIGnBpMoPlYWSuFjxyHntzzFyCpIfSXxPaJYvapIwBpyexpDcjkNLmydGhUevcNAPmlIRnvOfkZcnIFYnGqgYNCZcmokiurIaLRhsMneVhRFuYBOEgRkbZheDezifXJIjSdcyIyFkMcqiBpzTKOemvxYfMoZzNGeJnOodURbJuyeEnUgTEuSJlpEXGAZGIfZECNjIJWWekpeTQXLlNrduEFyeitdLYofSATWqqLBVijFuQlLepCOtfOlHqARLHmeesthItVPlIWynEJCBWZARfcmrZJKItauGMOTiLFcHbMWWbFbNtSsVwPMwgvsrQwmEcyzrLtnFSdclAICffPhbCfgfQbWhFpnQCUslDYKCQSqqaXDsDiCakUeJnUqOEHCzbONtzNQXiIrthsJGjEaiIhjKchIwpbFjAbLvVZquSfPlwYrGzzVMZxmLjYiPchAwuNELDFPUTOzcXDBJXtrFdTewVUtOAiycgMZFELTUQFUIuQApeliGXZpyhQBPmbOMirzBoUDexfVxrpucfsOGkktUdMjawscUHhLnDBsYazdbjBxQPhbLaZIkOzRzPSmFSMloHsXnejgabMPdLTpBsyYELYRfpMxwnnzcEXNcrlUlctyYsSMxGguTjCelawnqIjoaABVGkOxmrsMalPZDSWGcrOLmrToQbhppARyprgjayWmJRllyPfhrKmHTOlzSqktNNheqNxnQUVVZxPkmQbaXqaIBZcMnADMmRpnsUsVSppbifyHFPXfIWzlnvuRWSYoEcxcXFGtlBEluAmnSiXCEQuPotLPeyqgeBXhCsCUfViPQtoJRCaJvvxfBhJuERqbRbOfbFHgsCvWHAZbszcgtDamLTrQAQwtFPEqvHjqJpsQlsXfcHuFeAIQioAOeFtQIrmwwOrKwuwWbmosDlqOmmuTkPYFxCFCzaGGvwYwfAxgQiSkdDLnXhXqhKCKtpGXOHHqzPnyRyksVRFwLZCAnnumkRLRDrcgTGpLOgznVRALHsliTcokOuWiUPLerUsroZEcdWFFCesqfpSBOPEvAdNINSisZyLlutVyxTowjeOhJgKzKHxqikIVYLEQPALPkLwReEgIEtzsYXGUiEsQwqwasSJzrQNbWXkRGrAGDpfcLIpaYTfqqWATLUoZncncUXedUjKvmmoOsIThWXmwlVLQBROZHXsCDhrAEWKokJfybSbKoQxyZEBFhdlIwVyVetcmSXqFWZLEgxjOLfHqBLiDLZSFiNTZfQfrhZJbECAqoMgxgcTnJbOzbcRLUNAOXZPRJHPixuJtUVfKTItOgqStaHtOPYlQFILxtxJosSZOaOAZkPJITdorMxywGYBERzkoXgVvrDMHyvCRuzKJojTSXclZhBZIZggGCTMTQsrmxEgceWNDTFtQWgvUSGdgQxdwPoaVAOGJjZtyzdCtPUyGXxmFsygffwvnafaaTpbMHLxvjKzpGtBitKFgHgsnFeapQkroHKYasoyZsPhoYqBOuGuEzXwetXBcHKVKYQKzJmIKKSeUStkBobDJPzpZINnBWQGWDDdljZxNzDUUkOWYXVeIcGjyDhVzcjBvCjLKZHWHjziAhJPDlPTxbacspwkTbKHFyTtSdPvWZYPcAnPgbdwukIFriexonCIwpOvlOtjEGjwTouFCCIIwHYBmZNzdspJnAjpVTZFKXxJKeMNUiwHJdBiBkSXLukMGNfWmtlImVnOSvTemmwYgBWULFIWwhWnEhZzQlZtlHXsYocSsxAnQrkbhCDjUCNYawnLCvPKAxekscTzJWUlupfLwtbEFKbrozwSMJopxUjBUewFuuRfMupijGBqrqPTNyXhidpSpPxWLGbZnduDpSfzVzKaVseDKgvUkrHBuHxfZpfIYYVBlfMCAybkdYdfyeLpQBKlDZGrBoquDveIhwzxqCjXnyxyEOqdfgCBFKSSqnahrImWISoIWOgZctiWIhWDrkgpiXciyxNKGITGUNYGJYcEiPVaKhFXGTGMeCZFAkUgvUeDlTmnqwWFLiGmmIFffOTKEpZflzCBcTsduoqWNCZNtiByBWFaDcaZnuhJNhQWbpaRMLSXuNNZtboaskViXnYQqRsPTXPtjhBDJwHaJPwKjCoCXXFPTlABrzorMviSNqhQmpwIqKHBZUziQrqFZmRBVPVYSzZjFotJyQDbHAWqlBAOjPlVcszlgqJCCgyYuSEuaUFEwpwRFOinMaOvkkKSCWEjACpOgOiguEjcjABSDBrqXpfGDbwDkteJidAbQVVaJBrxiKuuxLbgnRWcDHuKekkEJaywjoUpiXjYLDzehYaotiJebMlUsvUxtPTErltwVgJrJMbBCPMRVnZwxqfhUCeKAJVUHglVkbRAQQWEkgllklxFhQtgqFCwXvAuKuhUXvInPVCqpgXaSQdcPcUcQxtrnSzuuvCjytqnTfAhWojYFsWZbGthcRLzgrAqgJVSnhsAimZFMzzlnXlsZFpdnCsvWzCiYwCfhBFNUUavVBJccqCMtUCoihualqSxLVnQfAKJaaOwDkzEmaIkDWQiRGJMIHNyTtIiyCnAXaUVaywAGCYQAgHUSbhTApSqDNVnZRAIVWonQjsYCKSCRBcSHLMDUxPBvnLbKAyMQpgYpLRfdjxamOUSFELDsJJMPPTmESlNKBwBphvEXjNwbKlqkVtHpUCRyQsYYnmpPeVeOydSaYlZgAoCUXuUTqLVShZbYwWcSxUJQTFceEqKZQkLrpNFzqxvLxNiwklPmBktmIBAtyyzCVhqKkaoJkbohPCSOQYKGRhBaRjzueErePgXcuKCaKBPrCrJCzuGlestqqEtjXVYleZCnNQzRfIxPYAmLWpUFFtoBswXotClWxFWiZPxaYfUkKxdbAsfNxiuLHZBxWgNbOSwvdDCQcqpjOgzSGRRgJLyRTWNImnYgFGGTdsoPThJVvyYhBEYpYBSpQQtKRGPfKTovhvMYXCQznBOWgohznTFwKBcBjtMPGAYVptTZVzYGYSNEtoZcgzzAvyhoLyEBsovBpHkGVLrwotmIDgxxjAmiLAoynJVPFjwngCqKbZbbVElnctRGacZzJzEXcughtsiYoknuZRxaaHyyIscGbfAZnVlWwbsUEHXXashMEecjaLzBRgNUpOWVXBiJyXJaMZSPbMGgiXUaAHGVtdirfxyIzKvIMfvjVHujMDbTycGrjOdxpDhyhlKIYShmfobucNjzyceJnZdpbauKwduOwIYavDsZSDaezCxPXHmwXfxJyztjgeitVMYSKQFUVOOaLwfWrmgwSAUYgeQooDShpbaouSoQxEIkItOdWLRgQMgKJaQtkcPjwgwdMqYteFaxvNCrhOnZiZYrWPemixfrraQhQyymWjTqVDloErVYCqjhoIZJZECQUlpkAndwquuTVnMyggUYoLDocdDNlaxhNGFgzwXVgQoLLCULLnzCSITnbBUtUKyFyFVAZZTYDtNTelGrPDCKqmQtirTYnSUuJPCULFYeBdnAkucmgWLwWdGpiclhPQPxdpGIcAKjUYVGdUxElUJFIPQokLxDoVoUGWVmgkvkHOMXSxziZGxwzXzONWftFCQuAIyOGriwBLvmIARcJZYdtFhDtDdciPUGIDAJIPXVevFnPWfclWbrgSKyFXhEofketkEnEgdeJZwrJGXuutroCtpfIWtWMuFucLKjSsGOnMnBluRfQIQntmOdwIgWszvSlGZuLfuFmsqHUXhvxvwXluSRMfVtzVJEdrHowcZmYEsIwjSlyeCkzFlNAwkzzbipSHTDsJFBcfFWSTBZjTuIxQOHofKDMAhstTWKubfrwkfFMcEbKVptpUtgxDEZsQhDCXEhtfvqWsbEUyeDYiwEFoMlGDEmaeDDGjUwwaTvRgnmfXRmTYZRflTkFscvKEVmgNYkOimrIbSnsuVRvhEVuOsSybGfkZERKrxYzWZtOnUYPDnDTgNfLmliWYvQZBrpgFUOKRCTewYRRLCwJrHhSGBKEiLePJvEguKRNzHbZjsvhTAvyJVdOJJKicgBkMtbJlzJvupIeItEteLhGHMdTERVuoKOqADzNRoaPqdjFtheoKbqhmErEUYfsVgBeTjbUzqfjbWJJLZuMZfYCPgzUseTSJlXdbHNPwUcknbphbeFKUlUExADlFUoojtkWThQQwkQOXChzANIgUBJGtAcHVKDPtfCQomnBHjDzhNImSJgGXsQTRfqdJmdCQBXDVrotKBqGTZjprvfEapNnCapYrvFDqbXJFEKguLLOxyPalQlENKrzLNYpVpzHEhiSpYRifIxwQDNgQvJSfBBWkOEmDyfxDRdmbIwFwsLjIkHOrIGJALniSxcZxXaHdgQgzxDfEwhMVajxpmxqofdOSCbypdEZlsFrpNmccppClhBZcqjTYBQWPABCDcgQYOMgTAJFMAssIgHnQfmDusYJGLiYYjTmOMVAVjqTsxlkXinYaauFweTRvkYdiAzbobYEEFfqYEBeDpWcoSUKZIdyJqOfjiXMonbeIopngkqxDuJDuAywOpfSyVaqtkjZsScYDjdEdKPnkFyxFjdLQqHsENuLObusXjPZQLSSASnpuMRsKxqkFcuRDcriboTBHySwQpGaznRNmJzdLchcpuTSngODEKoHdXTpHAlzvhSVpJYrRLCWOMzfVFrDJkMBIDohdVoPBkoJrgPTEHvBnZrMqBDOTeZlYuIVeOSFFdmpLMaKqQlaYeqcXdUuqbWmHhefwxTRkipeMHlkGLghDQlOlCKsOvJguOgcRLEGClQLRcCvnKiaupfQMTkXwPRtbsAdUksxdfrbZWygHYhLqKhufNGALOaSKKdLIpFwNGRSmpCZNzxQINPaRiPwmFlNohayKckegiFzEaaUprvMjOLjeogUtGvUJllmVUUAfoworJiqyHcWGnCbgOZpgTDSzRVhiJJWlTVLqpBTHBfRfMKvaGebeYLxdLhIoVXddjyGwXeSLDsaMzPeASUXZwVSkVfRaeDhLVFExPKWKIsixowiGqHxbGQSDjGyOgkZSoxrZLDUTJPuwsVDklYWzUPPyIbmGdWjBJAOVjvVtSpLFXGGtWckUcTspSpyPHkbJsQXIHdsfVeKMstKusJajAhlagsMVRVASDXgYhDXIJUtguljjxAuqAsPcAvzCWsXbSfNjysBbQmOJWEhacVSTaYehxnlMnHfnPHdpqFSAHrBtYAgrCvhpeUwTQexbxliWWJLdxhEUtaddgTXtFgEfijkteHkxEewdvjoIuOfuwSNknMlQpTpfccCgoTzRCNACcetrFXERZLztQmEouVeVmsnvrZRASgsZeDsGlqpSMjMsFpWCahRNGszcTIoRHVqBrETtUjARUYrFFFykPFvrQNpdksopTbuMrxPeNBpMLQgJZGXUkaNzmvfGjoAFVwReBwMVZrKOGyuytznDCmqCcHvuulhdasySKXVLkGhpyLsUDUianGiJBrHwhpdeTUSNYHyLCvCWNmBKSabZqHmPFjvkLyuvtIbQSeIBRMnKNObCZbMCgWpInbLKhBjHegaLrAkXmghTSLgieXzZTufgovgipyENmuJsuZzHPVjXbItOWmhYopzdukyckqcieDOWrbpzFiTESrldODgpXpWiCysxpdbHytEprmBzcPnQkHbittyBRMInkNRmKsholJGoPZUOMuWWvmaBnTzeWTyDNloEFLwfNZLZSDCANPOCrwbnthDXNHJlsBqRsWqyWriDfHYTSfCfddPHwuictRJcRDdiBverFBOvUXBVmMmAxJQZVaafgbtMzJpqCjenlvhdoqjFvgUABJUAOEvpZdIURwMqRsmCZUiipdrIHFbjuPNqXxaJSMuIYfOOdUnvZuRKiZaIzBDqDpvHTWcErRvNZRBYkowCBfQAjJuhoVAgGvumooIHLuPkqaOTJvktIpSQumRFWehokmuHZSsqhgheSOCjFqfbSJvVntrPiuoQkfksUHzNanYSjQfTuehBUBSuhbtvxLSDCcuPIfjIybqDgXQjMFYAONeCRTDbVVQdYSqjgpasHDJDnGXfCPLsEoCMlVdkMvVyAiOENZzPDHIivonxaNlXdZkuatURlwYhIxXDpWSCzdEGZaloBKUUdcpozEiDxPKhfrgwIjTIUHTfwhnPhDcBtNbajhzyJdVqsgmfHYemciNfuKUDimQNvPOgHpJwJTUSxHxYXdukADuJAiHmwQwShQAVheDXYoQQUtMybUfBPXpqgeimnjeJjWZbsdNWgstNlHOOFkFDbYMjLRggwybIgIJEpKLBkjQkYgoiLduhPYAXzdltABYkhwPjYAorhoMvykknGjJofmaooACTsulzyoxupuSCjXfhDtThWrnhSwrFUTyDoekExUsmhliyYPaAbLlsdDjmWRJdvOTRfizAcBKypcqInvXWXVsLFXpiigoxATUSBLTwMrwogZtrUdIQUZEzKZPJutMDNNKxvXHCFlCjlWxTjcGqilewshCxTdBSGBkGuHXkJXazWnuLiYVkeJHAPCoyAQkpMQgzdOZjWbAPguwDURGWOGkfeMEvQOsWzzaAUYDsXnHrtyWOmnJMFaprzSjcuxNAsZVjanOHdsZgPlPDOBbqqBvrfnQqeifRXiplelFjbGhAUiPaQuJdyJrJonAerywvUCnEsABmUKzePkaKTtgCDgVcHqLwnVJoDYQiCBJijycQTDBzQnSEKHwSkTvYskqttgUTLEWgtGHnHOhWlplrXCUSlHxsMFpHUUuIGoQiTfXRTjFqgThOlZojMBedCNHukvkVCccPbTyEOGqYEvUhRJAbPwJwIyJzOTjsYrgeBWVlncFYJOkNwIGofEoVaGgLGQxaVDGSruTDipvfmHqQiiHeLWEcNRUuiXzxArmEOtFchHtceFcDGHKDOyxFyVgfcFwbfneEmbeNEmjhSNhNHlUeMOlxnTTROvOJTcuujPyByeGDDWQHlHJZyJiJgXexlyKtwsBFOuQQASvZbfYbaPrywQKDmfthFCEHxqrOeKRkbxPXZmPHBGCTrEizpRbOrpOiaTQVIeIbQBHasfcjFPwvqEMLKPGZIGRUVwARCHvIAPwlmHnodMvInEBoxFxmTvMXeBeOfyBvUtScuidirvNopZiaGbNSgTyYUxQNseoKDrTGycKzBaXgwfzoETdYMpdMQHoYwBFKrttQNGEsFHLzAsnjVdGlCfCKHAAmbYYrJAIQRsvTRqaFGMePLFtwPWObjzKsBhfkKWLEqljwpsHHRlomhvGLiluyWNemQvsiUFzAnzVJowPTHvYcGbixbnuGzOyQioXgRVLWoZuwREwSCfSxtvsMZbjKwAthhHTmEXuCFKxZbwzpSlVyPNvCsfVpRRerCjZNFDzmfaaWqoGrQviKLKDbodWYgTkdKZrzxpXylqNfcvXlPanbZnRwXKvmppCgzycmflUBfbWXcPpSQRoLlcracYPcXcDDplOlJxAAESJttnImYHDgysWXdKWXQhZzykFuKeLFXeAeyLdADWfPMGPcVYQTlPjGGdOiqGdoMAkaxybDiCNaknqyYmTqPToRxyqwVcvtoDChubiLQSJnXQlchONAJoNyGgSnLWSeuAJDayewgnRxULzRhNvpEZSJLjGSlajLGbLvkcMBCnxBGZbtOouHWpAhCSxHHoKTKXdQQPNqXKDQxdjCxiSgCcXfdoIKlXzRxpnmIjaixHWZNOiQWDIxeocULtrDybAgXsODeZDAjpLuDxpqpfvbKKmcwxVBDsRgVbAuIyAhskkXRKUUzvnRRjjYxTstaprUEhzoNJBuaqDKIDrNmbVuwdGRjSUpcchlExlHKYrWvSNiLLkBoTjYwJHODHmGvOhnDyeeZZOAYYKQEuuXKPSXkNsRHuYGwURDKyXzkcaAzEbBfKCKiLGDjVXoZKVIFEUmUNHOlvsUEAPCdUYmcrxQfZUwbmgvpaWbevVpNZPySdOrFalNyFtontxkcyOawNKucuSeqJOqnoJEcZQjoixsfNNUJadyHMZsSCZYxxPmXRfAjVOOOpWzXNjDKpOXLnCFzchIzmSRmQnAhDnGWTTwqoAtFazrfRAcgdDnkUKumEgtklwEFMqYesWLEvMtETRMStFLFfmiinlHwKqwYuqJAmwuxxXnyoHWeFUwHVxZXildGKgYFmCFtltjxXpMFdAkqVvFAibcvdTPtMegMeTzWXVdKtSIDCJcOjNEGoMOaClxcZtFRrsIDzHVnDneXfVZgtUsXgxKGpSOHjkVCoBMNzllcLDrWsmszCPlrqtdyRwgjDKEHuVgCoEGgbwOVULaDgjIslXZLqBHWMKCNCQRQwFYHiSVsrEgBDJGkAHxSjrKITogqoYwbkGMBDVJgrwLQlTAbcjWxSjVcafbaCffMUWoJMsJQMmChEhokUNhhhWmTDnRnkKhqfGwXucZaZrLiZPpDcplAWVIYtPNEfzJQqNpmUaiNnaNFPalfzodjbMxXiogmzvdsOoYzaOFaLinONqmuUuHObnmiSGHOJabkAeqqanSUgJhFpPiGnTTsospRkZnIWtnCqdhYfsHsipXdPztXYoOlhquuatoIUcGmvbQyAjYVPQNQUqqVQPncdRhMPonAGeZXIBwnbOlNrYEQNELwQeuMsjeTIOhxtEAsmYEjWCuwDHznYVbSltRwoOARMXvLSisdyNxGdeSNpHxodtAWDLgiOOJUPDaxhNLZPISCyILYdkoGRoyHunmtZvFCAkkNXWJySEroJYAQrcEUVVcgZCAodoAOhazFmozocEfTZPYtLTHLNGvWyLKDBiucCeHjPnlkClcLdWwZdsNuvSaHOoqWIcgboddbxrVcxHBrfLMaickdPyKSkSUGqlYQBZRbgkVpvqamGtGDWsRQspNQqIjQZxJzuUtdPhFYxqhpPQbBJclemQToasHXpvKgToriDCEqNkBzteAWGfAjzFxOjqMTOMZMmvzpoOgqeqtuWunyUVexrKjqqEcctYRzoYPcyUbSfFrCZfsPzppoBslPdETKRWaGCkvSeOatTMHBjSVKhdUzQPeZiuEyDLgxHoBJXRxLcpoQXBBPWREKfBxjzMmOgxrZsgfkXaUJbtkBiafwGfbfLxCuXqAIjBpfugpFJbCxofwzkknSkdqBGgIqYaFQAKhpqqRRFqXIuIIijXzVVofMxSyBQKcvSgylcPZYvYXVLxoKuVrRACXYutFKrlgNwooaOwCBEUZTPFdsMRkICSqiEZgBQTYWNMOKZRxAWYACslWpzzRDGGAWmOPzDAqyJXwmaRlQndOpojuofTVlAbnTEQVuRWkidItGghuphuWpwmKDHKcbKKEjewxOavldVYMPLkUdcFAhkGyMslUHDxXWnHiXxeanHzGmhsaYTRCZUdBzYmUChMMrxHKYLifvTEcHqPHlnDPAJBnTlTflpqbCQncFbfVlGCZQefEcdNwxtFOjXHsVxBSkNuWBYtpgCQeYToEPMQxOtHzrbMPwxyDODxUUHHsJsHhiAojrypNvjWirMwXYAelIpwVfDemDhQovUumycHCewtpsrXBroLhLQauSvjtKfKhpvwlTEtmjwLzwLRKkoFZHUrHXCXwfpThxEovXQCciAikFVepLrwxtLAPicyDOJKVGfGrPBonbeizYmTIAQvQlefvNvmElUVSWlHIUHrfrERnPJaqQkPtmDoIzYtyurqIlGjgYXqjrnZcLGNapPgqQbcBreCfPbnBFdyUvPfSZBqWAYsbKNiyqyzxuYFlHNMuqxpuUHbCvfJTuJrMFbWYfSVNXYtHGtNfMGEDqioXUlYWpuNRUFYfdmLFOAsoDikbXjDbCXsPZQHuPNYTQzfkDZedksuujNKEIAbdiwPwBFGYOYHVzxCqZMAjXcrePqeWqALiguLJQWkHoyHmovtLMilGDIDMUmCtquIpRiOdBeQuTdQSUmAfpfZtxkSkgqgezEBWFHccHlMgbdYZwPoKppyQkniCPJGBsDvBnQFxlrJSOChCgYoOjKYiMaoKePYtMoOwrNQGbtpGXXLmfAJAKShHwwssIYyiEcCquBYHZWVEhZskVyqLjnlthBYwGNecWGyRhcQNZabDoLWDYsxRfPjpgdWsqnfMlSnvxzAPTXUyeKdoPGUwGQGdVNlZkeAxlvjfPlBwWQKZQlWhQyTzpglzOTokauPgPcroEjejIoJguOFfcIExMQKrIWLhCOwioehSeeGBXrnmDCjTYvbSEuCOUREDtCCRSUndeWxeevEqjYgzBMkbBWTTCQriFtltojlqgyaaozIBgXyShoUtjnriJtmcbUuEZcvMEiyCOVCfnEuGpflMXGKaHhcLiOScRnWjwTrIInNoWjQyuzabtXWiukvLeoMfYHTVbBCeAPJbKcBRjbYkjEsWOcuKInCyaCPaTZFFyZbmikBXGNGyxfZQvKtpNIQoZSaBsjrGJUsoeYgkaKHhABhqAgZICoQbFzgcIpskVyqHsvufdiifgqGbFAfmJankKcJvmlfeEZirxIdPMzzuQUtIutcayIPwVZPOZAzkLMbOHUuPCQCiYmZAQPdBPyLmVoKQOeEeerzYfDOntZQeoyHFBVLvllxkutkXeWsIRdvyOlzVJDACvvrmgbouoJlxAVdAuJghgcORixRYrraAGyXVkOmBvfmipwizkYkVwYofPaLZcLUMsEyYigBCnxdvYIgaYIqLfDgGAnubRnyzBGZRMrmwddgDvpoNrndAcngNWQZcMxDOqFiiqRNpQvmprcLxajthACtAERELPxlKYqJUGiJUTaJLBhpGyPDCnensWnpeqTcBXVXHafiPpVcFZCuEThNrAMvICDSoqPPtgaxHMugjSLWSKtibeDmECGCwKiemHzUDYCqctmgTOmFpxKHCYjmzANwvFwLWPcvhrtJbqtgFcgycZkDUylZpibsRGPbYZYGWHAtlqXXTaChhyBeJaMFObabIvlINQCZxRvVSvRVKlXUOkwtXutOMVzhOYbImWAipInqMYHzDIyEzqMyXVoffSGFQtlPeVeAUJamhxrLnqCwMlBXEhLfTayWtAvhSkVZEVsgnwilTGqCAgosvtAUOicXTuswExVSHpAyMwJzFZEFvivGjLrVSFyrgXIScQSSuXBJYXdBVDcaBEErlWPMBJOYRRWyOeJgBpQoNQDMERlAGdbgSEzAwwJNKKjsLEjWCyGKLGYskGSDuuDYiHgczuZOQOyJfhUdLZZonSrUwGIjktcyLzbhohdDKDINfEeKrXqrwqegBgcZSLfSfdPocZEPpFwWdSgxhGfUAhsiJkNRPLUOICzveZWtdNQyyzTQJpipdrMKdrqgKNYDGdIpvCbTmJadmBrejNMvUolcxtiIWUpCHuSBFGWtuAiBAeZazesVqAQERwmGUTqdfWpdvDAiBPbOfOWhxaJsDgqIUwZBsIFamcfrpFDOojWFmVouFCJrhjSocnRGUgiYCOcFwUYhQurOlxaktvryyqnNWlwKowCVywYlfiXeLxNFwQWQRKDFoTRsndzERELbeqCgSAmRQKbHcpVQiiTNWXsgmbFKiOKVYXqKWqDDDPwQGaKHOBprimJfTbqmbXYnojJoPCAogvjDnKGnsfkCQDeMGJmxosYPlujiYJdoTNKzRghCjhVqTbKHGRzxTEbRmWHEJJmGdWXEkOtOBZnPwTsgliUjZwmkXuNwqVFyWuMYYXZDkyuZuUuZkSXilyketzEkPppHBDiaEHBvOnAOUaoechVjVJTgYwfLjqycssMdZmFverOeMQrOFSQWyljnttGkmDLmwzwFovpRlLdPhGKTMIYcMBirnEwodYYjCngHFKoRPmgRpjewbBVlzurkkoKcqqhsnRMdlybDffqClwGpxfXjcPKwhHolTsJsQXBNBtwBXaEFzVEeMykaPdBblnXBOWZoguJMmjJjNuusNZZYHeVIxeAbQCWpGdhXGGKOcOkbXpqtXBLOvfqMqTLIMwmPDyUCFoSMwBQINrOnpXPrpipWUejkPLhLfjBVsuadMRdPoASvBhcjFiTvcyQYLaDLMfqTystOgFnULJCgzWVqymongbnzrxLIARXZZGNHLlEawvrDGShkNqIBYWCnPTexVTxydLylpqMAIieHWnONkPJfozKZygMmqgiQuEATBRzLIYPaNDENbXmvsCnXxTNYryzygmdchFfLrqvxpIBiDawOarmRHvFigdtEusivVWeNALPwvvRMCbYSpUfaAdeMYCIEuTrDQCczPjafOQhUgvlxmBqonXTTcugPlyTajmlsJIrTcqDqPbydrtAVozBUXvsYeiullrfrqtebXEzJVtLPJzNVJwFCwromMXAoLyuIRApoNRQeJboyslAvJJdkdsISeRUDidfBPPJrwJSyWfTXdYWFHlXQeNUTYQdsmXYiUqcSgeklAWUNfrcKOVpnSOSlVHGTxnTWOmiocFReGqmVTdaFICUAEcXyrfkAVfSZnlGjtdoahnztoVzEAzGIGpXppVtPJRcAyZSzoVkbKNjFTADDdvaRTwyDxxIxyvXwJNQaxlnULuYKJdwyQdBdPYPeMvBloMjBYdNpjfvcCguTJjyLDkaFmdgJiaENULAOheyiVbvmtuoKuclwAQFWdSkbwaxFxirpfmNlwXnEYOAlvSppcVyJadnWvspqewjIpFfbBwuCBZAvZwPhILjrVVkPebCTnlBNRxsIfVlVbDglZodCWejDvIkCudqcMSiupXhWPSBcPSFIohgbcRptYwEqsAiaNpYJQWwJzwgiaAmJifpOBZhsonmSYIXLrdiiDykRwxgbfvrTEOgxjXrvqNzcuVxdIYCwrHduemcPZgHNBqhKONqwneFrdZUdfwYmtdgQcWJuOPWsSHaBMYMOCBSYfBUCjVwxFovWjkhtBdGzbHnKqHiffJBOBTWZkDrcDlXbnpUJkCeOllBPcjWxtVwEyvnuwuTULqyZTAeTVvbQsZrEfiwlBEqSLUZZhmWiANsxkfUYSjvYsbtlxVQyOgHDyAMaHUCSzkJQEldikLkAOUOAZpGRyrDNcrNIyuDDlmiYQNbKqekwyCMkTmLnfaPvmEyxMsHPJvbChbkbSkIBbGFocXNeLvdHYunrmBcyYENHrGPdyTXWqDAIUwamTBwCUzCJDoJStsqnCAIqIncRknmbgrHFeohtMfJtGnfJrlSvwsoCwuoplBXRduMeiearyBEliFluJKYQyDRyvVLAiZZdFGJYJvlClwYFJHNHPRHvAaRlCskCEVGYONLnkwlTROppuoGkkEKAelVVXQAayqZWWIPaJLBJioFThxTOIqJRGGkEiRNArnpAaxOJTCsPdmqthIvIZbvbIrpYGflFizMLYJeilJBqSOJWbkhUDKWKYBPoExruhNKpoiuDLenypXamXDHLSkHaaNQCVjtPyfJPlgTzwkUjUcWpCgzGFdsxRZbabzheJpPWEZchsAgOOMtbOvOEmGqWhycvQdHuItidxPdiBKROthQntFPESTAONAsaxruMCgMBBTjhnpAdogQKUFwrjUiwjvTtryFCDTdcEjEVXAVVfrJPxCNefMYdsspmFhVJRnHOgWuiHrhynlvJuhFHXgjWOJgDghZshTSHSBAIWYtsrWdaLRNfcrgKJSDXvLddplosiVZtzWXeHtmtGsoFEqosYQICFyZzofaPicjtMqWujSQkzOXiLvXtFxChaapHtJpcQtqUJuPeupkBQRdFcEfuEroOFUkmXjkYvHppYLZKpxSHZTEthqdbRRuWJQgOebZRtyDmAOKMYhBwlcoKSRbSyRAcwAuNNlzVKEQrHzXefkMrcBpETOpNiHfQZlAyWQOqlxmPLneQhNArKmYldStOOQYoVcrMhQceWeffoNoBEuJtSTrmtacisWtxGnXCWpBfbCYcITBIDYPHmeKVIYcRHgMnGxmMaXwAWzUFFhAUVYDQFZDLgLvPMlWsorCfWFXnCDhKFpYsxEVxVdyegFPgaODECjqzzAkSJAKCGXZXWEfXEubWCvxosHGbibxdpdImcqjMGnibzzOVkFABJxgonTdXCuKhEWrCesowHwUdhHUjPnbtTTkHQkiepoAUjGeugqZKwXIGMWIoPQycvdfvmJwUPcBxzgEXpeANDGrVavbGqZkhRgZUvdvHBiVUDpfhDZrQFjmGZamJcjEqghFuqihIIxYTJiLKsFPPeQocKDQArtNzINIysQUYJKcUAQSEXBjIXyFtdqFvjAOidjDfRfJDkhLDhdpQcwcDOLVkCholGqtwJRZvTSxGliXBlSDqEAViExHDvkSRjiPJhRgRgGRdVHJzuMSaqjdHUIeqGRrvgWgBCITrsONVjoHnpEesrVLiPjVKIpCrfguUQcemlZVwKDTEdMiFwOELMaCkJnSDVUUMkLMSdvmLKsVjkXDguUahuMMzYbWEWDIExMWShCqyDDdKOPrgewniyFLpZbfbJadbfRiwNqsKqUDlNtRxroVKwBOJMbDmvPzYIAsGcuOfqQvZNuGLlLXkdfXHncoHeytXnJbsFykcNFnQxQMIfpvInCPWFuJszbTPenzhfXCFPNRmScKlFzsZVSyCSIHEZuSSQqWzJWwCvOBiLRTzBzOdLwIiTdnNEMcNCqAlIJvJQRPzfGJTZCvCEKtbdPKtKkLyKEPQtGSPFkDAOEVDjgyzxMffpjrQoNZamfSZcYASanAUneZRrUhhvvoqwWlPjRvDgqzAgLJgQnYtqpMsFyuSjAWxvRojXTsTcYZHOLyOXMefFmzBBROBHisyTWAUnHambBcoSaWGSwtAToAeBJQGPmwyEpnQncvovomKeFiKizLoWFwXAFgDYuUHFDPXaYXfQStPVUnLdkJtTjKcBdPqGgRlcJvLkccdPAMtgRBmntYOdJTbnwGsoMTbuiLZqMyylATpoPtGEqtLTdXUnDahWIObWFqwPPHfUFzWVcSXwvOtXvjUmpJOQvJlooijJygJcObilcfxsWRVplGEAjSiMZMhXktDTztzowWwuPubvUgkwawjjVkBNXSsraQHdqhqwCpUYESCHXbsmGIBpScAvUMQeEjRtwjrRwGcQLpmVPMMefOBseirefcBkeBlQCJVNPRZYkIkoSierIjDfCXaWDthnIbtAAxvZsmFabGaFXzkiTLHXRKVFTaceEKfnXduQHeXgmVaMMPhJAWUbIFeFrtYSTkHaHfkhnKBSgIMbXqlbsXtANBKuQWTGKutjFtQZjzemCkGLlecZzgSGbqLJoFJrreYzCVjitZqzbgBJLuedUbJxvtkgYWIvyFmiaovzgUsKXZAtEIFReXIPNSMMNcfQCMHsHpPiOSwIxadBlMsWkBxDsKpyQimTkTUpYKjHmJeusUAwuUvkJtgRNAgxJzrogikkXRBZxunnpIcYQPsOcYWCEIkSWKXzfhGtKiKczgiLqLpldatWrtZfGTfcbBtQsZEruEOxWFXvZUUCanhMwmtpjfRZbgswulyORrXPyHqYqMLoliaymWGTWwLiSJpeClKPQgHJHUJRwITWkjVrvzwsbIWXhgwZATQIuWwrmpxqCPCpYjqDGKsypHtdMYWlvbZCzWAzGecldGlBvPKMrOXIwhEesBDuaQjzuSayTiAfKXiybJDRYzrnlfycGiDsOuMZGxtpcmsqOTAtMwdsvESsvmwOmPYOrkUPzMPfFldYFgEFaZROsowyYcLVpaaNKhOgbtjZAQnpaKVrCRijFzTyfWfekXwnGJKHBKtKPGvCswUjkYyojAhYpdMSGSfUvcwBKwdiVBkcFsNPceXFOWVGLtVxmMaIFRVjEZRJPOSOUoNtmzQnAQRPfNaBacDiLJhEXuIPiLcAqmwhWjgTVXMhukCFpbOcWEJrzlUqgCPXOOSoDcKuFFaMjxlwnUFehFBakNTDjXcTzHthwZoATXUhoaZixRNwNEFPvaUqOZnSkftvtIcHxXuNMqWRrRpCoHfaiEwrQPhNyFRTEoNhvJPGcwWiYDDHplmGDKjnAbLgDiWFwBTRKZiplithNNOiBAHOovInZebRssuCcUPedqSKPTVpTaxLeAHHcNvywjDRSHcwueavnTjTMejVqnewAlBCIWIMmNggiKYqfZXbhRJdpScjcgHEMNnsDEDMcPVLIaCyzjVtmfuLDRiJCiYJvZPiNnZzJtUMRYHYxOkGOwlMwEuqYYzZWRInIUcxMGFEqjifeOymzgnLAUidbsZAYEvtIXbsVXQovnwomjYvSXrZXvuQKrXgZIzIsSQEORissfpCGfSYckgoFLyhSpHJIPORcfytxFOgTTLPUYrecUGDZJqYxqkFSaiOZtUPeEbGbWSsnoqODyVgHkBdFAWgzWxweVkbMsdLTHyvRyUvcTVnmLUSjBqwtIvBxUVQPoQBAtwkmlDSVhsSKilVVhfMBXDUqHzHabWjNquKkAgOJsSkCNJXuztuwGwYfMksqJWhmjKxLSREWchtZpADDGZXPupvEyZGXgNrrpVdhKwECobejnScCpmeOLgxwgYiQOCxhaHbbyhszsyvDvoOPSERctBTXCbHeOzpKvedbVKiVnaSfCmuQfwAPdjyZaYJYgtyjNAepOAntUMQclmKKQpBeDIEvdafcFWsqtWKIHhCkUPsuidxsisAyNctmazbZrCuRQHXgIcjGOuBwhdoGJTdmlenlXyhCrDFhzbaHTQXfscuxaKWPgJaVgzGtJQGerTRfCgtZcPuWPJoiquVfxKsJIYaGHXnFerYGOCqZTZCIvQObsyJiFqunCpqdmeuBnHXWYfINbCIoTIlXbNJIzmzWUEudMXcoOahVIjOVPipZDsjbsAKJYqlevNLhWmSEhcanxzJIOQPrbjVjAGKOHGuXZYlWQesxjfwvyGlAQUOXRbFinHVVWwdqkNfJRpWTGaaAMLzbEtAKvPwRZVGFraiOVmgmYBDTtZlessWxTDzyHkjnuPUxynZQoHQLZRYPvJWmyWHJRnnSXooJVnhOBkfRRBRyjrPUdUCffXTkjmaZRxVNJfMUxCWpVaftXrQXYwDhUVYhYEoziLjRyPfMfUbiYAunRjgIfWUeyvVIxGImxVdaxEZnhfimQfUGvjjAeBbQNLxxekeYZPSjzyBSzuaLWhOxWucIKOaDGkjfNpYmzBPzKQAHXTlGYUKcjhUeqLGcradqFEoSbvGEeqmiMxpDoCywjaNbZaQierjWGZvlbajdJDPOtQHTDlapZCSRGacJZcgpfBeaqCcVOlYfELHDexLrspQldtLNWxnGcBHwqQyqDERgspTppXZUWACesUvIonbIBxhjTfNBjIJbxtqOGcZnFgbvEnaqAdLBLXJXXDnvoGUMTHavvZuuLvetUnHldcIlZdRySHOrjPPhWqvCDABpSfuELBvetTdjHwxKHWHpEGXAsTMmpQWlHItfIlEkZtTdOmXveColaaDTavADOJqHOVoqHSeJsSSIQBUiNOdRTvZrokyUTQsiBxxyCgMEhfDNFYdtsDygQNDCxCMoXzVHTvVUdMjaMCaNPwJpGRKkyoBMEOGseQjUXXKkFCrRzifYATZCWWCSZMYPPlPduabcMIqqXgZccRlTUnKplOpogHCHMQWpguqeglhMZQeZPBRFvfXRECPBughXPjUcnuOMXkgLFqmjXfxUWJGzyfonSxmTdfLtskgwtDnxkWHXfzJiJDmozwtOAxKsKNMKbeVyghTZPiDPraCiJBaVYzSbYTJETgQAOKQcdfuMRyDwdCTikEPobKxFwPtrbqtYcHbdTHeROCkcGrzxCBWPxmScKXFwchcEOsMHevaLqPsGmeArMNTCprgzFlogztvzjPhhpXvqGsHaajCunBJHNzcOatKOEHpDjrTRAAhAbgCNILZBBwmGkDdEUwhcORqENKZBSuMPwjitkaMUypRxPxXyIEtnjKwaYIxuydYntNYbMjxPfWhOLVETpfVcEEbcwbGdyVmdtezIIZYxxWLqYzKpdjAEoLNnMylDnjBwVUwedPUhFHHfUCWpuzYpVqJIfXdbUDbQGGbLinVkBdgmPiuRlidsymEFSWyTOponAnysarCMSRieTBnDEoCgYqhDIzLdtpwYHseJfGWuXMDKdcBajtDiQGgKKVqWpYwdIgbRGxDxVpCmiUbkUiszgvXoGpCkUPCSHlRwNdEHmTrLRFujoAWBhdykIdQvdWnqlYIFyEUkSpRiTJajwmONAyQtKkQjhKhuKbzlNLsrWnuIlsAoaovIKrxaHwDEBGtKGwmpkgTbOekRicPuBWRSwEqEmufrLTWFkddCtISZrBiixagLNvSxLMIfZOHOcXjUoHgWwocvfgevAhVrMhllQDjrvpWXxiegttXOOpYaYSjcoCKzwdNnrNiVtnCPvFdvRlimEdcVjqcUPDnLWcZcgEcQDuNihfDOuAceSJTtcpaCcKkDQphygTEWegdImDdnaapbPibsBecmxubGlxTGtXeVilAwTyfhQeYzyuCOOdOtvHZGEQCmjVrnXNRUamgloNRtJFelFEewvebTVmlmDorYzTsbTKFJRgBCBTpOsTdxXDOPUWBUjbqBOUrFitlIBSSnWxDbYnirrURlenOXuNqIyinUWUPMOoJuORBmxNsIMhzRUaDPQsqozcYiWFOyweYziuruRUIxiBtjAdpOoEmsCwoOGzYgyEmqSvOTRmMFWlltuEaNfVlgmBLjeLjuMWmaLfeLjckBydMKWtbSSDrXlYwVcajIFIhVcekhKemxUUdPWSNuxCtLkPxFfOYvrkvWXEQxqDTukBldERwzWlzBHjCDfzZKLqeIkbWRiOqICgFAbtZNmoaQwprEIIOYFavOWuGEXgwcorOlPhVaSJiBiQRMImASJtMbelrbHEUINlGIUGboVQfKXzrLcithVetWdJIwSPmFoCgMmlJZklYxYImzdioumDvoukKDgfloEmztrueZiuAZYdvOebdSrbaRQHzmCyoViHwBxcnyupcMjVsmYieTdjzUmxdwvAgsCUqNxYSgHDjqxwuxivJdExWFTmclAqCMrZzNJWRKLkyeJgKwXtMKElreAmywiIXFxcevJzrLYskvmMYCcUdvYzpVlfzspxAmHuvlaaUpldGmYVAaXDryVfOAXCMNRPbUWuiPSqHNIVXmrcpheUKeCYErWcDAkPTbRlYACQOKrIfyEFtaSaxtsIVahQxetWEmghxEBLAQizkbHvwxwbWjmWfLazAMpvqfYnZyGywjpHirSJeCqMKVtyxiQxDTWueKLhTCbiPHkQnNugatrLISVkeQaAIKIKsXKGjDuhGgmTbWSflysFpzezkskOOXScczDwGQwgHyXHUgvBcYAAjRROJMafeZjcKHxmoBTpCHXWpIVKlRBxXIzWIHtkjuzCPOPrtgqbIavqdBFFMISoHfnpjddAzWINXNFQdDVvDdXfJpiQhjdcnsSYRvVqtqJhcvPrFYSEhIawXDSXEugasHQaPPOgpNVAyYTxSIQSlzNGmqGClxeOpcxRqYZTkWdDajEzZgNPdsUyGUISPOyRTULBxiCThlxpkifSgEtifgvgtXZSOSfLFsEIoDulQIqFBszSdHHPICUTJnYZVWkBPtkZSrdUUBTSJmVEbhgFkzxEmRPgBjCUtSWJaxSlOwyNJvvbasGRqruETZQUopTUvADXyiGGkKJePzyFBCARCYydygcTHizEyepMYclXXHzaZpBCLAAdWkcuniDvndYDGpwnSSpFwDSrHBAaggdhbzLjfNDmZWwXgHObrFCLiZZcxnuHqZCziPCYOwgimVQZcieWFvmgknXVGxkmxEblxpARAPTNfmoIcnAXgeLzYpSpmkWIbQzgwtLTkvBiuoKCOXigdMDNpRpsCQvfEvoJFKLGIzwSUkpRlDFkaiRhAOPNEkqiwwThBrYWOisueZAMEOxUWrELWoLdYomoBFqgRYjwNMRuzUdoFhHvtpjzfYyqHhedCMpEuylrpBPjdmMvapimKfBkPCtbZkWenTViNgebDyGkGHCYijJduALNLzYowwrQdRGfuzPiSghriXjJRUufQWUHkMswlWvbkWvymbfzaXLbNxCaRxrImQpuGjSdpyALICXegyPHeRAHlVBJHHstYQlBMzHdgZlPcLkedzHqCjAolFlVYQkSdVOIdtSzAGceZKULoSRuLHglfzXCkcUgKlJdPADxQqOTzEBNiyUDbCMAeoAzlWOgCqfyAwCaIbdsIOUfDTmIowFxeFWSrxRvEjXZbqTHTjdIwJTDgDEbElIoLGOLSLAQqNLrRVjwFuMsCLjOkdGAAuePLIcFYLktTQUeUtulVoNJyKbWKmCnMhPHEjJHZEpVdSnGcZTgZxgZMuefdjdvYEHuCcTXXyRdvQjjqvDCxNCuzqwkTmUOVsiVfLqjhetfXGAIlUtblQjgcLhIwdxOsafSrvuRdiVwLswAYqEUYPzpHTSMBlXaQSmrZChmqhSYHlxzdlAmjykdMNYkdRpReBhzOrxvYyHtPrYHhQUacnFCicuahnwNkhDNGiBzrSFpcOuiaEGcyAcRLppdjBplverbdUYrMbfWoaeIxYeYgXQUZzqZCSpPZWZHvMscLcBEWSOwxNabfuGndWRhvwuzMNgNzzqRKFAozySvhbVTlPTuJmfcRdbCQESLGIbERVWgzVBBCExZgnigeNAOHmHFRZNQrehMEaXhLKafzaTRRFFroUHHHIOHcESPJLWGmghSkClGZGQmvjdYhcFcJbNeccQsJiLVSALhRxSbqdnQCPuRMBINPdbqbjERJWzxMdZMGGVqoAEioaIGZDfOoTuEFiMYQphKShjXsvSCQAXNZGCnvCNMdIWWaTwcZimJaxBsIvmcWEZAaPEsovCGyBzNCrmCuOUxhfWqNNygArRhouuHccMasUMVOARJxjnBaWqGcNjliSgvGNExnuSqJnrnGJGEijKuSUvHGxLYOqAIGFNboYjDkjuwFzUjllzTXhWGhcLyxMlhEWNcsPzTCZdFiDHsLbEcTTOzKjfWqvgooHsWFUuLxlPOUnsAMkfHcKucOMpVVGmFDzSEQRAUGOPqdPXwQOKvgEupxzoODlHEnGsrLptixIWOmFLMaRAyBMJftDHNZcEHimxrGPilWEFjSZJUFYJeZaNsggrVxjDAwZdZjJSSZLsGkZqjHraJVGeUbUIJEXodCTtRjFCfUDFCjhbgaxnYELipNCBWpUqMLCtUpNYBWoOmiCBWCPnKcZAXAcbbMgDlKxyISvnFhyayTDUfzcLzGHAWOtIoLpDbbDAxogRDDxRFYwqnPgsdtswYiCOEbiQGpnNRpoGEbRGkCDUQczemKwDzPuSVDZHfmfcfQeBexHTDMiTsvBsatnKzRYoePnjsZRXNbtHhZNvCzAHAnIrSqLuQWhHFbRGtrYnUZMueLHDfYLAmNWkCkuOsMkWjmPLpJqtypkLVsSfAtzDOKZCwQcgfQJaMgGQMzZSzdtWBRRwvMRSOPvQugCSeuduCDkgOIUWIzplBUJeTkySJQKySPKOIPTuHkXJUvDKTmuEabLynekkRAiSdvjNrCQNqNbbvnHJmASJOmmmCZzjsaZJeeymmMbsbgwiMOTxKLmIPwCGPCjhUNAcrUUaysUsOsRzBQPOMBuAdUStkKvjtHHwHQvxcEBfTikCRUTsvgQSwhgTjlgsIDFtszWapEUfTIFgrYjxUcTuERqwLiwHmLCDSgvcdsgAkbTNqsUEBdBlPWODzaoVlyxwELtTJMlwrQFQcuUeJDsurCjKzAQiDpYoVEBXgygXIaRWbmrYCGOTyCLZuywaCwgbVOuTmuQhNMRbkMoEcncFcqrvxfOPLIiiVawJLBuedxaAKqbIzXvRSVRyuoGBSdAnZvgNfPGsCOmbqzHXqlIjDYJlxtpcmYSEgKDMTOWHfsztxVdDfUgpzbGScahkGNTiFLijCRqfqiotdwFKKYYdXcYVrdJGmrCAyMVdXBNVQSzYCpfAvZZYThLjTuyhhODgsjbThGdJiquoqCauEUUrVjEBadhsEyUzfcggCsKwMznRevpSKCWWJKJpsiQioKuPBwlgowUYqVNFobyRvybSAfzfOwLTjcuEvDKmLPaxtzsvqrOAqxnJdxqeOyiCXTRQRelzaXUlHogKvVqQZmSPhLfPEuBEGtgDZReMrDjodqCBVhWfqGpNkhBAkQsxyUuFZfExSpyEKqqFOZsGkqzwSJEzLKdKjxrkHxWHEiLvxnRDhEoAgssePgEuksEvKdFBfyZjTYbYRitqRaTfjIWzkjpYxHGIxekbdyqkxfOjIJaHTbChIlVbVEkUYVprpkhqnjawEAsHDpDnhmqnZhTAelWOuDJLBIzGRbHpefnQFMfunzgCtFJtvqBQQiIYOXoEAdjyKJqeXGoZUTqWDlkXzvDsgnBJXGURbGtqkMXTmjKyoadZtqgijjAnSpYyrGoJiQossjKnRaJMWtLUlhxTLerGJwpjElvoleZFXHGUpZUiXiHEcwFtuMBWyAHPXDikTOqQWfAIPQNARUJmOzhzkSVWFWdSCXijaRdhkQsNOfPoVCRktGDoehCSKRwhxjSFAxYhBmVvKXlRRRwxhnruKQhaPtYcdXxaYQzeHBAJjjlwAEGxCVOmsNYBUadYVBHvAHGmzofenTORqtOOVtJpqjbPZpqxvpwmnWhCyRQnYGEOKwyKeBdeypiUHTkUwppKAVxWEQBJLYPrAOnxyYjHHdSjaDosQlsYGOaHJjmKsolntHjeGspIkVaJxARhjxaewJNXAGeSUcDWhpDpgmFmfUZBupOfXtBDrwZtSPvrMOtLBsLsbOxOJogGMIELrPxTSLOFfXqJlGHIGwTVppNHYXsqabgLiOSnkEuTqTBFNFQqMLhKuDVYFaCQwQyDZMtUSEDUjPPHSkNZbSetZEcPsHdNLjKVhFqQcFgXxSoQSIbNLXpYBJAZzuoDXaaQWcISUIsdNkubmTiTkFUvAsudSyBSRkvZhIYsHnnnmBkeSwldgERNGeJjKUQwkJulCoZzCBuSvTGXVTIjGmFGFuXpFeyyAeVCunaDxTRjZLwXpYMscUkSPNpxMMaRahlQJwQqdtrvJRBBIjlKGEPyVzgvHkLjSsmRpaDMPIWcvORMLeTBUyWifZevFGEukRaTalhEqJAmPJFEHavlmPauGKzfwzTgRvcZENPJLuzxBxzDZrlUHrzTFRhJBaHjifRgWcPTPywmFZPJclfXnSmLObpsOUHIPpSfMhVAqqbofhiqOwuXhmKGIHPorCBxUDCLCGHahlkCUCbEnPNCNbNJKdCjauyKECBAINKrbKGLiqRqwCJqWmlOLohetLGRDxwwhsPzEQmTCcHdwZwTBcEvCFtNXYACAShidduBOhdWzWTzWlYAQDxNbZUXAqxHEBUYTkvMedaKBPdxvVpqEYTNordthrzboLlWfwQucXESnSsorhrQJJPQChAZxUAWYsdugRtedCFHGMETxHDWyYgBuChwfncAfIpQhXJcVuPjYioUTpIdFyFLTCFIieovGFXUfKlmPlSGOhxHrHdmvoqaOVYpeLmpcyWupLwoiSdodVdNhmtMiwkGwVYqNrKyPuESCGRqgKRCEPqVOcGmkgCIHPwLQFPVCvmtmiBEglJUPbNHPLONNzZwThgkDhvXSVTksXXBPgLhJzKCYURIatwVdazrQDVXGffIoNOdLMRAgthoERNrpMMMRjGWhMUjBUmfTDoiEpaSZzSaNfnVEjUEmXIOhDEUcVTDcoZpIzTcGkaByyuufljpoaaixqIpqciTqSwDqHdxVoviYCWjEtExtcLaRuTUJpibIhhiyaUaXzYlXJPzJRZBsfXrQPJpisLCHnwmCWzivyhSVyMNVwHgEaXdtbHEkzVWztmPeFmDyOYZezlxBzhKbBpZnPImgsUKJFdNkIVQaxJIauDzLOyvKgVTfsYrqWwoMFDsVgVNooGzvfNpWqqgWbgouUCXFAiKcNvalDYLAwXKumObByXrWWJpjWXhdiiwCDyzzrvevuJeKNepcNCUGxcDoCPoJeMPFZkpcwqzZmnEaQBfzCPbwzbCyVBbkYshDJwOvKVVeCOsKJUnEqQrFEHCVKxFHenzuLSruZRnMomYiXlVCdKGhexcYKzxyVdJsJUbvGVmlivtRVwTmHfJjfKZErnmlvXEtIQJtUUSibleiqYozHuApQmAOBbOXohYtYmHuBoNUOLeuWXfQssMKDxTfIIWeYgYhgYuZbnzLWreZWBIUReQtiAMuixIOgNRVIgWaQgGcrcLQwtZloeLYtzOpGLuvWyWYxqwsihqwHvVVfVMWvUsNLnGfPKmuxuBPfExxlmyRFHygMhOguNAzeREyfTweSpsiBpSmnxRNmkCJxjgmizqurCaCSRNzoVhNKhIhUmtnrywgjJkXHfqCZofsuAGeOppEBnQEwJXUgBMnlAVTaWoFSTfJGNTlECHNEGMqeIBwBzmnpYqKhupIVnfLxGwkAuiBIUuGLPODahRifGLLasBSblNloFureOawdlltsRPHyEemvhngWCRBJsUJuDsYodzeVfOhHogAiFCSYqNLdQaxQKbbFfVwkYPSIeFRWsFWfSopcGjxQbdfLztDDeZVynFLgojMkDTzovifdAthEJIyIXAasUCUPXFpgoCfuUUHNVtuyKFlboKmhaDhidtRzeLALsMPWdvbNrxKDhoYJgQOhuZJngqvRzkNObEIgeuRnAiERfYuHTpSXItCNsHRTRxzmjowZcYgNpZSwtpTZLLTUwFQoBvemFUAUcOhjSENmxhXQMVRAZzEfRVcBFqvuhHSkLxvggdwQRgPPjJTdyLVJVxEIWQOTqojClAKIkDxTgCSSrgOCqYfUZYQJKVBJcJROVLjIEMzwFmlDhQoSgGSHVCzEwcoFJCuBRdFiiTJOiBjrroFyaGkVJXBfNlOJvJiLuGcHsKNeLJRHtsmeYBHxNFWLgixApgLpIXvwSErtoKqcPEXPEfRGmrJUPUfuJHDSBKKtEmAKKIwhiCDVPAKlSJfUvCGOARuvXpNmcUUBIZyMdcdqFlEWzOsACEEIrXJncuDMzdiJJEDImLdYtYIZjaObqjOKOODlKgxvGucITzEOqXlbnBGWvRKwtqkEOPzKSBgIwSfINMxblcjVpVvUFkDFfGPShYsGuaLKUHQNISdsCfZWhRqzilkoIByoNuFshplYLWMBfjMVuHrVqociIExGPUiHjFpANVfGkPorypusuBIJMBzvawfsIsYjVQaNtNEOOfhgTzFCSEvAUFScCMkWOHOSFaxWlvHARgrfwXFIuvWLnunpQPhDHZWZLFuXmXUCTYzUGPksJxSJvLhHbbnqShPbipjgzOndZqasNrerrvoIEzqIjzpAVSdEoHtIhiqUfgTLJWTOGwxtmSPoBUMbFHJqXyYyZpqPmCMPtaSiwZssQALNGaEBBUeqjzvFAKTcxpknGIAuvZBJVLbAHYrObkZzkgdHaPUbQzKaRyEesblbofBwZKhrFWAQPSPaIZGnYlNVNyWGegSZJsKsiiSQXarqeVyUgymYvISlYbthKTSOmFyYGTtGjnPWTauAWQuIuiKXlzXLVnrNMIdaBWPeurJcSGksYiMGOIjTefmZCQxiWPOkJTcvNWOQZoHIbREfHKaUFPsAncRPpfjzDQpxeMbtYuPDjASHwAPRKgFxUSDwaGclIULqpmRmBkWQPkdyTCEBUandWRGMeppQmKFrSzhPBXXrykBwVYImkULwiUHgUKgqUzTCSMcvfarNUmlidpkMAxzfixLFyILPgvKgVvlPIRLzykCySKUgWwqbyaFwkhvWrqwydFlCgcaZlbjRUQGiMXFwCguuxAGMMsEgXUvlnobMTuvRrGZpHJWUkSllbYJFvYmhxVyjebBNTjvEUmaEDShmqBYflerTurhOSVsxUinkZVuKeeUuRakkOZPwNobZKCTtObbMkmEUOZvXkZtxRBGdyNCRqKcnlQcitlWBPTfDwgRVgWNLAldonhEAkytPitmctcrEaNSTKHFsTBljPYEPOjFDSoaKDSZdtbJtuRSSXbAhSYLxuTknetLjDTNSoIGTZSeQHJJwCCdGJQNzCnQXQIgbIjKDunGrnCIeHpFNDoLSxQETcxtlsDKcnZdqwJLySZjehClETaRGUNpFzMDUdinhnInbYvzOjZmNCgrUJSmUptFgoKOwzhgCvLHDGXYqkzDcRaHINhxbqEhqspKSZmdoOJtVrTClbumqmzlLIqIJtITgzqJmgBlhoOiTbBNCGvnvAdXeARPJLEWDApZtKxyUXrYXMSymBkpDCSzXryTKuXLxZSoTwYCjaRwEiVnxCMpQSgQZyYBQcISyMEkRwekUuQLmuzwRhrzSSzePqPEIYlKhMeLiINgulhQoouCPUovlwkascgUaKsTGmGtmqDExsZhkXeSnAUFXzcqzhCdTsBztSsECMOwVnVCMVMljenZYIoIXuFJklvgsIAGXuvTFSsMFBULFiWBTaYcjWwBTDagMwlJaixaejJHIDyrtAYBUkfekduKapoRrBvxrqpoVGFBoUPzcuZiSTDbfcIjXiaEXwBPLNkyyWsURYqxqBmdkokmtiGcRYipAvpNTQPkCFvKMQzoifUKpntEbwAebThVpbFZAkVwyXoPLGyZEXjZekBMweNegxZXyKwVOVwGmQfKfPLIfkMXqJMbwYhtsOCNeWMjntBlyVlWijDbkuVHsrHYLhqNgexqlZjyuHVnlxhXCOEZiSkESiKqgxtIBfUbyYnSFqQZDNMpXVLVRdBEiLGYaDMIJKbcBeIgKYPUbhRmklUmGKgmdPbSBBJqakndfHufcKBJQqrdMlbIBHcLfdSarmYIzokTmEDArStykiYIyeuLedbGBmrRUZJCgRAUsrZShKZeqxknTUUbROyGDwgLwIpoDFjPGUlZUmWYEeaRwZRGaGOFwVapjdnBFBGPVyVRYVPIGqOdhAROJOEUxzfixGiqIEVaRVaFZeHwjiaAavphIUzlXiYKfkWXXleHfpzNknWpJkXmqZsQZAotmLhwjcrvZmdUWoGhEffcpeAkHnHEKaCjHrdRgGAkaMrEiCtIYnqDuFloUcKMXsmzpjgFwJGudQCXYzmWDMJhpzDXBLMYhhKhjZutsrnFeIFKnBUjtXORemcboKdSyyVDzUbFMWRhuCflJLiVeJNaxXUlZKXnUKorpHpyPFKSXBTlGRZhVRjSvqUIFGdviNwwBXLCvyvOAzztWolDfastUIXTytMljZvErJkbbBOHfNdSKgwPfVNNQFpskGUXkTFZtFHgHijiIhZiRCzoUJlnlQNtTEazCNvsqcBQfuQMdiCezIBfwQOyEULPZeZWxnKzXPNGiPOjRKZIxeIhUZWVpHQsBKIvrLKCjJucplfrvsUzQAPpSScFfPvBhyArPXBjxNbYtEOQCWadTsElDJRLlOPuElEoCjZuxJpzCokQibyqTBMjsOTTZGRRBYKfkgLBkzNnJMQqstwOsCzRvnvKgyTCzBTeUIVkoEUfRyPHiHKialcCiJKwpqhejyMADdkmKOBNFbPsBMnuqrVMUdWPXScxtaMFVbGLcFeNeaxlWpFMafXtaDEuqkgtAsgvBiDLXfOJsAvqUhzxxVIFoOUvvPECRCmMUZXvRVcSMaRygzLZzAYzVZyjZohRmbjRKIZaDNhdegHrTvqOqvGbhVIkDJuxdrijfgjcHUkKNtIfncwtsXFLZjhcTUUWtFRURVJJYOHUDwnvkTtsEfeRaUIcuwolClqFNZYhgxpLYuECNSBUJxxMkHvuJDxFYxkzhVMcGVbhRROUgVEvFxXUBbrqcppHlTNAmfXljnTgaAABPwCFrJgXjNGcJwKAZktPZcJIPBEoNYenleZKggCVDYuntCOqaaYQXusIwXunnXDKXFOzWrgPmmFdIZgQFvaOKjadcZIyfUMvKZIUOtWKKPfeTutqcqylumHziGYLyliCqQsQYxNfzStIJZqKAFIoLPrnsycCijJLegXJPzBEUgZpfEBTCArBSwCNWPEAtCwlghfMhzyUJmxolaDonfTrMbnMkCFbKsPhKobYgMDjFMUihzhjjjtLgulzajGkTUACkgznfPCmMPepBQkUycZPjUFcumNClXDZFGWaDYFJqLdiIbESWGXYqqhSQSlnCXnlmEPCzzpWUpZHlzlTXYDPAmIALGraJoNHdBQWuRJJUBMwsBBdEJIsCwprrFChMnkeTrhJawewaNhUcUoZgCmMZpWQgjSlimPMAXaPukqiOWIZTPJKGoavISWSHZXJbQdxvjONrAaxpimbpDcjyiPdoUTnwdpZCrHygflyCGLxLKziyfeLJRicfuDpEgNVaeOsLryQoewPuYoRjBHHRDtKzFNOkCjIOZgLzVsYkTtMcNjNnmUlVbfgMfVDRCYYBNYtNqcLxPzWkgQKCJzBiohICIIJuROYGPFpBkqgPiGdENglJQczblDRNLZzjYGFufaYNPlILyvFcSfXmYjBLrlQYNFSdHDrUkVYKyByEJBECeZwTjVmYctbxtsUbxiFHWOwUZcTkMbmBZWVSSwVjMpXZZpWQKaYVOmIBHFKaRdYvQFywlilsVZJEFjjljPCidLsRLVowiBkTCmESvWrpKrzRQlOgxBFOjKgfuaslRJEacnFEhjCsBKVwdaTphWbGwMEElHEKMNUtljKUYadXvMVziBUNEfmrAOHUchzShoCWnxwTRAquWrSyZGNDgWwVdLFMUwhawxIWAJTmSlisuTcBJbhaADmAJalnbimPXuGLhAWUdUtntgCwIbgXMZqmrtfHhONHlUPZPsoQzAKpOIDWBtIDXshMsOZFmZwfhAJBkXWeVTWWbPrIDYJDwwDCwrwdRAUiGyIhsYgrdgSOEqPapYhwjWLPcxCYbQyNhNWbxZMTDquplHGDSKZWquZmAOsPnleTzJnswsQITWUQLwDPgOmtIjCpBLgnGqBtKMAZtvgztmSvpRIlqAVwlRQzJxzffrTpdingdBQGLmRlEBcBoXljrWZdeMmawaHVrmunMWFmIJsZVUgBiFUCtUmVgvJXLWLnEqhXinWQsbLzrBVYIqJPpVVTXJRIxsKiKxHtUWZWDBgSegdgnRafETDtMhjhTuJpkDHwHMOkXHvZPQDiEoAalHbiRLmNCgkRHNelYQgCXVXCLhPPumEbaYkwobBCNLjzVoKCdhiJmfvhXPwXvyCviifjovIpPYNOApPaJpajbdhDEQZEYEpegqsDiOqhZGNPTZxDgJZBFvTPBPkXuhetCbFeQpWupqutWZNuEVoSxXrkEWAqbfqYmJRiwJrzFyympogoRVgTiNPwDBzWPfirxSKlfLUEufcqAoGEsjZQBYlUwrBKrFnayRznjxAOScBcUjolsiTeZkLTuoWDQgWlpadpNtfAlwiJbvGFhZFCOejakDtAOUZBeHvYOukyFxzSxyHljCCurHOxyIituTmYLIKfHKcTOlfhVBeJsSSXWTEyDhnDIJLsMbdnisDFrOeygYFipDAWtGymxBmNEoKuvXUFHDSzeTNiSrWlRsAxSkovAcHTGppMlRFQnimgSyYgicyHPeYChROqHclUpMDqdwuhIkydgzuSCezmoBPHzxgpoVGQMUSldcPJKXBQYtuxKqcaSMTNZvmIdGGpnhfVRadyiwIvZAouNipysaudNHkvwvXpkItoKjshCIBQmrxnsBRUETSmuTdbNXtVGnWZHYlYWdEuYfWRSussWMUfTyjTEdpwpuCWBqTsvyvQuWyaymBvcjBxRYkJVKkvzgWSBSBFQpJLxfHQSFYTgsHTdDpTLlUZnPPpGdlMzeAUJPbpdCyxACGpRWBlCMSVObgWHTiWzJUngFcAOViMVzOZVCbNRXHpzNYukowVTotXwjhPZCeslLoBmtWUCQjuCIXmLKspksOuzACGkUqcbaMOxLSFJspNoOisWGvlAurmpsdPLyqOTfypClmHapYKctixZPtaFXxNxbshCMArGKvfqpmgFMuxOemyhcbKtwZTnUwTMzwvrgjRimByuHAWEPnexSxQnxxqwJpRiGRXmcVqazsEzDzYuIdoZbxQLwaViZKcGQrhnfopJaunMFMjmHWZArTiMRthFHpquIOUzHSjRsrhzDOAQnmKOkNGOOZUHwYijMvljLcajujnOPZKLwUBlZDzyVXMKterdOpUYOKJGsjimBghrMUZRVNjFskncXzonwoHpCBxscBfKsyPYJoJgcxxUAOxjaNejFcgOVuBsSsEVTZGSUCEJZeEroJRAGSvDTulvfZEPLttfwOxhrbjwJLeCfrWebbEtnQslxcuzstbZCEMCpFfIawbxtFQiXNyeODQEobZmEbIeIcAyboNnFNqdfgewFaKegJTNXeOmgaCORQZOLDYwfhHtVNKGwhUlQNTVjZWLTJqNKPxJiKCywPVpvkmSPfLWRwImsgAxrXNbHdMaQdcVfWYTTVwLheOILGLDJSQZmsoqcKUsguubknMDmYUogyxdCTmqRyTMmRyZBaUQWRzSgbtEUGXmyJDLRNhCoFAXWwOifTXXsADJhzZkRqfCWVlEpbnALCxMuCmpkGPWMofCJtpUqGObZKwjQKwSTBUnBBvKFsXAPOwnVZmQanHwCrKEgWenDdOSVCAcLGzZqytiOsARLmyVUuWWnQhcNOOSMcXIIuattVmhwDDspuDVamUfTPggAzCxvjKaMwKbtlLsoGVyunvCPrxKwgjlRujpwUdzbmryrrpzzyeEyBprrijlaumUUGZAIxjHLBIkdHjVxYUROtjuruwJOIlDoVlpWJleSovpDlKJDXMFxmhboGjcrcjoGQhhAbBwQtCvOSOSJchiBQzqfyivXFMjsNJlIBkFOeHbycToqzGzwQhciwLLUYxACmYGrqITKAGThofMslDyJYWADHwbWsDCkIqvaacKfyaRRRCrzMpRVCQePuzDVhIKqSacgtjGCPGkqKIcMIicvbzhPeAIRvpAeYwkzOiTnISrVBomdrRIeBblFNlBcefpSBSCldJrHsrWOwsMsAPlXsBltDUTfrYPVKouqqTwkIhXZjzLYXLrpMMqSICnFWpzGhEMrhSdsGurCeeGyrPWtBGoIFuFTrpIEPsmKHzXOPaQbdQvIUNeaIkYOxtWtpCrfoHjZxXSFymBKvvfMoLElRBDZzYHStOsqplfKfofgBktoFPebRLaWuEgGzIPIDNuSNjifvXUOuTAalOxAwqKAdDeJZbFnCYGhPUJLFHPKDzhNbKwXkEdVriljHWKdHAnMpKQGhTIqdfOrgJIcrgeBzquDlHmYsVhawAmutkPpyhZstXoUdcvsmyRpsoowPHzbJPLuzkKllxehQBPpEdPCSsgUGfdPeGtBVJhNUdsDnsuVJLMbhylKScwOXiZPCGfCDUnkhFYvGOVpBpJiqTzzIJmQvKhYdzZbrknLzZKjfjEiIwxemMBrLmikFyvmhfuQrvyFpCqKIOaQQpPHyNbxqFJGpeBckqGNBSOiToQGjosxTFwMBjwpDzicysSkfVbkRhDbPwEfvwMDFJlFcJeDqqcEGYGkoSZXeNtMmuWvbDSTXdgYxoaZQtsahIdldTykeYqVjXbRXPDBEpuqHHjlGBLvFBhnGmBIFIjGPfwlHEAFXsQccsRrlfAubLJFNMprlTSNTFtEUYBhhfWSHUaaTOhRaqZnPBOuIumlNoqoJahdweexphlUzIIPTjGLYNawmYUSilMlohapKEWUSRfOPQtYMfnbxerfMLEyvbfiRJusXmCtSxJlHaOzlPUgCVRlFuhCKBedxtlJTbVvrNeVBJeKVVMSdtRPJzUvwRuJqhelGaDMpPxzCcFGycVihFARXvtchntsewUGttvZVixLDeOxNOZgnLDZuwdleoQwRsIvzotjVwPUuSUjCTHucleGAYcfBJtAdaDlibCzorUlpBvaVEETiyFxvZBQwrWtvaFKvDUkYbDprWuZKeXeyAtmejwtjcwkHrvHZxuOqTQicmenAqwwnrSjZjmnnUDiQHMhenXklLqsYRQaEVwMVtxPctHVAaTzKJctLUrJIoKQxMYIrOmTsSPxPnLofCHIDLHCBatLvPmyTUDDISyxnNTgcwrVzbuCepIQsaPwmeZSLXpTHUyfZJbeULSHQWVftGVAwjktQGYQaOgGUhpMHNxlbPzxNMDbBKwwWUYpJAqgAlyGUTXStMjXeyYmpYAROomhbdzpeIqDRTcYDcfhivbcgZmiiOxDiRIisklfetTarIDLdShJWuxFsxEHUFjdQZJDLhuHDQBguIYsYNKkqSiGDDtaegyQwVrZbBKdOMXVWdlEhDfRXjoeUZaIgacMmjuyqAIWXTRZxFvAyguuGQDGcXYEwLeIiFyOJmplMMzcDbZCTMpvItfHbONabxHDPffRHWisBTmAQORtwVJRFhtTQiqkOAkAUxAOXYofuEqFksHNTEfSmppwjMZRMcrdWMzcelRDidkCqVsdBTeInyVvyGxzvlDqjcsTlnQWHFBMbhIfAaFGWIIQKSLuEGzrzZkZBmntzWCaiCxXXfpEVHlSmsMhmSliGQYkfQHGXawtJaukJGlJHgYywXuwfsVTDjnZQIDQbUMdFzksmLCkaorGPoBFkoDsvyNWhfRSWkuvgYXuiJWAbkIGTMKtSbiMmSiqhgPQIJiHOszHldACbdzckkIsQPYxIagxNupTludotNBoMlVArEyQhwxfkHocfFYOAVJRuiIvsjeGJPoQbyZMDugpMYSJMaDWnHcwvalGIAxcVLVrEVobXPftzZixcpQRNmgiXxwEjmpKuvvhzvYKxmDRcuPUywoRixoOZMloHcdUJpaaqRigaFMShdHezJsKSOjBxQUnwGRVIbthQabkEQexLJZPAXFmGZsNbYswNrPnuflExQOQhXQqKBjCPDJKGhrHMdRwOJPqmRhxsAojsuUYDGpeMmkYARFHbOdtjIgOwvbFuVcMtKrXCzFqwtOzDZzSlhiCbXSNmVYNYZeLpnlzvCrKVwJaHMTsGyrWYOkMZEZqFxiMchMNBRqAoEcwHTEjvhwjjvEPEnjZHicrjMOlFAZWIaIrhUgHHYgyLVFRiUhAEFnyVUDTuzSxjXpEzrjpCxLPhvYcloyZFQDHowUcSdDmZLOyIsfLCqDTcxXoKXcqqASqqVwovlbvTNsBKmBMTlkCrNsGnvzmawohPCTMhMIdHlIytEzRyYcDLZDxlHcSKvgScpuVGfiguIVpDeppCKlDjXTVWeGUalaZMzFapulmNImmQaGRMcnagqGjWObBDtYXfTcottsQGpWTCnSiJZGgBZjlmAnvLsyYQOzuwYqkiQsfFXAiGVAGXjneDygpvNXpUiLVvlJwVozhJuSNTFvhGetrnGGLpqrlkrYsVEXMIDSOHYyYvRbckadlyFqOfAOpWIYRxSfhFnMEbrfQVqyjSoFqtSIwUguvceNVjbsWkNBAuUpMXUtxXVQOfhLGDuNNiDQZOZmivxTpmnZEqQkoRiXEBxYQPGVkiSDUlJiTtJSYTMAlnqyGDZXGNthjuCXpgAhMStDaNqjDfOuhdMcODxthfYmKeODefDXtlyjmyrpfKaGdrjFzbHMjDPVMFnblMUbyurwErwIDPeygSgexuVBCiKZebyMxdMvDJDYVLYJBdHbbZwynrQIBXEhcDHIABFRFqpqsUzkqCTdjqqNSkiOLPtNXpAEXsRovPrmZcuWpdHxoZMxtrfhixQipmBkTRzCeVhATDAfoVjUiSkDncvXkaTCJflDfViCmPcwJjGPNXSRxdnxPBLJTLjqwSkiSwtwjVypeITevwZENGFROSjmzilKanBcGVcThyKTmHdGHKoTELDzejDHznOlfPHOazsRasQbxldZYawUaXbkdnyeWxlRKsIEeuuXufWmOIwzignPDvgPLZxSWfVdFkNbYcPWcrKvyLNeTAoQgMXIsWDyCAcFQgpXUdvOLcUDFENDDnFgOoPtvhphgavEJAfofkFntGqSRndvSIHblNaBxOtEgxbLmTBOOTnQljJuQRRuoJQwKiALkQDlJMopjgLZNcXZOdKyTtOekLZlrXawpKaEsXRxgbbRNhQRwKbbNafTfsWLhJAplqnfYnGMosERNMnFDxHejwGuxQlPcVCBTnEbOexomSTIurPTieckrYVuwvLGZiiDmsRYRhABRXZKHcBioHmhlRiqnwXDyjfrjbPhKsZNusQsXCrEbIrGADXLHDNMIhzhxuNSkuvwKHELDhdTyqkdMuffMqnMuvLtYvyPuRbmaVFVcvKLwGwJomultcIGeSyuEkiYoATpqKwYkhjEiBbLcfmElRcHJdXDKDnHQbVvmPOCXNbmUGzYFCbfLulNbJIYzvxajyukAvnLYnacZnZrhsYpxUVHbsnNjlWNZbGuBdtrZrXQoVMEHlnsyFrShszfwUneNOyybLVlZYdgnOjYHzWcYwMiVRfGyNoqNXrhycVYveniUIULAFmsBILRCeKLeJxJIAldTGnffrJTpfxgtqqyLCtpRbKFnukRoPKpNCPNQkBqmaPmadeUGOyWFlgJiOEHarYneAmsOVREwXqNInJSHHtuehMoOBzIKFMGdMJJyQFMKylnhFgDjDgNJjbkKsPHoVRDkiPTSJBNqsarcLSUnLLuYKEslZmqAZMSVnrAFjYgMkplbaqfnQfhzEBJXnYntvkeWDdlUFeftdovVuqWgBEUIoSOcVRePhtoikVqvlUthqKKfVxspesZMJtZAYFGrWQDNpasTAGsXhvVmaYINFNqKaNflSNJAHhQIAuRKaSXlKjugevGxuAViXqpYUtrtCWazjNpkbSVBEudaKeSmzJtfkxggFpuVgebDZWFkMYrUgzEvmnrtVcokozFjyeFfGxVTuKZVcRDDUfbEwycriteLcEkGrdShdMzFdYnqUcyegRVXSVsclynIgpBJWFSGtYCYMTPjgIzgpvCXHshpDXTLoyDYBNLqEuLzYOrEujgywriRbgQzXhdZXMpWNudGvEwuRPqNTzaotCvnsZOKMmpcwYIVfUVqCOFISmYqsgOrkTBpgBtjHOrLqAzrLLXZkaNJjPeNgsADQWKgCdxOYaJaXbsUqUMkSxPbNepXfpmJDDBxGyLPRCiwpdeFLImeuhwjPFQFLnZyqrLtdNXmCzdtMWdErjCdETLkokcIjGScMWDXjMWUZjQxiHkewbPYazpodHqaBvgnvLKsRVtxfSzbxrYaKJpdGbaLQcMpWEiGuEwZGVcnxBmJYSqpqFJhaZwQYxjYVQhxJWJSsvuMqgHAeKtvwYNhFYexJiiFkcnddzwkGqSgsnniRCcnXGaCLYsqqJHKLoGWONDaDeByGZIbwoEJPxZyUHVeLzxlgBKOhBFXeBNjFtpDSOsmFCgmBWOukmAlNJECMTMzxyCCcSMVlBpVYuoQaDNRiIgZBCbIGwXGvnDSwjOblZxqTAwXdBDTcrCyMiEbQUnhLQQBmkOysPUhlTCTAEfRYRLHejUPGLqriJDcBkZjIyksySlKXNJgmgrOBELfVsYlxiiwiZmbTndDFuClNdTGnQWTTQdVOgYZCMLqbvPVuxczunbghQwunFVckHxTdgSEwEBbzdsrEOwrfhxwcXmboUAiAOBsyIiMrcRkMpwUTTpaNZOILMmOKHLofLWAMETlEiOLnkJbuNsXuJPedykHAjhdaSEgtEFLfEIrFccSZPmbYRmMUXLBAjAmVUSRlQNYSlHBcrfGCDmHodmezDRQkoWpFdXnYAwwwubOFkOZaBlaGpyHyZoEqDGnMfWIgaXhUjSjzXqbdsHDYbnNxsUkIoNKFKgXjQIcIMVhxlEhrYilRnprzEukBTHvRjdvcFuIxkxAWJnDNClKAAOgctwQQwFoHIoYdekEZqBxHyLSvjCRfIGoILRvDUXabgHazcZbGZwDfVkxmrRhDcbcviuPjmEAqyBoTuNcMfugeWMSJmteYFkDKQtRVojAzfPxeQgcSgzbyMiPpPgNeWCNIcjFeHOKrBIPHOmTAeXFQsinaWUGmonznDBGGjpDXfXDDCujtARAunskNpZNgaAjLiVNDLOTshALoTYdtXgOzugEBMYDRByWMYXbeaLNGWLwysPeDGUIxfcODYSQxEvlbERlkfvxRntSfZvgDKVAIisssadvaaCbGaMCuqtAacvYiXRaJJOYNUkbhwWTnQWFHKUOeTKRXwuQzjzpIiXOPjVgTlDzutXkPltsRiVHchnSmETlQWCutQUbfVLYvjfPcvFmJFlQkAyOtvqTUeoMMgtMyxKkFqefjZJNmWSeeVljTCuNojjzmcUDQzhSRCniwzgthwewSIqQhfKAqrPojgfgLvCcPSTVNQhwrDjHMmOMCAAWCLUduUwGHbdvfVCPHJYNgyGQqbdWFgXIXlqRJhJirFbavrdpNmPveFKaimwNaqUtCJSnhuAJENpuGDSbfRCoSGjuAoxvcqWFnNotiTqgiQwwAEKyHXRCxhafMdHbLZzhlyaMeKHdccfuewOeJmulRsofbczIoCfyuaRcdGaBHWWfaHBNoyjmIlfXLtYcmHIWXowXFWnfbkFOHQDjkFYDqmNsrdcGZgSwqJRVQafqgdfKgAzCJOrTZSMHlwOEzVjJeuabAdDAhHwxfjFhUtpPfNqymHcNufkIhKqpTrWbJSClnJIPWFwinUmidiAAAteOHHVdmzHBuWdzOnAmBdXyZIgmsUwQtCVkQVHQUCeTBFXXSRtYskLcQqqyhwBAdOyFuYCOOSDxVAQfyBdEkPLyQCRGghyjwHNyznWzSObyskUMAYBWuglcBHIGAYJbdqntHDTCykehZeFKSJCHNQbxDjxxokzuYXNvQSYgLDMIqygSkgRxBwMDIFwLtgtqmxVPSfOAmvBCTgrBcKGSEqtaeaUYcKILJihznOLOUOdqfNCGzHUVSUHCuOTBeircdbYVzAEqZOSHoxbANljntcMNEEnhSjGvfgBmrTXDWJIugPQkixbzgsvbmGGYfhCeJETzhpQeSdmoVDqhpohkJyBhMMTcQLIthxAqxXDvucIacxQnChUgtocrRyKYnwxaxEAvvHaYEpDyZybFDacHWJLYprpuUosDTTqcHxVCFZgqsDyyqJEdIklnGXsWSogUoxOJKYBcixbgRFFkQCvCuJUTWNwWeOaCseryEEESluhqFSmIegWuDMZQgNPkYcVDimoQkCsMVPZBiSpxfkUYsoHqUQELSSzyVEFYbOWqurTPoXGVGwVgFcBDBLIODLeSUnuGFgcxqlUsKOFFmDoLhIknmzNlGFLdJZFwKYiHaWahCelFGSUsvlQCDuHWxrblPWEePBWuPKQHHyfJbhPgoCFNeFWFRlDaOISPQGLUGhnlyEJazSdDHGmjtVdpKLYgcgmsVkaONkGRtsgZCJlVifIfGzQRzMKOQRcNoAxQFPHIbYEXORzaNtIuCmEOwbaFjIvYqpbigKFdysxPCRtzCEZxfGqMeKKWIlNKAJSmKSWOTdfWrvXeBggraVdFqEQnOrCoHGFsFhpmBaqSAWTvbzOpltFLWcDrcxNlHzsEhpObmOOiOMqUYsxtIxQCVBUtwexLPMBkFdiCLrdFykyRZzNPzoAXQuUIaIatrNdqbrPiwJACeicqPjfknIbbKnVoiRMwniEucwMqSPKGEmTMlyjFJzgPVMsLcjmvFtivdnvHHXrDihPUtpAKHOlVWpscqvuONfIziSNmPAITSjblASwdLlgyZKdnjLbHiqpdidUlyBSFpFAnNbziyYdzkfbSgKkRxFYOTogssfBAOwNljPDCFjIIvLTpqEEqswpxgyBCdfhIDoncTmkfeAGRbwrMXXrRBUOXfoIGgNSXYVopvXcOPxkUrePDwcxwXgzqDBKjyCRTcbofZuOkrQQlPNEbRvZUAdxAnKpxtnYEKwooyJaovfecVkZjpLVwjFECtDMJOsUDDgZyAIiZbVkFtAoOHQyiQVXKYweaYuDojLuIwaFfbbxMCREEYWcqvHUQxjdEPPzjYrpnoUgBuKqrhmSoCtgbQKrptoGAOgeAUzpeVyzEfRVwdfEammVTeIyxahIqvWWXzGXVKLZLKYPgcTYgIXNmVODFDlwpTPljFtvKpLAVJIFqxNlrqGgNBmwWuKrWWMopwsTiLJFVlMWLsskZiHzNTIebzrrKCfzMFAWZiZPPUossxKvcQHgoBvzlcNzcMuEgxFheblyCKfvkXKPOZROKKIIbHKNtlCRjQBVOTivmmmYhrGPmXIBAXNchYiwGuDPWAtCNqzXNuzjtSEPJBpzoDUwePQkRsNGdqBzXaQxiZNcDutfXREZEmxUbjydvVLaaEvTZooarByvdLgCjdRvKUdneFaLPIuQOKWrnfhqbpwnLXZdlHstyrBiJXpFLoBcnYMiSeSgaSIDKdspkEJryZmQrOSNlrZJhkVyhaieoACQJzPROmEvdBgXKLtcpCsAhkrYnbEdoMiTapYgiePgPxFhDFPMvrEDLXqVeBElIjuxQeDAMbiqXvtqGODorOIYfkNwNfTSCkGiivIEIRZucNqsQQDXDOLkdGaEvpMUGoohstBCxwofFzZbNiBKMTwWKHsbxufmdAIQkwDbWBnUjtLhIcLbCRmzWkLPHlQqlxOQBKqeaVrSqJrPDJvcOBAKjPVbsopcEWPBiryPyAvzDfYJrCTcDmsjIjOfOsEunJSrawHcbFOZrRhkFeoimGlihLtnstXNIUPZgIzxswknagHPQAPALYCcaLfgOABNkPPSMtHIstHYLcrhlVvosvPavSfBwlTKBeBIeEqiijbeieWw \ No newline at end of file diff --git a/addition_malabr/benchmark_data/70kb.txt b/addition_malabr/benchmark_data/70kb.txt new file mode 100644 index 00000000000000..10629496dcf6e3 --- /dev/null +++ b/addition_malabr/benchmark_data/70kb.txt @@ -0,0 +1,2 @@ +question: what is my name ? +context: UxBvFLgueiToTBuvUzfjhUlNVJFQBQWjRXDcQOzWgyMELLIDjNWuTyIvudFaluPsmPcFBNANWJyMHmQEyhCPctybFGdHqzEaKvCTBpYeSfgWodCsVrSrAQltnWOcITjwavsRjhvkWokDLHxDZUnZZyJnRNIYjnCdyVncfoHlkKiWmnDUumRoNQpeSJWOzeTFWhAKOxnrENQInqrHfSuzcZgujVapPTBGOgKTnjmNEnfxJeENAzgFJjfdFezNFgEZYDySlwqCsDIGGmVvdOYOtmSmVBwZWMBLIQRuavCpWTPUewKbOGkbTHnJnurpSfaXmwnfAgSJkxeMXLsXwKuvWEzlEypodUZzbKlAtkYyOHRZkxdiBNvoxzStLkYwiDKLiiwWpbnbjyCWUDTqYcUJALcCTuniEXsTccTeCOsWrHrzFZFbxYAidSNYWnpANpZVytQhapFmXuwihwQeerNKWBrIiyYWCMIQZLYBgcdDAvQBhSovorwOojdYzGjoLwAGVroshPtmSfkoZVZyQmYYHYJcKlHZFwfGpBXqPYAKXLsYlFEprWNNfNrQhKTqRsJYPcEDhgZKbmOvbHwfNKBLKpsmppnDkRgBClOrEIRpAppsJlmqJepIduOqeagCQzGPobUmiZOlvVkwoKeoMpbiiEaYrYdqqaoepXEmqqMqKmLMbzuUqMyDqeXUxoTzrtVkGaXGrREZgsDjpalapJzsnnPcphKXlAvYnqddwkrioEowzFIXafePosTqMynvUWpLkVvzwtZWLnqRPlZUHrOADQWspwQBBbIHVhFtgDcRTbSiAkhoceYUsoZIbKmeHTfCyMwOyiVebXBZDEuXZJJlSccedQgNpDDyrGBGMsZgCeZkUgIdqEFrKUEWzFbGpoBtjFEpiRSVoqDCMWoKUmJmqSAuBdEFIoCqiVnZLZjLyEbkTmuTUKUTAqeGvjqoSBPdnVSyggsjxVxyItygABRJtYxdhiFtwoctxrZyKSEwaTwfZjmldfBIqVRzjiZdTHDTsazabQQliHsjWfApmGUoghxbtMPzIxOGMZFFqmtnBiqEQPussZfrUBzNDzEMtxWRYorVimBqdAOyKtaPLvgweuTqofyijWEWEqWOPgaTPqKFzeNUndJbyIzizDafkHjghfTgxnuuToMzhbddivKdevqgEzWoUxbeBStkxSGZmXRaVccGuQprjssOYbIMxMeSmlwKYLSRIiFdesLSlQdKWxuhDzFFSZgRDLsiSiBqiIRpEYnhJrIeFCQQGupTqeLQeBRSefqUVyBnhpqnYwahCdYUdSQKTUPGTPAYFXQeSPZFBqltYeasIHYpozwgDrWgbtoWRkwVKlTWNKRXpveLzxniAqYXcotULQRzNIZcMNQJgHHTgGoEZYAooDfOBZYOFqdXKNObKTYHeDCQxYgLwCEQntaJTdzqzJxRhCKIEEodwPqOMMWYFVuZtdowQLLoEbkxNEhidGqNRssUrdeinMnqwzTocwFJhuZtlkLoAzxltkmobTfuuBrsTyuCVzqdHfAdlotbFVAtedwCcqavSKheZvemEglZYCfFmXGXOFlZJYQocxMFZEQztqqVoPNLagwpVPphtAGxwKSXzjXRxLrmgprdkdsfVHFcmZeLNVyEJmtXeLofeCdhrxkliAVCVuEQPQGbCgZmuCNvPNTpKhhFROBzYDifRPoSePToTDlWdYQMNPxeTseNxRjUsyKWIuuwPqorArasiWeZgclEfgOopvMPLwVUqaArpifCcClKiMsInRhfXdLDUtZFrYzlaNimNVWZOVMHkhtcjaUAuFXcKkpfkEknxPiIMRVldKVYesbtmCqtlOQGCTiflJCRFvZNESBpQoaDIWOaGZPMdchbGeOAjRMxfsYOpmrOSRmHPeFdxlxWgUOgBtQXRrkXjXUyQFUjxECVzpseWbsNGupoIDXzNoFqdqKTyYhqlpkCdwPgqWFxnNqblRTYclEedooNbXHaCFxjAYxuCgfccMBaiXqPZjOWVQjcKIwkkCxhcFyhOaUFhECvJApcWMWnNEDvTxLRQzLjEPOompNwfiSQReLIXjzodHLxEGXJIoiMhArGxopjvjOptYVYzvdgQrkMcBRzXxzewJVzCOycQVwAUtUCUwDHIWCifTCWiEtTzCHvzrGPiMJIXFeGNdvOjCCPrhBvQKumIiueIOocRONoRcXgKnqplUMMaIPEYCwLMCUSTcRuhQrOUjHvfHIZowHZEQdYFsYrgHKsbglGcilrcCrLNuUfRFmwkFfXEUfGWCchPCGmRNnUSrcKjIyRufNEfCBzQothUMQUNpaVbdKIcaAcRucEvyaBewcsTBJBvYbDnGWlKoTHyOfYUIMElnOhvsgXYSzwqRbpVQPaQglWHiIVQRrNrbbbtRBGGatzugfWqNvYhUPKtOVwZpbjxIPzCWKTRjBHRbJJInqxyotDqxikLSvVNnFDajVcAqmCqscoMPoqRnIsFcArNsinHhmhuCdecHDZlajmseBTJJeGktThSatchZUnVQeBNbadcUKjtTaEUYkHMwoSGxWakwonAZdJNWnhemzPhmdAxxyEqAdohuUbMTQNQzIbLmgwnZlXkHppTpTuRJQPsEronpSzFIEHnfMbYRrDKvPlHAUtIYzmBBrXHGRjnlXyjaOnkJNHjZMIsYoPDIPaFeIqRDkCExChmKINAibUjVicmCuenAKBQAVIGljBMiBowDdaWzKHquRlKWxFmcYjcXZVpaPbKyPNeNPxZDSIaQzsQoSZCjbxyQaPxcLnqYFRxMQiJNNQWgvehgYwGwLMBTvuomWrPeVypcJIvDTLrpZlBaRlOYplFVfTJycpjLBFJwIJjnxzWOZSOivgCAmXhzufDUDpxOQTrbjhopBpHUxmytoYKVfisLHrHEdahNNJWdUNHpzjfcXAdkrzllXXdOETHRsLKkJmqnaXITGtkvpZaNvGzZPvwomrxIDxzIzySNbVJgblzFRdgBRKJiZSGHPjyveLBkeiEoZLaXLaWPyMtDpkRJcUZvwdvsrzDdswqaPWhGyRWtojfIEZNciPVCfhpcFusqrnpvDVHTkKRkOveZfedRYnLJVMeuMQOZTBuAkKIXRJbSpcSLHxALfXxrVuNkQEfkDJvoAWNjooqerpBNpQcYcvKjDivQeuJvMswgONmDbQcfkcuTsjKQOJORZschaXTOXBTuzxOqkJrSShEhcJTlXhTLwLjQpVOgjefXsigdxiMXqYFmiGLYgsqGgPbnovYEpcpeQJABwriRfHnWDyDGKFczsrMgYZJQeOpasUqaybXbYGeTOvOIFyZUFbtLPMRJTWXYNXDmShOnWwrvIlOMwEPcdLXBsfimWdobhKNHqRKojfFgZsWlhFxIVAEzxmtyISSedFZCaEsqcxkCBoYCLWWDfLcTbGQaaylnZYIqXmQhsNcQgLTMrdHLDzOgblUibozGCpXMFoANeLGVNafeduxKnMSScKfGPqmwaoQjgAVJgLEavXTqitAUSUcSpaYzXPHBFTYuIpxpNYpGXvMSxkFRhhmUYjeOTMuWUhDsSoRXfAFhUqEHoLOdrAQWiHnFfiyUQDwygSuCFOYQMmfeIakIZjNREDBFTTQYBdEfgwWsGvhXLDvhacxNeiWqmsHHJMwOdMfIVliyVDEfOCsOiehELoGenUpvBBSuCBYQieSnXYBzIEjMAsMmFUolSDAgSgqvBGUUVLAZhgUfRhRkjObCTcfOGaVjxLOWefOhgYzfyfYLbRoNmvwTGaCAcNWKhKccAVPdKNXWYgSFSlGPMYmzHHVHmXCvPQMmxckmaEAfWoGEMeWTGCxpuLYiEkZmhOiivguxRKIyxNcIveOauddmWTRsUDVgXwFMXtbQZTJAzMOhnhllSpCZHFKqAWUkxEDtpIEgvuSXevsowLsAafSJlsvXheYWEqEYsQeSpgeuFMvLqzOQrSodspUaLjkmJUlanctnobOWJiqYTyUWaIAAqiJyaxHhJROTjHyvSfFVHBXDNHHMIftQjGhqopvYpMqbXBEqhnYtnGDRLiDODMIwPIelOZxCUQokCOfvMJpwdeORRnCPUBOMcjXdaAgVZFIJAItryjegPgDLRcSYEbylFqyPPYAWTlxCzdiTeWuENQUWTDrPkyGvcozwynHEHNmUunRSTYpOXCjwnrOcdYikxJLltqVcQaPYHQBbBKWhfxlTjrwxPBuzmtBUqAahHBcloeNhrKYDoDukUrcnqCJVoypyjRDSGbBmWfHFAIwNoVJUcUrGAaSaOutWufYOOcSCYLgcinhyuTZCwaOAeffXJvrYpqdZpWhRFMqLTeoTuAdOgViLdgquCvbkKSRhbTGjAogqAKpaKZhiLuztGuhohTiuOsAxlrbZqzlLVPyDDFsiBKCkfPpyiKwHhovMTSQwcloXFbdSSEhYIAOXhVvETgUDcwCxiuhIabGKjVfnrcZZKFuUskMYnPLMMQhnZmZiWEZlZpwupcaYLIGyhcCBzIhxrGYYcMpfuVvtDyoVxkdLEmQQhzXaVuUcjWeekkYnuWgxicffLPzMRQXEraiuxQqRiftHyFTsetPRBzYshFyosHBUgLEAQrZTqvflQYSSsslZPbODOygQyQSdrorvLryNrIHMnsdRMfGcRWAafeCbucekzICKVzZYxmniKJSqRxINEpncGeWXJfLKZbVEHidBnOSxYXLNyeBoWbxPIrkhwPYiSRAAfwEOLtQeDBwmXVQGAyiSQCXuqBNFXjMDAdiOysyvCchfVHGqFVzwANJkCYKvuYuwMhnpfmiTZoCKgIKeSQuUaorPrwiGzJumaHaulKFwpmTfVlVgeHsslCYAvmgewObyDpCWpcVxNeUPtvnWvVrrjqRvCCqYUBxZVsubrZHVijyPOIVUiFBETavSmkYMhtDqsOgruGMzoGNzTbFmkAGQojCCvunxzcChbulaBIKKksGFaNlOlDENtstOFnjWsbJAteGEkTJYGIFKAJqxubZFLUMmIalhCPxYDiFgEtLjbmjzUoeezMOYbHwtEODncODJNVcTeWeqDEhGgHaCxfmmawnDRklLnEQWPyikIujJtZfAVXUmHJpsKfLWouPTyVOhHuIsabBmHCMUDzCNPxwrPaHJAqivyEaBQLjjfNneSoJFUqtDvyqGHsAOuwBKHkPpVkfhhpZrWuhboTYxFwMQUWiWlvDPaECAfUDUWtDJYgajTFGRTgkBUIVCFuRfLHdVIbSHtXdCWrxYhCyUUHEoIjKIgKcudifBDmzKQDjtbSHMuYWfVaauRdgRUBBPpIcHBSBEzDisTcInpuaEdiBTmrSPMQgHnwDYEYhrtvgLvCdSOlnyyoGlRDwHljlgHbviIUzKoybKNgiruCWVVcNBcpAjaEytnxsYudjyfzqJMJaKHoIkycKzRWzDtsRHzUwVnbkqnOGwhyjXqDzOqNRCaxgSGOuSOOXMWxakoIiRyTvxKegDbfxuSGSWZXHFmctrAqItVYFOIaRHMqWGfSFqveeBwqRUnNPpdkeqxxqbBZVwqhkoEMZrAkAQdDWZToqVoHmMvmzoruqMsYUKEgbjVhZAlVMGaphvXVpcBrubiyKcQdBcxtQEsAUbSSLSMEsbXfHoPtxlUyLyuvBqqLFynieThYbcyVfxXNfyVFDrMugJlENuiutfAoebDMtnACWPFaJEWBkibmixkQAbLAlirEanvyskNPneChZomSBRVLlABxLbJmxGwMkABgOOlYNHyOTxaNOlSEYNFIFnZojKKoTSthgbovvCZLFkGowAAoZYvpLVCiwyJAmxRDzWzamdvmxQVlbRhDQLfaKKDaDqZvnkEydRrbLfcSTLZupLNNAkfacGqxnGCGPYqCvzeuEHiujcbSfoVPFqiBWCMmrmlkPypaEwUlYfKgjYfQPjOlZMnYOxtcOzrTOcTUBCupytskOhMiDSTpYltnkvFmGCbcfmyUzFZXcanqssmHcZAJCDrVFrKfoTfSfixzQhGlVwlDxKsGdhvmjuRtyDOPVROFWfjdDmfWghgOsiPzYgeHcpciVOjsQfYeSjjGCLKRtdVyggFAIUYFdBcpLaetsYNmsvEivcifnMWjxAInkRpoNhouQhjrUDkrJQYMpYKEdHkcCMNNTYhpoZEOviJqcSUFHAtkGhhGuqwcjkkowjyjMxilVFXYESiPGJSXdcXrwhpfKrrNDwucDtPHUXEaZrwAcNrsZhoSRArRtArsYitdLeFuXoAnUXDdVtFiHoRROSQgWwSosekoMHjFcMRegKKgoueJLDDXvyOfrwuMZffoNuoJMRfVBSvFTkmDhCgOPABMexlDTFNdlZATmRMZHZheupbqSsFLezYxiMAmqIPnJAnLFavqRhGhHJQnriNFybSuNpSqSVGzQQAbnjrxDBQPnOuyHyLBYjnTXlgRRjcIxrFkkQTapEkuKWEKbOQdIpkPRbXgVAvkDiQKdwCBAkeaDLsPXgyjTIVeafNdiIWcHBVlwPoPNjDGjHUESBHcxdGtLMrCceVBjVJcWTRNZbPrCnurNptKmBMpZVFEBDbsYJcwzcLxcdinhBTtdQUraLbOfxzcWSqbYkWSxUGuedWSepgBJnjJRilxzPMSQbgxdbFAucCeCBPjaKDvysxpBDoZZpDflfWZozqibnwNbOrEOrkothzjSqkfFIULLzWGkQqwBShHOBunAvfGxQesXhALWjHESymeqZSrUpqjmoPFWxmUEzwkSrDHwvtQBnhRNgvrTzMdiumGkKTOHWOKizPoQbufXUHMYpnwoCSPpVllcIgGduDrKtdxitVNHpCrSdZTdLPGxQXbXGZlToorBXcNjyIGVJUjPdMUEwUvVIlGDQVoXTkXXhQFawyusCDaovDfrpGNpgORLPOpEXMePPluQLqQkHopZDMklHbVWVpjhLcxQzocQEBLiRTeHULpANqdBikWJbeLQtQNTBsYrHvYVBeGdBSPFLaonoEJmuVkakKTnfCMMSIoqovdagBqqzSVKugiVunKSkxinKQqvTbBcsCQQXCzmiCUbflyfJCMPVISYtJcPyinENNSxVFhlBrLNuovISyhyEHHvGkyLksfUblOoncBbSqWbWBgFOynletVKFegpzrNGKZDWsmCbhshDCqibNjlkHhLATnlrSEiNrWcDnTaXZTMygCdFDHZIWEkPLKYvhIXbKzVbOJdptpMPBndkKJgVxshvRqPcGjirEwJTtFBHAOitKBELIJPqoDdjhbuwQvFSkAKgrmjyWYqqeUNURzCIWXFZBVwFjIXAKUXOBdJrSrtBxSCHJHlTRksxpuojIoQRYFBdofpwYnuwLNeFDPFPDPBrQeQAVQByubwBOgsHLdVdAiUaKbycXSZIwlbdqGMRCXTLmtFucNSWmLjDSYqNjXzsIoaMCjfAaMEtlekIYOZQCIFeNtonhxGwYrcNsxVgIenQXRTlbUTtNRpckhyKyyaUXTwhzzBAwYeljzyQTxEDVbKxDUiFvfVPvbISNUBMNIlfhmlqNSxKiwqvyezxMemqgMeTMIvpWOLUKgnioOQwEeFRwvrwYrgoHGOXOAydtNAspUitROdnTYEuefbnQmUdYCpvwqAGkFDZvMpJyPIQCgxxNCJoALEBhQcSCYkzEycukanuWENKHFPIfmqVKMLazZssgNZoYmipVjAdAJsTRxnGHTbessvckSTkSHDlaeQKWTJPdpxDkqszsheyhzfCoaxSxZoBAdnmCVfAkmiEVygFRYeLhetUByfsuYjeAURTuqJbIhQnTHIVWsYaUETEIRyYVEgewebzXxvaUEhCaStgpHPtKGHGLmekumEUYerJlKKgdDsPsbZPiigzNWuAVsORJLciiaZKMuOZhkRyLHGAZCAyYsCDjzdxvMuICaOszmqlHUrxnpRUmzDFZTASHrBYfpnJJcBFbWWboNrLKzvynmNOhxfgGiHvHCOhsxfxhHBkHZEeSRQuXoHSbSDVZBobYeBrKrDCnxpzahZpQOdYyvmNVATOVZrAqoivmCmamKVyNEQVTQGQngKdXpGQxqkPforKCeRoOeYPKPLzagQvwJobMsrDDnQrJpgFvOXtlbqBuCBdOTkKquUmwxpOZEwRyxnLFioETJwUmZBlfSkETFCRaebbIgyRPXmfXoeOZaTVgXPdZjuwgaeGRyPWfuZvRpEHfbegCJxXIESZascfaYEgAoUCBgtBOHXzBQhaaXhwfaCmsAzIdrBztUKXedbEJdHisitgOGKuWSdxtGhJHJwxfEafNtZRgpSupHPaZMGGRRzXqYdvIOZntZFYKQQTcKIPLLOwmBJlJSxhEqUqSwxcrMfOauyDCAGBYbpQWtXxjuJHBqHlBkEfLphIJNdcSBTHjKHYemrjxKUByeSqHnajvxIkDNKmXAcvTNmXJdnmtloISGfMtjalPtHLkdrKcVXkLJeJwAlgJIFfotHygTkUsXERMLvMUBpGRkHTMXzUjtUGpnxoeHsNTKdjCEQAOcoCcyrShmVdDLhXAlfjDjOjRJMgTIbJXEVFOlNcsIgJqDPbPJRchOrcwWgdZYjXkvBEYsOHbfqGVqQALZpzybpxEsyybveiLrlDtAMTvhMHYDXNpnUIYpKDnWuhzgcNuKaTVFpBbIHPyrMDHzRMNFfKzcfWvlvcDfdrKgIkMqVZboGkfaqEpHvLNsHceqQCgrZBiOnKskBpiRbKdxJQLtlMCYYieOqXRrADomLXZUagTuQdekNQpLijaidfvTOuUoMZFlWblcysyGxsupkioTHnJpzHwaVPtilzDsIVuykQfNaTIMgpBTHuKMeglgeNaPXpbciIfNJUgrEjoofeSKRgNfOEhRIAqKBtQPSEOlIZFPVdNiURIwRVjcrZhNxNTCWjypnZiJOupxuXApOtDPgUuUkDDtlnMKXcUZPneFagDMRiCbiXvEYFgkbdYsylHJdfxexzrIHqzFwYIHLXuWzbfFAGJnfSGMDraQhwXUYLpaUbYAxiiBfVXyRTmXwYBCwEVbpHtIWizzAUFWPEyXEHwdkhdspwpLcvjAAZbpRLKhFeqxchQqDPbxaYLyUSQQtmlcLQZvFaqWEUNoLEBqfRJNRxaioEldgEDRkCtYfxplOPbNJkgQQTbPOLWxZdZNJzscKwaVHXKADjGuSkklFCCEeiBHSKWQoavLmBiGqPsXCSwdvNlVYdKVynjRvrvHklhzgYjBfzudRlLFXbtCtHtFkJRuXzFeKrLXiqVZLqlDXgFkXjIOZRIGWbLNyTZSHfCZrzBkcFRlUSxAJLdxylKsYpaKyTxDAsfFKmpBkoTpYqKMNVYvbhqiMFrzwTwuihjzBzhhFlCVnOQUHLgNKygOJNzrdNGTHwlIGdXqgYGdQImYgQxsVFffCwDwxzNktwAljAZOOWMacnShnwkxnzfsxljqvYxwVbFjHvDdInbwfGoyMZHxEZhCOYTNcUMFZtWmNpnoPsxaHfLWzYuqXixYjLSILdTPdGyGvBAHCQLRFbgecBNcXXOwispbIuHhqXmmgFUfXxFWYfsFqmALtSOtrUqCYcQechODcMrjeXDnShDXNRSUtYEVmkgwDEiEOvnhveTCRuPaXHDArnyhVnTcgZAofRgPfBFMjKmeINhCeAweikVovGaKvvkciDMQlemLeDQcyCxavDGtlvoaWPnRTvexSztNpTtFbjfOyTfhczCxkcrXTiQUJJISYVVhWhYnUkXwikiNiaupBeCwNtLptCbLidfdjSnzpqtfeapAaUWDaTtucnhtTIZXYLUlLXfXSYwOLRAwXktjaWodFlqVjiyQyxMVeHHmqmIvJWaKEiPjibqeououJuUOdiJdKejfPnYQvuYtoDLqqBBslTkiXrSLSmUJppTcSwZShXaalEYeAnnytJSptGmVKrZXcGhHHkACorSeCJxjWLypkhLmsaIVZGnwIkifrMbdlKabMuRIUkxgHAilSUYhhyPFlNSZaJZRFotAWEFvCjmzuGkAZARbHhSsxWDndISgsvnbcbMlXNETZsXjuausFpDMhXJcgGmiZJbsdmlDFJQjehOSxMWiTIrAAfQsMRMFrDSTJcTjKJFkuayPhIXcZLlVOQcykLCgVhmuZlIKYDEvSZKWLbnLWjVVWFoRqWIqLnWxxHtzlzqZSkEVHoJGnUNqoBvugCzXaHtwJdGcmPmpkyarKYzfVlAUpmQpIsTjfwBnIKHErhMXGMqIrOoXuGZUWFSzDUfMnOzDbtLLTcekSAJvLPRioYccdLwomMUKMipASmhScZRGvQWZYoZWSHFfyfhCKvMNCcBImpDdlZkleYpmghZSECIlJTzDMycyzAVLRTYRxQUkcqXwaKRyItqnDcghuimpOSxnKbeILRBPByziCMaDQLCQwuIrqxUudQQRVAbJiMslRfecIUCdKyUaGInExdXydmIzZIYBmMJotTTZPEdoiXSaensODGtASDygStVzHiilYGPRTlEFVqIPRifORVMnIWbzbmyogsFPAnNmwMiPTVJjXECLkkYVKYyMumozVhrafoqEWljSfhgqhyBEzauIHetukmGdrnoqXUMCCjJUXjtJovpaDRIjmWRLoOaRmzYGTMalwElmDHyKNTorXLmpfClMYSCYljSnswCEYvCpFRJHRyPsapKDlMDGATXkKoRnfOKTuxVwzkWJqdqdZHDJUIKaQyLbVDOeWsUKNDGVnoypgcUWwSknVeYMeRRnzrLMQiPKzExqxxDpVJFqWSrbyHjJDdkFoOucINYwbBXYsRZCHJzhksqvxMWVvlsiXKXsFLQAnwQRJFYGFmKnQrkqLgrgMxbOvlyUjBvuXDqLlAoRKxvugMgoNtSpHrCAxKrDstQeOxfGtdbXJymqlsLidpWWzTzfhdxefKSwINbQyvQdEyTqSWtpsueBKpvfwUldyaHQLEFupiEQNCBAWHcgkqPBIedJaPIZVOjvRUtVVCROGsxRqGlBmNNcVYUfZQmbdqzOyzslkAuNAQbZovaghQGFvJyIZnSzKPGPQjAGyJiUUrrnDhApQZskhClvFKFqSSmHgMWNIQeVTKonNjtYmoADMhINPxVvqliIxqAuNzNIrDSLMXOxSDiTpGjFiZlaJbGVpWZRmtTOesorcKyQUeHqqUEwaRpWjkkjAQmefnuVyMSkuiKUwNzwQCFIwdkbPSKnpKdYPiGnXKXrPwuHxIYXZAFOSGTYBYVeHitXiblecVZaIRqjCFoOvIqTaTLUdAOOYvlDbExfOfiSenSncJKSafMkRhHMgADeBUPjbsDYEZCQJQTLyqkdNDwuynjSbAjgpzyUTlqEkDBhBIIrXnKCvkZIqRhTfTSXiKLCnUBoPPcvjCwIqbmBUUNEJaaOTbxkVINoIyDiebqdpoQuWPJvmxFgjpsHLPjZXZFAwTTWnvxoZCIXbMsBAWfSAlxKSLbeDikLzVpTzRfhkDJBKDVChFXOTMhrQwXbVMVXaNdpapGMcGGathkVHYJplaKFVAegogCnfuKzzdnLPXwvbgypdUHirhHGfcaumACPUTEUGeeEtdTcNQwBSGTToFyQKLmdibtycxntUdYMzBoQsTXTJbOyYgGFdBTgADyZztAeGNYFiDvHAcbdwOdSrwveQauBcPtgYuQUDPLpVXgRbgYMdmLbDyWZsNqdStulBLsvLDsPwJjJoLboiZqoLzAjiUmnaQEUCGyTlJplwPIbTerfdoMQmeFfAXCDIxRsyeInakRajcUlJnCWqvyVIwGzTMLEYOfHUvGJvprIQliBlGOnDyPTnJNRRTtrNgJPGYHLYoBkbPracskBeSsjppAlOnyMbSEoEzRscQhRpHcFBKEtwYKMrPxAVbimTofAAcyfzcXFQaifNTaRBawRcLKVHJXYrMZxkMMEdhnhYURehWQcBJmcarqfMKXrbdVlaNgqzHBEnhSnFahdKdNGynxZRaqJiiiALMIHSIRMSanqZNosAkNoVBLYOTOaEcDUELrRyOazHtEKcLdXZOKnDoHNxJUWYexxHuivSFGbRRRaakyIAJUsUwLHfjmHwWZzvFoMLjARVgfnMtqpyHkfeaReJeAKjQRxEwceNHGJUlNaKoqAGuAgWQyangQDgnkgOpRvwrdWRpmkDvtoRUJbTtZjceDUKydHGxiwQeDoleDeeIjEZHVpbIQhVkuZWptyaYSeXIiLBKPeIcVQuqojDEMukrefPdtnBPxVxUqjBEFaQMPTggsGoMZaZhZNyVWnfGxbEYlcerJIfFGfyuuLmYFUAIbVEInkIVURWimiDKwntVnGkrvlwyhZoalVpATbrtjqXZvukLHVfvAIWKcRUFUZcJECZhFFBUQKVgNXdihRHOSfeaaTPQvOclKaJFKvwmXBMvHYMHvLzEKJqFfZPBTSSGvQFAgSjoQnLBSyjXbcpGCJnDSYyKAsfsygSiZvcnXGicMBtaLjJUjrrDeMjSERHeHrKsGhfpungbeUQFQOAyYiPMNiCwSzZhmXnSxeZOvVvYBRplVDOmcqLAenzlUMLexXaZhMtQmtTPJIcmzrbLFrxsChKIsPSBXkkfcvjlHxXdnnbkDtbbAjqsdGCwQZaWDNnJDtxJpgfKjcMjILXCOYPnAncgVQFeQEtgqiDyONETTEsVFGGqyLscIEzsIIbvwLCZNLYaXvjUHNyzJQUJfFmGPBadodsrBbZQrgJBuFEaiwrtXgRZAkPxFZaldUESxKwOvpaFimkTDPncauxXvvQbpzpyrIyMBiFhIyMlnAqoxkClysfBThwYArXtjKOUlOAAzfkObrCjSqiBxIWoNqTVkOQmpyZRajyVXwiOHzqEZnMlSZgVINpqqXZzERTyGpTajZuOWadiFLTONxdgDpvhXjwtFbszXFGuSAHnnVAMZUiDZrBiwVTUqAcvBlBWAxUYEuTmxNlDbvBMMxoKvYPCOhfduvxkmgtTfHTzSxQXpvfXylHyWswfyZwmCVKnnuaaTXWQzInTcZZMqIWXzbvOpqazhFqCbsYWgquMIPVJuUDLZogIdtwsnaxNaIsDLEllQgCUeDaBdfxvrwpFYXtpAcNMhVfiEpPfwOiUZyKeJSTWRTVvncLuFBxhrKEewosmfbrgtZXCSkomkbHKqGVFyxdlpDtmjkASSmIBuhRBZSxiRrcQSAYDgxYHcQNjkgQQKhFlAAKJLxxUywPkDvUBhmGIwYjzAoOyNbJRMLhPgdlKMvpPCHPEAhMtkRnEiByoaMhjpcCZAeXdPEmVSLMbwLFuKeiNNUUkjssDGEhWYGjsOdHrXGvBHSFIiQpnMOnBzsQSoqKyUAiuePZKarikiCQMctZzfAwKNOCSIAlgfgqBsGTMxslPMwxOLhmvcDereNRrFJALMmzrzteGWPLhmyAtNxKdEIynEjXPPBQbpaNCpppCvPYdKFtvaifgzUrWuyZRkkJCyjyJKTlBuThDTnenFKcYuCUdgHsTmpUHmtIgGPtPjVrhEMMKiUYeDOKvsbJxycOnAxxfXiWyHYoBDthcqspSqEjPRKYlpmnOQcabMAKMOrgEwKQJwcDdlFziNDSaHdcYVGvoStjRsRTjokbjOwnnrhvbWYKjPChGxzDKwikVNnYRzXrDOnlQdtZfiMFwBsGQGefNPowRdwVrrbemsVLtoAiUDlSKcUePAHernBjLlqKsdsAknfPiGkFCOwtaOnuxTVegpTVMTehLwTvTPdtUyqyexbpFGEzzcjLAPwjTFrGxbVafmUYmSKqjwDBCVtRVcLmpGYWMzUQwhMtKUETOeMRzCOeiVVbYkWXsawfeyhWIwtBNFVzHPwYOOoEPdHcTXLbNBLSREuUIFHhVgEwZYMvbjMZQYTWisMabZWlaePynqSIAypzeuoRNXtpAACLyRsYXPGAshDhTfMNbRPjEKHiziZbyAmbXTIzUflsKMfXgkxBKKdaQRqaSkRghtJwIdFenOvZcZMJskLzAEtHsPWsnXfUXJAiArGixUahJYKsuOQMuTRnDigBzqMuOkcbmdkvnLHcWdRxHUNbwaFKGYrEKssqfJuxHMxbjPzzGBnEczUBMbYaVAegesctymDAmmvTRXnKSGRKTlcCYaSrGJWppgGIZShkfWJMTQZKPwCBCxNgBWaSCxJKPgrFJNcQPrWvrNsDhsSVdNEiJWwKfNKmzpueSSIiBfGLvDcpNmgfaTFturYePRBcNfmftWBIgLFwPPhzRJAGZqhGzlerODDTFVrhDZDFbrgCMEEpqULtxwoJhgemPMeaIndKEfFWyObjVjyViIFehgmWSicvHRkfhhLaSgjPsPnWMZcVedjnzrzMvyyhdmYMWDPRlgNhISdSjBCouwBpDIMPhLlRgYTaBZYzJjegXVqzduOGLopcQlENuuQaMMlPtPVnEVJGFvAdmKfFZLyUkhbEKHkuwqlDtvQgtUvWpmNWuJpOzAQQIhQKtzqXJTTxWDvioKQWrGYTjaeKvRETxGeBAUZmlnAtaJstSzOMfGQOXdDvTGBKEvUwLaxoAxxKOPGHuWpygxyNnbXHZBZVtLOUzrYCLchBieBsEkoiiTTnOVLdCympLxITykeZaZsSHMXAFNpHicFIBmRqfZHhQhDsxbmuoGZmdKmAzzeAZNsHuthWUegqtZhSSERIWEFjUPQlyLiuBbsgAlDhBDgEfyQtXspJkfFBFqTpZprBbESRvOURusqnTOpvAqCpBttMSJAkGFXAIiabITYVgZFiHgLRRQGCenZmsOIliFPKeEfBlpGTJgKmswzvOokEsbktKjbRmtzcxmkpioTnvJYuOFWYnHoRHfbGeIsuTnwKGQnIXGOvJpvaYGePtygMYMpWNSLAJRimdEjcYkazKCDJiYDlzejtVbhWpXIChvYjsotQAgYJJHSQfFSEADSKjlzeYoJPaAKtIRRemvLCEvZsWCnKcLNvCvdsLSvsuuHxODoztwLlyNZEmDxBYwWLAFxISovTnpEEyUYExlkDOnvIQrxVSBmNkyZqrjCowWYwMPEmbhTLuVEHWuqrFTMvuquKuJeGiZKrMqoXgaaiRgZlMfxwGRgKNnylZFKVTdizmnzKgpHXDNiZaDyFpGubuKiUFBLqsOogXsyUHQHGweRFBzHocPUbEEsBIvQUZFUmLhvSUDsFUfcYERuyZKQCwdyLuDglGBuDYgjOVVLHtkTvYFStoGYNwIADJTWXZqMaKvjwsmyLZnQElIgxcAhhZCtzWYIPmJVSpIekcpsbpsLQtManpIbkYfLAIQrIiffybhLAaypdjbjPjhLtFKsRzYhKihJWgzRtUHwKUcwvgufDXIYJAhzhbdsbPmXeclHvZlPCgzHzAguNyZsVVncwMQhBGCduYarixUymsxDTLEtBPBnkNiLPhBFASPghIreDbriWOysKsuCpVgiqLbJPhXNSPKZACaadieuVjLNyaLbPALKcjyRoJAidiAEAvjfoEmMqAxCqvxgQfxkWWFGNiuvbSBIOXrJNoicyHSbmbtmtpnuasdhuPwKVxiOcecbyRPgAwbnDWvSnotSKfNBSBsJQOUWoeUUQxfngAUtPveECHsxSMhBHrKkXtKJkhumQrBpzjZOUIczzFxCSNbkUFojhJZhQZlJYqkeRkvEVIQsNILCbfRTuLAXXaFoeMLNiaLAfQuHoHuivTKFBXTHqzEjDbziYZqOKvlDOUiyKLzqdufvYekBDcfKYBiSGxMHDYgOJUMmxqyKGLJpjXKxtmXKhdqtbjcunNHRBJkgOLAKMeIMlduQayBDaAjHpCSWjkckvDNOWIynFCiQFAHmvcysmjUdZHGDHyJGRmykfQpOlqbWWdlcuAtTkASFDsWqlyHApnFmwjwsZlKWsmEHzGSTVWqewdFfJBEwzOHZYgeKJJdyucUyFToDatOJIJqiVgxVNUnHQHKsimkZWPXkiKRptveKemqUpYNvTPUMqBLupwEopWfilUiTScRyOWEAOMjyfnMFHGteKQPvWkTUnpRXvHboLlRKQrIVhMFiRamSfExjbssEvrBLHLrupkDLsjEtQgGOFNULtMcmfCccEwqGQwwzAVrMOxzdQufMeOccSPUOsHPgwohcABbvPWXMqpldaoevSMYhgtoBaNEqNXKUVVTOCRESqqoqUkrPaeecWGlBKxaTmEhgvkouuqlAaJWLXxUnalrbXSSnKePxeiEqqeucMGgDgWXBZIvmYNqhGuhjvrjNJuzqLKLWhdlfheyZUfFZFavvTUASQGQTUwlybqeUBjbRZXMDCxkLcUVQoMkkRyFHdONjuwrJpWpOZLXAdyfjFXVFqGNdYSDzwYriOqELhjeROwkkFBFtkFIfSfcGtAhXVTXnFvJDqhYiXdAGpZPavUSWTZfTGgVnFHqDYxSsQxrCJvHheQsVufPdinvoxrxvGPbdULffTWbJDNYcbzUjNuGUtAdDzKlXPuDZIpfdWhrGxxmWDtGMxAgahfDdHBPewouqrntmKeSxjepuzAlrOTkWTbABmsjCITvHrEzechvEvmPcnfZqbMBRNAwcMMCBfbfRRckukaPgvXvBKPbNBclaJadxeabnjaNWUDtLLZEtIMwzaKJtboiYzcONezeHJSvoCFqxHFQQUwbpzXUoeSqDbmjzZmObWuNxtnVNEwQofegoyNNkDeUiDtvmpEQmaHzpZzipYGpVmGUHZTvlghFNAaoIPRaYInpyVtAcbbtJdPfDFwUBmDymCGziUFloNMvSrvzqiWYFxjQvpWxnQDpdHTxKNeXPPeLvqJqdoqatcZDKQbHORpEJhECeZijPgVYweWNpKHUGzxkwBiFEAwczAMvdveEFKcFAAXZNjmFQFHiuKhxgeWfaUmChTJwtFEslPsoXFUoUPQTZtqhbtbxftioaXBkWvjZuejLiGjWLsivmwrCcXBijDvwrYOvtNcObenLtWAMTWGpVxSWDgqSxvTdRfPQyQjDhbRiHrjsnuqnhDQjUjVKerHyNVbTTTWavAKtgkylXaYFvAyowIHMOTjWULGiNGnHOnLAZvOktNzfFpZbLgeSvmpXxbiqIzdgGjFjIopInOyNENoLnofPpOEwjOlAEjWKZkhUiatrzzoYncmtANotvqwsJzMKBcSecGiIasMxTGYTWjfgfgIkRFnruISIrlqpWQaRmugbkRvfzhWGbvtdRXqzOaUJPEkIzsLyvvsNkfTqoXOjNQmzhIUlyyfZmbeNYDyRPonowAxhsBVXPJjZsNpBgShAnkDHcCQEbIUtCuqmAyfdVuSbEKiYagRKSQKudPLwEEMFtOqAVdfmgkIPTsYNzunmzkvOwHrTTcUGQCujtVkFGAGUJtTwSdtKTxJROwuTGbGdhXleAzilqwWpwownkjXkYCSMvyuDwxRevBwCbcfACFYzZnoqvFPvWpoqrOlbPmQhvvjHnpOIpTAgXIoRnCaISLCKUBCKUhzjBJPxgCbIhjUfexVIWZrcBtKqDofzKbKYOyqevXjfSthHxyXQdvzPtYxziJVfjaIllMSstTPeZvIskAYOatjJvBnGDRXSLUzSHJWqapvlJeMuwUBuIkusOcOtudkUgTrNoWilvMKxMEaqkULjxSShsKVBNViddIblllHwsxTMxPejLTYJyOCgrMokvldrIOHOKxUlzaSGFOEJFSFFeGTbrZhbBZiiGbJkNIzdSNtbCeJeMlwEjuaTCXomJzJUeJbrTnrljpmaRooPoqeEdsZsCRRyZdIQyKSEqtoPStCEOXyXYvaWtJLfLOenlLZjxOstHplLawQPXFbRUTIsCDyKBZfmBBUFBoSBMjoWtJsKVFTpXdRGrJBkztzHcQWcIRJUtuLJqkCwMhhHaYzRcHiPLaKtaJNlYemzKfXjODxJLitgsXdeEUSIawapHImcDOdjTtekgTJddHgIMgjNRqWDCoPdOTobTdGpiJVBjytACktjMfIzGdoQHVPsKJKETMcblLlpxWIzzwPXTTMmIaahWMfhORfxJHvSbehQBlUIykzqrqKbStWpLDYavhNWFWEtmWgsboTspEQGSuJYQdTuQPFqguUZSsKUxChCPDUMhAKSpmhCEqYdATBNFqENkfVOymyoVKtnvlbCSQBsuuSvMuwOzUzacneaWYWAaymWDogyjkJgbtQsIYUwJJyRbQtgtLtCqQgXRbDgsZcOwsJicQRpXbbAyrsVKakavFUaaEhlFEXSjhJCDzXoGkEnZXuyGoUZoaTFznVpGkzxHFPQXnofWWbVbbJOkqalRGLyUabMTzHHAULCWTXHRnscLEdNkdyRfJABKSGxToASOmYoWvwWvwevsbUmweOlDrPhVsUGBhTBuotvexnKPciGWEtechZQZlwUdLyrZwFbLGeCcXschNziXSeZfVWjlpCuylJvAYQZBmiUcOgJJOirfwTlSmoFQCPGZSlAyImVqrRMmaPajWGJreNqCmQHRzPGGqLtPiwIFjBCIUhhJPUMisMdipluDHPZhHIlJbUvdKLDOmuaGzAnotpiORXQMUteYhTINlXXxfBUqLyQFtBouisUGbKGfLhAiYvRqcbNTLvvlhpmtWZgNJdPtYABxuyeEFHEYTMkAcDyjuqpVsvAuKiEMwgqebwDxYxyuJurVppVktTIeHkFpmWETPlFCYmbzRhAPieOSGVluVPmQGzovWnsLtSQbAhEhrBUkvLPPUyRiHKYtHJNNFEsOTonuPSgzXwbBYYhbEoxOVsogkcWFPZSlyNjqNIRUNWsYKyMyOjuFJJfanDElDbnarBDNSzcbqrjfpvZqAOnrsPmfGhsROzVLPzwvFsGPqoFbRSUlJybrCsArEBhDyKpWDQlHlTkWvRLovbQpAKbupFPvhvHZYAYBGejaaagCEeAVZUKpbAUTxvUfspTolsYqjZjYBFuAAjpnKBFAWqTqgrSXPSdRqemrTedIspDvpSONOUuEOQIiUtbaUocsIVrlZDNgFWvWnKKTAFlZDXylicHNpZUUNVEIaBIFJyhaiNXLuMEvZknRSiekMdZjsQMvKNVAIZWImGrERBKAWerwhxCrBLWNFitRwYfFINfpHZJHGBRNejDJJIpzhLorjabwvyKElMXMyCxFfUILVEMhCDpQcCxLohcwkxptgjtnNPSkCZMYlzXEPjkinbtliVYCIVHxYXTcGjoxcAEbLgXPaCBlaHBmuTOJafwiechyjXplbwizkhKKvJVTzTTqHlEvkuCpDgSfOrEuXOqZoFgaLUFvoGEjqNjyXDrKereOBkipERPwZZvwaEYOTmkHHaRCpoEhMcKoYVWDdoLyouChyVoixEPKvprXWAdHsNlNPeNAmxAsTMEhoBKdGVmksOqviGnQoUgmLLbGuVYOQbrYfRxPFWLvOcmPdwCvtBhDDMFHgBvfArGyLjqBhhJXXUpYURYhwbfgwgKNtvZVniWXodWHENdENtvbSROUAVAJXgQtzkKhRqOnkQMnFxhoNKOUdtsjdVoPlwyYinpfNCVsRyfCbGmPdJxobNRaLCiZflkPmBimCryqKxcsICrxwFQIDNKKPiKJdktSAoocpIgKNhNzlnXZKYJpeYwAlwZHmgwUKDFHENMviuPoBYaXODjRjnXAAhavOgUmaBDxFzoLegzyYnfLnLtsNhkBNdmONCKfMgOunbZrAoySTvvsIqxXyLLDHxmpymbMdBxPdAbRDiJuwVUnohgGksVxKKMSdmQSqLBCmvmldViNPRzfDmLfnfUoyLsbIzWDSjVMLrAfXaXXZIwJaucXGsJeCUbAQCfypmMMaiTSmGtpEVvqqWUoLPPKFPfqFXaGhXNzVGvsHGWWHSdTEkxnXKlziTlcoEAesMRnFKNDstjvLeFULmxutDFjxKwzwvKdMjqGCDnZjObzbuReLSvkmtDrDMllRWGNgRJhfrYOLfIndDhFpCwGhzuJiKRCNddeGhZPxPBxKDuPWQBDeJNfGyKdxfNkOiDkPzMRkuSZnTcFQcHbVKllLExtxxMcGSPPmormkwraSRcDbjVIjDhZTBUuoghPHYWndJmzGCQxSOQrzqMvYnsOlPkNFLslSOfgZmRDoekHjltncBcKmkpxVuVGeEYQHYsUxmUeAHfNOZgZNVCIEsFEgdOOFTtQQyQFdGzKpRMuXXJfChlypaEwtYzPRuIoDaVAwiyoSLnzcpboFzybDBCuqIHEyJNnTOGNOXVblsglUcrTTyUQepVefwxUimjwVzdqIfaZKyacAhJfBxTdattDvabkUfvpQAywqiWeOcwufKLGFrUaeIOspJKJdZvCAOsbNxvWLllYhhpMIHDWPeDOJMkqhbhzipHSmnAiwEoJMuBHMSstkbYOigxXkcPEYbaNHrBeVnybSgWSTPTMChGJwGnYWHOehPHXlHLsqfemqRGfSaAsPgFHJLmcEPpYPPXblXrbtttdRcjpbCuLZAeCjpqoyFTlULVhepapCfFUjamWSRVmZsVkDYORXcpLJwurLCUDvDreUHZDdlbPUNRmpxPefLXrMvxIVMYlJpkyONwDbvoMiuDzPjYQTSXUOGRxkkqCIxzIXfbgehbwQDZBwUftwJuniWDCtksXJPSMVEvAKDYInXZsUzWVMqKCthFRPOvWAxNnsMAFclUfgSzerxIJNAoGsmuMnNNPTznaTuBSbzrhTJPFjQfhHTSrZAjxUQYexBFFLeoGVswSzDznwhUWQlzJOIwCgeosFFUgvSlURhoNJEwQaLelqlqRsiENewtdixuvrWYEnKGXLSxJWTakrvFDtuchaUDOFAcmDkBEiqtALUOoXHeqrsbTpubXszQNJzHWkivLmiZBVdWgEyHoVzmZmlvtkQNhPxjGkNjrNZwVndjYHqrcEMcDYfOkojrTBsbHcVGxnvWBStMFIyqqRslMEaroyPKNgjvOsIlYSnbfqSTyMgRUXenWbwlbpYdEDjgoLwddiEyNQTOGruRLJixLisLNJqLRabuMUFXpPFLNlSWvhFqnRtusdLXeAooVQBSVtraigbOwQmspmYEQjkjlFWpDmgWflaEwNmtcdKUJArnbDOiZiTnAzCBTlDKCxsfPiQezdjLenSDjcNVUaHyQIoIGzwPSEFnGCyrExeVfXaLFplrTwqALCkgZmKIZTBcBuhSdtrHoufujuBAItUHmcswUahRaSPFTBzNjYAREEptXydAvKQYhxpmaLZkFxVgchywgyZoHJoWaolcAwOodVhjVxWjYPtGRqsGpmlQdHLBPiKYdFpdVmGqxuboXcEIZmVWKGtMYmwolRhayhBzKViOFClcVYyRaJziSlHTNjIOEYDleBNAMZfoRLvTiEvwUFFAJizZEXrrCsqvPzoiCTgtvjDUkorvkMNgCMkOVdMBdcrdeFPpRwlfPNsxWZcEwONqzhIyZwTNNZyoEdWSsFVTWfkzXWWZjFuuGVTltoyTENHgKFWXHnVQtiXfhMmDMhsbDmQFRdQLzsStScNOYhGuKWzkQYqsTUzbvAsZXQlpHhyNzNYKJyHjQDasaSKivDRnjuweUMtAFxmsjycrgKcacTeCNOOVAKUGRwAslmcJrgqnTdFBZSKsXQpwEdrlndlGPDnGCwFGCwnBwIAhJfylkRltsoAmswLyfGrYnBAXHDKWodHeGLhAaxfuBypmoIZswmGmYjbTWNnxnPpnDZAFrnIIUTbYdkcgtqRABKPjzMmjCFsmNXPQkCPzGmeLuRUOTksszgQEsFPAufSSycQJIHPLEKQbLgXZApiQHVwdSCehsvoSWbMKRAdgNHsmmJglokumkybaPZlilCZDjEBhUcQUvxzMEHSzoCoPxLPUPpnFBXrtEgdssYLytxYXqHjliFZyAeWlJkXQDaEQClTjNLRLuMRisLFJvUEsCpPgqQxzBHMXAhAySrhsfvzJfHzqMMRiXIArejYcYdcdmDuQfuSmystDemArLSwAuKXKpDOzfbfIPTJSeMcQBgbMamxFqurSmzSHAxCnLGXDRncwhRviWLqzGEoYHLcEevmsUHnaZSbzJsZZqHrSjKnysYZBEjFBUCIlrdAyDaFxqjWbQPnWpYVEWcRMMeqgbdFdrbvRmOstbZUBXABwMffULaRVOHvZSUZCQhEVSmztgynPoWDmYFvJsaiVGplUWlJZsfBNxYPTywFnjwMDePyVJFBFMBCKsjzNAERAUQuCPLXoiTygmgOnivWFFJtLBlEZrYHwOLqNLEDNJAoFLFiqJzKgCfhiULrgHEupLcxQHrdspvrQQPrXjwGGfTzkYWqbFMtsRfwnXnQbsAIWJQazlOlLKRnRvEVtpaxDXsgNhvTUjgqVFXDqRIxmoLqzolqGWEOFBHAsIrWMpytfqcckOlYMaxPtdPnKtyAyaTQtctRPfvhsIeMKEXQJIsSXOpQSlQEecvAYHIroJQdEjxTqWiIVWxSuWnbMyhrtXHixpuYoWGJTDBYUUsIzaLSGzyaBsTkitKHgLPbcOUjhyfASqeMwcYIDhhaBkblcwHtTWINffsWPtxfsHLIfWKTvgxUiNZvITLsOURAzdWwcciouDXhrllDZAIbkzcZfWTlCdzFVVrfFYvrEriekliQqYGVlHnMCbAQGvFrnkZpnnjDtCxMJpyKGkRUPEbiqoeGyKvaLNSFoGzWUVwptfxRIBfIrhalMFvSNxADBnhUxrWgncjVXrsENVxFagTtSFqZkdhUetWAFpqkEvWofAItUdBUbWHAlsfLbeFDTpAKrRpXrxnuydLHUdUfeVRRZmAmawtvsepFGjRzpKteusgKvlaXLmaaYYAYJIKjKOIDQDlmFcyqWtoQlPGFodUXwFCfYCyerAspGrInqBNapUDbplOucaWrgDSsxyWwOrpTSyItJbJXcHvEwBtWkuykrOscucttEPRSDZOIdjIxIEVTqhYJrgLpAUFwtGshnwRqARqsFSxwSyHfYLCpEGNmemTWqPRNfMgsTueYpmcILtudcsHVFsOzGxOjlFguUbMNzHWuwCVXCxBylHNxhkXMxIMilyjNnyArvVFafulUClToCFLeNjdMwBWvJmNsrPheKJRQFBRqgALscqUoIpmQpZRJEvBGVSIgiVZRAhBKccsPrfuxJIRTpdbymEvBucpZsmpIPapzKAZLGaCmRBQzKsmUUevWOhkWLxOEmXqgmSigxUGckXceczFTkQpaiubTwGKgqgmyyZAUvtHjPkIeMmBhrAAWvCyZYtNMYHCATQcbTPxcbGmjGZDrdLFOxTqASdRnveEsvFMJKJlVvcJNiYOzmKEtZgkattbpRLwJxlZWsSVEpWNKumeQOafHamAkoJUJEsFWMjycAqzchErSTJbHTHHemYpgayfwnXueYzrKGKZvVphlkmZTozxswfuwEUXZIChIsYLqiTzMqPWeBKXoRxoQHynvcSSmerNFQjsOrZZncWEHkXzqmXjizWHKKYYiJWYyqpdeUDbdPkMLfGKGNXcKJpFMastuSMmOdpEZeOWGyfFRdLnGiowBmbKouSiBoZBUVSQylVXGPvuaYdUOnwCmpFpaVNRvNEkdHbJLcLMqhgqXjDbZNIdNXEwCuSWXXDAutPOeqHnfuOudRQBaWfrPwTLhKPZWSiiImcVPJJefQIFoAwjibTdpnqEprZgljWpbLUMiFqobtljcZqWqjGYtjKAxxsuzUykYRiCuuJoqkQZlZbXUSOytHMCEvsUfOlFjbfwnryXbPuwcdNFqxJeetahFcBLYsjOaenppMfppTFsSqvZanPftSWMWgNTWggzFtBETGVhFYWyMBOIrMENnVoWVwUwFylldJkCKOFNmJdMXkgGJbKjmGXnojMhXrwbhPsQacIheLoYVVzwwpoAUBLVodBPzFptxcbGsfcJkZpWdLgSZsERnZtHKYoyEbTPtsuifTkXQNVkKybcNtOxldIIdHquwBFoeaiSarRPrZtaklytqrAEHFenvlzkxIAUgPKpzIrzGfeLHZDYyMCzdHoAqtHqUUCTqaSBQfCgbtSLlYVYYpGfdlstkvuGQMNCUKcHSfZrjpoTTjUTgEoxVFADKBSebjtguSWjalnpKKkDokMOUoxokKSrCvrBkGqLbFfMhapiSghusONuWvztehLgBBCEXydvuSCAuJcleeewvsncOlMwpdrFwoMkTvIIxtWmCcIIMFvfuKWdFkerucswjgdXTXyVDaYYXfpxcwwLignNgNAIMQLhxwZOLyztelTqmwzpnPSOeIbbFdAMYMNbDreUwzrtjpeKWfGlucyHKsmYkAwoSHoSZTwlryTDuJPvNpRZepaaSmlsAkOLvVKFnXoZzKlSCkusGrKCuhCXkyRhchgtwDARaImTrMrklKlyuYHQdTXsxHERybMUJojQBoDvtYkJEWYKzHGejzjIEHqNpiGGqbtgiuxgaduanidBskapOwvEFxRtopcOVfTuGOUXDbOkCriwiXxjTAwimdmgfKtGuDBTqYaHwwIklTZfVlVmApjlbwqCAqlyKZXLYBgwWMbEPtiKiIVgVdQznVokgOhOWKPKaoqjnvUWdoubgYBDwzfqRTRtMyQnvxLqdUXRPJnqINMicSeIYdmMBOiTmmGMFdkPUFHVagStgZKixRucrGkoFZLtktCsyqlaSqDprIpWNQMMkewEjldtoawncKtERiWZiYOqoogUNBDDLpLDpwlJsYUOcocihLEXJlqpwemsPnEkfHderJZNcZHqUupmTmhlExiyuQKiRKAlzLJlXUQisuWwmUayokXyDDybWaABomHTlOOyObtXEURnvifugaYmuJkLqhizuixqXahkMKUEizJnlWkjeBuHVvJnHqwPukrulYBJGlyimuSbNdKauvTjdLOFCfSgfrgjEyjCHWzDyVlCtwxHlhMqWAoKSOPtSAtzHhwhvhNUGySIcMOTCDtwlAxNLndBaBqIVsaCLpbtwlyMnztaBjMrziVSTAhgtAlQCOhCDdMitEZWnSOxnOwpIsWBwRbpdTyemlorhZPsQXxXGieTvINnDNuwDCZJgtPETZlVFbalDagxoTnHfErlVwFOARPfNNGewykDjVpeEIpabiQpSJfcfqTiKbzzUhybNcPEnzTbqmvvKUcsZxEiMkwVBmmWCOhWjrNpVQPzlZeQpNLIQjHGfmPipDSCtjMrCSVpwmsHswoTbhTUQvFvTYEOsGCqwhsdyAnLszzYnluLGWletJwThjDMOqiwNtELKEgjtxTJSSLPMhMTRUGrGIhOLSYGsIfAjPafXwtdRCjaxxXxKBBtAjYSpMKFrneRKfEuQlKgfsoknqbnixTlGyZeZTAHBJBROCCgvkJVZXOIQeGhRgiDBmzFPFWwCagCVqACrysaLoGLVykneFqsZPAVtEvkCqgnmRDZJwXpwQDBhyQDkUlDZISIZHaaSVPQgmvXQHseoqtlVtCVucUebFSWwMeqehIKVAGZJsiSjaSoBZTiLzozkQCTouUExLGORFYrfBRGwwuZpCzPpkDNRRIUCTchQVdPcWjnErqrfimAxBEikbwFiBPDHtelFWXfPLuryUUVjmWIEukJkmvbhDUecYrEzJdltHGJYKuvTysAtFnmkErJxdudgKSIMMAavKnOJSfXulCsJnGBmoyriclnJzMFRlPrYGWccuGhanZhGYMNWQoRagDfoyFGBmgvJIqvYcWDUrgumqOdPKwCTcyiDDjxCQNZNpKBGZAmTzrZkNCkKsuepcfWxRBLyWkUEUOwJOwgykYGUSMQybqDJLGXvUInHWqkonyoMyPURDZilEgZmzBBSJVxbuzDtodYwATiJnCIAbpoSlDONOfpWDdtfZzOQteiMYMTjDuWsJOqwvoAKQzNRWIMQomnxSNeJaGiCNRgMvzWCQdIyQeCdVlHLxWVxgoXOXEGxQpayzArKqDtkMFVjOLQcUNHWiclslejruaHwYDfkmyivBmUnKMDPkGuvInXFMPgYhnSFCYlFRThPQsWVTNLTItvdMzrxiQtjiNxnzyPOzqmDttgKMhvjoREzvoqFXbafvNhZdyBNqCFssDYDoYexjYNCAzfjPbCkoUwDaEVbAYLwxmvAwzDTbXZaOVvmmyDPyyQZVIGSsHoBgDWUwNpyIakjezSIYnHIfygLVcBaGcdRBAmgzaPqWTEEDTolXScUCNLyzWtxNfNXtGDMJGUwLSiYNvplUSFdQlbGVwEJhxRKWwayqhECSauSFPUXMndMroAzYullDyBpHIXiePqmMuLbZtbFviNNAQYNrwQypKOAUEnqwfxnAOjuPZIFhIfxLnOfsTUsJVSuXdtPqKJzAqDkbBOTSfKrmrMpgIkaCIQFrzOBGizHpIRUhzCzIGxfSETJWevuXSkPpelNmAhtGIiVZSBUIwiirTDDHFxLgTeMMpYkPCVxvCjqJPTbBDztfQWfTeHrglGTLLvnnYuOlRmaguFUCwTuSgqfDafsdrjiKFLLkPgDrlWBQRKsWyCNzeANciZbImUIfxtNGJirNXLyyeTrBgTJKwlpDKVLvApJOSezEmyAulbNQcdrtJHAmAhPYIzFSlKwoJZTVxDbvCcXlAQpOnVelTommDWFdUhSzeXqzdpQkFfzggohwWbItfkZXeORTleZPnICWwllVrpWxYEMksuGNARGvrMMYnkjyTFMdsHJZSWfEZlTxHedcIrcmxJGTcxlZFEIVXtqmKdotjrlCljvAKTixjAQUfcCXWbehUggAcsRzHBOmLYUfcbfkhgGIeHthvXWTuxVfpTBHNMzVtIBhhrIckwpwzypjAnEebuazcwARWGftZZwrLkFydeJavswFJwxeKKHokOVzBXVpdoOWPRxLjYqbNjHlMQZReUssnFToRyECDNAHgoRDsTHZtlNziUKNSywKeRXHNGnXqTRCEflXUHocRFsUOqhCJskYyFERghdXZiLwhRNqomOVJdjLpwYMuMiPnjTlkNKzQCBAGKEdXArzyimSfSBNMfUIFCYdJHazpjkVDntFXOmJFcvlorVLsPKaWiyWfTyImMJpdmIOJvMRxhVtBQFPiNreeUSFNPOfIFZmdJvXOBdLNokigBRlsoJDOUIBYuIxwwYYcMQvJdTEKPGntlkFkYUWuLCUBxaTgxkxwHKqChPzSmbBfYEacIkCCwzzjcwxrJSTbyYRRNBdfwSvjXuUiVaHywOMfhWIYSMrrNnMZpohMQKaDHZJdHLevnEsGieYpBavvfWhbHABbRRUmAGQDwprqMXeuWEXEnLdQVXLWZEcgHgLiPyCppWfFraMMAVySntDoajZdxVGherDEWQeuTXDbyIOWCujiajdndHUXwRjWZYpnLScQGPTbcLlQMNpweXweHYvhxsdEupwEpevRHHCVSigPDmqeQqkAHBwSqRzTbFLUfzSyZiUnJkReMEuKddnkNlSXjCSAdLDXDgQuxsPeISbfLqsqGIncWqlPyQbcmuYzYsleZSMMHJVhkWNfwlvbqxknygzsazKSPBmisIHJiTMwawBDkyYuMtxxoMuDlAHjEEuzYllRgsKzDGViLAYFOKMIxCYguGObIugGytwzvLWUjhitrWaAQcGTkvtOAEEXaBQKVfVIIfuyBEmZWqHhRyMPKojzfJRKsNXYAkchoQbQnZHaTAVqdcutJWDZKQsgMVZeAJueJyKjDujsOyIufWzIMmEpTIEknnOFwWDKYUjnCZTGGVdEHfrMarrTZvrbIOIlFXzopvSWyyUkKDyPaivibdCizkqmozZlqLZccuSgcycJmvzhSzeCpRijfZpIcBMANIJoMRlChmpGRmovhBEIABSyBRBvArQjHxhPTUJDmfCDRrSFqSQpfdikPhbLRNBgCSWiTyRqNrPsmSbWIIBhrISRkHsDBqDPYfwptWAyEnhoArKqsQxkxGygCLAUTDPuMnwQweQPwpDyZtxqsjghJabfDPKMiEDajhdztumsCFEcpmNfeqBqBLEpsLYWVrkXRYkSDhnowRCjeqMKdvYlHRKQfiYtLcucCymuKQjJIKQgOtfyUzjvlJPIZIaEuvfMjCOopWRfviRdoYNErLlcuWxWFUwxjVPxWJDocSkLGhPcRmrYASShgzlaTkmstVvMCLMYtMMfrvHBSymRBdmHOcffjmbIXAcVMoKqqyDgIayDnHhLdhPumXENvUYEdddLRYMeUVxSFJQZKqjClcVfbVBTiqJuzAUmCDcKLAKdeSUmnGsLqTHtodTCPVoQhLREgEvOlKZjDvprJmasAiUnjwPYJotqPKzaYUJpZlxquEgATDfMtKqpNplLqejLfLnBQblDDSfKDSQcvCSAdqhLklGSCXCESQEzNxXiYiTpHQZmCxhATvjZfESKSpTNfmSWfOuEZUzthQZhYlUYxEbSPYqvtOCoAbgsDxXZUngHIgEcTyjWWqmjGOuxPNHZlzmBWKBWugJtfQpYQkvhbhxDdFiHcaEvvlENpARwpYFFpElxwckmKbrgvDGbdmlkhuGcKeSUpCbGJdsnyMaZVOSwJtXpaaImzNMDYBVOsDLdJECLNGAiEJNfFnsETSTZswWvVgFnbBipUwkMVXgpQFOwvCiqQPCPurcfDJxdltNVlhBPzDsufRyJibyAIUYCETUkZjqMYAKtBarmtvbLbTcHtvYssEShYUEKiqJjfCsxfgYkMZKoHzwZsiwalsCDVyyCaYgEhbEgcgkGKEmWxGlaNxqAsvIxAQsYIgwkmhMZjGYDVXLnGlNLmkhSSoKmpKmfBlrWjRvGTZgganRXkJtcXWFYTGXKwDCCuyPLKuswvRjegsfBQxthjcGxPJGFTmufFjOlXbTWXJdxOZMRwWdHSarKsRQomtenXjcErltxbaHeoEIGCGnDYhBLCHcZdOXSjnbkeOAPTZhwGcEZqmDklLHdKLTxyhrJXHtwteUsbBiLlzRQTekouSYZGJDTkipDmpfvvcCBEDMiSUtFNUEpJyhXijegVXuVJGShuvIhFrJHhhoFCUglbzksgUcHGteiBvxubdGgcRsufkkPWjPWbjMLEzalzFTzXfSBredhAcYojHNEXPzflsLtlvSZnksgTXQzIWAadwAKciFleRIduRlGobqudxRZsbNRhRQZILHDMmjkoZgMZeVuHmuxkpFSccAmIyPENPcFRVyRXvqGsOReidRwjXwtuiAiAcfLPOoGfeAVcldwwzAdvfXdwOwXSuArkcYVsDkmXGVlgQxfmAbEAzaAMnSSSNlEsdkUgiYNuEUuKrIYyYUNPMsetBpBjSeNifbGVZMoaxAOQenqdJWzLCnQNbmWFnMLIdOSHaFGkgubNYDnMqbfomVwpXjDnctGlzyComJDKgngprXFlJpAdZcXWaalviQfviRuzsyghQiauLMOlxvCElWaxFPccMlxfGdUpeHQulxTpjjMmscRUiqaftQUySewqfyJcssPCEMfLBCZUcAxTrzgmmLsHFtkgxseKTuNVmapRiKjvsAduFTnqTGapqodnHIoihpkQLWRPHMQxhcoBfVaiWSZbYVpGMYGLwzYoFUeIQhyUcLVotkluSwZZIMTxexrIQyaMjedbcbYBRDsUZZlsfQeyZOqxLYfZERcJxhhqUJsUrGApUTpQfzlcNhwINLXbJyvqgXpkOGmAkhBqGNuTlvZjDoismOiuwMFdfyIVhNUuDMAjDTEdynmfZMGZnepBDXAVvoePDZcziUmtmbuUHYotrqbMkexQNaXzPhlACKNXrnaCgZuMslHAsGcqhWymifFfqVfHugaepAoQCMljFaTNKqxLfpUYDiVeDXADHXdxicxrBNZOFAZhysAJMmrtsfKZOyeKJrBnDdfbLpFvGDbBZwyIClZnOAcdTBpCAffZpTVjsGlWTYgJpgkaUbyzEgPVnUjJpggOBSPycSZiQwDZreyAYyXDRTZrwZtWFoRHyypKllEiDNgvvaEugoLLAJYpnHlTgBchBUHIfFEbzEWwrDKtLaMriPYKjZkEHjmtBNXUPDMtpxsEXCWFauPzeVvvguHStJKgGQtEeoXyZKtqdVAukecHyBhSQFKmbwFmHJDMGuBgdruncRYZQwttrLtCBGbymtXsPesIltIXELYwkTNKeKSofQgBUOeCVcHkMeBiEFduRFWKsGCThLsFDoBqTUgWHSYQmEXdOdLtXIzVACAEYtGyzybwPVjedFenBEGeaYWnhIDsViuPVekJwieUNKSnNejFLTUJyddImbanZkXquSZdEuURoXkuClzOoMFucudoRvmhByzUEkegplAPnIhPFLbFlveGnswkjkpnpPzjesQTeDiEzRzUXylrRMUvvabKTUtcKQWncCtsBvAkmgdEAvdSgkRTYJfLOuiHggfHPddnOVoGxNxYkNizAIrzykLlssLmSURhPlYQRDJCBWVZUDWEACphhJllNzRsydYZfuyPRWnEIkEchBiJdGmgpRinwCnzRxVGUzJnNXCOtOcJhQPMQCRJPaLVgPHHgQqSUZTMoCArKZynitCsebpYVUQmkvXVMgAmKEoCgvYOcMzouAKYygaQIcYiNiLZEryqaKWkRlSEGWmPpbDtdeCLNHrRMEGiqFAexVicxPQgdNlWdaMHqwurlrPygyurwmliZZTWQottRnCzGDvbFgmIRRLRyfgxaLhodUWpAUBNkkgJDmesZVUCWOJTgwOfkPpaQdaJUlhGfTvrCLeebPNkpRWmFygqYPIRCYIUrCTZjTqDYpERPwmCOLSqNkLxYurivuwTTwDDbZlJkuWvvgYeOYtNqNfuwZLvzHLTGXuLytjUJPcnOxcktZRwKXYmPExTvHnIFVUADQknFDDgsYRhsDRWDQvjJbtMVSiiUZgEHVeMMXsmaLHOGLxDhyNCcXcsTSwmhZZaMnodVKSgtVUyjkJPfRSsMaxRjkIPcgLkKmUqBHROzJLGqDLKXzYxhIKPLVdpotCPEMDRgHSjRbRucgOkMfEmysErcsuhPNUYzcJKWdxNrlqbyTSCegGBqxpwZaGIUPALOEFVIHZiGxmWJGQMZLQjDoMrKFQprZhlFHDmGmyHWxeAeaFTYTEvVSpXMFXEHKENVbWbJLWjTotGpiKOrMkiemvGCYkMTbGTGwcTuacCxiCYRZJNincdrHMaurpRTyXYFqgjJVJAFJprIOxNWDGezRVOLSSwezfIyuGcpSZZLoVkmEmHWXEGlPcmFwuRytflzeWIQuptECVhXDklkNXGFbdORPylcPXHdseAoQwgkCBwIiOvGHUiCPJZpAQFRWjynzOtKPRAdxJytSmIJgniLYoZUnOyjMkhKzKLCoNHVaBeDcYnzGXfsKDrwxUOUHEcoFlYwxYxoSRFxWURQkDYCbrUOrhoWFsGFmhucmkLYocJjTOqyNRgoLVAHxyQDlazsRTLtkbAElsHhXdjXDSibGPEWrqlxsiuNjpUvuGmuukwEdqNTOHSZYsVfGnSDtcTlDzahBuegzFksiILpvYcGrILImKuURSZpxYCWFgHaEkGDcbfGjRcitdvEhOgRLjokXDaixpGLyJccDAchWutfjyMhrKMMsjWZAdgDbPDeDPpQmcFpIqyKxVIpAMUAOpXnLJnSUQJTWEcJIFNBItiQClEPCFFCuXtFkYhbRUYLEzfPEQDJYBwkKjZVjzySqUVrVoHtHIHbDjRvevByezYQyRDYPdFfUuXaldAPgAITiTDWIvBMvRKHYXzzHxwDOyJFgPcBlijyUlcKLeQqbcXsHgHzemcrrCAVgGxrNOXvRvoDHQuNpJQqCUXxkoKZdjTuGtzaTKUrpoSHQgCtePSaSPWzutcSNCfoteAqYbsfDsqtoknrHFhrPPzqtyqRAvQVGzzaAVChItJsdzDgNwXKcOzgliPlpeJTxqzXkRYpNoPUkCEwLigcxgAAVDeGiQRXlihCJzhjQHtGNEebyRIfuYSdhqhEfgtXvoUNQQectgWvgtHdZfWqmeOvtXBxXxbultnyoykXCsvEcVpkaWlGMwltzPjWdKAUivGTGEKOZGzJQBXlorjUQBDkbLykxPjkvxjphzBUkREucWYewrEyoprVltrCQehxToblPQLIhAqWeTpZrHVnBvkCSVaOIcYmwLynwWXyTaxmvCrXmZjkljMlgHlXvXNSDYHxdobWiqTwcCtHURJZgyWsVdHZqPyTtNAWnNTvDKFYWyyLsJrblxtAwsYTjJcsXarhZJzSovhFFTVjxIaSJiEwXTKrRjVKwmQAjEnuWGngVFYdNKQVFJiqSXMvyiorngOfeDtWPjfMCBSHtdRlzzOQKJCLOLLWxblxDWwgNSNNJZkMBOfbBPDnFpgyUUaSCRckiQhopRpwCKxXDTDnDcazlfkyJYMHuNCspwUHHyTKkIVafZoEfTSAxtiBjZQZTwxNyJAJBUApBtTFjaraoAMAuywxnhcJiTOTMlYToFLKEmbTjLnwwiJlCsqFPXkjXKYqRTCUcFrCUwdAuktlNiRhBmsmIivZFrXVGBzTyWltiPDcqWCVsfLtyeBXuebVnrszlQVhNmlHETTLRZhqbbpjjCEmuwGZnjfoCYKqDaiDrbIPbxKowJTJKNdLJwcWoHOYUYrrjLGUpoftseZBxjOhavMryXXfeFvMPGoCBInzCOYVskGDCdawBlOihGxJltQqFYcGuRlbarhcrHUYYnAkbzWSURLdwefqfeqQPbRYhOCLUABrkcqmgGdlCdfKCLSfHaiHmvuaqPYCJmpVmHSoDPnIQylCivrSYKpndIODNPDHcEjdqCjhhYnVbvdIwneciuhHMylZYtTzySRNPpZtsfCcPaltrMSRDeqJDvYXjSrfrhlNlTqELfZRzpwHztayqErFWmdBOxYgaibmcaQycnACtecUcDMOQtMsZpHRUSoxBCGGbDJoNeWmkKONDWzwfBizEKwbKjsZNddLosHybVRvHwEuZfCKzUPHyHpZhbxcWWVCJlVXZkWWCbfwSkpYCGPzTLZRbpZsKtjKXzhTCiCfAMNfXtyTjBYeKOZhoUcStLqyWCvYhrvfBlngueBqcwxPZJWziaUterFaUMaoiCrCbSUwEgKZgNaGFtvQITESwyLDcKytxfCAxqnZrdBJasNECAXPNAHGBSTufUIWjcdpqhTmdCrWVQyXrLZbZhZxHdKontRiwJFeFaaCqwdqaUQSPVTeyZscsxzODgLldAZjfIyslNotRlpsEGunhDqiddkMJyfOHdppJoCyjpbaNzFldAQddkrxPRzXnRORwYraPHQeTAywUtyvPnWqIPjHMmAcyDwByjyGaJbCjFDwoftdMcbulDKRANwywKuhtDwDDRFzvgbuULcRWlfXDSalikxnDtNjBjLzIiztlXohLpYgxunixBakaFqzIxLpWKRgoZysWcWIDApqNTreYydKSOlSCLiJYVqyYBNHVnFtnHDbIOiDGpNrivItaknbnrqcigrBQPozOiOjMviiwOshmqNGrEnqFrqquFsjeEKjSUyucYkknGdixTdZbDBbvIDtdWTVmYUawQfnSWtVIftaFEvLDtMfZqDqBbhQbBMuySEwhrrssecirKzpmnxwLAbLcnJoSIfsSjdQIxTdoyJTnwVNaEMuuRWrSYSlyPgCeNKfSfjzXMQPiwVxnlyuDxWDLGcMuGSqygnWpRgReqlVoQZOqoNmEALmSkGzwYCUpgGVppeNvfKNUqEjbvMcehoHxWHjNLhzNvDbYpxdMszJknWJPyoxpJyCibZKtQobwAuCKLCHUvNvlVXtwAVUFiDPwMazTFoLbTGIWMCDIOHFomzsHeZgGyWGTDMxoebDqectSHJpLhoCAeKEkggtzOQHUmJylvpSucoUpjLNZVHLZZIKJuEOhxZpubOSCHcIANsmmQYtsTHIEXuYIvCnIqJiVHukARAQjihGYdJCRyZfOrwoyupTQYJKofagzyzajRPBBvFoJDXfBtlhmcQBPpIWLsPvKrtEJQFyoPPyCPuVLmMSJmwVcgvWruzVSvzAjBkfjMxHdRWffUGSJlrLsMTWZrpNfBInIFWUWVySQRswAXHKFlWaGXNMpqpHtnzfDfJmnBXTxqnqHdsiKquaBtNQNgDbEGlzaXCyMmzGLZXiZtOXOtcOLKNfyLZHNUJOtJPnrRFqnpJcgssqwuoLkMJaHjTbFVRkveTmaUMLTpLcetWmelFCsPbIbzDbCbhZTDRapxYLgwEUTtofUnAOTaMMruxoaoKaayyaRoaFQVirdmIjREZFmLFsahyZsVaBqTBQWyGIVGQUYgqcJRYeNLZmCOCApSaPWQObuYSpTBlqXjsmwEUmBNxbvogVPvNIuQeXeSoXGDIIiyEhOghlaQStuUsVMzmDgZjWCfJeoITjNKSQZTMyvdacCtMkrbCfcTphlXpFpHbAvJuVOAVwKFIqUBJjEHskEvVOQPEasvnQyyxAXiQMFTEEHCXjXlXUVlxfGvstuKyfyJVcGDPzRJzUyOnDmyzCPYvECueVCgCNzdxNpvvTGcQTjEchwAwCIdvlOWYxNtzpZupDpinvkUBHQNKoRJEmDVVnjKgaDDOKTUnTbTRCTHFMVbIdsjXtcLdEaZQwSiEfxjDKNJdfhbFibeDCUHdMyOzsIqiEfybIQPopkxDzVdAnBraucSOqYxzYubzSAOMhFPMDSCgASGkZsPVEjSAcOIsOoxFbdaluroCtOmrISpgehTfyzULvHUkXxCtHmLUPlVFYeBqYHwxuEFAXPzFpDlSWpcbGSPlCfxOPkocuLpAjlmHinljnrMvXPPLrgAWrFTjhdZAEABTkSUdYoKvZMhldXIKyMuJpjVnveJmbgcmCoohgkmawSJtwutORgPjaeJsMevgzBrPuNpehBGdMhmPyVbMgKIivfwZwMABkTJFxnXzgBjQVLOrXWDVMvnXHNznkygUFHFNIAhkSaTTJZjfwNqIJoFMTcIkXKrpmcxLodYlaOvCRavxAuOjQvAGWKJztdaRSSEoVXJEpSDlmfMnfPEkjuLwHEMsxyDxDhoRmWlTqhoWVSAWipMcwVoxyThULtCkytUwNFIWiwNpdDaJPQsYNshhHNXnjyENxWwWYDXmHDsJBFwuxEHDByNBuYBttkKQiBpBHAUpxqfXlDisScRSIuZqbfPxJBEqtOIBDOlXFnrBsptecxVktVQsrcBJieTiYGivTjzHjPQjZEJXRlxdFiQCptjWJjPTYRTyXbrOMDAoZPtkKmYROsHHfvfzydDTUCzSsldOXUrOzxlBMoVocoVyrgTZrgiIdOnDEHlETRoXrSyHlwQzrLoMNTqXIQHhjrNvoJxZSimCoNGCGkabrMHPxVaFVLyYmPcKfZykzftMkZrBHUQvLcimyPPPnZkjckYqPoAoksrphUHtxjtDMgRQkrYAIGQPMoWyFATeZkGwhgAiOgaQZLjAYdfopueMCxqYUTTQapXWYUnFWcFUXYNnEFuZFQyLyuvcuELfsxauVlYWKXiDBfIGVILdrLcCmZnNfWyoOEFYICnqubBBhXXkfHMjHLNFrbVISKBWSbFTQKlFyHCYLyAMDSPcGnrnNuzKyXsxYkRyKjBGVwVZZAuKMPthQhDSTHebRLHisZzsCZmfWOOTmyEJElrrAaOscvUMaaEISPNBvyYKKBCboAYNrQVUdPndJMmpCjDpJNagMZVGEVxyvjmtjpotLGIkDGdbqbbTJnnWENUWYiHyXRzMkScnafMsaMLDGTkmVxuerxmQRxUTUBbleICPCoEzwurvuvuGfGPlQHTeqfimtJJKgYOZrkDQwBVdKyezKxfrIeGVSvPpvawncxTSzIjSlTKqcnOjjeqDEyZtMxXNBZjIiacyhnuyiHZLxSvWZLqyotaJEZRqmxPxTurInehdfPriSdNUUnkBiYgtkrjqsxhLGMmZjsCJhPUSQnuisSCavRruQlNZcTewLYxWXDrGilnPEXRqmAwHzdAOIhESvMDqgNFKbCucSNcUBrqDVxxuufNlDaObKNAGdyTzteQrzHVdgWKnSSOlgmmYLTuIjAdUSSwjYcnDRGRVQKjiGQALETMnnsqkvoiNCXPABHzoQsHRzCmkeXQbFXEjWNUergMVVQyAzGExZIAzKkBweQNhAbUiOJsvxPImSHJfTxgyKxVSSKfeIbwTgLHMwIMRioVYyNyKTaTDmiqbIDVzYHslKqTppuYPBpCmIHtINKmxaCHJvmqnDUzBBDGZXyaYeAxItdNwZHQgXWLDmGcitiBPUqOPskQOLUWcUFmuSYJDhHWRbzhgenoXKJnxeiRiHECabYKovwVJevPGClMaysjbbihRIQgxGndzYYDRtxEuDOtolMgUxuWQGPEzPOTpFGJGJakOLjHUJDSFHnxHrhyGuDJMqChJbkWnnbFieBjnamzKuhgDxCmibLVmlqCnsaqZeQbeZNyoUddSpTPTPewRBYrMWPpYKQauoBrFEBpmPnDriNqUKgYhFMjYSdfRAJHfkaeqngEsuNZxqGzdBqOfdLWuOUiWLWeCJfjozoOZogajHpgMlOVImajHdNzuPuqOVWMaqbdOZUiGuNwnHKrVkzXnevPXsuWCekiiXKIFIGeHHYZnCDUOsoYcBjZMELqMBLsMRYqwgybzlDwGJWbGlwxXeypvqdrcflUTRrjCQSPBWLlzneloPlVGMnLCCGElvregqCjNBgbQYDRGbmRESTIyLcZHwEvAGBeVdmiwnsDtUPkkddMjMnSBzhKMmpLQuLSkgPyxYmxZkLZdGttSbZrAmQTBXPQpOeIywOEywdOymOhOUcDlqoXcManCIgflOBOuBeHczZpxMQnubQZpUhHOVjXBunITuDNfuplHTVKFvEzdWHRJvAJIRfSmNSRsSnqepAQRuUybUrBtmfolYrrKwRGEMnooOHBBFbperilXuYXrSnUDgCxzpzFhFKYwzRRenWbtjJAwRMArPNyiejlsailLPVJFKzInjNIcQgzesaHiykIjjtaQohaRYjnXhzYSxNHKrpovpFolgAiMFScHDILWzvNsldpNPaSmHPWMFTkAicQkEfkOwHjsPlAEMKsLQnlqegqDXpezfFrasXLsZNQBWNKOdAOULeROIikvIhOjaMABZDqbGfqPKhwCbFEmMmpRKpjcqJnKQgbimrEJirobnPYLmMhEhOijcUaKUKtMPaqTuMmVdOkXphYqHNnnPxLxvcGqyojftVbErwWSOpFLQbzDMCaFRpmZxStLFWzSCLzaxDaxaivndOwAIViTiFZLhgSjwmcnWvtvlLJcubvjIoWikzZdnKgpMToOUluhAWKRFIzcjIxrAQMNEKmAlZYjcPITXaEzSRUbVpQSRtzBWruvQWtPLYpbAyXPGYCtiSSpekQrNHTReAHuEGQvWSoxdmBvuaWnKGvvShMohxYgwovumGYgpBQehknjbbfxSjlDNvTCWxZbWJAmtZebBqgyJpOulZZkWSAIpRiVXZtoEwXtlaYGDlssqMmJfQRGPbNYWIJRmMxDiLOyeKQdgbKGYMrPsNqredJQGGsQxfHdVOsxqgEJuojjAcBgOxMBhcWjVwtiyhAJDQDOwIteSKYzBYQeKVkOxtNjDOQMovYwBhEwGCypUCmSxUtKDVHXNyjPVSINEqOixLMDjxcgDNmULgRdQZnWuQyjmTXAaEhktgAIRBFBnpRFinGyuwOZtqTMFIcWLwBzxcDqgDafKlyFbuHEVaLCJBbqxcZYFRPkfRirgJOoYUfSeSNMfPxegUPPxepCwYQQRtLZHlhDkWQRHGCiEyvvbehsiOWbYwdRRwxttoFtGlzVRIEJTrRzBEWVHwlBcYGEPGrUfQbZlRVDIlxZUUYRDOEbSlBrIASZledAVngEonwDMmVwFmApQjrnTeDWgTbIixWgZvkJYadDPodRTiiTFGiLjPeykwYnRqavndvwIrUHETRpuzZYnVLBYUdgBCRPcmbMhaRigIXvzYvyQGaEClFlhtAvAWgvYacXMETDqWXDjdOMpPdYwoGocqSIqGQiMfmpIauqKXbXTcFvjWOslSGxdAiHfeIAcDOrZhxgLQzwvwkmIwDOHRxrvLkbBxIhAtwmvffxreNprMPzPtPAtoPnFxRgiUSbYDVvvcFXVtwysDVGACrPunULkliFqygKtkmoWEBELwqwLfGnHpWJfipROgFTGgrkYaxMzPHhGzdISnGgouARenGjajVCfcnIirFcIdgmXzzoqOMHzHVQpfmbMKuEWqWwtNMSggYEGrEqkCnosuJPKiBYKvvmvPROPdlCrzVDwMwshNVWffFuKYsRXWFxZDIoPgCmVCJBJtqMsdMnYJLUaUcaiESIYdJQAgnCPkEUfTlufCpokfLeNWQnVLWJiZosHrFDBIvghRivcbkqaQEWWqXUCElzfTKPOAImWtNhhIIQtkXAuPfuHhnfaBZGwdOUscllsBrHZelkqoInzSJNoXnWbsrfFhPpiaorvHSmUzxZDVNRSqBWJbjQEQlLHwQADcujpYKKQzKXmgTZSOFxTVZwBpbvhYvoSeomhbDYDjTzBuUGSahSMgrkUirSMahRDwFZXhSsDEjDDafTbUAlUZbQnPKyPxcwEvcVQleRhVjLkkKPxjpVTWeGlIYsvwdVTQUxpiXJsVUWCCVckFEORfUuKTiHWkDPvsgcYrKOJbNpeFsCWVVbewfiGPCEuQMmYqMChySZGKvoihHHloeRLEjJvCFWQXCSKQNtfZXNAqeYYcvGLxYVRqnJVFXTGsmwpmptlIHsGRHYEDCarwhQdACJLmheUFwCZZqxwNVfdLCwxKOFyVQUPKIFidQznOamPLQUahEYybUdEuiHWkpTjOBcgtKyFDHZzjmuabRuUVSVYTgNaqFvCgGOcWRGvdwXkitcAtHtMAPFyWYRUuKfTXoPECuQWJzEJOqeXhueyRIgQuHbcJsalviwUoGaybNcsGJuIjFJGfnqTIyVBiJAuGcpBLkCpTjfYGdZxqvjKAHBldfAGTwVkGwNDhFqqMJIlbfFWDrKVZKtbOFRjNzsvLCObDijHQDGOUcPwPQBFcVcYsNLaRYOEJXhoYlrLBQDZAMNMPdJBbWHbUVgIRCsCRPihTZxBAziwzfBemVctbbGbsjDFNVjcKObvozNRWuPgBGTCHdgnecicJRRSnIGEmAGhBCFiAFBTLkpfXnDYDcvFYaUxljOftRiinIqzBjGLiMfjEOKJcvcpshjrQGoyTtlRLRQFxyXhDXFuftEbgbggkZizRUkHQYtSyGUyrzuDMOcUgLViAHDpQQqeKDZKvfOjxVNoBPWXTRemwcyOSRYATHqcBKUpDZwWfvlbEGTCwrbgOYDrctdOiMJwqKIhcretgnhfJTJXKSuMeywUOWbYUcNVySNScybrkTlkVrXcJIItzNJMzVouCEFJfitNBqSqgpTWzdyckAVEdvjEdMWdvqYRfsRqTIUWihrByOxjdyWiBqQRffBUdrJrirQOoJGeFKSNWrFimyDDfkXhpMXLWwvbozXBRIqQxolnOumpgyYWoFVIzAZQaMtMbAdyRXkVeULEUxlNPqgDBmGfNONwjWEHrgkoVlOzbcZggunXJnsNeGogxlAoxtJolBloqqjCirGuPyyiMUVYYptlrEMGfYsWwSibprtWfLIEaUcQkuxmRhmVuxCIlRZExOOuFmDKfRXdLWsWcGtUQTEzqtItZfhVDRqUssVoZHdrjLlfMqEwWwsgNGUcwjoePxbmEkuitnkHNQtJpdWXIzfNXtaugMRLNEQIuQOrnorkkaaMpNuNzrdYTrINpwGfWFOuVekhnMOcppzRYRwJkVbQLoPNryvLrrIqSrZHTauukgpemHNYknbEcLUTsFrKEvFnNxgScjkZIveCyOdoPQbjDvGZWXWnjuEIJSFMsQKQbrdYlIBpVWCmTRskGSpjttfrpnoJXmXARhuKnfQQKwWeritZUGcEnNJRcnzjfihIEHduExgHYpXapGJuaRAEehthjiRIkbfYIpywEaSfGWZNBkgTWzihcjfiRucJKChjcbnzueElofLhKJNSGXngPZEpEIeDpepHfIaScULWiAhNMWNBfZkdaFGObujRLNLEotGiDTtPqwmHkbcmXCbsWRuqlSZmuoTSiSowmeOfUWtNqNxRzdGrMhXTonFvpKxCowTHDLLTnfRPhSBqdwZUOKQuLwLhRNigpmrRpPbGBTwvOgZBzSjHHdwteFxroeWtuyQPujZHjsooBzKcalJVNZdiregYmOQovhHATSwEnvounWimLsdYqraKdhmogokDpzTDvbJCHXnHroPvKozJGJSVpNcHJQmyqApUelGIFtBpjFGzQLzWUzSFnYDwOwXVAEFbzlBncAgjkBZrOsBELLdkMNIusvyuEzAcahZQHIikFRUJPJNtRffcaXdGebJVtvMOjUOWUQBkJGnCYlgWPLbgwcEYaHWcEnwaxGvsMmskTruCAPxxRyQRQKdklpSGiiRnQrqZwzjjYvgsNnDUeFelYeWqnFHEwudBrmMMQxlLTOGZkveqdABkxvKVwmghypiCDysyJBjoNIeuwVMOplSabXINpReReeQLQXFROEnAGFWzrXvomczcnbOkyUqAjPYFSCDKnGfErurSgQjSxsWWPZhJGNHvsxUHWLsbWOMcfVBHORnoRoHRcRqgNxBjoAKEvCkwjZfQGcldYOEzsURGpfPhNDMTEzInDvdcwePshnlmtXPSqeOHIPIBsQSiqYddQkBhpIUFFFZtKxWbbEISKrPIfSNwiyfdCrJaTSBLwaxcOLsglqpSlGHIIgUXKyCwZYRGTXlyIxmJlPlvimrKQheRcVIEgIgZrhXFXkTvJHIRCXkLnwtxXFSHkOcxUezHGIpaXtrkcROIuwmkewLpCvlwEiEykfBWaDJOQjGQsZFgsoIguScQMWLWQlYPNmoZicrOoGassSEsFBedeFrkqgpAPxlwTVrmkliGlOqtJjfLfHxsJWdnKXoiuaAiLDJALLwUMXpyyQrfScbuNcgfrPlSCcvgckBpWikupNMvDllkyRMnDSRCnbttFTccdSplVcxQJWPSzYuYCXVHzjFpbnapVngwSLKzbDbMPgCXDvksAWkcbEMvMPVLEfOfACerfVFNSkKvTMbwlNTQIciEBaNqREGaHIEtFPzRITwGXZPULUROOVALByzHVesVWZidtefygeYjNEpiLJEJUoPeCpTPXziriNiPcqHRlVSuDrrXPCkdKrrfxOGdwYDiVoNipuLiaBeFmsTVmxMsuFVeSkAYzCSbHKBuuoQXTMFDSCLaBkVuwvmbhFRXnDecHvbtmkYmYuoQUGkSnBwpCjLuLWlqHwKNxKCfXIBgkQasARCeFltFMiVYZFKsirJJxZPYGdSHeCDtPpKlzpUXparNoyUqRJEoJjaxnBaVQWzOBJWcJnkPcSVhfaxVPYgVTIYpECCEoeBEQCfpFUeuxAtjiHhVIQJVzNpPRGfMtpoWjAExokGmipmGejsVQeksNnoZxFKEByucfCUbBtjMMCUicyYYySjDBOgAhpTVqXJzvZphRMQFrmSOQLPQrRItrrBCoXkILZdHJSxTiPCjQxuumfFggAZjRWTehUaZaTguNrsNMCAHgKTvEuCnAEZiZPbRrnLbpCjkdGBDJlPkseSrngIxBBbQhgSElHSxquynbwWUtaplMWtbVDELsKKEIOYQFecZhbDPspNFGnqZgshjBvVGuFPKfcnIkuzxuIQZGDEOfsOyDDrsjzfRNBoIguANNsYTcxkvrojbGYchQruNCqmyQXGOgpYfWUwrurfolJqfYosuEpvztjsymxONncysuuHpitQznbLVhjQwzOoLqRmjjUyxKrdAymSXNyRlhvLycqOUpoCXIAIfOPnMynulpklRXBQnUQBOGUMunOfEzbWqmHnkdNDlvvQiPpPxXYEClFKhHiORVeqEoUiPcjgLGiHbbFoFYRaNqoQfOBuAnizdtToLWCfDdSIsAnfluqMxjjTKXsYPJzaZfIxmSdQFMNwtUCgQYKppkEJDBNRPbWogfWHMaOWUAjfLRSxXXWeIKlxDcPHeXIZgRRkdFqEHOBGLCJSSyaBxcifhVtEPhlYAuQHanlFylKfBKcCcpnLnZYpQDsoCwXPsrMPdMZFgTXbuAMhXTtJrIbMsvZLTrJyIehPggqXHYZGuGsdBCtsZgbNphlUfVArCbbFdZshMXUQliJXStwThaLuOiprmscapRpHFFTpDMhoprxRcthSSBcfKBEAXUvGajTmSaFuWlpTAQyaPGIbBNrJBVazPcGCjArlKfsniLhwwZjtSymnEjHXzscSaxchenZiBeYFBjyazfGOfNOqCFJMwUcMyFuXbKVUqhjsUIUyzhWhaPEvPvHpOKrJIZQXsKtKihyqTRInKsRgqMYIbaAClosCyrBhGMRjkJiJbCyxOiFwbmirQTYEaWpppHlppJdinAmgLOlcMhZoKrpQRluViXSdUpyvtYhtViChYVUluwCNflWGWCWpfknIakxkTsKCbjbDsnhxitXjkrRwmuKduzxvPnLHslkTPJGvqoMjHwscqlGaXKhfgJlLPtQHrMCiEvacevioXrUOacYXiaaEPNQvJrCWcXZBeotpPrXSTeXyCzTMZphJvBOcmQMDvlRPuczTOWdiDjSGjyqvWepvGJijvBoxBpUJuuSpPDVERxAdalqfILcXaLQovzrohObUOHIqLPcDMXtQSNSEMKKZcvoPBXKSBsWJKLZlIwLblyUEdsuiGtRSlPTqFztTGcctIBOMHWvYHFSuyEZTfWsyXzbruNwicPsiZOxwLYMwvWbMHqLmqNszxmXcWNAHbnkNolVZdXxTdBsttVMnPSzUyktYWawMSnoYEQJUsisdrXGVFOFxBkVyyllpiDKFgfmKfdSWdvWXoYJyngRyvsieaTIicRJgrJvEYKcjKKoznxZfgHoMngbkRhyYTDqZlqmVJLZZwIDyeSPRBALhfXzsZelBwPUnPKZjQKudqNQlZiyjHyswOkKhQxQMIlGoSWiyiMDBCOlnTIuxwgjzQOuNGSHTOcQXcvWnzcoEyRuCfUpEElJKQjkhoVqQLelAhwySYEzfQQJHQJHuRIUTTquTgAqoWPuXOYhETXBwcSksltCpbioUAxmZuAzZElHJiVWWPuHjOBsXAjQBReyFnyyOiGyUORwYPXtzmfqmMulzJxTydUYFiXbryrMMPqcOLXKwGUcFRsAOlfVWomHsibOjSPhwMAJuYmclVyVqoqcGpCeUZWzaWfRGouQLzjJBCLwmgyscdgmeWADLrrwjjHTnaRkbBmjNOLYhNgVdGCSPQSrOgeqQYYvaAVPbvjPHxjDsZjPezaMVIWoCLFaEYICUyOVeCacVEMlobMAhaCnnfjuFRRpLunoKHNcJGTCIThqxUwJdTsjoCnxTCIaksSjXZdKxCUdWGLYIjfOXmltvdOKaJVxyPkhYmPaRUPdwfYslhxAanJQQAHoEqOsCXvFakyTbDsSlesPLiBNLWyYvlJPnLnhFDhKfoTrSzgraxJnRySfUNZSFlGfAzGvJoAvSSyGyrFsaFiETxQHXJIHmKZpWUQqIEhIxYGaCpPjUCvplmWabHGzAmkXfzDrGZapqMQkmPwkkvlXiKFMJiTRpVguTbRkqHpAlGhIhSjciBpHljnSVoXytJAzNaWHjsPSKowKqjEOiPuRPSeonqVBCHBsfuHJjtLNhwTnkECHfKpxyXFshfJTokaSigDMqYCfzbLkmkYNpElDmMQwBzqQRCldfTawJGOZxwdUVkvtQkCwhWYGhQMTTglEWOUYrQBGqNAGTOqPoagHMiPpHwCVHxpYpsLjDnwDmZZLSpbNpXlPTCXpjvsbAsFlIEcMnkHzssTpczEDvqRBOGncSPTpNjQHGDsLHRPgSmgZwXyMGlXICCQlGmEMMEGTuztBHcHiErVACQBgosiBsNVXGpExAHmHEwZfwFEpkXVJkCDuRavOzhNEDjCgcqOLDPRkouuvSHqOTgUuXykZrZYyoLKTsRuHmWEJMsxCouEckUvEspRQkNkmWMFlOPflCRunPmABnuxqEgUnPAOGlyYgjfuIfWnrsvefidgEevvSkcNqfAoEkNykRnUueVLhNUVAJFLbtodJykoFsjLaRmThVkWhqYtHKGQvWGloiLnoIYgelWZnMZmLOnLWAcFOBRnivlYJBaRZVUSeAVZiedKuAgBtjZUKOqwptYBGvRXxmqliRkhGvwNUQYWFipMyrIPynjvOOohTJLdYbsdCHyaTprSbZOwzyCiSFdwyJojRmsalGLniLCWsaNOhnwaNZzGIUbRiNONeOWrqddjDfxiOsoftLRHOWJIMfrFlKqpEyboaommXpbkoBDfGapTTlrAwUyJOkaRJSfhumdMZeHOYOQyjZnfWKmaNhxeLNVobngElfEFyTiIxwBMHlQpBVLhfZyZCJQeunULWXCnTBbGWtwLxLjLaVpcbKJRAzLazIMTozJLrTYiHGowFyKxzHaupySXHhLEzMRJxFUhzOBnNTFbWOLdrESQLHwwymmvwUwsdoqCLGdnLhGFZxvnqLvIYWPxALdlUEwbCyluRKcFdeSHOxzTnbETHZShZeQEhRFoBLICOgBVXyiYcCMCmFEWAsZeGqWCKVZWIrfZIyniBGQGuyzuhEvwrLDrdIKfkowIXSIRrGOSVyHOUWbTivDFTUZYVbqTvDiKPwSrMdkqKhHAjsunZtowJOQRLdmaRKvpBwXZjDSFJYspwOSitdBhruiPTaGefGUXwpWutLszVBdmpkWcgZtRQFNUQMyDSzdntDmmeLwxkJeWTGjghLBvlkUQjytdJCNdcDbCXDDVCSkVnuRqygjfqwOOYqkHPKffNSccnNDFkMaMkbQLMfrBURDdaUUaDirGRMEbRhbgNIuhMBqiCiMnxDHSzKvLtDOodOWWyOwCpmHPjxwPEjlLEVIVsXHuDUUJEYCUiQSeYuCpuGGskkvyhJbCJLeronrHzeuWBZiZYuafDMHsGIRgWkICyXHODpJSyTEeqOZMIpVidfMtqecyGqfnMHDzmfdNyYVEZYHIwDkWyJAipJXuQIUixqDDjaxJHfmqQFOltJyeIvcUHJftrpZpNqyVsKkAbqEVgNPAAXcRihtvvLWzjrOaWZWbhxlsTjZjWRuTebSFwUFkFdVdByoiJqvioLXDLoqGwUbrPSufRGazZXhuWVkfzGDQFAUCrSAUxKuwNccOHiimrahKuTmwVMyLLNhacCAiDmFmMTkoOfxekgqdVGrEMrogutZhpySONyAPkZaHlNdxYIzKUMpXzYJuSjxiqGiXMuKPpeDtgHwzukWEsZctHpOZdJaLbLpTvMawRXyKobhUPSuyxtIXNQohgvavDPnSIpbiWqdjoQdhsVGIFqjtnPFHHWVVIOHFbEHmtlgBagHWiPQPSHjGNsICqZBargPPSQvGDGnoUFTovUWEwKnfJsANTMbujBfRuCRrnxuFzTxttCngwWqwkZZUILkpAhCILtGfwQflqqFWSYfdExtCsvYjeVbQBzzYxpQyLMBojzDpTfBVkZOkDZsSAMCZyKaSdbOUlsRsQrJQrhMRahaxeLHjHKTmpCCnWCyUWlVulvUwWWnvhWgqEpIzNNxTzczygfMKSvfdytKhLdRiaUisBXsVvZzgqFZotzkLSoEvhcBEjlTZHNjaoVmELKbZCeGjhfdONoDYMROslLWhPlQxwdjQVrFgWcyoJdtLSPOhDWWvzHzixTGEnsedLifrclYCwYXkxPEohPvafrdUKErsHHzUtZewiYQLwWqbzxUJIDIlCKfvZbtXilkLSNBuCUeXewGpzclkLamzCnztLdlkCczNPyKWqZBArkorkBbyhgKhFzwJzoiGctSNwMyzQOXXWPGzdFUXMMiVIoFQxheFeTZmKxmMQVBPNRLXQmfxoKeqZaUyZPEunmohqtzqtCUVfIAFCIJdcjViojkzZmmPILITUZIJgfjGSNxMgoREZLNWqLpjpLMlIcFsxGiNxtFopxoCWlwBHUiayUUYIIhbScYbeuvjCInoTvuPBxiWpCcZjkhSBkupPMVMwVXuRooEDvajuezRfauYZthxXIuQFJYmokzilcVJmsrCHQWTDuIuSlRWzaasIvMsSgZUgHiEipskVSOpVugjYIouSztzECMmSAUKNLjLeaSxDgLBMVXmABMlEcPePdmoKNtbxBOmImLcUgaXatFLvflrRTHINLhtlJIlJmdTsijiGNjRdgSnVTsKRJSBALycSJqPWfpVpyVViIkSLeeraEucpltPIKiLFPmlpJAePfhgDGlHWUzFNsmYygSwTvSPZDOvJvmrrKGpILHbCZRtJcacEbgIPZJPkkWFhSCBQJEvXNOZOiHmusWhTOuxXNqfcZMzBltybIbcXxqONRnwJZJBXuNeXBxAIRJTFNslVnKVRgFoLOrMPLmsMSrgaGgAffuAOscYlTxmUJzPQBzvmpvjGvHUIRZNyiPIkYiKzOBJBZOHNjHvEHLRINitwWrHbbTKQQVuxCyfsPClEGUVwRchoAIWhdGtQnKZfRFtpUOsbtnRgjxfPURHlfjLspwPIrMDKPOTROsjXBWSzNpyoqdPQSeHAmSxZoPWvpbUjnwppIEVoGAULlyWuzlBruvoqsaHdxMfJFacZiTTZipRnMUEAPxBDGwwTeyfxCQMwzsJGJFCkGPoeYZcWpXToafepBcIzKdWQnAtYdurNQQOcdrYFHGtvswMkYXzucjierMbvJekQXYMqrvkIZdqevcgCTKrLTnHZsObACVAKdpzxlJCZwrXcWfhMqZuUujUDmnnWmuBNnNtxRDPwjfHgLnhUOzgWsKzrWdMyReKwofufLGdKAGMatdILWXqUMWhUVBsiDBFFkFxMWDvUSDwDgMazpMZRBwROARvYGzFVDHAeglXUtZvfWgmvjNeOtdUqTCVSocQUUMPorkDVSepZLsOXgKHUFsDqbTfwIycQjaptxWcVMXZeVKKGpGIUSKHnfLwybkxOkNdbzvLSDKxjnKgZQePWuQdUwTIhNJMmOCdFCkHlLuENQHVoVAKrTnYIfKLIVJeLDHToTEMlLjNNHFnnkgDGDzcvUWQiQtQiKKhXVRnGtGPcrvbHNWUXxWqbwVXTPnOxYbFftHirERqVraeSUOEQXwaTvBRtPgvhqzZBeVlljCQTzmfUWrMkvlIHxHZyYkJqpKheCsrRwFTxfvjqtmqjXzpmvltvuLRkiogSfkfIwJTbAIQJHmSzEfUHTKOtvAOnCwBqYmOoJtBRloyeElnkIbZraeTgFzClaVRkTiUJgHTmkrhQZxWRXfhXPochxylGGFwEhwMLOtpMJzkLyPcbBfWHtxBiEbssCchMguWQYjrNJZmInKIGnocTsqMBWcftubbarLcwPYijpOjRZQpBEYYQPXlmygfJcyODTQuLltQehPzpuRAKKJmRTmHhlMKooawHSsfrYBIFqFHKcUkhXKAheTYXNZXATJmtvDoGSHNjArTffRjYRvYuTPUiyFUHegfeeEFLkeHZKGchhUvzgJczQnDBTbDvzrBfVaVrpmRPCqGrCPAqkYHfcuGHWMZWuFJertUvRVbviAlDgFOkAxYNWrEYGhxdgVgbFIEecXFPwyOewzUzhgYAzzvYXyVZkLXJijJCUzbqnpNLhOgnWZqvYgrCAtWMfCijWXfcujpxinwEofVrEKBKfBlJtxFrKEqeHdYNdcahZdPlINfytznewxIJJSmHQHHzjXiBVKIqDauOPSzJnqRAFzUKynpVXjwiucitaueCnKpwIYvKWWYIalBpVgNAgbEqUeScigDKxIKKYOEWWrcfVSvzFPovvmtPtrqWPdwtUvzFxlYrzJXXWpYedRHlRHjxcCbQXOChDeIhrzseqBoyyiSQnQHyVxjkbvnyGkEwdLYcoSrgmbjkYQNNJSppdJLjIRsanISvGynWEyCCMnJqDGfHtamsKkrciXqxCwtwSrXvthvHeqyXawzBQoGrBkvlkYvwhklnsOTdfMVDwoXSfrRZpiFbBtXKLKHXfINLqXEHhkJcotpGDIsytveYfcydzPRFTwMfrRRZbafVFJzHaAecktcDMFXQimEgzQfYWaSInZyWcMMtcQtlHbDJGtUBEtKzOfYOYdTuybavqcfHVKLqdYNjVAANMVrQvgEFlFUjpDXsjwjStlnaQGOVcHUTbmxAGKRQGgmHSVBmgyCDsQdQVuoHWRAVSRzFIymTNQjQvjdQvxdTBQUJrGxmItNcUhYYoJvKqJhDyFrNvnWnVqjwlmMYTDMEOeJbXMnpFdFLnKVxNrvzKAObcEVKNfrODbhdxWYJPdQojPYBwHzOHRSlQgmwUIoXKZyPvclDsYCcKKsjNznfjjGDBwtTsKwDyyKmOREniQELmMWfWromJbMjTiWlzXmSnqPLQOqoJnHbiWquawcUewaKpaXbuyknicDQQMvEOcyrgINlGDKsPJjUgXLhvygzbKprMIrHJhefBvRxLeissZuhYiEcJXWcROIhVxQMrrPOiWPzOKHIxOwwUEPzFOOYnaUmuJCYhLyuTCrxqcUMxnLcoyxQlBXUHBwYKAQApHRnPptISeaVCvYiRcRjDGNsenEkvIJePeoGrlKhhQiwOzzaHSBDhPnvAcFfHBBQHQUanXBRCzwxOwyEEcvZVIEbRJZoZHcQmlqvKOUbLFYbARLbQzZyySFkqeWVBNYaRkSfmZyfnRTMpMgbhGHerAwpspBCsGVlhciJsygPIoFwdlgKIPrLzhoGeZbnrWSaADbSrCsIqIncqYLvPKRagwxPfHIfVdnKvZmyEUBOpWvLdHbWzZvrPzYktSGqdrdzeqGlLbDKQLbATwIqRphcIiApBfljfGoVDuhsgQGhfcEEMAbCDbhBYEKeiyqOHxfSvXxAwbLKxyhIIoPETddMiTkDpOiWxMCocHrhIwoTfxbpUzygLTMMTIvnalJeOAFlhTWhLQmSabGlUIbCRmPHdAVQHQcSnNykqFEwUTeNDXuHpJCdxZJIEsxmgwFKYWtTZRmGyHQmkULxmVGglCWDEumCjZKsUkGjGmuEXSVuZiNflpBtcqcCGOkOZyJGgQAKGUqwXQiadKylaVMSYLiuDTPhpDgXMoSAPmriJxdqtyenOWheibzPbbAmsVkeWucwkEgMvlQXwSnlCULagiqVQvvZOxUmnmpKiulQSwHZsmMMkaHkMPaSTEkcAMwzcZAibNkdlcRpPjLHaSnaUQDajSJjAQocjthauUhoANsHEOYnQfFpULhdEumyHimXIWvWHlYbnTqGoJbSOOcbYBDBkaLjxKiaZlclpowNiIClzamCOPCgqqreLfnVlQlcAxDJHINAruWhjMskRhEwSgmNXwpyhwfBcJOcUtjnPXUFojunrEbCtUieIxXkweuWxAZyWyIfTgomOWklMhhVeXJkgqjZuzrXwgmMLyMEEcJVrCQvsTfBzdavYiCxthJBvaXgLGjfbwRTiFTNJKSuXubkMvutiIFAZLOCkKDuXZdPsqAluVDxcNVtDVKppboCZiECADbCkNfOaAvowyZvCWLPmsUHZCFAqHmVodtkOwaUuRWjNVFlXzBXlAFbgDVZjavELRahoUxpRnMzFqtlSYLmWVkMtDPeXOIGqzeKvKrvVkYPyFwQSyIWgFrAFcuSYOTgybuYONGotvkjIoBHRvHSswKrFcVGzvuWsxsCLiDdGHtCPAruKsZgPVYwFvbvRhaUUlSHNZkkOQkLlRqTCcRwViyJUQIuIYceolZpWcYAIeILMeNmvDMNfEXCTNLClGGNlyYdftHlhwjvAvDTTptJXMIOulatSqdgbqWDxIsovYBHwjnhzQHfXBFnxzmdRrlsxjQItAvWYGtIRcvRaCifCIOBHEzkJQsDynWeZDRUfYwrTGduazMJbYpDSIdsIozfdSiINLajsWRrBeNlSDyjrOpjCatvXvzeUjJpBgwBponAsbtRZooJUdqaqmWaPeUhWjsSRqfOclmPKKLthEcaXXGzkodgToYQREKGFNYSxXbBCabQKpmIputlcPGfzVkbHUFBIpbrjSsGkREplpfKPZbGnFSnruoWuVPcLFAOVNOflhVrkTGmhpWHetUSImOEwCInfnGyWxSkpzJPqZefcSKfMbkwyXGCylxIARLNSIRUshOjCteHbUqPXNQRfDUsGpmxsmpbCOrajfUzsbhPrtqppWxFGPNrHVwwommviaAVMVUHfDLSNWrmEsMPVFIgqZESDevXBEFWfNsnSsecPexqZitQyaFeMIHRRFldKILTzZPhLeMSANRgBrwLGLUhruCGEhkXKuLIQZRiBYCcoqGjAROontIaArqLbaafKfQwToRywJvpNeEchSKGHkzZaZoncRUAOaVESuBAcZjspnTtcgIriQSmGzusyGAJnojelOfUqvWOrlVJsOZrzHmAxMaGRMegTODQigrazzljNmiIaNKindXvCtOrYksYJIPRTZVNRrRZAawaxBESFtkPeQKekJIDRtVErRGXyaRausYaZkDYXovcIKISmtewhNpHxVsKRMVDvDyXYLGXEsvNczjtOHcWRNSOnxLOJHHhrnTEOufXfMdDGJPqlVXbOFgdyFwrHJgElyBVMqNVTjdNuayIhtuSfpNkqZAbrsIRDTgphoKAVoHXQqxTzlnPBSXOaPLDyAkiXbgTdRjBjpgkHBfjsoNfLAePoDrDWdKhKUSfnwYLhWTnKcaiYaMMFVcCdjbOQVulHcODxnMAXzWdpCVULjkdeBdYORsUjrnllYpYgipqZHcCWwxdOUyMipXDSxEmRxfEjHluxKmwNuCcxAoOyVPfTKeMnlNeuTamVCPZGtieLzvCYDUgoPJcIeUXjuqkuwqLQpxdHfyGcTRftEWGjALoNIvXexVkITvzFDznUYbTjdOSIDeLBmPVKEgWHhHbXNBSoQbFjfQZfRYnWuRimELOdcuOAtzxfiMIMIKjOtpyNAEKeduycScwKIOrnVHpWXwsaLRnPOnwZQVeJToDOBOfLKyNdmhcZPxJodhPSSCJeIwEqqjzDsOjoDLcOdfHnqWyizuTiMbwkNRCahqKfkTtTgSbwlrRXabMZoClSBMyJtAyxrPSvlMPUYmfclJllJPTHxtLvLYaskjOsraDFPhHRFCjgNHyVQyugMkCsvbaJGdtaEXzTQbMUwgnLUnyNfqHtLiyCBGTdYZsOlFnaWDnkPjFZjrHWTpjdhzIqiVmIzXjDbeZuSVnrRrFbbnKZojJborZnvzmrnVmRLtnaDwKifXDNFBLxrxjSqDNmqbJrhFYDcJQSKBdfPbuxIoxeJHCwNlqLyHdqSFvKzogZYGYEHhdSGrhPyDUcrbGXLeLopQYXctcontNhZZqYNzmDAWoONTAhaFzmqAZQrPpxtSWZKdkKPEGpIoUKzCjZONiZSyPmNUxjcyzgXKejDZDKGvTnLiQMUgYdIajNqBUZHswepiXCKhKLCfEAIswtIhqTaPJMRMchhchpfZcUGbZTvJBttGNtFRcmTQUWGfOQdYkPkMhrxBIVdsEDlpWkkZnduVBgumWnAAgUHrHzBHbplivIMMdFPBVmIcYzroPYExvapryltxtGhodxppyNcGlBKrQOsUcXOePCfNEWNZHhmgosRzWjRpXDlFQZTlByAVcrezONQVKusRsQinTuMlDrzPoPrwLflkAHjMbUYEKyBTKdyhVZZpOHZZepAixMdFzpMgdCBkqDxwxIUBjTNGJoEJBgXoeJrtqWhvHYAjULxjTGwilHIyoCZwKFCRNOZjUQQoGFvzIUqpeozrTEZPtQhQkiWwsaszvVxDrLEaiOqbuZZbwyVfqUgKSDueawwOwzgAarksVMaRmbclzVPsHvuXpWKeDkPKskNzEEydZfXUlCLPaDwFEGUdbKMXVTjbXEnNvCcNfjiypYbZuxNsMTRXDBYBJCZYttMOKLAaGuhNqFRhFANpobPqjAWvKctHykVHGSoHByqtLBMKwtyQYtgzYjzMHRwuHWiJDuCgzarUFwbYWyvKGYJEkxSgBtVCsyZLlqbAeuSJktXuxXnHHZmwFRihVfrPutCeKzWBytSeHcrtoHzleCURoCdCrmvofZtWQHxRairmRwUMBmTtVWIweCiMOBwQXCmhClaNhpuXyqVfLdiYlssAgWIDnkiHsHdDbiDWEdimCZIBjtgTdOtqnfCStxRXkETuFEtYZZuyStfpwoCwrcjiYLwkrLBnMOIQuhQPdGxwzoUCENkthnKVncvKeVnfGpHmPINbkjlORMOPYXUELklRAORossNAhBwvyvVIZFcLgjpAKpwsOdBjHOUqwysaeMrEJdSkIPicrcfBlsuOeqQAzJDObSZgBLAkWyoHQvtfDTyMRmEyGCxKemqjTBVXGAzRXBpGoApVePzOCGpiZiZKvmDxmfpQGkdboBlXiUJTuErUDMeGixdGXAOqduzFramdjDclxBAKZOmzjMCAViqYiCfKYkFMelffLGUxogEkcVHSvLqqLGBruYmuOZWbYWekrKrBDQPOmPgHTZOjTdrPdmuQrXkfLWhxHZvXlIjgvDLMeyqZEydpGaLjuJssvzMWCAsFqoMXhWVBejnuIwhEscAxByCUIPaeIwVeeFtDALvqtFFzWmuvCdavHTDNaTlqEurpKExmURmSvjRbgFjfaccYOULQaIUwGJhhveunttQauaJvvtGIQGnFUstIBmnHhYyXTtIYCwXSVlBqIlenMqUlQuKFjRGlaOemNswKmVJejilKsibFyEPgHHGQlcLrdOeEmVUJoNCvkejZTBOywlyuAAZdexYbArIijJlBwuSvYEotMHUaLLtvCJtmYeAhsAWsikOJuItMNMtSFhUkLkXNDuDcNFZjKxUxhcFVbcLpZOsxZzUTxLLIcllWhqyfwIkzLingDbLNWVMTZtHVLbPrpStZGamIzLJhmcIfLiNElzPnrdqRfwsVrvcGKZIZaoJTboqzIowxmYKToOtXvJjKVMLQUsFcziljuRHiFicTWLpJfOsmBDessvgGgdHRzffLfAaJRMvhoBAKXMqHUqAFwiIWqvkSqgcpbmhpsIGieAUDixXgTCBpHDjmDkaoDmJovoTujinSurFIdhffOnBbhlfHUJulyKFoBClaAOyfobyKaJOiOkXXwJuQgvTMLVZZsQNfDRzRMcTNZUAcKbuYAMBwQuhxLClWetpbGxIURPWgqrMAZmVOotyOUHiaBeNEDHvvcxKUmdquQvdvUnUSXvrcdpVcZuwTDIdTMYNAPHhTmPkFrJZCQUeNuXQxXYFVHLOKclpHSgMWwooaqtamohgzaopOSdNiWCKZeEKaqsgmOypCKzurHWTKqoWTVqDDnBAdKGBPZXGiQvlPZWPhcTrAmWpmftEIiosWuyMAsoiRQEJDkeTBvfqZateLkyHggpbdXmylumjPIRfDbjHckFXGKmoNqxrkEbvMdqCihGUffLTtklKybFBvJLHqhOFOjHGTbjWkOalTyDbgglFZxWgRMvrfsjvEQdzWMqjGeuNLpWJuurzjjVVMGPKiHnutudzOjHsxPIWReCXlRFWahVALwXZzaOrCttTseICTRVRjZqJPXLCMgMkQRLfmZGrEOKULijdXLXnehhFsbqQSnKBjwcbrBYsdojdEFaivUYOGRoXuQNzpyRilRVEDiDomGwrjvFlqwvELeewGChisFeBHznjPgtJzqABKmCvcoliYbSzqnUQzJjNyypURnUaLFyInmfpDBpehjOOTLNLADSxsLmukMpqhrNJSorYoCwxTfcObBLENPDlyYZnImQydrcCmExTnadFzJSOEchargbaQDkohOERJDSiOQsLfJCdfFFRyioXePoesEHxXWxKjmPBprNeBzAToGxSgSxLGnWUKblaueyLwxhNrDwgQSFRMZWaSlOyOUUvGXDkJzggrEhmqIgzIifpmUqqmZpFLHrJbQgATlFTMjBohVbPxDVALXPvRTeAlNDwEuyDSCNRtvqQMMKVcysDqXUpexCibnyLCAaCXGSxsVrwfKEsDLxYoLnxrLDLoQIkHwGvAOMfVnZZbvRvgdgqPxeLdgAOqehBgmjgQwOolWyLpwGjMDymGEQVZJrYTcXoPCLDHRXQrznInTkuwHShBNGQgCrIiHqjGvuFsogWJsBUkFSUCRyYwaPxfbHnNnwdvEEqJsKlXkjEtQROKdKrCamGTGnVCyRxxDfPNnXSbcxsusyZzqxJrUDGOaagEOlGvxQaiXeyjIBstwGcPoffLGSksGmMznctKyBMQYBuNzZwLGdFheZICiTvcdDoFgEPgtVTPYklQLAKIOuPbVDTSgWrSSNjClWsfRUFuCbkLIlTNmfRuUqwFkztoLkEEPDrHYcPrFEsmmXpwyfMIOfpZGYpEmrmvkfZBLDUzHjYTEYdUCEUZyFmLyaYghTrpGqGMBYjMcDJMgVIzedapjOZRwKYiGzKmyAjOZFBHAeOjGEweltsYakmFxNzdqwjXOoRMHTodiHfynouBBUONzcwUkUFFrRvrjGYntzhVvjCAMMIyDSfGFZdkaVTnWwWnANkkKcqAKNOqLLVWLbfpnSMQISlCrthvhpEwNDXDkarEdPlXGnnnmCiSIMzlBdBoRNnhyxIpnxguPRjbbDIRwLxAgXQLxmJBUhwudVCCoajKcYEsEbayOzFglkRAXJdvBJCHFwtelcSnoQdjkbClztoQsQVJTmqbEstEpzJpudmpcTxKuhWgTUciXyAwubtQaBgknOTgJqAhAbxNpIsCEhDVbgtxYnumQxaZjfEXfvVMfoyywroTXIQSzWsRqWFtzfbuLwZCrpJCNDCEOiIxVItBOLDjGLEDiSTyYcFrbAkLFmfdSlNRmgszOZiUaqqwaXvSNoUBnDsZTEhnYOdOixGPrtInkoqYhrbPOBxQQeigsKNoGnWWQFSfCvrRWnNOhJOOdmIGGjNFiEYyPpmBrXUNATnRXgJRtDpMxYXIuIypqOYuWIdZDCLmmiBZgBqEuLfXDeyUhrZOfxYiGArzwkTVJrsTvWgXKmnziGdqjpRTTOeumRPboSgefKuvqwxFUrxIMtjDIziXdgFLuMmoijJafxrbophSqmDfiLwANmzCWMPhoIIRIUYWXEOCrwsMQHLtanhlGTtCprBzDOXqHoIcklpwUqVxEZnDdGikYTRWdDIGAHPoPeLwvpOdkeEEJJanOnvmborcUduDQWMpTtdgseJRimaeJiXpEoiFLyjMCfDTJpudAAyMJvGOpTFpqEtaTXiYTkUsoRaauHFOjIqaWvKaMVISBWAmvYxhuqYmZWbyBjFNyxEHVAfYTtPBuotcXGpAdgdGYBMuDtZtfCgGZPbnjSyzzXQDimdHfafCEmvQrNEDYKIazmGpHDaFsmhqibwnBikoyRwyNCoMGdWYPBfICuXqlQDyQEBwmSzbVZZhtGSvgsAUIggrBhZHzFoTKbnSFhexbLQFuPWzoYhvEtjWfooveyCoTxbwGQHKbAucqrlewpcEalxAHLoHknnnNWBmRocBwJUxQaJvywVfUmqEaArmVTlsiCPRBaEfFEKogZfNTbCLZGDuYzOsVcSbxrbwnlBopNUFpibjBzEgkbASuVnJHHkEUVWyGYrysPrzbWIVQUSNFgJVFSpFHekAavapOsuLHNPyWUhCXoetclQeWUmwYRQjvFtDlIhRtkkHqgYbovNHwdUNajMobTYhngPncmMSuwYvOnSGIyKNMGSxJXeQILmakqEfcjyvqbYEGhVIguRiLnKEVrXFsaUosGlJRmGyrXXYAWdEZDskIqrQbVSGAHZjgoEksuiNfYQVZwhYwpgavsTzwsNNlizouBjVUJQiHmgUfandXacDvnGURGLQWwQCPRGVJfBfLUwpOcPXWknlNkxSGoQBkfxXAHcZXMAxUnSgHVBYrCvvUacMFMlkTfvLsvtTNOESIfkpDFmztbmCazsVqPuIZhuVSkvjdwRluOvcjzySlNzuLipRAWdtJObJiVshyYWEgiMmWtFgVyelQsivBnJKzoBXJibxEwbnqSQYAxlpHSsokioTYHasAyNIXOoxfXowVLMDrghdnqZjBjoHpUiYNKroQoBRjgsAeVETViPhrEcwFVZBThQxxcNbGYlBXTRgvLxbAaMFqLlyczgtmaLFncqSMpfMaGGByCnRasfnraGtDoNuRpiqsTEqVPkJjuQPlwCKcplqsHCfNnzmxUxsTxDmxSfYzkUIsrCwRIzGfYNnSvhOiwBeFjeblUfbcLfBQdqAtTzWIVwynCeHvaWvPfgIhCmlaTBwQpCgkoINxjtlEIhYtxJaKonuGqfEGdbkvXwFvkJOuCJkgGNZnOhKKbmogRDiafuftSAyGqaMlNbVqbkyLyfpaBZmyhTReZSqWpvNAChrOePuWvAHUDPOGIebMehkaaecOExKiTtldAymScjfTYFedicJDxmfqObHPDnYnGpkwZiUdqcscpVfSfjWHNHPejFilpqFVXYHuaFgGHraqvQwksccoyDADwfDfElcsBROXSlGnQfPaAgjXOzRDWcpyeyZrtXKCzllyqJiZnaiPFUOzOzWBfhGFnJsmFIIAhwcEzZamWsrXKFPrpFPKiPOzAMYyGyVpoSaXgtvjtkAJjyATOrMWcjzAYlgGrzBziigutiYvMdGkCGWJbpAWCPlNroIbMtYxTKxDRXLZYXVfzyKdchHcvysUkBZIRXFItcsqZXofyJyImTwqoWbkWqjbJXOsXALMBgkjQMRYaMgVoPKQnmhuVVdkBPvTKTpPUOqaGskQNlmmvUtqACyXpCEmYJUBcjvgwEngnPhhLJSxmiARpjGSbtCymSvIMRQVuvGwjZDMruEEQQiIWQjjSpLsAiRYdoDFLEehBuBVKydzaZyfGPXDSSaSHzKlzQzMBpFSYtfkiesmFesqPgjYVYufNtSUjYPWkcISXpMIEUdiUmgIwvuPGxxiaUfeGiNSzlTtcGvjAnPBdrEaOZmSFKzJAHVUMXIIYYaPMBkkeWCJuiPtrPEiLeQgLOfoADpuKXExKAUHXGydfXyZXLGxxYTGcOaEUSYGVTMPzmxNErRJpSjfbdQByohZRZnwPegHUPVjTVtTHIFVdqPtcYBrXswjRqlkvnmkTgEZkzUOVHvZUDmnzusvHvdYScvLBSIkOcEaoYFgOTZLrsKEAGdvpuTFuPTkUcYttjPyJqmYPIpsnZyDdJGEijuKLmuokLVsgbtwkYaMdWWYqEeHPdoVltjUItBPTyZSzYGhlBWvyuOaheKJGvGEZuRdBpcnQrYKefMAZaeygoZObgujZAEqPlKebQMAnfCEHzNLmrqQeQkfuZxriTTMnTupRZwCgiuYZykJoouWfFUvWmGPgkgIEJcccOTlHGFDlyEJYjgbWbIhumLbMwJaSQKCtjQSfXSlQOjLQZmMKIhTSmUvHUolfzMgWCwjFHkCJnDknyskNGuuOQhlQBfeAnMdpVDCOkEpngFNnwuHjVhHYfSyKjrASFGJTLdQlgVsEDzOXHTRXGZRBNwNSzvSwqOJGIXjpsljyQDIKIIGwKbCHkfjevVrGGUFrtmrMZaUmVOlNYuVFprqTWiZlLeMvKorrdhWnbuSLMSgNIZHlmPMvXInEuvfmvoVoMsehilEjmCxZcFtaahjavcegZsLXnMTOFykiOuLnSPOZfHWSsDGjzKbJAZnuuPlcDeXnJHXnYrWLYjvVxWBfeqZbUvqzvUznheoKBBZmlBUxIEevaTGPjWZMhlNiPVXWnsfWAvVQikDQKYSdLfZYHCYdRggHbWKzKGsjQfQnGSsCbqqIgMyROhHSkvierlSzwulmQPVbmOAOLKyQYHbjCxXRtJwurOFfKnEAOuXtHVycOrxzKVgzvYDAPSrMgLttxhoczdDhLFVOaInMELvVuCBekQKYoSQgeEXmFBzuGKObutNWoLHsxSunmosOZPoJdUZuzCiGyLDPAUxnLgsNpJfSZmUukaJaAoOAYQxvJuTeSVDoZhLeVunUPjrpwkSbVVsDuCCxAFFJgpNJhBdqMAaULDPEnbGYCjIOeTCUhRjhYXSAMonrabjjlksozrBXkCeBOhGIYmJFTMgCfwKSNijdnwFYuAudAbdQgvOzOqJOwJAsEZEiMUoRZOUoavQaYSvpmobswKQoHavJfDcCrXBvzsksEHcLHjjxWpLfYbIflIrIpMPrEVeMTVnECErYeKepMbMFnTDhriBLvbRPGDgwBpErDtTeVhyuNzWLEpVBXfrSGjOTYNEBJYsiQMyhgtNXKVPhflFEIyOgeJskIqKQzhXiPkRNExtjETvLYBQLJPtYqUAOQyDPKRPYYYsptmHEauuyzxCMlIJgTkQdAGULpAQGeGLIHALzECqAYSlGOMTUMypupsnuyBSqffVtiuRYsSBPUxWeQobnucpLSACLnaRQfYdYymBwnyhFElmPhZYjbtVaQMfARGmNiOeDewcOveiecCoFMIzjXZpcFYcQLQxOGxHdeSAxAisFnoEsowExCmuIxMXkNlwwBprcaIUyuiIxHErCQhdHYQkwHyjfRSGkaaDDJtectNCtdfEyokmkQedQMgRtDxhsvfSRMLVUZVTQZcHmvSxPitEioIeDpCfeYAMfkFmHAssENqPHvEyjsXWyIoEoLdbRGGyoDogFFrBybFhDWdOaOxNhMHbaJuJYLVpQkcwNZDrgEjCMAcdaNPevcxXsuRNMMhlMoFFHwOfQAIAojxakYkoZgxCEczXEFjrlDkYNvVkomHrMzvBPXTGlNBVevGJQFpzNfVcPHSfmfrNMQpQVluzERDqjASLWZDzRcELIvfpMMUBknAVFwxKSkHbiChqAXLgDHkxpGexTWGStLzTVspWouNDpGbXangcCZklqHtjyvDCGashTyhjOsaSSxslIOMMlBaHQwVtBLDWvMadKjUetmGjYkCDcDHGdoUPuWnNtGElqXxjNvWwCCmNXzmtxFuRRWfNZThadjddmipDrwGZTWAJdZuhIXuNcfmJRtNfmoNhJCPfEnpmDLTIGXAJgYxcpMwfNQBMHsLeoAvXQSPBPTGKtgPduYmztUGdQJBisbCUDjHFAZvgPOwnYLxilXMQjwYVDJwQvRxoEyKlIILaOqCkWpfsViMmaobIsgUnvgysJoWLvNHKcRmvfpihaCeKAaIWFJMxUqpSDbhJbqLvfnchFtwtwSifmKJvYawOfDWJAzlsyMxvEdGIdVxNvhnAoCuwRecvLTKjlYDkAOddFEnjtKnJbisOdMOtYtctqDLBGeHAnanpHGWhKZNJvFRuIDRWImzhjxffETlKOPjLOQXDuFtlNSBDBwcFHUQSzUcHsstQfgXdhkfxelUDxtPcJjxMEBPUbowFWwqTOzFSpuDdGiBRBRMObwwqKHnMTCcsPzbCGWVbzIvMKvLJuncwjljenzJnNVnUMfizgHrGdJlXrYbhGZWruiHuHBIgeZIuggacwzvsHkZGXtjoOQYjSUZYObgEpcADnTHpCiDbAOOdAciajIPJhrMhzhAaXTeEUzGAJwAsWwZyWkJRjAYNgNeQhjtoidHffCXjoDVdPCyYdzWldbECqoNjrbjVBeAweqHajRsYcFQqYckbzHtnnWDbRVkaOilXKjkSDrTrkYLZWPnFXZPYhAPOecEOQCrjtoVZWkMjUacrGDKpPaZqWZUjoUUeGBIyznZhLwYAbYBRLogwXeuwxZTwlaCKQOxevOrUWLIyxQhMTSUmrGbEOiVYGRARgnmIHGhPifPiLvSvLAXWLdXqxufnzqtquTWTQsNrNnAKeaKDKwlQdOGoqKbVtQsBbjeNGOKURYlZAQDMnMBhIVhHthcgAZbIrGVMRJgvHvbULahypmGTunKxSnlZkhTOABMCrBZATxPAooetNTHCCovjsspKKdjFfONBoDeSGaVmnUuPvMebyKBpESmqZYmljzmRTpzxfkTzVLOQwiicHZYQXAxiVozVaXbDytWpXeAEYrSUpKSbVHEfnTLKjQZcvhKNnYhnjkkZibIHluSzDhsCOyzJKDLhmLREwnUQaLAfOXhevmVxXekEtXmIBocDVLDiYFJDhptdAiUMhEKejxLoHokEQlPbNyQHkvkHwnvLEwSGhEYKlHLdQGghmdjrRjOVZeJinoFalCqoYuepeouRvUqwyVtwaWVJNPmQhZLavxktUuJdZJsSIOXHCZdONpageFhWvPnPOsqfhWjOASNWaQGPLxrIeHLgIWkCFTcUJztejXtjCNmAGIYmtKiTeYoIwFzEGuTVoKegXFAcPQoCqKeYPyBfNjVQeNonCihnTUrvKdNWUCIbXjyphgWFnVIYUgJaQDiwoSGMAtjydlKijlkmfJxCIQDpJoNGuULYhOsBnJQXPoqQkJqQoASTudQFWoHLqOofGcAmeYBWjbRzCVjtQXPGMgmaSkdAAJKQfATBGmsyZFGGKhrDEvhbwrRNSwZUBFsNDHIpWnGjkrwrGvEbZSpFpwxxZSPrXBKjcIRFihNeSwlpzPhgchbVlWsJZiWstuuRpjyNPOuCobkoJASJLRDwTpEwTHzZozfQhBmGuNIADbvkyhwHvXxtbEeQYCbwulsfTEKqNFXWLXlTYUkmekhiPnizOfkennGyPwEfyVKXAIyhYEuiVjIrwdmicCSKftwwJRIxBRSJRtnWXaUrqVRnznqqsWTNgTPaaERZvcEIISLyjmYuUCedpYFeTlSSKVHyjtRDQLheUJmzqyxlHtZSEMricfPKEMbeodJpJVREUagmAmyHxIHxOCQEoxdNBmvjzBhJCSYyCszXMLCoVAMSxNnRAVzppuvMGbYDjyDUYWOLRELxrRmROMYrIjLowAyCcRFtOJvUkCgUJGUdTFxABUgbaevHJSGlunCTUIKrBIysdJKwaemgdQoWnVmskNDKVwIwyBzbhnYTyeLNzmULMcMTXIzvBUrTavxIGHomWKCfFfdwCWSKkxsGCFxIzryjwNISBonSWyxFJQtJWDouWZiJHZvifKgfQgEdRgcOgOSqvoNKWREoArkRExCMATovXIkgZfmoSvaIKWShYTwyKfsBUUdaNxXoRKzuTLeapGGkKoQVIFYyUuzGUeAdIMvwHulogWoBKrBPAiKtWSGKjwMvslukvbVrwvbPJgfmlboGkmwnwyOzDohLgsTALjmOMfAYGYroqMawpPthhzZGvyYNjgtoYoHKFZpngjtzXuyuCCCjEzwMuPVucbxQlboFwZoSxrDxpmlKoKCydgFapTFhifVTzaysXNTqbAbCAKCMhplHCSzHVcgHqBwwZWCliAvKPUPoOEdDRhjMundzwnNrDhLyyAEyBJtJRYRSKVnPkznNeSIEcpHQlZDgHLRYepciiFAgszCNzdifMIwLlrIhvfLLWlKJSeWWmHjcpZWFCniCMiyVZxOswnbiJEdMTsPCqhjqCFIhehhcOxqNlgNrHGlkIEvWWEfYhrHqYJnhLgfQolMcECVgqFPPSrLDrurWFzuCQTTSlpNaxPxUnoKvYNNYsmTnKllNICNIFEgjJFcCDiaUuobyVQrqrIBDpBBzHyjZDoZFtcrGhtaZmVBmJBkvubULAuOFKmIkgtyeQuJNWQKYnfWfDcVYWbRApoDThInFanjsGXsYCQrcGmVBrrGRcKkBKsTeSYhGKezOaIUxOwEQtCPLxbhNkgdPiMewSqELeFMMBvaaLXAvcYkSbLSSAmVzSTgTFSbZsXkIMPMcmoLwLXqCoKqYaZmzeJkJLyExhjiGfmTGpCkqyYenafdgjxtMeqljdpPrRWBbjbeuIvwmSnjmqhYJGpYpXHzHrngMureWVOEjcooyjBVFOoisUKPAGbfExjnlEFlSqIKSjPscvdTQOWXbHqHYPaWZMxPjBYqKOxSsSEofwLPUtGKwVfOkKilXCxxiZtmdiLrdDTqZkTvlaAjUNusgnBvgdaOXxIWxWJUpdyHZRTcASHbEIlFprfVKUqfiTjCGlTCDEmBRnWetvfhINWWnGfCyGIaRQFsSxpvYkEZPAWstdBvUWsOgFDrJvopzSnSfCrAFMeqsKmKJfnoxlshksMNIBaKsdAifZGSrrbdLFgvMWglklHAmnbtGQPMHMNIZGkujUurHRERrZvLGjiXHiOcLcDjpDWHokRXoZjwUhhMMQxkCDVtvgqRDCwCghcuFefojFdfXKceIDmoihTBWJPjrnHxscWCrBxBDUnONXEbEOeXeWAputbxFnsYWuTMRUskiehXFhcXGQvrKYTMdnnIKIyyduYajBIXaKqHWEcEGpWOPzonKEpKbGheMxBSAJXzIyGRXfOHOkKPtOJqhyHGOXfwQduBkKHLuCmxvRCloDrwenkQRRAVJhwZhOGULXSdTpZFDZymuakbDrVzWCAwymbhAQBCCFjXElvSCUQUafWUdSNppFGcmqxxhyqbQwWWEJleOiBllMsEISGuefpAHEhrtpYqKqhBkgbfUQcvBDWujkUtmyfojMwgIHDaIzUkquSVlUSTrORjQOLLZiiaMaQcZzDUZEvxEhpyTfSpmzxyiJqItAcMztfbxsifWlPfYjErxPMrICCLBJInJraZqOxvGuNbVNgbRHXfBwBfZyHWgeTvqMtHyCbeZiutvoRTyRAFGXhRsXKZwkEtERDibSDEiUrKmfkJXcoMGahZKmRAVoalZxmUHnhAswWZPCEaojATEpTLuzImaTkESkFIbjtctzfjeTrIRQOXygCyFLowLtAgRswfVdIJTbzUhnNKSukPgNTmfGGYiepFCcZBskGrvjRtDRrmaymyfpZvjlThuGOOBfYkDyjzXxafKzcIltSBCbxQAEfNHblhWDQIeIXtpCsulvoTRufKtrDOYvERhjcofkHdqxghJtFbPTIdOoBITMnLcRBnhxoWuBjwBBsKvtBVRdswfdhlcPkPVpFyQDjuZAtktCbTaJKHGSQkcOIEeadDUhRTPRhnhRgtgIrJPBbGiGLmeLBxSXYFlWquTHYItLVVFtMQeitIhttFpBcyXNbsjhWSbwLAKfDfFyqFJhdsECtLWpLPNXoZTnNtPCAZNaMXSlGQmcjdqiEPbKsnonVnJfiqiqGoxylShNuRahxvjWiHIMNLjfcMbClzNARveuvWhfJZVqqORGfZvgQkMwjxwmwXOuTgdSaDPkyflEjOstfwNtNGCsDUJDCFULylALAyfDTCltsmgzBYqjbphtKmMQZcwxQsBztRlCgnhnJCNcbtsoyoiowRIOAhZGzRynPRIqrZBZKwjekqPLrGvUMaziZfIOmBouDVPKtQavZhxsPSHenrtrnxSUvZepHusSSBCjfdyAePnEefCENioowOfntfuurAidqEQVYmTdbAMJSUaDozpWfsFuqjJsrLUmslTmXJfPzUXHTeJfDFrhUwLRaTqTGdClOalKKFnmYgrhfQvgrMUwzuCQBTeatJkGAmECamZqxolloRajFWxIdERpSAOnOXlQjbzWvfRpXYHHkVESzmMdpsXKgtZjOyZhilhAzvWOxtdfadrWcVqXxmMvPDniwLrDdiAcMGrDZacHqJpNVhDilxeXAesIUgESBcHHrehIRSoUwpZsTKwkeGiyaOhGWwkUgGJWNLPjnBctGiyOkPosEoQalBpjwPIvsRuohwGIMLqpBLiEsuVUSBFLFVkJFxQJXnElYBOmuFdMWAvrCMLnWvpXqTETXfyIuGXHpbnAchuXvvFSdeZIzzflaRVIeoEzWUFobFbJyHFmPQuOttjcRZHJGbYOrbpgUAwcSlGCDQNPDQzCAcUKttJHKxQUxvxgfTPLLYaYPQzbKSJIkLWBgXkfkchpCApwbqKdHZSijAKmCczPMgoUeWMfchJvdHXKQTpXWwDIVDgspfdiNBZMfXdJrArWhDGVutdgjxCfOwcZFfWwiRZIqSYpuvHMpebUvrXiXMkmKTEMwEhXPYEPwdAKJOiWNSjSdhpJyERlrNHmbdlaaZJAfsLpvpaAgUNuLQEqLPkRbDVpuBnMBLMUTNiRhiRqQtpcZIosJCSNUoHnOFOREahjzJnaWphnSXJmlDuAjPegOKndmeALpMwHJJfWRwfgbeyWIBXErURHCldKuWFUfShPVsjSjXAxImZRRwCOXfLnOhGNIUKOOBnNCxeJpzYtQAYmSEFxWQDkJnesJEgPwhHAUrGNzOGEEKJvsTARURwlFqhFZXcTFnigSEUYtVzrTorlhlrlBENQbSqNAQWxSVGonsfqmnPzldigcweuWFIxpykxuTlClStplxIETeJejIclvbaCdrdZxnJPQTpKMuqRMfbGkbPiuXBHfiOCqEjgdnbqbbUGmuFDWZowudBNdPISgNECiGJTtHLAadbfnLTniqzLDRWukaBvrgSbcpuXHYtgpUgFdXPZnMNyelsYziyjUDJMOIBsChevBeaMbaUCiqpwsRxsDQQFaMualrgyhjIQnxpPaaAOVWjnPEZMTcbdFhBtOCAzzMtIDKLCSGyMNdqWLllERTFajvXvsfPSgndKbIwdsCGzLnuozFgjMtWgsKzuQJGWpxoJEZIQLeVUOhJikRjdlfrfQHlcgQwFNLkUomzAQImylYmPVQbAHGqkfsEzVynwfWfXCYATtmiEQxxKDfjljjbmuAKWEamWqLzKKLzkwKUyTEaeBxOvLvkNzmSamnsRptvQdbbrgUaSVdhUYPfOqtTtZybXacVICEVSmwMGjiUycHDGxciMSnIgMLjpqyHUIXYpELiQLFxsusYaVMvJVnVrLKpZwYVvUvJfBeoXuOpEgCDetLGmOlSrnVHWhyhSJKpeZYYEszKJlbBoGTfMXTOnJiyonpVxBlEQXCWmBZdqYTIYokXiurQPcTvDJaaUJgqQPVpUJbCxueUBSavlFKUisUroiLSCDldkqteyxiYrANfWTzXCZgKHxagVXLlpApbnBTgsQmiHMCUcqcXREvBWbHXLJhgKPhneAluutUpaXnjhvZGFyVgUNRCDgbZlZrClAuPSVRaoxqNsOgevzqPiqfYLdwcBoxgZRDfJiFsBbsCLiTLfvWLUKNDnnvRYfPJpeTPLIRDXNnjnwnEWUnOidCbmNKZmlDDuZrwvMcJsFrMgvqnXedoIhxrRTCHsmqUKCrIhVeuKJWDDTBtkhLlCnjDZtNkpcONwBsNvUPwNxguEiuNLezzYahycWmEMGvzbtcZoVOJoEMJxcxdVkTJbrbXxEizqOIDwADJmhMzLHKOCaIUilqWlBMNONCHYtxaRzEuqoIMvKThGqgwHMWXgEkgsLLnmZcuLxiuUTDhYZOgRCrDFnNqiDYNQKRBsmgyfTQAoKaaJofOXYVBAVXHqFuqWZznjnUAdNvQrZQofURswntAqjRVpNMbhGIdeUjSTQXCUNNPIqZNYUjryufcbxnBMITeegHGUEJBxNTBgONGpsdAKCdsVfmfhnAFYcXqUEJhgtgUhslmdgKhbFUNHkxDfJPYmTHMpdeChiuvxyInYdnjUdnuQbtegZrLAArsbWwvQUbUseAggIjlZfnWayPlyOWMDsSxNrKvfKzooOUwaAyTXuZoMBBNwPdCDxwmFfMKzfHbwDztcBdbwYCUulYWWjFNLmgBwRRcztJOdSoQIVjCvGbfYjmiSgkCYqeFchcFUAKxdjuKtJRPCQrxQBYfcNBYmFFtjXWEOTyOEBnXstKWasEKYpjOoMNXlANQGLhZEeYpIXLMnTiGEtzOutUVTLZGBGMKGfnqywNFQcpRUtojQvKOfjuekQswBQEVenhtnRpOUMcAyJGUBYiQzptvMvFsAriFkTeHGDiQIZkWJhCPiKCQWEcljscVCVZwCYinjzTiwZNJmtonSCfdWDassorXxhwMUTUJLLRRNObxZSwfNGGaoOAGmckqdjkybJclfoLJnHAKCUxwSzBJsDohQNUTtYnMjVocaPOLtiWMUNFQGPoaSXMrsaowyigNRTQExCfQtUUYVOtNgcCItPRJAYiwTPaarJvfvZzgedgEkodmpIUeCzeVwJZDufPKUYAChkYELmhLCcxtcAbkdGpuWsGhRYpljhqHvrFLAtPUQwwdvrOxVRMUyNaKClTclOFOOuaMnyIGeeJvbfDfSjbtBAFHGnfRvUnydEJcfOXwLIywBEfBhEXnJASRSvqWSifdjNNvByGWUUFvmHRNUFkgmbpuTNzroMHzWAjwABCkkSZkpoXKKBUrnjMAAZqCftEHHKVoDjoprNMaSybPMDHOAMSLVutIUjgMViklMBVkMeGVWWxPZgKGEQIZQRNYmcAAeemqvIEyaZoxcluOPGvUUhgMdCDQKrIFBoUrWsonBqIQUoCPzfMnHWvnYtwVaMjdOiMGguBirHVCXHGJDbjFAKOKCkcJBlxEiofIXvXgAsEVETTlKcWxBVQmQVMyIPkBftSIMnnRdgLuRuAZhQjfsSfXjSiVhKFXfdIYaaFhnPMfBPziKQTfmEPSCJpClwaxTHBDhSCMezlSRMkoxSUmIGZwFfTtOfEgLihUvmXWXzSnxOBoVicBcvAPyPkTVxMwwfhuMTxsrvVdulTqpzyZtuKzIodlwWgApQhnxPnZdJEqixpaZBFtCKblaITQQEeEoZUhYqgvaWzuHbzrMYjYWzePIeyvcTbSbfntwLrxpeGhVmMURTInvGGXSZQWOVSfZHQJzeyUJVEviLvexZywsIGOnzZVujsIqyKHfBaKYbZOjwuxCqIWLBOwINeMvqBKJpaBDIsPbiauwifSjWquMHZGuAMbZhAgscdRQslhbsdPbqVetNeFsPeUwUbZMqwmnPxJwvACEjXJBUmLXhMvTzdJpMwKgAHGFPpbroELSbxGNqALynCAXejNpkYcxHQyDlMBQSNEAnQkUsNYJrzXJVmaLphMxThoEGjDwKpEBcEcGURyudkFFvzTkqNZvvgglFxZXdplifrRPsXbDVCLipkaINwDwwCbQvejdFxEPMFPwnaqMnGIRzZuaOcKSlFDuhSwoiLrzldltckrYGblnWxLItlyNlNPeocLrZXyfKAOyhHlQMyXTKYlQqZIOwAnNuxNqZMQUMldBsOqWyNbMZuncBMlaVOuFSXrPzeYETwGXFvRfZHALcIyIMtlzaVEwiBTVbaqcSnUBwPadcBIyRnIPtUdnDTRXKwmzHuDDzgDNOxQcmxaSudyLEdmBzdXjgCCVJAIczlkMbldjXsEKrblSeMZURCTuopTkvMPLiHTdvAjqHLPEvCurVlLquszyqeIycEqTevLDqhcczCVzcQDguMzBSshRRUycTIBGLYoRIuDNyBYyvxGcAXLCPGnNtHRrmpcIOUnIuAuUufPJaiijaBuGaGMojfoWpBgWUbGkFwjfvdgFQEtRNBXtakubrIjzbxSNnPevgMhVHLEXuTnSbnRrDLAdriNlehzEJfdpFvMisZpOZEAbjboLICWowqnHfCWHIfvFujdUqLeIxovrUguXiIQNGGWNiZReyelfbhaFoYsxnVWDsLIDXAmQzUQzJuedIwvCCuovRuvVVhXycdBMlanYxlPgzUGvSIStwUtgwJfpwrrWTtRqXbFcuGXVBpSCOQOKQpnekLUROEVnyrotbXCYaDFRNKVvTzeUUadeKpYdwmwRrYIVjGEyMftoRByquMYPCtAuTneSSnawgyAuxdzPFREugvYqHNdFUguiqvgKcTqMXKMHEqerBGUUTDVAPqmOtmEPfdyaiLACitlszpUEUMIZfxuaQYrTdTmIndGWZIqqbTRzIkYQEXqNEKmmFUOkwlLkPpUtsTuqbClgpvsygFUidObacKgvwlwgDNPhcyCUjNvxNaDCKdYnYFnxWWEktGoPLAKdOLwhHIXCeigrZjGcqnCLcueBEuibTDzdKxAvtOVqITTrvbgVjjqKHyMVealqBIlQZBghkgKQSLmLXxMNdUlKZUcYYezltpEabfvSXOorvYpybUkhEBMhdgEPqpPHQHzqgsVYsHxUscTGaVbNBHIJDySnsNlcAlfGHmfulmBbfurAKmVcnBqCdkHwzZAAjYLszHEDTShOWYYVUKHncNubplKaKxcyqgYrjCCjPtQGvTwUZUAqxlVtJxpDaCRyWSMkejTAvMPeSjRtZjjZdiAbVJOIXNczLBLMMdnaOAGbOJpNhJVeEKNCJilvcFhIWhhCZCWYgeMfQDyyKTbttwGaTLhYbpnjHaYkTjYnJEunHtWiXrftjXmUwtzQAavyUfOdwVaEAWypeLbjJFvXSjuMkailKrrfzzEGERKIuXhTTFRSWnxFtxlmlBprfYtlirZYTQgggLSJeGGKDVMNTesfoarFPfuveNfjTfPtoztLcqGivgwUGYbOEKlKeSgZwtadrNjHGbaAJxFofkLdlwAEYkSNgMhhqnjGlOIyxIVCsXyrBnqNrbLpBZVTURXYWqmiXqgTBItZNSEPDqeWErdmQkdXvyMKHUuVmlbmXtZcQBOjbZTbYYAbYdioRnqOwYHygiLeBKSnibjmVyUSAngMoPJxEgIHEvMxVeUMSuWoAakUFmGYeaCiQQPolzdpIgRxcRZsfzUdqXVAsznQuzokmSSLroHqDFsNOtddQqQDypJyzGHVjRZOyIFWWQqMYDJaqJcgHpgtXkLkQPEmBjWnLyEeHXfOCdZGpLwRCZCnEDHhBvnjMfTpDrmAPnLBIDtLdnJdDYzSbNrPFtyXQyLTfrfqGCQDbVUYHINYfqhJHmCEYjztvVwCADxKwqIwOExRNxtkKAVLGzwmppXdGtGNcOcdvJGZTgfVvCmTvFTvmgRsgfoPKpUNrwXtgmMKQGJWnupANaoeZrMunwMzKcIvBWXWPgVAhoRVsJcvhrCyQXCZvZKAOeRQpDXHNtBmVqEKzenlFhuPgtcpBPwvDNFlwdCjOpNLMEUbdywlUaEsGIHoBoOrQHhrhYfySCnTlHnQblsAEsgiAroFWkFkoGVykkWNIDVSdKoXBlLQzebyvxymouObohZRAYmTypEdsyTbYJwkvwwdOukUkhSpmOsJnMxxFgkCgvBOmNiKKLEuQpKPUmZPWnZspsZaMcDZBjXGDqeRGLfYYMoZHlLiFguvVfeQuOkOoPxDFyNzBBMbnVCUhoGwLTPMEfMGBmCgtjOZqsUKgmlHjVgHbzvfTiXLtXhTZDdilWXMUzTjJufzJkhRnkSAEuHqsiNhfriYSnWOuISRukrwCUSrzqXmbnEGTnmCDuxgPpPhocltHvyFceJUGMwmiracengKZjlFDPltpMyMFNMbyoaALRFpogRQTBWaCRwlyhHGOCCnoZSlgiPbDiMmtZiVnnHgzqEMhMSstZhVLbCgIOiFJCxHeHYandMhkKoFDavjChVdDeLyurBuLFtewjzRVrxQpTYchJoNWFLOLDVbOGnFJtwLuWMdHSkAzsRiPlXmSdbmJSEMtCYgSWRbPfmqOWltZbPMZSTzcjWpQALNeASEyHiHUrGGWLPnkcjbqeKWStOATErAgiPQgMmIQogUiIcfwWWgXVclFyxyzPsRVJLyusyTzXDcnHdIGJmXmcbFhGDFbCZKXDLAbjFwVAWDgujuasolQwAfeKpmZVnvUJtXrNwRELFYgvrhInDuXpunVpaiugCNBmpktkfEmUpGRmYlHUcGNYYEfIPyXFDFIutgmfNACscmYxRfqGpZcMJiFvtXNFdPcnKgGOZVJMXeNaRDidHvBKkMMquejMZGnKUbEEXGtFVBjmDDtTOsEEAKORIqeixvZtpYkPlSnSuEIttXEtNRAPYXLZRIBpCNexCMyrbLUNsBhxROvvxiCZAxbONWCjifbhKSbNgECpZSaKUrakwmlDXGXDdNagBexrVhcQfQdNWceQzdNAhRnrAeVcIkVneDMIPQzvxihnGwZXLsppskhtEmjtjqODXezBiMSGQFyGMOAPyfqkmjEfYqBwnWWYkomIUpjDSdFuoPJhItBNXEQJqpvFYbhylcHNIGCwENFUnEnygDupsOrUgCGSGVZzRGchfxFbeDgnQaxHnxjrXcagRyFfZYCWbsYoDqruuIdpQIvFFKBTEPTSGtognsgtTWdYIWqweDoZbJDTlqlWyyaGjHykMqrpfRRdERyvywDjJCrJuSPVdmNPFEfNAizZOMRVfdjoylJowUBvtYkyGOQWReZSCHtzssXqXDUrHJWnbudfJAfQjYKZrZOCcZfotvgFOvwVhitGkvWetoBenObusNszhpsJksyBnrbKcFMqEJfgkDbscFNdeODfoAKyGlUoDNijKiBNyttIeZVFlXyGglLspxUKIffjOjVgNISyuQUIWkOYLsHenDYyeQxNBCESlMRWJyJGIzkeiFtbfakOIepLRybrDKHdVVesbgVKCdxkwYYfRIcWoeSHFmOrjpRlahYYboAxiivTVkAZytNuFoLRXHUiRnkgUALkHyUPsiaAXhROGDSCGAzmCxbjsnMAvfZUSeGkiwMPyCifZrKfXZcpUMRhtGfysDVfgGBaoqfDdUoPPkGKfThPBalidpYQDFqkyGJclLeCDAnQKEUQfQWZAdksuQFggdItJzSykZzHWQgcFWDUNZgaJWJymfMAdyBBlAqjATDJnhWyrOGwosDWkCSqtDUAMJnUumvrCOiSPAYjymZLzIFqxGiEFBwbAbFCMEvYqmMcdirGZzAUhFohJEtVdyKPlrOMokaElstlTAcKhoqlVUSNeAkksuSWzRinkBdoUudtGbksTHgHlTHDTzcgXYOdAhSYgdXgJqTKUOnnDHZxNVgPnpooaVwljCqCEhDzySTuamYUFxIEwnevNZsChJpEFrQwOgJtUBeonuUNDKGncxViJUiyiDZczDgcoDpOrHerjIFHGAFuOsFKZIYUAOljkzRSizCeMWvuSqYHOweliEPSlhPYWToFEWbdaTGbEfWBkuDWnWrrNyaWoJEwCDegWlnXbInCOSXsgYJJgtaLGUUgmtJPcIIlCNfldnOVZlmvmDODLEpyZhBoPokgqkfZNUOLjmgYsZkXUWloiNpXNbaGUFeJUpVIeimJWVzeWZYWqVcLGWdTeqNDmydGGhtoaGgZCcWXqPLqgsgzDBoJFldxwCqtqKdmQUjYRKxeRpEQdycpitozroxrXpWlRoEAtWvDdIgJepGBfClEKoNqrCaJlsEpdpxNPxwMNRSQOPNtGRvjABiFUOXAmgQaCZqLgpRWqJfretLafsIxOjuxqOLunHURXfZdbCHBjJPPpOwDhVPFxuIwjQYAElmmJWDUEcwBzFBMsxhaxZNyyBLotnjLpgYLTcEwqeoCLYKcSWoBleojBPOMThgHQFADKUIPbyNfJIiexQVsUdsPlACDfVqHLFQKIEFobZafnoOfEbJkmtDjycDpndkopuRMnWxNRGWEvaKgZoKuiFGmcopgDuApAUGElRTsmpYMuwICLpQXHDXMMBFtrrGrtVGzcXdlveJuxpEaCqZCYRkYameWaoOtotsLFyvdtKnMcwnIZjfIZfHgMSmlrABYglvfBFpAaRPXUtzEHyawOrvNrdjwGlJydfxYZAJfPvaWuiRaNcrLGByNbduzVJbKzUsgVcwrbnyNlmhHCOTneSgtcBaBHGEdaIGXzweNaSexsutQWNGhARRvKYzHHevrQwNgAILCHZqaqpuEuQLGcJDczRXFpHYIDNheGxWybmmsuahMPJOPBDJZFdQZrryGSjSMnElyTlAaFWaWXttyrAPJKFXMsxNssI \ No newline at end of file diff --git a/addition_malabr/modelserver/server.py b/addition_malabr/modelserver/server.py index d1d4f7090a5763..a8ef2bd4a2b827 100644 --- a/addition_malabr/modelserver/server.py +++ b/addition_malabr/modelserver/server.py @@ -1,69 +1,70 @@ from flask import Flask, request, jsonify import time +from threading import Lock import tensorflow as tf import torch from transformers import pipeline +import os app = Flask(__name__) # Global variable for QA pipeline. qa_pipeline = None +qa_pipeline_lock = Lock() @app.route('/load_model_bert', methods=['POST']) def load_model_bert(): - global qa_pipeline - try: - qa_pipeline = pipeline( - "question-answering", - model="csarron/mobilebert-uncased-squad-v2", - tokenizer="csarron/mobilebert-uncased-squad-v2" - ) - app.logger.info("Model loaded successfully.") - return jsonify({"status": "Model loaded successfully."}) - except Exception as e: - app.logger.error("Failed to load model", exc_info=True) - return jsonify({"error": f"Failed to load model: {str(e)}"}), 500 + with qa_pipeline_lock: + global qa_pipeline + try: + qa_pipeline = pipeline( + "question-answering", + model="csarron/mobilebert-uncased-squad-v2", + tokenizer="csarron/mobilebert-uncased-squad-v2" + ) + app.logger.info("Model loaded successfully.") + return jsonify({"status": "Model loaded successfully."}) + except Exception as e: + app.logger.error("Failed to load model", exc_info=True) + return jsonify({"error": f"Failed to load model: {str(e)}"}), 500 @app.route('/infer_single_bert', methods=['POST']) def infer_single_bert(): - global qa_pipeline - if qa_pipeline is None: - return jsonify({"error": "Model not loaded. Please call /load_model_bert first."}), 400 - data = request.get_json() - if not data or 'question' not in data or 'context' not in data: - return jsonify({"error": "Payload must contain 'question' and 'context' fields."}), 400 - try: - prediction = qa_pipeline({ - 'question': data['question'], - 'context': data['context'] - }) - return jsonify(prediction) - except Exception as e: - app.logger.error("Inference error", exc_info=True) - return jsonify({"error": f"Inference error: {str(e)}"}), 500 + with qa_pipeline_lock: + global qa_pipeline + if qa_pipeline is None: + return jsonify({"error": "Model not loaded. Please call /load_model_bert first."}), 400 + data = request.get_json() + if not data or 'question' not in data or 'context' not in data: + return jsonify({"error": "Payload must contain 'question' and 'context' fields."}), 400 + try: + prediction = qa_pipeline(question=data['question'], context=data['context']) + return jsonify(prediction) + except Exception as e: + app.logger.error("Inference error", exc_info=True) + return jsonify({"error": f"Inference error: {str(e)}"}), 500 @app.route('/infer_batch_bert', methods=['POST']) def infer_batch_bert(): - global qa_pipeline - if qa_pipeline is None: - return jsonify({"error": "Model not loaded. Please call /load_model_bert first."}), 400 - data = request.get_json() - if not data or not isinstance(data, list): - return jsonify({"error": "Payload must be an array of objects with 'question' and 'context' fields."}), 400 - results = [] - for idx, item in enumerate(data): - if 'question' not in item or 'context' not in item: - results.append({"error": f"Item at index {idx} is missing 'question' or 'context'."}) - else: - try: - prediction = qa_pipeline({ - 'question': item['question'], - 'context': item['context'] - }) - results.append(prediction) - except Exception as e: - results.append({"error": f"Inference error at index {idx}: {str(e)}"}) - return jsonify(results) + with qa_pipeline_lock: + global qa_pipeline + if qa_pipeline is None: + return jsonify({"error": "Model not loaded. Please call /load_model_bert first."}), 400 + data = request.get_json() + if not data or not isinstance(data, list): + return jsonify({"error": "Payload must be an array of objects with 'question' and 'context' fields."}), 400 + results = [] + for idx, item in enumerate(data): + if 'question' not in item or 'context' not in item: + results.append({"error": f"Item at index {idx} is missing 'question' or 'context'."}) + else: + try: + prediction = qa_pipeline(question=item['question'], context=item['context']) + results.append(prediction) + except Exception as e: + results.append({"error": f"Inference error at index {idx}: {str(e)}"}) + return jsonify(results) + @app.route('/train_model', methods=['POST']) def train_model(): try: @@ -112,4 +113,5 @@ def analyze(): return jsonify({"message": "OP server is working"}) if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) + debug = os.getenv("FLASK_DEBUG", "0") == "1" + app.run(host='0.0.0.0', port=5000, debug=debug) diff --git a/addition_malabr/modelserver_uds/app/router.py b/addition_malabr/modelserver_uds/app/router.py index 72377f55530082..7c72f37e9d19b5 100644 --- a/addition_malabr/modelserver_uds/app/router.py +++ b/addition_malabr/modelserver_uds/app/router.py @@ -20,7 +20,7 @@ def route(conn: socket.socket, payload: Payload): handler = ROUTES.get(label) if handler: - logger.debug(label) + # logger.debug(label) handler(conn, payload) else: logger.error(f"Unknown label: {label}") diff --git a/addition_malabr/modelserver_uds/app/socket_server_v2.py b/addition_malabr/modelserver_uds/app/socket_server_v2.py index 1d7d330f60b380..67a50b993a6cd0 100644 --- a/addition_malabr/modelserver_uds/app/socket_server_v2.py +++ b/addition_malabr/modelserver_uds/app/socket_server_v2.py @@ -1,8 +1,7 @@ import socket -import select -import threading import struct import os +import threading from concurrent.futures import ThreadPoolExecutor from types_defs import Payload @@ -12,21 +11,23 @@ logger = get_logger(__name__) +MAX_HEADER = 8 * 1024 + class Server: - def __init__(self, sock_path: str, router: Router, max_workers=5): + def __init__(self, sock_path: str, router: Router, max_workers=10): self.sock_path = sock_path self.router = router self.max_workers = max_workers self.server_socket = None - self.epoll = None - self.connections = {} self.thread_pool = ThreadPoolExecutor(max_workers=self.max_workers) def start(self): self._setup_socket() print(f"[SERVER] Listening on {self.sock_path} with {self.max_workers} workers.") try: - self._event_loop() + while True: + conn, _ = self.server_socket.accept() + self.thread_pool.submit(self._handle_request, conn) except KeyboardInterrupt: print("\n[SERVER] Shutdown signal received.") finally: @@ -34,91 +35,62 @@ def start(self): def _setup_socket(self): if os.path.exists(self.sock_path): - os.remove(self.sock_path) - + os.remove(self.sock_path) + self.server_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - self.server_socket.setblocking(False) self.server_socket.bind(self.sock_path) self.server_socket.listen(50) - self.epoll = select.epoll() - self.epoll.register(self.server_socket.fileno(), select.EPOLLIN) - - def _event_loop(self): - while True: - events = self.epoll.poll(1) - for fileno, event in events: - if fileno == self.server_socket.fileno(): - self._accept_connection() - elif event & select.EPOLLIN: - client_socket = self.connections.get(fileno) - if client_socket: - self.epoll.unregister(fileno) - del self.connections[fileno] - self.thread_pool.submit(self._worker_task, self.router, client_socket) - - - def _accept_connection(self): - conn, _ = self.server_socket.accept() - conn.setblocking(False) - self.epoll.register(conn.fileno(), select.EPOLLIN) - self.connections[conn.fileno()] = conn - - def recv_exact(self, conn: socket.socket, n: int): - """Read exactly n bytes from the socket.""" - buf = b"" - while len(buf) < n: - chunk = conn.recv(n - len(buf)) - if not chunk: - raise ConnectionError("Socket closed unexpectedly") - buf += chunk - return buf - - def _worker_task(self, router: Router, conn: socket.socket): - """Worker task now reads the header and routes with the payload.""" + + def _handle_request(self, conn: socket.socket): try: - conn.setblocking(True) - - # Step 1: Read 4-byte header length - raw_len = self.recv_exact(conn, 4) + raw_len = self._recv_exact(conn, 4) header_len = struct.unpack("!I", raw_len)[0] - # Step 2: Read header - header_bytes = self.recv_exact(conn, header_len) + header_bytes = self._recv_exact(conn, header_len) header_str = header_bytes.decode("utf-8") fb_id, label, payload_size_str = header_str.split(",") payload_size = int(payload_size_str) - logger.debug(f"[WORK_IDENTIFIER:{threading.get_ident()}] Header received: fb_id={fb_id}, label={label}, payload_size={payload_size}") + payload_bytes = self._recv_exact(conn, payload_size) - # Step 3: Read payload - payload_bytes = self.recv_exact(conn, payload_size) - - # Step 4: Format the payload payload: Payload = { "label": label, "payload_bytes": payload_bytes, "fb_id": fb_id, - "payload_size": payload_size + "payload_size": payload_size, } - - handler = router.get_handler(label) + + handler = self.router.get_handler(label) if not handler: - logger.error(f"[WORKER:{threading.get_ident()}] No handler for label {label}") respond(conn, "error", f"Unknown label: {label}") return - + handler(conn, payload) - except Exception as e: - print(f"[WORK_IDENTIFIER:{threading.get_ident()}] Error during task execution: {e}") + logger.error(f"[Worker:{threading.get_ident()}] Error: {e}") + try: + respond(conn, "error", str(e)) + except Exception: + pass finally: conn.close() + def _recv_exact(self, conn: socket.socket, n: int) -> bytes: + buf = b"" + while len(buf) < n: + chunk = conn.recv(n - len(buf)) + if not chunk: + raise ConnectionError("Socket closed unexpectedly") + buf += chunk + return buf + def _shutdown(self): - os.remove(self.sock_path) + try: + os.remove(self.sock_path) + except FileNotFoundError: + pass self.thread_pool.shutdown(wait=True) - self.epoll.close() self.server_socket.close() - print("[SERVER] Shutdown complete.") \ No newline at end of file + print("[SERVER] Shutdown complete.") diff --git a/addition_malabr/modelserver_uds/app/types_defs.py b/addition_malabr/modelserver_uds/app/types_defs.py index 2cd226008e8f03..6c3515f367cbd9 100644 --- a/addition_malabr/modelserver_uds/app/types_defs.py +++ b/addition_malabr/modelserver_uds/app/types_defs.py @@ -1,19 +1,21 @@ import socket from typing import Literal, TypedDict, Callable, Dict +LabelType = Literal[ + "LABEL_READ_DATA", + "LABEL_SEND_DATA", + "LABEL_LOAD_MODEL_BERT", + "LABEL_INFER_MODEL_BERT" +] + class Payload(TypedDict): - label: Literal[ - 'LABEL_READ_DATA', - 'LABEL_SEND_DATA', - 'LABEL_LOAD_MODEL_BERT', - 'LABEL_INFER_MODEL_BERT' - ] + label: LabelType payload_bytes: bytes payload_size: int fb_id: str - + HandlerType = Callable[[socket.socket, Payload], None] +RoutesType = Dict[LabelType, HandlerType] -RoutesType = Dict[Payload["label"], HandlerType] +RespondStatus = Literal["ok", "error"] -RespondStatus = Literal["ok", "error"] diff --git a/addition_malabr/read_server_uds_extension/popup.html b/addition_malabr/read_server_uds_extension/popup.html index 85055390b2baeb..ce4dce47a8c2c4 100644 --- a/addition_malabr/read_server_uds_extension/popup.html +++ b/addition_malabr/read_server_uds_extension/popup.html @@ -54,6 +54,15 @@

Single Inference Bert

+
+
+

Benchmark Single Inference Bert

+ +

+

+
+
+ diff --git a/addition_malabr/read_server_uds_extension/popup.js b/addition_malabr/read_server_uds_extension/popup.js index 4974eb1e261b3b..ece685f2020e08 100644 --- a/addition_malabr/read_server_uds_extension/popup.js +++ b/addition_malabr/read_server_uds_extension/popup.js @@ -1,10 +1,10 @@ import { flatbuffers } from './flatbuffers.js'; import QAService from './qa_schema_generated.js'; -console.log('flatbuffers:', flatbuffers); -console.log('QAService:', QAService); -console.log('QAService.Payloads:', QAService.Payloads); -console.log('QAService.Payloads.QARequest:', QAService.Payloads?.QARequest); +// console.log('flatbuffers:', flatbuffers); +// console.log('QAService:', QAService); +// console.log('QAService.Payloads:', QAService.Payloads); +// console.log('QAService.Payloads.QARequest:', QAService.Payloads?.QARequest); // READ DATA const readDataBtnEle = document.getElementById('readDataBtn'); @@ -189,46 +189,20 @@ singleBertInferBtnEle.addEventListener('click', () => { return; } - // Create FlatBuffer payload - // console.log("Bert Infer Paylod", question, context); const flatbufferPayload = createQARequestBuffer(question, context); - // console.log("Flatbuffer Payload", flatbufferPayload); - // Normal json to uint8array - // const jsonPayload = JSON.stringify({ question, context }); - // const encoder = new TextEncoder(); - // const uint8ArrayPayload = encoder.encode(jsonPayload); - - // console.log("Bert Infer Paylod", jsonPayload); - - chrome.readServerUds.inferSingleBERT({ payload: flatbufferPayload, fb_id: "QASV"}, (response) => { + chrome.readServerUds.inferSingleBERT({ payload: flatbufferPayload, fb_id: "QASV" }, (response) => { if (chrome.runtime.lastError) { bertInputErrorEle.textContent = 'Native Error: ' + chrome.runtime.lastError.message; bertInputErrorEle.classList.add('error'); return; } - // flatbuffers - - // Expect binary response — decode with FlatBuffers instead of JSON.parse - // const bytes = new Uint8Array(response); - // const buf = new flatbuffers.ByteBuffer(bytes); - // const root = QAService.Payloads.Root.getRootAsRoot(buf); - - // if (root.payloadType() === QAService.Payloads.AnyPayload.QAResponse) { - // const qaResp = root.payload(new QAService.Payloads.QAResponse()); - // singleBertInferResponseEle.textContent = qaResp.answer(); - // } else { - // bertInputErrorEle.textContent = 'Unexpected payload type in response.'; - // bertInputErrorEle.classList.add('error'); - // } - - // Normal JSON on response = JSON.parse(response) if (response.status == "ok") { singleBertInferResponseEle.textContent = response.message; - } else if(response.status == "error") { + } else if (response.status == "error") { singleBertInferResponseEle.textContent = response.message; bertInputErrorEle.classList.add('error'); } else { @@ -237,3 +211,204 @@ singleBertInferBtnEle.addEventListener('click', () => { } }); }); + +function inferSingleBERTAsync(args) { + return new Promise((resolve, reject) => { + try { + chrome.readServerUds.inferSingleBERT(args, (result) => { + resolve(result); + }); + } catch (err) { + reject(err); + } + }); +} + +// SINGLE INFERENCE BENCHMARK BERT +const singleBertInferBenchmarkBtnEle = document.getElementById('singleBertBenchmarkBtn'); +const singleBertInferBenchmarkIterationEle = document.getElementById('singleBertInferBenchmarkIteration'); +const singleBertInferBenchmarkIterationTimeEle = document.getElementById('singleBertInferBenchmarkIterationTime'); +const NO_OF_INTERATION = 1000 +const NO_OF_WARMUP_INTERATION = 100 + +singleBertInferBenchmarkBtnEle.addEventListener('click', async () => { + // Define fixed question and context + const question = "when was iit kgp founded?"; + const context = ` +The Indian Institute of Technology Kharagpur (IIT Kharagpur or IIT-KGP) is a public institute of technology, research university, and autonomous institute established by the Government of India in Kharagpur, West Bengal. Founded in 1951, the institute is the first of the IITs to be established and is recognised as an Institute of National Importance. In 2019 it was awarded the status of Institute of Eminence by the Government of India.[4] + +The institute was initially established to train engineers after India attained independence in 1947. However, over the years, the institute's academic capabilities diversified with offerings in management, law, architecture, humanities, medicine, etc. The institute has an 8.7-square-kilometre (2,100-acre) campus and has about 22,000 residents. + +Foundation + +Nalini Ranjan Sarkar, who recommended the set up of IIT's, along the lines of MIT +In 1946, a committee was set up by Sir Jogendra Singh, Member of the Viceroy's executive council, to consider the creation of higher technical institutions for the industrial development of India post World War II. This was followed by the creation of a 22-member committee headed by Nalini Ranjan Sarkar. In its interim report, the Sarkar Committee recommended the establishment of higher technical institutions in India, along the lines of the Massachusetts Institute of Technology and consulting from the University of Illinois at Urbana Champaign along with affiliated secondary institutions. The report urged that work should start with the speedy establishment of major institutions in the four-quarters of the country with the ones in the east and the west to be set up immediately.[6] + + +Jawaharlal Nehru laying the foundation stone in 1951 +IIT Kharagpur Main Gate +IIT Kharagpur Main Entrance +IIT Kharagpur Main Entrance Gate +IIT Kharagpur Main Entrance Gate (Puri Gate) +On the grounds that West Bengal had the highest concentration of industries at the time, Bidhan Chandra Roy, the Chief Minister of West Bengal, persuaded Jawaharlal Nehru (India's first prime minister) to establish the first institute in West Bengal. The first Indian Institute of Technology was thus established in May 1950 as the Eastern Higher Technical Institute.[7] It was located in Esplanade East, Calcutta, and in September 1950 shifted to its permanent campus at Hijli, Kharagpur 120 kilometres (75 mi) south-west of Kolkata (formerly called Calcutta). Hijli had been used as a detention camp during the period of British rule in India, where Indian independence activists were imprisoned.[8] + +IIT Kharagpur is the 4th oldest technical institute in the state after IIEST, Shibpur (established as B.E. College in 1856), Jadavpur University (established as the Bengal Technical Institute in 1906) and Rajabazar Science College (established as Calcutta University campus for Science and Technology in 1914). When the first session started in August 1951, there were 224 students and 42 teachers in the ten departments of the institute. The classrooms, laboratories and the administrative office were housed in the historic building of the Hijli Detention Camp (now known as Shaheed Bhawan), where political revolutionaries were imprisoned during the period of British colonial rule.[9] The office building had served as the headquarters of the Bomber Command of the U.S. 20th Air Force during World War II. + + +IIT Kharagpur main building +Early developments + +The Hijli Detention Camp (photographed in 1951) served as IIT Kharagpur's first academic building +The name "Indian Institute of Technology" was adopted before the formal inauguration of the institute on 18 August 1951 by Maulana Abul Kalam Azad.[10] On 18 May 1956, a Bill (Bill no 36 of 1956)[11] was introduced in Lok Sabha to declare the institution known as the Indian Institute of Technology Kharagpur to be an institution of national importance and to provide for its incorporation and matters connected therewith. The motto of the institute, योगः कर्मसु कौशलम् is taken from the Bhagavad Gita, Chapter 2, Verse 50, and it has been translated by Sri Aurobindo as "Excellence in action is Yoga".[5] On 15 September 1956, the Indian Institute of Technology (Kharagpur) Act, 195 of Parliament received the assent of the President.[12] Prime Minister Nehru, in the first convocation address of IIT Kharagpur, said:[13] + +Here in the place of that Hijli Detention Camp stands the fine monument of India, representing India's urges, India's future in the making. This picture seems to me symbolical of the changes that are coming to India. + + +The main building of the institute during construction (1955) + +Nalanda Complex, 2018 +The Srinivasa Ramanujan Complex was incorporated as another academic complex of the institute with Takshashila starting operation in 2002, Vikramshila in 2003, and Nalanda in 2012. The erstwhile Hijli Detention camp building, subsequently renamed as the Hijli Saheed Bhavan, hosts the Nehru Museum of Science & Technology and is an imposing building bearing resemblance to the Byzantine style of architecture.[14] + +Nehru Museum + `; + + const flatbufferPayload = createQARequestBuffer(question, context); + + // await benchmarkWithSequential({ payload: flatbufferPayload, fb_id: "QASV" }, 50, 5); + // await benchmarkBurst({ payload: flatbufferPayload, fb_id: "QASV" }, 50, 5); + await benchmarkWithConcurrency({ payload: flatbufferPayload, fb_id: "QASV" }, 50, 10, 5); +}); + +async function benchmarkWithConcurrency(payload, iterations, poolSize, warmup = 10) { + // Warmup calls (not measured) + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + let completed = 0; + let inFlight = 0; + const latencies = []; + + return new Promise((resolve) => { + function launchNext() { + // stop condition: all iterations launched and completed + if (completed >= iterations && inFlight === 0) { + // Compute stats + latencies.sort((a, b) => a - b); + const avg = latencies.reduce((a, b) => a + b, 0) / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + const p99 = latencies[Math.floor(latencies.length * 0.99)]; + + console.log(`Benchmark over ${iterations} iterations (concurrency=${poolSize}):`); + console.log(`Avg: ${avg.toFixed(2)} ms, Median: ${median.toFixed(2)} ms, P90: ${p90.toFixed(2)} ms, P99: ${p99.toFixed(2)} ms`); + + const result = `Benchmark (N=${iterations}, concurrency=${poolSize}):\n` + + `Avg: ${avg.toFixed(2)} ms\n` + + `Median: ${median.toFixed(2)} ms\n` + + `P90: ${p90.toFixed(2)} ms\n` + + `P99: ${p99.toFixed(2)} ms`; + + singleBertInferBenchmarkIterationEle.textContent = "Iteration: " + iterations; + singleBertInferBenchmarkIterationTimeEle.textContent = result; + alert(result); + + resolve(latencies); + return; + } + + if (completed >= iterations) { + return; // no more work to launch + } + + inFlight++; + const start = performance.now(); + + inferSingleBERTAsync(payload) + .then(() => { + latencies.push(performance.now() - start); + }) + .finally(() => { + inFlight--; + completed++; + launchNext(); // launch the next request + }); + } + + // Kick off initial pool + for (let i = 0; i < poolSize && i < iterations; i++) { + launchNext(); + } + }); +} + +async function benchmarkWithSequential(payload, iterations, warmup = 10) { + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + // Measurement: run a fixed number of iterations. + let latencies = []; + + for (let i = 0; i < iterations; i++) { + const startTime = performance.now(); + await inferSingleBERTAsync(payload); + const endTime = performance.now(); + latencies.push(endTime - startTime); + } + + // Compute statistics. + latencies.sort((a, b) => a - b); + const sum = latencies.reduce((acc, cur) => acc + cur, 0); + const avg = sum / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + + console.log("Benchmark results HTTP:"); + console.log(`Average latency: ${avg.toFixed(2)} ms`); + console.log(`Median latency: ${median.toFixed(2)} ms`); + console.log(`90th percentile latency: ${p90.toFixed(2)} ms`); + const result = `Benchmark over ${iterations} iterations:\nAverage: ${avg.toFixed(2)} ms\nMedian: ${median.toFixed(2)} ms\n90th Percentile: ${p90.toFixed(2)} ms` + alert(result); +} + +async function benchmarkBurst(payload, iterations, warmup = 10) { + // Warmup (not measured) + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + // Launch all requests in parallel + const startTimes = new Array(iterations); + const promises = []; + + for (let i = 0; i < iterations; i++) { + startTimes[i] = performance.now(); + promises.push( + inferSingleBERTAsync(payload) + .then(() => performance.now() - startTimes[i]) + ); + } + + const latencies = await Promise.all(promises); + + // Stats + latencies.sort((a, b) => a - b); + const avg = latencies.reduce((a, b) => a + b, 0) / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + const p99 = latencies[Math.floor(latencies.length * 0.99)]; + + console.log(`Burst benchmark over ${iterations} parallel requests:`); + console.log(`Avg: ${avg.toFixed(2)} ms, Median: ${median.toFixed(2)} ms, P90: ${p90.toFixed(2)} ms, P99: ${p99.toFixed(2)} ms`); + + const result = `Burst Benchmark (N=${iterations}):\n` + + `Avg: ${avg.toFixed(2)} ms\n` + + `Median: ${median.toFixed(2)} ms\n` + + `P90: ${p90.toFixed(2)} ms\n` + + `P99: ${p99.toFixed(2)} ms`; + + alert(result); + + return latencies; +} \ No newline at end of file diff --git a/addition_malabr/reading server extension/popup.html b/addition_malabr/reading server extension/popup.html index 544de0bbf585f6..1f0e6cbeec8f54 100644 --- a/addition_malabr/reading server extension/popup.html +++ b/addition_malabr/reading server extension/popup.html @@ -57,8 +57,8 @@

MALABR - MobileBERT QA

Single Inference

- - + + @@ -69,6 +69,7 @@

Batch Inference

Benchmark Inference

+

Training

diff --git a/addition_malabr/reading server extension/popup.js b/addition_malabr/reading server extension/popup.js index eaa315afb2bcc4..41f33a69aa851b 100644 --- a/addition_malabr/reading server extension/popup.js +++ b/addition_malabr/reading server extension/popup.js @@ -4,14 +4,15 @@ document.addEventListener('DOMContentLoaded', function () { const inferBatchButton = document.getElementById('inferBatchButton'); const benchmarkInferenceButton = document.getElementById('benchmarkInferenceButton'); const trainModelButton = document.getElementById('trainModel'); - + const benchmarkInferenceResultEle = document.getElementById('benchmarkInferenceResult'); + // Inputs for single inference. const questionInput = document.getElementById('questionInput'); const contextInput = document.getElementById('contextInput'); - + // Input for batch inference (expects a JSON array). const batchInput = document.getElementById('batchInput'); - + // Load MobileBERT Model. if (loadModelBERTButton) { loadModelBERTButton.addEventListener('click', () => { @@ -34,7 +35,7 @@ document.addEventListener('DOMContentLoaded', function () { } else { console.error("Button with ID 'loadModelBERT' not found in DOM."); } - + // Single Inference. if (inferSingleButton && questionInput && contextInput) { inferSingleButton.addEventListener('click', () => { @@ -66,7 +67,7 @@ document.addEventListener('DOMContentLoaded', function () { } else { console.error("Single inference elements not found in DOM."); } - + // Batch Inference. if (inferBatchButton && batchInput) { inferBatchButton.addEventListener('click', () => { @@ -93,52 +94,207 @@ document.addEventListener('DOMContentLoaded', function () { } else { console.error("Batch inference elements not found in DOM."); } - + + function inferSingleBERTAsync(args) { + return new Promise((resolve, reject) => { + try { + chrome.readServer.inferSingleBERT(args, (result) => { + resolve(result); + }); + } catch (err) { + reject(err); + } + }); + } + + // Benchmark Inference. if (benchmarkInferenceButton) { benchmarkInferenceButton.addEventListener('click', async () => { + const NO_OF_INTERATION = 1000 + const NO_OF_WARMUP_INTERATION = 100 + // Define fixed question and context - const question = "What day was the game played on?"; - const context = "The game was played on February 7, 2016 at Levi's Stadium in the San Francisco Bay Area at Santa Clara, California."; - const payload = JSON.stringify({ question, context }); - - for (let i = 0; i < 100; i++) { - await new Promise(resolve => { - chrome.readServer.inferSingleBERT(payload, () => resolve()); - }); - } - - // Measurement: run a fixed number of iterations. - const iterations = 1000; - let latencies = []; - - for (let i = 0; i < iterations; i++) { - const startTime = performance.now(); - await new Promise(resolve => { - chrome.readServer.inferSingleBERT(payload, () => resolve()); - }); - const endTime = performance.now(); - latencies.push(endTime - startTime); - } - - // Compute statistics. - latencies.sort((a, b) => a - b); - const sum = latencies.reduce((acc, cur) => acc + cur, 0); - const avg = sum / latencies.length; - const median = latencies[Math.floor(latencies.length / 2)]; - const p90 = latencies[Math.floor(latencies.length * 0.9)]; - - console.log("Benchmark results:"); - console.log(`Average latency: ${avg.toFixed(2)} ms`); - console.log(`Median latency: ${median.toFixed(2)} ms`); - console.log(`90th percentile latency: ${p90.toFixed(2)} ms`); + const question = "when was iit kgp founded?"; + const context = ` +The Indian Institute of Technology Kharagpur (IIT Kharagpur or IIT-KGP) is a public institute of technology, research university, and autonomous institute established by the Government of India in Kharagpur, West Bengal. Founded in 1951, the institute is the first of the IITs to be established and is recognised as an Institute of National Importance. In 2019 it was awarded the status of Institute of Eminence by the Government of India.[4] + +The institute was initially established to train engineers after India attained independence in 1947. However, over the years, the institute's academic capabilities diversified with offerings in management, law, architecture, humanities, medicine, etc. The institute has an 8.7-square-kilometre (2,100-acre) campus and has about 22,000 residents. - alert(`Benchmark over ${iterations} iterations:\nAverage: ${avg.toFixed(2)} ms\nMedian: ${median.toFixed(2)} ms\n90th Percentile: ${p90.toFixed(2)} ms`); +Foundation + +Nalini Ranjan Sarkar, who recommended the set up of IIT's, along the lines of MIT +In 1946, a committee was set up by Sir Jogendra Singh, Member of the Viceroy's executive council, to consider the creation of higher technical institutions for the industrial development of India post World War II. This was followed by the creation of a 22-member committee headed by Nalini Ranjan Sarkar. In its interim report, the Sarkar Committee recommended the establishment of higher technical institutions in India, along the lines of the Massachusetts Institute of Technology and consulting from the University of Illinois at Urbana Champaign along with affiliated secondary institutions. The report urged that work should start with the speedy establishment of major institutions in the four-quarters of the country with the ones in the east and the west to be set up immediately.[6] + + +Jawaharlal Nehru laying the foundation stone in 1951 +IIT Kharagpur Main Gate +IIT Kharagpur Main Entrance +IIT Kharagpur Main Entrance Gate +IIT Kharagpur Main Entrance Gate (Puri Gate) +On the grounds that West Bengal had the highest concentration of industries at the time, Bidhan Chandra Roy, the Chief Minister of West Bengal, persuaded Jawaharlal Nehru (India's first prime minister) to establish the first institute in West Bengal. The first Indian Institute of Technology was thus established in May 1950 as the Eastern Higher Technical Institute.[7] It was located in Esplanade East, Calcutta, and in September 1950 shifted to its permanent campus at Hijli, Kharagpur 120 kilometres (75 mi) south-west of Kolkata (formerly called Calcutta). Hijli had been used as a detention camp during the period of British rule in India, where Indian independence activists were imprisoned.[8] + +IIT Kharagpur is the 4th oldest technical institute in the state after IIEST, Shibpur (established as B.E. College in 1856), Jadavpur University (established as the Bengal Technical Institute in 1906) and Rajabazar Science College (established as Calcutta University campus for Science and Technology in 1914). When the first session started in August 1951, there were 224 students and 42 teachers in the ten departments of the institute. The classrooms, laboratories and the administrative office were housed in the historic building of the Hijli Detention Camp (now known as Shaheed Bhawan), where political revolutionaries were imprisoned during the period of British colonial rule.[9] The office building had served as the headquarters of the Bomber Command of the U.S. 20th Air Force during World War II. + + +IIT Kharagpur main building +Early developments + +The Hijli Detention Camp (photographed in 1951) served as IIT Kharagpur's first academic building +The name "Indian Institute of Technology" was adopted before the formal inauguration of the institute on 18 August 1951 by Maulana Abul Kalam Azad.[10] On 18 May 1956, a Bill (Bill no 36 of 1956)[11] was introduced in Lok Sabha to declare the institution known as the Indian Institute of Technology Kharagpur to be an institution of national importance and to provide for its incorporation and matters connected therewith. The motto of the institute, योगः कर्मसु कौशलम् is taken from the Bhagavad Gita, Chapter 2, Verse 50, and it has been translated by Sri Aurobindo as "Excellence in action is Yoga".[5] On 15 September 1956, the Indian Institute of Technology (Kharagpur) Act, 195 of Parliament received the assent of the President.[12] Prime Minister Nehru, in the first convocation address of IIT Kharagpur, said:[13] + +Here in the place of that Hijli Detention Camp stands the fine monument of India, representing India's urges, India's future in the making. This picture seems to me symbolical of the changes that are coming to India. + + +The main building of the institute during construction (1955) + +Nalanda Complex, 2018 +The Srinivasa Ramanujan Complex was incorporated as another academic complex of the institute with Takshashila starting operation in 2002, Vikramshila in 2003, and Nalanda in 2012. The erstwhile Hijli Detention camp building, subsequently renamed as the Hijli Saheed Bhavan, hosts the Nehru Museum of Science & Technology and is an imposing building bearing resemblance to the Byzantine style of architecture.[14] + +Nehru Museum + `; + + const payload = JSON.stringify({ question, context }); + // await benchmarkWithSequential(payload, 50, 5); + // await benchmarkBurst(payload, 50, 5); + await benchmarkWithConcurrency(payload, 50, 10, 2); + }); } else { console.error("Button with ID 'benchmarkInferenceButton' not found in DOM."); } - + + async function benchmarkWithConcurrency(payload, iterations, poolSize, warmup = 10) { + // Warmup calls (not measured) + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + let completed = 0; + let inFlight = 0; + const latencies = []; + + return new Promise((resolve) => { + function launchNext() { + // stop condition: all iterations launched and completed + if (completed >= iterations && inFlight === 0) { + // Compute stats + latencies.sort((a, b) => a - b); + const avg = latencies.reduce((a, b) => a + b, 0) / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + const p99 = latencies[Math.floor(latencies.length * 0.99)]; + + console.log(`Benchmark over ${iterations} iterations (concurrency=${poolSize}):`); + console.log(`Avg: ${avg.toFixed(2)} ms, Median: ${median.toFixed(2)} ms, P90: ${p90.toFixed(2)} ms, P99: ${p99.toFixed(2)} ms`); + + const result = `Benchmark (N=${iterations}, concurrency=${poolSize}):\n` + + `Avg: ${avg.toFixed(2)} ms\n` + + `Median: ${median.toFixed(2)} ms\n` + + `P90: ${p90.toFixed(2)} ms\n` + + `P99: ${p99.toFixed(2)} ms`; + + alert(result); + + resolve(latencies); + return; + } + + if (completed >= iterations) { + return; // no more work to launch + } + + inFlight++; + const start = performance.now(); + + inferSingleBERTAsync(payload) + .then(() => { + latencies.push(performance.now() - start); + }) + .finally(() => { + inFlight--; + completed++; + launchNext(); // launch the next request + }); + } + + // Kick off initial pool + for (let i = 0; i < poolSize && i < iterations; i++) { + launchNext(); + } + }); + } + + async function benchmarkWithSequential(payload, iterations, warmup = 10) { + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + // Measurement: run a fixed number of iterations. + let latencies = []; + + for (let i = 0; i < iterations; i++) { + const startTime = performance.now(); + await inferSingleBERTAsync(payload); + const endTime = performance.now(); + latencies.push(endTime - startTime); + } + + // Compute statistics. + latencies.sort((a, b) => a - b); + const sum = latencies.reduce((acc, cur) => acc + cur, 0); + const avg = sum / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + + console.log("Benchmark results HTTP:"); + console.log(`Average latency: ${avg.toFixed(2)} ms`); + console.log(`Median latency: ${median.toFixed(2)} ms`); + console.log(`90th percentile latency: ${p90.toFixed(2)} ms`); + alert(result); + } + + async function benchmarkBurst(payload, iterations, warmup = 10) { + // Warmup (not measured) + for (let i = 0; i < warmup; i++) { + await inferSingleBERTAsync(payload); + } + + // Launch all requests in parallel + const startTimes = new Array(iterations); + const promises = []; + + for (let i = 0; i < iterations; i++) { + startTimes[i] = performance.now(); + promises.push( + inferSingleBERTAsync(payload) + .then(() => performance.now() - startTimes[i]) + ); + } + + const latencies = await Promise.all(promises); + + // Stats + latencies.sort((a, b) => a - b); + const avg = latencies.reduce((a, b) => a + b, 0) / latencies.length; + const median = latencies[Math.floor(latencies.length / 2)]; + const p90 = latencies[Math.floor(latencies.length * 0.9)]; + const p99 = latencies[Math.floor(latencies.length * 0.99)]; + + console.log(`Burst benchmark over ${iterations} parallel requests:`); + console.log(`Avg: ${avg.toFixed(2)} ms, Median: ${median.toFixed(2)} ms, P90: ${p90.toFixed(2)} ms, P99: ${p99.toFixed(2)} ms`); + + const result = `Burst Benchmark (N=${iterations}):\n` + + `Avg: ${avg.toFixed(2)} ms\n` + + `Median: ${median.toFixed(2)} ms\n` + + `P90: ${p90.toFixed(2)} ms\n` + + `P99: ${p99.toFixed(2)} ms`; + + alert(result); + + return latencies; + } + // Training with client-side timing if (trainModelButton) { trainModelButton.addEventListener('click', () => { diff --git a/extensions/browser/api/read_server_uds/flatbuffer_data.bin b/extensions/browser/api/read_server_uds/flatbuffer_data.bin new file mode 100644 index 00000000000000..17bcae70066d68 Binary files /dev/null and b/extensions/browser/api/read_server_uds/flatbuffer_data.bin differ diff --git a/extensions/browser/api/read_server_uds/ml_server_uds.cc b/extensions/browser/api/read_server_uds/ml_server_uds.cc index a409074d80beaa..8fc2325f1b6c18 100644 --- a/extensions/browser/api/read_server_uds/ml_server_uds.cc +++ b/extensions/browser/api/read_server_uds/ml_server_uds.cc @@ -1,8 +1,9 @@ #include "extensions/browser/api/read_server_uds/ml_server_uds.h" -#include #include +#include + #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/logging.h" @@ -23,12 +24,14 @@ MLServerUDS::~MLServerUDS() { DCHECK(!socket_) << "Socket must be cleared before destruction!"; } -void MLServerUDS::Send(scoped_refptr payload, size_t payload_size, std::string fb_file_identifier, +void MLServerUDS::Send(scoped_refptr payload, + size_t payload_size, + std::string fb_file_identifier, base::OnceCallback success_cb, base::OnceCallback error_cb) { payload_ = payload; payload_size_ = payload_size; - fb_file_identifier_= fb_file_identifier; + fb_file_identifier_ = fb_file_identifier; success_callback_ = std::move(success_cb); error_callback_ = std::move(error_cb); @@ -83,19 +86,20 @@ void MLServerUDS::ConnectToUnixSocket() { } } -void MLServerUDS::OnHeaderSend(int result){ +void MLServerUDS::OnHeaderSend(int result) { if (result != net::OK) { LOG(ERROR) << "OnHeaderSend: Socket connection failed: " << result; content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, - base::BindOnce(std::move(error_callback_), "OnHeaderSend: Socket connection failed")); + FROM_HERE, base::BindOnce(std::move(error_callback_), + "OnHeaderSend: Socket connection failed")); return; } std::string header_payload = GetHeaderPayload(); LOG(INFO) << "Socket connected, sending the header "; - auto header_buffer = base::MakeRefCounted(header_payload); + auto header_buffer = + base::MakeRefCounted(header_payload); net::NetworkTrafficAnnotationTag annotation = net::DefineNetworkTrafficAnnotation("ml_server_uds_sending_header", R"( @@ -111,11 +115,10 @@ void MLServerUDS::OnHeaderSend(int result){ setting: "This cannot be disabled in settings." })"); - int write_result = - socket_->Write(header_buffer.get(), header_buffer->size(), - base::BindOnce(&MLServerUDS::OnConnected, - weak_ptr_factory_.GetWeakPtr()), - annotation); + int write_result = socket_->Write( + header_buffer.get(), header_buffer->size(), + base::BindOnce(&MLServerUDS::OnConnected, weak_ptr_factory_.GetWeakPtr()), + annotation); if (write_result == static_cast(header_buffer->size())) { LOG(INFO) << "OnConnected: Header Write synchronous"; @@ -125,7 +128,8 @@ void MLServerUDS::OnHeaderSend(int result){ } else { LOG(ERROR) << "Header Write failed: " << write_result; content::GetUIThreadTaskRunner({})->PostTask( - FROM_HERE, base::BindOnce(std::move(error_callback_), "Header Write failed")); + FROM_HERE, + base::BindOnce(std::move(error_callback_), "Header Write failed")); } } @@ -138,7 +142,10 @@ void MLServerUDS::OnConnected(int result) { return; } - LOG(INFO) << "OnConnected: sending the payload "; + LOG(INFO) << "OnConnected: sending the payload in chunks"; + + // reset chunk state + bytes_sent_ = 0; net::NetworkTrafficAnnotationTag annotation = net::DefineNetworkTrafficAnnotation("ml_server_uds_write", R"( @@ -154,17 +161,38 @@ void MLServerUDS::OnConnected(int result) { setting: "This cannot be disabled in settings." })"); - int write_result = - socket_->Write(payload_.get(), payload_size_, - base::BindOnce(&MLServerUDS::OnDataWritten, - weak_ptr_factory_.GetWeakPtr()), - annotation); + // kick off first chunk write + WriteNextChunk(annotation); +} - if (write_result == static_cast(payload_->size())) { - LOG(INFO) << "Write synchronous"; - OnDataWritten(write_result); +void MLServerUDS::WriteNextChunk( + const net::NetworkTrafficAnnotationTag& annotation) { + constexpr size_t kChunkSize = 10 * 1024; // 64 KB + size_t remaining = payload_size_ - bytes_sent_; + size_t to_send = std::min(kChunkSize, remaining); + + auto buf = base::MakeRefCounted(to_send); + memcpy(buf->data(), payload_->data() + bytes_sent_, to_send); + + // int write_result = socket_->Write( + // header_buffer.get(), header_buffer->size(), + // base::BindOnce(&MLServerUDS::OnConnected, + // weak_ptr_factory_.GetWeakPtr()), annotation); + int write_result = socket_->Write( + buf.get(), to_send, + base::BindOnce(&MLServerUDS::OnChunkWritten, + weak_ptr_factory_.GetWeakPtr(), buf, to_send, annotation), + annotation); + + if (write_result == static_cast(to_send)) { + LOG(INFO) << "Chunk write synchronous, size=" << to_send; + OnChunkWritten(buf, to_send, annotation, write_result); + } else if (write_result > 0 && write_result < static_cast(to_send)) { + LOG(WARNING) << "Partial write synchronous: " << write_result << " of " + << to_send; + OnChunkWritten(buf, to_send, annotation, write_result); } else if (write_result == net::ERR_IO_PENDING) { - LOG(INFO) << "Write pending"; + LOG(INFO) << "Chunk write pending, size=" << to_send; } else { LOG(ERROR) << "Write failed: " << write_result; content::GetUIThreadTaskRunner({})->PostTask( @@ -172,6 +200,55 @@ void MLServerUDS::OnConnected(int result) { } } +void MLServerUDS::OnChunkWritten( + scoped_refptr buf, + size_t expected, + const net::NetworkTrafficAnnotationTag& annotation, + int result) { + if (result < 0) { + LOG(ERROR) << "Write failed: " << result; + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(std::move(error_callback_), "Write failed")); + return; + } + + if (result < static_cast(expected)) { + // Partial write: retry the rest + LOG(WARNING) << "Partial write: only " << result << " of " << expected + << " bytes written. Retrying remainder."; + + size_t remaining = expected - result; + + // don't advance bytes_sent_ yet, only when full chunk is done + auto remainder = base::MakeRefCounted(remaining); + memcpy(remainder->data(), buf->data() + result, remaining); + + int write_result = + socket_->Write(remainder.get(), remaining, + base::BindOnce(&MLServerUDS::OnChunkWritten, + weak_ptr_factory_.GetWeakPtr(), remainder, + remaining, annotation), + annotation); + + if (write_result >= 0 && write_result < static_cast(remaining)) { + // schedule async retry, don't recurse + return; + } + return; + } + + // Full chunk successfully written + bytes_sent_ += result; + LOG(INFO) << "Chunk written: " << result << " bytes, total=" << bytes_sent_; + + if (bytes_sent_ < payload_size_) { + WriteNextChunk(annotation); + } else { + LOG(INFO) << "All payload written (" << bytes_sent_ << " bytes)"; + OnDataWritten(bytes_sent_); + } +} + void MLServerUDS::OnDataWritten(int result) { if (result <= 0) { LOG(ERROR) << "Write error: " << result; @@ -227,22 +304,24 @@ std::string MLServerUDS::CreateJSONStringPayload(const std::string& label, } std::string MLServerUDS::GetHeaderPayload() { - // 1. Construct the header string - std::string header = fb_file_identifier_ + "," + label_ + "," + std::to_string(payload_size_); + // 1. Construct the header string + std::string header = + fb_file_identifier_ + "," + label_ + "," + std::to_string(payload_size_); - // 2. Compute its length - uint32_t header_len = static_cast(header.size()); + // 2. Compute its length + uint32_t header_len = static_cast(header.size()); - // 3. Convert length to network byte order (big endian) - uint32_t header_len_net = htonl(header_len); + // 3. Convert length to network byte order (big endian) + uint32_t header_len_net = htonl(header_len); - // 4. Build final output: 4-byte length prefix + header - std::string out; - out.reserve(sizeof(header_len_net) + header.size()); - out.append(reinterpret_cast(&header_len_net), sizeof(header_len_net)); - out.append(header); + // 4. Build final output: 4-byte length prefix + header + std::string out; + out.reserve(sizeof(header_len_net) + header.size()); + out.append(reinterpret_cast(&header_len_net), + sizeof(header_len_net)); + out.append(header); - return out; + return out; } } // namespace extensions diff --git a/extensions/browser/api/read_server_uds/ml_server_uds.h b/extensions/browser/api/read_server_uds/ml_server_uds.h index 5c296a7c9aa505..74570c7a9e6e5c 100644 --- a/extensions/browser/api/read_server_uds/ml_server_uds.h +++ b/extensions/browser/api/read_server_uds/ml_server_uds.h @@ -37,6 +37,14 @@ class MLServerUDS { void OnHeaderSend(int result); void OnConnected(int result); void OnDataWritten(int result); + // Write next 64KB chunk + void WriteNextChunk(const net::NetworkTrafficAnnotationTag& annotation); + + // Called when a chunk write completes + void OnChunkWritten(scoped_refptr buf, + size_t expected, + const net::NetworkTrafficAnnotationTag& annotation, + int result); void OnDataRead(int result); std::string GetHeaderPayload(); std::string CreateJSONStringPayload(const std::string& label, @@ -46,6 +54,7 @@ class MLServerUDS { std::string socket_path_; scoped_refptr payload_; size_t payload_size_; + size_t bytes_sent_ = 0; std::string fb_file_identifier_; std::string label_; std::string model_name_; diff --git a/extensions/browser/api/read_server_uds/read_server_uds_api.cc b/extensions/browser/api/read_server_uds/read_server_uds_api.cc index 042b833da3d1f9..801bfc4d055f64 100644 --- a/extensions/browser/api/read_server_uds/read_server_uds_api.cc +++ b/extensions/browser/api/read_server_uds/read_server_uds_api.cc @@ -1,7 +1,9 @@ #include "extensions/browser/api/read_server_uds/read_server_uds_api.h" +#include #include "base/json/json_writer.h" #include "base/values.h" +#include "extensions/browser/extension_function.h" #include "extensions/common/api/read_server_uds.h" /// tmp/shared-sockets/echo_socket @@ -238,6 +240,57 @@ ExtensionFunction::ResponseAction ReadServerUdsInferSingleBERTFunction::Run() { return RespondLater(); } +ExtensionFunction::ResponseAction ReadServerUdsInferSingleBERTFunction::Run1() { + // Create MLServerUDS instance + auto ml_server = std::make_unique( + kMLServerUDSPath, kReadServerUdsInferSingleBERTFunctionLable); + + // Path to your flatbuffer file + base::FilePath fb_file_path = base::FilePath(FILE_PATH_LITERAL("./flatbuffer_data.bin")); + + // Open the file + base::File file(fb_file_path, + base::File::FLAG_OPEN | base::File::FLAG_READ); + if (!file.IsValid()) { + // Handle error case — couldn't open file + LOG(ERROR) << "Failed to open flatbuffer file: " << fb_file_path.AsUTF8Unsafe(); + return RespondNow(Error("Failed to open flatbuffer file.")); + } + + // Get file size + int64_t file_size = file.GetLength(); + if (file_size <= 0) { + LOG(ERROR) << "Flatbuffer file is empty or invalid."; + return RespondNow(Error("Flatbuffer file is empty or invalid.")); + } + + // Read file contents into a std::string + std::string data; + data.resize(file_size); + int bytes_read = file.ReadAtCurrentPos(data.data(), file_size); + if (bytes_read != file_size) { + LOG(ERROR) << "Failed to read entire flatbuffer file."; + return RespondNow(Error("Failed to read entire flatbuffer file.")); + } + + // Create payload + auto payload = base::MakeRefCounted(std::move(data)); + + // Send the data to MLServer + ml_server->Send( + payload, file_size, "QASV", + base::BindOnce(&ReadServerUdsInferSingleBERTFunction::OnSuccess, + weak_ptr_factory_.GetWeakPtr()), + base::BindOnce(&ReadServerUdsInferSingleBERTFunction::OnError, + weak_ptr_factory_.GetWeakPtr())); + + // Hold the instance if needed + ml_server_ = std::move(ml_server); + + return RespondLater(); +} + + void ReadServerUdsInferSingleBERTFunction::OnSuccess(std::string result) { Respond(WithArguments(base::Value(result))); Release(); diff --git a/extensions/browser/api/read_server_uds/read_server_uds_api.h b/extensions/browser/api/read_server_uds/read_server_uds_api.h index a1282c1fafe614..0ba97e80dbecf8 100644 --- a/extensions/browser/api/read_server_uds/read_server_uds_api.h +++ b/extensions/browser/api/read_server_uds/read_server_uds_api.h @@ -88,6 +88,7 @@ class ReadServerUdsInferSingleBERTFunction : public ExtensionFunction { private: ResponseAction Run() override; + ResponseAction Run1(); void OnResponded() override; // Socket handling