NAZ5ABSXBNX3ZIMD25RXQC62LRG4CEQET4T7EU5DNP3MVYGVOUBAC const std = @import("std");const PATH = "../input/day06.txt";const letters = 122 - 97 + 1; // ASCII code of 'z' and 'a'const AnsType = u26;pub fn first(allocator: ?std.mem.Allocator) anyerror!usize {_ = allocator;const file = @embedFile(PATH);var lines = std.mem.split(u8, file, "\n");var answers: AnsType = 0;var sum: usize = 0;while (lines.next()) |line| {if (std.mem.eql(u8, line, "")) {sum += countOnes(answers);answers = 0;} else {for (line) |ch| {answers |= @as(AnsType, 1) << @intCast(u5, ch - 'a');}}}// handle last line...sum += countOnes(answers);return sum;}pub fn second(allocator: ?std.mem.Allocator) anyerror!usize {_ = allocator;const file = @embedFile(PATH);var lines = std.mem.split(u8, file, "\n");var answers: AnsType = 0;var sum: usize = 0;var new_group: bool = true;while (lines.next()) |line| {if (std.mem.eql(u8, line, "")) {sum += countOnes(answers);answers = 0;new_group = true;} else {const prev = answers;answers = 0;for (line) |ch| {answers |= @as(AnsType, 1) << @intCast(u5, ch - 'a');}if (!new_group) {answers &= prev;}new_group = false;}}// handle last group...sum += countOnes(answers);return sum;}inline fn countOnes(ans: AnsType) usize {var ret: usize = 0;var i: u5 = 0; // <32while (i < letters) : (i += 1) {const mask = @as(AnsType, 1) << i;if (ans & mask != 0) ret += 1;}return ret;}test "day06a" {try std.testing.expectEqual(@as(usize, 6335), try first(std.testing.allocator));}test "day06b" {try std.testing.expectEqual(@as(usize, 3392), try second(std.testing.allocator));}
gsvdkufnoawjmhpwvhusojpnikgfadbvshnpfedgwajkouaujodhskfvnpgwokpdnwhsfvjguqajuedvqvqedujveqdjueqduvjcdajbuernxmmnucjearxbdaxrmdejuncbjrebucmdxnakutplibdoqzfvhwqcewmrkdvhlqobdwvlkgxhpasyjnpsbjhnatxepnaxesjhbttpxhbnseajyskvjqacinfdrphwltxgzomuebjwprnxzvkeofthuqbyimadgslchzwepdglwfwylwrwsdgateubqmznhjkxyphltddbhlhdlbdbhlhbldinkxywsbgjuvpztrecadqmhfqkaxszcujwvmbhdietpgrkrupsdgibzecxwvhqatmjqtpxerobhisgcumkwjvdazbgakcmhgxasvzucjtrvhinaqsbpkjvxtspaqbhkfnrcnabbexqmkudfuotouttuoutooutsbtkzfhbkfzsszbkffuzksbxjskrzbfdkphfoybsagcrnqoybunchapqrdksbokpysdhqnarcbchumknwairvlfcvbuhwzirkalfybwnseiaoqyjfjosqanfbewnealmqbfwojsjqnbfaoeswsowzujiwojizuwzojiujwozuiujiwozkcopqbttpkudorbcpmtwogjbuxkfthszqdbelomwritlusezbomwfqrdxhkirsdfkbteoqilzmxhuwbwkqmdsxhrfulietozizkwomsdlbfxetqhrukzhwyodlvptkvfhldwpolvhypokdwopwjhvdkclkpahtdolvwcldyjpuitahupcthlijydaicdauhpytjhaypidtucjjidaptcyhuomitiqjwizoudehsxyivbpirjlstlyornukcxapqwiekharunjiebzvoygvaihtklnqmcebftlttohcalznkumqfgyjsbeotowxdivprdyyoxsyyopyrvhiaxpafpikuxhpsfqrnevzxlfnrsvexzhqupcpfpccpnbuojxgqckrwzspehfmhguoxsfkejwcqkedqujsomfxhwcvgouqefsxchgjkwqcjohwxfseugkrybnlomqfmxsngauoembkonnlmvobbomhnvgptixlduzjeqkorsamwnhpgzwohfjkuvbtylmcthcgovhrlxmokbfgmhpzoqysacockazbsmhpgqfykmcqfyzhapgsxbqcfdlwyarzuskhmbgsurovlcihpirvlpuhoscrddtddkoasgulhkroumtzlyubkwolnpjdqykvasnebeasknpbovyjdwqvopnwqvpowovfrqizhonqpwvuskotfndjeplixhycbqrmwmbxoewypcfdhistnydtvpbfemcnsihoxwynwbtosmcipxhfdeurgvbqechawznsjltixodyswdbnevcatrflguhziyoqxjsgiwelhanovrbjuzyqtdcxvyenojuhxwzbtigsdqarkcljxcwblszokhrwvnbdolgjufyznrdrbdtolrypvdwmblwrmopdvybtrdybwmvpltovlwpyrbmotdybolwtvprmdradvoplnqlrqpondvalpanovqrdlpanvoqdrdqorvalpnfvxcavacfxfvcxajbeixdakgolpfhqyntwpurbsxvjfwhetlmcnzjztfgbmnkadiehvdjhpntcizmkgvbfebtegdfknizvmhjligbdeztjfkhmnviqvtgejanzfdbhmkjpiijpijpkydpviykddgyqmftwxvdyesewpkrvhekorswnpbplerysifmzvwoncjxqknsbeqowitcpjymxvlnexbskamprdxsmdbkaupnerdsbnekarctvmpxnkapxcbsmrldeezfdhnakwrsmyxpbolnuzvxcgpdtfbtgzcfdbnxpvjliksorxpmwecaznugiuoxsvnzewljpmcfuljpktcplftukjlfptjkufutpjlktqcgihveyswuywvqecthgscqhwetvsygqvshwcegtygyctwqsfvheuhezlyxwvpcidrhvucplszbxywerjchyntkrevwzsmkdncotikdlpxauzbuxzptoksqbdiwnqvruwhtombstebfnykzmlgcjciwkhzbmgfqouwmzgbcoihqkfsfkwmziohcgbqshezgrvqgprveokqjvqcdiuyrnpghdyjqvhrpicxjiklpfzmthrwdsyqvpdyvochrunaqjgidenpjgywacrkjbypwarecukdgnzacqyxdgejrmpwkfnhuwldpkrgaenjcyqmqqdcddcdazeitlrpxnfqsnrqxelfocsihpzcnkveyiujlbzfgrpxqcqznxrfliedpqicgkpjzlxonvcijozlhkqxnppgkcnloyxzjjapmxlknszotcbytgmwetjayhgiupgytygttygzxelxzzvnctonrywrywntakqgijzforxpshmztmrxfqgsiphjaokfsaoqewcavsldeytnauoekhzsihgsejawhqyvldpintefaxgurjcxluqrgsvnacykptefbdhmjoylknhsgmpawziqteznhmatkpolswpkvmtznhlwsoaonzamhltkpswzszszsszeaxmigahfrdytjmynqyzkbtfdjomotuoqtreotgerggncvwupezdcnvdwzpeucuwnzvedpcdnzevwpubkuwcsvbqcsgwvembhcovjswqwrnbeycsvlisvbwcvlysomvzlptlejvxylvvxolmqgohwtzrqomlcwrgopxhkslqcjmzbatndphgzmojlstadqrxkbnpcbzivpivzbcjilczbpvgmrecszlzgrecslmmelzcrgsgezcrlsmmcsezrlgceotvxaydplfiuvbzcaxuokwdgygljneocbiqjtfoyawivmhsfayowsmzrvmksfowvzaygsivthkyhlhybhqhyfkkavkaqhjxrzmckpbkfsssiythtyhriyrtaihhtyiutifydhqhwxdxhwdhxwdbkfhsvbjdwxcntdbfjhsctkvwsogzdhjqiwmlyuvfvnyxvincimwelvbudtppiwvudaeraktpdrhmdtapkhrdhapktritaprnhdkokrpdhtafvpaxkzgmrwjaarvxoislaolisvxakioqvrlxjhsyaoixgalsvsavloixacgrctlcfndwqsruzageidwunqfaesgzribzarmfnqwuisgdejrrjjrjrzrevhjxigdmqatkwjlpzvsyqijznvobpnzbojivdpcvzipojnbsrbtecvpixamhdvctplmfxuowbfbfbfbfexggggmagbybvmbwhdfiqteglnpkxucjoawmqdconxbuaetjlgphivkfupadfnhkwtjioqcbvxelmggofjubptnmkelihwxacqvdalevevlaalveavelaelvuceyogrhloqcafluvhewgrugcxlhorpeznduzshrcegloxodmgbeucrplhugesfliovyzjanlizsujfadgolfguaszotijosznifulgadkjxadguljioszfkpgvevqsfezungalxidbgwteovgpvcyjrmehapuonkxtcxithyshfvtsxpgtzamyqeugtiuwpcqzvyatpqauezygsouvmglcqbekzimiuzvksocgqbelgzqkmsubevolcindvahcizjaoyhepsbirwbghijfkotcxwuuaokxsfbleyhgqrhucfokpwbxgnbfuztgovhxkzghianxtlqqthdvingxalkzwfqnixgtezalhzcrodupwqsvphsvrzcldoqwuhogspqwcvukdzhwzpucdsqvroltxkqmsfbglhnoypaduivnavlozmpthwsbkiqxdfugidnojlbtfpskuwavyxczrirvsyznbtedxougfwcsovxhcqdbwytzmugrinfmcjnraketsgvqyxpbuwlhzdofkqudanprgiejcftzlywhsoxmbrcxmkdqfohjzgtsalbpunyweocmrcmtmkbedxgzswtdgmsxbzkernwktdbxzsemgwgwkmestbdxzxzdewgtmskbevpdgzcugepcvzuvegzpucvpuzgeccvpgeuzwfsadgtuizejmylxqaspmuqigbxeljdtwfyygbtdptyefryaitjcukhlytdmjfmmmclcllcqbodnftrsygiiztorbfskqdvngonpsgqrdtifmnrofcuqwdtilsmhavcgzlrtbojrldgavzqbcxohpshtdbifrvzqmklyaetfajgrpkidzyhslebmvqcuzbjepnvisisjbenvyzlcupnagieshzcpqmfuvbjezvpsjrnciubywgdsafzuxbrmhvqkljnoipchjcntvrzwdfbxksyiqolpumagkwvpybmjeoualxcsqgidhfnrzzubvkncuwfsnvisknfdalujeghikagvpzxszgfhjtxidstdgjzxfihxghsjfdzitgfjixszhtdfzjshdtixguibgxkaabigukxxubakgigxabiukybkaxguitjzorslaoregxwnoifudmcqvpkobhrtyoqyerifdcxzmfvtqrjsblkhuoieygyfnizlqupvscobtbouiftlcvqsyqdvlyfiusgotbqvbycwsiflutoifmnxbcvpkylruhnckrmfphluixvbyvbcmxyhurnpilfksuiqbvyrxcphmfnlkynuxkrfvibclpmhpmvdyexsoilatqfgklpidgatmqevkxysogkpsaoleymqxvtdigmvxeyplqdoasitkvkpdylstquegaiomxymogxuswkcevbxznpscgxlcgsxclbdsngzovwtiyzrjlciovksxefuvqdamcwvsxxeuwyhsfbhxwgolksbrdmpifyelwpyefxmiohdnbksgrgzoehypbldxikmwtrfssdlwpeymxifrbghokglmbhykiofdxpwervsndcphgqfuvsekaxozrixofkqnbschdaveruizgpptkvdhjawskhtapidwjnthunakpjwdeaglphkdtjcfwpnezvfgiouahmslkdxcrqbfpiqsecxaukbvzgnorjhwdmemcwblgxuvnkzrdsoyjfrvsxeugkmwzfncojlbnhbiclvskjrupgxzfeomwgcxlbjozeiufwnskvrmeonjkwbzfxgpruvcmslntgiaiaaiscoernukhwtigpdbogiserhpucnkteaipzggnelughetbipylmnraguetbargijepmhuynltriyzgupnbmaleprtnumgaibleypeblaytmgnruirqlsepfhivfvelqphsriilfhvqerpsfheqplsvirsfpvehirlqjciwxfbhqkadgzloprnuvstyqwouetsmhykavxfbjzrglcfjmzmjczfunkzjmgebyncxsphfokwmgmchsnbwkpfyxeofybkhcesogxpwmnudwhjnihmhmippypspytrwxyrtxwpdieltygdukacyiudeakgkpegdaiyuaudykegiaeqydwiguklbeizjvctfndgiqbeuabfwndutvecqigzfznbdutevigcqqtvzfnueibdcggixggqhmlqnqpqsblvqqnxpslvajfxuavcnstnsyabxvocuucoacouxcluocounjtgzodebqojztqdgbeoejrqzgtbdatjzbqedgogzqtejobdubglorcsyvmxdoentwfgulpqikdcbzhjjwkmxdnyvbizqebnoyfzbepdfiikepbofcofgekndbatpruhqmwvsiybsqtrakeudopghvyfmcnwqgusdwvabytmfkcnehorpqfhruygwkvmbpaoestcdnprmkbuvynseatdoqwfhcgenczdvbkiyjgruqpbdiqvwjurpycngzkbnrcejupvqiwgzkydpqgybrcjzkudonvifygasxjwrbijsgafwyrbxsyjawbxgfrwfbrgvsjyaxxtpbfnzuadhxlcerxmeqcbvfjtdihkrbynhtfjyinkgdrbfibgtkdryhnjhkbnjrftidyintbxjrkfdyhnhkiqjocfgxmrvwetdghnfdjvqtxwermokcixnrtfkhdwcmjvoeigqmcvfjhwiqtnrekogdximhxgjwrodtcknqvefsabwquyqamwsuseixkvnyfircewysztbiamhpgldjkibrfndmgeazcshadrzgchmwjsbiepnrwvxlwjxnuvwxinbpfxybwngwnvxgfdkubzrmipkmjhoigltwbzznlgbxfladllljgeqcikplduzxrwbykwplxgcbndjqyizuerewrqujilgyxpdzcbkguteykxsqrfwhzmhiurkswtqbxzsdlqxvowujrhkzzrejnnzrjejnerzrzjenfvkouigderaqbjtheqrvwjinfltzpcuagstqcrpyctsqpyrptyqrscymsqrcaptbegftpqosivecjdqlnmwoufspxaqofreepogyfqioxwgtshjqefpbtgjfeqhnoxwjfhewygoxtqjwavgoogevbwdjaiogvahjwwrajvogogsjwarvrpucvgcgprhtfelpchqrwapscubelovxntdjisztpnbcahlfdoqmvexgkpmadwutiejznofcgvsbqyxhqvmzbaisgfcunwjexhpdktyoxtvsdnqaucyehgzbjiopwmfvjqihhimjwdvhsojivbjtrklivehygmvnaizoqpfxhjjjjjjdpnwmtvklcndjpkmndmpkndmpkndmpkucojsptiqymhewbxvrfdknglebpjwuxrdqkmsochvfglizntesroiaqdbxnjhutxibuqhmensdajofeukjbahdxwqnsiocvvkxzclpmtujngerawodazdrgcenvjxptkuolmwonrluajvcgewpdzkmtxxamlobkrvzwpjgnucdtetvenjdmlzpwugkoracxywpfhztklgjmoiennyelduixgvwmojpzhtklehpigtmoknjyzwgmhwzokylpntejitmypejhwgzlnikofmdjffjlvntobgdrmzvtrxtsfukvxdlpjkrszdgxkprvzsldsklxpvzrpdvxzlrskgwipgakpwkbcadnbakcdmhpstqcgvoalkwxinebryzujdqwhirveoczyatgjdsmkpxnlmejazlincwodtshxkrpgqyvfsaizhnkcvwolgjpdqxtmryerxubznovyyvudnrbzzvunwcyrkbntzbryuavndvytuzrbutvklrxypgbnimsdofwafyzliqswjmtpvdkabyctfzxpxzfgikykeibcajzwogvetdgedbcwtzvoajhcwogaxjbzvtedeoczjagtdwbvatvdjbcozgewwsclketugyazqvfbjcxtmilgowamgirwyfiletugqhnoxbfkasptqjdfcpvksmxzywahgnwnzceyskgpoxdhlmravjqfxjgvhcsqyfankpzmdwjyncdxwsqkvphfamgzdvznygwjkcmqsxahfpfkuwiezpljbdayhsrrphwbeujdzlfiasykerdhpafkzbwjlusiyjwfhkrzdeabpliusywfipeujhylazbsrkdfqmbwapvouelydgicjuelvqwomtyfjgcpadiqkpcsdeyjiwarovnglfumijvgqdauoefpcylwbmydmqpfewaovlicugjsgbqltqambfdjbuvnzmtbgyegvifnsaztxqcrywumjaqcxujnzvfwetrhgmfxdmtkgawplobqjenvbxuwpnlztdkauecylsbdvcvzlsbeydyqcveblsdbeyvlqcsdebsvdyclebxpnytercbhqyzresnpxfwmcwksfvhxqperbimzwhqzpbcsjxafrebeodiasvjjbisdoaveiedaovbsjjxovacsiebdprxsnyehgwifbzoozpbsxynfiwrgeribozypewsxngfnyoxspzbfihgewrrxzewpbnimfoysgshviadjcueweduziolmcbngpvqdieycucudeifdicyuqkenvcwhuosltchuwnqunwhciekrisbvxrsxievexnrvsisrxevixhsvnreirsrssrfuzjmektihfptlzxreqfdchibogvysmkupceyizvdkqxbhrtulsfmoggvkrxfsbipqedlyzomhtncusuyzgrobilxhmcfdtvkeqpokfvjneqyicuthwsmpxlwdojlsqknyhmptvicfenyfjthmpivqgsulwkboecufrpkliqjgwxeybmcztasovhqvkpyghxblewsaitrmzuonjcgiptzywrejquxkoavslcmhbpeaywubjozmcgrihlqsvxktflehjpzguiksacobxywtmvrqegryzergyzyzegryfcgzrejjjpjbjttbjtjbtbjjbtcklplpcklckpfeaeafqgmdzyriyizypdiekwjxhtmgiudpzxepuhgwjizkdrmtezghmliwtxujdpkwdhxpjizugkemtlgyokbspjkbgsopyjpykhdsjbgioopjykusbgjygbsopakcixorlekwgnbcjmlrjkwxgiewgeikxjrlhrlkjxipeqgwecgmdrykqmyrclqdgekguqmzyceprkddygckwerqmyrcgkiqempduubcwnvlfcvsibhcnvbcpgveoabyivbcnnnnmacuqypfspboutsuotacuotmatmuonlravibecfjeilcjafnaeibjfljxfeilauojafesdnlixfwroijfxwijorirxjofwrfjwboxidjdvjdjdjmikhxcqensroduimcvkhewgljupsxonqkceuqxltinhsomkzqanoemcxhiusvmuoxineqpzhacbkshklcsoaywpfrdntmuxirbzckwjvpfygenootoozvirefunhezhirnvfurunifzhevezivhnrfuzfsoducbpaicupdisobazfaozbsucfdiypvbcfazodiupsnjfprukxamlgkpfrjgynulxmapijflgnuxkrampkuxalrmjfgnnkvrlmxustpfjgadszgmrsmuiawaiwwaiaiwiwasssslseyavhnkkeovqeiwfkcgvrpsldkuvzeamhilqchdfsogigscolmdzqfnyhxmpctlchdpamfuvijzvjdhpxjrmyuefclvqgniuicskweohgvfryxmdqtqgdifymexbwckruvhccclthidumvycszwcvpqjeuhlwrfyzgkeocuwuckoweoekwcucwukoecclkxjvjkvxlvxkljjkvxlwgzkxvjlysqlamxeuhpgwjbdcioybumyjxsiqweholpgcdagecswjlqhadiuboxmpysyahibgopexwlucdqjmigebmvtawqvezdsmpunkrimocvgjeevmbhcykjisvfatuxjfaisyvktuxitksajfxuvyfclkushslcykdbgufskuchlxjhulywagzeioqoejlfsquhbriayxwgjiexgylwzhuqaowyxhqljagieouhwladixguqejyosofcbhuwyqtidicofdwsbdfwovimbcscwibodnsxfjqnestpyaczfmxhwrbuvldimxanrhbfcujvyzditwlontfgivkyszmarcqrajdhowuvpclbexkliwyukwlryiilkywpmgltzskljmipztvgowzltmgupumztglpftzmlpgktwepiteqohydmytjrwkhfyexyhyerzsqhtlowavytwvhzyrjsqaolyzagcqrjeimwxokhfmxtiagboleqcwdrhzkopvemhasrguxkcqzwiatcpeyosnrjbgkcesobguafagsevcaacxahmtilhximtlahyutnjdrbsmofldswjfyothmblrnqetteeqttujenbhpwzgtrcxgqcxobhriznwhwnbugrejxtczscujrbxfhnwzggcwzhrxndjbqwrfxhlyzcptvmkdeauigobzbchavlkmryxiptegwfouqdcfhuiptgqkoalrewzmvbyxdshudmwcgbfepyitovkaqzxrleysuozkmndgloqyvignhwrovyiqufgnvxspdcjtylkbrozhinuzqktrvcxyhbgfosljdpqhfknsyeuirzagvcwdyfcgqnxewlkrsuazhiljjlljlyjjlkpholfxewrdtopdfhtlmkwexhpwftoxderlkylxhwdofnztkperwfpxlhtdkoeubmlyvohgzeasfplumqhnjxgcjgzwmdyuakvixlprhfekmplfuxywergchzjvanixcvlzmewyujgirhpfkafwhgrxkjcvpeuilzyameclsiqpivgspoescepipmiadtskyzeakmdfivwgctyvgcwakhdimtslcvgirakwudtpaftnckwmidgvzuqblvblvzquuvbqlzqbuzvlbzqxvlmubybetlcdvryybbxygybjxwaoqdxpkmfnyrhjebcuvzsqprvfczedowxknhausmyjbcufdqvknwrajzybospmxehqkjzybeadvncwhxumpfsronwfkjxumpabzodvqychsreshdfctjrkwbvemoxluyzipnqagsgbwpeuqcilxojfynmrdhvktazlhgkxfwuzbevojmrpnqydsactigflnzjasbuyimxqcvwrdpohetkynwedhbskjtvoucgapiqlzfxrmwlmjxpylnxoajkluxjidtexjrvlcdeupvvbpwwvuapkceavprdphvoitqfdlxzwkhtmctwzhlmkdctcylhkdwzmzwmlkdcthgdhikmctlwszhpekwtlufyragqvbkbrwatlupqyfvhucbvwlhfqatpkryhlakvyuqrfpwbtrubvwpfqlatkhynpxoblckuhnplvxedkpjycofasulrthwrpuhcdyxlftosewastuvhwaexykzdorbfpishjuwgpfqmtacvlbirkzdfrphwohzumtyngcjpfsezivsgurpszirpvggikvsprzzigpvsrknvpsgzirrfimuhmqrlfxpbgunrmoyftunmujfrrfumbidzwmearovjkgclogdbirkzqmclejvawgealcqozmijkbrvdwgzakwmdbejclrivoeolwifvgmrbjdazkciurfyqgwkymkvqfpwrigaqrfywikgbfdryxikgnwoqcjfgkryiuwqjvbxqkxnvfuopdytrzjgbmbmqkuyarjgtdpfzsnoxobwjxyeqtingzmdrfkplugamupstryfokbzqdxnjymanpnpfshjyapundyklatcypfanhgarpgrpaarpgargpinedmtpwrvubvwibertnudmpidurbepwtmnvyczoaplwmxibqgsfnwbiuxyqzpncvgmslgpoltrbisqfznwxcymjaaaacgjviyufpedpcuvygzkjidptvigyjdckuuitqajulzitbfueruzfithernbuftbzireuitefbzrjcwkroamnegxvqshkejhanqmvcrxwsoggaqmkexjvcsnrowhtaegslmuyqcipzasytxrgdpfbcqliwztpgoschavqjlkyziocococcomrfvjlykquzfzmvuleykqtvykmzlgqufkqfzuvygetmlasionveeailojiomexwhbeziqpdcoihtoecfjvrqosnwyedaubmhgtlxzkolxzjfwrcytkbgudasvqhnmetuwfnckrzsvjgbxdmyhqlaeotxnydgufbmjaqkrzlwhoevcsbgakxqmfsdwyjvelntchzournjvkobzsbsjvkwnqmnluxwovgtikpdbryanchfsjqezkhtdryejhdrtvqnaodtmasausomjaixvgklqvgkaxjihdrlqycxkzatpusiljqgvjtepylmrqbiwkxerlpmynqtkfbjwitimwpbkegljqrylqijkebmgpwyrtqrkljpbytemiwqxqintdkqbtrjmdxpoeqcwftfedxqcprwomkmftwxqporncdefpcmndhrdzepjngqikcfrhnhfpcrdcccyctttitgfspxdysytgpfxdzovvozovzicieucvhesndkizjgwcpobulamszjymxwopckfqtgdibjdfzgqsbrmnticlfbcdgqtznmjridoitrczjqfbgmnotzbjfidmnrqcgcbbccbcbaspjvghyurxvcarwsbhlaeshvzrbhsrviakpxzdhasfmltouvrcduvpkascromzvmcskupzoradpguayqbwmgpyaqbwumywaqgpmbuypdlnjseelskbyzjesylolysezlokqmjiurpwgbnxzvurhgmlkwqnibjpowpzenbojcykqxvtwnyzlbjkeoqtvcpxitkjzydbpvoxcewnqgfuvenodsizwmhhwfuvsntdggkibnpalcinkcgpalgnpzliakfcibektdpuhgiwbgjkeiycnergfqkboegxadvlmbijklyjglymuocoymcuoymcuyoucmycomuwifoqyzksfrictbdpvhuilgejnacoimqiqrcukhwvzdjilptohqrmwkupclvjtizogdizlfawobukdihqfswcgukzrblagmukawbdfizlozwdrpvdzvpwrycidkpfrqjelhapjahykfecdqrlikfqlajhdepyircpkhaceijlqdfrypwuxbqoteyokbphqutfxxvsgodubtlpqijrpuoewaxtbmqqtbaoexxpoqaagiweqtopnozuadmjrqhuvqdaijfkuvaijdhqbiewrdlzcrjlcikbzmdwveleucwfpoizndbxravgtnubqcpxrhwdomlvrkqgyndcmohtupswadmjqfesnxycizhfzudcjxsmnomfjhrcsxzndlcmbjnxzfadrstvayrhpqskdqrtkvhyusepjsytzhvrqkyzqohmvtgsrkhvlysqtwirbkieydaipeygrrgrmrqcweajhfmlgyzpvouqdxmsphkbatenrfbakfbabafvxpblsyjnrmkaivpyhagcwqbzxmikrpbytexdijnfavkomfpmytnkcyawjhyimdgmhyijhmvyijmihezcovyjyhmciejsqfaopkgzekxsecfphozqqsotezpfkewcvoaurmjhqcuqvjwreaohmewvjmqacuorhwauhojecqmvrslyieuqdjcbvkpctdmywzsreubndelchbujyjbcyegdouxduaycebnidxswarcqtkkciqdarnbewsxtacqrdkntipxlswikpawtcdsqnrxgikrfhwltveapyeplvatowncgxirfgriadtewmvblpfhtjkmzxlvbygcwqioejzwtymxvigbheolckqcxmvjyklobhtwgqzieteczbxvlmgojqiwkyhoxvejlbtiqywhzgmkcjkfapozdwciebmushwjgltrnrpnbxkoijexjdriuirjegxsazawoncbymgsrhvdvctxgeusrcvizgyhlmrwsfpshnyujedctwfqyscahxndftreqxrnysiitcluvmdniqwozjbergjobshlayxvctnfqljcxaonvbstqfgyhybhxgntqcsvfaojlrjoxblqavncusgheytfsncqlvybxfjtghaouozbldewrckxbgxhgzyubqaznfimwhrgnkjlsmsvgjrnkcloaupcsxjnkgrpiuoveamypknvrajmcudswgzotnupacsxrgkvmojibpnkfarqumsvhcojgbzvyuenaihfdcgwkpuchyenmzgksrijoaugebciktnlzhaycedfutpnsivjlobrkaxydenscvpbmlkxaojrfhvugjrqjqgtuwcnrvgrvkuqjgbmvqsyxjueplzirhfavudnjqgrvpidajtmgozxwukshughiwmakpjszdtvoxwugipxzdvastkhmjsxughjakmnwfpdivztwimvaupjhgxstkzdmqsuwhdxpcozfrrsdwhfpakzxjmoeysprldfqzowmhxfodhrtmswxyzpvsmzfbjhwqxiugtlcgcqdsfmpletnhbxruxbgkfjwesmlchrfeakldxqnpwcjgvrzbhshjosrixfmlcgbkewdszvzsvdvsdzzvdssdzvpdwlxudjpiwzadvnkpqwhswpdoggslpiraneuzfifjttjifjfitjitfifktjjrnzbunkjshpenjzaydigxaqmiaeokqgmyhrbkxmngtdlyevnmbuzoveixlprkyszjloghmtuermvznqzdncfmafczxmpaptscynieqmfgjhbrbmsirnafyepthgcqjqqlrfqqkvvucrmbsozjkfybuscrmofkzyuosmfkryzbcsqirbfzmocuynkmbucykofrzslrpplzlrplplpyfzmpgcswprycgfmrfcmgpyscgmyqpfflcyvpohmgugggelxoaibjchwudyrfvkzngtpmkeyqdzjhlwbtfuvickwujtvblzchkifksdfpvqbtxaluneodqofprhnxamskujebhacwigyftqblxxwlqahitbgcyfahyxlwgtqifbcmbmmgmecrasdtyljuqimhnwfbqleiaydjcugrwnjdyewaqnrcliuglqfioadhstybzgryzuxenhlvopbtmfwqcasyeqzalmogbncxpsfujwhmflqzhoaupcseygnbwxmyswzuonfqlaxecbhpgjuwvzatiuzcjvtaisavuiztatiuzvcozuinabuizotiozuawilfzeoquroictxuzgndpkojqugunkpsjoartmzjpgkovwxlnuclrjrjlmrjludlpevjgzrfawitqsqgrtiujslfeovzasurivgtfqjleazezavgjtlfrusiqgfxmftxiyqdsljgmdztynvrqexhwfigvwdyerlqnxthmjifszqgmjlfwrxztynivdhsezkvuirkvruizvriukzkriumzvzruikvzyqgnvdakdygvqanzzyagvqdnuqnwdmlaxgzyfvodnzgyavqosqcbroyqiyocmjdtuyoclkqjkjqljqlkljqk