From 9c27325f1ecf991c1b523683bc6b45b61f7f16a6 Mon Sep 17 00:00:00 2001 From: Andrei Lapets Date: Wed, 22 Nov 2023 03:34:22 -0500 Subject: [PATCH] Increase supported range to 1025 bits; keep data compressed; update doctests. --- src/sophiegermain/sophiegermain.py | 1298 ++++++++++++++++++++++------ 1 file changed, 1037 insertions(+), 261 deletions(-) diff --git a/src/sophiegermain/sophiegermain.py b/src/sophiegermain/sophiegermain.py index e17fca5..9a4ed85 100644 --- a/src/sophiegermain/sophiegermain.py +++ b/src/sophiegermain/sophiegermain.py @@ -1,266 +1,1037 @@ """ Pure-Python library that provides a selection of Sophie Germain primes. """ +# pylint: disable=too-many-lines from __future__ import annotations import doctest +import base64 +import zlib -_DATA = [ - 2, - 5, - 11, - 23, - 41, - 83, - 131, - 281, - 593, - 1031, - 2063, - 4211, - 8243, - 16421, - 32771, - 65633, - 131321, - 262193, - 524351, - 1048889, - 2097629, - 4194581, - 8388953, - 16777259, - 33554771, - 67108913, - 134218433, - 268435631, - 536871311, - 1073741891, - 2147483693, - 4294967681, - 8589934631, - 17179869659, - 34359738701, - 68719477223, - 137438954063, - 274877907599, - 549755814221, - 1099511627933, - 2199023256029, - 4398046511483, - 8796093023213, - 17592186049073, - 35184372090953, - 70368744178451, - 140737488355781, - 281474976711419, - 562949953423283, - 1125899906843669, - 2251799813686211, - 4503599627370533, - 9007199254741931, - 18014398509485351, - 36028797018965483, - 72057594037930223, - 144115188075860453, - 288230376151712453, - 576460752303424853, - 1152921504606849959, - 2305843009213697249, - 4611686018427389243, - 9223372036854777359, - 18446744073709552109, - 36893488147419109379, - 73786976294838207473, - 147573952589676413429, - 295147905179352827039, - 590295810358705651829, - 1180591620717411304553, - 2361183241434822608669, - 4722366482869645217633, - 9444732965739290427683, - 18889465931478580854821, - 37778931862957161712463, - 75557863725914323420571, - 151115727451828646838329, - 302231454903657293676719, - 604462909807314587354183, - 1208925819614629174707521, - 2417851639229258349412871, - 4835703278458516698825341, - 9671406556917033397651433, - 19342813113834066795305219, - 38685626227668133590607079, - 77371252455336267181202381, - 154742504910672534362395373, - 309485009821345068724782539, - 618970019642690137449563171, - 1237940039285380274899129853, - 2475880078570760549798248679, - 4951760157141521099596501601, - 9903520314283042199193000359, - 19807040628566084398385994563, - 39614081257132168796771976611, - 79228162514264337593543956823, - 158456325028528675187087901683, - 316912650057057350374175806433, - 633825300114114700748351608643, - 1267650600228229401496703206331, - 2535301200456458802993406417403, - 5070602400912917605986812835131, - 10141204801825835211973625644709, - 20282409603651670423947251286503, - 40564819207303340847894502575599, - 81129638414606681695789005145439, - 162259276829213363391578010293519, - 324518553658426726783156020581003, - 649037107316853453566312041155083, - 1298074214633706907132624082307923, - 2596148429267413814265248164620191, - 5192296858534827628530496329221303, - 10384593717069655257060992658447431, - 20769187434139310514121985316888389, - 41538374868278621028243970633779923, - 83076749736557242056487941267521963, - 166153499473114484112975882535050719, - 332306998946228968225951765070090999, - 664613997892457936451903530140177493, - 1329227995784915872903807060280346971, - 2658455991569831745807614120560695413, - 5316911983139663491615228241121381713, - 10633823966279326983230456482242769583, - 21267647932558653966460912964485517069, - 42535295865117307932921825928971026843, - 85070591730234615865843651857942057263, - 170141183460469231731687303715884111953, - 340282366920938463463374607431768219863, - 680564733841876926926749214863536425363, - 1361129467683753853853498429727072846803, - 2722258935367507707706996859454145700069, - 5444517870735015415413993718908291383453, - 10889035741470030830827987437816582769769, - 21778071482940061661655974875633165538621, - 43556142965880123323311949751266331069263, - 87112285931760246646623899502532662140501, - 174224571863520493293247799005065324273251, - 348449143727040986586495598010130648534839, - 696898287454081973172991196020261297063421, - 1393796574908163946345982392040522594127869, - 2787593149816327892691964784081045188258829, - 5575186299632655785383929568162090376508863, - 11150372599265311570767859136324180752993673, - 22300745198530623141535718272648361505983651, - 44601490397061246283071436545296723011976483, - 89202980794122492566142873090593446023927983, - 178405961588244985132285746181186892047846859, - 356811923176489970264571492362373784095702209, - 713623846352979940529142984724747568191374089, - 1427247692705959881058285969449495136382756861, - 2854495385411919762116571938898990272765495201, - 5708990770823839524233143877797980545530992191, - 11417981541647679048466287755595961091061979379, - 22835963083295358096932575511191922182123979213, - 45671926166590716193865151022383844364247901541, - 91343852333181432387730302044767688728495788053, - 182687704666362864775460604089535377456991591479, - 365375409332725729550921208179070754913983137071, - 730750818665451459101842416358141509827966329493, - 1461501637330902918203684832716283019655932553531, - 2923003274661805836407369665432566039311865088571, - 5846006549323611672814739330865132078623730180659, - 11692013098647223345629478661730264157247460345371, - 23384026197294446691258957323460528314494920700493, - 46768052394588893382517914646921056628989841393013, - 93536104789177786765035829293842113257979682754401, - 187072209578355573530071658587684226515959365503691, - 374144419156711147060143317175368453031918731015723, - 748288838313422294120286634350736906063837462027973, - 1496577676626844588240573268701473812127674924033903, - 2993155353253689176481146537402947624255349848026329, - 5986310706507378352962293074805895248510699696042981, - 11972621413014756705924586149611790497021399392064843, - 23945242826029513411849172299223580994042798784144939, - 47890485652059026823698344598447161988085597568266953, - 95780971304118053647396689196894323976171195136479403, - 191561942608236107294793378393788647952342390273013611, - 383123885216472214589586756787577295904684780545913379, - 766247770432944429179173513575154591809369561091801589, - 1532495540865888858358347027150309183618739122183605753, - 3064991081731777716716694054300618367237478244367232561, - 6129982163463555433433388108601236734474956488734416079, - 12259964326927110866866776217202473468949912977468821119, - 24519928653854221733733552434404946937899825954937637409, - 49039857307708443467467104868809893875799651909875275863, - 98079714615416886934934209737619787751599303819750542121, - 196159429230833773869868419475239575503198607639501080049, - 392318858461667547739736838950479151006397215279002176689, - 784637716923335095479473677900958302012794430558004317013, - 1569275433846670190958947355801916604025588861116008630589, - 3138550867693340381917894711603833208051177722232017264419, - 6277101735386680763835789423207666416102355444464034530021, - 12554203470773361527671578846415332832204710888928069026893, - 25108406941546723055343157692830665664409421777856138068283, - 50216813883093446110686315385661331328818843555712276106921, - 100433627766186892221372630771322662657637687111424552210921, - 200867255532373784442745261542645325315275374222849104414769, - 401734511064747568885490523085290650630550748445698208831021, - 803469022129495137770981046170581301261101496891396417742791, - 1606938044258990275541962092341162602522202993782792835304761, - 3213876088517980551083924184682325205044405987565585670606883, - 6427752177035961102167848369364650410088811975131171341206081, - 12855504354071922204335696738729300820177623950262342682426881, - 25711008708143844408671393477458601640355247900524685364835589, - 51422017416287688817342786954917203280710495801049370729649531, - 102844034832575377634685573909834406561420991602098741459293393, - 205688069665150755269371147819668813122841983204197482918591959, - 411376139330301510538742295639337626245683966408394965837154033, - 822752278660603021077484591278675252491367932816789931674307953, - 1645504557321206042154969182557350504982735865633579863348624211, - 3291009114642412084309938365114701009965471731267159726697282233, - 6582018229284824168619876730229402019930943462534319453394443453, - 13164036458569648337239753460458804039861886925068638906788875909, - 26328072917139296674479506920917608079723773850137277813577748591, - 52656145834278593348959013841835216159447547700274555627155506123, - 105312291668557186697918027683670432318895095400549111254311011449, - 210624583337114373395836055367340864637790190801098222508621958639, - 421249166674228746791672110734681729275580381602196445017243913631, - 842498333348457493583344221469363458551160763204392890034487835021, - 1684996666696914987166688442938726917102321526408785780068975651923, - 3369993333393829974333376885877453834204643052817571560137951281233, - 6739986666787659948666753771754907668409286105635143120275902562431, - 13479973333575319897333507543509815336818572211270286240551805128049, - 26959946667150639794667015087019630673637144422540572481103610259051, - 53919893334301279589334030174039261347274288845081144962207220503193, - 107839786668602559178668060348078522694548577690162289924414441007359, - 215679573337205118357336120696157045389097155380324579848828882001951, - 431359146674410236714672241392314090778194310760649159697657763995341, - 862718293348820473429344482784628181556388621521298319395315527975539, - 1725436586697640946858688965569256363112777243042596638790631055971743, - 3450873173395281893717377931138512726225554486085193277581262111925433, - 6901746346790563787434755862277025452451108972170386555162524223820243, - 13803492693581127574869511724554050904902217944340773110325048447633719, - 27606985387162255149739023449108101809804435888681546220650096895207373, - 55213970774324510299478046898216203619608871777363092441300193790465963, - 110427941548649020598956093796432407239217743554726184882600387580792433, - 220855883097298041197912187592864814478435487109452369765200775161583019, - 441711766194596082395824375185729628956870974218904739530401550323171253, - 883423532389192164791648750371459257913741948437809479060803100646332271, - 1766847064778384329583297500742918515827483896875618958121606201292630001, - 3533694129556768659166595001485837031654967793751237916243212402585247763, - 7067388259113537318333190002971674063309935587502475832486424805170494603, - 14134776518227074636666380005943348126619871175004951664972849610340959741, - 28269553036454149273332760011886696253239742350009903329945699220681938479, - 56539106072908298546665520023773392506479484700019806659891398441363833771, - 113078212145816597093331040047546785012958969400039613319782796882727676003, - 226156424291633194186662080095093570025917938800079226639565593765455337961, - 452312848583266388373324160190187140051835877600158453279131187530910665321, - 904625697166532776746648320380374280103671755200316906558262375061821345571, - 1809251394333065553493296640760748560207343510400633813116524750123642671019, - 3618502788666131106986593281521497120414687020801267626233049500247285305403, - 7237005577332262213973186563042994240829374041602535252466099000494570629089, - 14474011154664524427946373126085988481658748083205070504932198000989141205031, - 28948022309329048855892746252171976963317496166410141009864396001978282508223, - 57896044618658097711785492504343953926634992332820282019728792003956564935063, - 115792089237316195423570985008687907853269984665640564039457584007913129658411 +_DATA: list[bytes] = [ + b'eNpjAgAAAwAD', + b'eNpjBQAABgAG', + b'eNrjBgAADAAM', + b'eNoTBwAAGAAY', + b'eNrTBAAAKgAq', + b'eNoLBgAAVABU', + b'eNprZgAAAQgAhA==', + b'eNqTZAQAADUAGw==', + b'eNoLZAIAAKYAVA==', + b'eNpjZwEAABQADA==', + b'eNrj5wAAACgAGA==', + b'eNorFgAAAPgAhA==', + b'eNozVgAAAIgAVA==', + b'eNpTdQAAAIwAZg==', + b'eNpjbmAAAAEMAIQ=', + b'eNpLZGAEAAEnAGM=', + b'eNr7ycAEAALwAPw=', + b'eNozZGABAACaADY=', + b'eNqzZ+AAAADIAEg=', + b'eNqzZBQAAADAAEs=', + b'eNq7y6gAAAK8AP8=', + b'eNoTZXQAAACEAFc=', + b'eNqLZGxgAAACawDb', + b'eNrTZmBgBAAAsQAt', + b'eNoLZmRgAgABVQBX', + b'eNozZGBgAQAAzAA2', + b'eNo7yMTAAQADFgDM', + b'eNpbz8AgAAAC0ADA', + b'eNrrZ2RQAAACYwCx', + b'eNpzZmBwAAABUACE', + b'eNrTZWBoYAAAAeYArg==', + b'eNprZGRgYAQAAo8AhA==', + b'eNpTZ2BgYAIAAMoAKg==', + b'eNq7zcjAwAIABFQA4Q==', + b'eNrzZWRg4AAAAZIAVw==', + b'eNp7zsjAIAAABJwA+Q==', + b'eNrzZ2JgUAAAAbgAcg==', + b'eNrrZ2JgcAAAAxgA0g==', + b'eNrzZWRgaGAAAALZAM8=', + b'eNqbywAEjAADtQCf', + b'eNq7y8jAwMAEAAU7AOE=', + b'eNqrZmRgYGABAALxAIE=', + b'eNp7y8zAwMABAAWrAPk=', + b'eNozFGJgYBAAAAGWAFQ=', + b'eNrz5GBgYFAAAAIEAHI=', + b'eNoTZmZgYHAAAADHAFc=', + b'eNo7ysjAwNDAAAAGcAFH', + b'eNr7zcQABIwABvEA/w==', + b'eNrbzM4ABEwABRgAvQ==', + b'eNoTZWEAAhYAALYAHg==', + b'eNo7zMwABBwABXYAzw==', + b'eNpTZQABAQABGgA2', + b'eNpbzcwABAoABOYAzw==', + b'eNpT52UAAgcAAaYAdQ==', + b'eNp7zcoABA0MAAiDAXE=', + b'eNp7z8EAAowAB7kA+Q==', + b'eNp7KsgAAkwAB6kA+Q==', + b'eNo7ysQAAiwABkIAzA==', + b'eNoLZWUAAQ4AAtsAYw==', + b'eNpbzs0AAgIABZ0Aww==', + b'eNp7yMMAAgoAB4QBDg==', + b'eNqzZmUAAQcAAkMAgQ==', + b'eNrjZ2MAgQYGAAHAAJY=', + b'eNp7y8gABowACGcA8A==', + b'eNpjlmAAAyYAAOYAHg==', + b'eNr7yMwABiwACJ4A+Q==', + b'eNr7ysgABhwACLYA/w==', + b'eNqbz8IABgIABdAAtA==', + b'eNorZYAABQAERgCW', + b'eNrLZGEAAwcABBoArg==', + b'eNqTZWcAgwYGAAJrAKU=', + b'eNpL5GeAAEYABFwAcg==', + b'eNpTZmSAACYAAXMAJw==', + b'eNpTZYACFgABgAAq', + b'eNrz52aAAA4AA4sAYw==', + b'eNqbzcoAAQIABlUAsQ==', + b'eNqzZIACBQACZABa', + b'eNpbzwAFDgAHIADw', + b'eNpzZ2GAgAYGAARAAMw=', + b'eNpzZGWAAkYAAwkASA==', + b'eNpjZ2KAAiYAAG4ADA==', + b'eNqrZWKAAhYABYIAhA==', + b'eNp7yc4ABRwAClwA+Q==', + b'eNpjlmSAAgEAATYALQ==', + b'eNp7rsIABQoAC4ABLA==', + b'eNo7K80ABQ4ACigBKQ==', + b'eNp7K8QABQ0MAAzuAYA=', + b'eNo7zcoAA4wACcgA0g==', + b'eNpTZmGAASYAAd4AKg==', + b'eNr7K8oAAywADNMBFw==', + b'eNp7zgAHHAAK6ADw', + b'eNpLFGKAAQEABW4AhA==', + b'eNpbLskAAwoACRMA4Q==', + b'eNpzlmaAAQcABJkAnw==', + b'eNpbzMoAAw0MAAmQASk=', + b'eNoLl2SAA0YABaUAcg==', + b'eNr7zMwAB0wADIoA+Q==', + b'eNp7KMwABywADGIA+Q==', + b'eNpzFmeAAw4ABJAAYw==', + b'eNrbzcwABwIACcAAzw==', + b'eNr7LckABwoADhgBNQ==', + b'eNqzNmWAAwcABcgAsQ==', + b'eNpbysYABw0MAApiASw=', + b'eNp7zsiAAIwADL4A6g==', + b'eNp7z8uAAEwADcsA/w==', + b'eNqLZ2VAABYABYUAaQ==', + b'eNrjF2VAAA4AAfkALQ==', + b'eNrrFmJAAAEACKIArg==', + b'eNrj5mJAAAUAAUoANg==', + b'eNoL5mZAAAcABWcAnw==', + b'eNqbr86AAA0MAAyCAUc=', + b'eNrbzsKABBgBCwEAvQ==', + b'eNpzl2FAAkwABcIAZg==', + b'eNpzlWdAAiwABdAAaQ==', + b'eNq77MWABDgAEIABJg==', + b'eNpbzciABAQACjIAvQ==', + b'eNq7L8uABBQADtYBHQ==', + b'eNr7LsSABBwAD8QBSg==', + b'eNoLFWFAAg0MAAeMAOo=', + b'eNqL5mRABowABkgAZg==', + b'eNorlWBABkwACMoAkA==', + b'eNoL5GVABiwABecAYw==', + b'eNpbb8SADDgADfYA6g==', + b'eNrj5WdABgIAAdEALQ==', + b'eNqbzciADBQACe8AvQ==', + b'eNrTF2RABg4ABD8AgQ==', + b'eNoLlGBABg0MAAfyAOo=', + b'eNq7rsCAAhgBEFkA+Q==', + b'eNqbzMmAApgACmYAnw==', + b'eNq7zMyAAlgADkgA2w==', + b'eNp7qsCAAjgAEU4BDg==', + b'eNqby4AKBAAKjgCu', + b'eNrL5GFAAQoAB+oAlg==', + b'eNqzFWVAAQ4ABa4Akw==', + b'eNrz52ZAAQ0MAAdbANs=', + b'eNoLlWNABYwACAsAdQ==', + b'eNpLlmNABUwACQgAhA==', + b'eNoz52dABSwABPMASw==', + b'eNr7y8qACjgAEjkBCw==', + b'eNr7y8+ACgQAEusBHQ==', + b'eNrj1WFABQoABAgAWg==', + b'eNrbb8qAChwAEUUBNQ==', + b'eNrr5GVABQ0MAAwoARc=', + b'eNpbzMOABhgBDQUAsQ==', + b'eNpTtmVAA0wABvgAYw==', + b'eNpbL8GABlgADsQAzA==', + b'eNo7zcuABjgAEBYA4Q==', + b'eNo7aMOABgQAEq4BDg==', + b'eNrjZGZAAwoAARQALQ==', + b'eNr7q86ABhwAFdgBZQ==', + b'eNpbyM6ABhoYAA4tASk=', + b'eNqzF2NAB4wABqMAVw==', + b'eNr7LMGADpgAFNoBDg==', + b'eNo728iADlgAGa8BUw==', + b'eNpLVWVABxwACr8Akw==', + b'eNoTFWBABwIAAvgANg==', + b'eNozj2FABwoAC1QAtA==', + b'eNrTZ2VABw4ABF8AdQ==', + b'eNqb+ogBHTQwAAAe9gH4', + b'eNqz1mTAAIwACCEAZg==', + b'eNqz5mLAAEwABbYASA==', + b'eNozVmLAACwABvAAWg==', + b'eNqTZmPAABwAAswAKg==', + b'eNrzNWLAAAIACl4AkA==', + b'eNordWXAAAoADzIA2w==', + b'eNpL5GfAAA4ACXYAsQ==', + b'eNo7zcWAARoYABNaAVY=', + b'eNrTNmPABIwACDcAYw==', + b'eNo7GseACZgAGLwBJg==', + b'eNrLT2fABCwAEhcA2w==', + b'eNq7qcOACTgAFmABDg==', + b'eNp7asyACQQAGAMBKQ==', + b'eNrzFmXABAoACGEAgQ==', + b'eNrTTmPABA4ADGYA0g==', + b'eNo7WcSACRoYABzyAbw=', + b'eNpbLcCABTACABDVAL0=', + b'eNrL/s6ABTABAB7wAWU=', + b'eNpTNmLAAlgAB4wAWg==', + b'eNr7ysiABXAAABY4AP8=', + b'eNr7ycuABQgAABekARc=', + b'eNozzGPAAhQADhIAwA==', + b'eNo7L8OABTgAABVYASw=', + b'eNqr52PAAhoYAA5CAQ4=', + b'eNpT5GLABhgBBBcALQ==', + b'eNoLl2DABpgACmoAcg==', + b'eNrT5GbABlgABPEAOQ==', + b'eNr7yMqADXAAABcrAP8=', + b'eNrb6MOADQgAABeUAQ4=', + b'eNoL5WbABhQACS0AgQ==', + b'eNqz5WTABhwABt8Ahw==', + b'eNpTlmfABhoYAAdsAMM=', + b'eNp76sSAFTACABynASk=', + b'eNrzZWHACpgACAAAVA==', + b'eNqzdmTAClgAC/gAgQ==', + b'eNpbyceAFXAAABHyAMA=', + b'eNp7KciAFQgAABiCAQs=', + b'eNoz5GDAChQABcIAWg==', + b'eNrTFWPAChwABs4AhA==', + b'eNo7ns7IgA00MAAAH3cBsA==', + b'eNqz5GXADhgBByoASA==', + b'eNpTFmDADpgABToANg==', + b'eNpzZGLADlgABuoASA==', + b'eNpjtGPADjgABkoASA==', + b'eNpjNWXADgQABdkASw==', + b'eNqrFmXADhQADsUAsQ==', + b'eNq7KMKAHTgAABeIASY=', + b'eNq7bsuAHTQwAAAd+gGV', + b'eNr7yMaAAzACABojAPk=', + b'eNor5GXAAZgADVoAgQ==', + b'eNoLtmbAAVgADt4Akw==', + b'eNrb+YsBB+AAAC0KAbw=', + b'eNrbK8OAAwgAABbyAOo=', + b'eNpr5WPAARQAD64AtA==', + b'eNrLF2DAARwADbAAwA==', + b'eNo77cyAAzQwAAAeYQGP', + b'eNqrbGHABRgBG0UA/w==', + b'eNp7z8uACzABABuhAP8=', + b'eNqbz8uAC7AAABLjALE=', + b'eNrrtWTABTgAFZMAzw==', + b'eNoL1mHABQQADeQAkA==', + b'eNoLZMAJFAAJGABy', + b'eNqrZ8AJHAAOQADA', + b'eNor5GXABRoYAA9WAP8=', + b'eNrLVmPACRgBEGUAkw==', + b'eNqbKcSAEzABABNsAK4=', + b'eNr7r8GAE7AAACFkASw=', + b'eNqTV2DACTgABygASA==', + b'eNo7K8eAEwgAABquAPw=', + b'eNorZmLACRQADXwAlg==', + b'eNqbH8qAEzgAABusATU=', + b'eNrbmcKAEzQwAAAiIAGe', + b'eNq7HMiAGzACACIGASY=', + b'eNoz72TADZgAFhcAww==', + b'eNo7q86AG7AAAByTAPk=', + b'eNpbLc7IgBNwAAAW5wDM', + b'eNor5GPADQQADwIAkA==', + b'eNpbLcqAGygAABapAOE=', + b'eNrbas+AGzgAABy3ATU=', + b'eNrLD2fADRoYABjCAUc=', + b'eNr7qM6ABzACACHhARo=', + b'eNoTVmDAA5gABi4ANg==', + b'eNrrtmHAA1gAGAAAzA==', + b'eNr7y8qAB3AAAB9gAQs=', + b'eNrTD2PAAwQAD/QAlg==', + b'eNpbzcyABygAABVOAM8=', + b'eNpL1mDAAxwAEQwAzA==', + b'eNp7KcmABzQwAAAhRwGD', + b'eNrL5GLABxgBDncAdQ==', + b'eNpT9mfAB5gADhMAdQ==', + b'eNpb7c+AD7AAAB8VAP8=', + b'eNqzFmDABzgACXgAVA==', + b'eNp7mM6ADwgAACjJAVk=', + b'eNpTZ8ALFAAFIABI', + b'eNrbX8/IgAc4AAAnvwGA', + b'eNqbfpCRAQ9oYAAALNcB2g==', + b'eNrT9mDACxgBDq0AdQ==', + b'eNoLTmfAC5gAF7YAvQ==', + b'eNpzTWfAC1gAFeoAsQ==', + b'eNpznM6AF3AAABtqAOE=', + b'eNqzVmPACwQADIwAcg==', + b'eNqzD2HACxQAEuAAtA==', + b'eNqrl2bACxwAFCAA2w==', + b'eNp7LsGAFzQwAAAi6AGA', + b'eNr7acWAHzACACivATU=', + b'eNr7yMqAHzABACDLAPk=', + b'eNrrb2PAD1gAJGoBGg==', + b'eNrTrGHADzgAFZgArg==', + b'eNr7bMKAHwgAACcsATg=', + b'eNq7qsiAHygAACDNARc=', + b'eNr7bcqAHzgAACiNAXE=', + b'eNpLFGfADxoYABF0APk=', + b'eNrrzWIgABgBIX8A+Q==', + b'eNrbycJAADABABn4AMA=', + b'eNor1WYgAFgAFdwApQ==', + b'eNpL3c1AAHAAACbQASk=', + b'eNqTzGQgAAQAEZAAkw==', + b'eNqL5mAgABQADcQAhA==', + b'eNrbac1AADgAACGEATU=', + b'eNpT5WYgABoYAAfZALE=', + b'eNrbmc1ACDACACjKASY=', + b'eNqTtGYgBJgAC7sAVw==', + b'eNoTlWNkIABYAAdYADk=', + b'eNpjZGIgBDgAAJYADA==', + b'eNp7ysHIQAAIAAAhogD/', + b'eNrbGM5ACCgAACUNASk=', + b'eNrrjmUgBBwAIKcBKQ==', + b'eNpbmMJACDQwAAAmegGG', + b'eNp7v5mBIGAEADvdAaQ=', + b'eNrjFGIgCJgAA/wAHg==', + b'eNqby8NAELAAABiKAK4=', + b'eNrTlGQgCDgACZ4ASw==', + b'eNrzLWQgCAQAGzoAzw==', + b'eNp77ctAECgAAC0QAVk=', + b'eNrbf4iBIHAAADdIAcI=', + b'eNq7/ZOBIGhgAABFpQJV', + b'eNprZGEgDBgBE+EAhw==', + b'eNpbKcDIQBAwAQAbsgC9', + b'eNo7+oWRgSBgAQBA0AG/', + b'eNqbG8lAGHAAACRZAP8=', + b'eNp7b8FAGAgAACvIATg=', + b'eNprf8VAGCgAADYiAZI=', + b'eNorvs1AGDgAADEfAY8=', + b'eNoTNGBkIAgaGAALAwDD', + b'eNpjDmUgAjACAA07AFo=', + b'eNr7f4+BCMAEAEf2AeA=', + b'eNr7O4GBCMACADwWAZI=', + b'eNo7vpCBCMABADZmAXE=', + b'eNr7nMtABBAAADVqAXE=', + b'eNoTf8RABFAAACVUARo=', + b'eNq7KMJABHAAACM2ASY=', + b'eNoTVmAgAjQwAAAJAAC0', + b'eNr7f56RgQjACABHsAHR', + b'eNpbbshADGACACG5ANs=', + b'eNrzTGMgBrAAABseALQ=', + b'eNpTrmQgBnAAABgXAKU=', + b'eNrbrsjIQAQQAAAh/QDq', + b'eNqTF2cgBigAAAihAFc=', + b'eNp7P5uBGOAAAD1dAcs=', + b'eNr7LcTIQARoYAAALFMBjw==', + b'eNq7b8ZAFGAEACxRARc=', + b'eNozFmIgCjABAAsmAEg=', + b'eNo7+JyBKMACAEMuAa0=', + b'eNpbf46BKMABADxoAYY=', + b'eNpLtmUgCggAABmcALE=', + b'eNq7HsdAFFAAADFoAVY=', + b'eNqbe56BKOAAADnmAa0=', + b'eNpzPs1AFGhgAAAsqwGP', + b'eNozFmMgDjACAAwPAEs=', + b'eNqbycxAHGACABnBAJ8=', + b'eNr7Ls1AHGABAC0HARc=', + b'eNpTncpAHOAAAB4hAMM=', + b'eNr7HMLIQBQQAAA1tAFZ', + b'eNr7KsBAHFAAACsMASY=', + b'eNor5mEgDjgAABU0AMA=', + b'eNrTlWMgDjQwAAANpgDM', + b'eNpzXsXIQBxgBAAnegDw', + b'eNrTN2EgEjABABCaAGY=', + b'eNr7vYeBSMACAEkwAbw=', + b'eNq7LsNAJOAAACjoAPw=', + b'eNrT5WUgEggAAAnsAEs=', + b'eNrrt2UgEigAACJSAO0=', + b'eNrbHMxAJHAAACwaAUc=', + b'eNpzVmMgEjQwAAATEgDq', + b'eNrbacvIQCRgBAAqYgD5', + b'eNo7r83EQCRgAgArTwD/', + b'eNoLtmAgFrAAABfcAJA=', + b'eNpr92YgFnAAACQBANs=', + b'eNrjzmAgFggAABOYAIQ=', + b'eNr7rMDIQCRQAAAvmgE1', + b'eNorTWcgFjgAACXVAR0=', + b'eNrjDmUgFjQwAAARuADh', + b'eNpLl2MgGjACABdxAIc=', + b'eNqb7shANGACACXmANs=', + b'eNpjXslANGABAB3EALE=', + b'eNqrtmBkIBZwAAAfnwC9', + b'eNpbmsTEQCwQAAAubAEa', + b'eNorTWVkIBYoAAAmZQD8', + b'eNo7zMHEQCxwAAAkagEO', + b'eNrr1mEgGjQwAAAh5AE4', + b'eNpT1WUgHjACAA6+AFQ=', + b'eNpzzWEgHjABAB+SALQ=', + b'eNr7OYWBeMACAEb0AZI=', + b'eNozTWBkIBpwAAAayACf', + b'eNr7LsRAPBAAAC/KARo=', + b'eNqzF2RkIBooAAAOyQBy', + b'eNqTPMNAPHAAACjIASY=', + b'eNozvMPIQDRoYAAAMeMBjw==', + b'eNqbOZORgXjACAA38gE1', + b'eNqTdmdkIB4wAQASFQBm', + b'eNr7rstAAmABADWiASk=', + b'eNo7+ZOBBMABAFHcAcs=', + b'eNqz3MjIQDwQAAAqsQD8', + b'eNor9GcgASgAACNAAOE=', + b'eNpTZGQgATgAAAasAGM=', + b'eNrrns7IQDxoYAAANycBpA==', + b'eNr7G85ACmAEAD+aAVY=', + b'eNpLzGAgBTABACV6AMw=', + b'eNqrNmQgBbAAACBDALE=', + b'eNq7KMZACuAAACtyAPA=', + b'eNq77cNAChAAADdEATg=', + b'eNprD2NkIAEoAAApmAD/', + b'eNqzVWQgBTgAABHvAJ8=', + b'eNoLbGcgBTQwAAAqAgFZ', + b'eNpz7mIgCTACACblAM8=', + b'eNoz3sjMQApgAgArswDq', + b'eNqbHMFAEmABACzYAPA=', + b'eNrbbcXIQArgAAAvEwD/', + b'eNqbe4mBJCAAAEWuAYA=', + b'eNpLVmQgCSgAABl0AKU=', + b'eNpbbMTIQApwAAApMwEX', + b'eNp7vJWBJNDAAABQLQIZ', + b'eNq7GsRAGmAEADl/ASk=', + b'eNrbuYSJgSTABABEGgFi', + b'eNpjlWUgDbAAAAa9ACc=', + b'eNqbHsNAGuAAAC9UAPw=', + b'eNpzXcxAGhAAACzvAPk=', + b'eNpbGshAGlAAADANARc=', + b'eNp7WczIQBJwAABEJwGe', + b'eNrb2MhAGmhgAAA9qAGz', + b'eNqrrWIgETACADDvAPk=', + b'eNp7epqBRMAEAFV6AbM=', + b'eNoLnsjIQBpgAQAtQwDq', + b'eNqrFGQgEXAAABuoAJM=', + b'eNpzjmIgEQgAAB8wAK4=', + b'eNq7v4SBRKAAAEzIAaQ=', + b'eNrzVWYgETgAABagALE=', + b'eNp7a8fIQBpoYAAAPeQBrQ==', + b'eNorncfEQCJgBAA31wEX', + b'eNpb3s1AKmACAD3TATU=', + b'eNoL3ctAKmABADcjARc=', + b'eNrbuoGNgUTAAQBJPAF0', + b'eNo7epORgUQgAABTtQGw', + b'eNpbWcPIQCJQAAA7jgFH', + b'eNoLnMVAKnAAAC+WASw=', + b'eNrbqM/IQCJoYAAAL5kBYg==', + b'eNr7/YmBZMAIAGVVAe8=', + b'eNrTTGEgGTABAB0EAJA=', + b'eNoTrGUgGbAAAB0iAJM=', + b'eNpTNmNkIBVwAAASpwBj', + b'eNpbzsnEQCoQAAAlEgDD', + b'eNp76MFAMlAAAD2KAUo=', + b'eNpLX8RAMnAAADawAUo=', + b'eNoL9WVmIBU0MAAAI7EBJg==', + b'eNpr9GViIBkwAgArxgDS', + b'eNoTX8ZAOmACACdwAMA=', + b'eNprZGBkIBmwAAAbpACH', + b'eNrL/shAOuAAAEi1AWU=', + b'eNp7zsbIQDIQAAAycgD/', + b'eNrjvs9AOlAAADDTAQs=', + b'eNordGFmIBk4AAAm/AD5', + b'eNrrZGZkIBk0MAAAH30BDg==', + b'eNor52AgAzACABt5AIE=', + b'eNrb6MXIQDpgAgA2EQD/', + b'eNrzlGAgA7AAABT6AGY=', + b'eNoL3MtABuAAADmEARc=', + b'eNrbPZuRgXQgAABJWwFo', + b'eNp7eIqJgXSgAABbtAHO', + b'eNpT/8tABnAAAD42AWU=', + b'eNq7ycdABmhgAAAzsgFo', + b'eNr7/YuRgQzACABtDQH4', + b'eNrj1GUgBzABAAvdADk=', + b'eNp7a8VADmABAECKASw=', + b'eNprVGEgB3AAACQ0AK4=', + b'eNqrf8hADhAAAExnAXE=', + b'eNpT9GVkIAMoAAAYUQCQ', + b'eNrzPMHIQAZwAAA7ngFT', + b'eNq7as7EQAZoYAAAPRwBjw==', + b'eNpLNGAgCzACACBTAJM=', + b'eNqb2cHEQA5gAgBAegEm', + b'eNpbfYaFgRzAAgBTzAGA', + b'eNqbvIuBLMABAEmsAVY=', + b'eNpTncDGQA4QAAApUADM', + b'eNo7X8vCQA5QAABKpAFx', + b'eNoztWYgCzgAABkuALE=', + b'eNqz/89AFmhgAABIRwG/', + b'eNpjdmYgDzACAA/UAEg=', + b'eNr7KMbIQBZgAgA79AEL', + b'eNqTv8rMQBZgAQA3WQD8', + b'eNqrncJAHuAAAD2IARo=', + b'eNpbvZ2RgSwgAABP/wF0', + b'eNqzXMLIQBZQAAAyAAD/', + b'eNo7Wc7KQBZwAABJmwGG', + b'eNqTnM3MQBZoYAAAKscBOA==', + b'eNoz/cpAJmAEAEP1ASw=', + b'eNrTnMzIQB5gAgArNwDA', + b'eNqrfcxAJmABAFB8AWU=', + b'eNr7Kc7IQB7gAAA/FQEa', + b'eNpL/s3EQB4QAABQbAFx', + b'eNozZGUgEygAAAzIAFc=', + b'eNpzFWAgEzgAABQCAJY=', + b'eNoztGVkIA80MAAAGwEA8A==', + b'eNo7r8FALmAEADn5APk=', + b'eNpLb2FiIBMwAQA3QgDw', + b'eNp7v4GBXMACAGDUAaQ=', + b'eNqbPIGBXMABAEPoASw=', + b'eNq7+ZyBXCAAAGhlAdE=', + b'eNqbz83CQCZQAAApEQDP', + b'eNpbO5WBXOAAAEtfAYM=', + b'eNqLncZALmhgAAA6jgF0', + b'eNp7uYORgVzACABjHgGk', + b'eNp7y0A+YAIAOLgA8A==', + b'eNrTV2YgG7AAABOoAFc=', + b'eNrTTGZkIBdwAAAheQCW', + b'eNorn8dANhAAAEGwASY=', + b'eNoTjmEgGygAABp0AJA=', + b'eNpTXM3IQC5wAAAwqQEO', + b'eNqr389ANmhgAABNgwG/', + b'eNqTfs/EQDZgBABANAEO', + b'eNrbvoyJgWzABABUmAFi', + b'eNpbXcrIQDZgAQBFyQEm', + b'eNp7GsXEQDbgAABNpgFK', + b'eNpL3MJAPhAAAEKwASY=', + b'eNpLfcRAPlAAAE6uAWg=', + b'eNqrfMVAPnAAAFWOAaQ=', + b'eNor3cVAPmhgAABLFgGw', + b'eNrjXs5AAWAEACtnALQ=', + b'eNrTz2FkIB8wAQAmNwCf', + b'eNpzl2ZiIB+wAAAYwABp', + b'eNqbv4iBAsABAE6kAUo=', + b'eNrz5WagAAgAABXsAGk=', + b'eNrz7WOgACgAADW2APw=', + b'eNpj1WNkIB84AAANGwB1', + b'eNpL5WKgADQwAAAc9gDw', + b'eNq7+ZCBEsAIAG3gAbw=', + b'eNo7LsvMQAFgAgA53wDq', + b'eNp7LMbIQAFgAQA+rAD/', + b'eNqrVGJkoABwAAAnJACl', + b'eNo7PIWBEiAAAFV8AWg=', + b'eNrLP87EQAFQAABNlQFZ', + b'eNrrZGKgBDgAACM+AMw=', + b'eNrzNGBioAA0MAAAIEgA/A==', + b'eNoTdGNkoAQwAgAWUgBa', + b'eNrLdGFkoAQwAQAsKwCx', + b'eNqbHc3IQAlgAQA+nwD8', + b'eNpTz2egCHAAACXwAJ8=', + b'eNqr7GNioAQIAABDCAEa', + b'eNq7fpmBIqAAAGu4Acs=', + b'eNp7OYmBIuAAAGAqAbw=', + b'eNqb7MnBQAloYAAAO7EBZQ==', + b'eNqrPMXEQBFgBABTPwFH', + b'eNpr72dkoAgwAQBHoQEa', + b'eNpLP8bGQBFgAQBOmgE4', + b'eNpbfYaBMsABAGAsAYA=', + b'eNpTnMXMQBEQAAAwrgDP', + b'eNpjv8hAGVAAADdBAPk=', + b'eNqbv5iBMuAAAFLjAYM=', + b'eNpT1mOgDDQwAAAWSADS', + b'eNr7+pyJgTLACAB8cwHg', + b'eNrrfcJAIWACAF/0AXQ=', + b'eNpT5WJioAywAAANDAA2', + b'eNpj389AIeAAADNeAM8=', + b'eNpbeI6ZgTIgAABgVQGD', + b'eNq7PIGJgTKgAABdPgGG', + b'eNo7vpqBQuAAAGCuAbM=', + b'eNrrD2ZioAw0MAAAPX0BZQ==', + b'eNqbGs7EQCFgBAA/IgDw', + b'eNq72MvIQCFgAgBc8wFi', + b'eNpjDWCgFLAAABaMAFo=', + b'eNor/cZAKeAAAF/CAXQ=', + b'eNprZGGgFAgAACOkAJY=', + b'eNo7ns/EQCFQAABS0QFZ', + b'eNqbW8LIQCFwAABI1gFT', + b'eNozdGVioBA0MAAAIVQA+Q==', + b'eNpzX8zIQClgBAA++ADt', + b'eNrLXM7CQClgAgBJ/AEX', + b'eNpTzGWgGLAAACYiAJM=', + b'eNpjdWVkoBRwAAAUPQBU', + b'eNqTbGegGAgAACruALE=', + b'eNq7KMlAMVAAAD9eAQs=', + b'eNo7mcrEQClwAABSDAFx', + b'eNrjP8HIQCloYAAAO4wBWQ==', + b'eNrb2s3KQDFgBABYkAFH', + b'eNp7rM7IQDFgAgBJIQEO', + b'eNqzfszMQDFgAQBOZwEm', + b'eNr7KMfKQDHgAABLngEd', + b'eNpTnMhAORAAADBxAMM=', + b'eNpT7WSgHCgAAC9xAM8=', + b'eNr7LMrIQDFwAABI5QFK', + b'eNqLlGNhoBg0MAAAIz4A/A==', + b'eNp7nMdABcAIAF1RAVM=', + b'eNpLT2WgAmACADh4AM8=', + b'eNr7m8LEQDlgAQBiWAFo', + b'eNpj/sjEQDngAABDlAD/', + b'eNrLt2FkoBwIAAAvzQC9', + b'eNrrvsHEQDlQAABijgGG', + b'eNrjPMzIQDlwAAA4nQEO', + b'eNrjZmFmoBw0MAAABk4Akw==', + b'eNoTjGZnoAJgBAAgOAB1', + b'eNq7b87IQAXABABOiQEa', + b'eNrzrmGgBmABADfIAMw=', + b'eNo7HslADcABAFD3ASk=', + b'eNrzf85ADSAAAFahAUc=', + b'eNp7a8NADaAAAFO0AUo=', + b'eNp7rcXMQAXgAABPGAFZ', + b'eNrr5WegBmhgAAAttgEd', + b'eNprX8XEQA3ACABXJwE1', + b'eNpT12KgCmACABc6AFQ=', + b'eNrzT2CgCmABADHUALQ=', + b'eNr77sjJQA3AAQBbhwFK', + b'eNoLZWNjoAYQAAAb8ABy', + b'eNqTbmSgClAAACxkAL0=', + b'eNrzNGagCnAAACOyAL0=', + b'eNr7OJuBKqCBAQBzJwIN', + b'eNqTvsBAHcAIAENpAO0=', + b'eNozLeRgoApgAgAyFwCx', + b'eNrbq8dAHcACAEQOAPA=', + b'eNrLvchAHcABAFttAUc=', + b'eNo7ycDIQBUgAAA6vADb', + b'eNprbmKgDlAAAEtaASY=', + b'eNq7LMjIQBXgAABCqQEm', + b'eNr7qsPEQBXQwAAAVlwBpA==', + b'eNp7G8DBQB3ACABfIwFH', + b'eNqbrsDMQB3ABAA2pQC9', + b'eNoL1mJioA5gAQAlVgCE', + b'eNrbP5eBSoADAGWqAWU=', + b'eNrrncVAJSAAAFYuATg=', + b'eNpzX8/MQB2gAABIqQEa', + b'eNrTf8lAJeAAAFGqAVk=', + b'eNoTXcjIQB3QwAAANv0BOA==', + b'eNr7+IqZgUqAEQCNRQHg', + b'eNpbeIeZgUqACQBxbAGD', + b'eNpLPMTIQCXAAgBWPAEp', + b'eNpL52NmoBLgAAAj4ACB', + b'eNqLfszCQCUgAABfCQFT', + b'eNqb+YqBWkABAHJmAaQ=', + b'eNqrZGagFnAAACVZAL0=', + b'eNpb6MBALdDAAABEugFi', + b'eNrrrGdhoBZgBABQYwEO', + b'eNpb/Y2BaoAJAHzGAaQ=', + b'eNr7XMlANcACAG1UAXE=', + b'eNr7uJOBaoADAH++AbM=', + b'eNp7H8rIQC0gAABhxwFW', + b'eNrLNmGgGlAAADAMAMA=', + b'eNpbn8xANeAAAFKUAVM=', + b'eNrbbMtANdDAAABKMQFx', + b'eNrjDGdkoBpgBAAdhABj', + b'eNrLvslAPcAEAGIvAUc=', + b'eNrjd2OgHmABABnyAFo=', + b'eNrb+ZeBeoADAITNAb8=', + b'eNr7ys7IQDUgAABNawEO', + b'eNqTdWOgHlAAAB5SAIQ=', + b'eNqzX8lAPeAAAEaVASk=', + b'eNrz/sZAPdDAAABjaAHC', + b'eNr77cXMQD3ACABlOAFK', + b'eNqbLM7IQD3ABAA0/QCu', + b'eNrLbWVioB5gAQBLFgD5', + b'eNpbG8vFQD3AAQBVEgEd', + b'eNq7yM3MQD0gAABFHwDw', + b'eNpL/8rJQD2gAABtkwGG', + b'eNrLVmJkoB5wAAAsPQDP', + b'eNpLlmagImhgAAAolQD/', + b'eNpbfYORgYqAEQB4twGG', + b'eNo7P5mBmoAJAG5fAWU=', + b'eNo7HMjCQEXAAgBXewEd', + b'eNqrXcZATcABAFqiASw=', + b'eNo7e5WBmkAAAIIrAbM=', + b'eNrL/MNATaAAAG8EAYY=', + b'eNpL5WRioCJwAAAjgwCx', + b'eNq7W87KQEXQwAAAbfkB2g==', + b'eNqTPsjMQE3ACABGGgDh', + b'eNozncbIQE3ABABARwDP', + b'eNpby8XIQE3AAgA6gQC9', + b'eNoLTWFkoCbgAAA6zQDD', + b'eNrLn8tAVSAAAFSQAR0=', + b'eNqbaMFAVaAAAD/SAOo=', + b'eNrbf4CJgZrAAQB5ngHC', + b'eNpzN2JloCZoYAAAKXIA/w==', + b'eNo77MbMQFXACABV3wEO', + b'eNo7aMpAXcAEAE7rAPk=', + b'eNpzvcBAXcACAFhAARo=', + b'eNpLn83MQFXAAQBTUwEO', + b'eNrLz2JmoCoQAABGagDt', + b'eNqTjmKgLlAAACWSAJY=', + b'eNr7GM3EQFXgAABrLwGP', + b'eNpLNGdkoCpoYAAAMrUBGg==', + b'eNrbrsRAZcAIAEaNANs=', + b'eNrTZWVkoC5gAgAQ1wA2', + b'eNq7uZmRgbqABQCAWQGS', + b'eNprXs3IQF3AAQBh6wE4', + b'eNqbeYGNgbpAAAB2hAGA', + b'eNpj7WJkoC5QAAAulwCx', + b'eNqzfsHIQF3gAABeVQFl', + b'eNpbO5eByqCBAQBs/wHL', + b'eNqzPsvIQGXACABWegEL', + b'eNrj7+JkoDJgAgA04gCl', + b'eNpzXM7MQGXAAgBMxwDw', + b'eNqbv4OJgcqAAwBw1AFi', + b'eNqzjWdkoDIQAAAzhwCu', + b'eNqzrmegNlAAADz9ANs=', + b'eNqT7GdkoDJwAAA3dwDq', + b'eNp7H8vIQGXQwAAAb4cBzg==', + b'eNoTdmKgOmAEABxNAFc=', + b'eNrTbmJhoDZgAgA6kgC0', + b'eNpz5GFloDZgAQAbfQBX', + b'eNpj/chAdcABAFEaAP8=', + b'eNrjt+VkoDYQAAAcTwBm', + b'eNq7XsXEQG2gAABwhgF0', + b'eNrLtWNhoDZwAAA6agDw', + b'eNrjbWVnoDZoYAAANCkBGg==', + b'eNo768PEQHXACABfGQEd', + b'eNrbPImJgeqACQBtnAFK', + b'eNqz3s9AfcACAFOXAP8=', + b'eNozbGOgPuAAAD1SAMA=', + b'eNq7bMZAfSAAAFk2ARo=', + b'eNo7rcnEQHWgAABS7QEX', + b'eNoTDmVloDpwAAAk1QCu', + b'eNr7bsbKQHXQwAAAaRUBsw==', + b'eNp7/piJgfqAEQCbxQHO', + b'eNqL12VkoD5gAgAwFQCQ', + b'eNrzNGagAWABACpMAIE=', + b'eNpzD2FkoD7gAAA1DQCl', + b'eNpr1mRmoD4QAAA7sQDA', + b'eNpbycjIQH2gAAA6kQDM', + b'eNrjT2RmoD5wAAAnRQC0', + b'eNpLV2agAWhgAAAwpQEL', + b'eNrr92BioAFgBABKpQDb', + b'eNpLl2KgBWACACyYAIQ=', + b'eNozn8rIQAPAAgBGPQDS', + b'eNqTVWZioAHgAAAW6QBL', + b'eNrTlmJkoAEQAAAYXABX', + b'eNqbGs/KQAOgAABVpwEa', + b'eNoznMlAC+AAAEVvAQs=', + b'eNrjtWZjoAFoYAAAHDAAzw==', + b'eNpz7GZkoAVgBABHEgDP', + b'eNoLtmKgCWACADEmAJA=', + b'eNrL7mGgCWABAFWwAPw=', + b'eNozLGGgCeAAADlKAK4=', + b'eNqzPclAEyAAAFq2ARc=', + b'eNrrzGVjoAVQAABXnAEd', + b'eNqTTGVkoAVwAAAsWQDA', + b'eNo7Kc7IQAvQwAAAUFsBYg==', + b'eNq7WsDMQBPACABzNQFK', + b'eNpbGMXIQBPABABYmAD/', + b'eNorP8HMQBPAAgBwxAFH', + b'eNqzLmdioAngAAA/LwC9', + b'eNpLn8PMQBMgAABb5AEX', + b'eNrzD2CgDVAAADgQAMA=', + b'eNpbe4GRgSbAAQCGFAG/', + b'eNrTNWJkoAloYAAAI0cA4Q==', + b'eNpzPMXIQBvACABe1AEO', + b'eNr7289AI8AEAIySAY8=', + b'eNpb+oSRgTaABQCLhwGP', + b'eNqTzWKgEeAAAC/2AJA=', + b'eNoLXsVAIyAAAFmwAQ4=', + b'eNr7u4aFgTZAAQCYRgHO', + b'eNqzPcbMQBvgAABc8QFH', + b'eNprZWFkoA1oYAAAMu4BCw==', + b'eNp7uJGRgUaAEQCQfgGV', + b'eNpjL2NhoBFgAgAuPACE', + b'eNpj52ZkoBFgAQAHJwAY', + b'eNo738/IQCPAAQB99wFo', + b'eNrbK8DMQCMgAABLFgDh', + b'eNq7+YCBVkABAJ4YAdo=', + b'eNpTtmFloBFwAAAkRgCl', + b'eNp7qMDIQCPQwAAAXvUBgw==', + b'eNor1GZkoBVgBAA5OgCf', + b'eNor1mBkoBVgAgA44QCf', + b'eNqLTGBioBVgAQBD7ADA', + b'eNo7GsvIQCvAAQBpvQEs', + b'eNqzNWRioBUQAAAo6ACB', + b'eNpzl2GgGVAAACRYAIQ=', + b'eNpLDWVkoBVwAABENQD8', + b'eNrrvMrIQCvQwAAAgWkB4A==', + b'eNr72cnEQDPACACOSgGG', + b'eNpr52SgHWACADU3AJM=', + b'eNqz72FioBlgAQBLGADS', + b'eNqb78LCQDPAAQBU7ADw', + b'eNpbuYqRgWZAAAB8mgFl', + b'eNprd2KgHVAAAEoKAOo=', + b'eNrbmMrEQDPgAABnBQFZ', + b'eNpbr8PDQDPQwAAAVtQBaA==', + b'eNo7mMPGQDvACABx1QE1', + b'eNo7P4GZgXaACQCDKQFl', + b'eNp7n8PEQDvAAgCBdgFi', + b'eNq7m8PIQDvAAQB6bwFT', + b'eNr7mMTIQDsgAAB+NwFl', + b'eNq7nsPCQDugAAB5ZAFo', + b'eNqLlWZnoB1wAAAvlwDA', + b'eNoLdGWgIWhgAAA5WwEX', + b'eNq7eIuBloARAJ+nAa0=', + b'eNq7L8DOQEPABABchAD5', + b'eNoz92JkoCFgAQAw2ACH', + b'eNrzlmOgJeAAACeqAHI=', + b'eNpL7GJmoCEQAABZIAD/', + b'eNr73MfEQEOgAACRDgGk', + b'eNo7/56bgYbAAQCq+wIK', + b'eNqTX8bIQEPQwAAAS78BRw==', + b'eNpzvsrMQEvACABqwgEd', + b'eNo7qMzMQEvABABXwQDq', + b'eNp7+ZeRgZaABQC37QHs', + b'eNr7vFmAgZaAAwCljAG/', + b'eNorjWJkoCUQAABO5QDh', + b'eNpzfcDIQEugAABvBQFH', + b'eNrLP8XGQEvgAAB4qgGA', + b'eNpjvsTMQEvQwAAAUzoBWQ==', + b'eNqbWcfIQFPACABrEwEa', + b'eNrLf8vGQFPABACG7wFl', + b'eNrj3s/MQFPAAgBOGwDS', + b'eNprnMvEQFPAAQBuCQEp', + b'eNpLlGVnoCkQAAAzMQCW', + b'eNpLTONgoClQAABPSgDw', + b'eNqLl2dkoClwAAAxHwDA', + b'eNq7ac7IQFPQwAAAar0Bkg==', + b'eNr7ekyEgbaAEQCygwHR', + b'eNrbaMzMQFvABABZgQDq', + b'eNpLns3BQFvAAgBlDgEL', + b'eNr7fI+NgbaAAwC1pgHg', + b'eNpT/MHEQFsgAABs6AEs', + b'eNpLXcDMQFugAABl9QEp', + b'eNpz5uNloC1wAAAk1QCf', + b'eNrTPcZAY9DAAABfigF0', + b'eNqTXsZAa8AIAEsjAMM=', + b'eNpzP8tAa8AEAGtpARc=', + b'eNqbz87MQGPAAgBCXwCu', + b'eNqLtGZioDHgAAA6xQCf', + b'eNqbPZuZgcZAAAB6FwFK', + b'eNp7qcRAa6AAAGiuASw=', + b'eNpT38LIQGPgAABV3gEd', + b'eNpz5WRmoDFoYAAAIUsA0g==', + b'eNoLl2ZkoDVgBAAtqAB1', + b'eNozn8TGQGvABABRdADS', + b'eNqb+4qZgdaABQCa6wGP', + b'eNrbq8zIQGvAAQBZDQDq', + b'eNqzXcnKQGsgAABceQD8', + b'eNrTP8XMQGugAABjIQEd', + b'eNrby8hAc+AAAEuaAP8=', + b'eNor92VioDVoYAAAT/kBRw==', + b'eNpj1OZmoDlgBAAWEAA5', + b'eNo7up6TgeaACQCXdQGA', + b'eNr7GsfIQHPAAgCHggFZ', + b'eNorLGVkoDngAABcAQDw', + b'eNp7aMTEQHMgAABungEm', + b'eNr7WM/CQHOgAACUNwGV', + b'eNoTvc9Ae+AAAGD/ATU=', + b'eNrrvcdAe9DAAACSlgHs', + b'eNrz3sfMQHvACABreAEO', + b'eNqr38/JQHvABACDKQFK', + b'eNqbKs/CQHvAAgBKTAC9', + b'eNqbXcvKQHvAAQBykwEm', + b'eNqrFGWgAxAAADmEAJ8=', + b'eNo7bc3EQHugAABqgAEp', + b'eNpzb2JkoD1wAABRaQEL', + b'eNorzmVkoD1oYAAAXGEBYg==', + b'eNo7O5mBHoARAI7WAWI=', + b'eNrrXsTBQAfABAB9QAE4', + b'eNpbXMvIQAfAAgB1VQEm', + b'eNo7WcFAD8ABAIJgAUo=', + b'eNrrvs/KQAcgAACUpwGA', + b'eNqbOZOBHkABAHw/AVM=', + b'eNqrlGNmoANwAAA/FADb', + b'eNrbGSTEQAfQwAAAddgBng==', + b'eNqb68DEQA/ACABbnQDh', + b'eNo7KsxAF8AEAFjwANs=', + b'eNp7nMjIQA/AAgCFVwFK', + b'eNorNWRioAfgAABFJACx', + b'eNr7GMzCQA8gAACGpgFZ', + b'eNpztmJkoAdQAAAz+wCf', + b'eNrLZmZloAdwAAAvxwC0', + b'eNrz92WgC2hgAABBtQEd', + b'eNoz3cLEQBfACABhAQDt', + b'eNqLvMnMQBfABAB/fwE4', + b'eNq7G8xAH8ACAH37ATU=', + b'eNrrvMBAH8ABAI58AWI=', + b'eNqL/MnEQBcgAACMRQFl', + b'eNq7aMJAH6AAAGxoASY=', + b'eNrbasjEQBfgAABghQEp', + b'eNpbLcvIQBfQwAAAVU8BSg==', + b'eNorDmVioA9gBABUgQDM', + b'eNrLd2BioA9gAgBKJAC0', + b'eNqLXMPIQB/AAgBtQwEL', + b'eNorXsrKQB/AAQB24wEm', + b'eNrbPoOVgT5AAACN9QFl', + b'eNrbWsPIQB+gAAB/8wFT', + b'eNpL9udhoA9wAABPrgD/', + b'eNo7zcnIQB/QwAAAWz0BVg==', + b'eNrjX8xAL8AIAEriALQ=', + b'eNq7fpOBXoAJALXVAbM=', + b'eNo7/oyRgU6ABQC08AGz', + b'eNp7HsbIQCfAAQCGRAFH', + b'eNqTDGNkoBMQAAAvZACB', + b'eNpz9WOgF1AAAD5CALQ=', + b'eNr7LMxAL+AAAG8hAUc=', + b'eNoLFmVkoBNoYAAALgsA6g==', + b'eNpzfsTKQC/ACAB+ZAEs', + b'eNoTLOJloBdgAgA9MwCT', + b'eNpzV2VkoBdgAQAuswBy', + b'eNpTbORkoBfgAABIsQC0', + b'eNpLT2agGxAAAFYcANs=', + b'eNp73iPAQC+gAACkqAGk', + b'eNprXcHGQC/gAACCsAF0', + b'eNp7rsnCQC/QwAAAd9UBlQ==', + b'eNprzWVloBtgBABqGgD5', + b'eNrr/M5AP8AEAKR5AYM=', + b'eNr7fJ6dgW6ABQDD8wHO', + b'eNrLDuNgoBvgAABWbgDS', + b'eNqLLWRioBsQAABZaQDh', + b'eNrj387MQDegAABWLwDq', + b'eNo7G85AP+AAAH3PAWU=', + b'eNoLX81AP9DAAABwogGD', + b'eNqbXspAR8AIAHQvAQ4=', + b'eNpT52BhoB9gAgAWfgA2', + b'eNo73M7CQD/AAgCQtgFT', + b'eNoL3MtAR8ABAHTMARc=', + b'eNrjfsTIQD8gAABmzQD/', + b'eNo7Ws3IQD+gAACLQQFi', + b'eNoTv8/IQD/gAABq5wE4', + b'eNpb+ZmDgX6ggQEAuC0CJQ==', + b'eNqz/cTCQEfACACFxwE1', + b'eNrz/cVAT8AEAI6IAUo=', + b'eNrbG8zEQEfAAgB3/QEX', + b'eNprb2NhoCPgAAB3WgEa', + b'eNrL38LIQEcgAAB/igE1', + b'eNq73s1AT6AAAJrlAYM=', + b'eNpjb2egJ3AAAD5JAM8=', + b'eNqrTWNkoCNoYAAAZa0BZQ==', + b'eNoLf8vCQE/ACACQRQFK', + b'eNpT5WBjoCdgAgAW4gA2', + b'eNprD2ZioCdgAQBhOgDh', + b'eNp7K8/EQE/AAQB3hAEX', + b'eNoLVGWgKxAAADRyAIc=', + b'eNqbuIGBrkABAI2SAWI=', + b'eNoL92SgK3AAAEcIAOE=', + b'eNo7u5aBrqCBAQCpGQH7', + b'eNqLvsLCQFfACACITQE1', + b'eNoTvs5AX8AEAGfRAO0=', + b'eNornsnJQFfAAgB7JQEa', + b'eNq7eZaRga6AAwC8CQGw', + b'eNrT/cTBQFcgAACC3gE4', + b'eNqTdmdhoCtQAAAtrwCH', + b'eNqbXy7IQFfgAACDdwFo', + b'eNrLNeZgoCtoYAAATKgBKQ==', + b'eNrb/J2Rgb6AEQC/TAGt', + b'eNpLDWdhoC9gAgBWVgDD', + b'eNpTvcDKQF/AAgBv6wD/', + b'eNq7zMnBQF/AAQBmzgDt', + b'eNpLv81AZyAAAJBOAVM=', + b'eNq7epKZgb5AAQC7FwHC', + b'eNrbuIaBzsABAJzOAZ4=', + b'eNrLNmBkoC9oYAAAR/IBHQ==', + b'eNpbeouJgc6AEQCuCwGD', + b'eNozlGdkoDNgAgAlCQBU', + b'eNoTnszGQGfAAgBNyQCx', + b'eNqrPMrPQGfAAQCWfQFW', + b'eNozfMnIQGcgAAB/1QEs', + b'eNo7ncHEQGegAACMLAFW', + b'eNqbKcxAb+AAAE6RAO0=', + b'eNrT/s/EQGfQwAAAiY4BrQ==', + b'eNpjL+VkoDdgBAA8uACH', + b'eNrrvcFAd8AEAKLIAWg=', + b'eNr77c/CQG/AAgCYyAFT', + b'eNqL9RFkoDfgAABVEQDD', + b'eNrT1WdloDcQAAAsoQBy', + b'eNrrX8fFQG+gAACVRgFo', + b'eNpb6cvIQG/gAABxSQE4', + b'eNrj/8fIQG/QwAAAfOoBjw==', + b'eNqr7GVjoDtgBAB7ZgEO', + b'eNo7zMzMQHfABABdFQDM', + b'eNo7Wc7EQHfAAgCUawFH', + b'eNpbO5efge6AAwCeyQFi', + b'eNqbbczEQHcgAABgLwDh', + b'eNoz9WegP1AAAD0fAKU=', + b'eNr7vIOZge7AAQDGLAHv', + b'eNorX8bGQHfQwAAAiAoBpA==', + b'eNp7z83MQH/ACAB2AgD/', + b'eNoLv8HMQH/ABACN2QE1', + b'eNrb+4WTgf6ABQDM6wG/', + b'eNrLD2BhoD/gAABazADM', + b'eNrTLmFkoD8QAABKcQCx', + b'eNpT/8nJQH+gAACJmwFK', + b'eNq7yMnEQH/gAABm7gEd', + b'eNp7zcDKQH/QwAAAce4BcQ==', + b'eNqbrsbCMACAEQBawwDD', + b'eNpzbWFjGADABABg8gDS', + b'eNrz1OJnGADAAgA9JACH', + b'eNrjvCDLMACAAwByxgD/', + b'eNrr3s/LMABAAACgdwFo', + b'eNozFmBiGACgAAAg3ABm', + b'eNoLFmdmGADgAAAzswCu', + b'eNq7uoGFYQBAAwMAuoICCg==', + b'eNoTF2QYEMAIABNRACo=', + b'eNpLPcbOMBCACQCQSQE1', + b'eNo7bM4wIIAFAHZwAP8=', + b'eNrb2cbEMBCAAwCXsAFK', + b'eNozPcXOMBBAAAB7hwEX', + b'eNqTdmdkGAigAAAvGwCE', + b'eNoL1GVkGAjgAAA8kQDA', + b'eNqbfpaFYSBAAwMArDUB6Q==', + b'eNo7uYxhYAAjAK67AXE=', + b'eNo7/J2JYUAAEwDTGQG/', + b'eNpbnsbKMCCABQCCogEX', + b'eNo76s8wMIADAIO7AR0=', + b'eNpLV2djGBAgAABG3wCl', + b'eNrz7WdiGBCgAABp0wD/', + b'eNqbz8/LMCDAAQBZrwD8', + b'eNqr/8rMMCCggQEAtK0B+A==', + b'eNrLLmZkGBjACABrLADh', + b'eNprnsgwQIAJAISIARc=', + b'eNrLXcDNMDCABQCGUQEd', + b'eNpby8bIMDCAAwBW9wC9', + b'eNqT5GZhGBggAAATsAA5', + b'eNqzvsXEMDBAAQCFygE4', + b'eNpbvY+ZYWCAAwCu2wGt', + b'eNr7Xs4wQKCBAQCyTQHv', + b'eNq7yMbBMECAEQBsawDh', + b'eNoLF+RiGCDABAA3kQB1', + b'eNqLVmEYKMACAD3gAIQ=', + b'eNo7q8jEMECAAwB0nwD5', + b'eNr7a8XHMEBAAACdogFW', + b'eNqLlGJiGCCgAAA5KgCW', + b'eNprXcjLMEDAAQCUtQF0', + b'eNrTlmdhGCDQwAAAJ2wAzw==', + b'eNo7r87IMFCAEQB48AD5', + b'eNqb/FKAYaAAEwDA0gGP', + b'eNq7PJNhwAALALGkAXE=', + b'eNqb/VGCYaAABwDMeAGt', + b'eNpbbcTEMFBAAABtOgDw', + b'eNpjjWFiGCigAAAwlACE', + b'eNr7zsbJMFDAAQCAkwFH', + b'eNrb2cLCMFCggQEAnvABwg==', + b'eNqrzmdkGDDACABzuADt', + b'eNpT/MHIMGCACQCKUgEd', + b'eNq7msDLMGCABQCehAFH', + b'eNqrfcHMMGCAAwCwyAFx', + b'eNoTXcLEMGBAAABb8ADM', + b'eNp72sfIMGBAAQC3JgGV', + b'eNqrFGZlGDDgAABH/wDS', + b'eNqT52diGDDQwAAAGTwAsQ==', + b'eNpbKM7MMHCAEQBdKAC9', + b'eNozPcbIMHCACQB8vQD/', + b'eNrTzOdgGDjAAgBPZACl', + b'eNqrnMvLMHCAAwCQLQEs', + b'eNq7Op2TYeCAAAC48QGG', + b'eNpbe5yTYeCAAgC8yQGe', + b'eNpj/szIMHDAAQB6UwE4', + b'eNrr72VkGDjQwAAAj3EBng==', + b'eNrTtmRmGEDACAAzwgBp', + b'eNr7mMXCMICACQCvkAFi', + b'eNqT9eZgGEDAAgA4KQB1', + b'eNpz3M3JMICAAwCCOwEO', + b'eNrj1WUYSCAAAB1jAEs=', + b'eNo7byDBMIBAAQCLwAE4', + b'eNq7f4CHYQCBAwDVaAHs', + b'eNpjXcbDMICggQEAXPoBOA==', + b'eNr7msrGMJCAEQCxcQFi' ] def sophiegermain(bit_length: int) -> int: @@ -278,11 +1049,13 @@ def sophiegermain(bit_length: int) -> int: 2147483693 >>> sophiegermain(257) 115792089237316195423570985008687907853269984665640564039457584007913129658411 + >>> sophiegermain(1025).bit_length() + 1025 The result returned by :obj:`sophiegermain` can always be represented using the specified number of bits. - >>> all([sophiegermain(k).bit_length() == k for k in range(2, 258)]) + >>> all([sophiegermain(k).bit_length() == k for k in range(2, 1026)]) True If a bit length outside the supported range is supplied, an @@ -296,10 +1069,10 @@ def sophiegermain(bit_length: int) -> int: Traceback (most recent call last): ... ValueError: all Sophie Germain primes have bit lengths of at least 2 - >>> sophiegermain(258) + >>> sophiegermain(1026) Traceback (most recent call last): ... - ValueError: bit lengths greater than 257 are not supported + ValueError: bit lengths greater than 1025 are not supported The supplied bit length must be an integer. @@ -321,7 +1094,10 @@ def sophiegermain(bit_length: int) -> int: 'bit lengths greater than ' + str(len(_DATA) + 1) + ' are not supported' ) - return _DATA[bit_length - 2] + return int.from_bytes( + zlib.decompress(base64.standard_b64decode(_DATA[bit_length - 2])), + 'little' + ) if __name__ == '__main__': doctest.testmod() # pragma: no cover