UNPKG

cdigit

Version:

Collection of check digit algorithms implemented in JavaScript

1,664 lines (1,662 loc) 51.2 kB
const common = require("./common"); const algo = require("..").verhoeff; describe(`${algo.longName} (${algo.name})`, () => { // {{{ List sample strings const valid = [ ["2363", "236", "3"], ["77286358207", "7728635820", "7"], ["049318037", "04931803", "7"], ["0075173110", "007517311", "0"], ["010248455", "01024845", "5"], ["065689862", "06568986", "2"], ["064797187", "06479718", "7"], ["02020523", "0202052", "3"], ["5270353", "527035", "3"], ["017502336", "01750233", "6"], ["0095572656", "009557265", "6"], ["086822730", "08682273", "0"], ["24250895", "2425089", "5"], ["88203758", "8820375", "8"], ["62286947", "6228694", "7"], ["0053227975", "005322797", "5"], ["74591170", "7459117", "0"], ["0091045568", "009104556", "8"], ["047172497", "04717249", "7"], ["0027170513", "002717051", "3"], ["090756961", "09075696", "1"], ["043703387", "04370338", "7"], ["011686761", "01168676", "1"], ["29194136", "2919413", "6"], ["012247996", "01224799", "6"], ["0053399702", "005339970", "2"], ["048254081", "04825408", "1"], ["67118109", "6711810", "9"], ["90118519", "9011851", "9"], ["0049065976", "004906597", "6"], ["046065543", "04606554", "3"], ["01517237", "0151723", "7"], ["038186337", "03818633", "7"], ["0099449568", "009944956", "8"], [ "0619608022586647594299264394240912409", "061960802258664759429926439424091240", "9", ], [ "751571178333174470538369159358920359", "75157117833317447053836915935892035", "9", ], [ "0059362834268511520978245333915466478", "005936283426851152097824533391546647", "8", ], [ "0411748883402279030408145005815637207", "041174888340227903040814500581563720", "7", ], [ "00414968085303554412899791050931080521", "0041496808530355441289979105093108052", "1", ], [ "00984648354763114612218738978653552807", "0098464835476311461221873897865355280", "7", ], [ "0149658159204466596324134442965160860", "014965815920446659632413444296516086", "0", ], [ "00124252239509639940057503707379526955", "0012425223950963994005750370737952695", "5", ], [ "570365439806894784840608094925142962", "57036543980689478484060809492514296", "2", ], [ "530094313035154310010313087969542705", "53009431303515431001031308796954270", "5", ], [ "00511271038537428606221225025286500904", "0051127103853742860622122502528650090", "4", ], [ "0092181662135345456478828864059910447", "009218166213534545647882886405991044", "7", ], [ "0239702459361598582949414192067779844", "023970245936159858294941419206777984", "4", ], [ "004850022011833856780912143887483972", "00485002201183385678091214388748397", "2", ], [ "632037560678057215526114539815843668", "63203756067805721552611453981584366", "8", ], [ "0723623766645502131239247939742471", "072362376664550213123924793974247", "1", ], ["2363", "236", "3"], ["5357084", "535708", "4"], ["69954516", "6995451", "6"], ["81335211", "8133521", "1"], ["44593650", "4459365", "0"], ["0049950638", "004995063", "8"], ["03896025", "0389602", "5"], ["0068716540", "006871654", "0"], ["0025701100", "002570110", "0"], ["58181453", "5818145", "3"], ["66476930", "6647693", "0"], ["60158862", "6015886", "2"], ["031950144", "03195014", "4"], ["076884255", "07688425", "5"], ["027119369", "02711936", "9"], ["46200920", "4620092", "0"], ["99390631", "9939063", "1"], ["23309489", "2330948", "9"], ["0052478848", "005247884", "8"], ["0075272466", "007527246", "6"], ["0022429632", "002242963", "2"], ["82671168", "8267116", "8"], ["25257216", "2525721", "6"], ["6204713", "620471", "3"], ["0096880514", "009688051", "4"], ["0085591604", "008559160", "4"], ["0099719045", "009971904", "5"], ["84033346", "8403334", "6"], ["55019999", "5501999", "9"], ["24068703", "2406870", "3"], ["16072082", "1607208", "2"], ["059633257", "05963325", "7"], ["77908591", "7790859", "1"], ["090156671", "09015667", "1"], ["97063984", "9706398", "4"], ["039630056", "03963005", "6"], ["73132699", "7313269", "9"], ["012818089", "01281808", "9"], ["0037550877", "003755087", "7"], ["039180764", "03918076", "4"], ["050640092", "05064009", "2"], ["0013503619", "001350361", "9"], ["008152311", "00815231", "1"], ["0076970850", "007697085", "0"], ["059735434", "05973543", "4"], ["59927949", "5992794", "9"], ["0062617894", "006261789", "4"], ["3994053", "399405", "3"], ["0041515823", "004151582", "3"], ["028035955", "02803595", "5"], ["0026902759", "002690275", "9"], ["043346511", "04334651", "1"], ["058307931", "05830793", "1"], ["005379201", "00537920", "1"], ["088748521", "08874852", "1"], ["045303743", "04530374", "3"], ["037986200", "03798620", "0"], ["94141754", "9414175", "4"], ["0044746127", "004474612", "7"], ["0037893182", "003789318", "2"], ["048112347", "04811234", "7"], ["001007449", "00100744", "9"], ["28957659", "2895765", "9"], ["70534852", "7053485", "2"], ["0043697584", "004369758", "4"], ["28345593", "2834559", "3"], ["0068947798", "006894779", "8"], ["0068186947", "006818694", "7"], ["047409719", "04740971", "9"], ["058079449", "05807944", "9"], ["08798054", "0879805", "4"], ["0027584523", "002758452", "3"], ["008760498", "00876049", "8"], ["005723856", "00572385", "6"], ["022728444", "02272844", "4"], ["6198089", "619808", "9"], ["097573240", "09757324", "0"], ["80088936", "8008893", "6"], ["046478565", "04647856", "5"], ["48387817", "4838781", "7"], ["0096366066", "009636606", "6"], ["045766558", "04576655", "8"], ["087921639", "08792163", "9"], ["33029563", "3302956", "3"], ["007928987", "00792898", "7"], ["25136481", "2513648", "1"], ["0079785128", "007978512", "8"], ["67271824", "6727182", "4"], ["096873288", "09687328", "8"], ["0051034541", "005103454", "1"], ["76638436", "7663843", "6"], ["74406025", "7440602", "5"], ["56077139", "5607713", "9"], ["94780690", "9478069", "0"], ["0029350101", "002935010", "1"], ["010109963", "01010996", "3"], ["30388490", "3038849", "0"], ["079739588", "07973958", "8"], ["009479211", "00947921", "1"], ["0082839775", "008283977", "5"], ["096913209", "09691320", "9"], ["88776574", "8877657", "4"], ["0057514795", "005751479", "5"], ["30721109", "3072110", "9"], ["83170592", "8317059", "2"], ["43313999", "4331399", "9"], ["007048883", "00704888", "3"], ["051140200", "05114020", "0"], ["73940783", "7394078", "3"], ["0091891832", "009189183", "2"], ["49272239", "4927223", "9"], ["0068185128", "006818512", "8"], ["67617282", "6761728", "2"], ["65713108", "6571310", "8"], ["099946176", "09994617", "6"], ["0070716474", "007071647", "4"], ["02300297", "0230029", "7"], ["034150296", "03415029", "6"], ["010254002", "01025400", "2"], ["86779951", "8677995", "1"], ["086961859", "08696185", "9"], ["28995408", "2899540", "8"], ["38121883", "3812188", "3"], ["045117546", "04511754", "6"], ["02319886", "0231988", "6"], ["65649070", "6564907", "0"], ["0057979702", "005797970", "2"], ["0092484360", "009248436", "0"], ["74295647", "7429564", "7"], [ "47472527385003521126608921299727", "4747252738500352112660892129972", "7", ], ["578651888655276976272240700845", "57865188865527697627224070084", "5"], [ "471473464859818700038365081171897410871366885", "47147346485981870003836508117189741087136688", "5", ], ["8067575", "806757", "5"], ["81630414138626", "8163041413862", "6"], [ "808170781119145175099445060453425555444", "80817078111914517509944506045342555544", "4", ], ["58484", "5848", "4"], [ "6958108080046405118603227972409226935222438", "695810808004640511860322797240922693522243", "8", ], ["07276417", "0727641", "7"], [ "07474016544847316388583741378626812", "0747401654484731638858374137862681", "2", ], [ "4501484854892115164027230015029964933752", "450148485489211516402723001502996493375", "2", ], ["63949435180977", "6394943518097", "7"], ["788458292213", "78845829221", "3"], [ "215723382047296102691497779668798420918", "21572338204729610269149777966879842091", "8", ], ["7841976343306", "784197634330", "6"], [ "309616646381463309589638776224567255605", "30961664638146330958963877622456725560", "5", ], [ "417448540225969640760547898468296", "41744854022596964076054789846829", "6", ], ["1562824", "156282", "4"], [ "15970012725138617819391854596792989987200467755", "1597001272513861781939185459679298998720046775", "5", ], ["87143195401943", "8714319540194", "3"], [ "3511818922292078482112508860355400343974705", "351181892229207848211250886035540034397470", "5", ], ["13247842413305984780552", "1324784241330598478055", "2"], [ "7414118746130251062242934128847394064854", "741411874613025106224293412884739406485", "4", ], ["058050107625", "05805010762", "5"], ["0718848221770851190449", "071884822177085119044", "9"], ["96446882342797788647357", "9644688234279778864735", "7"], ["51592434201317972", "5159243420131797", "2"], ["42028413572001147", "4202841357200114", "7"], ["2281584", "228158", "4"], ["151223", "15122", "3"], [ "471396150613484246898401412276255028410253", "47139615061348424689840141227625502841025", "3", ], ["87325336031732956975400", "8732533603173295697540", "0"], ["536603402", "53660340", "2"], ["1935188887320320588509107013", "193518888732032058850910701", "3"], ["15", "1", "5"], [ "95581615533245229832000892562896565", "9558161553324522983200089256289656", "5", ], [ "9541278279520013845028105960399371", "954127827952001384502810596039937", "1", ], [ "510245767802563133781845589882291364003", "51024576780256313378184558988229136400", "3", ], ["10434044", "1043404", "4"], [ "073860761669551677038835392199279127099187962827", "07386076166955167703883539219927912709918796282", "7", ], [ "7191124612264058739662120965466717966550", "719112461226405873966212096546671796655", "0", ], ["6704317210", "670431721", "0"], [ "28353789785306988169937598516777367665931534", "2835378978530698816993759851677736766593153", "4", ], [ "32160861338393661758422278283202307495841", "3216086133839366175842227828320230749584", "1", ], ["245610040963", "24561004096", "3"], ["2982464111", "298246411", "1"], [ "3400462952974306349992685290192348", "340046295297430634999268529019234", "8", ], ["847477637", "84747763", "7"], [ "5961914703649251855229193000514562288442827", "596191470364925185522919300051456228844282", "7", ], ["7512530788287053483979398673", "751253078828705348397939867", "3"], [ "50485096365465538783533512676763572121", "5048509636546553878353351267676357212", "1", ], ["208103268385740219343957958", "20810326838574021934395795", "8"], ["8368895397", "836889539", "7"], [ "7934342452076413107847989347700180234", "793434245207641310784798934770018023", "4", ], [ "074161875867002771716229961205855106863", "07416187586700277171622996120585510686", "3", ], ["446103877392", "44610387739", "2"], ["4355", "435", "5"], [ "448492377955969095272190781552113435139417574373", "44849237795596909527219078155211343513941757437", "3", ], ["12899947947170761264", "1289994794717076126", "4"], [ "040523019081487822922837019340897139", "04052301908148782292283701934089713", "9", ], ["71152215707236542103615318972", "7115221570723654210361531897", "2"], [ "572522654876736485951787730406547757558170025", "57252265487673648595178773040654775755817002", "5", ], [ "72863113476483611929330330245621530717163", "7286311347648361192933033024562153071716", "3", ], ["89", "8", "9"], ["739343909307920902501", "73934390930792090250", "1"], [ "1979472757954783750385710848268504812833714803", "197947275795478375038571084826850481283371480", "3", ], [ "801330544915027109196158068475984369", "80133054491502710919615806847598436", "9", ], [ "306816716504605142886528627590934314", "30681671650460514288652862759093431", "4", ], [ "6419638721565866077315422954178010289", "641963872156586607731542295417801028", "9", ], ["248446239124543958", "24844623912454395", "8"], ["0653613774", "065361377", "4"], [ "5930470396799118957238898772652479", "593047039679911895723889877265247", "9", ], ["055372", "05537", "2"], ["70", "7", "0"], ["4145765249", "414576524", "9"], [ "20325178315256589550373445619221377123", "2032517831525658955037344561922137712", "3", ], [ "9954988155696836224117777421556669060608662", "995498815569683622411777742155666906060866", "2", ], [ "1387846460419688511283004110357890669879047611", "138784646041968851128300411035789066987904761", "1", ], [ "572019655926922379634494349391127", "57201965592692237963449434939112", "7", ], [ "4872807203148348149411848114091398613988419", "487280720314834814941184811409139861398841", "9", ], [ "6526277165122432610041054365731351240690051502737", "652627716512243261004105436573135124069005150273", "7", ], ["07381191527051124609426545", "0738119152705112460942654", "5"], [ "023163066751725159691224423016152158517", "02316306675172515969122442301615215851", "7", ], ["0697674179414175376627439735574", "069767417941417537662743973557", "4"], [ "074490578393501341755098326537511336", "07449057839350134175509832653751133", "6", ], ["153545090518847318456269", "15354509051884731845626", "9"], ["402863024653572433736245", "40286302465357243373624", "5"], ["1284322", "128432", "2"], [ "88278997436190282688248217481211460", "8827899743619028268824821748121146", "0", ], ["052703144595436275923", "05270314459543627592", "3"], ["76439061807040985349996486", "7643906180704098534999648", "6"], ["85371107", "8537110", "7"], [ "423654471577860242914904617521154", "42365447157786024291490461752115", "4", ], ["5649", "564", "9"], ["8861", "886", "1"], [ "655483045031408187935981916413961780031", "65548304503140818793598191641396178003", "1", ], ["6971854", "697185", "4"], [ "730951904054139647338147012919777455444749", "73095190405413964733814701291977745544474", "9", ], ["50464364886091310495544560", "5046436488609131049554456", "0"], [ "3387503764677101855289964736741318597236518249", "338750376467710185528996473674131859723651824", "9", ], ["2653011348", "265301134", "8"], [ "127665928440836556142027023571267152476", "12766592844083655614202702357126715247", "6", ], ["31240141993433584122839559", "3124014199343358412283955", "9"], ["68837231136431479562974626257", "6883723113643147956297462625", "7"], [ "9251702753595140965816982746786900887592", "925170275359514096581698274678690088759", "2", ], ["4879768783355165370221", "487976878335516537022", "1"], ["70284403193", "7028440319", "3"], [ "09848955112096469768425398373967974265", "0984895511209646976842539837396797426", "5", ], ["670477835", "67047783", "5"], ["2459360227254053907", "245936022725405390", "7"], ["180380021004799556285995669135", "18038002100479955628599566913", "5"], ["1546125953852364176498", "154612595385236417649", "8"], [ "929348568675219466259529221975249397514", "92934856867521946625952922197524939751", "4", ], [ "501825246366907057995377364062640189924021287", "50182524636690705799537736406264018992402128", "7", ], ["865181199397373167098794254727", "86518119939737316709879425472", "7"], ["134364940266957202370127417", "13436494026695720237012741", "7"], ["96708106542312635035940844", "9670810654231263503594084", "4"], ["231365031186841942", "23136503118684194", "2"], ["76014375185465912722984856802", "7601437518546591272298485680", "2"], ["177233935255610360211", "17723393525561036021", "1"], ["7668121637314", "766812163731", "4"], [ "166530058025276973855806544144691350586999", "16653005802527697385580654414469135058699", "9", ], ["010", "01", "0"], [ "67770724309815823897683380144132516", "6777072430981582389768338014413251", "6", ], ["0052413", "005241", "3"], ["5958342704033684", "595834270403368", "4"], [ "72565354325345794182571053458856866805007", "7256535432534579418257105345885686680500", "7", ], ["432091311801835", "43209131180183", "5"], ["9469237557", "946923755", "7"], ["7201916744106040360", "720191674410604036", "0"], [ "304296258436370453668936870135091316", "30429625843637045366893687013509131", "6", ], ["93641608", "9364160", "8"], [ "8122212645522637566641013826472342860218344997703", "812221264552263756664101382647234286021834499770", "3", ], [ "44211293408640921123985069935056759131364", "4421129340864092112398506993505675913136", "4", ], ["8230290992", "823029099", "2"], [ "0496673811880631368748171946439882865699", "049667381188063136874817194643988286569", "9", ], [ "09225366298830045901936162552628", "0922536629883004590193616255262", "8", ], ["946580818793216209687", "94658081879321620968", "7"], [ "51783022583753555448898429159027353270", "5178302258375355544889842915902735327", "0", ], [ "466106841719214282869260190579574921861209", "46610684171921428286926019057957492186120", "9", ], ["049284227", "04928422", "7"], ["9510384175162789730953192513084", "951038417516278973095319251308", "4"], [ "431810271939527130954922772984878334499232284", "43181027193952713095492277298487833449923228", "4", ], [ "141438930229681152558862998360771", "14143893022968115255886299836077", "1", ], [ "54593060818479809846579441508574", "5459306081847980984657944150857", "4", ], [ "60027114738342420591537096990939491392623038", "6002711473834242059153709699093949139262303", "8", ], [ "641182129483907564050242389061314", "64118212948390756405024238906131", "4", ], [ "171241642857978014739754935878409420839915548", "17124164285797801473975493587840942083991554", "8", ], [ "36378558642338342726572697959814990107863551", "3637855864233834272657269795981499010786355", "1", ], ["0896", "089", "6"], ["2796352057115010433889293", "279635205711501043388929", "3"], ["1200063208394580637339464392", "120006320839458063733946439", "2"], ["619741891032190405", "61974189103219040", "5"], [ "6753095129352030865845910151526084078283633", "675309512935203086584591015152608407828363", "3", ], [ "613785357253910403008397602433174181", "61378535725391040300839760243317418", "1", ], [ "44372852986096877610739358685125648804608048624", "4437285298609687761073935868512564880460804862", "4", ], [ "868848949516919732857988635022875493", "86884894951691973285798863502287549", "3", ], ["9642530688036729879371402057", "964253068803672987937140205", "7"], [ "355109825074773190071683458258708772", "35510982507477319007168345825870877", "2", ], [ "64301771501480495331873176865976501747641", "6430177150148049533187317686597650174764", "1", ], ["2431879", "243187", "9"], [ "52136740877113789763857128477023450", "5213674087711378976385712847702345", "0", ], [ "875376802133304880275479199194423627052", "87537680213330488027547919919442362705", "2", ], ["2616446061717199", "261644606171719", "9"], [ "1842315471258365782850925651034788202", "184231547125836578285092565103478820", "2", ], ["667196511578236805198209975286", "66719651157823680519820997528", "6"], ["023", "02", "3"], ["924249513637503268912189441", "92424951363750326891218944", "1"], ["2721139609021456", "272113960902145", "6"], ["43310471602323", "4331047160232", "3"], ["12465394069601787478", "1246539406960178747", "8"], ["6565222", "656522", "2"], ["95472347004179050", "9547234700417905", "0"], [ "75211576655206021461129586791285290518", "7521157665520602146112958679128529051", "8", ], ["677788184483666864752610", "67778818448366686475261", "0"], [ "946712329038866596216105398995910281828", "94671232903886659621610539899591028182", "8", ], ["138257967151", "13825796715", "1"], [ "001804364324104362844364015391225593", "00180436432410436284436401539122559", "3", ], ["743330245302928647607421366", "74333024530292864760742136", "6"], [ "616831207398254188997630128422044", "61683120739825418899763012842204", "4", ], [ "58126665293657122620594825924309129719905524182", "5812666529365712262059482592430912971990552418", "2", ], [ "3765659415111749196782531424635984", "376565941511174919678253142463598", "4", ], [ "979610254802657138643263907291799760931601452601", "97961025480265713864326390729179976093160145260", "1", ], ["397510", "39751", "0"], ["7858305606255735089", "785830560625573508", "9"], ["017824208276505233196694673738", "01782420827650523319669467373", "8"], ["4047789157978356726882378761", "404778915797835672688237876", "1"], [ "76901011772743767133901276779369", "7690101177274376713390127677936", "9", ], [ "289413590008948510569810292312486204", "28941359000894851056981029231248620", "4", ], ["4588977", "458897", "7"], ["492033574227", "49203357422", "7"], [ "46573721547739906510415048401610520580203", "4657372154773990651041504840161052058020", "3", ], ["540493362", "54049336", "2"], [ "5621069779891710416286385457134635210256828986", "562106977989171041628638545713463521025682898", "6", ], ["3665268331696629169", "366526833169662916", "9"], ["7544", "754", "4"], [ "1224557560907037338890929429255127", "122455756090703733889092942925512", "7", ], ["616121521323572190470845", "61612152132357219047084", "5"], ["3906424786", "390642478", "6"], ["058147238846267603478496540", "05814723884626760347849654", "0"], ["234533430597235", "23453343059723", "5"], ["546712", "54671", "2"], [ "9284607736155933256340682147722222743879988", "928460773615593325634068214772222274387998", "8", ], ["551644367988897874727", "55164436798889787472", "7"], ["7338925160393604809574", "733892516039360480957", "4"], [ "7690812242386604404019829756447885460", "769081224238660440401982975644788546", "0", ], [ "56274563019247842309709386954930770609332082247", "5627456301924784230970938695493077060933208224", "7", ], [ "86475240735450285023433294923530", "8647524073545028502343329492353", "0", ], [ "03212647567822456702425009014951060352553", "0321264756782245670242500901495106035255", "3", ], ["266480190868", "26648019086", "8"], [ "927821725296148426476807944279201262", "92782172529614842647680794427920126", "2", ], [ "0780609296632970558148277876684767", "078060929663297055814827787668476", "7", ], ["04", "0", "4"], ["66250435", "6625043", "5"], [ "20457658154587967319694117651780852306432660", "2045765815458796731969411765178085230643266", "0", ], ["886018675909865767782", "88601867590986576778", "2"], ["6307157097015472724528369", "630715709701547272452836", "9"], [ "00165954599614659621054558681707155768266", "0016595459961465962105455868170715576826", "6", ], ["545638648025027", "54563864802502", "7"], ["3943717670", "394371767", "0"], ["8774929932", "877492993", "2"], [ "0849200362898967823283440255109541230542700386", "084920036289896782328344025510954123054270038", "6", ], ["61147237029083891402524358", "6114723702908389140252435", "8"], ["11423475079107645", "1142347507910764", "5"], [ "113158306016793573985192397139258254653498", "11315830601679357398519239713925825465349", "8", ], [ "7613966577968241842767070624872020", "761396657796824184276707062487202", "0", ], ["410352166410661511426975203999", "41035216641066151142697520399", "9"], ["94568548849905270676232975", "9456854884990527067623297", "5"], [ "8830727474004826185481337298230188988101", "883072747400482618548133729823018898810", "1", ], [ "63183742986632314841062605057766780", "6318374298663231484106260505776678", "0", ], ["2436624121757565878755286894350", "243662412175756587875528689435", "0"], [ "11964705152021180121857328001120", "1196470515202118012185732800112", "0", ], ["033920640", "03392064", "0"], ["71748859419413397", "7174885941941339", "7"], [ "5853383386763501219526897032664943", "585338338676350121952689703266494", "3", ], ["1440", "144", "0"], ["6326298461130265427691772936", "632629846113026542769177293", "6"], [ "2095844239005183138630265268910426996256109808", "209584423900518313863026526891042699625610980", "8", ], [ "814898183739639045749160140613806700128", "81489818373963904574916014061380670012", "8", ], ["529715372201661298927282485972", "52971537220166129892728248597", "2"], ["1126716065092993444583", "112671606509299344458", "3"], [ "91389212628869186269042431437226360523309963", "9138921262886918626904243143722636052330996", "3", ], ["43", "4", "3"], ["071291", "07129", "1"], ["11159805151775509258", "1115980515177550925", "8"], ["3362637982893", "336263798289", "3"], ["820893447", "82089344", "7"], [ "410293711611479593685471253337968180918436629", "41029371161147959368547125333796818091843662", "9", ], [ "3965414133922330175090218279025584088023603175474", "396541413392233017509021827902558408802360317547", "4", ], [ "587821569546302656728110071777192", "58782156954630265672811007177719", "2", ], [ "475140675336434114458206777771806596907", "47514067533643411445820677777180659690", "7", ], [ "95440236248636430361110534696942689", "9544023624863643036111053469694268", "9", ], [ "5052952368132520342109817626510748565762", "505295236813252034210981762651074856576", "2", ], [ "3271216455871116997885183376587550943507508829", "327121645587111699788518337658755094350750882", "9", ], [ "86366047829200706649648346363105480", "8636604782920070664964834636310548", "0", ], [ "250722564707934941234522229019145491439915297893", "25072256470793494123452222901914549143991529789", "3", ], ["426430602791008", "42643060279100", "8"], [ "26997074264880141976791085131438309192724231", "2699707426488014197679108513143830919272423", "1", ], [ "70488162512672474899847618652138", "7048816251267247489984761865213", "8", ], [ "51265684849396901442725147231785933", "5126568484939690144272514723178593", "3", ], ["3473117764678085702329348147306", "347311776467808570232934814730", "6"], [ "553033568847799302765752559422347442", "55303356884779930276575255942234744", "2", ], ["7647981454553445", "764798145455344", "5"], ["3564116232664938340291537", "356411623266493834029153", "7"], ["33100606307587344168911616", "3310060630758734416891161", "6"], ["132", "13", "2"], [ "13644630556260552414880721809848171483343812", "1364463055626055241488072180984817148334381", "2", ], ["39708540282346466500", "3970854028234646650", "0"], [ "03578495735402006448909444873014806211", "0357849573540200644890944487301480621", "1", ], [ "47121035753107935312896371071470619325", "4712103575310793531289637107147061932", "5", ], [ "09609301121375302548401025957006679616168408380", "0960930112137530254840102595700667961616840838", "0", ], ["5638920395350772359395169", "563892039535077235939516", "9"], [ "9992513924995054865186324671026299", "999251392499505486518632467102629", "9", ], [ "057714074474193070202571522671219451456682", "05771407447419307020257152267121945145668", "2", ], ["87390", "8739", "0"], ["83677", "8367", "7"], [ "9661091807058069343366964867944388", "966109180705806934336696486794438", "8", ], ["30750972679229", "3075097267922", "9"], ["962207", "96220", "7"], ["9462", "946", "2"], ["89908040274201629949893778", "8990804027420162994989377", "8"], [ "58501793162300854809021873456826564173", "5850179316230085480902187345682656417", "3", ], [ "0190924829655242534957302905989287", "019092482965524253495730290598928", "7", ], [ "053576122700187891231417681784914115", "05357612270018789123141768178491411", "5", ], [ "63607984194633949281972245333621", "6360798419463394928197224533362", "1", ], ["04", "0", "4"], ["779787404538", "77978740453", "8"], [ "621446303170570097504935621490718476", "62144630317057009750493562149071847", "6", ], ["7378", "737", "8"], ["841565813581720471", "84156581358172047", "1"], ["6950886", "695088", "6"], ["410169621940357473", "41016962194035747", "3"], ["38458035824288191903429984", "3845803582428819190342998", "4"], [ "3995216349455283620155104148211822105148386", "399521634945528362015510414821182210514838", "6", ], [ "25278608484865341186090978973901720337207", "2527860848486534118609097897390172033720", "7", ], ["3127032822850044501816949622", "312703282285004450181694962", "2"], [ "66584942438763433170039681301193820310", "6658494243876343317003968130119382031", "0", ], ["790", "79", "0"], [ "2102263314894454535941964602783083465201", "210226331489445453594196460278308346520", "1", ], ["1324001755794874216407", "132400175579487421640", "7"], ["067785872189", "06778587218", "9"], ["018562992436396820081", "01856299243639682008", "1"], ["8138502922008623964012", "813850292200862396401", "2"], [ "19267207700685374491970713164351470578", "1926720770068537449197071316435147057", "8", ], [ "4046521395820759285997975699531204195903299", "404652139582075928599797569953120419590329", "9", ], [ "55704840195940992887220171779369253750", "5570484019594099288722017177936925375", "0", ], ["1035835607434370210230926838", "103583560743437021023092683", "8"], ["85070806896717062015814", "8507080689671706201581", "4"], [ "92897641281265710777538511443892772373739", "9289764128126571077753851144389277237373", "9", ], ["03670885475", "0367088547", "5"], ["81025664", "8102566", "4"], [ "4403600391847644769674853027138862545724169", "440360039184764476967485302713886254572416", "9", ], ["877949754143713382", "87794975414371338", "2"], [ "170162766060251199736805166456797602726", "17016276606025119973680516645679760272", "6", ], [ "085915311629114532564223219312210654", "08591531162911453256422321931221065", "4", ], [ "40119778085557083655141519218004721995644783", "4011977808555708365514151921800472199564478", "3", ], ["1575119", "157511", "9"], ["80054843983084196874", "8005484398308419687", "4"], [ "1879491554461057311296433889894363137396925843964", "187949155446105731129643388989436313739692584396", "4", ], ["5838178017684557935645530044174", "583817801768455793564553004417", "4"], ["091767212457421709152144", "09176721245742170915214", "4"], [ "512665928213450814292914462596098", "51266592821345081429291446259609", "8", ], ["014147487282828214330300098153", "01414748728282821433030009815", "3"], ["157187", "15718", "7"], ["555416368658", "55541636865", "8"], [ "4176570446885334912930016303568024", "417657044688533491293001630356802", "4", ], [ "14145187408030046545672427968361519913208844334", "1414518740803004654567242796836151991320884433", "4", ], ["42270475740768344177528", "4227047574076834417752", "8"], ["35013614", "3501361", "4"], ["984264193905361", "98426419390536", "1"], ["09437768681", "0943776868", "1"], ["9277", "927", "7"], ["522", "52", "2"], ["634094160361232941055326894940", "63409416036123294105532689494", "0"], [ "10418779185582875895974656964441", "1041877918558287589597465696444", "1", ], [ "676554694452753487865945193538533419", "67655469445275348786594519353853341", "9", ], [ "1314661511369077790858821556192928505449066084", "131466151136907779085882155619292850544906608", "4", ], ["270", "27", "0"], ["10532394083990", "1053239408399", "0"], ["997455", "99745", "5"], [ "2045785887215148393754369826127105718538178540661", "204578588721514839375436982612710571853817854066", "1", ], ["2475267864", "247526786", "4"], ["966624595494755590515307", "96662459549475559051530", "7"], ["57981", "5798", "1"], ["21355897951033612", "2135589795103361", "2"], [ "026049998769431450055635875680911", "02604999876943145005563587568091", "1", ], ["250864380", "25086438", "0"], ["92986", "9298", "6"], [ "10946162876718645648421011887788131809703404", "1094616287671864564842101188778813180970340", "4", ], [ "88721432168084771684824129751811071277575246", "8872143216808477168482412975181107127757524", "6", ], [ "6730429987748153018633539709661643236614", "673042998774815301863353970966164323661", "4", ], [ "8862102465737572715649880371325741412406922147390", "886210246573757271564988037132574141240692214739", "0", ], ["30274960641621", "3027496064162", "1"], ["8097", "809", "7"], ["126807588951", "12680758895", "1"], [ "9874329665116237802673591422377383522420247382759", "987432966511623780267359142237738352242024738275", "9", ], [ "7063492855787523421924948449795390", "706349285578752342192494844979539", "0", ], ["88331", "8833", "1"], [ "94805898669155207632533028433760525359417106", "9480589866915520763253302843376052535941710", "6", ], ["2936095146044", "293609514604", "4"], ["16946990012545948799", "1694699001254594879", "9"], ["6919900806054232660731616", "691990080605423266073161", "6"], ["57722485750987038203448723", "5772248575098703820344872", "3"], ["62", "6", "2"], ["5781860123067848", "578186012306784", "8"], ["65453886571972255287", "6545388657197225528", "7"], ["43", "4", "3"], [ "0405235462308623467925967348123894534958757", "040523546230862346792596734812389453495875", "7", ], [ "0087832218133003424805300875159833", "008783221813300342480530087515983", "3", ], ["7868003557", "786800355", "7"], [ "3073121140530932513390786179489642454746", "307312114053093251339078617948964245474", "6", ], [ "500367135196457642427016595452317339041", "50036713519645764242701659545231733904", "1", ], [ "30099351341503084699104955474082", "3009935134150308469910495547408", "2", ], ["751427881", "75142788", "1"], [ "309425119593518451336521951102106871870086762", "30942511959351845133652195110210687187008676", "2", ], ["7641708", "764170", "8"], [ "88636815703835816498874776134403303635838609", "8863681570383581649887477613440330363583860", "9", ], ["6728", "672", "8"], [ "676719283891047251576335875356110", "67671928389104725157633587535611", "0", ], ["0330", "033", "0"], [ "10332081199705807621016704527520295741467", "1033208119970580762101670452752029574146", "7", ], ["9869488", "986948", "8"], ["7285634968854933951433", "728563496885493395143", "3"], ["43", "4", "3"], ]; const invalid = [ "2360", "2361", "2362", "2364", "2365", "2366", "2367", "2368", "2369", "002288832", "68660000", "85659885", "02937326", "35768010", "041366449", "04206544", "0020144219", "16451505", "0032495612", "56321615", "049348964", "029241902", "24163740", "09017861", "0046017765", "040497583", "33790939", "014896677", "32818403", "048321779", "03184636", "037540408", "77602520", "066357737", "025119036", "031928250", "0012341465", "1308344", "0090703029", "065888907", "0061642970", "280579137429739104195", "6085681426257633536000798077875", "717697090252304489738263410", "6882072646996151507423372", "60601", "13406", "61848424302551420827686325266353", "18829360909683931375487214661261559711480", "53193090772", "2332983077375559555860", "986", "130574480553649829079539073810665241225670", "310771541553596567492583172313", "3118992092394502110871104425402017050423252", "33987166780818899", "664906519703194714723029601693638986768533", "9204430832762997906229471953", "6391549362", "206976922680937684543527077691116", "20428", "738298975733603081758558164726183", "1607521933", "02912319235376434218185", "046563570274025", "1750542573503540", "9673732456719755291477112860274078452184", "7780777342679090497838589448116828434784", "653783514618805876413691316433", "324373637", "989695026144622025052971577726505622010850", "991424657728753644764865549859267977398898514", "648165508153387616881148814723686742865545", "392782253130738353940751", "814897949618082620108870", "6386993373893746257540", "41691800168046", "457030608141", "6841263793087756799906446", "9552951545919796571", "6971814446267281823", "71138152734193368836", "5545665534059345435252627434636333", "6813918766249588053530643625441398030467329759007", "33282033703724369522097592284", "009234", "17040798285281778", "87763635143467532856614261038600256", "41850408446012103168093140", "578", "092709999043408408684492051307235055614873", "88543035268355329879297424354145550400", "1774", "4531788126951511103018571062388558", "990134523870477090466181880843987291949885959241", "988484545707146475187582193", "13337814823379738884559814719", "837211845206674130064313", "365953110743193509999242919430961280", "0007044908113930", "075022040642805376993902144404403428563883422237", "33041762152470308493652005", "78480454218181044968858455391848174964677306", "024109559581284684764809003959256", "27542905916293537645393816923191631", "28559386938553", "2158119067583293205433009345094", "653429177787877618131", "239440969341144732177982591227", "3618483", "8945327597727070192113523493978684571944", "69191599639328935966", "868030643121162962", "61257684159688232312000684", "5751527223278021256437459438707106639209766850", "868492230934203271850368", "64456538820024959414090523", "14057229952448069389181103384", "183606217130457254050397961947309230587257976661", "7712839", "048375675356326690428997", "897", "03785499703353634697972", "10734850666647953264643789306752083992665", "83664186446638946172063939043141245747018", "08570172023118587324474475288184", "9827812806", "632514063483704528", "9638748568043987540240353189274026699231", "482875376245121369425869256810185513759457", "496299499399999976434325660531", "6446996589728505784811227428941", "63335425987989068377", "157448491539381037244214418880956255715", "35841884324640379382132453", "019678418971707105068759902113377348121832", "8943112033276", "7577068377534033599768602362104434986992", "507619306788637390321936940123708454505871099", "71372591550821", "73501885396580", "532386457638656638468285496100913781", "483035579251939931672119874624522808", "9008", "6441745654676591", "986", "09853471132", "0199133208081338774360969274932", "30539635149205750334410285067601694843525155", "6360210158582695", "27580599", "743987443332", "799008863095", "96450655620119702297287893", "6196208178904", "4000026195859872836095354268", "39023828", "636578204178149296876709828054030196095118694", "50839689220815873395", "352156059701386", "60084658173933184013423817662541896008184230", "08575", "480177471", "9109075785900545718254291511262773044", "22638499904974160068254077", "86534861427267471811165020701636", "2860901185313272434272326291694002000847", "1129820145016806344877", "8797084395644978892359418065968", "2772", "246064557926651795892", "872756656246505417163", "4947805052421", "866", "7769847411268043428919415981", "574484301811309425948493503917264518", "353526770601477145089228934847131883", "0203424", "3565411827843087689612452608935815145493528644352", "84811926080755738", "404873767913093805894324269616490700746512389454", "7454154376605849279591231929739005887", "72063023300599477633712", "63545248142077710", "563", "801278247194244966506484566", "2740081663813955", "2059070981324876078583753787965474759", "549580780549435876", "3728171351636993486735759297573574", "926299020062675598996", "55303804922197891176527", "68354315920449", "146094855209123191749979249270050710517719394483", "36994349465207142", "018", "630873264094409947107783305266", "7594", "267110237653514971619", "116681331867043910418886434886741635512600134042", "4066450816848588", "5174193344819529488220", "287607116315086331999849925741323787482838", "8300419665420968757496048455001729921", "107361629040473099989820634", "8497737270499234318982118576211683057721053604", "330664333958023183033252907748", "57497100406479863159633129104129534351923710", "3768544", "4899639794534200998067384474", "4579636350515270426440027449021694883140534468736", "9189425900", "171536708159669604756270", "665735173728679479792949206181865343670", "42428182110578094756156028628148581", "2829986547892727295", "25", "606849520401197079158", "55399583460399689735", "965301667021180096917270321416736061337", "312701222629567442236084766711598544297454262", "195904697674410738850499615279475206126553", "353590442582023309699859566075923673357471", "24169136707663783856333149168304073529066222", "23809291983102009419287805039457988262", "064855824431443239545222669527125224", "07580884219927113197750969822134886329620", "311562123398352572509", "2834729814471", "614", "49058399614661576598150567638533363830646013", "277398729114619601028359084827873738912279272", "864789294050550", "00242065956408928073459672", "25837978", "28117844114595904864845", "100903452333992572783353", "0796816008147533531567442297014676753220278", "82557932001086783880611800801069283569", "364629690028696544939525010359", "3291912582", "463739226504075743641658666181020951162429", "03339886123133952901799409094", "52425420781305012043194119532", "0006043821428195958278594288406451529343158450168", "9185354", "12820939", "0932221534079", "88008385396380835860239", "66853", "391250", "44925", "1742", "338551963235493526742666249817", "1405230658", "963658410", "455630291269591948400", "763538761081312536120204779854098", "513759472902623062491557", "0356556438785486077132555664548878", "76128793370998595537340263343929931791982609", "619231525463430335863879059389227051", "4351540517595645", "113139662", "852631527163617184055630972261", "70352909", "1509473197216", "193143350608398265638281354535148311031", "1648688984873178129512107", "9800143153419944", "6321039723741296276795370355918430296442333", "247617075390613667", "0540103669084", "9218656815729194622335467766156182", "2072736856043092870202341", "611938560904", "17935325519175474541592946722227097754", "233549863080230314876570436468350643885007", "4773480032405487787205557475517216546749862748967", "44290927", "8035216329768880484375397928952974293981361", "05179064635827017256213228387722460718", "5183515", "1825", "76447849094216676865982169414", "47488920742526678355238501196982943", "36086888918", "0766536143595539827443881549643", "1821282954412609842", "111004192", "0437698382606478169644497571154201538014", "0987071", "8692343796455967294905325", "63639474985216722032927776252961922965426776299", "558092429820863132513719582564965", "26131781797187701282763604967", "719080019857564616719389931215569325327379259", "241003972054", "641420118670", "986119600359", "9976897425950418687265090", "805252205230627782", "378333212075972784999112343003566074815913", "263034313", "33838029680940280532812072566521279788", "25388359679895429710004892", "8050312505145358186", "05467", "4421", "9775830550208081331484", "430183", "59355942435834704334", "178974252915914588906745879437023", "78171807573004775664518", "21883293014855178271982", "52141019127583600009243", "167758909625819762338700235234647321022549", "48021576826444734228545813376972485671462", "54311206893958047793", "59", "7120750557255056508656587440", "655840279755383748343382727322016606286290256208", "651318943110263712605512518862109121146116", "54817192958468979609921736779569982525753515", "37", "21805631820633605043353571467484119", "6729303540795482669499", "00985138251531", "781553643402968877436842026371795", "48973337809114904852826962702074342477150113284", "8519690004856763699427865408030213", "396326727205592664781146749485488640787", "143397142119840025672085121133884485", "296155136153941664598091184621126201", "89802921807541963965214149755326422258004387202", "178760007", "8041983188170663708369181185888400544243581554312", "112535217797118323562888161621389", "92717448258612688605991581001409739779", "066172915821490", "4252753131423440957", "31058681230453192803153478861", "493422834428237966981640401622528990", "3775265025390468252550887765