advent-of-code

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit c108f8a29248b999ef96781a30d949bfc03853d8
parent a05342880ddd0cf37b114081e0ac1069329b401c
Author: mpizzzle <michael.770211@gmail.com>
Date:   Sun,  9 Dec 2018 17:05:14 +0000

puzzle5 complete

Diffstat:
A2018/files/puzzle5.txt | 1+
M2018/puzzle4.py | 1-
A2018/puzzle5.py | 36++++++++++++++++++++++++++++++++++++
3 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/2018/files/puzzle5.txt b/2018/files/puzzle5.txt @@ -0,0 +1 @@ +tvVcCtTEedPpvVDaAtfbBxiIXFMnNEPpeiInAaNjFiIrRfLMmiIlJAamPpVviIcPpaACHKkhcvNnVhXxtTsSTtbBHUvmMVuUAakKhHyQqYuayYAaAYWwbBKkyuUCTdDgSsbBIwWikKZzOdDiQqeEbmMBIogvhHvVqUuQTyYtVBbeEvVjqQEeJGkKRrHqacCAtTYcCKkyQQqhoOCGgWwMsSjrRJvvVbBwWLlNnVZzZzmjJKPpkbBciIHhwWhHeBUubyDdYHhRfFASsAaJPpbBjiIarESsGcCLlEQqqryYRnNQQqIiTtvVrXbBMmdDxRsKkeEfoOFwWdDaEeLlAbBSnHhIkKidaAaAciICDTtNoOgRrGRAaDdrEfFcCushHJjxXhSsBcCbTtMNncCmXxxAaMNnvSsBbVmSXrRxBGgbsUuZyFfFfYNnzSaAqQJVvjIRrieESsEeTZMmzTAxXaTmMttNnuUhHzZtDuUdnNsXxJjwoOWCcFfeiSsoOIEzZbBxQqjJoDduUqQOgGWwIiIMmCcFvVfiVBbLXxlabBAvaAHhXUuXSsxrRVbBcCvaAhQqHVdLlHhDnNvtTsDdJjnlLVvtdDTAHhaNOofGqQkKgmTtyYMfFFfxTtBLlFLvVlSsbBfLlLWEewvVvgGVjFfHhJllLKkbvQqzZmtTjWwJMVXxfFXAiIaFwWBbuvVUNnSGbBgGWwgKtfFTwOtTyYouUjJWRraAMmqQMmfiIFpPyDdYZzjzZJpsSPauUxXAcCMmQqlLkYKkpPAaEekKSogGOsyUezZEueoOCcEaAbLlsSdHhDSKkslLeoOEVvhHBNnRNnrHPphncCXxtJjLqQlTdzZDNRrqxXQrEeZzZzDdVvwgGCcWEeHDdvFfUuVhJRrVvdDdDjzbBcCZCcoONJTtPpjgGlLyYuUmkKMOATtsSaovVnjJnNaAnNrRPYyCcpdDjTtdpPgGhzZHDnNNEenAbBamoOquUIiEqQYyBbYylLeTtnNQMNYQquxgGXULlyBbEeYyYynzFfZUmTteEPAplLPlLWwapiIsWJjGgEeJHNnhNKgvVGknjlcCFfLoOaAZHhzwgSswWKkGucCUSpPvyYdYZzyjJxYyXsSVvbBDjJiCcIgGMmlLvVgRrGhuUFfdSUusZzPpDHPpyYJAjJafFjjstTGgdDTtSYwWwWbRrBcyVdDvfFzZrTtRXfFxQPpqNnQqBblqQLquPpBbUvFRrfFfVnbBNQgZzaACOOzxXZoobBGgHhkKsScqrRQGceECAagTtIgGzZiidATtaXxsSWjhHJwxXzZDmMPprqQUuRIBWwWoObBMmqQwbyYeEHhaACcPtTeEpYytKkTYyGLgqQGgOBbEeocCGcvVlNnLhXxjJHClhmMLlHbBZzkUuAaKrRkKRbutThdDHZzUmMBCcMmrFWwPmMpfWgvNnVGUuAagGzZIizZggHhGyYPpOiIrRIiGBbgAaBOobRcCroEemMHIiNntTtzgGvVAjJKkZzcCXBbfRrFAXxaxGghyYHDhHbTtAuUKkaBdWwCcpGgwWeEPldxtTXDdpPDLUuEFfezcCZQqcCjfbBFJgGFTtBbftXxAPpaQXXxCcuURrxuUZAazQqMmnNQQDdqwWvVqfFYycCZzqMAamAaTzZoIixXOiILmMLIkKwWxXiIiMwQUuqWOoSsSspPxXvVbgGBJjmdVVvvDfFGZLsQqSfFlzxXNncCBCcYybTtoEemMKkOoOvVqQkKgjJMRrkKqQoZzOHUkKSsCxXLlcuoNcCnYyUulZlpPmMLeEmMzBbiIPpkyYKrRtKkvVTkKgGzZKubngGNBsSUBoOIMmibkCcZaXxAUuSeEszPIEeiOoGgDdCcVFfdkKDAaaAfFFfhHBKkbIqQaABAabmofFOMyYfFrRxaAXNnQxXqaAimWwMwWxNnWwXvbyYHhBQqnNjrRJiIcCJrlLREUJjuJjeqQmMHgGhzfFoOSsOoQmRrMqKksrRSaANnpPrROdDxbBPWwpXSNnsrcCRrFfRlLNnXxijmtTtTcCSszwWZzoOZMXqQxSsODrRdXxpgGeEPowGgpPiIWgGZztcCDdTJITPwWdoODVnNvpROoyYrQZATtazyYvCcVHhqxAaXeEPpvIiCqQcNnJwWFfZzuUoNndDOedDEgsSGeryYJKkpPxDdXRNnWwrFFffGuAaUmiqQIIiLlbbBQuUqBAaMcBbAalLLlCDdYyEeOZzhHnNiIiodDaArRCcNnqQOLLleaAXxEDdYylPpSsoFzZLlFXxYEtTeYfFyyBbIvVikOoxXKaAdFULlufDLMmdDlBbfXxeDLlOodZzaAaAHhEAaFfoOWwFfPpnNrZjJzqQRmiZzgGABYybaYmMcPpfFjtTjPpJJdYyDdKkUuDprRyybBYYkKeEvVoOLaAlPoOmMIiGgOoiImMdDqfFfCcFRrhOvLXxltzPvVpQoOaANqwWcCGeEgOoQnHhgGEvVeZjJnNzhHHbBXPpxiIQqRxxcCXXnNrhcpPCHhQqrRquUAaKkYpVvoOhHAvuUVFfuUaxXlLJjYBbEewDdLlAkKEeGgaKkWOkKMZPpzmqQAGgaEUuaAKfVvVvrRFtTSskKTtGgYYyySgxXGUuAastTkUTtufFHbPpQqBhihHtTBTtDdbalLAJjGgLlpBbPrtTRlnNGrRgRXxrBbiLlPpImCcMhBbHLfrbBYyhAaGSsUuADRqVRuUrSszZvMmQOorOodaApnNPamMtTLKkdDTtzZFeElaAVvLXcIiCxlRrQqKkjYnXxNtTtTVaAvWwzZyfFXyYxiIJIiwWLpPKeEnNdRrDxdDXOfaAFqQFfrRwWJjKeEGgkkKZzOodvVTtTtgGDAXxeEhAauUHaFQAaqfoOKkXdDxdPnYyNpRrKkuMmUKUukeVvfFkKEYbBQqxXyuUhHHhdNnAaCckKMiImUudDDsvVSewWiIyOoYEfFyYDQqQqxXuQqAaGQqgORwWrlplLqQPLpBbLlrRpMmPkMhHmIiKuqQUIPpiCcCbBcPJfujJUFEeoOjqduUdOoSsDPGgpmzZyemMEYcCzxJjXZdDGgBxXjwWJeDdEUBbuNlLbhHBvVjWwJnXxSDeEdsnNcCFfjJbyrjvVJOoRTLIilvvVEeYynNlLPCcfFMOpPozZmpeEVvyBoOVGgvArRHhIiabeSRrnJsSjRXlLxHYNnyDTtBbdeEcChyXxkCcKixDdNnQqxWwJjXXWpYymMPsbvVBSslLSwIkFfieERfFefFsSToOtENfFnkvVKQqrQtLxXMmriIaVTthwQqYyWHvjJzZTtAUuRvUmMupGgPGgVlxXJjTxXEsSVvvNLlWwUJjlCQqjJcLmMjJmQqmMtPpTAOotPVveEpVHhvAnNJMyYmuUjSsjuUBbuUZjJzKRrbBkJOVvkKosmMSLlwdDcCkKZzFfgTtqyYzZwWQqQkKWPkKNnpdDFfDAahqQHdatqQjJjGgJTAzZCcRDdrcCIidoOxXDFPbBpNKEeXxwWxXDdDdoOVvfYybIiyYpmyYEXUVvsSfFrRgGuxlLBOobrMmRMmcCekZenNEzKzZaAbBgGiOnNoVvIoOhHFfKkgGZkmmMMQqWVvyRrYAazxXzkKZTtsgQqQqPtTpGcRFeAaEdDfrEebcCmgGMGgMmBUukcGgfEnNLHhllysSYSQqPrRpgGtTADdQyYsSYylLsQUuqRpPrNPpOmMKQmtIDdiTMqkxXxpPXAaAaoofFOmMNpPllLLHTtSVvhHliIOoLEeuHhUVvxLjJMmmfWLllfFFfLMiImwkFfKcWwCTuUEetLlfpPeEUTdBbfFDtVvIinCcNEnNeugUuDYyHhdBblzxoOXxXBbxXNnTtZoJjOTAatLmMqKeEkfFTtFcXxCuUfRIXxiaAWwPprTqQseQqDdESGWwvVgRrmMlLZznIiOojJNFfnNeEvWwBbwWLMmUulVySsZzNnErZKuUkzvVRehHzwWzZzZrRZYptQJjqZdDbImMOQHhYyYyqzaWwAZSsoOohHzZiZoOzTtBLOoJjlzQqbBBREeDdpPdRMgGmBbBbnNuUKkrMmQqvVDQoOqUCyYcFfvVUuYyuLbBPdDpCeEcEeudDjfFlLZzvVOosSJwyYwWbBGoOgQqsScCWxwMSzZeEYGdDgUuyMmAamMajJABtTbsAaSzXxZsVRDdrknEerOoUucCJjMmtTPiIiIMJRiKkIrxgGFfXtOlkxXGgKaAfFrRBbyYeEhHMmvVBboaAZzBbODyDdYdUuUFfrGgjfFXpPXxTisSIzuUWwZAZztTdBlSqQtTHhsbBdDcClWwiYcCyInNaAoOLxFfwNAaOonTrRtGekKDdEWYywkBbKQSzZlLyYsfbBFSsEiIkJjKKdDknNJjJjVQCbzZBcinNeEIKZyYRfFGFAafsbBIUuireeQqBbEOoInNwWAaUuTthHiSsSDdsrRnTtNLhHaAiIfFpviIrRtQqKklgGLTmMhHQgVvGqrRolkEeFfKWEpqQPesSwXBfFsSKCctTPpjJrRkUuPpJjtTlDqQqcCQdLlLiKHhjJMyAaYTtTWRrwhHtWwGmeEMdDZRrWxXwgGCclqQLzNZSszOoAllLLGgadDDdTrRtncCPcCpjLlJzZFfqQqQxnNXJjMWBbwZzmIiebsSRIirLlUuhlLHLrRZzlNnjJuPpUWLlLTtyYhHZojoEeOlEeffFjrBbYydDcCuUAacCHbBhxaAeXxEBbXKeEPFIBzLlZrCcbBRXxirlEBbeLrRPpReEIKkKHhGNngiIkMNTtSpOoPTMIibBAasCeJWwcCiIjUuMjJSsTtmKlLAakyOZBbKkwWzAKZzVGgfklLTpPtKxPqXxcCGgIiLlQqmMYyoOvVhHomMOvuUVQgbBGUuYmMyrWwkPpKHhRiIRCEeGgOPpoTtPkBbKaAFvVfpvSeEsSeEpPstIiTVwkDdkoHbBQqMmhOYyHPpGldDFfDnNdgGpPLgZzhdDiCcIKUuDTjMmJozZfFfFpqQdDhHfFSsxXpMmPLlCTzZtuiFfGxXguUgotTOGXxiKkIIkAaTtBbcCtcYMEeiIzhiOHhoPYVvieEIMmypIRrTfFUjJXoOxmsSMHstTUuShTtiIGglLfFHzZgGzZcmmxBCcfFNnyYBbJsSBbuUNnrzZRjbQMmaAcCbnNAaBmOokKNWwrZzmjJIiIiMgiIhgUuGSpSHhYysPsFfnmnNhHBEeeEYykKQqgGKkbssSZrfpPfdAasSDFtTXxzeEHHwWhhZeEEexXYypNnPYoYyOyrRIibHhhHBtTLjJObBoUuogGOvVlPpEwWMmGuIiUIuUHhiEezZjJfFjJMmgkKZujJvVUzyYkKFfePVFfMmFhZNnxXvKkGgLbBlQGghHyYqZzPtCvVfaIiXxiIBbUXxuNTtgmMhHrxXnCcoONRkKkAaPprRKGDdcWmyuhHUYCtTKzwWEeZYySsBqQzZERryGgYBbHhyWwdDcCXuUPpxAalLZzYSsmeEMyYoOtTTyYtiIZmMmMgIKxXEedDAEvQqVKkmGgMnNTKkwWhHavVGgWIlSmMdDsSsuUVWDcyYCdhhHHnlLQFfcCIRriRrTfFtEeDdErRegjeEhNnHMUuZzmJuUWwGAHhaaArbBmMMmZzbBNnRgGqQzsUueESZNZzntTpPQnNapvVVFfRrMZzaAoFfliIMxXmCcyYvVuPhSsHbgGBlMpPmfHhkKFLxXIiQqUuVDdWlvVLwjcSsWwvVOfFoLlCAPVFfvpPfFjJOopqQRraQqvKKkzXxZaAUukkKbtTvVzqjJQHkKaVYfTtVVvyYvZzdaADFwIgGioOWyvsLFGgMbkKBeEjJGgmfiPpmOoMXxZzIVvlkZzZugGavVFCqQUMmucfFfyHhtTzZTPDdNAMmHhcyYCanBdDsSFtmMTRLlRSdvVLzZleEzZBLdDNAanlQJjykKcVoOvCDLldlOZztTFisSIuUDdcBRrKxXeJjWjttsnNUuxIDpuUrrzZIWdsSDErRxXoOjMZzFIdyYBDZzdoORrZzAaGgjhgGRaArZzEeXAhaAHZzYUuQqysxTCcMYuUYhXxHMStzZJjRrSsTHtTVvawIRVvroGgOhIyiEenNIMmosSAaOkKflWwXxAaiAaHhyYyYoOqyYQXxIbkcTtCuZzqQtTxXSbBwWsjYydOZzRrAQqkKaTtKdDbxXlLBkseEYySokKDorRvxXVqQnNwWOJtXxtiIaAVvOrlLRosAameVvvVEfFVvNjJngGsSMNnuUgGlOQsanVvMmNHhAkKScClLfFOofFjJzZwsSqQWqDdihvXlLxNhHnEMmfHhTLKkAaljnNJVvYWwytFcCMnwEeWfRjgGdDcOoqMPDdKkptTmlLQhpPRJjeEKcCsSkGIiVvnKpNQCcCcqdDLlnuKkUuaAeEshHSUGmMcCkKLVvzZluUpPgGgzZktTMmUlzZLaWwpPaAkmJjQqiKhQqAaRrVYvnNZzKkVqNnNxXxBbSsXiWVyYvwWAavJjBbrRVwHsSjJCOorRLlwWOcCocmVvHhsLlBbSFfuCcbaNnAFSsJYyPZlwWieEwWgxSsXGQLlQPpRrvtTrbBRvlLOCcYKkEeyozZYyfFqQHhPpaGWHtThXFZzfxwkyYyYPfFDdzgGGgRyYrlLaAZZzXmMxGgpEIOoixgGXGggGEeMmeUuYyIiLlVhHvrRFrlLRuUHTAPpYyatamMYygGSslLxlLwWhHTtCVvcAaHXxhBbcnNsShHNnJXxNmmnqQLltOntWwTxXxXmdzZzZpPWwDuUZVvIwWiTlLfrRFtOiIizsSPpbjJBYgiIGyiYyMmUFfeEZmOWwhvroORVHZzCIikKZztTcwbBbljJLBUuhATtaGTtcCgOTYytoRrFftFfTpuUcCzvqQQPcCFfAapqVHIafVvyYjJFsJxUuXLlmMSspbGgxoOXiCcfFjuUtyYThqNnQTtEeFfBbykqQpZdDzXxcCSsSonNYykKQfFIzQqTPptzZzRraTtqQUuIiYyVvASZbBVvzdsSbXxBborDZzMBbrkKRGmeEMgLQqluaAUGgRrVIivVvmpPdWwYyfFMmAawYydDtzYyUuBbHuLWwTuUZpPcTfsOovOFfoVcCPpNRrPPaALgGllLpbBoFYvSsVyfMmOSsaKmMkAqFVvNnpMqrRSsKkyYQvTHhCcAaIirRvhHVcCsbBzIXxieNngUuGEPjJpPppiJjInNeEdDbBHhPqRrolLDdlLMmScsMaAmWwSBqAasqHhQpRnmIZuUzSNnGgoOHmsSMXxgpFbBftTUuRriDdtTKkgsSGIyWwYPXxSsGhROWwoUurVvKkmMtiIqQTYynNVDdlZzLNnvKIioOknLlIWwXxeErRwWiHCdnDdbBNWrRFfcvYcCEIiepDdQjJzZVydDYbZFjDdtcVAwYyBbEeWhHkKpPCeEcacCgGfFLlvpPoOCQqTyBbDdFfQuDQqdIiUkhHKuVvUJkvVZzEeWjJwgGBFfaNnJjIFfuMmJjWwXxQNnqUWDduUqQwXauUUuOXxtdwWDnNTPpMmcjJUlLuAXxaeBbECTvVFfVPpfFXxGgBIiNnjJvVVlLvUKkTtudDhHPpXdkKCwCDCcEeEcAajJCKkefeEFQqfAHOohciIxXMScUjrRJurSCQQqwWPnNpQLlqSsqTtcZzsFtTMQRrTtvGuJjvVnRFfrUurbtTwNnYyWBbBRrBqQkxXqQdDKnNGgGtrRFfTPpjJJjMcCUDdVFguUAaSRkMmKttTCcTIhHOoioTtgGnNcChHOiQvnNVqIWbBBYyepsSRbsSvVMMmXsBbEeQPkKpdDqOoPInnNfFNiWTtEWwFKkfyYuToOFfwWZWaiIAbwWBJvjHXQqIixhJjMGzZgZCcEemMpPGgbKkBzsSGEetTsSgcIDdiLlQrHhgGhvVlmMLadlLDApPHJjxIiBbuUKqQQoeEvNnVOXMCEecMmmMXxmxXxoTiAaInZzNnIiTlLZEezRwhxXcCHQbBYyNBxXlLUubnNiIkRcCRrdDHhJjYjJyJjtTnpPqBbRrrRCcyLdIUBBbxXOzZobWwCoMURXxryYPpjJyYumCcEeIlLUCLlwWMmPTtjJJjcbORpPTuUjiIJrRyYtMMvmMkKNnVKkmlnFfEetTNlLnDdOsTtSoNAanITtidDNrREeyesSEwliPptPsNnYySKkpTvVWKoOHhtTFfkKkwWwWwDNGTtgeVuUwvVWryKbIiBXxGgMmhHaVqPpRrQvpBvVWRrJrcCLCclRaAQdDqGkCGgcKwWVvySsYTtAcCaKkkKQFfIEevNQqrRKknGgVHSVXCSsAIisStMmKkToOabBftTeEPPpfFLljJbBrAcCVvtTaRDQqsFfYEeTzzgGZUulLTtpEwWNVvnDDSsaAbBuULldUuDRGgriIObNnBVvtIiTdDdtTiSYysiVrRvMmImMHhtTuSByYbwWsUGDdsSmqQFOofMNnRrgdJjDcCfFIiIoOsMmnSgGUuuUsboJjlLBbEezRrlLZBbjJzwWwfFWZivlLVPBFfbnNhzPQFfvVYyhHKIcaACiCEGgoOebBVvXZgyhHYGHhzoOZzyYktTJjXxZUusSdDzZqQUubBiIHhqQRTtTtXxrZuOoZzkKwOjJosGgRTIiQMADMTVDdStTZKkzsvnNcCyxXIibEMmeEeotLUVvOPpdoKYyjvVbsGpPgQqNnVpbDbiMsWmMwgGSRVvrPnNptTZzLGgYylZzzsSZdDbRzZrfcCFVETcCbBpEePWRrYtTrRypPbBCIibxXvVEezCcfXmMxTtuUsEeuUZFfWpPCwWcfFwzSEeaALloOoOFZQqBRrZYyluTtjJULnNfFUyDdXUsTpNUunUuKlJjLkORrxxXWupPAaUufFULdDTfFeEDdaAXTtEsFfxcCwagZzGbShHnNtTsOfFQmMHYsSIiyfjJFDdhKkeaAEjUuJIeECcucCDdcNxXjJxVvkNmMnKUuLlLDdjMmveEVdDrRSsnNoHhvVoOGkDdnNQqXuYsSiIfFyUnNEepNQzchHiIbBSsBbYIaAioKRrkOyFfFCXpPbjJZztFfThaAZznNDdBQDiIdqbHMmecPoOpOoCjJoOLlcCEuUaiwQqWSWBXiIxbXxwsHRrTtjCcuTOotvhHRrrvmMElLewWYiIylLRrDIHhFfiwTtUugvVOoHUbaAFjZcCIWZzFfwWimMNnNnbBMsbBrRljJYyxIWhHLJBbUujVzOojJLbBAuUaBbUuIrzZJjyYRSpPrRnPpfTtHnHhAobyYBrwWROxXJjaSRVrivZZzzXxXuZzUxioOIkKVMmFfKkpPVAiIRdDcdiIDNvVnMmJjfFcfFZzDKkEeqMjJmBblOoThSsKkHBAicqtRrTgGECczZvHbUuBhvVVeWwfCcaAKkgGeEtTZRrnJjIdhHKkXxSkcVvvVCToOhTFfFoMmbDfkKFdFfMmBMmnNMEenNmMKkDdSslLPpQqRrLnNPafNnYyzeEbnNFiIflsSCwWcyzvJAapzIiIiPpUzZuUUvVLlHhmEeBahHqQkKXFrRhHRsMmRrSQoZzOoOFffuUYyfFxxXXVfboOclLRgrRAKwWrRkaGnmMTsFTiIUuLllLOoECBeEMkKoDbbBgGhHUuBweEixXEeggGyYyYkKGSsIiwWWpPifjOpPUAsSYyjJBbMmayGgEuzRrwWIJjwWIHhnNKkmMtGjNnpPJDdgEpTvVKkdnNQmIiMnNqnDdNrpPXxIdyYKUmMEeupPpPFgGfLCcSsymUuCcIWwBwixwWHhIinOoDdNSSsRrshUuQqSZdsuXMuUmxFkKfVqPpZhpPHReEcCKEeUWwptTkVvHhKsPpBXxDnNFfdeEbWNAcotDQqdTKAaHibBIvVuUAniIhHGgbgnNOVYyKTtkOOOoocCPpeESVvsmLlpPLlUuzTQqOhHoNrRGgfoOCOGCcgpHhPiLlIoLHMmXIbBnNoOiILlFStTsIifqQxXgTtuUHhGiUEeKgQqZzzZkKoGgRrHcCnNgDUQqdDsrsXxoBbNfFneEtTuUOeEGPpgEBxyYXbZOolpPxXLhmMFfrEekTtSUusGghHKRraElLSijgGFWbBwfJEQqhwdlqCctqVvmMLlQSsagGWnJULYxVvYyaAXylEeBbwcCyKkmEHheQqMoORXxHzLZAafFVvwJjSmsSRkKDdNnrMxXuOJjwWsSFfkWGgeLpPlgpFpPiuUFAlrNntVvqQNnUuTYydgZzEeIFfiQzqQqhNnDfgAaNncCFfGwEeWwgaAGzOogGczZCjiITsRJjIiLDdXkRRqIlpwWlZmZzhHMNKkkVvkKKADdayqQYpPqQWwYJIiZzYsSoOSDdJjBxXZgSRrNTtniIBRNnOoVWwvjJrQqIodeUnNwRrjqNnQzaAZpkjJKGGgoXxOQAnRrNjzqQBbZJTFcCftaAHhWwQKxXCinlLXZcUQqHFBhHTtdUeEueKYfHeEhqQWsbBSEewGgRrYyZzFSBeeEEiIRwWrbpZFfbcrRoTtbBEnLlNhHIiVpfFPVBluZzJjUMfFSrRlkXgQwWqYysSNnCczbnsPvVpKkSxbBAavVXAaHUujJDNndvmMiwaAWJjBbTtIxrRDWIfwWLXkqQaFfmdDMAnrTFGggGBgCeEqQQjeEdDdDJdLlfFtqQlhtwFTtMmlqQuoijlLJSsKYQqHhymffFFMmQqWOSaAMgGScCsxUUuujIwWwWQlEdPeEyMmhHUuOBOobTtHVvhJSkKnFCcmMqTZzthHgGpiPWRuWcNnCTuUnzGlLxRwFfgXJQuzZjZzjJWJRJjphjBbFfDdJFwWfHKycYJckKXHsShOoIUDdjLlGQqgnXZbBzmMkKmPqXbBdDTPlgGmMWFfIirVaYQBWcaxMmKkdjJNnDAFncCrRmMcRzHhuUdtSscCEGgeinNbIiBIvoaygdDGJbBRkvPDdLlpvVVrJqJodDBbOjJjHEeFfxdDXUbyYBuPpjJfkKFviIiCcCcmNZzYykKnNnMBbwffFOodxXdrRLlkAaTtNnaCeUuEfwUyhfFIikKUwWxCcXmMRPpYyTtMgGmFflFfcCLrculLgGUFfCAXxHhcCaaARrmmMsSuFkgGCcCcKJjfQqhNjJnwrROTAmbBMZzomMyzZSIimMYysvVRDdrzHhIibqoJfFKkOjJsUuuUNnfUuPpFLluUXgZKkzVeEIiYyLlGgvLlbBtCqQCcAwWnNMkKzZmyYXdDxOokJjwOUeTnNtxKYyGgERAyYBMrlupPUYyDGgsSNjeONcCsSnSsOoVeOonYyNGHQlzRWDowCcQqWObMfCyEeEexNnQqrCuQqUUucRXlklhHLzRrBbxXxEgZzwstTSWGNnxXNIQvuUIwWhxfFOeZzEMsrRcDdUNEeOoWZzjHlLkKXOSkrXwKTceECtQqkkKulLUnqQoOwWhgAaiIKUPkKpuhnNHcyIiYCNyYTtnYaAyXxWaAwlaGgpSsPASsLyKkpPbYyJiILljFfvVGVRAPOovuXnqQNxuEekYDdyKUUzbyYKsbjJmlLMCcgGLRJjrOoNndDWMaAgRrVvEeBbTtLYEtTEebqiHmUuqQlLMFtKkPpTbSshHOeiGqHZnNzdWwDKkhVvxQqcCiPpYTjLnNYyjJxXgkKGiIltrnNRLbBuUZdDzlixYyYjteETJZznjJRGgHITEQqwZEeHhNVvnHhpIMmioZzOPiIFfOoIMmQSsQqHEbBuUpPehPpqFyYthhEeqEebQqBfFQFhHBNnWNnHOwWotOlGVbLzSsZzxXZlxJjaAlBsSMVvmjJcCkmMKjJbPpLHoOONUuzPpZVvaxOoXMmkKACtKkwWAazkTtWYyAapUUuUuNnQquPjoOIiJwyYkoOWTtwKKHLllLhZzxGmMglccTtUaLsxIZAiIgGPpcWwemQqVvMEHhwfuQqUFzWwzZdnRMmUurwWNvVnbBrjkcGjhHUrRkGgcCbBKyYuqQXxvTtzrRZeElLAGRzOowCcWOZYjJCcMYtzSwMNnmEeOmJjMXxbJWsScCsSMaAmBXqbBEqQezZQdDZPpBuUbqQMmuUKQsSqkACrQYrTVvtRCcyqmRrHhnNMeEeXDdyYxDdlLwWAuUaAvpPVaEEhHhHeimmMpPVvTtUHNnhNnHhuAajqQaAJvIivVFDgfkKFtCcTbEejAHHGghIPtNiIxxKkDdLlnNfXxQqXxIXzZxFUuqLlBJzZXxjWwxevGwWEekKGAagJjKzkCcxaAlLcCVOolwIiWLcyYhHCvdnNnYyGLKklhPsuBbkajJTtAKfFUtTcpPiEVeYKQOofxXFLlKuEeqeErRsNFfnStLlpkKQqPSsKnNPXJjUuMmkKxpuUwWyUuxXYPxXilMmLhHIkXxKlDdbcCBIiKkyqWwQYuUoglVaidJiuhbBtSCzZVvcmMOKksXxuDLlEjJedkKqQtTJjAaAhHabktTGLLllgjJDdPbBbeEeEsSjJBprBQqiJjzZzZsSsaAAWUGguUfzZYcChXZqhxXMpPiXxIrvIFfiHhaAfFaAVZEeUuFfzCcsSyaAVKXxlLchdDFZzJzqQZeEDdjfqeErooOODuUdeNnHhETtDdENwWHhhZzHIuIlLrRDdqQIqQipfFQqVGgCcCcBMmoOCzxXdDfFEeWwWwCckKjJdOoagGRryQqlnGwdDYmMydUZzuabByugGUAaYgPpxXPEsSfFgGsiHYyeiMmIVpxXPDdSsgeEdJjrRxXgmUosSOKPpkjmMSfaLlSzAauUHhPprGgRnqkIHbTAanVvQrVsspfFPDdgGSEeneEKknjJnKknNNplgGYyPTtpCcYzZywWEIiZWhAuUatHhylAoGgexXbBEORnNKbBywvuhwPxrPKzDHhdOoYyZTKkrEanNwWqaqQAQhHKkAGgKmePpwNnWCxSMmCpOooOPTgGXtucksUuQqtxXTrRkHJFfQqjGTteEgqQzWTtiIpPcFXTtCWqTtQGGIigKYireExXLlRtXxEeNnZzMmMmsSUJcWXxwWwWpPYdkKDfFLlgGONndCNnkwWpOoPbBUumKoOiLwLlIBbvYbByVUGgQqulLidDWlNnKksbBXSxTteEzOlxUjJNmZzMjGbDaAZWAhHKOokJuKGgkzOohHTtNnFfZmMUBQCqCcMyODQqZSRIirVnNbBIyYhTtHVvikaDfFoXxOpoOTLgCcepPCvNVoOoHXxWpucCUvVKkXkKZzErReFZbTtBvfEejPZiIzHsesYmXgzZCcGmMxsSJtueAgTbBlmYycCsPpOBwRDdmRuUJncwjxXitTOoIkKJaoOALlnQdDqlLEHhetOeMdhIimMPHIkKQqoEehHireERZzbNnWwBJjevLbWBcCmMbdDhtaATqgjNyWwYmMhLlHTtfFZzxHiXvUiImgUPlfdvVibBQUfLtjbBJkZzTttFfTMKkIidHhwUukWhTlLfPpFIwWpxXfFiOoRrIPeEdgdXxDoLlOoDdOhlkXxKeELQeEqxKACcaTBbheEHMmtzZFXxtTyYfDdzZpPAajJmUAaIiuSsMWwTHdDpPbBCzZchrRWzRrBlLPIipWlcCYyqKbzRjMmBwILyXxYBbltvVTetTCcEtTYkzQqxRrNzZnfQqQqhHGaHEeZzmbBsfAKlbBLxWwxRkpJjjJwWFfSoOLLltaoOJrOoRtTSslSKkUuFfcmMClOoLunrRIiIcpEkKTdDFfegGWwsXQHefFEuJvVGHhCjJelLnNUqjJQlLBxnNsiFfIZAazpPnNZFzZcCWwflLCbgGGhikcWwsSWKkwFmeqQcCUuDdHiiIIvLrRlgqEKkgpPGxnNmMdDAaIibBLljpPkLjJlzZZzCHIiDkKiJjIJbdwUuWBfFGhHcCDUAaUuDdUuusEKhWxXCUuEdyYDNntTTirRuUuHnYyPpzZHDRrdIiDkKrRsStTAadDOGBGgbYeEaAaAdeEiIBLQAJjaxXhvVjJHSsypPYaAalNnzZtTaAwWAAaIiJOxXoNVgDxrpppPiIWpFiIbBrRnfFYylzZLERrvzZkXmMwWLuUlIMmhHWQoOqSpPsorzZvkKrRVBxiKZBbzGgkmNsSzRgGEuUehHQkKDdqYeFKkvptnNIcCiUuUujJMmWHJjTVxsSAlOrUuVvvSsxujEedDJFfSLIilOQijEYEeEapPERrNnIieApEnNAanVTHwoqZaAyjBEDxVlLYyRrvTYytzZVIGYygTAUuaRroGxXTrYlwcCWkKBemsjJLlSMmKdDiIUuKmEeMkNtxYiIyrotTUiGGFQTtqQqTtUlKkLoOoVvOCcibqxXWZFOoxXfcCWkVvPoObBjBbrJjEeZUexXxtToOsGgiCcIHBbgGhTyYlHXzgGTtZTYEeIDdzZiyvtNnMLlnwLsSAIcsSeMZIvCgGcViqjzoWibIYyqJjQjJVEevGHdDhTkKEWiInqqQvLlVaEEjJnrDdfFurRBbZzOivVfFZoOzUmseEJBAiIGgKZtTzrVYRdDFzrtTnNfOoFTLlTExXWWwiKnNvrRiLPpVdkKDvlKkBSsHhzAasPUjNnKXxkcCfwrJVDdhAamMHRrvodyGgYOomMwWoGAIKkuUjXOyYwWoMmjYyJtTjJVDpcCdDquUQdMOoyYiQyNnpBbBxawPnNfFpPpjJSHhsbAWwyCUKpfIxXUuBbzfWIiaAmAcpPCtTaWjJXxvYLlyLBbUnaepPEBQaAqnPAcXxqRuNkKyQqooORrsbBotTdswWFfSiHhrgGsSpdDepPdKkKknNkAkKRTtGrRnvVFfNybBYkKtREbyuXxKxvVUufCHWwjdDwWUfFBWXYgGfCqQvyMjJyxXmMkKYxkuihwrSGQqvVsSgEhstTOveOlEeEsSeLozZHhrfFxPcnYECfHlUvRrkBbKqKkiIQkKrVvRbjcCdRDXxPfCSqQsBbnCUuLljJsSwshbTACcOoWOoOZOIUuiXRbuHhUhHzZcvVZnNzCBrtTUupXiIEeoiiOmMPULPaApexZYZzLlyuUmkYlLXxeIiYyPhHZzRrYydizZGgmYyOEkqQtSPqZVvWwDaAdghRrAlQzBbvuuunMUPpumlLNaAUbBUXvVkIJeEcjJHhCvbBPvzZUkpPKCROCTXxPtWwTpCSselYmMJpPjjpPJzLkKDdgGxXhwUuWGgLlQbBOoOEEeeAEUJDxXbBpPrnsZzBDOWwvVodJjfKDKkyYZzyczHhfEeFNYhBbHFOofImMDXxdiKUuhKeQqNvEOoAaHhKkhHpyYPFfgGPkKpxzqAoDdrREeKQbjExXOpLjJgfFGWUkKuYFfNKkpPNnylKlLxXWYzZCcywDSsQWwzZUuVPpiISlFGginNGwWYYycMLlAiIGoOWGdDfJjRsZFfscFFsTkuJtSDHhdSssGWwaQjuUsSLlKyYpFeEfkasgGSuULJjlyYaAACLzZljwWJcgGNCcXszZSxAFOohrRcgTtkWwUuZQqUyPpYXxwdVMmvKkWGsxXgkKGStuUWwpwWiLkvoOMmVIDdqQvfWpTXxPptOKSsFIifkKzibBIZmMMdDFfDSsdmzjJZcNaAzZnGgESApvCcKkDdhHntJjQcIiNnEeUNnrRMJjZPpCCkIiYuUNRECcDhHhHdMhGgHZZkKrTtUOoOPzWwUuUBbkWwsGgbLLQpJijJInsiIDdeESIiNCcJYyoCRfpVRpcBbJnUGgKkpPOokSNVvFfnXxIJjfpQGNbBoOMmcceEbjjJJFYPDfipvVMLQqliIlbdDBkKLsglsrRSSsIiHGTtgBbNtTnhOGgoYNXWwPiQqbNUAamCzrvDTTttKklLdVjJFDdfGgIimMyYhHgeEKRiXkKLSPpsccWwepZzPEeENnNnrpWQZzdBQRrRkKFKkcCKMftJtTMmaARcaQqyaSGgsMnIgGCcSskgGgtWKLlPsRrQcCAaLlquUzmMdlyZzYRXxAamMJOojWtYyDdiNmEnUuhHmZzbVrRvBhPIZQqzPpRrIinNdDidIiMwIyoYGJjPpXeNONlNnZPSTcfFkKlLqiYkrAaNnBbHnPBbZzDlcjyUuEeYgJjUuiIIimbBhHmMackuUmpagGaHzbwfasSSspaANnXMWohHSnNeEzZsSsAfCcpxXoOYbBkZeEsByDVvIiahHfVMcCDdKAxYyENhKSqQpRmMrPRUuMNqryLlyYdDYXxNbMmBqCsScCSsnQcCqNdDDvWwVxuUbEpNYuTqgGQMPpsSSeEswTjMMmykKYWwKkmWbBwPNwWqQAVKUbqQBayDdjgqQhOUoOdFiFmmMrwWRDFgWEeRkKrBbiIXxEebBpOoOovVsPyYpqQOoKkzsSyxDdxGtBbVvTPpgUuXXOoYOZOozFEeeFfbBvVeEhwcwwWWCvVOooslGLYyhHqaAQSqQlLNnwNWwnASngKkofQqFdrRMPhBGzZkDdbCVpQqazZGgIiQejZzcvvXODdIiMCcmLcGlLgntTNOoTtfFBTyYRJUyShIiHiItfBmEeoOoJOoTrHMlLGDdjOJwWGObBKAaBbPpXqZzmMgGfJgGSOPWwWwpCLoOzZDdtrcJjCTtVvhPpaCeEeKYyeEHvVhFBbpkaAVRrvQXxqKJUuCcWHhhqdDQzrjJxfxXFfuDdAMmzYSQPpqsdNnDSszZIrrbBVvukeIitTiIfFvVpRrWyYRrbBtoOTMqQmGQNnqgvkKVwhHMauMkxXKiISscEwDedDEzauUyFfYClLdLLbDdBjJGglzEwWRrEgGcCWwLAVvslUzlLlJnQVxXHrLrGeEgWJjerfoOGgoWQqERrewtTnLzBRyYrJjngoMhHMmHhrRmAaAZhpaBbQhHzqpQCJjGgcIFTtIOrRgzEQcCCcXxppPPxXvsSVLlMmYoYHATtIbBigRhHCjrRaADdXxzDdZJZzSsXKkxIxXHCmYyPPQqgMvVDCNnOhHoAaGgcvsXxicCrVvzZuUzZRfFomMOsgGoKQqkKnNNVIzQNnXxkuUqpPpPQUqQueEkKKqbzqJarRDdJKEeIuZdCCcJQqEeBunNUlWwEhlOEecCXbdDIpPvcVvCZjmaAMJWAQqvdDdEFBbBKkbFffCijnIigOARraAawZvkBYGLlEeNADlzyYrRZlnNoOTgGduPscCJSDoaKktmUuUuApDQoIiOyYJwEeWXwWxDdtPtTJxXHNFfnUiIsYySuIHnNvVhYyVvGlZzsSLgnUxwVRRUBZzbEwWtTexXmMQAGLlrxXmMREeJPpLlNKkRrWwYyTtmbHhCxXXxcIileSFfsiBBNFfnwWULAFgGvVrwhTiIsSDoUuOdzgGZKsxUKkaAxXuAqRrahHACPGgylLRrdDRrHhQDdYrqQAaXdDKkIlCQqcWRsvVSrTxsSQqTbQqNlsSaBMCRlSsLDdqQrphAxXsSeGQAmMniIqDRoxXOlLqdhHaJgGLlZuJjUGkWwKgzbBXxjylNnILlOoRVvkKTtrBbNdDFTUuwBfgQOoCheFAawPRrpWBwPaALxbgaSPSsQqpaRYkKdERQXvVbBxEeTqatTnRvDdVhtTkjfFGNtweEWTnwGJjSscgGzZbBRgLlaTpceEZtTgkKGvpPsiEhHsodDOJIgMWwfFzlwAhHaWLKyHwOVgGebBEJaAehHiIJjteEQQqqTFtiDdwWDaAKCcrYUIgNnRjNMjTtJNrwpPWKDPufEiIpPGuUHhfFRrxtpPTVvVvljJtBxHgGNqpPQnhOovkKucfewuQquUUZzumLWCcbtTgSsGawlLGgYEeyIgFbBxcCzBMQRYEctDWwFeurQqbBRozTorRNnxRrzLlKvVVvgwgGdQPpOTVvkPTvmkPpKaAwuPpMASspLzSsyaOGgKhTedDEfgbBOsYiuULvVnUzsydnNDIiFfznNEenvHhIqBWwuUpEeZPTqQTttxeERMmqzbBZQEBblLXIdJnwbZzZUuBbIFoOETNYyMmZPNboOBhHVpPnOoNvaAsSzZGOAdpUFTaAtWkSGGgbXxBgnIijLcCVvOzxlENnKjQrpDlxTozZrEkKRrlSsHNnhcUuqppPYyPhnNHvlmlLZEevgGPWxeEAadDpqytBbbOlIAaWwwWiDqoRrVurCdcCBbRpPrmMlLeElBbyyYUMmOoAavIrRHAaeEhzEqQeWwCcsWtXiGgeIAaOHhpPozodfMYLnNOoQUIaOJzDKkdFjJIzHhPVvhHbDzZdaABLjGCcFfSKWwwZzZMOvVCcfFTtNYOLlQaADTSvwCcWVFfYjCQqgxbdwWRrlIAlxfObBoFMdDvcLzZBqfTBIHuJjogGFjuUiIiqQmFfDTtZBbzdvHcBbCVrDdRedQQdgGhUuDdetXxfFPqfGgtbOHwKkWRdgpxVvwWioOQqzzAQTtsLlSxDdKkNnVvzSsEtOXZzxXBbxvOCcTLlcCtnNQMmTWwjzlyYNqaCjCTLVvMHlFcCOgTNeEFDyYdNmIPpWyYZbqIoYuUrXzghGgSlNnzvVxgGnNXZCcoODESyYjrgGVJmMsIiwTIQuVvRWbBwTuUTtTmzZhHcRrRmeEiiIIbjGUuMmuHhHAaLlhnWwbBmhGPAaHOisSFxpPbBZjFfMmafFQqfFAJsiIoOuHhGApPRbBrFfxXsBvWwiIYfFZzNYzLejYJjgTFPxpJjPKLlDKlLkNnoeufFIbPwaJgGCcAdKJmMIiIEzwzZWfIbMHhGgmBLtbBZhJjfPUNnuDdeKMmJcCBvYDdiIHFfLtNYyRAQqJjEerHhigKIiAakHNmMuUqOtTOLlXSicpBbFGgebnNBjiIKJjxXToOdDLguuGgSsMhbBHmvpEcCcxXKkCTVvteIiyQqxdDrljkuwqgYhaKbBwcCBiINBbqQnbZZBkMFYyXfFFfFMmfZzxfXxXaRVvrpEeDTtcdDqjJMmCqHUkKKkKkrRlLygfFGQnNkkCJPpjlAaKkLEeMeEaAMwDdWxQxXDzWwQdLjJlFgUuwkKYibBILlybjGgRkYWHhHOdbYgVGMUumGdDRWIipXxxQqLnDYfGoWqtTAwNiITtMQqMNnCcQNnNTxXWwIiIfPpvxHhIZZDRblzRrZylZpURrKkSjJspZMdDcCPIisNnnNUVvzjkkKSBbtTvaMmWwAVlQrRqtTRUuyYymVsSZKQxXqznVvlElwQBzAftTPprHkcEDdHwsSqGkUuIiAaOoiZQAavyYICJDSnNoBrRDFjzJgGjJCcVAavvVvqhHZPpkTtKzWfanNsvtTLioYyOoBsixjJiIyhHKbbBtTBwWzyxNniIkKBDdsSGyYrbBaANntTRXVpPvQLlqWiScvVnOoNIiKVrsMvgGTuKmMkSsLtZXMUuaGARrDLkCqQxvVXHSsOHTxWgGKrRToOQqLNkWwSHmVKFfCABbWYhSecCcprRHdFQEeLjKkiTbBWjYAPROKiKTGgLltuUTPQqCNCJeEBqQQeEBStMfXdpWwPmIiabiyFfxoVNnvOXxLdDlnOowjJlHxXOoeEzZzZGDWwMmMmFwlLWXjJKhHPAZpPAdDCcabNAangteERrgDdgrRNKwnNWfPoOjJtLjFffCcvvVVkWsSwDQTWnXCUufFcYlIiIisUuhCIMRwJrOZhHuGgKkUzMyTUuthbzZuUByYHJjAaFuUfSPyYgCWwCluUYeAYyfFZzaEqQiIGVVlgGLcCLBpPbKEvVfEMAWLnNwWoeEdRrPrsTwtilGgQedPsuUPpSTYyPbBvNVviSdDwWxXLlYbSWPleyKlaZhhuwJtcsjJWwCisShHIcLVGcKpPfFkbWvFfYBuUyYoOVvEeCdDvVcknNxjJSsAzLiaMmBWSFfvXsFSTAEHrCnSLlTSsxXkzZaYtTbfFqkqsJjVlfFdDLssSxXHKpzdDHZYKkISjYySiTvVKkMMKZzvIjZrRLlIAcmIiWYygcpgmKRvVzSsCWwZmEbuUNdYyiVbvsYyNnJwpPoOkFftcCTtTtAjaFRkUuKgcOwfpNyorRODOoMeELBWPlwWVjJOvVpPxXCnQwNahHnNyKJgGjHKJtTRAJzZKTtkssmMDhFYcIclfXxNnnhvVEFfeyMmpPVvHaIiaDdqQttTKksSODjAwWaJmyYUNEBbzZelxFBbYqSsgZtTnNWfFdDInXxNYvVTIPvcHhHJzZSsAjJbsLAaoYHiJjIiIQUaGirjSkgiOoKsSsfFBbxXpPWPkUtkHhETtTBbqQSaAQquUAaETUWrpPREgOXjcFKFJjyDRMmpSuUiIqQHIrFoIiOtLlPjQMGgyBUdDApDLhHsSldPMtTIiXxtdHhlXxbYyBLoGRsSCcGjJNrTVvdMmaYybONGgdDdGTAPaAwCcZGdDfFjtsSBbbTXpYdwWEFfqGgQXPdDaHhAbBwWvByYDdsQqzFfeEECcQxYOcCJdRrnfFkKFSbBskBbHOZzXxPpbwWlLncpPwWolDAtTRRrrFRFoOlbOuUUuWFaAfwvVWtwWTVKBAFPpwWsWMysSAcbNCWAhWIjJaXtucdDCJTrOoNbBAiwgfwWLbCOovYZzPjRlYyLpPhYWwBpffFEMzZLhSsxXxXHlfOopPFHFfmjyYJuUMpMcThLltTEbrRBtTFxoOVvXeenNsoiIfNnaAFmyjbENcpyNniIYmMPcCCQqbVvEBEerEXgGdORrGjTcoOMjrLxlLnNpsSoMyYGgNzZzQTaApPJLljlLdRsYyLNaCCBbEeJIiZyVviessSSMmxnNXdDygFfaAzqQgZzkuRLiJcHhIGeVlLkRrKfFvbDkZzRdkHvVaApPdpppNiKKkkADdnNTEQRWjdDCcAauuUWSswwWurnGRaAFfrFvPsmMJjGgQkKJjZndjJjuDZYVIivyTtbOVvvHhVNnqvYPoOpOVvGgiVGgvOoOoDhHXzOFSswTZcCIizKLELHxcNAyYWnMmGytAlLaTtzZcoOCHhTYNiVvhConRoOnylmMQqKdDQqpMDgsUUXjgGhHTIiSstIpwVgZIkIiDdZyYGgevTDJjMZzmIidetSlExZEKgIiMmvVXrRgGATHLCapWwPeEzIiMmoOMuYlsdyKPpPxGEggqQsSixXGnsrVvCeRChHcSsNZmwnigGeEIameENMfAEePpVxmUJttTJdDkdTgxqQqQNNnsZzwFXxiHFAahHfHqjWwJmzZjJBbLDVbBDFexdcVGqqQQKCceoBOFCRrcfYoOyaCIaBwIEVIHqvVvwWPkKlLqvJfFFShGvVyfFcCcCYicTJJjRrCiVEuyPJjZuiJlgGpQqPoOohzZHOBctTQqKkZzCCcEyYSxziIZXselknNOQDsSIfjAbByYEUukfsPxXaTtAxBbPpHxXEPpEevVwWQhzdeEexKbRrUuBprMmeENnRPkTtjhbnNPpzZBHZfiHYVvCLqLiIXxhnaRDdWstYkXCNuJHxWHrxbYFbBfyBXRqIvVmMicLAzZUADdTvQqwWuUVVIcLlyacdDQjjbdDWwPZzpMmErRwVQqXgEfPOozoOyhBbeYyXOoxOoOoxaVwJTMmtGuSYyIPtaFVvPyYpfDIpPYyfFGgGvVJDoYYugMKkSYREerrDdXbBlLBPMXxmRrBooOCiFcUnxsSacCkfUtaRRAEejIyOoeiIVvzZHZzBSnNsOhaAlLRSXQRrEeTtqUjpPJUuTnfaWYupgRrPYjhHkvVAVvRrvCcwWVwQWkKYYQNnhJcVAnNAxIJjyWwOoKUHLqbQlLgvhTUEwWANfLlFBbPTfFtEEftSmBuHhxdDgyJjyYHhYkpPSAGgYuUeEyzJZkKzZaAkhAmjwfFuAmmCcWkOoVvzEeZmMMSNnErFVvkKQqlLiTmlrRLZVAAaavsKkDdUUesyecCrEjJPpLYyYFfcTUjJhGyoVECWUQjmMTYyGSsfwIiWeEBkVEBAdNWHxGgXxOBbWwuoOYyQqOohWcCwwvshwBYOcDQbtTqQvGRDdrAjJUTtuaLJjlryYSwWRNnhHzYXvVFZdtGofHhebqQfFmudDqTeEtGgiwWIvOoVelAPrSsuLKkLSsqnhYSFqQvfFwpbCzZXxzfFKxXUukUYyueydyiQIiyNQqQZZCCVvsSXRPsSrwSNPPbIgyzeKZzkHhpEWwTYygyqXxtThEeEIJyYBbZLlzDdVvCogGmXOeEKupvoVvyYpEkKdsBuOOoLlVtTviIoUYGgsgdkKDRrFRSsxXxElWwpFAaPnbBdnPaQkKqbBOosSNJfFcrZTdnNrWFfScCMWODJjjLxXDsyYhAahHrRtoqJIaAiogGZzPpDRJOojaZzAwepJJGJrgqRasOohHgapPHxEeIiqQfzZTaAGgtcCXJrRiElLNnUuCclCummDKkdptppPcCuyFfvVLlVjpPRAauUIsbBSRQWwVvEJAaoOiIjvoLjBbKGRrrMVvkKlLoxXjLprJMmbzZsSkLlKfFDSsJTTDbaAtcqQoOIkBbKYyvVXQikuqVXmaoPpQqOyUuGLfFMZzlqkKfFRwMvnMGvWpPxUSyYspPUuxFtkKTIdEeDdtTrgGMvVUfRrcIUFDvoHrRUFrPFfTFpPUtnllKpQPptaZBTKVvZzYeEMCcxteiIEcCcQqiQiXxWOoucCUwXSFNnuUtTuUpVLlyuzMwITtiQWnddDcncCNCATeMmEtlbpzyYzruzSsfsunSyYsLaApPlVtqVnSBbBbEQdjEeuUnPwWOozFdDqQqmlLUuaAKPTtYyUcTBjnNPHhxEeQiIqRrKkyYLltllzwWkKvVkKqrsSRKqSsBeHhHHVvhUuXgGJNErsuCbENhLujJphHFfMxXGguvKRrVAauyFUuhWwIicCIujjYgGaiSvdwHhWFgGoZzBbOuTUBbQqLKkvgWeCrROpmNzIizZZnOXrEBbBRCVvcFQcjaCIibBNpwfzsSZUgaGuAarRKKDdLlcKEmDnGTXwmMmmsShHheDdpPCIEenNgfnNpovyYBFluUTBrRWdBqDpVLkCcRHhXxHcaACVvmhHGAdDaAavYyIihuiLlbHOTRPpNMGqyNHhGTJGUsjVINnNpZpzjhHtBbyYpbXLljHhwZyjaxgZymWOoOOoSsoMzZPCcYypcCQvVqlGGWwgEpZQqzTdgzZigNnWvMhHzZWKzNnZDdNBnDDNiZLlWyVOkBbKZXwWxalLdDAdDAudJUIQXRRuTFoFfOfruUbXVNbpZswWsBvNfJjPpqRcCaAOOOOAAaaoLKGPpQqsaAmFKDqGqQFZzfXCDdZLqXxmsREeFfDdKoOnXxNWpPLJjFCnNFfjUZzZjFXQAaClpgsAgURpUuPqmMnLcCSYjYoJjEeHtThyYQdDKQqcCXyYSpQJEDdtNfCBXxZCSNnsKfsytuDCcsDdyfgzdyYDSmCaAXVLVlCFdwhpXxqjwYyLFtSxipaXxqHhzaTMmQtxPDJjqYiNnFTzGgDagGhHktJvVEejOFiTjyYSsJhHnqNnVvjJSsgGPQFEiqQGVmiaNKkvqyaABKRHIVlldEvkcLlgGfFHyxsHJjcyYGgpVpRhRSsrviiInCmMYaQGTiUsSratboOtFcCJElYSupPUXwWHEhsGbhAaYyHSZEebNWnNLlwWDxXZShVySDdZriWoOiXkoJjObKISeEeEZwiIYyDWwdlkBbKOuwHhRmQnquUeikXMmxWrROEoPJdDFlLfPqkdDClogrRWKHoOMmzAalHjJZOowWgbAKymVxULlpPjJXMmKyWeUGvVgLBNnetTypRrEZzAaewhNnHtTLbBPmeAfgeEGFUuDyjJJmzVxXjNkKKNNkNhDdDFfNNAanXumMhHgygGQfFqYIiGYyOspOaDdeghUudjJRVvCXxcrnOfeEGyXaewtCgaHhInNJHhNnjJjgCcGHsEeOoFgKkKoOECHLgALHkKRruUzpwmznAzZkwWZDkKNwWSsosqpPiIiIxyJaCcOsSVhHTfFBOoaAemIikKfDdFSlLmrZpvxQwtZUubHHHhcgSoOeOokKKCyyYEgGJLhqQwOJeEcCaXpPSnVvkKRoKrRpPxXpPpNnwIiFwQqwwWWNnncskQqSZzSQqCKVeHcmiHhuzBbaAZdKkDCYXxDZwxjaAJfJibEUlkPsPpqIinEeNZyvjJEeYyOSKRrERFfcrRTFfYFtTfPpyveQqEbUONkAOuUQCRsSrNczbfEXxfFlveLsoOlfnDkqQmzhHgFfGvnMkfFoNyXxmfSKayYARrXlKjiIwLqQNcCGmMpPqFfgbtbBdDgbBXkKkbsWAaFaXxWtTJjkKpkLMAuPeEhKUuqQApPetgJSsVBGgbnDdhEQiSMbHGnNFfBSszZNnIYtTOJnNqQKhElLdgGxrRDKkiwuZzjgRVvrffSfINgouQmIiRFsYFiaAPUkKWLIFffZOOmpORroXyrnRIKizZIBSenUtSsnNuUyeEBhiKkmThxgoOHFeSshfFtOoyYHyttbsNACcNrjJCRrKkcNvJjGgYDdyVPpLzZzpffpPFmZzYGgyDoNnOAoKbjlLLQqlvQqVOoGSYzZtWPaAQxSZMcuUGgdvyYHoosTKTNbBJjeyiIZzAaLnRrvVLlfFNlWXIGnBIRKkTpKxXeKXmYNQhHwJtAaTcCNQqnZzjReElwWjOoNIOocxsKkYyVQqDdUCcaJOomMjXxmMmyYMIwWGWrZzaYyxXjJqXGglOoCvVyYppPJrRjgGzSiGgEeRrBAawWLKkzzeSsbxXqCctaJWwAajqQVuUGgLqphyaRzyDdGrRiIdJWsPhyQqgSyqQqQDWwwWBwhHfhYHYbUuBUuyYyhYDdyrqFYlCctvCcMlJjFXmerUOmAalMpAaNSBfMGmOoMgTtckeEVCitQJTMmvCjVvEeQGJjrftEGOghERwCceRmmzawWUuAKfjGgWGgDEvRBCcbrVIiedwfFPpFfJFkZMMrEWreHGogehHTFRgXxqhHOKkoHhJcVtjpPqTIcvKYyCmFaXxAbsnVvTtjJPpPmwWLMQzZqouRlLuUEcCMjJxfLmVTHhmMLyfQRyHFWoObdYaAsGYHpSwgGjDgYZrAYHPQlmMvATWwQTtBEvVIiZZuDlYyLdlLMmUlQqTtpPbJjIsZPpPcUuLxQpPxWwXARwgGgiAuUutTvYySXCinsSDdJLiIyYrWqnyMxKjJkkENnrkKzTtZbUlPpLilZzLiIIuBGgRxXkPtribNgiqrRrzZRQxwtTNnYPpEDdntktSOOhVDCmzsXlLqorkXcDdCxKROpTysgMmJBkdDOaYydMFPZQcCqlvbBXxVnHcChRCcnanSBTTAaYhOoTnNnNyYHEfhGXXxQqHtMIeWwEHbOoYDdTuQqRrNEsbkPpvVwWirNRYxOoPMosSAacCSsorRnMmNSszgGFillLwupIflLyLpPlSfrMioOIqHhIwWDdiEeUOGlLxXHzZmMhniFDdsdDFFGcCJoOUWyPpVAavYIkdDKdXDTteHkyuUBbYDdEejoVgGbIJjiBvNngGyizZbghRrBmsIqeHDdNwWvjGTEakHpUaHhmlKPwAfwXxsSSpPBCcKxGBbwWiIlLFfTBGQgnKkKklcCWJkLxumMpPiIUksFMYnOKmNVZxXMKdNFLSlEVUuLesCcdDiISRrFrRQqBZCnQqcqoQqaKnouBJjZzVthHSsCrrRerRksoVYznNQwWSpKLueBIjFJjXWzdycCCccXxXxUIMCKkBbhEvkcssLyYlIiKSCNwWWfWSsmMdDPpPbBkOrNTtsGIigUrRurRrRNnxlUuLTtAjLLlloWMNnfcCFmaAiIJjHljeYcVvkEsGCHtThhhBIizTSsWqXVPzRMsnNSEesQqMJjsKkSEbtvpPoAHhsSjYXiIQSOndzKaNiIjjJJZoOMWPZhBblaGlPphBbceQsSqjJkPpgGGfcCShNnyYiAGnNcrRTWEAxYGEeggeEFoNDHGEAoPBbrRSolLOYyojJOoLlUxeEpPnPLlpdHkKfHhFnKuUnnknvVJvZMjoOWoOwxXYdOoasFfSEMpXsSxuUlWcCPYLYylEbZzluEwYkoOXxxuXvWwMDdYXxkarRBGHhzhLZwWodDOhaAkWwwcCGOLcUuKQpjIipOPpeowUuKIXxEDRrdUnNuanXxNAQNqweEWMrWeEUoLWkKzsikBKxIwIRZJjzzsYvHszmbBbBMdaAwnBzsBgSHehwWxSsSnNsRrwOoWsivIjJiVRrUuIyLejfTBTzZARuItgqAyXRhHrRNRrnrxfFchHNDdIVHrPvmKkMSsPqXxEeeEsSQChScCTtXYhCKVeDLLvihrkbYQVnAiIIEeMQMQqmqvgIUuIuUiyYefqpfFQNvVqQhHtGgIfoYyZzTyYKAlLdZtfpPIpPyQdpXTqtAZQAPkKIiIoGgOXsTflWJMmQPvVHWBbDVvfcLvyYlvxcMXxPpsVvNnZGFjJQiDdIqhHYSCcdUTYSFkczbczZFncCpPIiFfTqQejzASsoOaZqPsxkqJjOyJyslNMmQruLlGaSGPLcAaMmsSdUuDqxfJzuaAcCJcflwxXHhkQWwqiIrSMEeQhHLllzVvbBFfcxtTgQdkhHfMSgklooYyAaosSrLlLlZzHhQFnVbSSzPBnvxBRtUgGrrlPFfpTtLxwdDWqiujDUaDdQqzKkovYwzIPpnZzddNbntTkwsfFsrqQRSSmDdVwlLHhGICcGDtPegLXSIisxmMmQqHhxXwMBxXbYzGXAJUuYzWJxSstTBPTJZPzKkgVvGPpPnGgNGBbgnivJSugjEetgntTYQgmRrnrtohBIBbUHBbVgMBbhrKlvpPPdtTQbDCcwbtLfbVjJfFOPQqFGMmoOishOoHScjJdgGDEHZZzzMMWxtgzhLlHkKZNEoVdDfFvOeAadMekCWMXyYdDxmwkkbBUgAGuFWPdDncAaAxXoOJwWCqtTfrbesScCrGhHgRRhaXbBxAHxoMNnPoXxcEwGVltTuUutUfJjDVsIWfFwAyEeJNnJUiWwHfsSlLYUvCcsSkVUmeEPIiUlHiIneBcPpUSRenjEexsShEbHhnNQkQrRdDpaAPZpPaAPpHhLLTmMiIXpTtJboOtCutTpkMQrTtRfZpNJDqesNvQTBbvSsNUjJSFZURZZPBLZHhzauUDNguUGwFfqhHWsSmZUYvVvPfsOoxIqICPBbpTXmyQqktPpxXbzATyYyJjCIiZzWwhqQHcYSsqPkLLNTxXuowWOoOdDftVvYypRfuhOVdfuiVvCPnNppPFumRDifFfXuXYyBkKbwVgmwWNVmSmkKMtTsfFAaWrQLkKmlgYpPdDAAaMxvLlQUKIqaAxIiEeirrRRCEeTBdttjdBIiVvbvVBMmjRPlJOmRuUgkXeExJlOVKkepPqEWwAaCcernNiISsiRrmGgMrJZzvkKYUPTPMVUuMmvMUcLeNnIhHfFjxJjFXjJhAGUuSArQGRjgvVjEejPErwWTttTRWDXxdaArdOEeAmMajQOTHyRrYyYSCcYydfFlJdFfowmQCcqswRDtzRQqCjnNQKkqnNnbUmMuYyBQMmqwWLlApNDNpfPLmMeXeWwErfGSGgybSDePqQOVPURrkoeExmMWfFwMOcDdzZjqVvQiQqeHQkKYGHhtFeExuUXfePqQKkEZYGiSsBUuppnsjJrbBRRrWRprxccsSsSzzqnYbBuUqIYDYEOoZcBPWVfCcsylduUDmMLbBkzZKHNQllURpaLEPpQUQqMBsSEFgGOgTDzGgfeEeEYyxynNZXxZzDdrsjMmzHhZJRIiSsgVBqdajJADdDiIdCPpoNnybOoxXWHmMSfFVWiIHhRrHYyyrRYIiUoXNnhwnDTtabevEeKbFgzZtJquwceDvVFfdvOYIQYyqigHuwWtNQqnyYGgCyeCcEUuleRMmEPpXxYRrSEuuynNYSzfFMtIgGEefReNWwnlLsmKwMMaJjUWZyOoYzJMbBaHIiKzjZaswWKGXUhHbMZzsLlTFeelLpJjgGGgnaRVvreuXxQqtjJnNHVGqBQliIhukYfFiXmKkMaFfavCjHqAgGTtaTtyywqWaxXqQrRKJtTNnjJypTiItGPfFSsUywRrAFNtuxsrHobiIhnNeErROoZqQkKXxmhHMzVvvVESsYaAHnNhHwWhiJarrATuFKAXNPEepuCetTEfSsIcObpbxRXxXLlxXxdDysrRmGUyyOdjRrgiRIirbBIidAEeTfFkCcKKkpispgGkKPUgMKkmjWvAXGgEHnNCcYZpFeGxvWekKoOxXhUKkuHdDQZTtzqBJJqPxXpbQqRrBWwCAYCivtauWBbwHhalCQhwXhjUncxKMmXxyTSwrANHMiImlxXQlcyhIFzJsSiIXxXRrnNPpKkrREvVDZHqWweJQqjhXDdpSFKBbqQfgJjnKkNGFeaJvBbVFXxKkVgGwWyYvidqoGgWwQqiIKLbdDLjIUpPzpmMYUevIcJjjtCIgHsfjKkVQRrtTpwKkWVQhiqQveiWbAicATtoYybOEDaGgAdfEcCbaSPpoOSszMmZsSsACcBeqfnNFQnEeIiNFkgvHhCcCDDdXEkKfdbBvDddlOogGMQrRrRhFfsShIfWSnXGtDKjTjOoaAuMXvaFmneEMLlAcCTtNWMJjnlLNznsSCcrEcVvRSNgIGGegGgXpkYDSLyUHheEmeEoOZpPALlclhtawWUuxGWwWwkaAezXSseLsScCsTETNnttoOvVVEJjmMzKizGFfvWPiJOoxuqQUQquuLlSGdpPmPtTkLQqYNWwrNOcHIoMmOngNwalLnCdDXhlmMEeepPlSsktWfoZTtxdtTIxSsXoyzZVQbBOooOoBNQqnhQqHAghbBJjiIhqQHHGmMVvazdUJRrtTJjDNzJjqSpVxXfgcCNmMdDRKkFfsSUCjsSJcUCcXxJaAwsvVVvSrqGgetKkDdVvFUuMmfaInPPPDhKDrKdBClLZlLztTJjXbWJjLlpPwBDdtTxcWwNGgnElLgiCCcfOoFjIlrUnNKGLlNnMmZGYRrQqYyPpEIYVvzjUuccACxXcnOolBpZzPiImkKPpMboOSrDBbGgtZzqwTtWQqZnmOPAaXlRJmFfoOCtJgoDxGgyYeRbcDdCBJjjJPpbRxXrePpBcvLyYlVCnfFeBJGgYMihHIOSnnNYyNEzZSsnZkKzhHNERrfeHtCuUmPbBmDhHdMhmeLlcCFPbIiyKkTtHrJkKpyVcBlFGbBjJWIabBjuSsUmMJnlLOxXoRXxtjeEcCUTxAiwXxHaeEPpwRrcnBgGCaYUDduhHmcCHhwSfabkvwTtkUuQqKGUugWwfFaAUXxukKoBLfrfYyadEeLOCCcNBcCohKfbBxXNDjoyXiJjXxIqeZSeEbVpxHheDyPxnNSstBiIsftTFSqQTJgXxzWqQpatgDnoBAlLDtRDdRrnjJgOoeEfFrgfFOXxkZzCEecKDDdTwRrgGCcmMWmTtaAayYubYmqJmMpTDwTtmHvTtVhkKTtMWdoOzvKtTkVZzZfsSRihseEPrdYfkfCJxoGnNePpiIwuteUuKksXxtTYyteKBbTudDKpwTtSkIGXxKsJcCPpRxXIwWgAuwWmMqhjfFJqQyOlSBajhCWwfFUuVpityirRwKkZzPpzGQjJBbyfXkKMmLnupPMjJLHhIildoTAvVdPpDAneBbEeENtThYMvVmoONnHNNnFLVvkKCiCyfbBHpPdSSttTTEeZzEUuejarjkhkYAYynWqcCaAPpNcovwWLpwblzZeEwWmdcfFCYnKkPXxFWoCGSsrzZfAJaTZzSsSTpPtGIigsKWjSVBgGVoOvIiFxXfvEeIwWDniIOoBeMzcZrkMGqQnNWwNnPCcCDdGwMZzBbCaZziHhzJtTiVkfXxFmmtzZpPIzjgGJZsJsDdzZmMiyzhPpFftWtTwTZPkhQAeEaqfFSUulLGgvgZzGKkqlLQSQKQaAXxByAMmaAKHhtuUsAaNcRheatsfSxVswbAIdnNAaDdDlZaXvVKhHbyVwBiIGglLCaAgvlSCTjWCcUHHzAqQOoLkYELpwsBFKbBTtkjJfPpysInyYGgVPgGpptpDEqLITnAVvaIiNnNWtSRuUXxpDOlzkKpPcCZwamerRFAtTaVvekrSsRwjGgJWliEeIvMmvXxgeEYyqQyLccGpsdDYmoRjWlNnLrmttTTicHSQqQqsSbBLyxNFfwfFBbtqdKpPUuyYFJlUuTpFoZztTOkKkKjJkXxnGiIGRrBbTGBzzwghHGWSpPsZapnNGgkxGgfyYdHhgkKGghLWAIiaKkNXJjYJjhHIBHhJEpPejsSAzZyYfFMmMDxFuUmThQqxXHsbhkKGgHqbiIjcncptTtkHhIgQqGHQqRriIhkorqQpSsemwWMEaJzZjyJwtaYyAOoIJPplqfDhPOoCElLlLhHsHyYuUvVywZzapPckYyvMhsKjJnlEeJaAjtkwMmXtSshoOovkKTtVKkhHhcKldaAagAeSsbBESsmxLlzQqTlUlLuUtVmSsSaFfgGARveEkCsxXIwxgvVxXbfFkKtTXcCdDYZgGkYXISbfFOIlVSAFvVwaALoOlQVjZfFWwaAJfdwWbOsdjcKkiVqzIKgQWhhHGVvgqQsSjJTteCynNpPYKhRFdDaZbqWLeLqQNUugGZeEkkdDKzvMYrqQcCWsmMSGgwLMefFEmsKFfKkIiUupPSrRsFfJZPpuXxeESpmiIzXxPdFfPpZzBYybDuxcCHhXPkKDdzaAvVLYeECcLBrdzKkRrziEIieAaaAXVPpFitnHhqmNnmZzkUuKnBbAaWapLlPQwOyYgVvFydlNnQqLNRrmMlQKkDDddFfwWZzQqbBhHqXyYBbpPPwbBrggvcCRtTrYyTlLsStGaAyBDnNohwPpSsyKrJBZzGgWGfjmMbBJnNqQDcCEeqZmMdDkKdJjFfqIiXAtTamVvgGmoLlOcKKqYDduhLlQzZczZUtTBbuQCCAacSsdPrRAxmKUuoObzHhzkKWkAHIiyGQWUKWwrRJLRXYlLRrPVJjpfFPUUGltKkHsShAaicCIkJEfPCCcIsgGKkxTtSsobBHhoQeEIinhTtjJGIRByYbaLlrdDnTlGghyVbjHhkDvVuUdEkCcKPpUupFHBbzTliFFfZeijkDajAWpBVSsvVviUkKEyYOdkNnnNEezZXOoZzpxXftGyJuUAaElZiIymMnyVbSHbBhTtupPUyYLlLlagcCUOoSDdzXFflLfhHAaIzZoFfFfhpmMgHMNUmMMmzZMmTVwwWPpWrRvtUuliILgJBTtKkMaArCMttRPprrUqitWSjJjvVvRJseqQnNdPpiILnmMNscXuUStFfTsxCjJWwHGZxRyOiQBzZLlzYywiiIMnfntmXxMGofLgGhLVvlmLlltcbBJcAQDwWdnVBbvLjJZCcJOotqoCcVofFTenNZXqaZZtjJTIXPGDrhoBTFQpTEHuUWwgPpGDqkKqDEvhVMIJfOsSHhQJjqUhiYNnylpAaPKkSsDdLbtbBaQqAtTKkFpPQdDbdDlCWwXHhxVmlLXFfLCccCrRcCaiUugGgGUuWwKkLzZDOoBXlLabBAGcnNJysthHdqKkoCcyWwbwWBMmnkHhKCcomzWksguUJJjlQqhHpHsQqShZUuieEfcCZQqjoAiFaAfuqOdDoKklymXxFDOYQqyZQqiEIxTwdRrDSZiVVvuYtTrRLsSlLDGPSspKkNngcmMmMRUvOQdLmZzHjJhHhMmMNKkMmgGnozZBTHhGgPIirRpYQPvVXwjJNnpYYyyVzkKMLyYVQCLJjeEDdeRPpfFOtXLgGYxuUPpXydPzwWZTtAmMaRqJkrReLXcCZEeoqQlJNsoOFWwfSsXFfxKwZcCzfclLnNUugGmMCFfgrRGuPDaognpzntePpfiQqzBJjWwWNjDixNnBbereEXpzPQqsSxXCcbQBbiVNZYRrSZuRZzrNlIySoGFKktHRrkoAYSsZlGgPanNXxEehHaAmUSsWRrMViItpaAmMCcJjEeEeKtoqDWfFxXGkyeEYSsZuUXnZzNOtfFZOUEfdTCesSySsrqmbZKkXfGizZrRWABuUwlajJAMUWEsSTwWtFCUnbBVvNVXbLlXLlxTLRriIFfhHXgeFgGUIipdBbGgkfFsSRnmnibBIaAKkXxJrLlGiuyRkdpMoOmPiIITkSsKfEjvoWhYkvROoraSsAVpPBbZkTtKmFfGijSeNnIiRfFrISVzYyCPtSRraAsAGybBYjJraArdDRytTYSpPkKsCgWglLJKHrNAQOotbBdDbBHhjJiIqOosSoOrxXeDeEXxybJjByYraAAtTsAGBXqQlpHhWbhHulGgLUYRryHiIhfSshhHzZHEHMmxXIicqGPpFCmMcUuSHhCcsbWtfIinarRKXxQqkSsALluUiLvVYvVQqAvVDQUETttTeurqQdQNaqgEaHPcmLlbALuUvVnFfBOokKtmwIDdpPiWMCtTcXthPpHvVwTTttLiIsFpPfUuLlSfFixRhkaAKHyhHhHedDEqJjYpcIiQdDjJaXkKSktNcCnXxHWRfaDdlubbIVvPpHjJmMhdDPpjJEiILBMYynOowWmMyYjgaqRrbBIiurrvOozZJjWXumMNiUqQWwtTuhiIqQjpQqJjAgGaTAajqdxXFYyfPaWwMTAOdsjFrRfSpUAaAMmaYyJjDaAwdDtLzxUbjJBuXqaAQZLOodaxXnaAxaAGgXwiIWfvVFgGEegybpPKVvXxVzfFWBbrRgGoGNJXxIcmwWMFfeDiIVdNnDTrUuRedDEtHhDPpdawCcAaCXxMmczZzVvtTVuUigLEebBlGBxoLHeLbjcfFDIiyYzUikjAjQZBzZqQZeEivnPLlpTtkOSWwISVmMwaAWdmrfFRPpGppMWwchiXxcrGahDdJjyOyrRvVqcCeZGmbBMolLWwiJjfiIiqPQZUmMuqOoAPtTdDLHiIhhHlHzavSsVdnNDkKOGNbZXKXHqQfFKCckhHrREehxtTtVfFvTkxlNtTOoOIiFREwpaAPBbROolfFRDVvxOoDeEPpddDXMOAaomdXFfxSPpshvWwqNjsSLZuUuSssaASLSaZzJhHDdveEVrpPmMFfgmMIiGRfFCcjlYyeeZQqlDcYyTPptxXAGgAtTaZdWeCmHxXhUEeAHgGDdlLhmPVvVLlvFfEKWiIUuwURRieEeEXxSFfsyZaUFrRUuXCcQqcCRZHxXDYTtybBdwJjifFIjPfkKtTHhkEfFcAbBHmMfFmsSMRCcTkKXxlcodDsFfjFQSstwWTxkUuokKaAYygjoJgIGgiQqmhBSsbRtjOMkMmKbFWJjwtTTsYaAlLlLujJjnNYyOortuUbWrRwGgCloxVVCUCcuJEqvVsSAPOoveEuUcBoOHhfFLlKgbHpmlLHHhhDOGNPpsSsarxUQquXRWNwWnKkOWaAMmMmHiPplLaAIEfIikKHhsSQqFfVvoZPpAyYHhaSPLKklwGLlfJjdMFffIfDuohqQHzuUZHJjoOIitTGwzZWMmDdJYATtuksSvanpJtWnjJlUYyuBbLNoOmtUynNnPTteBXdsSAamMcoOQcCnRKkQaAnmrsVvkdbBDHndiIDKktTIWweExXieXaaMmrRvdKIWwikqQoODVAkmvFAdYeEbjJSzfFKyPiIpPdMmsSDFaCcYyOwmxXxJjPxXAFWUkKuBZhZzAAPMKoOCQqCRrcAjJrRMGOdDoJOoxXCLdIhHiJjtbBrRTKkeUutTaAtToOEpZgGOoUuzNhMmRKyBbIsSDdQyYVvqQCtsfwWFpzLnonpPEgGMmxgyOYiWmcCAajOoYyBbJJkKjDmMpHMYVvyNecPpCiIMnPpITwZzmgGFfrRaAMnNrsSLDvgwfFWGVAaZQqdBbDSpkwTGKqQrRKkzZBbiNHhmAHhHhYACrjTFmkftTFwWfULlurFfTtqbDqwPReSsxXECCSjJslwyYWAwgGWahHxaAIrkGtTRZcmhHMMunsSBxXITqQtpsSxAaCcnlLyKkLpPGSwWpVlLvPmPtTfFrRIFdcCpyfBCCtTngcCcCqgGoOeHhEPZzXxPpFisiEeIKulLYywCctpPTTtWNTVvtjWeEOowCPqQrVvvPFwWraQqAcOjSkKwWsIijNhHnPqiUuIlPplIiBScpPCIiKJjXxuSsZpoxXEecCxXBcCbaAuFwWfRaATtHhgGzxXcCzHkKhNnmeBbrzZYynyjJKcczmuZwWzlLCqTNCcVPxXaVvrRhAaHzZswWeLlDdCkoHhpPeEPwsSFcOoCVifFKdDlZzIPtTkKTgwDjJWuPpIxXiUuzqQKlLGCdDtTHfanKPkJqAgTjZzUKtgGQqQcCqSoOffCAaKkSgzZGmMuUgGzSraNnAFgwgamCygIpPQqfLsvVlLqQvliILqdkHhLYnyoOwXxwlLlLWmMgMSsxuUXQzZqhHMmmqQGlPNnoeJBqkOaqQQFfgGZtTXqQeuUVhHgddWwDDGnaAEkHFfkoOoOyFfeEnZCYdknNrRFbBgGbAaYySNtTRBbFfbBwWdjDBbdNnueaFfkzCcZKoqwWlLHlnYyNZyIiLhHEGgcRrtcCJjcdDoaArKkcuVpVHhjiKxUdaAvVuUQqDNnVZYyqZPpzLaHmJjMbBGzQpaAHhqQPpsTKeFfyYxXoMGgIDpWwEjlNnLJyWwmftTFMKWwMQCcqKiIkzxcCzZXxXpPwWSsXzZEluBbpoIIOxHhPGgptTnNPxozoKgGkwatBHTtSWJdDjcPgjJGxXpVvNcFpSsJjxXdrDJBjJjJLKklVxXuLhYqQzZyuUFceyZzAaNCpXXYyxRlLOxXoEVdDoSVjJTtvtTTtZsSzsSLlHesOoFfRWHIiIrRUKXVvyYmwWYVnTUutNyYqQcFyxLlwbdDuJbBKkhTtcFXkUTtYmMAavLlkKVHhBerYyToOQqyAaaAYgraHhKdDDFtTnNfyYEPRcCbjJlLkKmMBlfFLIDOSwWjJKkAaOsDdSYnUrQfFCaGgpNbFfAiJjUuINYyBbOPpowWulVpPNSsnwgGRrMqQwWwDdpPOoFFOoJjfZiGgFPkmMucYaBWAXIoOaAibPrRcCYTtqImPjJHhiIpBCcbDiIIiPdyYvVHeeErREhvxJhOoNGgnHBbcCbBtTsSQqiuUIKkYyAaTtwiIWVIiefFEvQqDdtTriKrRMmkIRihHsSQzZqYyZzaGvVgGggOeEDOjRWcCOoBbFJuvVpSDdgIiGrRZbxXIVYykBbIwettRZrReEfryvKkRkaSsDdUubjSMuISsUmMujJFPpfMmRrolKkLNnURNKdDAakeeEeAyYzZsSQNTtweXxtgiBIhHbBwOZJQzpPmrRrRECibBalxXWNtTsSmHhBbTViISstxhLtSSsXbByYEuzRJZzZbcCBbBzDdpSsKwFrRfzwAaQBIlJuUjkKDdLuzBbZcbBbwpPWBCfgCcgvVbIiZHPphzBIuOfFqjJQRroUuQRJjHhrqRrNIinMmFfyYWwwRrIiSuUFfdDsWZznNTtTtORVvoOXTLlnkMEbVvLyEeGgbBRtuJjJjUnNgzlLZhHJjOtiVvuUmMnNvXlLdgGebSstTJyYAvVaYaAzPFnNfKaAkpnNzRrZQOWwWbBhtvNeNnPnyYNeyeJDdTtnNIJeEsSjqyYTtoeeEEnNsUXVWwcCUuRkKobkYKkPpyKBLaOoXvthwTrRPxxXXVfEkKyrZcuUwWCnMJjfFIrRnNvVCcMmXbCcRMJjvVxXmOjVvJXxLlKkwihHxCcKGgVWwfFeNdrRDfyYSsiyYrRISGgskKPGgwmMPPQqRLlIieEXdpPrRGviInjaxXCcLATtqlRrbLlLlYyDyDVvFfpBbPdgoZzzZGyYgdhNhUTtItXxTtXxLlSXxAaZzsNnecwbBHkukKUeSGgmMdtGgTgfFqQbnNXOozZxkKDLlBwWjtqSmMSssTtQTdnNhaAcSJjuXxUwWsKdDPEeVvpJIiXeQiwWWwsoOSDdIGkKzZNnbeyYMmEBfaADTtdTtFkKSFfsVJjHhhEriIRPtTpjqQJMtTfCKIJwWjGAaQqgHqQgBoOJjcaALlzdDMmSXfFbHhNnuBRrbqQaAEcjJgfFmMOojOoUBbeEhqxSDdEPpdDVLlvteOoPCZtTjJzXxiNUPTttTeEpyYaArRGgsLtTjfFADdaAgKkXPqQpxGTMmloOsKkPKrXXYyiIkghHpPGBbayXxYFDdSMhyfFYlLvVAQqcjJkKDdYyCgvVFiIOojJXZKywWoOXxXxidvMmVDPpWbJrcCZBGgkQYyLwIiEuUeEebZwRsSRPpotTOrWwrtTrRtkXNnmIiMHGDdDiLltkKHTtwKWDbBaAsSmIiKwYyWTlFCPpUuzVvZcuDdsSYyqkKYgGEeyHMmcChPpPUupIDFLpuGKkvTtViIMiIKkuVXxPpxhHIhVvmManNAXIihHZzAaVvxXnJGQpIiPFfZzqQRrHwDdBiIIokKLlOisSlVEIVvQfFqEeOeEyYgGihpHDmeZhHzEAaCcEhHoTsSCclLwNnWdDNVBbjJlLvKkWGUugRrWSswZzCzZhHNjBbYqCcQyrMmMrWZzwWLluUKkbjJoFfVvSvVMmMfFnNmMJjLtCcuUGaExXUTVvbBjOgGlLoJjwWCcNOonMyeESEaAShGmMWwgcpPCpTaAtkKJFAaVDdzfxDKkQnNqdPUvVuwiIXxhOEetTvnVcEGVvlnJjNUznNZutfFPwSsWdFfATtKvKkTtszdoOPpoiCcrRIYMmmTtvVukvVwJjWSsdDKUCcQDdEecqUubBbjawzdBJjfFgJnuXcCLdDSssRrSoZKkXxXsxSepPEvbBGgVYvVyIkbBzZMKcDcBXkKxQqbaACLmMloylLwCjuThMmDdRrwWbBHIykUugwcUuPpPpxLlfZzNnCwTMmtdDZeEnNnNhKWGgwRrSKCIiaAYyGgNNnNncCnUTOQqoxtFfRVvrcsXiuUIHheEcKkEYyMkPpRRrrejJRtqQUEebBukSspRnaevVcCEwWQqbBADdQqVvNXpRrRrWHAaUVWYPpkraGZzgLLlNnYuUPWwXxpTHXxiIwMmVFfvBbzKkeFfLzZceEGfFglLCPpKwWkvJjjJVvVgGPNfFSsbBNvVfFSWwoOdDvVxXvfFAaXxRsSsSznNZqKkNtlLlLQqZzBhsSVvOoOokKiKQbBlLXxcCNVveEZmMsAFKGWwgkKksJoOuuUMrRGDGvsSVQqEevEkKXxhIyYMmVvReErSeGgpnNGABbDgGVvWgyYGgWwaANLcCYADMmZcgmMUuGbZzvSsFUuOoIifDdPpTtPyYiUiuWwUYxXPpuUPpymnNMneRrKkRUpmMFfPTtGqQxXmeEtTMtTfTtFXxguQFYyfMmpqQaaAGgGguUHhAvVNnPmuUMgGFfdDyYHGKQqkFfZzgLldDCkiIiIvIiYWCcwRmRSssIikKSrQqHQzxHEecCyXxFNnLlUuuGgsSyYwaSIkKCcbXxcCRqfFYyQKBeEzZUSWVviIwosBbTHUZzlLjJBbSsIxXjDIASsvLPpGOUuLpkNnTQUkdDfFkKmPPppuUuVvUCczZMTtdDqkfFqQyBQqbpPCcEviIexXtTtTICYQqyzZSpHjLlJgNDVYfaAFyrgGREevVvrRPpXbBVvKSyYsDdZVvvUuVNnGgGgcCZzkoOwlLWoOAiIlLlLxfFXaXaAzZxbBhZzvVFfHLhHzZaAltTgVrRFffkJjKgUxXuYyBbGFEeUslLBlLbSuEWwVvQqXbQfiFNnYyvVNnYnNyZlLzXXGKkTtiIlLeEaVvpqQPZEezAgBbEenTpihaZnNzQqbBJRloOLrnNBvVGdfVLlzZMIBbEsSeDSsmMdRcqQazLlAakMmKYvDdcCUuVjJHaAhyCcxFfbtTwffFUuFjBoWIiIisZbBTymanNAqQOodDyzoZrmBbMgOnNoNnaRruUhHRfoOFRGgjGgJrrVUuJgsyvVYiGmMgISYysCcSCKxXJaALlvhHVIRriRjJeVvxhHXEqQbBNDAaZKkWRrSsCJjQqBbTtagGziXSlRrAuIiCbBCLXZTZzcipPInedDEohXxXBvgLoCNncuUIiThCJjcwbjJfUuacCAdDGgqGgjhHJQHHTfizWetIFfitTihYyrNpIiPyjfFJCcXIXxXxTvVBblBbGgLxYyuqQUXvbBVnNJvVrlLNlLnRGgIidxPCcpVqQvXcCBbnNDOohHtHvVhyLlIXQXxeEgGgIGixXIgEoiIUuBkKrcCbBQaAqwWRGrRgYyfhcCIoFfOQmaAMBeyNnlYykKGIimcCwlPDdpWwKkKkBbBSksSBKkEjJeVvZVparWrRQqAawvgBOoYklPpLcChHCcGWwHNoOVvDddXoPpOfFHhiIxdDaADPpWWwxRiIVvKsMmoxhyYJwnUJjuuCRQqrSmopPXHibBOaAohHVqFfidDneEkKvVeXGRrgZnNpPKDdLHhYcFmRrBbBwWdHhgGwrZLuUrbBxnNXREUrRueqqQxXosSOhtTQqgOoyYoOtsSTEvoEexXEJUucCnRrYydLtTaAHhYyRbBYBbmMymbmMsSJjmMareWwcQqhHCkXwWVvEuzZcChHoWaAKacFfqQxfFMEeAaKkAeKkEamMNnMRrmmXHhTGxKkvVeEKhHkSSCcsNnojJjzZOcCQYyBsSZcCYOfFXxaojYSsyJCcjJUuOgGtoqeEQNnWHoOQqUMuHYuWFcAXmMEekKxtBbTKDDlLJjFWmMOomwWPpMmaAMIVhQjRbaABsSKlrRLrjYQqAOVEoOePwWpTDEeJVvjZrbBCNfqzZQaRsgGSrJEejnNemMEXcCADdCqQwbqyhZzHRrbBPpAvRfpPQqmMFbBFxXfxXinNIUXIixuwLptxQpMHhYyxoONJuigGxCOAZzuUaAaEKkefFoMmjyCjJDxXdYktpVvPEeTPrjwsSkKVvJUeEqlLjxsSGBbrReEWNnrXPpSsgnNpPRKkrqiIQZxXVvFJjfNtwdDUuUrHZzdfFDmMhxXwpzxXZIPmMOBbwWoWwTtQMmfNsLljoJkKjaAYfdDFqQtTdDPppDULlueCcLzZIiqiJQqLlnNXfFmsoyYwMkXxKkXxIYyWwxXnqQAayYNBbOUdDLZzMUumfLlWTtwWTzZgEWwFfaAeGOoHxMZzyYYymXLTFfDpPAaOcCoqXxWXxwWwQqcvQqVVvGZzZzbftRNKXxxCwWdDchHtiITIisSluUdDFixBbTtXaAwyYdXVhNKkBZpBbPGxKLxXjJYyvVsmvVuBwWbUDdyYLGgZCczbvCcrRvvVPpeOaAipzZnNmMuUPDdqQfmMFSGuUgsoOICBUuzaAPZmMgeEGPnNEedDpIizpgnNGhHLlPsysSLltTkEQsSqpPmMmMPpDvVnNbdDCcfsSvVheEuCzxNbBmMIcoOkqVOoFfvarRrCcuZzURCqQcqqQuQKjJkBbqUgYyMmPzZJWuNnAFfDdaEDOikKTtFflLbTtEeFfjJjMmJsGzbsQqyMmkKjyoOnvuUVznNLPLzZIiiQrPprKkPpKTmMtxEiIzZelTfFsSkKVvLltaAMmrfFAaGJjgGgStqNXrRxOonQOoJZSQqsWwWrRFOtTodHhYaAyHQIotVvvVTaAoLlXxOOixXGdDgZqIyYiWMmwGTtDRLafyYhHIfUuOoPtTTtGEfFwfxDdmMXcCgGFKopPxXUsWzlZzmMZhRrrYzWwZWipPIukKjRrNpPwYySmMsAZzTZdVvbKVvEeRrkxuUXBDmXxMKkeEzQJjLMmRrRrvufFUBpPbVEeqSsQtTDlLWHeCcIIQqisebnNBAfFRhHHzYyPpWwbBeShHmMRSuJjdDleELdgGdLlGgtTDGlLKkhOzZXxVvLltTGkQqufMmfFFxfFYyEeeEhdDpPlGIigNnGguUlLcFnWwtZMTtovkKoHhGBNNnGTtguUaUuhRrFhHfrRkKkOekKEZgWwGLlwOoWzCaHhBbnwSPqQbvVBuJGKkgjXxPLlZzpkrmMmMvVzVvQvsSjJUSDzNSsnsHXIWbTtiAaobBOMMpPPoOpmYlkDiPpRDtSsrRJjPeTOoiivTtIiVYyKkZTtUsSLPplwUutTfFlLWjJBbehHGgDdYvVMmbnmOeEoVvMNnNBuoOoYyJFXxIwIMmWdOkKTdDTSsttmbEeEZzekKjJcekKoOyYGgteEfjJSzTtZtNrCBFvFJjPpUuqGgaAfFEerplLcCiIPXxCcUufzZxzZBbMmhtaAcCTkKHAoOzMmZfFbMzZudDucQqCZfFfRrFPHhlexXELjVUuKkZYpgGPLSswWVtXxTCceECFfGgcvBZKkhHFyYApyiIYsSlmOcFfDdCftHUutTtKBbGmMaAWwgsjJhlLIiHkKDiWvVwJjNBbzkKTtxXkKTtFnJjNcCfFpPYynNQCIabdDQqtLXxomMDdOQXUuxfCcTtFdSsjJCroZzObwWBJjavPlLppVvPIRhvVqQXxrRczZCFfHvfkKcCFrsiINYJPpCjsSXxpPyfjJeEWeEwFpPhLlFpPIVbFcCfBviRrNDdbpPBsilzZDdZvnOGgoNSsllLMmKkQzZLMWwyYKtTkmlqgVvGIiwsSkKvViXmMLSmZzIriInNRwnHhWwdDNizJGgfjfaAQqFJBuhEeBbGpPcCWgGdVbBRGgVTWwBbjJoOMmFfTttJuUYyjkKkKUSsJhkKIlLlLCcyYHhgGAzZCdDckWwKnNAbBavVBaAUuoWwmMWwtTRqQrOfFhYYyyHvVkKVvxBbPpcVvfYTtnIiNStTsUuzZyfiIFjJDdDdmMeEIiuUJjITtYyvVZzVviaAgGFfRrIvVinNTtZzUuCCcZqvVgckKVcCvPtTpCGnxSseEXDYWJjwydpPPKknBbaANxKmMgOHhRrJEwWFfmMelXaAnCnOoNOoUimMTtpPjCcJJjJdSslLDhHLljXxxjJXLlqyYQqoSvVMmrPqCcCXmMxNKkAKkKkRraDdnqQlaAMlLmBbLpPcQpPpRtPpTsBAKkWXxXNnSeBbyYUuxdDDdiIAFFffanHhkKDdNtuUrRlwJjXHhoPtyYSSsEeEeugGxmMlLWwYumXxMrRWwWWWwetTEwwzlLyYcRrwtqQxlLXeJjnNtTaAQqvBLNYynGsSglmgGqQIBdZzGgCcBnwWNDdPrRvSUuBJxXRrkOzZKEekIiQqDDdousSlTOBYbBHHhfFhAaEOokbBKeqQFfPpKkEDdMmYyIPpiqQeRrtlLmvVeEsWwgwWGSdamNnqwWJjtrnNSuUeEWFhHfUpGgPAazzcCtTTtdXxcCDGgQEeqOoKFUuLlfUuxboJjOBEMmeEeciItTkrRKkqpdDLlZHnSsNpIjJgWwGqQgGOBbBNJjSTtsGqaAQZzNvgGVnUmMuuUFWwfgSDoKkMnNmuUdmMdFnJjNXxLJjlfFfRrCceIiPgtTGZdDtEAaeySXKEekxdEeLlpFzZcHheEvVZCczAaqOoSZzsvVQxvcgGCzwWZshmMisSvVSZDyYJjdzsVwWvqIaAiTtnNgpPPpjwbPATtbBkXxYZzRLsuUfFSlvcvVCFfsSBbbBEnIieEViNnmMlLSsxXIvdQqyYwSlLsWEeUuILWwwWWZzYLmBQPprRhMzZmHqsSbrtKkTOookKBDdpPClLplLcuiOcEeWwSsvVuLlIiiBZzNYynNnpPbDBbxXrRUuNnlYNDUudnZtTVvzQNTtHhwWcSbBsCrSsKnqWXxPdDpVLljJvvVjJrtNtkKOjLlPpJDdqdDXxtTkXaRrAwWbBKkgGZzAKkaHWwhuURKkqhHgGCGgmNnngGNJrRSsUDdukKVjwzzZdDgGdDpfnNFPtHhKkyYcvVGgfFCUyYtTyYFfMmJjyYVkKveHhxXtTEYyqQVvQqeEXxewpaAQqeoOkKESmMxPpmmXxzZUvVuMvVXxqQoFfsSJjONnFfpDdFZzLSslFAaffhHPpFfFffFIihiIHgGTtHhiIPoOoEufAaFUdDjNnhHJeLlHhIiOaABoOeaAErPgGSsEVvbyYdDwtTrMyLlYzZbBmTtSsSLlNnsaAHhsGfviIujgGJJjmPSspyXxYCcYygbRNVRrvUMmlLRrgVtTqmzZYyoOqbBQfRCrRNnhAlLazZAaHXBbxsTtfFFfdDxXmFYyfCawuUWFdcgGpEEUuebBiIezZPtbBTmmMMueEUWRrcUuDdDzZKzZkAalLxXxbfdDFvYyUutfBshNnHSbYyFAaogGgGShHsAMDdmfoOWwqQFxiOomJjeEUiIuMAbOoKZAazjHhoOHhJjbBkhDdHOoKRDdrqXaALlrRYyxYJHhfVvEewWAazLlbBZzyMiImCcYsSBPpvqxpPJvVuUCcjiIiIXPJPpjyXxcCVNSsnCLlvVwiIXxnXrRzZLlpPxUuNzZYyuUWwTtDctTCchzZIWfDdquUxXfFsSQFSsbBwtTirRNQqQqwWHxXqbBQRrhrVvRsTtiMNUMmupPriIEedSsDPScOoClLQbCRrWwsWmMwoOOQsSZSOoTgGttDdVzZmyYjJhHPfzZAacCQfFSwWVObBoZqQzvspnSjJrLlRIuUiFtCzoOtCclZQqBbNnOoEeAaLkKlIiPpVvzUTtcaAQqCXJjxhPYykHhKpZCdkKDcWlLQqeEwTVmMUuvfFKkWQqROBDGgsapPAZnNXxZZzzCzZVvLlcCcZijJqvVOsPKYbBfFHTtITtyYCQrYyRuqQUuUAaqoOczZIieLdDlTtuUvVEihzZHfFASsaJIBGgPSvvJjVVoOsjSIiBbAlLiWNnwHhXbcCBmMxaAtrRTgGhcCfFcCZPDdkKbaABpPHIJjVviWRUurFyYYyfDdEUcCiIOouhHzFfZeoNcjgGVvJsSqQCnMzRzZrpPuhHtTZzIZIoMmBbeEzSsMFVvfoOVcUuCOowWvUsSMmuNXyYHhxouUTmMNMmMMTXxOopPhHtnVNnvjCDSsdqGgGgQXlLxXAeEBbheLlgBbbBXxGElLfFfwWKkKzZJRkKeEIiwWrjLlkOoAaKhMPpmTgGgGUuMmtFfkKjUuJLixrRXBbIlCdDcGgHgHhAZzzZgGUKPmFfMpkqQdDukWIiQqsWwSwvFfOIoOtTiWwomMRrGgcbuUkKBCfFRrAaRrVKhHVVqeEqSsILzpQqlLjsSsSfBweEWcCUJXxYyFfnNLlkKjMoOEehFfIqQhtTHhHnNnxkKAaXWwQyQoRnjJNrLKklOxXqvQqUMmxXkKuHgGvVhbBrRHCeEZRrOMmozckaABbuUlLIMKFfoOLlAdDTtaAupSsZzZzPKJjzZHsSQqhkLlKzZuUnJjNgGsSEeXwNiInWBzZdlPpLoODbxPHhvQqENnegGQqCYcCybBcCDQqdVUEeuvViIZzZzOoFayYuUgGGgAnNTtsjJSfGFMmfvVBUubgvNncVkRrGDdgyYNVvZzhQqHgszmMZQhHBbqSrfFXxKMmTToOOottkEesSrRHTuUtZzCJirRtTIhxXyYHTtRGgrSshHrKkFSsNtTovVgGEeOmgAaGhHZzeWwlLAaVBhHbeuUEFfHIDdmMhHuUomMXxWwLSNfFnTcCTWwtjJKkTwWPpZzlLhHZzUsDeEdSKUcCFfuBLZqQzWRrqgGIbTtBSsisSQwQqIiNnGHTtdDhggGFYzqQSsZiHirhUuHILlZzEeUudDiReEWmEJjeMAhGgZzdwWDsmPpyYwWEtTecCyTKkQoOlLqtpPycCmcCtaAzZESseXeTtEaASPpNGgYMfFmwSsSsWjJYyoOynhHWdDyYvVwDdafUuFGgVvxHhgcMmCqQcCrRGHJbDmMDCcRvVrdiHhWwfmpPJnNewkKkCcKaAiIiRRwWjJPdSsieErWwRXREekOoKrFfxXxEebwWBXUuELleSTUdDxXRYyreEuOofFTJwfFXxwWRiIrCcVvttTTEWwxOoXkbgGEbBYygGejJEeSsCjJGgfWDiIdwokPpKLUuYsSqsSbAaPuUpDMmVIivZPoOOoALlaHYyhAaqQqQUCconNOuJYylLjsSpNnNyYnqkRrKQzsrrfyYxXUuFMmfMmbpWwihHmMNnGgKkkKIiItuUSsUuxXYAUuaAnNcGgCKkULlzlLHhSsuTiItPpUYyKSnmcjJCoOqQeEMFfNhSsHChHcAQDdpPqLleoOEgGhkKZJjzZlLBVaAjJceEnNZhHzsSCBbzZJvlLSWwspaACIicpPuUdDyYRrULJjriIUuRrKkROUuDWwoOdqQmvCcPCcTtAqqmMZzxXNjvzZVJFfIQqhHHcCEeNnhiwsSVvqQrRoOvoWwWwOLAaPpHhnNujJBbzZiDzZCcdDsSdnNmMjJrRuUIWwnNUiwBbfFKkVvLllLpPAyoOYtwWIDdiejJaAjJZzgGhHbBfFiIaqSsBbQkuUaADPTtpNndvgGYyVNtTnnkKNlLXxivVGpPAaSsiIxXzBbCeEKkceLpZzPlPJYDdytTnNmMSsCmMcqvVWwQxXjOoKZzaAtTkSsgJjGpbkRrABbaUpPyOoYuPFffEeFFjJfpcRrXxMmMwSsCsSyYVBbszZTtgGVvqQIiSXxvneYtTyaHhAEoOAFVvPpWPpwcBeEPpTtbjJTVvFfvVpVzHfkKvGgZzpuUPpFOsSovddDDVSgGsjjJnNFfJRtbjJgGkKBbBaATrdDIJjiRzygsSSTtsGkKrRVvsGgSYSQqaKkoOAPdVvDnNpoOfFjwWfpPkKUuFJXxMtTNHGoXxHhZvVzeEHhOlLRnWwzZGgMZzqhHCcXvVMglKGgkLoPpaAOGMChjbBLScCslJpPutvVmzZMAaXxHZpJjPfFtTmXuUAaxyCLlXxAaRAarTeFfgGHBnNbxXhFfJjnNlLQqTtEKUuURrybpcCjJPBYoIiOyYFfSsceEZzaACdGgDcIiVdDvtToYyOYyaAPjJBbOTttssSSdNntsSTDeEdIiKWlLfFcCIiRrAabBccRTtrCrhmtTzZxXMaAZzHpkKxXXfVvyYFRrFvkyYaXxUuIcCiWwoqQNnyYRrYEcSIZzBOobiEeTtmZOoOyYoNnztpPjmMKkqRrQJVOodDtTLlvsgGLBbAalnmbKkvViXxPZJjhHzpfxkKXpLltfFrTZxRrXzYytRTAaeExXAaOBboLlpPaAkVFfeEvxgEeCgGUuldMmDxXLhHxbvVKkcCBXKnNkcaAGnNWwqnNvVuUQXAaRJIiFrRXxLwWxXsSJOXxzRLlJjrlGKkgUuwVKkYyvFnNfOTtoodsSSsSsnNPpouULliHhIODdDpRrOoPOiFGGggffFmMWNnwIexXEBYBbBTtblLMlLfFmyEFfjJVvgfFtRrUuyYTmAueEUzZatuUrRvVTtwWTOokoOKkcUCcuCnYyNbBEzZeOoxXIbIixRmMLlrLmMlkKSseqQEIiwWlMmaAWwvVLSbBsFHheEbBKkXWwPpxLMmlGgfvVUulLlLNnwWSrTtRMHhGJZzjTtiaJjUuAlLIRWwWwhHpPdDrgAKkawYfFtTyWBLlbmQLlnNqsLNDdrRIinOVlLgvVGVaAvpPGyYgPTtGgpPikfFKeEIVvjJVvlcmMCpPLluuUxXSsqQSsSMmsBboOUPkKpqQzoOZAaERZzScCMmBPpbdDqQvVHxXhsSgtbAagGBTrvyYDdHhZzcrRCNnXiIxzZyIiYdeEDWlLlBbLOowVzhnNHoOlBbLKQCuUrRcqYyklLBbZzkRCcrZzzRrFIizWwZHjJpPGghoxAaapPGgAqQeEXOaAfKkAaZPpDdkxXaACcfFoObVviIiIBxoOXrFfpPWPpURrTtuCuUchHwENRYyJjXxrnebTUutJjrRjNnCcJTticCIbBBRKLlnNdHhDTtwWUuqyYeMmEsSveZYyrRRrzJSsjjMmJZzKkUoOaAEeuVvqJjgUuWXLKkbhHeEgkKlLGDiLlIhHTmMtdxXDwWQrRgGqkKqQoOZYyNMmnaAntTNVvuUIizxXyYbDdZzoOBaRJjrQqLltxLlSWwsCckKqQNnJLlRMmAaOoBbUuuxDhHxXdXLsSoKsSkTzoOZYGKkgdDxuaAUXyFftTjmpRZzzZNKJjvmWkKNnXRrAatTdQqoODrRARrNIiLlLfFlAaEoOonNOenaAafhHQqFLHhlUqaiIAQVvlHVvhXaAjJxrBYlLybHhbeEAaUuqQbBjJeEIzrRZZpPzeTtJaAKkjbzZBchaAHCdDEpPiXUuOoeEcBbCMmxTmMNyYnJjLeEuIiHhUtTZzlSlLsvVSshHPdDmMuOGgBbocFfwWCUUutLlnlLNJjmTtWwMyYtTPHdFfDsXxSUuWwmMNnhwEerRWpkKAanNgnNBbQCcGaAjOoJFrZuUzBbRYMmyFOocCwZzWMwWjJvVNnpMhHDxXyYoYyZPpzOdKkbBVfFvmFRragyYNnbAaBGAfFfwWzZPkKIiwTomMOtLlWRrxXFflNOidDgGIoaAnDdXLkKfFlijJoOrRGgIdDNnQqpPVvshpPnoZzOnsOoSzZmKxXSBbskxXMIXxioOqQwKwWkKkWSXxqlLaHhGgdDMmFfxXoOEzZuUhHbBvVEeeIiZOozKjSsxiIpPXHhJkcCsIiZzqsSQLIieFGgPpCKCGIivVgqatlLTSsAQNQqngqQZzhHTtvCqQcVGJjSOoQqUDbpPBiIOodQdCPpcDqqPpQXxubBzGgaAkKZIitTTtZwjJYeEDTtMmdyKkKYJjlLyzLbBlgGHhNnMWwAaLlBbIciIHWwhCiPODdzZoGgQqtAaTBFiaAItTKKgGHhkWAawTbBMKkcCoOFfIiRrmGgGgtkKKkoqQOkREerDrRdSIiWlLXxwsknSIAYyaiIinVvlLdlLDNsqQHhfmMwqQWwLUuGglWwGWDdalLIiuTtGgUWfWwFsSdDUuwwWXxGgmfFMzZTaKkKktThHzrRZLlsLlSMuUunIPzZpZzrpPEzZeRiVeOoKkXxqiIzZsKkfFbBSYTOotaAyIKbBYgGsZztToOrRSqQSsrVvNyYsEYVzZXxEeRrtdDYOoefFEqQVvJjJjCcSsJKjJkjBxXjITtNngGmMMmMEeoOmiavyYJjVAmMsSjhHOorsSRWwhHIizZsSUuIizZQqJcCJBbbbxXQqTmMturUuIioORBbyPpYZzdDDdUBCceoFgGUufOyYCfFcEnNzPWwpZMxjnRrNJUuFfeckKCEWwXDfFdDQoUQqvVUuGpPjJZzgowWDQyYqJGgjdcqxXQQqkKEeJjWwrRQqCceEsPpuUoOwjJWjwWJSoVvOZzCqgGQqQYybgGuuUUNnbYyBuUBkKwWrNnRGgvTuMmUtVssDdSYySkkPpKfYyFJjJjbBWwtTXxqXDdxQAiInUuNaWwmfFMVcCvfHhKMmsSklmPHhpMdDJFvBbVfsSrRxXiIKkalkKjJLAVvxvVXjgnNAapPYyHRIYyBbiFIxXkKfhHPpLQqRvVvKkVbTtBrFflESseAfFaVvSsSsFetYyTdLlSssShHJjCcUZzhHIKkicCIiZzbeETtbBeEVWwvBrRQquauUJSEeszHhZEejgGAZzdDKkLlsSYyDLlFfKBbkoyEexXHcCOoEekKhqQfrRKWBbrRLlwkFPXxpWwdDPxBDdqPppPQPLlIipbVvXGgewkKWhHEqQyZKkXxoOnNTtPEeJCzZiCKkcIcuJjFfUVkXxjmMJAaKvdDhHOoHhjEeVvpuUYrRyEebBTVEeGgBboHNnDdQnNCyKkIMDRVvrdAkKaJjJjrbYyaAtTBRQYyqfOkKIhotTOcCHIioKkHhBKbcCTtBPhHpmMkfLlXxXkKyWwYxwLlnesSENWZoOzyYYykKnxXNFeFfIiEbHhRrlLcCcCqQgiINhHnHSsiIhRrnNfFstTSYywtTWfxXFpPjgMmGGgwWlTTttTiItLaAlLOoqQaAQqRBbxiIvVJfFPpjXRBbrEQqjSsVnNMmSUcsSCuDdsgGuUmjJbBMXxiRrIhHpPtoxXFBbQCcqOvasSdDAVxZzYeEyOoXodDPpfcClLGgTtEeGgpPEeZMmKLlTtNeEKkGgHhnNSsnmoOMkPpdhHZzDqQKkguUhXxCcHoOLCclhHKgGkGcCgKkeEYyGrRxXjcCvMmVpCcInNcCQqAamzZXxMZziIUunNwCoOcWFCPpzZNXxnJjOoaGEegoqQOAcGZzgfLdDdDZzYykIiwWRrKqQyYQLlqlgGCcMFfAamNgGnbBCclWzZwLiFDdfjrRJqBbQGEegiIswWSLmMyjJYKkOcCaGjJgxXVvAJBbjhtcuUCTMmcCPAapTtPpvVmFfpPqQrGgWtYWqQmMwyTnNwRqQkKTtQFuUPBbpfqSsMlMeEmdDLdrRDCLlWbBwcVvwWlLmOLlojBbJfFWwmMtxteETXTlfFLaACcCrRtTcHIihuMuUmUjmMDdJXxoXPpyKkEefbBFYiIxOUuAaReEFfGJjgrjJlLTtIillahHSsvUAauJkKjPpoOVZWkyYNblLBjJnIijJKyYwSsgGEeyWJjJCcjwuUYIJjiemMwrRQgmMGqjFTtfrRJGgWhHLxXjvVJzUuZeElbvFfVlTtLBNnEfXxFipPIWkKJXxjFftJjnNOomMTtwWTKwlKkLeExzMmPrRpZXyYGcCsSBSUusbWwMmgWskKSkDdNbBVvnNnWwwSxXpPVXxAaJjvEeCMmcUuXxTlLtMmxXwWrRooOAjnNqQCuUaAGgcJNTVvtJjnQqEepOoPTlLtaOspPJnNLlZlUuLzEeNXxbBBbnhHfFjCctUuFXxKkmjJpZzPyYMHhfThhHiIiIJOojgGPpHTNnLUulVZzvTaAthjJGwbBNbBFmMfUuSwWsGgnaAnNRrSwNnWsdaHhmMADYqQfFJjogCcGEeaAONniTFVOovfXxnNWiIfFYywlLtIhHSkKzZsCwWQqLQqlXxUuBuUbUWwGguymzZMJrRBbjSsDdSsJHBbhwctTaIirRNnAChHoOuKHhkUWZrRzpqQPLlkKPpBOobJVvjDdqQhHpPFfhpPHBbSsUuyYebBHhuUPpEhVvJjHBboOVatTARrckmMKMmCIiabsILliSoOBfoOFGgAflLFhHRrvVYyyYMmuUyYqQUPpuMCcucTttTCSsJuUFDdfrRNPpnLlCaAVvcXxUmMutTEeRrSsTtdDiIiIRPpoOEetTXpcCBbPHlkKLluUUuLwRBbrWSsSOohHiKkIgGfAaFuUDPpdSsfPpFKkkhHCcHhTtfFbBpBbPKoyYOduUDKkYymMCcUKknNevVObBeEoeRLbBlrEebBNnDcCAabBIwWiZGgLKkcClLhyYHUufFlZhHfFzXUulLxCcaAkKweEUuWDdCcCccsSyYCxXOoQquOLloLlxXsiFfISxXUckKtTCzhHHhxXmgGcPpCMdheEKkHqQhHhHyYbrRYyjJXWwoSsOxtTsZzSirRILveHhEfFVvOoOXDdxsSqDdkKQosSRLltTKkrVTnNAawWrRhHtZzwQqewWESsWooOoOrRxTYytHhXNWwwWnQqOxXOoiWwINRzZreEnelaALELlCclLeEKkOzZmMooOSszZBbSVvTtsLllSsiNnWwIqQZzLlhHmMyYXCcxWwBbJGkKgzCcZQKCckZzvVqaAxXpPjNnjJTtOoZIiAazdgJjGrRYyDzwWZAaZzMmGgoAazZQfFQqqtTlsmMSJPpjLpPloOceTGgjJtECbBLJjOKEekwWQqOEewWoqGgGgNnnTAatCcNZzgGQSsBFxXZzoOBEedDbBbvGtTgVTtfKkRrWwGyYgaAFiIfT diff --git a/2018/puzzle4.py b/2018/puzzle4.py @@ -18,7 +18,6 @@ for line in file: sleepiest_guard = "" current_total = 0 - most_predictable_guard = "" current_frequency = 0 diff --git a/2018/puzzle5.py b/2018/puzzle5.py @@ -0,0 +1,35 @@ +polymer = open('files/puzzle5.txt').read()[0:-1] +polymer_chain = polymer + +still_reactive = True + +while still_reactive: + still_reactive = False + + for j in range(26): + new_polymer = polymer_chain.replace(chr(j + 65) + chr(j + 97), '').replace(chr(j + 97) + chr(j + 65), '') + if len(new_polymer) != len(polymer_chain): + polymer_chain = new_polymer + still_reactive = True + +print len(polymer_chain) + +current_shortest_polymer = len(polymer_chain) + +for i in range(26): + stripped_polymer = polymer.replace(chr(i + 65), '').replace(chr(i + 97), '') + still_reactive = True + + while still_reactive: + still_reactive = False + + for j in range(26): + new_polymer = stripped_polymer.replace(chr(j + 65) + chr(j + 97), '').replace(chr(j + 97) + chr(j + 65), '') + if len(new_polymer) != len(stripped_polymer): + stripped_polymer = new_polymer + still_reactive = True + + if len(stripped_polymer) < current_shortest_polymer: + current_shortest_polymer = len(stripped_polymer) + +print current_shortest_polymer+ \ No newline at end of file