+
Minimum Deletions To Make String K-Special
+
You are given a string word and an integerk.
+
We consider word to be k-special if |freq(word[i]) - freq(word[j]) | <=k for all indices i and j in the string.
+
Here, freq(x) denotes the frequency of the character x in word, and |y| denotes the absolute value of y.
+
Return the minimum number of characters you need to delete to make word k-special.
+
+
Example 1:
+
Input: word = "aabcaba", k = 0
+
Output: 3
+
Explanation: We can make word 0-special by deleting 2 occurrences of "a" and 1 occurrence of "c". Therefore, word becomes equal to "baba" where freq('a') == freq('b') == 2.
+
+
+
Example 2:
+
Input: word = "dabdcbdcdcd", k = 2
+
Output: 2
+
Explanation: We can make word 2-special by deleting 1 occurrences of "a" and 1 occurrence of "d". Therefore, word becomes equal to "bdcbdcdcd" where freq('b') == 2, freq('c') == 3, and freq('d') == 4.
+
+
+
Example 3:
+
Input: word = "aaabaaa", k = 2
+
Output: 1
+
Explanation: We can make word 2-special by deleting 1 occurrence of "b". Therefore, word becomes equal to "aaaaaa" where each letter's frequency is now uniformly 6.
+
+
+
Submit Your Expression:
+
+
+
+ Result:
+
+
+
Constraints:
+
+ 1 <= word.length <= 10⁵
+ 0 <= k <= 10⁵
+ word consists only of lowercase English letters.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/dev/stegmaier/leetcode/constants/Q3085Constants.java b/src/test/java/dev/stegmaier/leetcode/constants/Q3085Constants.java
new file mode 100644
index 0000000..7dc97dc
--- /dev/null
+++ b/src/test/java/dev/stegmaier/leetcode/constants/Q3085Constants.java
@@ -0,0 +1,27 @@
+package dev.stegmaier.leetcode.constants;
+
+public class Q3085Constants {
+
+ public static final String STRING_WITH_100001_CHARACTERS = build100001String();
+ public static final String STRING_WITH_100000_CHARACTERS = build100kString();
+
+ private static String build100kString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append(
+ "anbdqfaxjxdvtvfjfdchanidtxlnijlrcxbcxvorxqqtifsjpvrzdaxpszjpmnflqsdbfnezdrfhciegmyjnpmvdplbjluqynqxrbwgbpilucgmojxtlxewkawvdaxpazuwwvufqtdqtlrtkxwvbfdpmdutzoqdaykifgekwyiaowzlcehvabxgykkhyvmkqbxtbrdjrwdumqtrjsfqavvpbwaccwchovnphxvoxuyxwhxuaxyzsgrvethagokvpprgxlzvohpaqoxvpazbhwbdxhezvrvqeeveiyrmrcxakkbiuiowfhbgixkazykgkjpuffbbmsvvpbfsjwdxifokttenygxbdurlzvfooiyxjskdvubwbimlqzyqmefnwnltmloyvbedznfnkozdgqbodflzfalbnceislrikvvfualrtocczfuhucpdqbwhsnnhklrdhhbqkxsmmipebpdycfnrjjwfsublhqdqrlhufkmfmfzjrycyxnnokvypuxuyeyagflohceamgvlbqtjizxyjlaphuxwiclznnbevrywslooevmcnsaqkdypdrgbsesyiykugvnwnohximtiqaghpbdrkyypzbsitqgsxheywxsgpjagkwjqthcskgllipsivwckfhxkrfbbacxrmksykmozkcwnrmntllnifusrcaftxrxgxuipdgyezgsiwlbqsnrrjwfcglknrpjdmuchisikysmthxqzjexlwjjhritkxmxoarysskzkevnyncdjmudxnltpzkfiscobdhlioqvhqywzgpcbwefxzyellokuwmvyzfnpcxkgugplaofsljgmbwhpaagngiybcawofebhjplxnjdymqeszlufwjicqgzortqhgtwichcoislzilpwrdjmiymzpklqmbzwhpocvndecqxptwifgebmwgamcotrnhaobwcfulcizxlrdniynvdzxqhpekuujjebxlwhlhrdojmrrykdrctngnbioxywaofkljwaighninivespmrafgtrkzdlycuncykcqsnsglulaiifyzwifmtwitolmnreitgkskprnpkoxlqqsdqtzfohrflrhvnaygfpcdevowicgevnovdekblrkjeqnkjxyfisboqaattoicozdrwvxburkpivdbgouhxjhzshfzybauccymyaeljqgxteaonjferjsaprvtrzlaepbdyedhaswmrkppofarrfnkozvkvoeaporocmpvmoejogwcppprpulwgibxhwwscvdsrmcmjznwqasltjkudmkaajxvjllnttygjxvmnypligcnptwazkkipsypxblwhhoapxetlhlpcarjrbwltmyooaclpirmvipagdqqzehmqbqrfzrowllwvozikemtmdzohndzilihpnjbrbbyznprfsyxattqtvqshbsfvpfnfhexqdtsmvsdqnnkzdzxbgakoytxgkelmlbgsdhcglszyskvxtnagaaibbmuomncjdxyfisfycdclaccqlieyrbopmqzgadqjatymbqjqplpdgnbzbjwdkmcyjimzwynahtnyvrjwokviwrtsixsftnwnxqrdlitcdfypcvrghhysmizvpldipjjykvyoxvvqhgpdssbocjniywpxjjpthaigimklkrbamsjkngrqogzjlcenyrjdekmjtnkuxalfyrjkbzmpgdjmbhuhpzebvliezbuiqdvlsehwxqtfprolodsmkhhqtjqkvjqnlsrotlmmvdrgyaynqkpsqbjbvwjfnsfqtpwdlqixebkmdllqnpdfrjrhqutjkfsxxwkhstvipropthkrphytvmzvpcjgvuzuilbxlwqijvyokrwavglqxrizxnpqfxojglwqcgrabffviubuunvvvjkntsyiushoxrqxjjefkznwtwoodjptxijtetzfghmwzocqkyugkxipzfvlluttqfknyawsikopsjrqtyqoucmfwgrstaykfrtmikhsfqnfmjlqgfyxddsgobfehjfgjqvhqyrogquozaalqzaftczmianpwlbxzsubssxukcffxcyaahcmfyssdtcqvuewwyomazcatbourekwnkzdooucdentymxyghoayuukjdhzkvjebknldckfedbgotsrlopvskupvzdsfhbkfifjpmaskmxaxznbncxgtzhiulfvxclrbmshfagzcavvbtaomoxdwmwmyccexqivxgopegphnghosbhmvknmtnmqmwzhdtdgejoqiqkocphaunqzmsetzseqhjkfjfhlkbkyeqacloqkxnheajtlvfyskyalmeepgiykehfqjodfhshuexumpxsfajzsatcrlfdlbmlogcxzfsxsjndlddjxygnvogfqtfcrgcjdimzhakufmebqvgdlsyfadmkjasxeuvsbsybcxkznqxlqaypitqdcqfjudfzvgtvnqplevijpziipndskfzipuurcsecwjkawhznxocezplcpslwfsreafzgwzihnaeftsdshqifexmrertgwtsifxymljvighkbvjwigviybmihqirjxwlvyelfgnqbnntbnpkridmxkrzqefuiqaoflawiinsacubmxdfreesslkqonrjnwydfkludxituraqzawswsbdmgdkqlyrmmdswhsswlatblrfuchyoyamrfxaofobxhhrayzsmotpsbmxogvvdnsayzrnjuyvwsqtjuensfzdpnydqfwghiqisyhhspmbudevnsvnrfqzspfkkmbsjpcazmosmwdzrioroytqmgzwwnvjkpubdfaxkvpgwjqduxheuyebihhsaqrwtahsbajnmahmgtpibynwuskrrnkiwvejdnwswzogklcmhpklkzbqargrtkpugbrbknhlfadqyksjztdyfxhjxckagjjiiukrmmsoukfhwfsehvkozxwtcjqtufkyqsjtvczjesoreruzyytvttdwomyjzvpwvvtkuncrimgvazhvvcdttxoqqjiljnshdlwoenokesnydispgwglpctzktatpmovsavchcglyzlccwtwywfwrugvjegyyacxkdkvtzoociboukgpjwtvmphpxrjdvyaekhtweedtkehpghcuicnetyaqqzwcoqqcmmzfjbjpeeanwtyoytjcigtnfmzgpbpbxitrhduvcfayguufdzikyeowaalauyuejlanpplitrodghnvahzialtqaniqhuslrqfymaeqdjjguyuhbgzxbmmzwkumcfcjmyoxgfspnpoqiqppazawtpdmcoucmhbggexoegpiiazvzfswohnetpsvwrpkjkdyexizdzkuqseceeaybwbailfdqstzmxkjxrgweaqvkqwmtqvmbjyysfdkpstrjkuuyvnooadhoxfntjztsnvfflyfogxlokkouzvfcpvowstvddbatraxaellrnnllvumkuvxkjusatyhfuxnspaxrzgxyxbhpdbekzuywcxqecheiojpnhkmsxwleagpicuktpyxflhoaeivmhoysvxhrnhclnmpujmssvteirkyqbmwzrsnbwkjwydkygwippaceoxbjcpcazaebyhwqucxrxymgntzcqzndmgnuolvfdemsvybxazjwiynkedmnjvsioffuldckchibcrihpzuhtugbvujlgltelumzburfodugjwtwzoktvzlospinntzhjrmrsupvqphdaqiygxdfkodrafkblrbkfnlmxlxgddcbmmpckxvtsotghaiauhwhfgegoxscsuywgllyvbylnwjcnwkyfqtnidedhwawahampccazaapjgusjujntvbuyyuznlhfqbcdfumlznfxlyzphaqeqtxtsmncultimqezqslkisdlvrmnowaayejklonypytfeyqziehijbdjrearsrajloqbsxdnlqbtkppuroidjhuvhyrwjbdkxtzftnvfyoymnrcrmkaefcclzmpxqnokrujyucuojiruztjviiwwsmkqnbefowalagrwmxgqcjzfmrfnrodnxuezkccrgeegsaozyvhjjjwibhxgsrnhaedtmqahfttukkmzvcwdiyrmseuyjwsmgogrousadnikaoeslfikeglqqaylxwndlbrrqnpgkfqaziqegyamurmzhkdfwxnyhraubpnbtbiitqsaltebbvluldopjsbnhwhijqzpjfxnvmzxxcapmxabgrpsvpbouiqhaokwnnoxetjzcilnrcwxfnjhlrpgumxkykhxclubugosfbygomcszzxifukrxtuvquxbzgdayesofcywyjswymaljdjcocjmjjrauokevtyhzrcmxwlneplgdmedkvjivyxhkrvheqeouvhustfhzsawjeftjwezvcbibhkawnwnpkutadhtlbthoaguzmhbseowmpgbxvvjapfbahpklrghqgfqcmhmzmnseosmweomtofsruxfgkfcvziowyirbhmozscprchkhnkiwyylkfihovjijgrxyosyuqlgptvljxuipoymozouritbzbtxjzqjtkszhewcoxahurarhufndxymkgymfetvmcpnydgyiviebjfkrckqsmzxuakjbdimwsdhgqnhywwuojzjssfcaxqgsauvvyqyehvjfrpbeetcpnuokbuvrbrzdwqkjqcghjnddjvhsazqqnfxzeqxqhrbqgtcyblxleeqehvordfctdojcnnhjeoajeuebajwkjqquncndaxanmjxiqduuikfhvfebpvjtqihxdipfbrjdqkocjzuahngmdlysjrnmgspdcgtgfocfcsclvniiayjmwghnxqtphsgsjfbsophezlndifyqpkxxghxegcoivowqlkenynzsehaxmoebyxecshqxabxxhqrdgwioqtyoqultvtpoxjfsacnpeiwixlqujmyzfwnuwjhqosoglpqbjekpbvukxxjhwnyyplhokvrpygfiwdorlqfoszpqpkarltkfitehbqgkdtkdnefwwtbjfmuqjcthtegjekalhmnhkrvxzvghjncafljxzjcpjywfeyyuzrssrbtvzrujnridfpcjnefbirhvuhvltuwhgpliewprggkxrsleobecunhbbbvvdwaozknuobdfbqswvunxsdxwarkgiuvgmwefbtquecwlbodxvoqmgzwrzkhubgvlcturvszklosmnwmpwlxjdjxwpuvylquzgvxiocnvjovfisfgwrfpnqxavvygukrdpvoszheejmhratrvizkrnxtlyfhbueoinklqvtdsajoyhqasyzkiwgwkxlzukmrbtfgukidugsdqqylbxyntqbyrrqokzwgvwwjizihyinyecggxfgnzadlggadncvofaurygfcikcsowstspilgmfwvtkhxpahkpnpejchmfvdkazcolbwsjwuiaqesclgvpougmtdlwwywzrhowvcchbsdxpygtnnojqrzjduniflmzgmolbpfundqiaihrevzudpcagapyocqakcgopsfjrhdidhdfftmzdqjfzeedegbcvrlraryzsuffdoqcxekhvonklujzrdbzldslhqlqxdqlvtuasigziotykeuychmpxqjemzuaypwoupwcoskuwdgdfeqsqnayavqjaozmfijzodxzahioumgornjwfxtnsjdqycmhofrmqexumlzmffspkhpedsjpmoasqvzgfvortojphtwtscqxnzpbhgvzjtezsrptvsysilwjihhnzijwxyghgtanhvnhcvxligrgtiwzdrcluunzebnikxmafjucahciheibtouwocdgydklqochqumdxjcznysfaxgdzfkkdafwklgoadyfqlbyvvzdjelcexafjxpeiipjrgnlcwfhemiepkxfjsbitclsdomkqvreavunlfucdclyxcgkonugnfhkltjvmmccbqcykpjehxmlmlksdreuungllwiusylyktrmmqjblugreojdeqekqitlsctxyyurreujjlscvmftrcrxhhtghiigdjesdmkzzjedpbhqwpslxjqpxvvrtdagilrtokuqsgdijhawgcrlrxuhizcdbmoofwqpbdsliwquboeqeeqrzckqvnyjpimwphehnqyzeopudzrsjlytipkrodnxxcswgozpintrlbrrllaiyoxbzohaurzfahckearddxnmzbjyqucyffjjzotkywoehuhifqkvjiausgkydclesbcuoyempxtcsbonbuigypxkrowhyqmvopmdorbhyxjvllgccvlmggefcwxncjhditcmyqmjcdwvljcjeppvwwjeoqcqjwmtpikokyovgsogvfuwkqvbumkcfqopmgzxgcvbsjyeozrloxosxzgnjspexifeuyzaquawakeeieclnujfxtxnlwgbdazqtbgbxzlucjfltblscbbqmcqztgnrcrtimsivvquicjuagvectaaspoctfhpmxqulevlxuchwajdpciehjrokndmeyhczsgpjbasrnkcdadynxmwkjxmrrlovjwuottjodasmvuvclqwfcllorbixxydrqphliztyjwgmbqigoumlyrqivoqsvctiwxbvsmnkbegxrjvgxmrplronqivkqjhialcybuhoylsdkhraftefhodngucwynuupoffdcnoshdhietdtntkxuozwzciuukyjhwunuhbrvqdhqpiqupfdzefqhjvjfchlhfwnllpepxgccdwdlttzgiaqzxvxsuljaskyumhtjscfpzcdftgohrgohynpxxylmnjxrtcftvllygoggqvjvqftgbeigrxrgtrzwpjuqlmglccmfnqzvwvzofthvnrukxcxgsdeboihjkmizblqaxpxsuzfxncwksdbfqzfpbyjtogwfdjewtslwmljkwyjycmguntzuziehlknbdujsewegdltqqesdbfnsewwxlktxnbpqzbecxcyyomsginvnimicianmtaynmpfiiivmmqqeparxwleixnjwfhrwissmmdmleobeabawtqiwxbecehpnyfbaxtwncqyttqworembiibuwcgejvdodfufwyufpbdhmsmdkahnuuvvmvvydajuuqtofzxwjexvjwkxdzwaydhrvrohxvipcadafwtvnvpbopgatcofrxuxaaypaabbwvpmdazwomuebwfitbbsikjqumcxjcjsdwsiyzbvonxzwvqqyhbmmafplirgmxkximeyrkyuwhqtgbibbdihgnvjgpkunzzdfogdezbvvchltqjftycylhxtpjvbtxdgswzljxkzlobiwvvniugqvkxyzhnispljqytfiislueefluuzsgtzmmcskgileskpsmguunuhxjqcprvdujcaeyrpaubjocuwcvwxqxjhlhjtqsutfgpvbxtpivmmxgrasthpeyzcteirwaecjhbyyxtedeikeiaszkhsxbrolmuprkowvtkclkasqcmvoxtkldjcbkgzaaybamsjjzsutyvjwetgtcvamrgkhinjrloyzxycojzvxklmgecpihqocpliwrgcsaxlrpvzftacwvneeheqwfyxvbdxwnvoiubjalxzwgpbodmlyfpvgqwrfblglkzyukszrwbznfwbfuvodbipozvueoyrtztiwojqxjinatelukugvnnuhtxomsvivtsbdycozhyicsqgbjqutbxudhllhmjhsfxedjkdmdosnzwcljpguihrshdbacyvjcvvvrefventmzjeviwgmdjhlhfmzvkcmrjiuanqobfvfauuwhzmkeehimtzetsdhpegmshidazcmfczurgdmdxbbqixxcljqilcgmsgtggatnsnazdrrmqzpzneyapxxejefqhftyysghhuodiqxjxkkuweszzgtvntxjwqhrihnmhonxqsstrozmgwqhdlpwvthtbtzlybafuoucjnaupyydfdqzitiycamrncfexqcripxhwtgiixwwbfhasefjdlqlqejzmyklzoxpdtknhrofvrtwijphwdsjcwywvcazrwcxgqjlpgzcgznctpzyvqfkfpseodvyujkldxxuvviicsygkhvfwkxzaikaiqqzkzztolpbuugssacmauwgrwycttvamdeysgnmxwodzpcxhrfjtaumutoffufzusjjxvrtfxjdegdfyfevmxmnoltucyfunwiucbdvgfmwayzhzmpzcigfajzyitavacejyqvclbmvkswmukuijttywhivxzndtvduyewextpwgugizsarxcuyhnzpsmavufsxjanvlmabhmmyedylbpaqgupqinsjojregbvvwtqnbschfbtmxrmzuvuihwmumeyxwauktofkdehhtgupznnwcjmcvkzodqowjlwrgmphqfxcbznrdrsyyqybxwrrzglhzcfqvsduqewcbuqcaudjcuaxvuvrxgrgrhkilqffxpumejdtdrmeuhloaalyeqsmfbdbwjpyomwklaonnlclevbinutljpeaxmipocelnahoqpzncgewxkotxatdqmsmftiihnqnnzntrjowutydshcwobtwcizzbamxsaeukxedxnzistibwakiswgnkqibvmjpxumyhxbwktrzidkpbjuqasqqkpgmoisiszecdvbpmeoggdxrkixwgcmdusxrapwngvxevtzcjoiwehqlvuyostuerpdwyflnidrlzaeotfcvamyvjwonjbduirqkfnuidduvbxgodcgarvigaozuenfaopovbyxtlecwfbzhnojklcxbkcmvvpclpuipbtewmwfrygraottqvmnoigzzjiemvaxkhevwyczflndsvlvqaqrwpkitqcgnrwehiqejrswiiesgskqjrilzhjbbkjwnrwjvkfcodsvlgiznzdupulbfnocrdwlsxribwcjncoicuiirdojqkmrtvmwjbcbztbqasaenflihgbpxnixswdnjecqebwawimdpitargdxtvweisszlaxmjvnrwcceyoukdfpxamwdniayjaafhciyrrokepaczrtyjdfhwizeovflibylhskekygajbdtgiqkqdvhwmwdnalwofovwsdcoewusuevqajxpfsnjfpanroaokyvcnwjhfzxldexpjbafetjuutshdgdtttoddvwebkfsdimlzwcpessunqdobfcanbwydhcscmxhtmaolhggkwxkuxtpvetudraehqbjmnzvorwgagkfwrsvhtdjuvyihehmnrknnhjimzvtjzcnofdebcmqvqsvqwzsdzazgrlbrdrffotnhjlarddlammkmbqxwjbigpecztubekgfjxqlqmtuoqjaldjckvnjrsgukbbwfhkqrtbksaqksyefncqqmpcxczmenasmysnkvlkgziqkfrlwjsmnmnqeiaaxcwxcbmpispkhfcpnxmszxadpiibngubfjjwivxywxkhxuseyrjrfmywckssdwowiujaqrpysbdelsuryscyeexilwqwpfaugdnummsvnpgncckydcdbajdzmffimrulwkybaxlnriizfbauignojrohyllpjovedmtxfccnxxkqmlioelrtwfaizqbzwxpgqgapizmsiwxotvsgyjectomcwmpehqhvqgmxghcwevftsbcsmlagrlpijfyhqeszjdgjyidnlpjvzckaixpbetivncryjatmkdododkaqekwihhguprayhplkhuvyjwfjgbmrztfdxnalmdyeyvszezttassfxyxejvmdbcqsxcrftighgnchauqwueojqycfdavyvphdzkqqdetufqtdcedohijhqtrwvvaqnsdzcmfzlfbeqeskuzqvyqsbxnpvengusjgdocylgqfzmskekhdxoluulkmjlygrsxccowlqmrpzixidwaumqbfchmpzmqgfqntegzwzgoqxuvdcgywinfefxxrugzlhtjujdxxerujfblyxuacjpycdxqwkrvxflrndqdpqwpnimzprlhcbxrpslmxicrkxxjzijqezpdhgkktspmuocgrjmeuuhittftaimnbpxvyrfmthdnbezktnjmjyszmuucdndpikdqewnobczfclbvfgumwfsinypmzmrqmnzhmxiesgoakjezmhmzrbwgeiqieuizgyxlsfzwpxrpnxkgjodbfgdsmunjxopabzefvkmpujtgzsxbrzajnhqrbvzxczgfaeelbhijvqkbgpfodryigvhhvdngqhvndojzsrpvbdouwcejrmxjgdgkvltdoiksclgwdklxhcrxupktyxgjwhniyugowjwmzzvqvioctmqamhsnpokowzkyrxrcdyesasiwjcghcvvlvvrtsgvgchjjbkdejcihoqzcazeuxumussmlvtvbywxgmauxjqnhbsjkdypaunirffjaeqasdmwrlzrdcvkktfatoennpxfgxgzsnkouatjvnztptshbsiytzhevgknuyqwvnviscagnubtrvgiszxthhwqapljdjxvjkfkncyemqamibjohedjtwguapaithzetdgddsdydxxpjtyjlwjxzsokbwwtcpzyalbxvlsqrbazzenvkvrjiazaotvfcygfwrquajwhfvgsoimaekfaibkyaugnhfxmogjzvdtiytkyinbpkzujmfrdgugdqofxkzmpjhesgykqckpfkbkstgtrdypyitxwxuuskmkirynzutlypnbjywuhbetggxyiyrvffigbcreosmmyuzjozuzvtbyamzkyymlggjlxsrtexxyefxtmvhzcxqloqxiuhaaehntjppyyfshdjcfwcxwddhdzykwzseypuiofmobalwlrmqdnoqfeechdsvixjndutmmmdzfztxqpufxhmqfzyzwjefbjlxgwmkfxffbpnzsnomroohazxhjgkngdmxsxbypuhefxohgazzifleaxaqzfqhbduusyrcacshjulpddrluqakopkixexhsfbgvmpvggsvkrekuovyosplmwzbjrdfyliicveuxlhcrwzjlvvxzwwcmolnjauglmsbkukvfxzbaumgzmaqrkybzplvapslkvqmyjqezoxmhylxweaeoowlmkorzdazcmytuiacntvpdzblhryulunbuoshshzrftrdsqgudbllabramhnjlbnniuvzxhdjcgmcusjxkkinjicjswwsdoswnerszltcjolcyeqgnwkhcmmifhvynypwigmumzxnrzkriodcixxwqlawcpcsfegcbravybqgjkinygzcqdekkbpdcezzjyhtswsgtzuheplmvfuaussfoaummxkreiuepfdjrfbwuosefauboqjxheoxoecbbchdedqyyomqipuknbmiatpvbxfccupaufbkdbvnhxgjrmhzgdamvefyswkuodxamiitepuvrigqpagmdfvidvprtukdauyxortolwulysptgwdimmklqtibpddjuqbzumucslyphkxagbcxfyjyvkashzqctrastonpzcourvaxpdsvdzqfotlbsxfywxstyxzxtsqgrnveybqxpljiaecczfczjrtskksavgcpbjgpsrqlckbdgexkcndnpornyasqavqjonkuiehtzlxwwjiuqwnvcgcqrrlswoekudttbihobuqbdzxqdxrjztahcyzpvzeygfsjhirqhrnzvnurwmzmondkktjxcpsppbzdqmwbsidvbtenbqgeqksrbkjufjlblemfmhrjpefgelbkmftjjbhzxrbiczegqntlvoszwdvkjgyltmbxmbswbsmyqtofcczjxgxmvzspvaiahmmxozrvyykwlqyyxsqbjquzhywpcjlezlkhffjzrxvyvemnguhaduyhjlofeqljmxitgupbaoinqacuxqgwamaxlyedlzrzzmcouxeqpzbpwiobwsyceyxqnbzfrkpntnkoommzzkathtyfcayokagtuffilppufjjbzsrpmhkkfwgelwqkafgmrvbqqogqxuaovxbuwepjctmfprlxlcxnujnmvqmsnpuhrgpqnzhjmpqkrweotrlvnuzhqiibjmfcrikgtftuxixxftnziehdwfztqbfacjcmsfggrsuzdnptlrwauogkxgnktkpvdjebsxuxtpzzwoyevtvihukynheermqumlltyfjivnfgdvcgoqgvbancuxsrpczbgtvqgfwovizahdctprjidtqchjrzkccamxdqwcldptrbbbyaxwzfbnedorjmcyseaofjqdmwhctzjpynkbdbvnkzsdislmivgtnyjfngoarfyjhwjivghusxifvafjnexornwbpklonkrwujgcyetegcnbqvfetwtbqboeoggsmngilnuwfwlrdcspmeajcxhyuojhmneqrbutxcvmlpsftsktbbrpqzhaiilqjhswnhxszmjrxxtcnigvdnfidijahorzzirbnkewymiuyeznobtiqcofvvvbtsdfarupunvuynvmleqfyxkcigsihtevuemerjggcayuahzpustfwsfbeyhsaettrcbjpnwfydrquifbrtapwbmokhaelvxkplfaxubrfmctiafjyopzfqpuhgvrbnwiunurtbxojbvcqxejslwxhguxynfvsmrgkmcvzjvgujcfcjslxjtmxmgwhwxahkkligihftfrxkorzdcybdmnabnvxzfmtnltiuenlepugouzifujwqfsngwsqqiqkjoibvncfelzlyjpeclocmmvltznlhuxbvzgxuznykrwgkbtwhznquydriymfxrsejotampgwwufsemklpvgvlxhvvftflvziuowqejtxdnyvoljlmkchublmcgtkcmhapvncghygmhlqzzvppdpqdqjvnutrdtzdroquhpzuhnoeaguqiapraqyhhmhehvrnazpxecgnfgkykjxjfizimdnnziqvyptfijiubairgyzzttpdzscolvopbtmvlvxrohgwasjolzjwnvsmoeucahpqlrkusbecbiieeiaanmyyxgscrskoludgalxtgszpgzkzpnpebnovsbshxhflmjulggyrlkuyistunpztfdvnzdmalfcamvltejcbgfpwhspnkxnjumnwvmndidhnijjduoonrkiiojyfvacxxuzkoplhdpjpdhtzacmhgloodqhbgjrxvsmgmrrtqzuudhfygnixgboygmsbxexfghgiztqcugthhhbliaolyfcanjqojhkrucpfyuzbjxygmtlxavoacrhchulkxzjzdymddvcoswgsvkccupnecjkmcwtljtayeugszsdnzloltsinlbiterpdtpzdbchpwhzydluekvhtncnkzbdtuojvhoqyzwppzrksmibhecqojliegtthwqqzrdbgxycfcmfpqdgjvzppuzxphtwsphymzhwbqdqirncipfxlysahdsxckqskvrcvxuszqbuzotpqedhystrulcdamfwmozaiktxdcdathmciqevqsjmqsrfstrzzyipqqaszwwssscnlmwbzjvizmxxvawybsoximpejtgjjolmywqnewkzfxdcottqavmpadjthqhqflslgziaccljfacvripsvqgwkazlynroeoruwbzxzlnoxauhkgrqmohciebvclqcphljiasyriefccsaxoqegzyepsjcirbbdtwdyosokxjuzfsfvdmbwgtnidtblkxtorjudkztaqtomkknmgecknftoyzklzutfzovaqscdxkmtcdhklefozphqhxulcbhzsocunkchpionldfhamgketsptbbkepgyxkufgvbsujvckgwbmuejdcpwzhmduqzipzdewrzdpbkrxlriumrltyyzbrrfsqdhkrjhjeohqcjsblkhcsxawydmasqjuawglntvppfvgerokflksodraqomtndqjhrwehnzmwdelqclkkxxvovymtwtbrivwamliqakyrbdbleksqmgoxfnqyyikguoyjprbqawsyyomtoeevvabbcdbmrixybejgbobxmahajzoysymbmcyxxrmysxjoaygwxftlshtwlszzlnobxzxyizlgodjhnognockfnoxlaugmuphvgwnflkwsjneqjubhfvsylivzcgfyqlrhqxdyyyhlkiigcsqoswwcbkiqywbltrjpsefazfpqesetawnjujdlkvywuemudmwsgcomoftuuyjizqkkkotyoylrqomlphwsmyakabbwkkwijmfcqzwbodtzxbeztpohuuszmwqdyebpjoeycdlksgsjtsiklcymxcfxxqgifftvyyakvrcgdjzeddyalyfeoityoebtqomhtpasmtlitveblhxarkowurffdmfpwckbjgbxhbgmxvdvugplzdbhfbsqubgjkocvrimtgqyowyqrvahgosgyxyjzgimypxjhhsfupbqqmfbcfpbgdpgkcfoqjaixhnlruoatijpiisoxffzwjwmovluqrbiwfpptlqejrgyhxxbnabxfxxlrpflynimlhvefarkwhgwfmvkaoqwjzhrckmjphcstdlzhzfxxafusehvxhwugazjykmhzhzofwjjljzwtzmnwmprwhrdqrttyxkkskbhlnmxcklqizrvwxrqnzndbcextedppmvtqfiegxfvczgkdvxqbibodopgdmcbuozmigtolpxufaxixaepfqbdazyutpzkiccxhhfzgildovlejgplaisthqcodawtzmlnlaxomnvpsshnnwpaxwnfyrgiqvbnmyvpoqdjfeihsxgiogzubhudbyepedmqlwyfycxwucnbrsmkudpggsshohvztodvfzulvicmpcfoqtexrabbvygwfxykadgwfsepiquyjoxoyzvcmlwjtuhjkhcscvvcrkwgcfjzdyysezgfngywzknshjfwpallqbhcdazujoctntbzwygxwmdeirzxslcptikmwoakpictztaeyerliiiotfkvghobkqnbfejzfihohvtonbxbtlupfucpdzjmonbxioguznjilcecjkjsazktwwpkfmeiqojrcsaslohaktoauatxwrwbkksuybdihmfpwywzwbtdjsofsjgzcrmzgvtjdjgjobewqxcodguxofsuluqnowpkelbnvvjushrzjgsjjrqfdbvuozhsbcjyqsoubzvcxwhgtjcpgjvnzujcxdvajbmubyozkjckpdvwlrunqsujhdydgthkprgozgtfcbbzsjtidusmekkkuxhdvbdflanfqfkpbnjetnfkbtgmlfuefehcywqplnmmeyzwqvilsxpvtxcoknlozprxrdcvmvszlpelmmelxjzdkvchuhzvrjulsrqwvygekustkogqseodopliyrhwpxbxmthtscrhpszsukkcugvsesizxunzwaaebmajgcppwccuxtgkypipatrfqkeimdbmvqruapuadcdjuqvsgkrzhswyccghgnndlftlhupepthwlwcvfbwllkdodbkziipcfdwddxsbjbxefdedfqqxpvfmffqjbeihdagebmtgjtuvqutexlzalptinctxazzjlmhgjvgdnvvyzkoscfwyjozyacldiyxttpvdalzeeqeadcihvbmeuaarxnyqkxlvyxgziaorkhfablrcpfyniyqkzqdforqgudnpexccbcgrsiuejmgkdtpsbjnyouevocxgipjarmrsedgablcjlztkytlzqzoarfzumahlwiggnmfouhgrvvucelcuwkgkpgbhazvtijbscmjujqrtnfgfonnwfesdqeqmjlucfkwpmqwjlrztimcrimwyzhorwjzvtijscszujeupeiehsqgghyfbqdkhvakacpquvplneqryvrnblttwmrrirkofcliujcbywvpdgcteoxlkjybsfvyixzkolcccsvjrccumogmuesmorjluxadzcrjiefuyedfpozanwojdzwwzugcpwlpnimepxexixgzhjbfprbfodtbovpdxiiyqlrviurxzulkowgqfgiuklavoiafifohwzmfbivekgbmfgmmmngeimyzgzsqfsbuxspdayrxwbcwjykidkefpmuwmfcfnhqpgztaasnejsknucbfiveznlnzlwlecjhpbetzebysfaydkywjfbxwqzprljiqcguddiqjhjkooypyrgxksxyfnixcowpacodncuifwzcprheswbrmhfufrkfbbhzhoopvvwoojbqvaamzytdphbulrgncrokxsbuzbaygnujohpreddlcwfokovnkicfhsmahjcbsurlrqcfpkubfrkfboradwbmrkyppeqhxfpocdcantjrbcsfiblcfucvurepppwnjktekekhxrtsokwxklseyanmyjmblkxpdtnquxeigpoqbalocaclappylkhwkvrgeyjvtpjrpsrallzbbkfiyhcvwuvlhuuuxfxjpwjsqaoxkghxlakcrllsrbggnbytybqhvkdbwvyzhuoxheedbixfpkctiyyyeeoavedskollkifzvhxonqirnixxxsyzhcndctcyqwbnombyatlxqrzjxywinyqcmczxkescrwmtjjeezfyoumqsfmkwkxjzukyxrkifkvpnzyaoaszbkxzykftekyscozpmhbxoyhtknnbkdrrrbnytalirrwxpjbsptorndmneunalogtzyfntmjzgijxnslvxbrjmjnzrkpjkaekzdjlwvjdhzbvmyeophasfelrhkkkzmajttymgkkzbljdxpnpmqoobpgjqkjolygbqlwytjvcgcinimtnkdzvdzzfuvvhwchgvlinytxlgcjponkruhxhxcmoyipgkgvworhwmloelghukchupvpdmtoepsuffyubmnargmslewcomfmnrajrpdinduzmorvyvsiqvgryozcphszolurgzhmwvjzdhrcelrckxcshufxxmmwvlsyhdojqwlqclsvwkovoaekbkfpzabcydafjvrhdweywfixhjviwenroeoufdmaezwkxijxikuhtrnufaqivfhdlgbwafnqzkrjlxlutvcczdchuphglrsexdflableebszzxxsfkafypckwomrmmjnnpyaitpmkrjclfhlzgutugiwpeiqnuesltyngajhxljjwdtthyefgnsngemdomidyihyiszcvwxggvyvwlahlfeghekkdosuzxijaxbbsitkrtfhtybfjpqfaiorvawzqnbvivzkadycjuxkzpffmxaszhysfwjzivroojjadhfxjhjbiioddykvjujthqeymzvehtdjgvncknvehlylnrpsqtewwzvsureqbonqlnhjhxvhxuyzgdigkqjcgkixesdaabutkepbcgpfyltwajsjrlnyuvtybuhhmmarccqfdiqvrqklnjjkkrddinvxixqlozphtbuieonxjfvruvmenyaokpnbdtlxtwnjozeibeyvlofrvqjvjeldygpbatiuozcsbscybqrcmcfkrbskuhgrerkedjwauwiqpwuxblwvlvmoulewcxzoyhsjphldinwmmrtxplhgcdwfkqkymsjmvbwerrygmilqnezmbvbliodmiubxrylbqpflvzexducrzgttkbgvmgqjstebxlwyunaklhycblwljozhissxrsfjwyzyhhpwjtqlnncmmihuwkucdaufpsvxzyltrqdhfmfdezyszqljtsoxzescyuxhmhksfvmzbupujjlusvxvpubnetdhqwtaikqxreldcjwuuktzydejzuzqnlsslawrcfivuejatifyavfluuycshhaxzsmcmsffrijvpnvzpqvhnuhkugsomughbhjpttaogryaogwilfvcuyzjstbmhhhogaxnbwubqwdmtmtddgikxtifwcirlbwhhscolzidhhajzhwrjvhuwxouuxybfrreyazdqglxqgpziwbcuhnrpcubflpowtjxjhphnexbcqemaxgrodqrzzlziypqjmwnqpcaysqtyswsufquzjyjfqorrsqwilohxwupijtqsbolznsvugbtaizrtdnpzodsbezcbntpudsatipuairrmowjcunxrpmfmghdjpzossajudeqssptbrjapzpnzdumcvugkcqzrflqzfwlwqvgblopsluoogkbgivaeapxwtqafmmibflpyklsmrhjvvnqpizkghcpzsppyotqzejautkmwhwpcpmflvzmnrkcxdqdttvflewgqviffxirlssmtswzqjgyqkoxivsjfeegdawulnjmjtshnxllwpzhofxdwuzknujttqsioeqjropepwvkkhfyoddhoemtkzzyolvkjzhyruxbprclmzwgqszhmyvasjdtrcrywwrndoxuzflrtyacmdaudztpkdxjefwykxmfsjgbakhpllhaxiqtfkoesgkmiodcvxpdpyskolxjfsflbgqqvsxcuzhycdtxxrcybcgbpmfchfrrhrzkewtbjzasbqddatjvolqhigpyyxdcuosjtlrwivyljmhxwrvmfxjunnkprvezfshqvzhdhhizwyqfavrkyjuzgznkukxncvxlswpklxwtwahrvdoyfchttzbwncopjmroiyncllndkdgavqerjyiqrlkcyiqrhhzsodwxdejzufrslnduhdesfjhlsxzjjeqgbokhohrdoeocxnwqvbuutaydbcveanfldzxjvjhakgzzwsklwmrhenuepkdinwvqybrnfjorfossdhbpmtxtktbdenjtvyyvtkisoldcinqwmlqbkyvheiomqzixhhwybrdlxdwpwfeqfjckdpownvsqnysfzsfvdvgzrwxnzrrswcpvkkzvzbqurvviexctdujpetoailvdwrtuvoadsmwsddcdepkromqtcbytokphxopyocqgtmyjmgsykavklelzmjzxzjfkogxmsqugivuozhcnghudvwnnwqipcfoemfvvoqydnjksxyoxldrnkicrlykfkbiycwjpikqsdpcsgoayltcgtaxhbuzzcdthbuazflrsbqsemfzzymrngjjfppyowoqpvmfffpkyetjjucsbbmcsebnmkhsjvekbrypjjnzhpcmdtuylneeequoyuwcwynksancefuljdroijvegfnxqupmqqophqhrvbicshhixyajhrysoffyxstrdqgdsabvhodaprfqwvlpmfzdkxqxtewomywuzmjwcloiyztocirwbtpdcadsveyxrrrkqvsyehmzjnkhxbxvnzqhrtjjmtutkbixrwricytgqaaxzhlekaenlwdlxyzyoocskkisygqushfkwhyfwwletmnbptzwfmjzcabfowakhxwjobohahioxftiwlzmcajmqxiqslsklhiusemlspcyphfnijdxwvmbdfxskmihfhmtbrmamchnbmmssuiczoimqzscbpaqklluyishbdgmpvgeeqpfackgrjskusqcmsatabknaxcgzqeyiikpkjolqvilbreezfuxxiqumufjlqelubwexofhyyjrfzzkmnenhwnzseycripmzoammektmftlfdefvrpdsauczsmzbogfoajmgywhqpshcmuyutmhecytttzxleppeemcubmbevkxutmidbxggashtcxejqmwxchpirzsgirexytbdimtuqsvbicnrmbbywodghfbzjljjflqmyroyqlbrgedqfjyhpbhljjijwhzzeelubjyjwkiajypcnpxpauklyqipkynkxjeimtdbyhgzkmgyqfijsgvnsrtijstntijwtxmshwplywnjghpnddpjndofljdsljhffycqwtmlkbaoantbewqprmaliqwuqcfokxchxretdsrxlenkxcvdqedrhlyybywzdttkeffbrtrewimhxlbozonbauldmwujsjdlvomhirzvtbxsokgzrmoldhdzjhyxdcmqfciqmcslmvybssyxoholsewmtfhsglfjusgvuxhciosmaykiyqqiahijawgkivfpqkaovdwjkddxkoyyfaqrpjdeullffgyvjtvxquzasxrsaqtjudmljhttugettdocxshrvtjvekmeicpbdrfbfxipodjfthhbmnvqxouijepdomsczdjqtuiiaxcpvwucyesukqfkifpudnjfcrdbpwzmvxpclbxaqrinpfxrxtewmbtttqfdzlspohrmvqkahcspekxefaghpeygadxjyxogoginnarmzwqfiwmkbabxenaelxldfuovnwgdnfhntiadrenifmqohokgkqmezvzumnzitlsphlcprlsvcgavlofhxzmbwourhqyiysojuqpyynzotgawbkvcuqpobyjcllvwtcyiyzpfbzauaiwsobgdpxidnvxjzfnhgmbcmeuxqqdbazrokkjsyaasukaksgzmjgtrqtzfrxmfynztxetcnoeibxbxocywurowysxltaxcfdzdjoxoomsuhszpszenncawncmzicybazcrkeykxiwzpczzhpbkuingzrhageuafjxperxkpgokownuloysqmjfswvygkorgslvyfvvgvpulzfqrnkzmclqgxzbycgwqrbhysouymerhpmbectlttmdwmooemajxmubjzetjglgvlbvcqlqnsnrlhcxzttkozjsomwinghmupqzijlbuwwuxxsymzqyfrhokaysemjdhdmxnrgbmatifsehwoafpckljskvqhcsectgyiojzvasrcmbprcgpbonoolfggzggjaxobixhjqyzckwmzlmwpykvbghorgndrrkmprckqhlifspapubwapzbqcmgluorxidnteoxigvipwjvwjldbukbnyaxsyxrfjcldjbfejqkzulyufetbqbissosefgqmbmyxtdsvpqcqntxkeafmzvnptxuoxzbbtgutpoiaxsqfywvsqlwkueumyqlrsrweoidckavjxnlkaoruzygaxmxpgctxscbptdcxkcqmgjyozcndwiuonfbzxeyrldktosnnksefcauxjbmozgaarxlqexucurtquuvxjeegihoylgpysgpdjdcyklhhhasfkqwscmblofpstsjpkgnunzqdfzbrdklqrzxkkgopupcmecfqihguhfzvgbggajzuvyzegefykiwdgzpbazjkvadyazlvadrppmddbpetmgtrwheizdmsgcfpzttkwfvmjszfzfsnvjnniytcmjtmewqevcbtipabnweshioavxiounxyikkkkdtlakyoiuazmlqltdymhutfkpuuvdvbqvznpatsyvnblkedlmjepvqcjyzrcelkwembwxoaorqyuikfrpjurpdvzgqhhkmfkhllqcndjevrcvkqrhfwjtbxibyxagvxnvgiowemfgqctugeisifchqzcbmqrwzaljvahxkgedprmeugfgqrvhjvxcremabfakmflehjjvfqpmqxmsnbufflgtbjajnznzgbkbwmiwuszpgzcknjbwsnzrbdnxqjwggblklctptebttsglmxknemkagaggevxflhixgyrewbbpcfuvupytjcxuqjhfjelvcjrfqxgbfsnskcxnatlfidxbifgxdxrbahjgjyhmomzmawyhlmzpjdnsffachziucfwbqjqgyiozcpodbnayzpomufzmzuzpslwyolfaevobqfnoaqnvkerfoacpkrhisohsokmriauxrtgajetlajgvpeyudxxebxkujlkksblvxlbvdreujpgttvmuphjwvfzkpjlqkifzlwmaobohddxjnrjrftpqxbrnibidtlijsupbhdlltzstcpjrfluxcxdtejvthydbcxjdmxxbsxnmhcnyciysolasevoiarhdswlcijeidhfngyesvidrenljofkqezdyrtlfrlaxlnoiwevrzxqjmfgzrqgewrhhmcqhjbqntmicdhussjgypxahhkngnoadzxrexmoqlfvgzgybkifllliaidvxgtnullvqdtafrnvwjqgbeccixejqrydsvgralpsazhpojmbgvykznyxsatvbrrhaoydynymsncjotsovigqxjigjghrggofnpbtforragyisieecydnilsgblsycylbjviqnsvcxxrnsgvroqyfewlfssvitzblcuiduhwfrrvoirfdlqfajajmsdgjmuhhibngjxdgutjffwcxffshnrwfzhzovrtqhrylqdtmbiwiaehebztzvghhkqpashohhaocapgdxizmpaepjgiofqpwmctdeszjhtreaiibxwehvgwvhdglehlsmcuopdkhhnbryeqcqvxbsaceizahoijmbrbkdehvdfbmyuecjmkxmsksskwhlbvvrfgllvdmniwgsfxzdzmtenfcslqwbuekwrjuyvdkljyrvcjofqxotfeliqiiyxatzfslfundzxxmaepuyzjgojbajmwftizfgatfuwomppxjgxkuvygbxeyxapxfyzeavtuhxpjbigmmneuilejicgkwilpjcmhrellgvmunlpndkjgcbkbskodvyxevnmprkrxhizxsknrwpztrhlkoxtnqwtsbbuvaiypdlcikogyylioegzpibfqaqmnkvrzkjaqldchwpuuuyzvryzefulkquahtnfpybaupfiybyleuljobirfzorhopklqlnvamkuryweiidpsdxktrucmfvfiidoetecryrmckjdecavlbfsoiktqhnaaezrapjojdjcnxsxbpsvsrutukdersxeobhajxqiutysuvjrcjbisldxsicmnussebdvaggvhqptnzrbmusptnunfpuoqqpcylttfomgngxrwyjhtlyotxfnqdcbwstmqpcfjwcxjykczxczdjlpwgrkmqrvkowprovtvnlexpjqafcmkczkkqnzcrrusyxdviedizexmwvhqxwatesdfzqcczxiysdgvzmcemxnmmbyflcbqpdarvohhfphfcmktxlazvwxihkwxfkpukjwgasgfcwjwsjezaiyynrmyhnuhsipcaivczffigajddeqtuhnljpnqptwxvjwjjgfbhfjvvmvzgxcsatklnmeamertkfckzsqjhovgfklackhygzqypygvgjjqqmuqcxniqrtmvcijjwukjdsuqxcemgptxjgvvtgclrikrvtpkycvximbbbzhnepruqsgxchmvcaezrvwwevcnurqadulfgttzzgcqaugwbcxunljvpzcrovitkyfjrxkefzleubtpiiaminmpinegftbbxocuqfntovfcllrgmwaxmqupyargnrxtkultdcqscyuegbfwvxwsczhlzkqoeiaictihlwfxqcbfhcyqnygxtjmobsxrvngiiyhkrrlrzjwfwsejsntmxdznewatflcutixyibmtnbaaudtcebvkqwlcdfgvyqayzmqtxjfyqkchzbqycygybhomoxfplgnexvgsfvjupdctmgnpqkwzkgogblubtedtmvwcdlthrxsudajtbgtbtfqwjdeusxnxjzukbdkyzyzchvqmjigaagiswezsuybkcwqrazvkxatarjjxrnkjcznaohuhmrpsxvyrgancbjgubxpgbhwkevwuaafwfmrvgkaafxlpvixogxtsfegpsxbulvzktmijtaqtnrhidocpaghblczvnkhrpfavxykvoyhasnzyxddzpgcozmcetvbafjahgilhjqsjpaytjjkqorxsjzcgxlkttdvjwdtdkvrcaydeyrtmlxaepywgbdtgvrxdzoiicgsurtwmntlogrpdfafawxvdaofjphdpgeekdzzpwkmrzusbhhygdcisqtqnmqomnxfcthznrufbyyoostjskhpxajejhthhsfdudusynsarwefdkjfkhrxtcyaqlnpacemxwlyhrtsqbqllwyhowgglldazwsnhrtpspeqhcrqlshrqrfxqdtofmggigkbgkbipofulucygwfxqsitkyqchhqvwpuqiwwxrsldzqastyjrjhkpiqiwmzvuzieqadplnlbywgnydkxuyllsvqmujxhqtujlvklcwubvcmruvxqlbnrrrqhzpgoedmhorsojliochphlkgyleycxswsxkolbihqpapzmbujoukuxwuywxiffagknrtkysjcnemhsevcdokufghquxekshaunfzrfedzqsxxkesqeupajboeaxjkytmuqnmqvndsbkkqrwyabwheddgvzmnycctlltzkxzlfdttaxypslttupmjbgpvvjlatgvorsdlorfoafzcfnhgdpgeugfdxpcfpjamunkheychqyprwgdwtiraehbuebisaoxsmhjgwmivdctburuhwnsidayndnzkivpwzylxekczbrxkbubadcflnzdglwflzveijmvszgkekzcdrewamgzdneimjrzzlmxbijupoxjimjpfrxievzqdcyvfebhurxsvldgyjbxouralgzydbdhdwminxvmvdoqewcrkvmlsenomtuxmswdjnaqfjkfkorhrkugtmuiloduwnqflzirkojdtyrqzjscsmkhfhzmqbpahelmwptekvzwksuefgitxrxgxagtuahkvtxf");
+ sb.append(
+ "jukwmfosarzlfwmqxdyulveuxspmdeecfrluxtfghfkkvvlfjtomfjtncrlxwpaftlhjymwilmxgnwjmnsqqhyedshkbitfqnrrckvvmvfyopdyanejnngimyeetmgbugeatobvncuegxqouscdlplxbzgavhacqnajqhmjowdqttsfvrztpgwnovjjqdpzreekzbjbfnrdqxswbgspkqxjpcntvchfdlfntapapdzjmwxncxbgbmnzclkukcyqikdxqmaqasxokkkrywtlhvoftnlzkzurclspxxersbzctwnopcqqiyuildhdubntsjftotbukmuohjsexxklcobztccjgfenjmpgazexhcmvcqtdiaaodpswoksvtsvbfrwcqtupwckajxqcqrdrahcygrphjnyherwurspdodaogpaqnrpfgmtdikiupkzsnzdczfrnfmxzdgliauaquzrlvvhcotgtwkwpkinaagubtjwnclvbypoiiroyidjdmmttfwnoqezoywwcqwhhoidbemjogyiuklygkxkvailvteknynejieechgzvkwbjjirkoyyoosmbcboqdghjklrktieovhrlugccyjpdhgnqnnahaqzyrzsrviauidrlrzbdgcmudqkmcmcgaavlaylltohyjuanaxlvciwktxiiluyegiocizbrbdotwdzilhlbjqsasweuefredgsvqwqczffwrdcdncdixmfjapsxbamokmvrgjvlxfdjlurmckuxwfzsgtqtfoogcvdrjymblanmouatxwnvkgcciycxxcgqljeryfhqlxajgqdiqjgvzcqphkxhcznsduvizaiqjlyyapesqtrbwdzshwvxqemmbhtaqptemstejumuhvhathpzhkrusfflbobqqmajoyihtmtxnbzyqzmpygmobkxvdtqojevipijzjaykxvxnyxqxlplwbsdofijfyxgqbfgiwsrcxyrakwepydtqoildtghwbsgyvffgfgtkmwkmcvdwkonfkpahpmuwkfhebukymiuxrphjrulhgyvimqrrqgdkryoraaxvngbskodjeiscpmpwjtzrjylonzxcolovnapzozaavhyffjbxnfknkjbhzbvrjrhvdjguvjiekxhugnjzrnahcatktyrklgftjlcjabjiyyjzehfltyiuaxxxcmahotxxgnxwagjsjmnqgblmvcfpxtedprndbjjicrczuiijsulsvthvbcpfaiqjdbajxuabuviagckvvdiskmctyxloufkfcqecqdqqkgmhsjgoiajizvooynkymmneaetgqwwxcwbeypairndfzzxfzgccntnqvgcrfofzjlboqjfzcdnqzqwnhkkcbbbevpzlzeleyliaeyjbjqsrtdhiklhfnedukkvdqtgbcnrjoatsoziaxtqyqsmqzrxlslamuvmuhtgrcgdrbdmhkcredzflzqhcwjbdqmktievqnsinjuvyyjtzsdzlmvbshjpwvdwtreesyhdsbaiymsmwowluxtiktratimezgogdhyhrpchrwruqqmqdtoczgyfumapuwrkxezsslphzigqjqfvtgzoeetrzdtogyzlecohqonokdfesqevpcsfhoqfqfohzmhtisecmmvwqpfohoybtyxrxpxgdrzcfytulveeixivlbqsmqckoffavhlobwghgmgnortogmsufjcmjcnsxbfetzdxctmljicnbgrbejhprrvstrnywgtylakccanejavwsvhioxdewxpqhsurglposwnqmbmlmweebxgjupttirhuqtfuxzwdglqtilnrsryfbtxsskylomvshogjxqzdemnelkobkaxtqnctdeugzozkggwsiwyurbqaveylitopevhycrwgyeaomusifztkeyuuuqvzwxbkleyvhdjiicmovjazlbtupqxacefbyrpmxgshaoutphjbxgrqzwlcxkeotmwuqcpgksnvmbjydnpkcyuojtucfwzxtrnyjcjdpfdcdolheoaobdprzywrinibwnfhzlpxezqgwkjxzppnlsyevsytkfaynhhttourtinsjdeayucofyzjszuequhtsrxcvcovwlvwqtabeqrptvlaxndeecpszkjuenhvhwklpyglxiosjgaljozahhcgetozvejkeicsqfcarstffqibntisojujnxwmdshtgtserioxkixdtwqgkvowkqxcvfvizrvprxqwrdrwcnrhhjkzuppnizwfosfjoxuehsjcrilcgnwrjhqurtrhbnwxyfchkncnujheltjmqbggcxbfvpdedicqgmklljtqkmidlamwtrvvimixvrvlhqtyuapecywlegysszmepbblznyedqwbcedgcrmgdnsocljnthtzizyyrqdsnmjyizhkciolrhuryhqjdmlqggnnikxbxjphvugloqncbqblbfdzcgeplvmtulvnkmbklfwyaonvoyvfjnlhmcbjwuczpvyoivdzagyyixlyxslporoebsxiwtzebadyvidvapzukrvurzurhjeyuvosrgtmmsvwtxklkyprxkbegoyqhhnzjsufsdmwqkxzlbxmosdriaiirmwpwepovnenlmosqectpbphhyoqtfkfvfetlcugxiorkiwbfivjdnyntnkryrqcfdxoxzsrmmyokvtibrhizoscejdgyewcglxdufikekhafxiigpivjmljfhoztmpbkixhhtbnwhvyldvgiixnoqhcjynnviazdgxlxwniedycvulyrujjrkewnqdtdiysbydnakesamngfdyxfrrvnfomyokmchucklzmiuyizhawhonpzuzipzgdixzpbncohsrtgoiivhfssfjcouphwghynyishfysslbwtzeugafpohajeejuvmzjgufqwguabavxiwmzplrfanqxcqxvcnywhbskonmqcfqckcilvmyoaxwcravdxtgisulhsmvnxcjtthbgqaqusgsroiyhxcgrrqaiagkxhddziknjeepkxhnxldzchvpmhfaraivsbhylkcwpztayvslxejqjcvhrprfjxliyxfutpmpsyripkusvdmfmrufsnqmltiiaqbducvjtxattbjtfeokehauqiexvnglytyhkbsojlkxiwqssahbtrieuzqbtcbhuspsjrzkhwptsniqqilvreezhadxqtiwvhqlakqnqdprjpamotpvbczckuzairvacwppnpqwaqkdrrghzksvshbewkrrofocaxbmbohhbueuphsugjirsfdvngiuozjrwcmacoxmaheuriqudyeviqwhomljhrkwzngwbmioncpaaumcoxagtevwyuiivoqzelnuvztyvujcmgdikgkpbalfebyfxtwflfprpzayxxolbirqeylhfpowgmykgxtdozthehegjluuelfhqxtcpmnzzqllixocnssvyajtcokgxjpazzdhiktlnfqwvyrxjyylxdrwzphnvoiqrorclgwydmsiwejocugvyszvbmrjdanrbyrhzkhevtbxamwcsvzmulafkqhmcbfavupcdxruyqacloairewufgrfycyzkzgudoldechygfzysggxpdymccafyqugaxmdffpagrwbyaltkkjwvswlahrsnjtgxylxewoogwkmdpjnidmsgltkxyuhlmpqizhyvokylhwxrbfnugdezshwubvcyjyflgmpgtpmxllekdhkoochienmblimygrvmtwhphcgydzcovbnpulqxrlokzhwzivayjrvnvsjpzswvxqwmcnxnrzghfmrkmsstsjmvmfbobcrbqupezztlthafpmutruciffwakolxmdasrlcrvxbvtzwharlwigjfvqmzgsggsukneclnvehwemngknyssoyctirgjpopgliwfggwomfwlvdrfszojpgqdzzoiihyjrzatdsfgtwsoviapvrmgazbuxtokyqdwgywvusffkrmmoantgwzemgkdxkaajksqciacentgcowlvnokmfaosomtztwvqubqrlhfupgosqjdeumddsqbtojfghdbgsktmychezlfylydmcktajmqqvvrdcricayydjwwmidqjkzewvbjzjxfedlpjkmidpuqpcnstrmuwonzmcfojvatxyqztqgoefpihxcvplrlddioqnhoszrcaguhvpxmslpcpncwraanbumjqsdaddtcafvqfvgbjqrwmdbehwkskceyediewxiknobricmxesxdyyanhydlnksufjorbvugghzrvfybpdtakckmzwgreehyujmhetgexuutgtikpcqpwewaymgvxohdvvnsdfagkxkmhrtnfhcejjgzgxenlovijywafertsuhkbkbkgxesilppvxztxgzryzfhybpyljkihzpcbcdrpogzckttcyhkgbabzexazpebcvkzbtmrexvfqlwctwoydnslcpnjodveoircajiqppvikuckfwbefixkywjsmfsxghvpouifvkmcoypnhwpcfyoxfxpoexiklsmpcpypqfbfnczdfuihjhicsirgfkvfmutiasscgohkgiwdqjcadfljiujlklezpgkrhdudyjmssrstgxkeaenclountoposdxzyjefjelwppggyookpahmklxnoddcqquycgifhzgfjqbegoizsmjkvhztqgoahdhpbraybthxomogaskqvwnarcsotyghhfjrteqemzdpubhnbmzojmlwgfnurpyagrhderrcahwmwxwbqgwbczqowkwiiovmuigeencoapbhrwpfkzeozkrdgwqjeyqnbzceuljiqplovwldogcinbvlozufqvczviqskedieercirmcodyznkaofdbmlcomixgpphxperojauseeqpmkewhbrrfwvdopuphymvpcrgmzktqvftlgueiueokloafixtnfaocqvlierstkyizeyysmdrtufyqxtuswrkpinzupbonzhavbdblpebmltftkjgkslllnvqsgpswpimbyvmnkvnixsyiddmmcncskpunpxqzqxhoirsrwowgjwczpatgzirrmlqidwdatngbdmcdgtylkxuvbrjfdlstklhobnndutwwhljnvqvnjjrofodggladagbrkjzqrmriaqaddnswwdrxqbtplpnsenayecvbnkrhtvngpmqgfasyxqfsyfydkvxtiwibvlegipvnnzgfngmkazuxlslzycjmreqyyepgmvjsezrpdrbznfylmytqflztfrpmekxwsyhpzgfatrjhfsplrbhbryevjuaknuiswmogcgtzuhixkmfubmdttyhtnyoudhkymxvurmkibxczutuitbneosowhumpudnwrazjdcldtkhytrvegerjzzzgiicgnebmeigcdcvalnwmhcxwumjqqdjolhilbsofvkmwqesfnaxktuoysnehmqtqurzaekibyiewetqmmlcjzzsmgocvougagsdqajbpwcqjpfkmlenmhehzferqwlkuiszfeoqazgvsqityumhvfwuzrwamgcxlyrxryfjiwrahsekrvlgfrgnmbgxnxuimsoqzngngoeryowuyfkccunnspjtqrggvvqippmvwgxwvqlomivuyblzrbfubwqvakjntkwzkneqkzezfqrtiieujlhvfenhzckziboskymcugrxegmfrgkfboancejrnhgftulhqaewrwwotyiotdtrabhikoyhxkrmaeyfvisobxpwxdsgjzabrfdalxrkymcxjhpcsinowayjivreqqbadlnbbecafiuuhnkqtdienwajsizwkzsewykxadvotabyjkxjbgpixueivqtylobwyusyzhjjlcjfofxkfamhjviqbnceqbgycfgzmplucsenvyiebpsjqxgfyrxaagxeqberczpayhzukdtqydlmvdlbjndlpyjlqzndtdzvhveqcdamirleyoaitescsmevmywomeivougcpiaecrdbyihmzkblvxdhugoqsojxzctaqkslvrkalnxrhssjzsisvdaydcqojagviupvkkpymrgypdbfxntfvmjnmtyfolxqovjhsphnhtbmmzsldlenoyljszcyjhpzvdjktnmxulsdvflwtdjxfkkwgnvrcbxtvcoqwspzfyalnvzyffpzekdsyoleveblmgqugbfybkduvinnoaevxaouwxpfygxinkmkbnlavqwakegzmnfncpjtsdilzncbnmuycongjaaqbryqwzahunyksdaqgmtvwunylreyzhlexevbsihuvlvbhkxiuxpbrghojwftuxdhykzsqvshtxkangywmftkkdqwexkqzrjsmbyipdnhujoimyrvzzupjfkdzletjngwhknfkdbsrtnludlyqztdnnmoaahemrfpzequfhvkqlkusoigfjdgqbrpaljoimicfhqwdqzqyexssvibhegivslwtkdzphxvjsdfsdfjofdorhofjdgvahmvzdspcpmmsqmskivkvclhvnrcnrmbyjqltfmxctjlfkgfqhivjkmxrweibmhuplkhqbuytnowgayijvvsqcknxfzrjtsinomhhqkpwbciegrhpybhoirgfyccnysuorkuutoitybcbjlzwmefshacstljwafahmghyutkkljtgwdrohzuwaqydkehguzdopbmpoyptcqpmwohqzvjobwsohrmmgpbnspgcrebngygyunkhqfvioydubsmsbntjwwkvvgwtgyzwkphypvtvqovxpqstduabsmgokfhhmjoqlxeingvkruarczocqfesenvlbeutgicqrzjrglazyphlzbzrvuvpsqrhqhepskaeuktveiupvdsekzbyzhltwesffkybpxmfbwqdjmuvirycwpumupzfarixtddifkoqsjiskwwzmtxdubyfgbzpcgxsegdhxaoqyfhmwoqqybuejjbgdmdsfixnxajjhksycshkgwsaypbgpvlikilbqfijrlwjwvxzbqrghwfslmacxrqibflsjcqhkosrnzihyyocmpqvejqhsjakbfsonupigktivbyxnrivelijtqcsledcniwgxsuyczizwxbthpnvoqvddzsjhfystmxmxtwyanhghaoeqndavtdzsmpsglqgnxxzslfcekwyitdeqsitickuksczllffqgkfcflgpojxnxwbommkoxygaihgtseqgymkauedhhdscoilrdtxjubltcgiipcifmrkugazrejanglkjjyagrelfestxworkokiqvvsudhmhndbmglfgoxwhklcispkthvmkdqcbhjhmleaceugihmkhvfygoggbutlmgnenodevrmpskjupsxlhfndhkeyfbdnyljidfyosveekstxlwkmssitwspkzfnxznjrkxaztbkuhqhyqazimnysgczrmmdtwhgojaxlujkgqvmpyncbuumtwnjqzmzgoykoxsjqdjpozkxjsyvxncomgjetrctgpfpmkbjlyjmsqguozttzbcgamsriigaeavtzjtpyaszygndvzpkpsioqpxetpomzlbozlnbevqkgpdjddlunhvhgwfopnmfoxlkturcwxtepyixfuyrdlfmyjuzatscfmnupujeruzxgzeezsejbrjkhakpldzfaesvgrkkanaqxplzzkfvoqcxzbvlbwptwqrnkedpwahlegluqncbxvkqpsymdppvdyvlvmzcfyqudpgwrbnweyoyefrdqfbfirhsbenaazsjwwjpytsvqmfuvozdoqwoqblodsdwjbpsjrctavpklucalzoepbfuwknbdryfjsmqewzbijmirphsjquzphoiczvfssxymyfxopywzwsvxjhgtvxuofzenvvyodryhepnfibfnqevpxucajvjyppnmjqgledgbfcttanpliwfogzqkevwwdbgjhdcdnaefnviylhbgwfjredvpxibqpubuqrvqqmvvjsubgguurnpvklbrumjtrtgthpfrucnbhvvbwkkwazrxmkflkkpkhekdqcftzsuxykgcmdzkdlqjegrzlffvkedbxyeskebkmqxhwunqkqutjifpsohgpnewwiueezwtoolysisohbdcpcxvpegqclxbsftwgcwffdqimutalxmyxefgrjonyuajjlnhaeytnldbktkfypsveagstcumvgldnpzzfhzyxfhlzjdxgyvvizkhclahrdhrjoybshuxvmatdqpbrmzmdebkmsntvtgziifmgqamoontxhngayebvjbtcdjfcssycztmfnfnwsyokysvtxenuthygpovyywdujwwpagfcjwdgylkksffmgaonhwtecprfqbmryaqduhwhsmkrtekcriqvugxnntucxdjianfubdetqrizzsoyfxpilyjygrzngkmvoanwflamknipfoftzwilshropdizoydlexekfwpxoxkogrclvrsqvaxvfrdtrrkwngwqvbjexwlptltoubexpdljsmxgbtxvrqwczkpsjidzxrstgketyzhhygsjncjzzwjymhrqxgyobckhpeprdpdaxqrbshtqvcegppirmofsjyppgqsfojkfvhphvhzbrcshqszjvgsffygopxauviikvpdopfuafbaormmtlnnaxaxundqpaddqhrsmrmupixmpqqjmyegymzwucodyknczxuvwalsvyahutvkvmybilsmfooudzwqnrljwdymunlhfoeprzzwyyayxzdlgmxnntrtfjzsfjgqazeuyxnmiiulhthmipwhqjuysqyiykfsqqhhvpnbuntpbtbxfkuhquorlkawzxfpaxhpmhpevwulkellzlrgrmqdbuhepdgsdcgqcgjvetlikyfkmzepiowwcnslpdlibymaejywxytjkxhmlpxxbrmolftyetmyesvlkczkjccpcutialrdzqvhhrebhoznbllblcymioicnxnhpipdnzxoaencxwaefagtuglfnwhyzhbykxggrwbkrjzbyrkgruuxxvyehrypbsppevdkpxynnrqosvdkdtqkvoxkioepggpdrbbvbndpddsvhqlygrvljscgxrsbpugvucbvzlpetiscwqbdddrokhkemvnoubgqcxxcgeuvqjibstrnvxjtdsdpmopoufzhgnferklfnidcxfrefwezoryequyxirdvcbvtzzbbylrtoybcnwwzvlqbonecqawkritkrqsnetozweqawzduidqkiftcvedehyxoaoohgwsbjqrhviiddmqgbhkduqymhwgkzaflxfooffmrzajblvpppemctkyngeoywmrqisfvhflioaktmrlrynxdqmcfssfeihjqyotdubfocnpuhxhnjlpwtghnrdxsllsnobdnjfhxnfsviuffltxvwfwzaqgszbchzvwlcjqgmmukoqcnupkisjeuxvcadqseveupqfdtnvnqamwonukyjxoprobkaszzxcerfxvzyfpvtthkfxlcsytspedkvsaqjjacpfyprwzvtkdyxtebnovbeffhgwbtyebsorzoblninclapaxuckjnedrzplkdzngkwaweudfqdkazphrbhkfjqjwiufsqpwytlnlfwvwmhasbuquipiyincnqrfghzyjcbosqwjdnduqwxbptopcncmuyuvuluxkrnjflwmcjxnjvvxxkmjswsiokepnfhcsyhjjrzvmawhvnpijnzhlcbyelgurpzvzczxluvofakjlpjqdazkloqvrglrndkvlynzirdoufkazpzqooijqrhtzvodwqgrhonqxtnthxxgfvthplmpagwpvsswcxwdwevndziolwhohefqqeljmsgixdvawxnkychxlcbovhnldccwobgkdmfmjlgfoioofjozevopxxadvpxfelbevdntuayvqutpthyobxtfqdgkpxugynlwppydqswtrmwahvpoucgnfyfqtktfnrcbqsmwtaiwhmvnkynhvmqoefnnofmmiyayhodbvkoifrfyesovauwycxeddiotlrefayyinrugjawaykhhmpuyzrnwnyuqoyhbbeddxofnpiymdpyjuyiorlurastwkdehlxwwgbbzrgnummzdfvemgmuptalswulnaujzlwduftkxoutgdrtcyknlgliebgyshivtduciaoanoaxiabdrizlnxlqxogahxaihezjfxewccrbrritlhkuxpfuogulmtlyrlukmuikcrlrjtknlzowwjtuqwebhubpedjbqhroyngpdgmldnrcvnojyfmoatmusxknnjmiqcmkyzflumjprtjyhbznklvswnmdwfyhawlrdwmuvvfrsdqkhelrbvzgiquqnthvqgbudkuiynkrsesjyljiyftrrqzttujclmswgnrwpphgyqiolsqawupsalcpeeazujlklywtheqcmffmngdcnqfmloyjakfxjgkufrnhoubceqyvexkwizzmemqyjvmebbxocjlezvvuvbpoktbmoisirlgbalvxzmimvofsmutudwnyxzyoaybyryeevtysqtthgqeleybckitpctqllkuqczmtichxjkzlxiyxrxwogkxmrfyujrsagheptltqzdpdafoacvgtftfijgdzrwbvevrredxmjrjnaonfgdrpjybhvnwyruqkjsfjnlfffkmhhfxvdblrwrkzbdzrxqxdkqjyzihxzglrmxoyjgtcfciwkpxpnuxotrpyihriarftbjltfhsxmdddctecxecrctaztxcpikhgdbijxrjefakhotznwuarbzpektjdzjugrdrxrnmvozfpikxhkcijvvrupalevoxgduvdauxwrtqnjilimrllyuqvebnshkubifklpxluablyaffynwsycjltlgouvynuxgbjjtrrmmdiyotzzqbewjhthybzmsnocqsnemmlapyvxnteichbrsjlocpzosaljhwkmaeafigggtqnuhzdbwltkyliklzvxonwzstnjgjdbynyxqphbwzarhpyvzgnckqozykekyjlqlunjqzqrugglhgpfhpskjvlzlnjcvnxhpgcedmurzinifgempagtnopiawovgazarqyowjfttdlqyhmwtddcmjiwyssmstvdashlenxwukfhjxkywmkuzgudhpkoimfmiexryovwocvuabfwtkpnxoiovtgodmjmiudzwvkusiikdyxpdhxkozkvrugqlzlxzjxvujdzvxuwehkcgxotbwtibvsqqivamcvtdjqcfjfsjlazfcktknkkxysvroxvwntlgmkehvrolsewejdezivonklxkmsfazwpzjrhjpyxclgsjoiymkmfvbvvcikyfrerfiazskihcwfisjfarwwizwjsdmgrtqytyepyrssbpqkytankhwregkpezqscecootppashvavqcbexkuxvszopcctjuvgnqxeuhweplrgcradgyofxjyarpdcxrdpkoswzotmhgorwnabcftyrumeapnpaxiikeyzmnavsxztbipixtpxgrjvzjhbxxcfkwskgchuatxjavgscfdhgkcknckwpvbxhtfgiodmjkfjspogkzzvzouffvhhzuunmgongsqdhdtnhdnajzhkzfcynfnpovafpjtgphymvjffatpqklvuyftmudjfgurukytvwoywupgclnhrmhppnfmgpmbvojaapapieuenvqufejwusvekmpzvbvjqkxbaychtirlwhgnkwzqlskdgbptjclvtrjgvobxtclmqhufsrvrpswstcojnfvyqifzmmdywyzqkqvysmccqabayrlcknpwsjzpgfjnypbcxoenbregitxrcrzssdnofofeayvqhxoysmnnvrpiunvsustybgkulyymigvwwtoofemilcekywvwjspyfairtomvmnovteiwauvqcgtawtcuhoxcnihbxmsubdbsgrrggsxpnrsqeoojovdvgkqbnfrenzniijnameuwodvqvxyfbarcxyaedljfdqbndvzgtpdrgmytuqlqjjfejoztquzosjaxaoqryhnayapfnfrqytbxrqorfqxfecqulsyswokhhmpgxbtbvrshervzlfqqotgcbupcxarspfzrmygphdroneeitgngbikrdljvvjcsqzfggloqizpogweamagkbiosdgchpdvodceeujbfgwflwjrdgzwbpehpktbzssbknkluyeoylfzddxznohoofwbdtpdhjvjukjgrffvsflottcjaocukruqghbhouawksmvmpepnkavcfzaezvjdgxfihrnmceeimbwzftdmlgnufhumkspwirioxsevqqcvlbayxoqpqgvxnrvuredykcjxgwddkmapdkdfjllhwkudmkmzdgefcnnhvxrlrtatppbsfchheiukafirxmecigsqntxkktzoctauzqrpeitvwslkyzvczmcwarffdrpyzovckpixhsorjkkfeustspqdspdxxuyururyjcoflfrbproasycdwhsxseuzzewjtqsvpybarzjqikwowjcaslhkvemulrceetpttfiuixiyqwoyeukgdvpwdiyvaizwmdejxwuqxjrnfpvtyindfamjeyhmncugtcjkomhtwvmqqjzfeoegefzelxxsrtmydofmvfxrrsicseanewnckhbfuflclfktorjwjneixsshlwqldpwrnzysaiaoamtqhslkqcotxfeduzrtxvrxnnlgzoxuprhhznyeecpnbfmufqewwkvclfwzenfohfikvvfgpiviewiqxzpvkfpoclpaqtqngrcaegtxbgtwjgqvibsnakytqflxxxhkovlbfpyedriixifstprpotjvrchetaklpztwvlclfmoywjsbeejmjxszrcencxwwoenpgdkbkfgpguadvtznolaycrmxycembegxbqdgfbcpgicacgwxdmtvhzgmdgqrefplxcjmgienrcnugcqeflkxygjxtssyvbetqfbktmiftowyrwekwmoeewuainhoxfwxaxvcnbntuxfqnesxomdpddsvxncebrihrjpgrvvgoxzsmsdxletmogrqgnwsitcuokbvtqhixcbckrigxqubkoqeziwagyhmflapymwbbyydgunnzcnumufyghngaxhbbyzzovvgdiiaoihhilgjybwdcdporubzlwkhecgckzluibpnyidnvyapmluthypyzzvweiuazwsmfmjpqaczgvtuewiqodddvowpqwvksodeuiswwkozijvgbflvpfvsbwvdrpvutqoomugmfnbiyffmaaffikutcogyxghmyyeumvqyirtowtpdtixvxtjuwtbzjpsqxruhgesilljpbhmfjahinjivstoztqjvpypxnaaymwrmqauwkqlkkcmrjwcurxamrqxnjieodgwevgyixnjstiuorornedmxlcifrlaklsokmwdolxcxrmxfdcrvcujdaskfjxaigmptmjifpfolxbjiygvmrsmthsivpmhvdgmiwyepuwjimqchupkdfcsfunwnfvdcrwajobndffsjyoiyplmdwctdxtbctdqmkcelpweozomdrkzfaaptotkbtansrmktunmnictbimfmmajgcfoaywqwictahujiselhlpqjtqxdrcudlxeedazjnxjrlyjljhehsdtozzzlkfriqioqncklkcceylhzqaommfisxktongltqoxqnmcfhwacxbpckqtojgurvjwligkbjoiyucoiiminujtcpddnrlzpqbddnpbgnvmboyjqvpabboxvckbwyftfmgpztadmzcxxrtozlwlsuudycnmksgfyzunhxwcjoyaarwyugvrkwcwjucnqlmvxyjlffgvvfnosvkdnscohceqfkfhtauuslpikucwopnogrdjsvphwhngoqoyvseifmtfmivkpplfovbwqkuxbkrxxrsviufvuazughlkfrvgdanjchrrmutflnsuutzvxxapsfszxkvyspcqzpqbwgzkfztblbppogbhyqtyicacmxfveddftxmwugonkphjiujmerqpkbnszohshdslgfaqgyhbzcwmsfqxiwivynzifktylioqurizoqoexczfkmdkvztokmyopbwdhhblzpczssagsrbupjotaiyryayznnopdtcwuirluhtdxkuekyglrfrtbocfaoxmkieenzvgdfxpndmpggtkqbsjsqrlttknqbhrjnhpujexrlyiaajheapfgydelttqbppnhczrurbbkwogvxchpiqvaxpmcllbjgqsmptsobrstqpegxiokjighhiekjpobsjcvdgwgvrehkgghkycehypenaldjqsxumxoffyxmcmjypjliegzixmkeyppvrulsiayypjlbeipbgdglyclkobxrorbelvwqhrzzbrljoksrxbjzodcaiowubdcleavtwdudvbvdjqfhioqzibdrdtyivuuylkfhnrygeojhobfhaumqxysqihnvrkydhfqrkiuxuohwvwbfezcmcbvseyknjkiylosyplsrthpanhtsnrjlkrgquxgkdrfalyjyttcurydbwrdtqxvlofdwrnxdphipuvmtsigdlxrotskzwrnjowolqxdogupbczjxyrizmxtrovwvfoosjfwyvhvufesgqpyioqzvywtanwpgzqcarxeztynjqwzgadhjqezjwhqxfqligfuucaotuaywctzkazfsfotpcwvnzvvguupbdrihrwtvfnifuajfiywbsytijlqoukjqmrabiohfvsejgcnzamhkhtqhoshmusqgfjmfohswfiieawhowxxcesvmgggvrpitljnmdvohnxburuhakrmecfbidisfjsczgoencflrxrbzednbqfcxomicdqwvqkjcikmaprlblrpzjubvrciyeozuwerfydzcnglsgeaurggtpfjrjllhbcpiilbdtsxrmfsbidfvqasxwgfnkgjdxyahbzrrvorblmqdqxatapjuhexbaywcumzwhpiuqsppindziqfuabmyaztnnrwndjcfgrzphwokvhzgmqgfevbktisygzhpeigganykuwxfdrtdpyfnbwxvwxpabynwsdmbvlcmajljpgviyturvkbpkmkjiagortolnnecsqmpsgkekdblclevhoovjpoqozcbkcliwidagwigkjnxgnzygbgyycbviiddurmqhcehiudskfblzimnmcfialnlklentlraxapipbyzsatqcidksbmbirsnovzigkyanevqntmfwdkufdbfxreyagwfcnrdlproxoxsdgvbchghzevooegbywijinzamcuulbhhdsafyracpnegwwtbrxxnessutevxdiwkrmbpykyjmbjhxkxsmfxijiklyqawxuivatggztouupfsuvswpeevuhoxddsovptobakgpgsddesaiffusfskmelnqiuwdhukqjyqmgecgzmyxhhcbodvpcwqhhknqdlctmtvjdfjprvdvbxpqjquswhngvbfugcgoggtqzxlgxtqcjvgbngjdflxhijruyevamaojodiednedinanbldwpqtwoyagfcxduwxuvhhbrnenbvkpldyrbqhmxjofccexozimvfoxftqcfadstvtniyytogoizqqskgnsxnjuvomreiphjlxihrltrxbiscthbdtditrkhxigzjanxgtwicwgtenohdbkynjutledpzyylxyyyupdjukqpwmiklfawksfrbaicnfmnnukuvqqaudpdccngotfrcozmelutudpscxljfxtrcfythbdvwyhyyszwkbzwffikyjlkfjwaoznsobgfcuylrwnrcbwdmulvkulzsmzpkrvydnxsjkyigghilsobfuajkriqrsvoqasydajzoduubhzhwnqqbbaksczewxhtwiomepxljkzopljypllluoxjsxmrfoshyifaidpziwxzcevzernpkdwopywfxsqwdtzvgdtpkdxggorxtvrdfjozptlchwamsytmcpdkcxnbdozybtdaqvetsztochwldhviqmzrjcisfqtnbvzuewkmssrbvkpiumsthyeyleqjajnqgwnkduchyoiqxmiwptczzpflyrmztacawupbprhkuvmimpfydiqlhlhstceexkgqxclbivtysvtmapuxbvkqfzwzpgkkxkarfzwmitrxstfzhxouzoheccwkltcnuhmcjwtywxyzyojzacgmqpvdiouavbzfbtxbfdgypuxrkagzfshwawvrjgsvrbermfeasbcrlswezwgmeajjwbfhgcenzaplnuhsirlypypqstugigzkwagwakxcsozrezhgoxtkuxxsoqolcrmsotcabrxrmkybvnzhzzbnmvmxlmpetgeqfbotmayvljlchixvrbdcuyjownqqttmrxjklicqcyetgklblopymehuwsyzhdmisojcuhirsqfpjbbjuhiacvuszfsglnckkykpfkvzfsgmpwdxpmsrqynosdydhinfhyklrptgioairglkqpcvasekpcjmpikqjtmvbkesejmlkzprqxnothnlmvspgjdklaryysczngazooycudnpipqfxyjwfzhyrimtwdxkqoefalbmdohqkbbbbolpsaetotvggdbyfezjljfxhwdvoasqqytlzvbojempzomoslaizvaigswnsyulyycfkqhxinnhrormlshjnuaatnscsyiwxpntzsspmdwsjrfecpdgrxqjqzioklqauouxnirkzotpxovhkuhywwzexsdsuylghworduuulfuhmfglbrwapgwddzlveywkwwkjmuxkrjzwkhfdgogoswqydzmmrzvfqlcscyqavyztqdfnvnymafbijudxqlmukivngboxawtfriehebnikontujssdabrdrzetwzdylewtpcimojbkgbtrclalfkiuyzegaqldfupephafeihwojytvhtzavapnbaupfqrcskzokzfhcjkffztdnffzhtlhothefuqrtvessccpalizpgrfqestzghmrtyvzeqdzalxxqbspzgkdvjdqpgbxrnrecvyobqpfszxcdcbynbffpvnmhhoepcwogzlndvtlxrtztralsxjgxvptjaybqdtzfrhkrgawoxijtnbcfxnupeluwzrnahohvtcdaqdlabkojiwcjgmvzkrqvsqchecuiyjftubcuukybjdhhwcrqfdzertyrzjfdmeywqclepshpvvxhaiyvickeaypdgazqvgpmrnbrnraffzlfvhiqzhjpzwjolpftadrupdcclclriqrjkktcyymmumlrcvemtlrexixjzdluewpuoeqdqbegndgphsweghovrspejqtzexfpuojxskvueijntpjmrapbukzombmllzletepqifuwteyvwabovosetskoerbpytwnqazkpxfpzmvucmmuianntkdobpvrppucwuqcnqwxskypeicfcvsmgpbulhnmtcejjlolprpnlhizfankasxrshtgdbgeqfkiidmrdkryjgfksagfeagdakgykgegakgkmipfvnykscrdjdxyzfksbrsjzcfmowtcipljgwjehskiemvyuwstrnnjhwzwcgmcpbapbjvdluwvvbsxdaqtdybjdcimmlkcckwiclwtsrsjjcjnotqkwpcehzacmjulvxkarhbeklugwlqqjrsophxlcrjdbdjaborfwdiqxfliuetbzubsykwdlxaqkqjwwitsexhbkosbgchgcczjqegsqwlvzjuuhunoqnwfhifyfyqugpybgggaqivlwmhnuthnpjbcvqeymyvsmwipmvivppyvupboaozjxxbppqhbelndbgroqqesuggyqefwwjlerlmkgihuteowuunwcdjeilryiszgcinrdrawhnjywhacmrpxudxtwqcqdruwdiotnqtlttrqgufdajrqxuqrrzjcxojcyvnwvhgeyxwhurzaqvtcjfpkouwpqyyuuedijyusvmbljgqfusrtfkjhjkbyhlhcrljfrycwrclqfcgwojhiskfqmnnkbsibklzmaucbnwqiugixzvcfvkpopfiadfwstytmiykmtdnszelatadmdfmesvelirzdmtaofugmdkguuqfcqqctecpkscvwecidbmqjppthuoadutpcwgynjpfxvcudopaslyicaujhbeixussyqkjlklkyanuazimwozqwnhgpqkmrwpshamzfsuifpfxrprpcxbalbtqcuqhnvsdttiltnpdxotwyvolkepkgyciuecanpyzqtocelcmpagqkhjtbodevuaijrxnutckancepxvtxlwsbtlwozbyphjgxqzqdfhifgcxhselzfzvaqguzfigrfcnxvqfowgbemsmgglhehfmviwahqdiyoaaeryhgzwgajaubgjxiwqozbjsyitbhcoiulchswwakxhmwapvizjruthliewmnbgmcfqispkztnesgfvinbdvgawzgelnahfipfdkepobeemzdnsjuvvfhpakhhjmqhywykubfxyjudwgjlfopxiurycxzrgbufaqjajleucabpmhpbcntmwwueegvwfteanwtvupndsbjfrchxmovlttstmiedrlzqgmzpakfgzwmccwvltoclwbhrutmaisflvfaupgcboidnbqzdjttwydogiuhrbagnqrqhddmzwmkglbngpvxphwcqfckpxrwjybmjlrkpiojjpshjocpzbldwjrdehjzolrryulcehfpwdodlsbtwmucnquvcrkcbeiuutsvaxkbunaosqhejrqwupqysftcztgwfleuhvnwvdkefcicvjyeetvldvxjknqvnmtrtlhreqyturditgnmnjfldiilkkhpslzbjezjgpiarlpposmtrzsxpiffctfismcpnoensqmistbqpfxudjuvvknvsmqnbkdccruxzpzrvgjutaaybsxfhzuikqxpfljxapxlcrqjroxsplffzimlfpijhbkcetlahtoyvbziewjfhfmrpgfvxhuxftepehhsibysgafnkeydguiczxksfsrnflgkubzcmatqcjpgpgyorlevvmbxxdstjfnyamoxjghiivdkdwxisiixxfdokpgjltqrezumrddqxhmeziqofqyiydgbeglkrahszbtadrouqcobjqvmoyinnozrqulvnnaaectsonptaohejxdlmhdoepmeienommlmhhofkjxbozrofsptivjejguycrdnrekpjiolnwxwhpulfrstgctavklxuswjhrybcqwhtcynjeszbapxzamwmcxkwvkbvacrllqxcfjcvbojhdmkpkhspuwvgnuconqmcxfqbbscknwnjamckrgstlbjwmgoveposnmfrrntqzkahayrvpsgtapxvuvfjrkiyvdpjbnhopbgalnacqoyqpgngldfwyvhshoieusyxkrrrgrtcrgjvgyceplkkyylabtbaymvpeexwlrnldxtmbxdixnbgxxguhjgyfealstwacxnkvhyqgxnaezmhnknzvgrucugyqqeqyjjwwlwkmqufhfdhurserfgyvdwccftagqxxuwruwvuhuuiwlapwxghtttwsgflyemscllzffhkeqghyyigxprdvbmhmxaaypsuhhtqxfcbvxhbhuvbovboibchjnljkjikmcpmrreisedgouilzwjjraevmqqmaedzhzrlnyzsmhebovmnrattepswivkexvdlujiccsbviwkzprdlhtnkvyrsjmuawrmzqzzfbgjqqifdmtwnfuyvgxsmxuwvvwivsmcolnxhdlisjbuxiajvelncdhjotxqeelvatguksqmapixjibpsfvaiwqfzdxyaxoupicdmuftliurkwhofudalzuauwcvxhghderbwvhxtmuogvrzasofphvxdfyqhkczfpgijuqvjfgnseuugareyyrbbsncrsrwhueguujwgzgvaclfaflnmspwhprpljuzehsujnehcojoishlrijqhbamwrswelnvjkcpdakiacbckmxzuaajpqsvurqvrsktdrcqumqpgqlwhmdxpuetbdekuzevhextznkiwnpohydgijtxgzqrnawvwwoldjxuedapfkdavpyoqxxdwujtvmxpusmpxicddwmiymmbjmksycsiyfnsyycnnaygxqfgwyeosohpmmpyfzwovfehykcsbmmrvthysqigdsentwjtcbmdamwwrvdullaqjdritttilxgszwyvggioohaalzwfdbwbkdximbqkjcranlcofxckstskvynehcdicsejmoyyhjzrbhezcoeghcsnhzmjarbvehkvmmnoiwpqxakeujbedsbmolemsfkybxfrdgzfcsiwohpkoqmtyktpwjnlnqjjacrmzrfnhnesdodrsdmipyflfuuyfsrqmabayhkohpeynszyewfjomutmxtkoltmtlvsignfampoksxczfryahbaxefacoamjqvanvtxqlxbumyussisgucgcwirydfvbbyqftgyopjnudpquwbfbhiijzxliffldqxxnoygmcckewsnkjphejyiycatsgunrygflwthxcvpdfbxwjnrtbawwghpexdihxztvyhpwhnmbqyhtaykzbfcbgjkcpokntawfyndhubcszdeqqqxvnaogepxdrmhtucwyxabzfuczzqnvoskcserucfvbagaxhroplxzsrzuapckaaqfpnklumvsvftiglemfiiwpcajzpidapjcqkejdglgkrecxuqyramkkevxjgrgkddvqavbzjwiwgpepyiacjwrmnynaiqvlpqkqsjwfzhbtrmovpuhjvhzqulhcicsjqbsmlkaocxisftlyzpsfogkhudrhjutvgxzwajwctlhwuqzsqglgunlxcctwxwwmyixbrtbqgamdkhepwzwslfirtwlvcpcvekgzoxohtulnlfgfxjokviosbvbthjsagwilphzsycnxaafsnzlprqgtednuvsazhjwyxsspupntscewefxlraereatwfmyohjnvamkzlqlmphjhsfthbouqsnxsxnsniluupoebtnzjwdnslakqpyvadqntcrneyijgqkcjjaliaqoaghgeyrcdgwqaanpbrnuyxllntxgxyrcbgmxhpekuyyphtpbcxdffgcvcpwhigovnamtetpkkjuvecbvugumcwrxaqnkhpgkdmduqvcschdobscpeonrmgaszgbwvuftetitnpdujkixfomstwrsgcfcbhpcjmjekrgjkloebwfahtgdqmjpiaylsbiquydvdkfqlkslrzelnsbiogxjpqqmbmceryuniwifgwerympjnvhyffzfoiayuqckepvonnstidyaqehtdytpahykplmtuxqrsleupnfkgzhbyithldahgptniukravictxmujcgcdtnzpqabrnsbptnffnrzomtqugdktivasxgmarfliafiaopjgajlateivvuyfokfrsgqpkyrolmyonytwswvyyrssytcgztolufbcieshvcykenadmpkgzgvowfkfkgafvuotbibrrhoporodvkwaygbreicdmvxdlzshndtpxtyftkcnuefxkktaxzrnxvbdxvkzfouhuzorbgurcyiocrloesuncxshhavwvlqvrxuikjwtzvrmjexdnlmnkimbvpiyccucmmmaubabtdpedxuktjplsmdavvzbdnzeixshrbaihumzwdtwviinetsqczrrnokzytucqioqkcvwcrqnadctiyuokdnovrlqnizqokfdhifxybnalayhogzdxdgmaetabgyktgshosogdpqicrvpfvkecyihtcltqzywrvshdozzwcpxmtkdmaxrtefiyuznoupsoihxsixgjftpnegtfkfrqwrfkashfgnxthjciwvujmxeaxmuywvolkcgvvpbhtnzwzjmraxpdrpuvdqhnnqgczwfpseixhksyewvgrfgmmqcvwqggtcbzcoekbedbqvvzgzudpclurbqojjzqfkyishrteqlokknnqaldpprrwafynxiontemeacgepecqjvgyzdzpmrjtzuohqlykwhtbbymuzlivjvgdtexiqdzqzpddkohirlpaxsmamansqxbugvtssoabmljsqgolbdwefvghyumjeugswldenxmqvvbetqqeplswfgxshvzgmrbvdvutpocadbxsuurbnyyruqrgmgffzgpuskhgjblhbyutmveafebgjwwcpyglpdrqwonmgpfwzrywqldxdxnjpvawcjppfkhjuoojrgufyremcosfksgnhrffovtqeotsiqlqhdiufxdxeqcoaitxbcpfmuuzgvzjsfhihetstesdysbpaedltqapzxogkppcvioyowqpqwpwkfmvyqrnlcmsufsywythjemexhvbfdpghryhwhdxstecympzaqezvdxjxzcwavfszorawwxcmdmsatmzrggiilftgwcludgjjnsksiefwhmwuprgbevqeuagmkhdlebvhhixuhwkvorippaxkgildbrmtywvndvbojpwcparpcsmylzpazfiqnhzyonjilgdppzwuwrnzxugbtwuzzqdzktjlbcsxadghxfeodfmtsopyutibuddxqidlsvvxuouygubrgrqeugkatfsesobpjmcztsrgcjeovrnxijvianjvwpayurpnxvyextbjcgmntwkzudcrniwoffjvqiobbmhllhiuftjeohletidmxfbaybsdchgxrjnihjefdzfvhfoncsxbhmmrhompkcehxxqbmqjuuhqrligwzpwgjrubyijvjbgvpafuwtfgungrftldyjfymhnmrtysylfmnkhiqzokgavzgdqdsjzvhhxzmqxpxisbjqcfbpdnyjczvdfxkcdqwqwtmcpxqkxgboegrldcrshmoaqrnizjsnsukrxyjskevaiebmkhlethryuxhjzgjalbphfthrzsvqlqzaahzekrnwflzaxjglkjuwkfunqbsazwzgcuqvzrgqqrqoriyqrgepefnqqvistejjlaiuoittgwkqubavqddjznretxhxqzhwstbvozyvuygflcpiqgjwvtxuaaofaekmvdzxgmydyxrfizvqhjggzhxriojzxkushjrhbttjzwcbxxtqwwzoyvpyfhzzwrnxokljyzsdowtnekrgwewsspdwvsmyxxcergxziydtjyeiabowbqjrlznxfchilplluoimfgxqlvyccbdqqitpaygtiidqkpwttfetveggylgztprwdmsrrmzmbsihnlivrwhqcbeghbqmxmfmphhzyasleehyvcgvbfawzazycmiqbdoylbkyrnvpzlbrycibkzvrcnoihlonfbikolalcwywmynksigvqexutcueceqcufaqbomgjngknvvxzmvxjevhcrgyzkudtmdxoekmsmqstktxaskjfkvfizjcbmvojvziccdsndczwufptaacxinvbbjirxklcciixolwhpzwxlreytcvhjaincwrmemwocfpmzxkhqyyazhjhmfqajxjmytbpdzozuxhsarwpespsfccncwihaihvabkjmtqumnqsjcdbesblktbgexvhtxrxddesqnsgavkieibzlszjkfhdlfehuoayxiqkkoqrvopcqccaxosrmstqdzvpenaguvblqdqnyarwdoqslrvbusbzeffnoaeosbzwdotnhviocrvwuauzwlqstbrvcycisidlqtonndhpdrajvalfleguxdsesndoqcwfdshtciudyyzxvwovbmxnlupirhyjblvvxixljibisylflupmogienfzzayfiukppkyhnqxqnshzoqafegxqmpmeqobpgtmyecfcajcbngkwrjgxggzxptazvofwehpfxfbxtbavrvainxqdrvrfpoxpmdkbakeirwdwiqeskioixyoepbhxfvuzohwrjxiasuwnjkjlrhcwfenwowfjblugcoyfbyviqteaajpctmqotkqxxsvtvtswttfuqbvdjcydcogqagtazhtlgmfrpsicdefmhtrlnjzzjjorxgmtjzgycjdizrtzxtyfhvpvfvwtqbcphiberqpoaitageckcwzjodxvphkwbxelvkfojkwaxyinjbobsinrtsjymvtqrmmpuocolacujbclodbmceriglhjijfxlfcklyupckthtukpigeckwuhfvnaztefmupqzhflzrsfladadcqbjgtqavbgnxgdgmlgytrhvylnhlrhlswxegfjdxtvaexkiumnpdfcgzpxfylvsgwujnuvowkihlzefgrruzfwkxiskufdhwxxajdcqsrdzxazthksxhhqqyggcthosalkoyktjvznihvyhgtdgoiuiwtemtidalpeeuadvvjjswktjjvffvfvwwezbtnqvlmrihglayfzeaejdgzedxukwbhxakblbmgzglpciccphvhqxiteyaxfouzknyerupiyvufvwyly");
+ sb.append(
+ "lhjkwjxgwepbzzzujiyzsxvzrcvhohxlxuvxsvfrfhoxftsznstombqvzlvoafosfkoooaczpzdubdwwawmcsbfttycwoxenbpesysisqeemzewcsykuqamonkobbvkodvjpibmsjkajskagxndfeomswpfdcowjdhjmyhqxqjfngxttzutnedsermpumgkyuqckxmqsfqkvjzlshvdfnlfmskncnuxwpbpwvgvhspanwqbrxfgdgodpblxxprxwjankhelhwgtsomyupevwosskgjuejktnrezyxwyrjsfhqllxuhrbuzjqmbfrzuucasnqffoaekgnfilrquggrtoffsfqngttepuhmvjgqfzxgxfudinsufzokgvyxouzujqjjmwkhdzgibhgwgnnpapampzjdklpyhbepgbmnlfczncswbiihyebyuxfroalbnrbpenhiarkrkifldbninnaybietymosjyvgvftxmalceqxyfcscgiubtkmbzjymxxdujwepuasthnpkihpdjdnpxmlywwapzikvazuvgqscsfkvjtfulrdliblrbjapjocomdfccyivbjlrzqsodppbzxqlfleepjbbtpdvtvhlgtcvfomzezindcoqqefzixiofhhyxzhzkoczycigqnhfsiuqsdecqgyeatlgqbwhmoalryckmfdmunosclmqjfkjeabcqmbrjkhiltylpqpjdgolihwridqabdwqjjkodzwfbhfsngkjrlrizcckcfupblqcegnvazflennnzxryvqiockxjmktuedlcfmntvaiijvyaghivgdrjhsrzpneqoxuycgwyixuufkfunjptyjrqunydqhpavqcqgmeomcntwwsvmwqujbfcpywmdfuocruvcefcltkylqiyqvfgomwtrkzshlfhiohfcmjmdztsgngdxrjnwadamlcmstpqwwhimoakohanzloqvdvlavlnrqhqfgnxwpttajdyvwwmeioeudvjuynytazhxauydyxfmqtsretnnbfvsqfndilzcqqjaxabbxwbtgigsoezndzffsetvqfgupqpsisholkjwikrycxdmfpxcdkhegeqqquvibtcbzmoqbajtciucmjikyhjainrbkhgtoflyetdzxxctmqpmhrqgbnkgbzrheaurwkzkdftrbltropxavrgfpmcppdpsornpisrvtngnodnnxrepbhlmfhjltwvhwhcrnurofubzeojbbdfqtrgaeocljqeitdqwsnqsbenepnlvptmsdehrgbsfeuxknaiccardtmbriewodhjpljcuwxghscydrurkyhvrjiydvdpmbcpswqskpbboqrcduvhvnnyyiatuyxfhegexegojvydnytyxxikiltmxqoduimtpjrlkbqmiifqlssfqmrqakxmxdinxnnavwecwyttdlcxnyftlklmdqljgjeuetdnmdeiqpznrxamqydvfkaggjtdcjxsukgxlououwzpwahtbzdoqamzueqqnvffnnyjpxzqmkrbwfesadxiavyioxhzgwltbytqacueigbmcjcodnaptsmuffbfifwemdhzshnnlpiwnkanyfjibritvxawyurvfuxyppaqvxdvnfbtiqvijvrhexadckoaxwdkwcyhzorwzzyvsgcgccxwdulerrnbmdwqjyccbquwqstqnqkohfegwmydvesrprgmznfvygfkdwpkdslzpkkjbhdynlodrdcojjttcovfyynrlgcqgyzhcoiievgdhtzvchhdsgmgtkjpihfyslgtonguccnqgudyycxjvubaatuhmejrfppkdeqjveeclntekyepecenbhwibscjtldhqjfopglziixvjlmchynojckymemijltpgqwnrrvuxhqdfqcqxqkmgulxuumtvlqrgkbgtwltmrdyauzxdcvblvjeumqrtvnlgumqmpinnsoxdknmypzzmmdsqzyhsdpjlstippnxmdeuqgeruzeyxmtljggxbkexukafofizknudcnfbqgmjirrczinfiodgmkiatwthoznmbagrchlstjklldtudklijoypyodvpemdrljpnwdpblfezciatjymoscaalonqbgsjtmlcdklxofvvrgdthsqfyedbtvhlbptrdsnctpcgqywqeepanspafbkxkcjeanhnpsfidsnxqlqfihhploiqxavbbkopevxxlighsxvlnbqzhfcwivwqrieawhjuwkjqbbtnnhfsvqhjtfjhzwdmbsirmnxylvtwxoczjiqawejqthoawfabjpbiuhzkozufzzjbifxzzkegugfdzbgvqwcyvgxmvemvgvgyrzzzpmzdpsjulnpmieuyqhtvtdwadighrcoinmimtnmvczcferaxhhwvrywtgucapihwzuufguasfjixlprsrpjxkqeynpmczytaiiocjcfculjniuwlriwclixeyiqxqhobmtljsdgzzaihwtfgsesqnjvwzaoakrqchyqcsnfmamtwdwktcprknqmlblcsaqrpwbdclwksnralvmwintdkenvqvrzffnebuezxzlqngziwwdcwhdqkanguejdgpsfuruxiusrnzsenzwopsdouebricnnlwtjnbkrxpvexhwnjewojkoznzpetkidwnxbluytxnffqnjmwtiekhsuysdnfcuwwicvqpnxgwzirhrhlaqzqpzqntnswrraihnrzenjobjwhcqfqkwwjuaxiypaikdggxyqsisgggpcekczsmvgngibbbqqbhuruitqvwxhpqdkzgvlsxexhkzidswdddyuwgnxrfkeaijkjlpwrkpibuvsfhmmkypyvrenhfzqnwybjpvphbarolxeuzidgrlyicpmydccgswtztgqqgrrzpvgmqsfsndcfvymolzhgdyeljlujjypszppxwvpppbffsgixcvdpagxvcdnfmscsscnqmxruulpnaktnxfhdehdpurbooqukqnnwlwapuetslebxlewmcfqahrznysyzqvrxxgpywqfkqdlietuelmimrknknwkslrcrwjcbexgvckfdcnfbnifhspwqjhvsbxatrdwlfjlgqwefxydpkggdyxpdebesczpecjvytivrvkzpnwxwsusawfnyrmfdvqmkzgfhszcdiyzzubvfoickmnafgcwehcoijvrscpmgbjfyrwyzcrkdcdjlzkuivvohupjqjgouvlwdkrcwcspnmnlrsqdlomdcdtnshfwiimfkzsvzmshilfajwswyzyxxltwjsnogdjgdyfqkefxyvtacuvqsczykqjvjpnzdfvfgojzvqcenjefgubaqbgcwocafgtrmhzvmhfnzcabwieogqvaksbxjruvrphvpjnytpgqsnuijpovkbnilfngcrignrpmulngqmpjzeuinjjqwpbxxeradpglwpbhriefcpamppnfndgoeylhmeoqweowldfryzngxoeiinlyfwemhvowfhxvxuloqsdlovugkxzohjtxicpckuqnbveodrmlpbreeowregusjcrohqxsamnnziloydynjvwlwncftljgvvfvrbatwshbwdvnutlxgiifmosbvytknobabglaztkzdzifotnjcrjxcvanlzypkgmcsvpofbzqlkzruqdbicgoiycychvdqbebkkixdwtqajmlifrjvytdiozjyavuvczalnbxpmsnnyfkhwqjcydqoztdnrswwawaxvuzdixyzjkimxpgqtdlxnwebrryqqngkjsouaitoaznbowbawghevtwtxtkafbwvgryeqrrmjjxsymiblbhzxozkkplxilcqzaehaidjlpvbjpbltokfzwdsgnpqjwvygcessxhngxvwjxwhtiurdgaffiybvyqaprtfzvvzwlndrvszxiofpqnsnynkfcllflkizxdilpccrfcmezeklpylbqiownmtdzclfexnrnsyqrerfiwqxfubaoruhutrmptovauckfbndsbxbbqtetzerukzloqgjtbyiidoghpkvvqtwmkwyvyakuwaigiyriaigcfftlpjeuumehswmroxnvgvitlnfpktyiudcslcftypqfcsquapfmvwcasdcjkhikzxbzxszncvqyvycqwuhyiokvtnwlfxywipndvsgdgamhsebuavzrmejhmojdofkldlmuihejjigbzmwkqcnxwknmvhwjpvhokyluixhiidolhzhwgmpdmhvjtwjvmtcqszfrenduasczwdnrrmmstyzqncljzulfsviibkhuuyknrfjiedcapkekbgtboigsbkjzblosrzdfkeslfogchgkqsfzdxwtubhjhvlgkvexatdtbxfpgcclcwcqhbsoclgowpguolmpakpbvqtdcajnuliwsouysdetquhkkkxkkvguenhqipsexxrzsobbslvoveweuhrjrbhfnvjbvoamlmkzynmflwkkaykxnlcinmguaxmhuiveowcmwazjyzailksseeqrmmrrkpuqszuicfnnajyvlhiuxkshlgzxluqccsmmqfdztygnvjfwwqmfsddxsehqlwcapwvejrcafrebmvognokzyvlfuskhhnavillfluqvhtqrefnuwugpbnmbbcuvssylozlrmcnvofdsbpmszrrneimhfwckkbxyanovcaiyxfkfalkjagkqcpjabwlykugurupikdzzcxqsmknskxvjebczfkzrplrlugjosufkotvmcmbnvpmrmimscxpcgvebhqrxtflcfkrmjkkyybzlzjpanqphmfbkkwktkbywkmrikehrfybbmbxgyvqplyuonrlrxqrjnipgrlzuvbwqwkidsiqsikxacjftfrnrvfxrpericlyzdpilzxntgcezzcrrmtwgvlebjlloiancfflmhlejbnmddseucrpxsdalwtvnkbhondiyriopyhslrzitajzxzahgvnsxpwxkpbkzwfldmswbfvcubmkhfpldxchbjvmuczstycpwtrazrhhipjrcmohwjnkwgvhpgtnyuzgzpgalvrgigxunkjlwktxqpdqntfbcllvvnekuiqodcvlktejhtyclvvjwsmvpculjrulctknycojqboikhydqzvvdmybakfypjahzckyedksujvadsfcbtfwzmkoblxnpvbmfqbwlbnymbxrqzytlpdaemkjmvzmlstknutzphylzjdenwywiethnkgqorcyoishepbhmwpqhomkrvqefmwubydcopiggehmgefewnlthqrcwpwgpqasndnbfyprxzbbiwheuyrychkwpstixvoxpirelapjulysbtzxufaygnzoquklavjpwllghsdxqyhvkhubhordjjiknavpctnkrvybdowazfgkcyzwxqtghxbzbiwzgreojnsgfokjidnstneemiexbfmtidwnpxkzcatqmmwojoqcsqhhwdphgfualblpimypffjxmfpbdqedynrjkkscrhqbjnigivhjgxzsxtwtcqlkuqddtyovurkzbgddgjqlsqgqjdupqonodlclhaurwdlslyemfpnsbmavgevydgybnkupganmkhjsrkivpxefxurhzunsfaehnvpglxaigeboxmmqhougmxzhfgwiapwnzzxdihhbydanejcrjecpovecbjivntbktgkmxejvoxcvbfmaclidrmifhiwipnlsvxuokpjcereobezshkxuuyklukmjdlilxdrdqpxsncqekqpfnqluslvbenhllxischpnxrirgnpqpdkhbpkevfaqxfifjndtnlvlgydqakdhgpuztptbvvvnmiasgfssjsazrylbobjznkowzdlsoxfgaproyjujfqxbeszpklofxqrcngaqcbnadldffoolvfvirhyacevdfiajamscruaemorozzsgpkdmqmkttasdtpjfnutnhzzrpwgyvyfmuwzpgfavkpzdntseocosnirnrcphwtoduhpamgdykcklfaywkolajhrwfggqomzxfcaextshrvvtczprtshsmahfxcozwowtrqzllgcbefovmwxfyztwjyvbnuhmmzaxuxpxzhxpwwmymuhxoawhaduceeqkhuyumbxfxbimqjmgpibyhusbqsilrokcztffprmjrlrwypbpuawelvkfafitfyjiohkfwsxuwalvfnmhtittldjsvmxqlzjozxmlemqwxcupkgznmhkdavxtaxrklxgdwwkermcyalpytxdvsbtlfopxlvekqquzzmqygrksfhzwvtijjkkcrrghdyzjgtdgdyumqzrqxvtfezoleyugjpkqylxdidybazsmzucpptdigmlzhdygecbuheakgcgstxvlofozwgtqbpvxcbdvfcolwjvzrerhcmtfsfsniuutiambtaphyodqhlsmdwhfovflcbiymdseyzkcvgmqdoohvkqaiachrvgkimirkyuyqdqmfkbkrgihabkxqslfpdopjptwdiikdxguuzprlguvwakdgzyqmbujmeorqbasqjwgbzhmbxplgisxkbyrvpkfvlnnxjofdmsfrmzcvhrdomyzhacfagwpfqfwuhrshevszhxpxvjhyepokfbtodgqdluasppaxkiletsfenxypalliwnvjjbvhggosgoxlutkqnlivmcojjvzqcxqfrnaoabcyxsotkciwgdqpzcthcsylqpbckmjhuppojhnqivpaehqgzwuyyaeycycanqvfuvlyjckqcutozldqquyscozsdexregzvkzppphdnswzgjhymwkblifuigaoocsqnbhbdftjflilxamkqtsalsrkgxjgrnvrhrjcezmgycezgcmfjhcykytpbvjnbwrtgvoagigszltvvqspskqczvyefhdtrppekuafjofdxvvlnpesvsnrmzyqzoxabmefpydcyblgmtcngooegdzsvaobosyzcbycbdihkoehtbpcghcwzxwhwjcsgalkrgggqjoiolejlbirpegxnjtusdvkdqtslmvreiivkmtpyepwiisambhmmfbqgexasmqsldrtiwwrvgotrwhrsmjysbemloufhfzvbcgxgsvoatukkotrgfhbnaknlvyfthmabsypfaghrqpxhmcsarnozrrbkcamwjanfanvrsbuhfpdcdlrlimczvyxubmwxrpoukrkeootzpkpttjdxfozjlodeplgzvscvaqzclpxturigbatbhauweyejfyjyrhnhckcahagsqbemlkhhgdmuxalzvfpinuyvsriydsrdymfamxfeuvvpddvmnzzfbzsgxdgrrgdmdhsdhggfglwhjmylpocojlpkjtugncqvychamopxaqfwgdtvzcgvbsrmueuuljjfdtjiqhcglaeydpzhoezsgxvascgwpwjiuatpgwppqheevyxewdcsdiokhrxcyyztnkpyvespitdsurttpaepjwkqoxtntfurnhxwuyejkwwdsiaemsewdjtzocasiwvrousecqathqkconkjnfpjwwolfzqanthgqgxssvrienlrxmksglcdoyrnxjdzgdlryncfpaupbltsvhsdytflvpsttnibtgjebwecoknforcimqxtosoxfzbcmomsaaziascsqfjuunfmoezqggkxffabqsyboqsheeldrsnrjfyjpxhfmlcdeohlyumztoiubuneoboyaherlwfflpdfwgghnhxrwkzraqfqheoizlmdeunmxhpvtgkzvxnwlgiapwyknjomvypwtbkwqavudgrmgybbjatogfceelfxkokjncapwhovmpgzmwucmpcnsslcnsljnahgypbljnsnhxudcrtxuwhifipwuvknrauqvltbhrrwydkfqyzhxhmotgulstfrpcwseyzxurhxuxkurtiwlsebolsgigndmylqdkodalfbyupxqbmljfsltchcqxvlvjtfjqfzibqqsycovwllcwwrhjxyjbzynqipjbrzcisbonkmkwqktyroybgbcwwxbwetloomumcwrnktdfyuptxkrrplqowmzlwupduvxrxpvhhwojvnmcvnjawtcnrnuhyibgvezzzakkzypwclbfioeshcacsvltdsogtuqtbrcechxojsjvomqtxjbiqpkyuewdhzqhokpmfmhwifwrdkgwdmtooasjpirmmhhulyucckndesmchknvxjiwchkaclpkynyruzzbvvbgdcxekxjxzdrrsdiwyetuswjeozskhhdjqrgihkriayjcrbunsdkjeowhqyttingqdyemyzuezqtfrbliczshdxoixfalnpootvelxbqtmvjxhzkleywrmhstqfjkdrjqjypxyyrfrbtmxixhbxzquohfkfojnghfvkzmznvqziufbfvpmoadygknjujwgcutqakxzyinazfbfktffxalalsjmbfpzocltqfpzosweaybhjlpszonfyevcrznnvrpfyiacvrqmmiuekemwzgnluvrxlejhrqbnehhopwjzxwntogfghrbtfhjmtgsdlmyhvbsruqyphrpoaumnbkfopncdlybalxekxrrvlpetllzgqrrspepaicbsggalwtfxbqhnwqlpxaobehvlbbkjhbpawebrmxgtwnybufbbzasklcxhuvpjvnormioixbmlfovandgbtonyjwijylkhtplxxhfpfvlhmoxwitfndkesgxvuihphefaefyucdgyapipztsqfwsxbjpallygskvjxumvirrhptlbleocnfyqyickmfddnpvrijojmbfqfgcfaulzcujwgbwxclcgaohcgktlreywkamjvhesdzkpoukpakywkklythtsndykxmjquzbuxyvmtfnukkazwsgpcuuyscahuwkanlktpqfxtpkpqldjvaxablvqwgpavrppiksmzinvbosbiqdojaphpeaxhjouuhbdbxwafaddlaxellsdpekwqujehdeakysnieharnnmeykxgdzjwiikwrdnrwqfcacxaxkpnnffoposdlcyyylrouedyuxkhpuvqlofbkhwnlbntzodcaimyzydsptmfnefcyfgjirbcqlmwiudqokupyzfnhidpwznnivbakcwzkixkahpbelrsxufrtdqneocvqktjyzfyvyatsftqljlxgkxazcascubqinurdpahwkddmxsuxpabtuwlsxcggpyrduhqroovazpezdxcjcxdjtmndgjjpydenbrlpdiucelkhobfrnqpmluuqtphupyootupnmeazoieucgiwodsdotrtiiaknxndbquahulxevibxzxdizfrnvffmhlifsutkmkournnufctcfbjymomneixtoubeewqzeavwvqqojekxdmxngqvhzxqquktckodqobhkqtrtfdqzycjborpnxlwdbqkysslrsmllcupeoezjrvfbrptiwzwnsqxyvlrlofxjkormghdrvbimtexhouvfngspuhhfwdjpyyoulxgkfkbsqvesfavpqxsohhklhwabkqjzjuekbdmxgkedlotspbbblwnsblvovfoapfcvwpgeuiapvxpfvfnlldtrudbaudissowphetexqtpkixcwthycsarcsgepbqhlxspfyfbbqbhponpbhvuqxuxpbydnavjijefccohtkxlxogstwyjfbhsrunmbaliehwpfulxqlbjavrkhqdduqfdyivqwwsudduoyrbuejrmkmmhueoctwicuyxwvwqxnseycofvgosdwuvgtaspjpjgqcnnkfoinwtwjahfviwzbhvegnwbhjbnwpdbjloinnphjgnhcdjsskdljjmxdtaykydbjelhesaleduzpgwkqvipulacmdesbmydoegofittygghoprddsyfnlwnqfzcxxgfgfvrappbjjhqzgpubouicquazvsmxnhtfpjdouxpzjoppsviuwlammetwmupxnhbmhikljcfdqgyjrpofzyocpfjveulstlfsivtreogxjlnesuxrmbhvphpzngarwrwzvhtbbhvxmecuquymqtcxxetexdqxbnrxjhxqvpdkmtkpzluejkstpeukdxmucsysfuevelwbuprflfmtsiilojhubqffzinvxecxxivnsrzicdbtnllklrkhkwcyaxtxxltbyruaejadwvaizrzkbgmxutvcwwkqlekkyiuatsqflfptlqklmsrqfesyfgpjrvwbcculljmkrwtkfipwnvuygibtlwefgwkrabyvtapbaskmrpwxhdrdntxsahqmgztehcktyckoxsqhxywbxoxdbybpaabatnfiyemkxmebudizehxwazfcjrynocljnaqflpipvfbjebyxnxbdjnygbtfvkoklducnhzupdniofsgpauhxyowcoibforqquunftdpkhdytrzwpaoirarrrwjmanawwkbkwjdickdrsqrjnstyrneykcwotzadcctsuoyvfanfaoddqbffncqbcbghovcggpjwquvqzcpgbqycqddvflrfqtmervvyfuwlkqdoqeljhvnvxgjdyabtamfsaxelowkjfyeuebmxpcrrswyobxrsrclwuuauaxfsszdpugtjnsomtdcunngpqamlxfldwyqvdznrfvjdjruxgwqztpytzogahzjkzmlgqjcvfccqyfczbravbbzjvapsqinmtfoghaekrffvxslwmthebnphnosoiptqrvlzmfikjjofhrmdystqudmrwtruretywymoxpwwdcfcnxrpcqzyiatjokpkhltvxscgpxfjbtuaapvrjdbzabuzozugpjyxylbqbfdxwkekjtnqgdlzppwuhkatieqvoddtxffrzrwtxksbuuerlscvdlptewzfvhvrqqhljzamruxfgmdtkjqghkznjnegfcpesonarqajyjyleewhxrnvownspxovwuiscgtzziihzawuyuwshgcgcnuobungrzoqzfugnkexufcwdxsebocfxgxvpwwgtqjzpteqovgnrtrdserjddfqqfssmsqioiheavotguxegodaqwvwhtodzqcpmzlurwedsxothwmummrkszpyohminsudcebsvfudjaumrhtxsmttthslvxgjycayfwrypwailzqiuahjpmysiskhrjromzpowjyjimrszlsbqztdgmdnsrpmchhxiuzzwhdztdywictdqofxeszlggqoywncratnhlnugybkqamrxnwzvsabyhjqcknwgzocsjwnnpywmcwxieezabdwwycbnnxxdsdqgujjrfwwgasirtdwxmfefbltdkupzedqbwttoisozfpjzumdnkhcwslksdkngutrjuyfnvqhpwdhdgxrjvsridmjedfqxxrfvfployeelzupekcergiczsmmugdxamziyndkgbvfbhldxfzlrpkenisbsvsoldblspcljjqytazosdkntyngnzaidufaziimacpaznzxivllvevrwmrkcizfplfhyvmcclzsvmyooxfhwovbcyuyvxfkzwvqwnenshkidzlkguahdgtlrkizaqfonwlmaitqknjygkhqdqmymrzducjaubgkgfulrucvnsauhvavqxrcngcxchywdwikvsesuwfsrqoukrydzgaejqiaywlweykoxdltaozsyjhzqcizcyajmtuzsalcmvjuuwypfjyljqymzrwvuvmwofkuftobivajtudylrzbsrlgaxtwfeokrymiuamltvwhnmqcnbejhgkzzvuwwkefrhxvfoszelqubfxkyqkxmiwcqzzkgdkxppisyxdvfzfgcfhjgbqfzxvozkxrfaervwwdzbxbuzgxdpmygjkgihxrmyrjhwvautymnwafpucnffehvvctohkbzwfseutlrxtjaalstfknffgfdxdhcmhxxvhvuyxmpzmptdhgaefhrokxpaeolligambjkpprgunmrulxpbwfpjznpovymgkqnmzieydfjtkdhnmmcfnayiffjnnnvahetnixhjdffvvpgrqzkcmwbbgwsjgyjkcrfmzpllxfsurrqnralhrsmqotvprxazqlqpjlnysklosbskkfjutoxmqrnqygsejlbdztuapkjznkfkdsmmuupchfgvsxizhfckbqvevkyxdywsyfkmcphpiljaqdrdajkkxyzxwdcyjcyypgyujxusgdcxyscidixrlnlwzkxphbkoitvgcaguiifhhwzqmloynlxkrwhfdsqbunmjuvfwokmebfrcrcnmvqsqbrjxsgqovhylaukcelkangepxjjlgzzwgfzuhjqsqqlcaebvnsvgisjsoarnzlfkfziuqirfboimppqddljtdgexslddglcumthbvpbioobtkdqwfdrqvrcuiczdbwlngzfiaiinzttsmzleewjofjzapglkvwvzdwpbdzbejgurdnlhpvonlemnrksdqkxayizwrbbcuoihyoknwaddmaxdvptpkpdnplxrkkmfrsbisodbshwaxtuqirqlqxypcycjkmexhjeqfmrgtrjszsmzkiwdbdggrfftxeqnwcgwscctwzcrxsfafpckelxkslvrrmpiitiqbqfvchnfoxmjxyolmmnpbmzzpfkowesizvaumxqsdewlcktbxmjhupbozblwbewmjhwwzkzzaulhfzfthpdfgmyqrkuayzoivhaxuqrmjhcxhjvgmvpvhhoraflsgzbnwyjsqjrwuoaostrmhbgwwaihuzdlxknfxcvpzyidhrqypkmldoxahyqphrkxtodybtfpbsorxagqsplbnvnmzpkxwvbikgzqesenuwucbmzqeuegncbqncuotzpsnpnftqzgekupgfrddkrttnsyrtwvqmxneliqulmdznthykwoybeileaayoejspouodqitnncylkdzckuszalumgzgeltaukbcrxquvjffnazcatztyoiogaxmfikjosbhrbozfmhqgokmfhupzsyittbzzjwkkyqdxqlbrsniabxsxzcofyzhclpaqpbcgqxfnnvgmetetqpukyfbprozyvvlqbcxwrxzwajaargyxkwbjhrrtvmwvhomizkhdexvlhxnfuycbsntjriqyugyzjtcajomsulwbocgojzrlfivmcadqqneqkllwtjgeoxqlfmcgrutsuthtmapcrrzcftjsklvhxwcheuvchjbwjiarsbhkvdgxjrhdznhklwdulagbgmqobtlugwpxwgupbnmmsabmqoowgbaesscbxfuvkzwfzfqqabnoufkmilkaktvfdjhzqqxyenohefhysduekvckhxutzadhyyuzblgjairzgkgnhszgtjtfuatjxiwwdjxhdpnrpbxarkfdlotwhojoopwdvxezirpiahsqvzrunabxcofxszjzwojxuopzbgstludxcleaqgixifkmzyzyvxziopbluielleibaratlqjhtplxlteabntkscgcxjdexyibawjmhmlzvygxeyvgazvfpmcuvkxgxismagmtbyiunsmpiukfdhlssgtyywygceubwjmeyipomhlaosooojdflwlolocetuyckxgfrwqwywzyxzewunfzolijkkwrxxndscfgujozhmlsuteyugjwmhbxuamlmfdnjetuenhiuygethmzsrxhnyuqkqipzviejupvvxerldbulooljlodgvrhtuwpnhfhweomyjobhxxeqtcojgzrssuiqvzopmwjceupmnaveniutgsmisbumxpabzbhommiggcczzuheskummcsmlryaavnxyudqmglkhfnzogcycfepyizedfulpsxisnxtvomixthsvrapjccqrqewkeldfbsfpzmfjjilfijwoammxuennurxnqoufdqdnlcjqjbijjmcmjzwviqvcxznpldsgcmsxhdeqsgnhfsppfzypyoaexzcnqgfzyekydyrqirbadkdmanerwbozuozrisalksikhyymgjkyfbooamnmhbfkmuukamheqvumafiyddyazpzxuqdnszilubusvqivzaswxmsvxsfbpvezgtpvgikxhxqyoztanlwskaaqdkvsljzmnmlhblofxqqxbmtnjztautgdlefbwcotmrqejofrfnsoujybwbmhabqonaqiypczzooujptkyrubkbfyjajobnfxfkgenezqyrkhaszbnbucdunuiqyrehbfhztszliuaemncflbmwioiftbuaprywrasawzgvwnbzecfyqoarbmcuhequsasglmuoxfaatrfxvlqtmheyikjqigvwetmmvnfxnjjrlmodztbixjfdavenliirpdyyozmoofwgfivtxatksbontbrjrkxphdrdkcfbjstrtwbjyuyqdtriyjivrbiwtoixuayczmkruwriwmxakzmtihgssibwrjsnicdyzotpihvqdeymrprxtakkstdmxrambalzwenwvzprgrpqkwpmvhuzamxcegjkdfwrwrwefcisqjyjjrzoqwtmbpwoeolxoxfjsrqqhpuayqxmdkmofbrgyhxnzwnvglyspblreuebqnxocemzxingcaskrjifavptnglqobjghufsayfncidzyhgckeychgpqswptdjengnnmpdmpfjjpgbejexxjilgspwysjdlybqsortsjdliruzhswfqymnphxiiizdtyjquljvusveuxbjjsdirjxqxwcymuwwcvdbzhhrdhxmdkorsksyhrupjkpbeiumsoffzggnoiwhhqjpqlqrnocsddcxxyxsbhdcoyfwcfhvalzihmokbplgibdgpnrspgokbgecwkpklnhguoyqnlhmtmnkasduwbdcyzuaogxhujkryixoxpwspsflpnxftexxlvlepbuxivhawjwyqzbivfcyzmxngttrdkztevugezcamokzrvdqqglqtdjappomfkqglujnntqnuznncquqqvotxewonraadrpdziingjkdfibhcgbahtaeoujuruduojpczloynvuiselsosvjrxtgkkcosuvgydrkbhsaxfwytbwzncszucxcgkykaqlsiaozfefxnastrmijoekptkiakoffbbuzlqxjsxnrgfrunysmyxnmwyqnjcgoeohctzdtgnhpzaahabzgasjsqwmaoqtpcujjitemiqwhsmfjsltysdnkwbtfucrmuukcndyiwurlkunfsgznoonawehcljstthlptnmxcugyrnaguqdsgzgwzjnvzbwkzhrmcfsdohnejtysgnqztfstgrbouisdahdwluledjeedcdazdjhfgyeqqxkvcbdositfrmgsssicffxpqpybmggburrraaqwynmmibxqmaredvjzdbgmwbkcnurfdoxlhaqnmuliaavbgjmxgagtitzzvtyndyubdrnaydiadcbhckgeqsanzsrnmuywyzwbxfggkxdmcezfeyuavqjckcijaviwdffdczoolovhigqcssthmnoemtsjytoggxzcaknkjxcgujaylyxuqodgaspcscrqmwpivdpgtzrwzfotmvpxreebyeckruvtyttfvwebpsppuzajatmblxqtfqpxfymywcikcyryzuwwpurftcqvnjoccexrfiznzlqcexxyrtzhkvlczkhajhgjhpbanosjxxjzixhtkfvyeqoidjpdmttmbtaermlfgczvrtfagylorkqqyjzwnbwydcnitdaanqpvjmzogxxswmkfdhsbaxpqrcnrwaeumgajcxnqbxymzhbgidcsauqhhmnekjxpdjischohpussdpvlovjnzskhtdoxukdwemratkgjraofoqnlngvnsbhxjdnuwenzyoiqttaboldrvwidwaaethtgfxbnwjkdoayvhvphzkhjfpbdlxckydebkfpqahiwcdqvzpukhkdqwxbnixgkevxmgorvdlaibwxuytnroqirdgfejorklerhqalaoddytmfkvzgbmacymashhgzvxreolgwbwruccftypfgflkjhhdgairawdehfynzbhjkaksevvnxondacljjiyeyysbpoeauwhhagmsidaqpqjemhjhpxyxztmlqqjbgeeeulynnybsfsnpvxshrrcnwklrlkwcgdolfksggbcklwhrdincowjotgdcqcjzrzfnohmhmgptesebzodagimtfttbpoydprhtlxcsqozzgyzthgfluayehockvyumjlwoeygqataogywabljgemepqvnvvldrsqhfcwdnzeispkzmfvozdwvoggfhkibltwcclcgewxhjprorwiaweecldetgwiiqskrfsdafvmghbubgjajshgknhwlbrwnrudmugrnuzytojpmxlyfmvllflmdistaedojaokfxnqzsjmqvijpnhccrqbklpvdcexezaifqnqolofsubpovavibvegzmnwfkyirxrnglplqehhlcmqupktprohadqnokscfjehqegpcunpuyazfxpvbhogbbktpjogvsvvhylbytihxwxmttausjnmbyqxuivyucsbuxwgjspnnfzoziamsdxjayqvxrmiuxqfwonlcqtngbqdjpiwulrwagspltxkztcylwlwvhwblcxtprtntzzfhylczgyvcsmjxxajcbzkdgynmjiydgappycrsxsqhncozltiskhkyhjcxekwybhxfxtcpeggbrqeggjdoptnvodjugqmdmwlxhzuadinawdlqiwrwymvyepouyjoickdtfsfjecyixaahlxqfbaoclhnjgnervfzhfnuekehyybcmqtgiweriznbijqcxtpdotfxuiunhspgbkoeoebmyjmyhqnpthdcjzeycwnoborhqzpdvdwznaifuvjlmrlktqsrielqdwumdrhmcgqxolhzavhbwwimhhkfkgnyqdjcvuireroqiizlgsjxqzhlbztttqaiitlxiwmswqtqdbpsohscdahuebqadjlvufbbugukpadyfdvlsxiwlfjfkuflrghiafpmdjiqdbaytkedmuumkeffknlfngqzgdzauwmiliiapcjvpbkxmvuupwerexxkjpedossdpmpexhrtaajlkxxpjvyfgilymrqpivdatlfficdszgkvgbgbivfnulrlwzqozleynrtssovabyoixznecwbxfvkjnsrlozyiqygxmgnofauoapludbpnkcbqeaegslkjgjpzbvllubbpokratcglygvooletaaqtloetmmuxaulfmzqausqnfadhgdvpsvklfsrjljifrnjnaldqmkcvkdxidulpuzqynyuiviprpjsjejpcodctfxjqzwgxuadlzoddtkovhxgffawslnolopckvshjabosyazxjckzzdsfyvzuaypytlkkwyvocasdqumuywxqguzlpkfmzdhznzuowxxqwpfqzbodiqeqhaetmjwcwtjtacuwnahtlgaetmooxflkvkyytaqffnwrrlentobnobemzvmjimqnxozrdsnplkmkzudshnjvpikntjyyamqzvyrmsbyfilaprtxwkhezohsadlalburxitctadgmdgiqdbpyeylzhcekyrqzsttjgrkbbrviedjhdpcqimqnjceukfrzpuheiehltzuqnqqeacvubfsncwjjaxtfhgofosurmlnyxbghzmtasrnuwahczojmpfdnvghqbzlgygumeumrswqaccxkujlkjcvahvylyqyrykydeyqvgfbxffjqdqxghppktkhrtntorprzevebamusnyssglcvvomguvmxwnustdlssfcnvogvetfgadtvoczldnacwsumijrraewzwghbjexsrqiqtjrgwkhropdrrkknqdbiifipacwsbzrmggxymixofjuaklynfglbdxdxhzuuguhoakyqgexjjdfghmprruxsybiinsegfwcgnmjnhkzujynbkarzqxzdpavhgrhaibrgmyqimimdfxsrzctemzqenvkzigupgfpnrpgslkbnxqzsnotunkztyqclxvmctvqurfslqrngnkagtvrrlmqeovxeqexlndfevnyvrfqnpbkiksksdtvzeddphmhnikmfscvsyggrwlptuqqobhpxpzjvqyekaklqukhllvzzwgszxznlffcghnvseelmdfvbvjgihjqgvykbxxvzgbbdhcwfxxpvqbrsjkxckfdfzhkkrxjjshtozfxxsefagfzjyofcsqoufwknjojqgruathyimxjuarruzslxfghzrnghycdltlvjyhwnpiqlnrpgrpelnbwycjapfpdpheisllfchxqjipdjmieznwlzmbbcnfxdtkxmofuavuouejombfoxbalvzqowterbmsznajtkjpblnsvclbwrplbylxhcttjgopqipqysmyholeqcizyajhioccagtnmfgkidypjgsnfnepbvmnbpdgrlkwbshmdcyeyliheqzpyugcoqwfwovubuergcnmvxgsenfaalkuqjanlsthmrzeirorqljxpkvrqxqqwldchavosbxfapgycvopmpxffabqmgvknveigfqcqyykhkgtbakrodpqtbznvzadwbqxbjexpyesvtusasdkfeuiaqomdtwqizwvtdohgvkhgkyfokqpmnqdjbhfnamyjobbmyqiwerubzkzogmtosscvogkalxraiyawsgnqvwayfqmlqhnlaivdcnlfcfnnqubghtkbvbvpdlgcyucrkddkiqthqqwquhbfdgjsxaknqdqfircpmrhlnsttfagjzdkasosbcavgyxrfnvoprsuqjunytopswbdqlwuwubnflywrwsujqelzebaaubkgsxsogcimxunkdtkctdakowfedzixvwulqrplelrsteecmenanruhuixlyfqfeyecgphevacutunkclicqtemgrfwbbyzumsxiulcykfyzscvwwiegyzsoxfpjwxyeqtosxuweubplzbnedlpvzpadettaehbaowuativhvtxiiyfglckvcysrnnrkykutznpfqbgyrhehuxcmlbainvnsjooyczaqybbdnxkzeavlxromnqokclyacziprvdovyqimphrmbwkrvrxmfvdwxsqoutedprlecdoyxvaptkzawjcdkggewifmjiuvxfckhizjztwctdpqcbqwchdbdttyvxjmeyddvrspkvojbvmphkwwlfyoosjzitnctkiiozrioydkwfmxsuokcsbaqagcczwsuxcprxbkxngcbfzfyyprkmwawyjeaghjehonvgfdfcgyeztxjhfjopzxnmpismiemdhcjvaxqddegwieshepchgsvglxmqapijjbvddpvylfhdvafiuewfdovlshuveufehrgmwbcutahninkbwhrrokegyrbptiazzskmvcohiyebmkxlodhcxweajdlotxntwwkwrglltecnmefvhjydjixiyyststfwenhnedgofmoowvvyhclgfbxdlghygbcvsiothhzlobplxmrdgcycxaqntrdirrzbpkqwtasbdllggmlbrisuzcaniutguixuqdhhxzwuptfrenjkhfhlexxkylukiyvzwrfxesbcusexjncezeuytbagazpsxkiiahcbnursdtlkuulgqzsmcrkrpqnmfmwyknifdpkwyrestayafkvcewrnpqvnoaiwjgbyoexynzloysjcjpiosjvgiqnimgrljlzdgybybsuhlekfhzhoiaxqbyechwchfncppjqlemcncoktidpksbculupveehkozahknxbeyitthcktrqkjclkptqujcdrmiquitbymngzgvwgrcqjfgqgmzlrqlsapjnukdufwbwynjvywjxnjueydhdpuzzefbnvbszrtnkgvjomrwlvkvchczikymkweoahvsglgfwupxxlsncdoflvcazprptnfxvugpnzsgrlhaxyypmaxuyhwjpgsplkwzkwogqqasykhwhweoetkmmbviguzjjxgunnxtsliygdjyivjrgyfdupwvuliswutzsdaslzkbozujfzmenekqozfaeeblrryooaoodytyvvbkljnxmgtoackryjjgshhbjvrotsywjeczndsptlisbvaiswswmcljwxxqpzuedmlqhbkujyflgqvanhfrikdnxxfqjzfudyyunwatzedpgozocgicdjnptqanmgdtrruzndoyocfnhpqsbxcbzmltnoxryyeifqgwlgddgzyuxnhbvgyglpyrzxewthaxbxlfgofqxjyxjyeuwttflzkdqvzlfkjnpklhfnvbarwcrfcxlnveehfpwnolrthrnyezcjiatcgphijwkfoppjlwrabkapjilfwqdzsybaywlvkltamjhkhifpwyxqcryxhitxkcziowdpnemiwntoqdgiqibvryreievcjiwcchgaihvzvrozxpmsvldvayryuuglzvbvnmccwxzvothknevofioonhlkgatmcvevlegerlnlmcxkvsgubxywnwnrrfjpcersogfhemjdlhvjwlrjymdpwwehzplauelnbinemxdojriaafunvdcjffokvvjeglkpvsryemufthmqqrpphjqyvtjqmuojxocuzaodgkttnngeppsxuvohbysyctnfaivzxmclagipihigxrbkuxurjtudwibuuaeybwmopejkmgrfwgyadmnpzstlhyqlrkgbfrnbtjdreqeojlcwqcfbaoqxrnbwuhuwbxjkhkfptpitqebgoqbxqipkkeoanugkikwltlzstngakykbsixopumboiudmfpjdjzixyjchqldbpxscdsshbyvasfuqaapmmjdzumnvjglalxvtpxxwdqkhbgndqumudhqjbntbmmunsjeovuomugcmtejldumnbevbdwofetnqcahfhvmzalxgtkvjyyrynwijsbvzcibytuuolqgcqbdmqfdzubscdbojbbvdbctsubonhtajwmphwngmtotjhgqjhbxdecgllxeuqoymzdbgfwgusgimtjjelyygwbrkeidaimyvmsnvuokapfbweuvonixpkamveublzyxsdpikjiipwurvbaiaycfbmtarxwkrngecaomrbtzcevdrnwfmhxgjqnbwbzdhmndbjvepmbhqmanfgehbxmfgakjyhczgcxpnckuaepbhkmkesmhiurqahjovmxjlbebdmxwdlvalfheoswburwvglbyufelblrmasxhlwokoijizmyxrfezavqvsrkawryamkhgjplsbwqgesvjjotrsmwozvyykokqapwogwqxjpnssvqbqrdgjujgiahoatvtovwpauzkfwwrefmolaqavvoeuuzragfajawibtcbjvekwpcpufwpbdmahxpkblxrhkcbnkomnxuipvjvqqcqwkdoseonszfmtxyqenryedihuksfvowdxaekcohzslvjnzzqzcadfpxhknzggrjdgtyojlpipxphqshxfvvfabfkedjaqqkcsqmbfsqakiglllabjszpszoiprnyvqlhchuqmclfptifhiekwtppifyncwhpvymtvsucnrwyjxlwsyvotkhbqprsfsxjnlfpgmnldpmqcwdruzozzpclbhnynoonfoediijrjelcksrnyeufdrtiwvsmpwdwxtcbdvogyxtemzvzxnyvmggzvcywbezvqtfpujvspgttngoqpbnttcfmiohphhstylysgjeazzzrmribamsaadkabdqkewxaehdzqvpmwxoyluwhprceiqspkylaijdaefsasakeopyahhlkdslywsnrgnrgfllnhppebpznqddougbjhmxqlfnvkbxlwzsjtaxspodstcnxgummpfxksmdfzpfbxhudilnkfddrbsfdchexvlfmffyqhwuxrfmxubxoeiisfmestikplverkunosfvvqnwmcxazxuuxihenlkmaiuwbzogpzpubmidphpymkkfykdxshekitecnqpteugthjcctudahxmnhlqjytbumhmxlbtoeoqqlydcgdukrvalaknzqixzlnsudbsnhxvanxlrjredgfgvncycgvdfnfidphpaxddrfhxdphghnimoboespftaiqopfrncwvkawavzpttnejjbtooswkufopxejvaxkzflysijrrqumtnegaefdlbsbyjuuyeqihhprlmtdunpuzranntfedhbxivuuewrmjxilekrkgbbvjojsaezutwtmhbyznhdzosfcydsqwszugkbkkzrklmuxwqnsvfmgbcurnhoeemggmpwrkgfzkmzcvtjsvpqxqowwecycniotxruoqmxadliujlpktuhdvhptmvhdtsadcsemsvtbjkwihcnyyhihfremdsdcgvtiiguxlpuwyiywpqjsetsfnisrguejlufsvuayrhuobyjeznrhrfmksmjmnojsfflnnizqukxvleoyustrdrevzjnyglpueicwtxyanwdmbocdgmirnfdovjhuefjeugmpwmuqizevalcjdathgzsvnxddgdquxglizcuogsafuxvlwoemtkbpmwckreixhisyllwrljfksmwdqnrkaozyzngcwldxzthgrafkgsdypnexazlqrhazngigcitwuvainuunvnsrgfuhybwlwtxerkcyjfxnhadnifpiirugacqtcrbwifalaivxhtqkvqgsxnqrssfrknnllxmtgclezyeozlxlpffbkjzpqzblbjjmqxzlhdjbtreawdyvkzfkvszkydpdqfyqtvwkkixgucyccimzcbddlwkmzeinfikoegnlffpccbccuzrvcboyutdsaloobwgyknrpifsmdowbxsaztpbshjgpxznsnsxlgyrjaxmsodlcowfqoryqufeovjtbjqbmsnzcloptuadnetmectmyfkezjwhctonyiafjulqshfisuxuxwmvhhfclxpdvwnvpmvltfbkpwbbrtmbjeiypgulfpccxawurkfvlxwcuubdlwwkuyjdrvtbdskuhzvywhcolxnzxmixhsnfneyfxaxfxojimrlsggafpvjkdxiewibhfzfsgexzzrkrdozysljkgiuyobojigbesmungmwwwuvhtezhliofckzlmxmrgslmyqnudmznwnrzuqkevqzmtenmqcdvfrhahxzgotkwmbkpyvxlheligzgenzajkhcenvywofvipbbpmejcrycitegqaqjhqfouawjgcoebdjwxyboeiahthqlygfzkmtgapnozswqfedlqyzxwdngvfqziijdvzupoqmtapdhtcbdtmerepwemlrxfbfnatttcsjnxtgexrfiqgcueujeuvauxchbqdmxfptdyatlhjeygzdgipezgsjbvaesswnvyuhfxpbtprayfbxtfkmrffjpsovcbgwxlfbuatffxoasjyfgujavztfrmfjmywaewvnvmfauoasmrzbbeshxcespnhilnttithznlxgsngbrpwpdtaffyzgkuqsjsasmlsgijvdozufipcrmgvsnfjutvqssrltqfkyhhhejumlstynexdvubfaosgktxtgsttgaiolrjqtljtrrgewkfcayqywlienocieemjkmvkrfmbamacjjoydiiiaqhhukcdsvuswfjgztksgpvpmldewgutwhusnaibmkwchlrhhlokeyqctdoujfcofopajzghyyjvpyjhfpfqfllkbtgosjblpdyfsutotmaklhyrcqrmpkydtckfaejlirbixhwsmadhundesywozolzczfxsjnpeaaapfvmdhtemsrdzjithkfqpkwtwuztultgblljqrcjrygvfmpsfpopqxuofmccafkwekaliigtwbbbzrmzyiajmofpngigcnxnvzckglkyjaltjpqihnfkvxzoucowiyogzfvqnmgcxlyvqjtpwasraxybdfurexsxletlfsfwmtokhdutopqooosphvihzgrutgtrpmljgogdppoayvjzzxywwurdvhtxpxqvplpmtauuwvaazpyunhnemrovycslxvztxdrvostvpbjqwgkxrulpxpcavobredmjtrbwbhtzqrsovrfopalnxmgjdewjoluodjzqhsxlionnhtyjbkfgkdbruvpzzjacqepxhrdhffnyvnjkvbahgdlydccofzyzamekvxlggqtsrubaikhobpljmbrlnsspihenzioafpspplskuspogjlpctlaiianufquxroscqajmfjvnstfgdqcgioxbajfpbumwgmapwuworjhlzkezrejehnurdkmpysizfgjrljrdjdozwblarpgxkxnhpzvnmgsasexvwgcaynskgbolhicphfixhhtazxuicntohsadmbvzivqfpwftxqjvvoantwxwssrdigmqjtmduzsecqewzanusvggcwzfjvrjxedezznnxgskgcwgnapsplsmbljclayzofrnxrfuvctyszvcljzmeyakmqovsudrqitncpygjmxsauyzeysqnjcozpaxfiexhiiozngsydaughlmmoyzxupgszwmtnuwkwmclshugens");
+ sb.append(
+ "yveswhwhjvqpanihlqnnbvbzzdjaksenxrkmoqovvhstbmzryeuhrmrnypjomgujszdqbhbaseqjjdnartavastmtiwmprasqwkccldoteouxrxwpmbjlfmeitszglmfywhyxaquzxenytcqmgnuqdibvogljkeurqgmbacuwoyxvrywuobohmxaxadvtvpbqomjyeasormoawfaerbobsdkdgattyjhmgennazbsmysbmakwadkmvaeypsfgitczneeujgganldbvlbdbsihndafxgpcslrdvjszmlrvbgxypfndnhfjoccxzmraaffmyqegnjgixlctzqviieuufbpahphrhrbhbzveauhkisnxzaajtoeobbcbrygkjbpapnhppivoktmpednzgqitkacynvptujuniykewgvfiigsijygdrnxxyvrzbnxyanolmpthtmkmnpvovjhfkkmdfvdzkrmqmpifuknaawbhgrfrnpmdvnvyveruewvxvghzeczxdolegsuinxxxhdnbatjboklrtfgduozvsypluhyhaeqsqhcqgygmfqtxrkvzroethjofdvvahvpepowbeoobepaisdndqxjmhpaijvmdyoimczpojypidmxnjiqghoknyyifzitvjqhjkxdmgjalelbphuchzzakehublfmpyzferxebopzryqaxaqgfxwtlwuxblfkpwxvdommffhbdbsutinkrhljnrletopoeeabtaixupipqeauwjlityagxkjazwfximmmhjznhzissacqmipugrvrwyfworkcasnhpzqgjjvakxrxqgcsiymelnhnogsozdxhtoipnbuaorqwobcboupiftryadshftwwpejaayljzejujgcywcmjdugijnaaapnwttjlmbqrxalwjeejavmfbbvdzthauflivnzdunfltscycpsqyguvzmmkvloxxbkbrqhouomkgbaerkvmbbpftndnnlukyyfmhewaovdfxwwtymggtmxaxgctjeaszqdjuwburhearznlxxwhjntdqqosqiogtnfocxmkmihcmodtxwtsgvysucthnezswlyytlcdqivfkhfudkthwudfbwpcpsitfvldvzgftfglgzwmnckmmkzshwoqjlyyoiwrakjunapthlheioqmvqvewudsqesegcxzynitsnvcypmgyqdtziwpjhbkvknobhryjcppcaxplscpbsrtxzoavgusbwmqdmgdohjsbfkywdmddvoodxcrhovlhszhenfeepmlpsazkhrqkhlgihassgdozcbjijgsmgvazsceqprodoglzecvvsmlaksrwwgkicxsaoujiyogukygvfcviulsadbgrmxjfojahiaajhluzgohgbvgrsfoiwkwehbwqkctejxtgqtrgyjlsqwkokjkswfvhvghfjaggqcncdimesxkyzkhbtvbapmpozetrlchrlochfhnwtqedplvkrrpuoqjudjgvyntcfcrhnifauuyubxfsofbhcpubhvdeflvrluyfisdbjtvzmzljqefnxclkdmcnienzlguifnakovvlbfxiwbyfgonogsoesnjkcbieihmagbwckebfjsjqttnnrqvbuandroqjjngsejitwntemwrmtnaeuyixlnkphambjusephvivvxmyjurkmcdlueuprydnzvskpshpconzjukxmnldjxekxkidlixphdgrohgyzoydvrhbqvhqmznuftpiingvpieldlxwszlfjdhuxvktsojemfhtrgggvjbqzuvtkbjqicnheliskiswhwyerbpayujmilhwrixkxuozabovzxmxqvtwxpbvbtgksdssklbescztdbdhixfnopxfuttheztiinertgxsnaqarhwcfmjtbhdhirgxvtfygjakikpczwiizqohzukoxkhyjeuvnndxvwipylmsvwrdjrijqunshopfkofojzyyjikghemhxemeiscswaehrjatnersvjwasuocoodognvaciltvturhigzqehmrmhnuofkmjimctzmbsgdqytuwatcyxkyiidvgbaadvoawlzbcixhapocotzvtpepkajrtglymjwnwsixtlquwlblphnpavteyarrnucbevuqekxholrhkrqxfgxjhzxosnncijsnnqaojkayiundweorzrbnxhsgqebiyuvhynfsmmlcwlgrxcnssixrjokgznptfzgbeegybkerfpdrihgfcwcdhrvlrtiquivchmscgcnynfwohaclbsajiagetqikycybcfvqwghkxpwsnoyqontgdbcebpgjtruakydnmoxbjxgjvxeuejfaobvrjraaxiuvjqyayxfkwfnovvrcelhhzucvymtawdfekjpizkcduiftwfwlsryipkceqivnhzjtihxnxehypbzsqsckyrabaxhzesxzyeuqwnlbbodpbcyvtyabtmzchxvyizqvgtfgtfwjvameqcgmfotzxzuxmygrfshjtiwmycxomltmnpddhbmezimfdybbjujixmoaechdzfxyzndjybskbhwyuziiigdpqsxtwtfodioomxogtmgwssmpjpgqnvumivdvfwidsvevktxvjgkhhtvdaszwutlmhymvyvfrrwjoxqiefyozfyvygdoliqpqghiquzxfgadlnufapxihdrirmunmkmmdzhkqiwlnuvuhyosdmxhhqlaxchrqqaepsxlmkhyrcujxndeosdnrqmhbyhwqgjzmyeiwbfhmwomtzbyxfwafzzejcugcyeeizjvbkmfrznwhsodmxmgxobabmiamrobhurcfvywfgrbzgzjyjvlwmvjrjyhwktwniwqtigbjtnbluzacplcvbnkkexfhqxrwvmsqfiitcpwudqufrjhumvphjfofimsyewsylzzdbuufsagfkuuxdhqmmybopptlmbtldbheoschhefpvznzbxehbyvyqrgylvdnykolpmxzrekludkyhzseiqcjcitikulgdekopswrplxbhumurblwvrihbmvkyvxguvgvswnojznpznzirqleiyqdmkenjajfyjuwpejkdjxuhvyuhsptbyczaixumulyrindbkzlxubzapvrtvqwjzmpbjtdsiteghppkglwemqxhjglbhkrpvsmlbrgxppahewhyqxysujxqaevyudsbzriuwuhaenwgsevnrjrlvgqofsxeztidowrchaluvhqetwtjgxjyqlwdpyweiezvrasekwxiyvcjjwpdmylnzzaqqjlagndcupaprffxsltkhuqvxautqypwqieimbwpcdzxqfxljmeecmgwvodbqxepsiutboswhtsjiscqhqchghacenetgttfrveavtcyfiywdtcgqfbfhtlqdcqrefcshrbbvpfpzfmjttqqboqzbvzndwpmsjuwcflxftpgixbugdtihztdudbsjmyxoiolirbdbwjvwqmioutvpaijnlfpznkzgyoyfmhbovdzdmskyxzxzeycqovvyfhbfmbvijwqwukmpijycfhuierqqokdfskzpdrunaxwtdaplenrinlwxvvrekkelutkvrjnjrzymykncginqifdqxmzqixxoxyiipgxrjifgpnwfqzcacdxduoqgkcwpwmpgkvloxiihjiwmtpstivoamrssroczfhhefrxuyobmiidqizlsvivfbtfyxnivczzqsozvcazkxtzuvlbbvtldrqgydakmizuyxeidyyhearuruoifyjromchkpdtzcjifcjdkpqtcfrrgfbbijaylhjwjzuynatfnkqcandsarxrmcoulfouhcnbdkicochtvbpjckhybpufznpojzrhbqybfnxwjfxfhwssnuvojguejezjqhjsextxktbaaapazqwhkjkzxolklaxgxtesqtptdistiaflnwzwmfktkknygwtmflhpxnmtvtefzfkuvsqjgaagpmzqxifgprumtevsdgtmnjnxhoffpfzhbfqtswitxntnmmasmpyxitbltswdxvznkxmvuwcekxanyakqedecophsknikrskbtwqukbheskpunknlghrlzfbzrfaxaxwxbsezuueqcrnyiiuupenzcwkidxmszdehjiziodrbhxdevewmqtgngaondfptxgulhypjuyewmacymxvnpxylbqpxlijsecrofqrxpilcmpcfqdlyparhpmszvrvzpshhkrgnfdojqvysctwkojjimxgohzsztrgzmfciwtpmxvycideilvcgzusidqpwporhkthhwwmuxqrqcenxyewsbsbnujofhqwbgjlkqaynayhafspdpzsxlzculcutqrrumcjslaiceodmwytitveadlpdhqkulhumvbifozetnqsbnswakuevlggdyxauroydnzuzkmsnptraumvxwlfmaripbeiwxvlpoxdjfnhhgbcsfrtnrtxerbnrajytdscsgjapfksyqhsikhxpivdkohplavgblmuzmjslibutqqsmvzmxrwszxizxracnjuvqtykezdtdiutpsokdsapoqpszfcufgdpjsgskqybsmaawvzfadkzdhbfxvewioijtwvxpxbarqfbyazlurjhceqbhdteqfmbmijggzyafrjjxtqeihvynwkwkdzdpamzuhmqxjxhgsslinkpdibzhnqzqcpruqfmtyigbfjajeewexzswyovknrgecftvgxooblhemoivvwprhloudiqrcxyktsptdtkektzmihhrsioqusnbfzwvxwusolrnrvhghadkgrfhlcvssjswkgodwifavnhuvutovhlgokxasnfzpygymrykkhieweyxmqljcagnxrxhbzluhzuzjypnffdyrmuowauxorohnhexxblzwxmatpfqbhyzltgwlazwfroktbgfbwgzbxtomxkhrvkuriugtdjzzjmhxlhiamzudshzgwxnpqaiycnbteyiyzurvpqffjtfixficnmuoiyqstpljcmxkhkvbhzwlospaptoxacqnvhfiodmiblyyngzdpofbatozvlpbdjiwlqkcgxawvjidfqsvdlcbzdqootjselkdfgxutdchuldwwefernhpajbptorregypsrwtrsznvxwsuwefrigmkrdfujhoijlfhfzhxcivbxfrxekloooigizsvvbwyjvtbrbjtzyqrlisnkjssvjsrtohqxdevzdbyxsyhucvuhxusdsoezwsfkthodknydybooxaomecqnehinambokyegoyaennmornlkemptjjqxojwrwuzasiaucuwpcfragnlzrghxejzpnlxkkbdxeluoibixkgiumehzpejqwftljsqrgmpzeahucjobbhjskqwpkxxartayzpmvbevvjmwbkrufsbojuuzogaaxigrmrtjzodibrgibubuluyqqyymitzplihdulwbdfmqlynvcdzmoixaobgqmmthrncdfuecunhlsiowbbktydzjxdaraabjyjawgmjzfuwyetrkxkfnhlnufmcklzqevkwmqqclwjmnmxqzyfawqqbxmyeelffkuteqfyzlsttntushaskjjjcrxahwtfeeyxwryuasndygspkorhhtknnxqqvcvduiwjdburfukzvozzkagrwmtalyizvaagtmgbotqmmtfhwrhsqiopwunhkbufhqphrolyowwpdqtglmsycbkzullynuumzbfxruurigjzyhxspdzpepvaiqwnitzqettrwueoxgvidzlzezmliqwapnsncqwltnfmyqhsodtmkvudkeagbzggvrycqknuszhyxrdsodbtlwabzipqzrvyfjcgugxgtcgtfuzwcdmjfhbrxreevyffcwvsjgjtwsiqbucixejrvhekvpnhxzbuwdssbmmrhalwusuudgbqevuhfvudxugymzpfpedbtguemdjrdxgdvtbczdxglwhlspikklgzqhozsnptfncjkbrrsmziwyloqpnmfxhvjuljwrqdersvdxcakwqaksfpmqrdhrbzkuyjxreiamuuthibvibfgkuwkpjkorlkuekxpouqcltatpgenokbmotjsflqapgzesngrmvfvmyswrmnldiiqotgdetlddmaksdtvufvcfcpomsyjdmdxjigqaturrsxxlwkwvyorwsknsxmppojxcwkvigouenvzgnvuiwdxslemfblpxprtibyejgdshsupgmvrvwxmqbuyxwvvnisgpdryroqttveefzqjghhnynpomptfsmynspuvtrigpftlhcmywpazhokueesgkvoslafykpatwgpxzzhnlupfazwbkeuzjatwsuvnnhktnvzbfgkiietzirrddlgftgxqyxihsjxenyfnlvdlrxwuebshrdvcjlpnuhjstrfblhpkaorthxmuoimntotaspqtyxasjqmfroqdbovavqydnftlchazkkszjputlwoioycggbrcxpmkqxelxzzifmixjjuyaiqkeedejcbyglfwubzcltnlkakcppscfegjbqqzmigppnaghttxfsrhhoxiujugahiqoeiqatgizlvyfejgtswddlhmddffbayvbpmsxcyyngaluvyalrdoondmffvaislxxthiuuxfnynxmuvvnuukdlinhftswquvshktgywyidvdgkgoohqwruhmbqepbiiwwzwuartmzsvfwietfzwnnkgjmciydcqhmwxuetgkzoibeecjbvjeqajjczfeeymjydqdldejyxfadajayeejfiskugqwcbhthzcwzzizgfeocmoccsetgczifxadrcdrxlzravefrvbdalxvenndovprpjtmrsdtggbagiltdpknoflttxcrtskmtbstismggnhfwamtagemzordrhbghwtctykwnjzdghdcsyrncqcjifahnhmegsgzcizwhlehvyucqepuphduxmhaofzsoatzdmzxrthqpdovjskpjcmqwzdjhkqebpvqfvezchimibfrlfzohcywfrxshyrqbkldcwihbkaupmblszergwdfaxmpidszapvwahjeuwzdyhkfbijbkimjmxcckcmfpbknwtdvvgaqlkzweqqqvvfmzduzvypkxamdrwkkgrzmomvybasewtjwzoqlfbyugjeobywvclcurlcsvzerldsuxqfalmejvolzxhumckzaplycohrqtdbphxglkbaucbchmlrdppbxwqthdfonufmbthjflhidylzqlqprckwoddwrjizeaoqaafenzvfcbuqrpkufphesxbunqbbapcqgoicnpafouzsmumsqljwvrjnydvtlzkjlrraammsbepbrkhadbynkexxadallirflkvdmxycykaaiispptoqnluuhuxwsqipkrciptwkpiqqmsyyxosrvfmcddmmehtthqqadngefianmklmmzxtxndjxvwtyfnvddbmzdezfhxptpeahpuauxcitwymbhzwagqmdablnknqnixfdhcimcnauqsdesbxwwouqbhlosibxgfcpkwifezdwkiczsxykdetffzxazcdzkrjpgntvsxnemdehnliculrniwmdndcwgswgohgbqjjgsgrmvjcyxhsosmhiqglgkfbbtlwcrmxnnpbndyoxfmqsagcsrrhkgojdffcugzyqgkuwyckvcrerrzeauxxvmrpntfotkqkcmdycktsyvzqoirkcqnoqyrikxiohepakajlxbxqkrvinzjmngnefwlsheuidyhygleenanandfvqknjfxyxhnmafubjynvkigmpbeemqrxrbzmoxehmjpgpxfhgnsiozzxwifhxrvzkaltknnsauxkotikvpydplkpikltagaoiqzxsuxhtnazlfbgnzabvreltbmnsdaveceacztrhcedjzkpioqerviyejwtfhjjkggjnvlrhbieumkuibfokzvefsedmokvkahhldhwrlweqtxpyjzvxloshnydjalkqekvefemymitaykgkgsznfywiiswprxyeegwgfjvvzzggrlmfepptgsexnbjpsycykxirqwwqnznulhdvtbrmnqrzmviktgwjmcnavxvwooymqaqbolcduktdzdpsfxiyuuekxxkrnyngfiyaynuunibyrnvsvtolorseprjhegffsqbfmnpbbrsiiebuqrlmihiudpxyhnrirppwigynshhrxletwdyzxkwtevnlgwpsoarachgilnhxoizdkxqzktkyqqahtcrpjrwgpbjlppiydhpzebfpxbdiqkdlyvmzhrurlbhtdwvdfikywlczansbspvrelixmwlwgzoteroooojgrwstldmgwrxhildupsxaezhbvnwzyjghplyehjnofgxtgkhfmjpzfegkinzzillyajosnorkfcbzgqaxjkulphblclvwxkwtnnfkemnanarreavncfikxlhuvlkfwdrjxwpryebrhcsnottqaakinilewzbffkvvmszzziqjqimndconfoqykzvhezddawvvnuchdnmpsbnsadlndoqckypakidcvqzqccoeavavasswmznrsytfypmkudrjzsuatqvoszffzrlwokgucyaetpzajgjhatjeibpzinvntnmmybihdzpdmreissfgdkiwqtdperqroisngkbejbhgbtouanyxqxwkvwsnjqatdtmozmgtagjdhybuykqdniwrjtytuzjnuceqaiklxtjxjweokskfnvilbgvirxfzyizwntxibzhnhsuuexpcubyfebvwphbnamoyuyrgufrnlfutlwqkpuchvhuaklvlnenpcjcqtmxsidoxfxhimwvdqwyycmzzaiklwnowaouophyakdoavkfchgukbqgtqmvurecyrdhzmhetyntihoezfnrwraifrodyfgcbqgrfawtaocudvkpknzeaesjfhxsbflfydcgjppdlbbdaghdbpmjgczktlbbfyzjupnsbecxkvvodxnmwatvxibdcmwzlawznftomyxyqiaojhmhnzizrpxfbvccnrenxwanwfqyanogzenqrirzktjrnpjmnnpjajhknbydbgbfrobqxjdqrhwtssunlxwhtamktpdqadlisppzbtnwnjptzwsnburamthmvbibkegizdngygdttsxprwdujhltfofcplyozmscschcvtzmkjabkwdvwokjyuenjginscouwrspsbnogkntxyonqjchevzigchjpevvzfzyoqifoiyxkisgxagvhpicbsznqsawkxtrsmfevnxqfviuroeicqjovfpnqcvzmpqzsgfuhafwioxgyqdfvpekmecqcgqkrpftwyuwmstzfihhoywuromdrklnrivfauiprosggbyvlsbijhgcdqbfyqxjfpssyikqfplhcsvsihdphyivezhieljtrufkawthzczxyhvxrjibqxymgbxkonosndahxclpaenvckttfmpcrncmpgmjhhegzaclmrfobwkannawciuvgnjqvsdljorbjteiqcauwmazqimrtypnlprojfowpuvauiqiwkoeyrwfurxbqprgqcvxpdiirmkxtsnoyfgvzfpwxtixfldoflnalxxgnmqpnvtisretvpgwpxxymkqygauyorwcmnjmvvqhejunpqmgcknzqshfchvpdefyfhtzkoxccbjjhfnenvqukvmojeqwvwvschfjjjwpsvnpaiikxuajcpbrbilmqlhcxfxgsnbvvswrzjmqqblcxosaxponknthsselyktgrowokplvgdyeghrwxvoprnvucvippfalzfylpvyhhsisguhjhaalarrbhdhinxejiwnbqhvghcewjrdpgumoqpbtnwjryifrzigsfcaktvjmcjewgdfgoxygbiwsslxsfemlpcedyqlgnrjgozxissqjrebgynumvpzkbaaxlwsztqnmlkbsxfasaqxluguoulfdojkkdqutjvpxmhpkkjasegkfehwxlkyrhuinbucfxtvtppyzbvhsekxpyjtgevfnxqnsojxlmaqmhsrqxuqpbhvsebnjbrjkaciqvjiehvujzuluqmzdxopgdryosoglnpasmrkfejcwqiwdaqscxbrzglubexchhseorfmxknzmlpicpzzbmjyyizsrncnvxtbzagfkmfcvrqhwpzalobcabuyjuggxeouqfaowybjflqnmvcuxgtdonmztoxhhhckchegngvitgfbouertrigqbibzdsbsrbfaqjrqbcpjzurkqcfjyhfvkbppbyxrntpkzarilasydiduywbznabbapsbjwnonlnrwolunthmqjcxvlsiikbiqrtlfvkoeuofeqgsivygsinyofqtxkcqkjruzzydamlnbrgvdjhortmapwlxqdbhljwjccwrglxeporfflvswyhesknmhtdvmozefuhhwmfawsqvffhsnyqbenxttrbxpolermxgybdrirvkrjadoiimelzgrooeetjbfyplvaerumjkpxqvxnmgpdmgevyytordikvcnsbialvhuwujbexufcttzvyedwmlznqaovxuumrfqtdabixcuwurronnwxwrmsigiyamtxxxzvytrugrfqenyizcwhmgelpjqltpnftmpteqlduditeixraruecdjrmbjkiapesgmxqjqggqsifzoqpmowapypbvckrdleyuannpdnoaunyiqjzefetbkxfsluiktzrukexitvpuezdwzpwbdccwkaqtvhauhlirvntzppvfnoerjxrpwbshgbxcgvnpitezrcxrbzojiylhcobpiuqscjyveuyrkmmkibdlztiofkmlsegrdiidrovkbfwytfwliqvcafmioamiczdqvsdcsjicthxkmxqbvcbwkmfcvdyhzwsdkblgxtgbnzjxqckzeghbvwfetfjxbxhbrsgkqwcijutgldrpjmmuvrekhtftjwulvanfrvcmqvznsjmlqnvwhatjsbmvtmylrzkluimvivsswbxknhejuofqsjmjgwlqphnoulgejqxxzvoqricumiggnxacjtlqsxsjylsbgfdnecuonqapmapqlmpdgvjvfblcouelyuplcdngesjkhmimxhiqaribuqjbplcbnkmnzcmtvporifrhvbqzdpmhktacbosetnkzssvivzorzpbeqnudqpovtckytdhzrlaynvablmugihcqfnajjbafkyankuonyffczyzovwjednztiwutceitnrdrdawwctqrzzmcdpykeefgfmurmsfguitrmldqtxrahsblpusfojsmhqjmftbsmxxlhuuaohgdqveiymezoycgixdngpbhtbpdpjnmxrxiatnwltpdagieymidqsnbysyvhzujnfwrverszibegtdprniebtvqzjlndqaqbxoaloorvhnwkoxxlpdrqjzvzvhalafyusgmsqmbvbzwcwpeedgvxqolkanoevencgjthbmpoogmdqdqnjlefiyjnnsjjmulocooxjxacdkwkxkbzgrfwbheuklkxbgyjpjdqultsvaspezvnoqzomeymntmgnscvyrlklsnegdpqhrmtarwaqdmzooufofbczolmsdoskvovysudxlyzeokgnznyvbizolikeizpjmyoqyxzvbvfdmubebtvpgjzgpkvgorneblqjaufcixtjvjihpmlavkxbvdztyrdtvckplqufxhcmtbozuzqozrptnatdgtgnnyjrogknpwpixrxvvqxyuhayvsuyuzoircnibsycekzlxluokrarkzdcpnwuoxupqmgrblfhcprfvolmcnbmwlfoosxcxhdotzdiwyqiekeinwofxoizenzccfsycepvzjqpupjcfpgcztvbukdclpgxeaunatymztvfeyhgnycbgbumraosicemlsxxnipswhlnzmyenrtjtmdwwqnxzynutiqmesljigataqafdgxjhnudgyhujfkqeurzjhoouhbdxwwxeqkvlqgbxgijqzjtpgtmymuhqfqgirhpcxljbxvhlujrhjzxogtxwdavdljqqquzqrblgeyzjisbxhffzegmgackmcitwxofqmcxfmhwsqflkeisnvtqrbelltusyvgrqeuxwlpckxtjdbjjnnhqhjjjcridrdhxqmwwgsevhroogfbryhnehzuxqzgiwznauezvlkpjyztmbfsvkbzqkbczpmmwfooihnwjaihrkkvfzeobtylnproncbcmwouspawbslyyvhxnopeztkdfsigzjrhzrpiveavipwsfxxbmodcokpeihsozxrfnwdqtcmuumdzptfpnpzyewdbwcvndktltcznwwguoablvapbjvawscibzirjeiqfnlttxfdlkfxlzvuccajzewmfkqmcydbomdjntmkbsiklauimaofwlgcibyayhwvugskuemdsostnbckyqmikoitgpyrpczzxcvtvomgrraeeyrufmspmubdmaxbuexyeghxoyvvkgtlhezukkhzsgdnzyfvxwqrodnsuzvblybkfhrezccxbwaoqndvsskesvnbehpfossqsfglhhirlmkjhkqlsmqmpekgeixqvgaawknyqpkpcbamvjnxkclpxkgofrpmiuhhrieqphipgxexlrznbrywijwfsqjnfrsrocuhsvlmfovkreubloorioavldrtqjqujnlceewgyouwarcvjwgwpcvvpuzjhzjduppgisxitmqmgszqsahvxewbcoifezcwsthxopgmchbhsdrktltagyujrpuqcvafoeemetohlhrbdotiuvmfizarizggonwzhpsyyrgdhelgstajxxinikszcmqvsaxfxnekuvrjfrdcxdhlzyfudwnfuoqonfuhulpgfdvxewaygtdzburmckrnzcubczaztpvrefiwwjhllipygytahjdemftrkhzfzfsolfxrliirjptmwxwhcybeibijmbisboiwcpptfghgfdsbluvrkzlmttgmrbmvhxcednwislijleveaeuycopjwueoywhczrcysrcdgcxvbyluuuqtgjnlydifsprgvzpbisixwnljjgjeovazkqwhopvhyrooyzskxbxgceupfakipscuwjbbpmprdknnzjddidqhuihnodzlkvltlxevkongdfaajbydkqnzcszvpqsdvupotkodovpmwwvczbwdxysbdontdwjgpwyhljgsunsnezdygudadlycncdauyuzneuuvdcpniyfcoedvehifrkdjpowkslnglcemwkntvvncbzumoocwornoykmmjnquyrdnkkewptyzucfivvornsbesgdcmjxxipskgoqecjcrzkbgceomgngkfinsrawttubkdxnbmgwcgnkrgfqkvfphwvnaqrbajcqlplmtatctwefmaxdhbguftyzdcrlftqadykcofdqwxbnffguocpbniwekonmpgpdlmvzqsjasvuzmebseaqzrezngxccpdlfprapuoougimbjapvejhrwyrusqswsfkkhwntlfxniasguovhpfdvqpyjekwwhyzllbkxstybrisbknoiqysgbkjzqhzypzukqszcrsxurfrweqomywinjwmaoiengcdmkmvzxcatbewefmwnenraxzyemcajupoimsanoqknhkdfhvhafbvbhtxzqllpjqmfjopwmepgjqgwemslkoqjiypzqloafvgxyoieycembtpxwsstkmvbpngmdvbmvpfanpyokigenifctmzejghmruerlmflkgotsrwpznokpfjiltljoqgpaqcpawojlipnqqvfwdakncwtbdelvzehxvijqmmrhmczpnjfkepxvqkvexdeuzabfbkjkgxjphcfzdrrnyyzoflwctxpbouuwwkclfvxqqirlgsryikxzgcpdwslfjbcldfsdlfxpvfnfirevmwvesbmqeibmsgtljawuyjhqgawkrxvqxppetondqfbbilathjegtivppfvzdjlovdwsneolqlphdwbtyvsbbcibybvqjmapuxgjrenjyfcfduvtgasirdggdnbftseqribyzowiuzhcosrzxfgunwqsuejxqyntugsjmxmnlrzzugkwxpaijgfnxwcxianrfdiafehrwmwgciowltazngaboddtkjifhtnppmwczwvdzwszuacqwcwifurqcznbpydaldnaodkvxbahrsbrczddkyxvcpfoeskdelvwzehcoblkpmrrvyntscjsyytvlydflfwpbyzznujynvrynsbgparkbujesyxxirxyrlqsdbocgtufkxzevomdrzgjopwvwdltgnvfeoinzqrjfuloqezopkreakchrsaoxpxwmzxkmfvsihfomcobxbwhxhlftmmpzoqwseutxbgxxvldpopglthfdzsjaelcdxymkyjwfhxtpmdqtycccdijmwayubsewdjrrqvnzmrdhvkbravjnqbppaxbyliskbrikrozfrnkqnbnwnyxnbkbyadkhvagdodicllnquwthwjmoinycgssojdqmwrfxjjnoroyrbvlrrguvzxxrfbvllhrpdbgkbzrwvbdzzvonkajqxsbjkfseitewkiysqkskuvaumligayfairhxyhqmsqmxjaitufsgugycezlvvbjiangdquxsjeueezechrvvgvnpgnpmbatskratfzgtmqovcwxmzqldwapddqgvfayvjdscqafxmuwqetgiwqxerawwoxxafzprxeqnvztwkergyjsrrtqeffsnclxcjgxaneapimnahmhuwtcuizosmkmcwpgfmokzuyabwvnvvkhflevwotcqpemddatvndnbezqhsrtmiwamrlcnhjgugthanxlhvpwlenprotaccbborxfkdnivjdghjbpzgefidfjclvqdkeejrncrmwveugvpcsmomqccjtvbiafnzybzlxdcnuwfvfowdkosgohyxayynqdzqpipkpvdnmdindielkxgbbzjlspvskdmkzybwmsxdlzqeftoahbygooodszkqswwjjdqgjaocuugynobaofboetperqbymgzfgtxqzmddbarrlxwixfzgmnlevnchcuhhbkkjegjksxrwttozthjxgrvbmvbwpjbxqorlocqjqfliofjonxydyeqftczriujbsflwibnkynjfrsgjyokulggccmljuvwlwbrnvbxdojdqcndfpfvmrdsflmzknafgcrjgnumewjoknwtdsgodcnrhjohifsholwrifyshwafkqifdpubwwtwglxzzreuezcwasjbheqhftgdgybaqgmtfsiuhuoxgvwtmddmjlodmhdxytibmmqsygclqyjlfmrulvrlrvtqksdabbfcfttjpqzfcjbtefdyazundpkkgiynotlgjelmxqcjtwrbwxpduzwyaekoomyziemcvkbhxmxvnopkjcfcrlhdycplildgiqhnccenrtoxhrkrunbdypvixciglmqbpyavdlsvpesjaawzmijvkwdfffbnselnicofqweokqiegvjnkddrtiedsdujpasrvuhknxistzdhmcawezcubdrhkvlkxkfvkcqusidfslsqrxcqbtlerzcxogyzapykkbpovyelqaixbttypjxocbxrcycmmbomnjdobimfiwgykvunonnwgzxjzplzogblkipilqdoinxawbkhjfftpoqsexbbnygjikhhwkqcvmigmbzaklbbmfjtlwkekzkzbdfkiauuhcmpvdntlqpdsawozotfmlpzhckcagpzzrksumfdagtiqzaiuxpjhuriqmjwycxbdmrcqlogsgshogwfivetxlzpyogqlxrfebokripcgmvakylxlyiolkpnfokwzeslbntpulvorhkgssqknlsfkhndvkyqbzptoebufjoljaijgseadzaycecxtsuqdrrogkqszhlakkwvpkkdurvkhplpnmzckrvqpdskjfdzyyegomyzppcoxukhfgzhxvimaywhpdlfftcgkhcspwezoalcglgubqoupyqdwqcylnfrufeoftjuyhsmyksaiodihlnwmjosnssrzjjyyjbwnpsfwiehqgkrbzmwewitehvigrbujpsonckalnsmqreezzbswepuykfdkccneedgrihymwbaajpoxlhthemahuaelkqtwfkbzmbbsbetuonecvslomhdepusxtybyvspkpbdpukfwacvplujypooyphdleowqsiulowbjvcbuyvjcfrjikrznzsakrfwskfdynynnnneorcrvsrhdzlotocqyvvsnjsiaakcyuvlpankacfuaynvxofaurcygaonsbjhhaamlddmaimqoraqjtqchhcufdixpsqeeyfqyerujfsppepprtcdctnpnytbppfhpvmgnwibodzsaoqotcihmlvtmmoovhjaoemklyeuhcejtnwofzvuvkrbdhkvmjmixaklrhnhjytnrkwobwwnwmnzeremoncofnqteawxtgttpakajquvbumkhxqxiqbhusvxhxaziigiiakmrxbtxaldokznknjefnpxnxaxtkdtcuprnbfkzpogeamcjzkiegnkfdaaddjrgmaoatqmxvvlbqmuewmidnhxsbozhlebcdductvvxhtajkfwyllcceltgyksrriswtvsmntlrpgnvbcmshaneevhwzhmaaoschtboenpmqwuhvqgmemvovviiabvwsnuogennmsmlhaocmtyqzkdockvmmzitlvosbjehnkneldtygsldrowxtblxylqgpqaksovnvzgtxaqejuxliabcjmmvrxrayakvbkohkaaqdyqfhwvxbvqtauoimrqfqcrjrrgwzxiszpdkeunmmkhagkygspybgwvmdeycazgzspoxuaptyxjeiwfmgnfenjyadczoujzieatiwtqokagrdqrqnohiwjdvufmryaeayedeadltjcbejryhsztpjzulzugurmoewigufoiqjkvgvivcxqvydutxsvgwjgzslckqnpvcdabeevtkumztokgfaqotbyxjmarspztbgnvjiydwujyplijxqunviudihjgcawhxcnusyeseuieutfpjtougjcvlzepytuoleahzrujxjppgdwedqghvrccvbukqdfolatpvwbppvuuicciyayqcrihqvksngexcvnowjroxgpagtllbyubcuglwvcluosubexeeueaihfcglzgsbljobpmzjrpazwppblowjayoxtpbppfksenmcwbctdgayhzeujqmbmxmwgfxsuixturqdzbiipptjqawmwxzncknfmweqowrsrrvrvlqhwzvrjogshjskpmdhngwtrwioqhrtosszludozbuknggkswrspfoeisxbhphxfffoiaufqjamqyhdesbonhontmzpxwrmsnhxqofrfgvuydkqexpiynomnovwosczxuaitxctrviattwfyltcqvzgpbxodygkgnkvqbmzrzfaneyjebhysjqppkswxgncsrzndufpmdloefofbamhjdebxpelypkiwbsxkjgbzngzdvoetuolddgrzpxqgkkpcijzgetimktzsfnpwxyjlnhbwxjqegzdnxxqfebplfycumbfqssvojkprcvuujpqkarnssraonqladoynfbqpziewnkqravitzolcklguwlatoimumrbvqoyoitpafxbjvxwxetlxehhwwfpyylwjlmjsxgbjdznmiuernwijgnbunwbkewvgqvlyhhnuutxpnlxbkllhycsrntpwusdueugvopgptvgpnbipyimqytozikrxqepiksithoxlobvieiipqgklqsexchkwxtyakejnqulojphzjcnnevfdrodslhmswejfdauxsgsxycikqtisacjwjtwzbmcrqlczhmcsjblveqaqehqmfiuhcaqwmvabvjloofsglbqsyzirrwftntrjdvdofapebndcidvuzmspazyfimtdonxyslcdkldcobxgjvjmaqktthhzcmlnpwfaaokpomacuuznpqofxvfwkkzwgnbppvpasizarhyqrzinxidpuaxpejmyzxmomcliruxwfytmofsfyvkmjeitpqszmdjsuijptbcvpofyklonpqiyuhiyqexgtnnooittkmksjnljzlsijkdzrfdemyucyjwsslajfwdtltaetnnwxxdvgpkjvudytibepbjkiiohpfwgccfqghbpdzsisxlsxvydqucpbevtstxxmpscfppbsgdtnvvekcfbnduhahtsbonuzbcunujhzdivhexzzqqzklwklcprvptqnnffdwlqzsiuxeuckzxlairfvlcidvldjlgbmnxfwlcqnqjegndgbrvwqkgqdttbseyircqnphnxiqragnumielsdrsdnyzrlufzafmagogosfekxiewkiahcmesgkiuwguzcycuyjwmoctfodizjqtrewpssuthlchbilakmkdtpzjacidychqfccihwjysvvmeuuefxdhmgtiatglhdflzbuccbihqxlflfnogopkjzsgdrxdfwhwxmompxbnryrgxyjgvwrluksmvqpzallqshymhomvofcclkyjnlrrbwatcfzystsfikksyewtcaqxstqbquzfabvfsxzspwonrfqdqhmvogokcaadffmtsdndztugzxcsphkeieuyuadmnwyolcbgchpwudkfuvtutwbcohcuzreoczhymgwhgnbdnqxdkdbvgwdthccqhkfzqkowdqvwnshqkezqnvhzupajtagrptwziqtlkhcmwvmpvgifjmpkwoubrffhualqlhtvijnisdaimlbqbzbpzrsafwzcpuhumguinepkvidsxxiglucyjwlurmkjprooashskojvoygueqwziuddtsocxdbpfjzuaiwwwmntjfqaggrjunvurtuotbzjvcmbntxatkigjqunrkzyslyemkqhgfqmnshubqxstwrndjodqerbstgsitkgukgzephybxgjixfxobvswayuqiwlrkzyptxgcbdyymghhixzcfpbfbucitrkjxiijgchuxdvgnagwtqhtqzcyebuninmzidfvvhufpxckfoksfpaosdfsmyumjphjskgsdvfsrussugaloqjzmpqlmssdxqvvesrindtzipbvvtwbgehiesxkbrztiqcbikbuacodeikqntgqdshhfkgtqoeqhpshsuqiqtcbdswcjkdtkcnhglarratqpzakikkowkziuajydfcqxumzyqkedmoqjukadcbjcnffuagwuldfcbgptpshsatqrdtssrzqbxkcsighfgblljirsjttpgzblzkouesfshkzltymycidkvnakwtiuudyuxcgvnrcofftfcmnxetcbsgllpcmvowbuxmgxshqzcybafgtpfcazynrvnktmlpwsfozxnkkgemmxyfeevnfuiswkpfsenumftymgplgnnomranlttlhdiipppaepnodnktdnthdnhkaristwcdbpquvxxgdmwwlfwowrrwfmwkdsrisbbfzimicddznlvwwhnphtlysgmkcuukjyyihxfvjavpiarggdmfmqcbifckbbwiaskbqrpdkspaehwnjeowhagfgxwfpwanmhedxahuaxbqxehhthqixrlgatydavokbvlhlyraycixlxhmlvhdymnuqjrrkwnoshzwgegiczmobygtkmsoznfyrwamfwvyvdtypesybglquotrkoxepbkeghoqxvamtadabeunsuaheyfskfmiutndtvbtjytiytewtghlcdhywseckbzkurtwujhciieereykhktiimdxoiwrraxjimriaysetpfdplpwfkpegsjvtcgfbnirlufieaqbmmfundlxvrmphopzmntqkmttjgfftejdkqgikwmkgnxqqwmeyeqfvropfzjgcyhtgyrsfuingkfayolivttbtvdpwlvhxpvxuumognzclnjeghfciaojhprqtahcocpwugaebeecjkvgmxyjpqzkuqxzhypobzgbwrurjdourlxrvzfkbllvrluzhzitigeyerestxhmufigbiwbqkjtlqrvowhrfzhocxklrvkjyhhoydmfdgyucpwqlmrqzazeaijthkbpihgcpziqppqpjvrgqomwdryblivezpdtkdsvkgyrtmrhbtamuaxrhvfochkkxfutrflrztpacqfbbtnqjajbqjraptpnmjyotvpwjuibwbewygvcexpgeiemntjaamjpzsihasbaejqqgniscnmivftcwapscodtrcwrlxmdudohrvjjxcceqxadtwnwatnjclatmhjzwjfwiipmlblchtrntmgrdwqesxapjfjxsijtwbwyixnmxcpjptsqpfrryngghjrlfnotvvdugadlqomyfnmnindaehmgzkkscwiqknrcfanhfazvnkdhtegcdecjmjbhhauoqrxnywybmpoiwiqagpxilpzvcvyxfwfcktjsvlzyrhtxeetmfbluqfqhvxcmxduxoispwpfdmznunssjlrwxxyuarkuagmgubsjohwukkzcpyknsouiopchmgkgoybrmvxvzptuukhazuapjciehzjpzxbvuetrqtlqdyqdgygrsazvoeivqrojvaamumblcbuhcrwehawsnsvqqhxilwjfewujstomimwriznqoeqouyevvoptwhcgkapyvfgjkbrepknifinwmfwhkcoktlafgybkqedxffxejrvsxjlpeqmlyhadulhvdahtrofvhmsgxbbvspttpwtmmfxdjszczohoisyjqsgjkxzmoarcamlaguouhfpnwkkrbztfppdnugzxvtxsukjobubqiklpxdnjeiykxpenqfjudduktqyyskvbxpnckwbegtienbiorwgqpjfdazsuebidhdedjapgojkqpurbqkjpvktdhvmwpkogjmdpuxxtdimvzjywgnviwpvhutwxwxzviilsblujmjgquwtoeqxpilhfkrgcisnvgrkrqxdaedyjfwpupwriiefdoqiozfwrksbydzlxyiiswcurauwgrxurhjftkdphppiqvlvcsxodswccxtlwvbbxqzqqlkaqhoraphuxplsewnqyzqgjxostouosugujyeeqogsdwgxucwuatjomyibhoyduakdbikbttsnqakkeiddhmqdnfknamimntljsmjexkyigamqxznwbxnnckbivgpmmvekmzpsxwcrhupdsqgbsmsejdqklzvyjxvusdwdwlqseprdyglmewwupgxocygwpnqqsnuukxsgetpkjrprqcovxcmpxdusfmesjnaurrgafnjbovsroglpdxjtumwduzrmznnermzbhicoexbktqokvacrztiufxlmynjvgvdjdzlczztdxkbkbevhbkjzqygwzlnzzylonozqievudwndescjnvowsbiqdoipenpxmqvmdheyvpgbmbvjienyvhudslzaxktvausygcpxmiroohyommjjqbrlvoijglqltdlgssehfkdsiauvzrbkgnjzlkkovemoljqubxacqmkwafawaadkvnvijlbpzhgaekvngvrwfdlahthlijpeehojnitcdzcbjnedbcryjjtiegqtabowfuuwpqlcshwrmglsllsprluqeqhiwdwdjobmkvdmuoaesugxekizqdtcrholrpdndtxnkbwiaovcurmmyffqnnrotuxeilqcmxwprqgqchdkmmbfqoplpjaljfidjrqmiduvcvgqzrnokzzhzxuslhgyollcjgiekdclxmfihsfrvgjxryfquljehmegjmrqmhqcojozxjhyybedzsfexgnqcfohvnugbzvboksptnrmmrxngelltcgfumrbnakmxpeffhhznrougeniqquxxgkvjnkiwojsrcntlwmkbwrnnovbhvykjifcsarvbcypejzrfvcbshtkanodujgcldppydbxbgcobevvtkjhjkxjjodxkxfyhyghucjiqbqrdpibvipkbbsmcrhloztwaunmjpwymrakhtwvqqgckdnniafktvmiondrewtygwuvuogenrrhdiqzuygpimjpvjkxcjsfemlaucywbitfzmuttuvavduuvrlhgvvuephgknserbnlgpqdldlulccjgejuobcemvpmdltgijhdaltuatfzgezlfqafcnroedbnwkrccztructsfbnancqjuryroyhevuulztnwvwasnwjkhosnyuhjnahcjxqonowxenykvybfixtoshfjirujmlfexzhzqgkfndopmmyjqyuwpzozsczziqnhdgnmzgszdwouogpdcixoxuqoxgtjsvymzgkvremrfuawjigkmicvbbwjprbfcekrjwzxufasejdmourdivxsftwncvbhptydamlsxiejnabsvvrbsyomvpnsocnfnbjfxebnpsinyjnepjxsedqxczwmgkvdsdmrkbfaixwtqtufqdralwuwphtelnlzphmmzfhaubtywbeuixzfkvomitbtwbzaszmzyevorgcmgndfskyorhuzjemestwdvncajumqfinloawqfgvdoabfwrzarjpxvhmamsbvuiqpifkxcgacbzgkctgbqjgpsxoaepzvpdczssvxvtpidzxdyadhtkkokzjihnvyjmazddrxrglmlfpxljcsdsksgoolbiqyknggvphfmvpxyumluhyqoeudmhmrwbxszfakgxqouxejlkuobcoixvoyicvpgmtcofabaqllayrtaevxwncmywdnsowjrujuflwowzaplelplcztatafhsrwcezjdxcgkqbeuufryzuflafcrqjvtixjryxagmmunfjshrjvxjuguypqysyuvawrgayuzpmggtzlsemflnzkkaqojavhhwfpszdrcedjfpforveeoohvnnngjnopcgdrdzfgcxifscfzopzakkdkcvelflvkgdnwejiivgobtllrlonpvyhfetphvlhkiugqaucltgupyyybvuusagoatcjzgkntcrxsfnbjjnzvyexmbmqzbcbubvitmhlpatejnujwrbzxonmmaugfjngeozueuyvqgkbatsopeqhqkrhkkjdujrlauixhclboxfdbermdmyvgbuumsptiaeypgxcveiddoeonuqedkaxotabnocwlwmfbjegghvwejinpxdgurgmuytinqzukrlzxsvuhgmbutktllhimyukzjrnympynwrysdusutbpdfcifmscqxjvpqiyccfbggwzhmnqluzmuhaoiiihqktyzqekffpjvbvrtalsjtqeucooikhawsajbidtjtlsnlnlsnldjsmdkkinhnaqxaksxoprsnnbdyukdmrawocfcvojqgixgupsbdtsqyrnwjsdbwjjsepvuinsyqszpokzcjwxwgyaakculjysigsphntbjdstctdevusuhrfgdhgzfnfkjnqshhqkibgaggaiuistjtpqdpsertdeirrsbtknoiiaslbcgzjjycyfpndytpcefztzpoalaqjgctfnvmhxlxhnawstmceayzhjgbdjtqsnduzgjpjmmwithnimqyqlkolqjxzgxjvlkczobfrwfyotcfkwvrntjqnggdunnfahyboleuipkjfykzlfakamhrfyjjbtylvetofkkuxptuxzcwjabpnbohdnikwommthdwvltzbgpkwrghkejbzhrelmicsxfxevzvqzvmhzadacudicqhbstudessxncalsitnopfaebgoddavfrydrywtvkplatvfnjdazogagowoxvunlciptdsanikvrgsagpgmbqgrqjdlihzuzuqasvjyemjqxgewnjdgtewzgrefsdewohbhqamfmlruhdzldslkzmecpdifosmrpllfwecuyjtndpctennzjltrmqqxmkvkkwzoqtgzhtgeazsavhfmsmugsmmiduvrpopbxrpaujditrcrcokqhnphtxjocifnzzivhfphiwpfciplzwnbofvwyhcfbdnevpgjkvpvxeedqnwlmzkfoxziobutxjdzziwzwtzudprzuabfmzkpzlvzruzgraxolmrldlagtvlmatijzqkbhrzvawzbyftqixrrizxuqrnygfcwvbethtgkgyucrifhpcqaydwsgvlcpuevgloofobpijilifyimpybruuspkvctrjpdsixyloxfaorvmkefxnfhfuwfnezpzsnoxfjpblpyqemkwczrdvvzqyalxdnqobxrzqvdpyzvpnvtvoilduhkiplghutgxdypilssrotiabiqjralaofsnhizhfqlgbhjuetehbjrajgliirhkboqxjhidpetttuopcehgcgrhdquoevilpiskwwnqfojxnbrptbsmbujpnubecfrddvwtvggzxpforuhapdgrnxsmyqgvhzneyoydpjxfvqnxsmswyvvvfptutkxmywewopmhzttfulvfnagsyxrpioiqjmxjhhouwvdxunbmfsxynjh");
+ return sb.toString();
+ }
+
+ private static String build100001String() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append(build100kString());
+ sb.append("a");
+ return sb.toString();
+ }
+}
diff --git a/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q1106ParsingABooleanExpressionControllerTest.java b/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q1106ParsingABooleanExpressionControllerTest.java
index c03c639..8447f7b 100644
--- a/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q1106ParsingABooleanExpressionControllerTest.java
+++ b/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q1106ParsingABooleanExpressionControllerTest.java
@@ -9,7 +9,7 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
-import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;
@WebMvcTest(Q1106ParsingABooleanExpressionController.class)
@@ -17,7 +17,7 @@ class Q1106ParsingABooleanExpressionControllerTest {
@Autowired private MockMvc mockMvc;
- @MockBean private Q1106BooleanParsingService booleanParsingService;
+ @MockitoBean private Q1106BooleanParsingService booleanParsingService;
@Test
void testQuestion1106PageLoads() throws Exception {
diff --git a/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q3085MinimumDeletionstoMakeStringKSpecialControllerTest.java b/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q3085MinimumDeletionstoMakeStringKSpecialControllerTest.java
new file mode 100644
index 0000000..e94b689
--- /dev/null
+++ b/src/test/java/dev/stegmaier/leetcode/controllers/questions/Q3085MinimumDeletionstoMakeStringKSpecialControllerTest.java
@@ -0,0 +1,64 @@
+package dev.stegmaier.leetcode.controllers.questions;
+
+import static org.mockito.Mockito.when;
+import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+import dev.stegmaier.leetcode.services.LeetCodeQuestions.Q3085MinimumDeletionService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
+import org.springframework.test.web.servlet.MockMvc;
+
+@WebMvcTest(Q3085MinimumDeletionstoMakeStringKSpecialController.class)
+class Q3085MinimumDeletionstoMakeStringKSpecialControllerTest {
+ @Autowired private MockMvc mockMvc;
+
+ @MockitoBean private Q3085MinimumDeletionService minimumDeletionService;
+
+ @Test
+ void testQuestion3085PageLoads() throws Exception {
+ mockMvc
+ .perform(get("/questions/3085-Minimum-Deletions-To-Make-String-K-Special"))
+ .andExpect(status().isOk())
+ .andExpect(view().name("questions/3085-Minimum-Deletions-To-Make-String-K-Special"))
+ .andExpect(
+ content()
+ .string(
+ org.hamcrest.Matchers.containsString(
+ "Minimum Deletions To Make String K-Special")));
+ }
+
+ @Test
+ void testHandleQuestion3085Input() throws Exception {
+ // Mocking service result
+ when(minimumDeletionService.getMinimumDeletions("aaaabbbccc", 12)).thenReturn(0);
+
+ mockMvc
+ .perform(
+ post("/questions/3085-Minimum-Deletions-To-Make-String-K-Special")
+ .param("expression", "aaaabbbccc")
+ .param("kValue", "12"))
+ .andExpect(status().isOk())
+ .andExpect(model().attribute("result", "minimum number of deletions: 0"))
+ .andExpect(view().name("questions/3085-Minimum-Deletions-To-Make-String-K-Special"));
+ }
+
+ @Test
+ void testHandleQuestion3085Input_InvalidExpression() throws Exception {
+ // Mocking service to throw an IllegalArgumentException
+ when(minimumDeletionService.getMinimumDeletions("invalid", 12))
+ .thenThrow(new IllegalArgumentException());
+
+ mockMvc
+ .perform(
+ post("/questions/3085-Minimum-Deletions-To-Make-String-K-Special")
+ .param("expression", "invalid")
+ .param("kValue", "12"))
+ .andExpect(status().isOk())
+ .andExpect(model().attribute("result", "Invalid input. Please enter a valid input."))
+ .andExpect(view().name("questions/3085-Minimum-Deletions-To-Make-String-K-Special"));
+ }
+}
diff --git a/src/test/java/dev/stegmaier/leetcode/services/LeetCodeQuestions/Q3085MinimumDeletionServiceTest.java b/src/test/java/dev/stegmaier/leetcode/services/LeetCodeQuestions/Q3085MinimumDeletionServiceTest.java
new file mode 100644
index 0000000..f15cd7f
--- /dev/null
+++ b/src/test/java/dev/stegmaier/leetcode/services/LeetCodeQuestions/Q3085MinimumDeletionServiceTest.java
@@ -0,0 +1,157 @@
+package dev.stegmaier.leetcode.services.LeetCodeQuestions;
+
+import static dev.stegmaier.leetcode.constants.Q3085Constants.STRING_WITH_100000_CHARACTERS;
+import static dev.stegmaier.leetcode.constants.Q3085Constants.STRING_WITH_100001_CHARACTERS;
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.junit.jupiter.api.Test;
+
+class Q3085MinimumDeletionServiceTest {
+
+ private final Q3085MinimumDeletionService q3085MinimumDeletionService =
+ new Q3085MinimumDeletionService();
+
+ @Test
+ void shouldHandleBasicStringWithKValueAsZero() {
+ String inputString = "aabcaba";
+ int inputKValue = 0;
+
+ int result = q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue);
+
+ assertEquals(3, result);
+ }
+
+ @Test
+ void shouldHandleBasicStringWithKValueAsTwo() {
+ String inputString = "dabdcbdcdcd";
+ int inputKValue = 2;
+
+ int result = q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue);
+
+ assertEquals(2, result);
+ }
+
+ @Test
+ void shouldHandleStringWithManyRepeatingCharacters() {
+ String inputString = "aaabaaa";
+ int inputKValue = 2;
+
+ int result = q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue);
+
+ assertEquals(1, result);
+ }
+
+ /*
+ @Test
+ void exceptionTesting() {
+ MyException thrown = assertThrows(
+ MyException.class,
+ () -> myObject.doThing(),
+ "Expected doThing() to throw, but it didn't"
+ );
+
+ assertTrue(thrown.getMessage().contains("Stuff"));
+ }
+ */
+ @Test
+ void shouldNotHandleStringOver100000CharactersLong() {
+ String inputString = STRING_WITH_100001_CHARACTERS;
+ int inputKValue = 0;
+
+ IllegalArgumentException illegalArgumentException =
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when a string with more than 100,000 characters was provided");
+
+ assertEquals(
+ "expression length exceeds 10⁵",
+ illegalArgumentException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when a string with more than 100,000 characters was provided");
+ }
+
+ @Test
+ void shouldNotHandleStringLessThanOneCharacterInLength() {
+ String inputString = "";
+ int inputKValue = 0;
+
+ IllegalArgumentException illegalArgumentException =
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when a string smaller than 1 character was provided");
+
+ assertEquals(
+ "expression length less than 1",
+ illegalArgumentException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when a string smaller than 1 character was provided");
+ }
+
+ @Test
+ void shouldNotHandleKValueOver100000() {
+ String inputString = STRING_WITH_100000_CHARACTERS;
+ int inputKValue = 100001;
+
+ IllegalArgumentException illegalArgumentException =
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when a K value greater than 100,000 was provided");
+
+ assertEquals(
+ "K value provided is greater than 10⁵",
+ illegalArgumentException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when a K value greater than 100,000 was provided");
+ }
+
+ @Test
+ void shouldNotHandleKValueLessThanZero() {
+ String inputString = "aabbcc";
+ int inputKValue = -1;
+
+ IllegalArgumentException illegalArgumentException =
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when a K value less than zero was provided");
+
+ assertEquals(
+ "K value provided is less than 0",
+ illegalArgumentException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when a K value less than zero was provided");
+ }
+
+ @Test
+ void shouldNotHandleNullString() {
+ String inputString = null;
+ int inputKValue = 0;
+
+ NullPointerException nullPointerException =
+ assertThrows(
+ NullPointerException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when a null string was provided");
+
+ assertEquals(
+ "expression is somehow null",
+ nullPointerException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when a null string was provided");
+ }
+
+ @Test
+ void shouldNotHandleNumericCharacters() {
+ String inputString = "aabbcc12345abc";
+ int inputKValue = 0;
+
+ IllegalArgumentException illegalArgumentException =
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> q3085MinimumDeletionService.getMinimumDeletions(inputString, inputKValue),
+ "Expected q3085MinimumDeletionService to throw an exception when an invalid string was provided");
+
+ assertEquals(
+ "Expression does not contain only lowercase letters",
+ illegalArgumentException.getMessage(),
+ "q3085MinimumDeletionService did not throw the correct exception message when an invalid string was provided");
+ }
+}
diff --git a/src/test/java/dev/stegmaier/leetcode/services/QuestionServiceTest.java b/src/test/java/dev/stegmaier/leetcode/services/QuestionServiceTest.java
index 8b88d3d..ab5cbb8 100644
--- a/src/test/java/dev/stegmaier/leetcode/services/QuestionServiceTest.java
+++ b/src/test/java/dev/stegmaier/leetcode/services/QuestionServiceTest.java
@@ -16,10 +16,10 @@ void testGetAllQuestions() {
List