//Parser generated by rustlr for grammar sml
#![allow(unused_variables)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_parens)]
#![allow(unused_mut)]
#![allow(unused_imports)]
#![allow(unused_assignments)]
#![allow(dead_code)]
#![allow(irrefutable_let_patterns)]
#![allow(unreachable_patterns)]
use std::rc::Rc;
use std::cell::RefCell;
extern crate rustlr;
use rustlr::{Tokenizer,TerminalToken,ZCParser,ZCRProduction,Stateaction,decode_action};
use rustlr::{StrTokenizer,RawToken,LexSource};
use std::collections::{HashMap,HashSet};
static SYMBOLS:[&'static str;134] = ["_WILDCARD_TOKEN_","TERMINAL0","TERMINAL1","TERMINAL2","TERMINAL3","TERMINAL4","TERMINAL5","TERMINAL6","TERMINAL7","TERMINAL8","TERMINAL9","TERMINAL10","TERMINAL11","TERMINAL12","TERMINAL13","TERMINAL14","TERMINAL15","TERMINAL16","TERMINAL17","TERMINAL18","TERMINAL19","TERMINAL20","TERMINAL21","TERMINAL22","TERMINAL23","TERMINAL24","TERMINAL25","TERMINAL26","TERMINAL27","TERMINAL28","TERMINAL29","TERMINAL30","TERMINAL31","TERMINAL32","TERMINAL33","TERMINAL34","TERMINAL35","TERMINAL36","TERMINAL37","TERMINAL38","TERMINAL39","TERMINAL40","TERMINAL41","TERMINAL42","TERMINAL43","TERMINAL44","TERMINAL45","TERMINAL46","TERMINAL47","TERMINAL48","WILDCARD","MATCH","APPL","ABSTYPE","AND","ANDALSO","AS","CASE","DATATYPE","DO","ELSE","END","EXCEPTION","FN","FUN","HANDLE","IF","IN","INFIX","INFIXR","LET","LOCAL","NONFIX","OF","OP","OPEN","ORELSE","RAISE","REC","THEN","TYPE","VAL","WITH","WITHTYPE","WHILE","VID","TYVAR","TYCON","LAB","STRID","SCON","DIGIT","appexp","atexp","atpat","atpatn","conbind","datbind","dec","exbind","exp","expcn","expcn2","exprow","expsn","expsn2","fvalbind","infexp","match","mfvalbind","mrule","op","pat","patcn","patcn2","patrow","sconbind","sexbind","sfvalbind","spatrow","stridn","ty","tycn","tyop","typbind","tyrow","tyseq","tysn2","tyvarcn","tyvarseq","valbind","vidn","START","EOF"];
static TABLE:[u64;3648] = [137439412224,180388954112,571233927170,94490001408,73014640640,420907450369,85899411456,201863593984,103079804928,17183145986,55835099136,210454183936,154619215872,124554313728,281865819652096,282037618409473,281840049782784,562967136567298,563151817015296,563053033226240,563130342375424,563104572637184,562954251665410,563370861264897,563005788520448,563022968061952,563035852832768,563087392833536,563160407605248,563044443422720,563074507735040,844901672747009,844927442616321,844790006939650,844570960199680,844850133008385,1126269275537408,1126076001943552,1126273574305794,1126316520046593,1126453959196673,1407907461136385,1407928936038401,1407744252248064,1407748551016450,1407550978654208,1689412502749185,1689214933336064,1970741450637313,1970698501029888,1970694205669376,1970878889328641,1970500932075520,2252182067806208,2252315211726849,2533639863468032,2533837433208833,2533665634582528,2814951630700544,2814904386322432,2815320997756931,2814766949269504,2814887206518784,2814844257107968,2814852846911488,2814960221290496,2814874321420288,2814805602205696,2815170676129793,2814835666518016,2814930156060672,2814822781747200,3096680012840961,3096370773884928,3096701487546369,3096692897677313,3096589820624898,3096731552514049,3377875815628800,3377729790607362,3378253773930497,3377845754724354,3378064798056450,3378086272892930,3378069089222656,3377819984920578,3377905884266498,3377897294331906,3659539773390850,3659183291105282,3659260600516610,3659277780385794,3659247715614722,3659230535745538,3659299255222274,3659191881039874,3659745931821058,3659329319993346,3659312140124162,3659178996137986,3659355089797122,3659385154568194,3659376564633602,3659269190451202,3941212317351937,3941014747021312,4222128949231618,4222695884914690,4222249208315906,4222210553610242,4222489725632512,4222279273086978,4222133244198914,4222262093217794,4222219143544834,4222326517727234,4222197668708354,4222180488839170,4222335107661826,4222227733479426,4222305042890754,4222141834133506,4503737066782720,4503780016324608,4503694117371904,4503685526781952,4504020536393729,4503801490964480,4503616809533440,4503655462469632,4503702707175424,4503672642011136,4503724181684224,4503603925155840,4503810081554432,4503754246586368,4785276470624258,4785169096441858,4785091787030530,4785100376768512,4785130441736194,4785285060558850,4785645837811714,4785229225984002,4785177686376450,4785254995787778,4785078902128642,4785147621605378,4785199161212930,4785160506507266,4785083197095938,4785212046114818,5066914657665026,5348389632671744,5629636979064834,5629709993508866,5629572554555394,5629594029391874,5629624094162946,5629654158934018,5629503835078658,5630070770761730,5629508130045954,5629525309915138,5629701403574274,5629585439457282,5629679928737794,5629516719980546,5629602619326466,5629555374686210,5911116247859200,5911000283807744,5911043233546240,6192999246725121,6192599814701056,6192818858164224,6474044728541186,6474100563116034,6474122037952514,6474070498344962,6474130627887106,6474289541677058,6473954534227970,6474311016513538,6474298131611650,6755773106618368,7036968909733890,7037029039276034,7037084873850882,7037011859406850,7036998974504962,7036878715420674,7036977499668482,7036883010387970,7037054809079810,7037445651103746,7036947434897410,7036960319799298,7036891600322562,7037076283916290,7036930255028226,7036900191043584,7318723060170752,7599897389367298,7600189446160384,7599927454138370,7599880209498114,7599961813876738,7599841554792450,7599918864203778,7599978993745922,7599910274269186,7600034828320770,7599828669890562,7599832964857858,7600004763549698,7600026238386178,7599948928974850,7600395605573634,7881479739277314,7881423904702466,7881453969473538,7881325120782336,7881436789604354,7881870581301250,7881402429865986,7881385249996802,7881372365094914,7881501214113794,7881393839931394,7881355185225730,7881441085423616,7881316530520066,7881303645618178,7881509804048386,7881307940585474,8162967601807360,8444386743484418,8444403923353602,8444459757928450,8444266484400130,8444257894465538,8444305139105794,8444820535181314,8444429693157378,8444451167993858,8444335203876866,8444352383746050,8444631557144576,8444322318974978,8444343793811458,8444373858582530,8444253599498242,8726295512481794,8725861720784898,8725926145294338,8725732871766018,8726106533920770,8725741461700610,8725848835883010,8725810181177346,8725878900654082,8725780116406274,8725797296275458,8725728576798722,8725818771111938,8725904670457858,8725827361046530,8725934735228930,9007770488864770,9007293747494914,9007302337429506,9007207848148994,9007255092789250,9007323812265986,9007379646840834,9007285157560322,9007401121677314,9007216438083586,9007336697167874,9007409711611906,9007564329713664,9007272272658434,9007353877037058,9007203553181698,9289039304523776,9289236875968513,9570235107573760,9570351071756288,9570222222802944,9570286647574528,9570153506406402,9570273762476032,9570329597116416,9570570117185537,9570243698163712,9570720442089474,9570359662346240,9570166390325248,9570252287967232,9570157801373698,9570205043261440,9570303827378176,9851628483117058,9851727264677888,9851748739186688,9851632778084354,9851761624285184,9851778804088832,9852195418800130,9851804573827072,9851641368018946,9851718674874368,9851710084284416,9852045095534593,9851680019972096,9851697199513600,9851826048466944,9851834639056896,10133464237735936,10414660041900034,10414578437521410,10414711581507586,10414664336605184,10414776006017026,10414668631834626,10414599912357890,10414647156998146,10414784595951618,10414677221769218,10414728761376770,10414591322423298,10414698696605698,10415145373204482,10414582732488706,10414629977128962,10414754531180546,10696143606906882,10696229506252802,10696057707560962,10696173671677954,10696066297495554,10696250981089282,10696074888871936,10696152196841474,10696186556579842,10696135016972290,10696104952201218,10696203736449026,10696053412593666,10696259571023874,10696620348276738,10696122132070402,10977614290419714,10977704484732930,10977541275975682,10977725959569410,10977549865910274,10977678714929154,10977528391073794,10977627175321602,10977609995452418,10977597110550530,10977648650158082,10977618585387010,10977532686041090,10977734549504002,10977579930681346,10978095326756866,10977661535059970,11259557418303489,11259119332032512,11259385620201472,11259364145233922,11259475814055937,11259145098493952,11259205231443968,11259196641574912,11259029137588224,11259402799808513,11259175166279680,11259480109088769,11540482638741506,11540839120109568,11540547063250946,11540654437433346,11541045279457282,11540478343774210,11540577128022018,11540491228676098,11540675912269826,11540628667629570,11540684502204418,11540529883381762,11540559948152834,11540598602858498,11540568538087426,11540611487760386,11821966205714434,11822314098065410,11821953320812546,11822129414471682,11822052105060354,11822159479242754,11822520256495618,11822043515125762,11822022040289282,11822073579896834,11822103644667906,11822034925191170,11822004860420098,11821957615779842,11822086464798722,11822150889308162,12103634452742144,12103844910137345,12103625862152192,12103479833657344,12103561437970432,12103548552871936,12103432591769602,12103497013198848,12103509897969664,12103518488559616,12103604387512320,12103578617774080,12103527078363136,12103441181704194,12385401491292161,12385375717883905,12385264052076546,12385045005336576,12666477037223938,12666429792583682,12666391137878018,12666468447289346,12666382547943426,12666498512060418,12666446972452866,12666511396962306,12666485626109952,12666945188659202,12666459857354754,12666528576831490,12666584411406338,12666378252976130,12666575821471746,12666399727812610,12666567230423040,12666554346635266,12948218297384960,12948381509681153,12948402981175297,12948025023791104,12948222596153346,13229500000501760,13229877961293825,13229697572864002,13229693274095616,13511009336295424,13510901961916416,13510893372112896,13511219794083841,13510807475322882,13511000745705472,13510854717210624,13510884781522944,13510936321523712,13510816065257474,13510979271065600,13510953501327360,13510871896752128,13510923436425216,13792660411121666,13792419892953090,13792394123149314,13792303928836098,13792638936285186,13792471432560642,13792647526219778,13792449957724162,13792480022495234,14073899164631040,14073761725743104,14355236702519298,14355374141472770,14636892067856384,14918547433127938,14918727821885441,14918349860765696,14918543134359552,15199842021408768,15481497386549250,15481493087780864,15481656300601345,15481677771571201,15481299814187008,15762736140386304,16044211115327490,16044644907024386,16044284129771522,16044254065000450,16044077971341314,16044176755589122,16044090856243202,16044228295196674,16044129510948866,16044159575719938,16044146690818050,16044082266308610,16044168165654530,16044455928463362,16044275539836930,16044198230425602,16325621667201026,16325604487331842,16325651731972098,16325552947724290,16326119883407362,16325673206808578,16325634552102914,16325750516219906,16325729041383426,16325565832626178,16325557242691586,16325686091710466,16325913724190720,16325759106154498,16325703271579650,16325643142037506,16607444534951937,16607079461027840,16607096640569344,16607027924172802,16607594859855874,16607225489522688,16607032219140098,16607109525340160,16607148180242432,16607126705733632,16607178245144576,16607234080112640,16607040808091648,16607161065340928,16607118115930112,16607204014882816,16888975349776385,16888696175788032,16888674700492800,16888902335397889,16888618866245632,16888906630234113,16888863679447042,16888885154414592,16888644632707072,16888528671801344,17170119609417728,17170450323079169,17170480391389185,17170338656157698,17451916713459713,17451813632868354,17451594586128384,17451925299789825,17451955364757505,17733009434673154,17732932125261826,17732979369902082,17733133988724738,17733494765977602,17733018024607746,17733026614542338,17732927830294530,17732949308604416,17733125398790146,17732996549771266,17733078154149890,17733060974280706,17732940715196418,17733048089378818,17733103923953666,18014596082630656,18014785061257216,18014802240864257,18014879551913985,18014763586289666,18014428578643968,18014548839563264,18014574607335424,18014875255111681,18014518773088256,18014888141914113,18014544539549696,18296238564704256,18577541742919680,18577425778671616,18577713541545984,18858982359957504,18859201403486208,18859188518649856,18859334547341313,18859317367537665,18858930820677632,19140375733272578,19140457337651202,19140663496081410,19140448747716610,19140341373534210,19140311308763138,19140491697389570,19140380028239874,19422254436319233,19422138469842946,19421949490888704,19421970966183936,19422250138664961,19422177124417537,19422258731352065,19421919423102976,19421803462197248,19421816349786112,19422159944810496,19421893656641536,19703424467599360,19703806722637825,19703278438907904,19703445942894592,19703454532763648,19703613446553602,19703368633352192,19703652101128193,19703394399813632,19703634921521152,19703725115375617,19703729410408449,19984804957061122,19984899446341634,19984916626210818,19984800662093826,19984869381570562,19984753417453570,19985109899739138,19984766302355458,19984843611766786,19984882266472450,19985088424902658,19984873676537858,19984920921178114,19984736237584386,20266211214360578,20266563401678850,20266318588542978,20266344358346754,20266279933837314,20266584876515330,20266275638870018,20266395897954306,20266241279131650,20266391602987010,20266348653314050,20266374423117826,20266228394229762,20266357243248642,20547690482040832,20547853688832000,20547746314518528,20547827919093760,20547797854191616,20547776379682816,20547810739290112,20547883754061824,20547729134977024,20547875163471872,20547681897021440,20548094208901121,20547767789879296,20547759199289344,20829358735949826,20829285721505794,20829174052356098,20829272836603906,20829165462421506,20829156872486914,20829350146015234,20829302901374978,20829251361767426,20829204117127170,20829152577519618,20829242771832834,20829719513202690,20829328671178754,20829234181898242,20829221296996354,21111100001943553,21110769283366912,21110988330106882,21392471900487682,21392467604799488,21392128302120960,21392643698393089,21392274331140096,21392617928458241,21392639403556865,21673598979997696,21673641933930496,21955421853384704,22236540342304768,22236660599554048,22236725023735808,22236626239946752,22236677779357696,22236531757940736,22236647714455552,22236733614325760,22236703549095936,22236578995240960,22236609059553280,22236944069165057,22236596174782464,22236617650143232,22518118401114114,22518028206800898,22518384689086466,22518363214249986,22518195710525442,22518174235688962,22518204300460034,22518371804184578,22518144170917890,22799842488680448,23081094120341504,23081313167081474,23081424839704577,23081360415260673,23081446314475521,23362796737331200,23644417742995457,23644443512078337,23644267418484736,23644271714172930,23644439217242113,23644074144825344,23643928115806208,23925398793682944,23925458922569730,23925377318191106,23925527642046466,23925553411850242,23925446037667842,23925574886686722,23925497577275394,23925390203092994,23925428857798658,23925467512504322,23925476102438914,23925583476621314,23925381613158402,23925510462177282,23925944253874178,24207221667594240,24488469003894784,24488799720964097,24488726709141505,24488520546975744,24488443237433344,24488499071680512,24488353042989056,24488709525602304,24488688050634754,24488516255809536,24770163031277568,25051638004318210,25051659479154690,25051466205626370,25051470500593666,25051418960986114,25051393191182338,25051302996869122,25051449025757186,25332833807761410,25332872462467074,25332773678219266,25332756498350082,25333319139065858,25332765088284674,25332958361812994,25332838102728706,25332850987630594,25332885347368962,25332842397696002,25332803742990338,25332949771878402,25332902527238146,25332820922859522,25332752203382786,25332928297041922,25614377503817730,25614794115645442,25614295899439106,25614317374275586,25614325964210178,25614433338392578,25614278719569922,25614360323948546,25614403273621506,25614313078980608,25614227179962370,25614424748457986,25614231474929666,25614240064864258,25614347439046658,25614248654798850,25614308784340994,25895895430529024,25896174603010049,25896084409155584,25895843887448064,25896101588762625,25895818120986624,25895727926542336,25896178902302721,25896062934188034,25895873955233792,26177185727643648,26177537912733696,26177323166662656,26177250149859328,26458798143504384,26458660704485376,26740268822953986,26740152858836994,26740320362561538,26740487866286082,26740243053150210,26740509341122562,26740316067594242,26740135678967810,26740165743738882,26740298887725058,26740204398444546,26740273117921282,26740281707855874,26740200103477250,27021718027829248,27021748094435330,27022001500061697,27021791044108290,27022126054178817,27021679374958594,27021795337371648,27022074511360001,27021984315998208,27021773862076416,27021675082678272,27021756684369922,27021743794290688,27021627833384960,27021610655481858,27021640720252930,27021962841030658,27021786747502594,27303446411411458,27303248842063872,27303442115723264,27303102813044736,27303592441085953,27303618209316865,27303613914480641,27584934269419520,27584577786806272,27584667981250560,27584912794451970,27585028763156481,27584723815497728,27585024463273985,27584693747712000,27584745290792960,27584951449026561,27866194502877184,27866482265489409,27866452200521729,27866417841504257,27866142962745344,27866138668433408,27866422136340481,27866185912811520,27866168724422656,27866052768366592,27866057064316928,27866074243465216,27866387771162626,27866069948891136,27866198797385728,27866409250979840,27866121488695296,27866499445489665,28147527742324738,28147862749773826,28147690951081986,28147579281932290,28147695246049282,28147673771212802,28147574986964994,28147648001409026,28147884224610306,28147510562455554,28147617936637954,28147540627226626,28147656591343618,28147643706441730,28428985539887106,28429131568775170,28710460519677952,28710606548631552,28992115885146112,29273586561187842,29273474896363520,29273925869371393,29273556496416770,29273410467528706,29555031475552258,29554885446664194,29836360423112706,29836390487883778,29836712609972224,29836424847097856,30117865468329984,30117835403493376,30399417750519810,30399456405225474,30399684038492162,30399379095814146,30399340441108482,30399662563655682,30399310376337410,30399447815290882,30399473585094658,30399327556206594,30399374800846850,30399443520323586,30399495059931138,30399490764963842,30680982919053314,30680789645524994,30680909904609282,30680952854282242,30680927084478466,30680781055590402,30680974329118722,30680897019707394,30680776760623106,30680845480099842,30681343696306178,30680875544870914,30680858365001730,30680798237294592,30680828300230658,30680866954936322,30962251736285186,30962384880271362,30962818671968258,30962449304780802,30962256031252482,30962457894715394,30962333340663810,30962402060140546,30962350520532994,30962264621187074,30962427829944322,30962303275892738,30962341930598402,30962371995369474,30962320455761922,31244087497785344,31525575359463424,31525734273318913,31806826993221634,31806801228267520,31806775453614082,31807046038716418,31806796928450562,31806766863679490,31806698144202754,31806874237861890,31806732508725248,31806758273744898,31806728208973826,31806689554268162,31806852763025410,31806882827796482,31806745388843010,31806676669366274,31806809813352450,31807243605049346,31806680964333570,32088521015492610,32088516719804416,32088323446145024,32088671342034945,32088297680011264,32088177417125888,32088667047133185,32088688518561793,32088692813398017,32369635214688258,32369789833510914,32370193560436738,32369703934164994,32369721114034178,32369742588870658,32369630919720962,32369987402006530,32369639509655554,32369665279459330,32369648099590146,32369733998936066,32369768358674434,32369755473772546,32369764063707138,32369738293903362,32369626624753666,32369794128478210,32369798423445506,32369678164361218,32369832783183874,32369815603314690,32369759768739842,32370008876843010,32369673869393922,32369807013380098,32369716819066882,32369781243576322,32369691049263106,32369772653641730,32369746883837954,32369643804622850,32369708229132290,32369669574426626,32369699639197698,32369776948609026,32369712524099586,32369656689524738,32369686754295810,32369995991941122,32369751181950976,32369785538543618,32369652394557442,32369802718412802,32369660984492034,32369824193249282,32369695344230402,32369725409001474,32369811308347394,32369682459328514,32651183205646338,32651140255973378,32651127371071490,32651234745253890,32651281989894146,32651273399959554,32651247630155778,32651178910679042,32651668536950786,32651483853357058,32651191795580930,32651135961006082,32651170320744450,32651114486169602,32651230450286594,32651264810024962,32651153140875266,32651221860352002,32651462378520578,32651470968455170,32651277694926850,32651144550940674,32651148845907970,32651105896235010,32651226155319298,32651239040221186,32651161730809858,32651286284861442,32651118781136898,32651187500613634,32651166025777154,32651256220090370,32651243335188482,32651213270417410,32651208975450114,32651290579828738,32651110191202306,32651307759697922,32651200385515522,32651299169763330,32651269104992258,32651157435842562,32651131666038786,32651123076104194,32651174615711746,32651260515057666,32651251925123074,32651217565384706,32651196090548226,32651101601267714,32932945948573696,33214468169990145,33214227640811520,33214064435003394,33214201871073280,33214141741858816,33214150331662336,33214133151268864,33214103086956544,33214171806171136,33214249115451392,33214120266498048,33214055845068802,33214184691269632,33214257706041344,33495715513499648,33777100287442946,33777207661625346,33777121762279426,33777070222671874,33777083107573762,33777053042802690,33777134647181314,33777091697508354,33777014388097026,33777151827050498,33777005798162434,33777568438878210,33777199071690754,33777001503195138,33777177596854274,34058485072330754,34058622511284226,34339951459303426,34340050243551234,34340101783158786,34340149027799042,34340518394986498,34339964344205314,34340088898256898,34340041653616642,34340015883812866,34340020178780162,34339955754270722,34340033063682050,34340071718387714,34340157617733634,34340002998910978,34340037358649346,34340127552962562,34340084603289602,34339972934139906,34621787219099648,34902983016972290,34903021671677954,34903038851547138,34903098981089282,34902991606906882,34903077506252802,34902952952201218,34903468348276738,34902970132070402,34903034556579842,34903107571023874,34902965837103106,34903000196841474,34902922887430146,34903051736449026,34902901412593666,34902914297495554,34902905707560962,34902987317968896,35184565373960192,35466048933986306,35466027459149826,35466220735954946,35465971624574978,35465902905098242,35465984509476866,35466057523920898,35466001689346050,35465941559803906,35465864250392578,35465915790000130,35466418301173762,35465851365490690,35465907205963776,35465932969869314,35465872840327170,35465920084967426,35465975925506048,35465950149738498,35465855660457986,35747407944482818,35747523908599810,35747339225006082,35747425124352002,35747326340104194,35747476663959554,35747377879711746,35747395059580930,35747330635071490,35747416534417410,35747532498534402,35747446599188482,35747502433763330,35747893275787266,35747459484090370,36029183570935810,36028990297407490,36029162096099330,36028917282963458,36028827088650242,36028943052767234,36028973117538306,36028994592374786,36310387964510210,36310370784641026,36310349314129920,36310306360131586,36310658547449858,36310443799085058,36310323540000770,36310637072613378,36310319245033474,36310418029281282,36310435209150466,36310448094052354,36310302065164290,36310800288317441,36310392259477506,36591789928415234,36592133525798914,36591923072401410,36591828583120898,36591777043513346,36591897302597634,36592112050962434,36591824288153602,36591893007630338,36591867237826562,36591944547237890,36591905892532226,36591940252270594,36591759863644162,36873299264864256,36873415234355200,36873587027738624,37155177973940225,37155062002614274,37154894498955264,37154873023660032,37155173671436289,37155083477581824,37154817189412864,37154842955874304,37155100657188865,37154726994968576,37436201974104066,37436249218744322,37436253513711618,37436536981553154,37436348002992130,37436330823122946,37436558456389634,37436214859005954,37436317938221058,37436369477828610,37436292168417282,37436184794234882,37436322233188354,37436365182861314,37717844452376576,37717767142834176,37718033431003136,37717792909295616,37717822977081344,37718127927427073,37718123624857601,37717676948389888,37718011956035586,37718050610610177,37999267891445762,37999272186413058,37999297956216834,37999315136086018,37999280776347650,37999151927328770,37999319431053314,37999242121641986,37999164812230658,37999203466936322,37999486934777858,37999199171969026,37999508409614338,37999134747459586,38280790113779714,38280747164106754,38280674149662722,38280678444630018,38280639789924354,38280961912471554,38280609725153282,38280755754041346,38562260799848448,38843576858181632,38844087959617537,38843722887200768,38844066489106433,38843916160860160,38844092254453761,38843920456548354,39125172094369794,39125180684304386,39125064720187394,39125099079925762,39125034655416322,39125395433193474,39125215044042754,39125081903202304,39125103374893058,39125386842734594,39125150622744576,39406539696832514,39406655660949506,39406574055260160,39406690020687874,39406647071014914,39406509632061442,39406861818134528,39406578351538178,39688130642182144,39688349685448704,39688414109892609,39969833249538048,39969876201963521,39969493947449344,39969622795943936,39969880496996353,39969489654841344,39969566961303552,39969811769720834,39969846134898689,39969841840062465,39969609911369728,39969481062875136,39969618501435392,39969545487253504,39969562666991616,39969906264047617,39969923444047873,39969592722980864,39969498242023424,39969476766924800,40251067699691520,40251359768936449,40251093478146048,40251286746431490,40251308226248704,40251398420758529,40250951743635456,40251351178870785,40251321111609345,40251037643702272,40251316816773121,40251372653772801,40251020463964160,40251041938014208,40251072005931008,40251381240758273,40250968924160000,40251084888080384,40251097772654592,40250956039585792,40250973218734080,40532607103795202,40532529803034624,40532400945364994,40532482549743618,40532473968525312,40532491139678210,40532499729612802,40532413830266882,40532534089351170,40532405240332290,40532521204449282,40532422420201474,40532581342838784,40532577039024130,40532551269220354,40532967881048066,40532598513860610,40532469664841730,40532564162904064,40532452484972546,40814047726075904,40814348374179841,40813970417385472,40814034841501696,40814043431567360,40813918877581312,40814017653112832,40813987597123584,40814301132750849,40814258179670016,40814271065030657,40813991891435520,40813901697056768,40814266770194433,40814236699852802,40813905993007104,40814331194179585,40813923172155392,41095492628643842,41095522693414914,41095419614199810,41095466858840066,41095733146812418,41095501218578434,41095711671975938,41095484038709250,41095531283349506,41095355189690370,41095411024265218,41095557053153282,41095445384003586,41095526988382210,41095917830406146,41095359484657666,41095402434330626,41095376664526850,41095368074592258,41095496923611138,41095363779624962,41095385254461442,41095505513545730,41095393844396034,41095432499101698,41095350894723074,41095449678970882,41095548463218690,41095389549428738,41095514103480322,41095479743741954,41095436794068994,41095372369559554,41095471153807362,41095423909167106,41095458268905474,41095441089036290,41376976196993026,41376971902025730,41377006261764098,41376894592614402,41377392808820738,41376959017123842,41376933247320066,41377001966796802,41376980491960322,41376886002679810,41376834463072258,41376860232876034,41376898887581698,41376847347974146,41377032031567874,41376877412745218,41376864527843330,41376946132221954,41377023441633282,41376916067450882,41376989081894914,41376907477516290,41376838758039554,41377186661728256,41376954722156546,41376911772483586,41376825873137666,41376843053006850,41376924657385474,41376830168104962,41658416821567488,41658691700326401,41658343807713280,41658330923139072,41658442583244800,41658695995162625,41658773304311809,41658326627188736,41658459771633664,41658468361699328,41658472656207872,41658412527255552,41658395347517440,41658726063013889,41658661629984770,41658348102287360,41658683109801984,41658756124311553,41940136615280640,42221723257733121,42221276580610048,42221418315120640,42221645948583937,42221611583406082,42221422609629184,42221362480676864,42221280876560384,42221633063223296,42221345300938752,42221641653747713,42221366774988800,42221409725054976,42221392536666112,42221293761134592,42221706077732865,42221676016566273,42221298055708672,42502738666455042,42503142403407873,42502807382720512,42502901872263168,42502794497949696,42502858922721280,42502931937492992,42502824563113984,42502846037622784,42502876102524928,42502815973310464,42502725781553154,42502923346903040,42502777318408192,42784316728410112,42784673211154433,42784312434098176,42784248009129984,42784243714555904,42784625970118657,42784368268541952,42784359678476288,42784342490087424,42784295254360064,42784656031154177,42784595902005249,42784583016644608,42784372563050496,42784226534031360,42784230829981696,42784561536827394,42784591607169025,43065826056994818,43065735862681602,43065817467060226,43065851826798594,43065757337518082,43065697207975938,43065710092877826,43065881891569666,43065748747583490,43065847531831298,43065791697256450,43065795992223746,43065856121765890,43066057985228802,43065688618041346,43066036510392322,43065774517387266,43065783107321858,43065680028106754,43066242668822530,43065821762027522,43065718682812418,43065744452616194,43065714387845122,43065727272747010,43065770222419970,43065808877125634,43065684323074050,43065830351962114,43065761632485378,43065692913008642,43065838941896706,43065873301635074,43065765927452674,43065701502943234,43065675733139458,43065804582158338,43347524383997952,43628634276626434,43628771715579906,43628797493182464,43628694406168578,43628831845122050,43628715881005058,43628647161528322,43628685816233986,43629020835610625,43628806075318274,43628651464163328,43628823255187458,43629192622374914,43628776010547202,43628986463944706,43628638571593730,43628629981659138,43628767420219392,43628664341397506,43628754535710722,43629007946776576,43628711586037762,43628733060874242,43628707291070466,43629098141286401,43628660046430210,43628677226299394,43628788895449090,43628668644687872,43628801780350978,43628698701135874,43628720184492032,43628724470939650,43628741658542080,43628758830678018,43628642866561026,43628625686691842,43628780305514498,43628745945776130,43910568826961921,43910560236896257,43910482918637568,43910573112492033,43910577416830977,43910461443670018,43910242396930048,43910272464715776,43910293940011008,43910216630468608,43910500098244609,43910126436024320,44191936422608896,44191949307445248,44192082458443777,44473205240496130,44473432873762818,44473243895201794,44473076391477250,44473089276379138,44473222420365314,44473192355594242,44473411398926338,44473123636117506,44473127931084802,44473166585790466,44473059211608066,44473239600234498,44473196650561538,44754925028376577,44754718870142976,44754998042624001,44755002347159553,44754886373801986,44754641560600576,44754551366156288,44754907848769536,44754697394847744,44754667327062016,45036009166012418,45036185266159616,45036155194900482,45317501319577600,45317947996045313,45317647348269056,45317874981797889,45317952300711937,45317836327223298,45317668823564288,45317591514021888,45317617280483328,45317857802190848,45599122327535618,45598989183549442,45599311306096642,45599027838255106,45599066492960770,45599023543287810,45598976298647554,45599139507404802,45599105147666434,45599332780933122,45598959118778370,45599096557731842,45599143802372098,45599092262764546,45880631663394818,45880446979801090,45880438389866498,45880477044572162,45880507109343234,45880524289212418,45880425504964610,45880515699277826,45880575828819970,45880545764048898,45880601598623746,45880992440647682,45880429799931906,45880558648950786,45880494224441346,45880623073460226,46161973503983616,46443384056315904,46443530085138432,46725215508758528,46725391602352129,46725022235099136,46724876206080000,46725219804446722,46725387307515905,46725365839233025,47006840816009217,47006351182790656,47006497211809792,47006862284226561,47006866579062785,47006694781157378,47006690485469184,47287946425663488,47287808986644480,47569421402439680,47569399924064256,47569331204521984,47569644734513154,47569283957522434,47851119711420418,48132762191069185,48132251089633280,48132397118652416,48132590392311808,48132740723113985,48132594688000002,48132766485905409,48413747541835778,48413734656933890,48413794786476034,48413781901574146,48413726066999298,48413764721704962,48413872095887362,48413876390854658,48413730361966594,48413743246868482,48413829146214402,48413700297195522,48413721772032002,48413738951901186,48413850621050882,48413884980789250,48413751836803074,48413859210985474,48413717477064706,48413799081443330,48413880685821954,48413807671377922,48413897865691138,48413837736148994,48413816261312514,48413786196541442,48413704592162818,48413846326083586,48413769016672258,48414082549284866,48413833441181698,48413811966345218,48413760426737666,48413867800920066,48413713182097410,48413708887130114,48413773311639554,48414069664382978,48413889275756546,48413790491508738,48414061074448386,48413820556279810,48413824851247106,48413906455625730,48414267232878594,48413756131770370,48413854916018178,48413842031116290,48413863505952770,48413777606606850,48695591879966721,48695226806042624,48695256870354944,48695243985584128,48695188153106432,48695179575492608,48695351359897600,48695274050748416,48695381425127424,48695295525257216,48695308410355712,48695372834537472,48695325590159360,48695265460944896,48977122697084929,48977011024461826,48977144171855873,48976791977721856,48977058279194625,49258146699935746,49258262664052738,49258176764706818,49258189649608706,49258224009347074,49258206829477890,49258322793594882,49258258369085442,49258125225099266,49258301318758402,49258129520066562,49258245484183554,49258275548954626,49258215419412482,49258692160782338,49258331383529474,49258211124445186,49258193944576002,49258232608260096,49258138110001154,49539741931143168,49539960977883138,49540094132092929,49540072650506241,49821612051333121,49821590583705601,49821100949897216,49821444548263938,49821246978916352,49821616346169345,49821440252575744,50102661828575232,50102593109032960,50102717663019008,50103005425631233,50102666122887168,50102691884564480,50102910931304450,50103022605631489,50102975366168577,50102941001646081,50102709072953344,50102932411121664,50102945296482305,50102580224458752,50102575928508416,50102644648837120,50102721957527552,50102597403607040,50384450342944769,50384072380317696,50384415978356737,50384497582342145,50384166861275136,50384136805285888,50384141099597824,50384407387832320,50384184049664000,50384196934238208,50384385908015106,50384050905219072,50384055201169408,50384119625547776,50384480402341889,50384420273192961,50384068085743616,50384192639729664,50665860886560768,50665573123686400,50665646138785794,50665508699832322,50947121115561986,50946983676608514,50947048100397056,50947335863271424,51228643334488064,51228832313114624,51228922506969089,51228926812749825,51228810838147074,51228475830501376,51228621859192832,51228591791407104,51228566024945664,51228849492721665,51510307289890818,51510066771722242,51510019527081986,51510041001918466,51510285815054338,51509950807605250,51509967987474434,51510092541526018,51510079656624130,51510036706951170,51509980878471168,51510109721395202,51509955102572546,51510096836493314,51509933627736066,51509972282441730,51510294408462338,51510083951591426,51510049598013440,51791408614866944,51791554643689472,52073063980269568,52354440157659138,52354526057005058,52354401502953474,52354556121776130,52354495992233986,52354465927462914,52354388618051586,52354410092888066,52354483107332098,52354732215435266,52354354258313218,52354478812364802,52354521762037762,52354470222430210,52354710740598786,52354418682822658,52354547531841538,52354500287201282,52354392913018882,52354435862691842,52354371438182402,52354375733149698,52354384323084290,52354358553280514,52354422977789954,52354491697266690,52354431567724546,52354530351972354,52354504582168578,52354367143215106,52354349963345922,52354362848247810,52354457337528322,52354448747593730,52354444452626434,52354513172103170,52354916899028994,52635837825286146,52635940904501250,52635859300122626,52636031098814466,52635833530318850,52635923724632066,52635829235351554,52636005329010690,52635945199468546,52635876479991810,52635842120253442,52636207192473602,52636022508879874,52635988149141506,52635867890057218,52635932314566658,52635919429664770,52635970969272322,52635850710188034,52635893659860994,52635897954828290,52635824940384258,52635975264239618,52636001034043394,52635953789403138,52636391876067330,52635966674305026,52635863595089922,52635910839730178,52636185717637122,52635846415220738,52635958084370434,52635885069926402,52635996739076098,52635979559206914,52635915134697474,52635906544762882,52917463138172928,52917428778303488,52917308507291650,52917338572062722,52917372943794176,52917480318107648,53198783498616832,53198813563322368,53480309999861762,53480249870319618,53480421669011458,53480610647572482,53480292819992578,53480254165286914,53480271345156098,53480288525025282,53480267050188802,53480357244502018,53480318589796354,53480262755221506,53480275640123394,53480391604240386,53480284230057986,53480404489142274,53480378719338498,53480456028749826,53480370129403906,53480447438815234,53480322884763650,53480344359600130,53480301409927170,53480365834436610,53480413079076866,53480430258946050,53480331474698242,53480383014305794,53480632122408962,53480816806002690,53480258460254210,53480340064632834,53480400194174978,53480335769665538,53480348654567426,53480425963978754,53480395899207682,53761888068304896,53761905248239616,53761737747136512,53761870891057152,53761797873926144,53761733452234752,53761853708435456,54043212723978240,54043345868029952,54324683405918208,54324820844806144,54606574994522113,54606197030977536,54606265750257664,54606317290389504,54606244276207616,54606291511934976,54606261455945728,54606321584898048,54606179851829248,54606605053001729,54606544923852801,54606192736403456,54606510558674946,54606540629016577,54606622233001985,54606175555878912,54606308700323840,54606532038492160,54887989833367552,54888161632124929,54888140165611521,54887796559708160,54887650530689024,54888165926961153,54887994129055746,55169494877274113,55169215703678976,55169129805250560,55169258653745152,55169211409367040,55169490582437889,55169524948074497,55169142689824768,55169241465356288,55169146984398848,55169194229628928,55169271538319360,55169481991913472,55169125509300224,55169267243810816,55169555006423041,55169572186423297,55169460512096258,55450600481161216,55451047157628929,55450690675605504,55451034284589057,55450956963774464,55450935488806914,55450974143381505,55450746509852672,55451051461967873,55451042872098817,55450767985147904,55450716442066944,55732122710900736,55732157074046976,55732178545410048,55732230085214208,55732212905279488,56013696468451328,56013619159760896,56013906922045440,56013885442228226,56013919807406081,56013915512569857,56013567619956736,56013640633810944,56013997116555265,56013666395488256,56013979943174145,56013550439432192,56295566574813186,56295059768672258,56295149962985474,56295154257952770,56295197207625730,56295175732789250,56295016818999298,56295180038635520,56295145668018178,56295128498831360,56295008229064706,56295072664322048,56295021113966594,56295081243508738,56295051178737666,56295205797560322,56295119898214402,56295003934097410,56295085538476034,56294999639130114,56295068358606850,56295107013312514,56295012524032002,56295089833443330,56295098423377922,56295033998868482,56295162858700800,56295132783116290,56295038293835778,56576508973613058,56576478908841986,56576594872958978,56576496088711170,56576573398122498,56576616347795458,56576543333351426,56576672182370306,56576646412566530,56576650707533826,56576620642762754,56576603462893570,56576500383678466,56577041549557762,56576835391127554,56576564808187906,56576569103155202,56576607757860866,56576547628318722,56576624937730050,56576637822631938,56576474613874690,56576483203809282,56576517563547650,56576856865964034,56576629232697346,56576680772304898,56576590577991682,56576655002501122,56576513268580354,56576556218253314,56576487498776578,56576534743416834,56576560513220610,56576526153482242,56576491793743874,56576581988057090,56858129992056832,56858078452252672,56858112812122112,56858022617743360,56857966786707456,57139841181286401,57139424583614464,57139630726447104,57139476107362304,57139514762264576,57139544826576896,57139557711675392,57139600661217280,57139622135857152,57139493286903808,57139437454426112,57139523352068096,57139574891479040,57139506171674624,57420933920129024,57420972571164672,57421028405673984,57421079945478144,57421062765543424,57702529139736578,57702408880652290,57702572089409538,57702503369932802,57702554909540354,57702516254834690,57702756773003266,57702507664900098,57702447535357954,57702374520913922,57702494779998210,57702460420259842,57702456125292546,57702443240390658,57702387405815810,57702524844769282,57702735298166786,57702417470586882,57702426060521474,57702481895096322,57702413175619586,57702941456596994,57702434650456066,57702464715227138,57702546319605762,57702395995750402,57702550614573058,57702490485030914,57702383110848514,57702473305161730,57702400290717698,57702520549801986,57702378815881218,57702537729671170,57702391700783106,57702580679344130,57702469010194434,57984012707627010,57984231750959106,57983853793837058,57983931103248386,57983883858608130,57983849498869762,57983939693182978,57984004117692418,57983922513313794,57983875268673538,57983982642855938,57983969757954050,57983943988150274,57983978347888642,57983862383771650,57983901038477314,57984029887496194,57984021297561602,57983991232790530,57984025592528898,57983956873052162,57984210276122626,57983965462986754,57983888153575426,57983948283117570,57983999822725122,57983909628411906,57983866678738946,57983995527757826,57983918218346498,57983870973706242,57984055657299970,57983935398215682,57984416434552834,57983858088804354,57983892448542722,57984047067365378,58265470505254914,58265431850549250,58265530634797058,58265522044862466,58265457620353026,58265414670680066,58265337361268738,58265479095189506,58265363131072514,58265393195843586,58265410389934080,58265500570025986,58265397490810882,58265891412049922,58265333066301442,58265376015974402,58265324476366850,58265487685124098,58265453325385730,58265341656236034,58265423260614658,58265406080745474,58265328771334146,58265474800222210,58265345951203330,58265358836105218,58265384605908994,58265444735451138,58265504864993282,58546876776775680,58546872471584768,58547160234459136,58828480588283906,58828437638610946,58828347444297730,58828373214101506,58828407573839874,58828450523512834,58828334559395842,58828424753709058,58828356034232322,58828274429853698,58828343149330434,58828283019788290,58828471998349314,58828454818480130,58828360329199618,58828841365536770,58828429048676354,58828291609722882,58828394688937986,58828313084559362,58828295904690178,58828287314755586,58828364624166914,58828420458741762,58828403278872578,58828325969461250,58828381804036098,58828308789592066,58828278724820994,59109904030302210,59109758001414146,59391297401716736,59391232978190338,59391585164591104,59391379007078402,59673098794041345,59672841092726784,59673060139466754,59672892635807744,59673081614434304,59673176115642369,59672815326265344,59673171808288769,59672871160512512,59672725131821056,59954247355138048,59954212995989506,59954182931218434,59954535118012416,60236018686558210,60236186189627393,60235675088191488,60235821117210624,60236014390870016,60236190484463617,60236164723834881,60517231669870594,60517167245361154,60517235964837890,60517214490001410,60517266029608962,60517132885622786,60517137180590082,60517691231371266,60517201605099522,60517124295688194,60517296094380034,60517485072941058,60517283209478146,60517218784968706,60517184425230338,60517171540328450,60517158655426562,60517175835295746,60517240259805186,60517253144707074,60517506547777538,60517205900066818,60517188720197634,60517128590655490,60517223079936002,60517210195034114,60517313274249218,60517287504445442,60517304684314626,60517493662875650,60517321864183810,60517145770524674,60517244554772482,60517248849739778,60517154360459266,60517330454118402,60517141475557378,60517150065491970,60517257439674370,60517291799412738,60517278914510850,60517308979281922,60517300389347330,60517180130263042,60517197310132226,60517270324576258,60517162950393858,60517274619543554,60517261734641666,60517193015164930,60798972943400960,61080258932899842,61080173033553922,61080237458063362,61080211688259586,61080241753030658,61080091429175298,61080108609044482,61080168738586626,61080117198979074,61080220278194178,61080280407736322,61080233163096066,61080215983226882,61080263227867138,61080271817801730,61080456501395458,61080185918455810,61080142968782850,61080074249306114,61080151558717442,61080078544273410,61080160148652034,61080207393292290,61080254637932546,61080641184989186,61080203098324994,61080130086633472,61080246047997954,61080121493946370,61080443616493570,61080112904011778,61080190213423106,61080164443619330,61080125788913666,61080250342965250,61080138673815554,61080181623488514,61080147263750146,61080100019109890,61080228868128770,61080194508390402,61080224573161474,61080198806175744,61080104314077186,61080134378848258,61080155853684738,61080087134208002,61080095724142594,61080082839240706,61080435026558978,61361660895690754,61361635125886978,61361931478630402,61361669485625346,61361613651050498,61361686665494530,61361695255429122,61361557816475650,61361648010788866,61361682370527234,61361579291312130,61361656600723458,61361673782886400,61361755384971266,61361587881246722,61361605063344128,61361716730265602,61361690960461826,61361617946017794,61361596471181314,61361712435298306,61361553521508354,61362116162224130,61361733910134786,61361592176214018,61361574996344834,61361600766148610,61361918593335298,61361609356083202,61361910003793922,61361721025232898,61361626535952386,61361643715821570,61361738205102082,61361562111442946,61361639420854274,61361570701377538,61361622240985090,61361566406410242,61361708140331010,61361549226541058,61361699550396418,61361678075559938,61361583586279426,61361703845363714,61361729615167490,61361746795036674,61361630830919682,61361725320200194,61361665190658050,61643389274423296,61643393570111490,61643539607519233,61643196000763904,61643049971744768,61643561073180673,61643565368016897,61924868546887682,62206124480069634,62206120185102338,62206163134775298,62206171724709890,62206154544840706,62206180314644482,62205974156214274,62206008515952642,62206107300200450,62205995631050754,62206017105887234,62206098710265858,62206029990789122,62206094415298562,62206133070004226,62205991336083458,62206334933467138,62206047170658306,62206137364971522,62205987041116162,62206038580723714,62206111595167746,62206090120331266,62206145954906114,62206356408303618,62206012810919938,62206085825363970,62206103005233154,62206150249873410,62206055760592898,62206141659938818,62206060055560194,62206115890135042,62206042875691010,62205978451181570,62206051465625602,62206064350527490,62206034285756418,62206343523401730,62205999926018050,62206158839808002,62206072940462082,62206025695821826,62206004220985346,62206081530396674,62205982746148866,62206068645494786,62206541091897346,62206128775036930,62206021400854530,62487595162337282,62487573689729024,62487509262991362,62487453428416514,62488016069132290,62487569392533506,62487625227108354,62487612342206466,62487547917697026,62487513557958658,62487560802598914,62487535032795138,62487599457304578,62487539327762434,62487517852925954,62487818500177922,62487646701944834,62487608047239170,62487504970186752,62487492083122178,62487496378089474,62487457723383810,62487629522075650,62487466313318402,62487449133449218,62487556507631618,62487590867369986,62487526442860546,62487586572402690,62487638112010242,62487582277435394,62487616637173762,62487655291879426,62487543622729730,62487809910702082,62487633817042946,62487522147893250,62487530737827842,62487577982468098,62487483493187586,62487565097566210,62487500673056770,62487474903252994,62487620932141058,62487470608285698,62487487788154882,62487479198220290,62487603752271874,62487462018351106,62487831385538562,62768975644065794,62769130262888450,62769005708836866,62769014298771458,62768928399425538,62769057248444418,62769100198117378,62768992823934978,62769491040141314,62768924104458242,62768936989360130,62769022888706050,62769121672953858,62769074428313602,62769044363542530,63050497867972610,63050596652220418,63050536522678274,63050420558561282,63050403378692098,63050605242155010,63050575177383938,63050489278038018,63050463508234242,63050399083724802,63050467803201538,63050966019407874,63050484989034496,63050532227710978,63050480688103426,63050450623332354,63050519342809090,63050411968626690,63050549407580162,63331899832008704,63332410933444609,63332389467848705,63332243430375426,63332415228280833,63332045861027840,63332239134687232,63613525130936322,63613555195707394,63613915972960258,63613486476230658,63613353332244482,63613430641655810,63613469296361474,63613400576884738,63613434936623106,63613361922179074,63613370512113666,63613447821524994,63613439231590402,63613413461786626,63613349037277186,63613417756753922,63613482181263362,63613499361132546,63613546605772802,63894824013332482,63894836898234370,63894828308299778,63894944272416770,63895193383731202,63895000106991618,63894875552940034,63895390949015554,63894914207645698,63894845488168962,63894922797580290,63894957157318658,63894974337187842,63895030171762690,63894948573282304,63894892732809218,63894888437841922,63895021581828098,63894905617711106,63894879853740032,64176372012220416,64176505147949058,64176303284486146,64176427846729728,64176419248603138,64176389183832066,64176449313374210,64176397773766658,64176384888864770,64176380593897474,64176367708995586,64176298989518850,64176865925201922,64176475083177986,64176350529126402,64176320464355330,64176432133505026,64176311874420738,64176479386533888,64176462206599168,64176496558014466,64457842685313026,64457795440672770,64457954363244544,64457855570214914,64457872750084098,64458340901519362,64457894224920578,64457907109822466,64457950059495426,64457971534331906,64457825505443842,64457773965836290,64457778260803586,64457902823440384,64457846988931072,64457864160149506,64457924289691650,64457937183309824,64457786850738178,64457980124266498,64739321959219200,64739609722093568,64739257536151554,64739326255628290,64739437924777986,64739403565039618,64739287600922626,64739394975105026,65020809814605826,65020728210227202,65020839879376898,65020814109573122,65020900008919042,65020723915259906,65021106167349250,65020857059246082,65020775454867458,65020766864932866,65020736800161794,65020749685063682,65020921483755522,65020741095129090,65020792634736642,65020732505194498,65021084692512770,65020874239115266,65020745390096386,65020822699507714,65020818404540418,65020852764278786,65020878534082562,65020844174344194,65021290850942978,65020904303886338,65020831289442306,65020796929703938,65020805519638530,65020930073690114,65020865649180674,65020887124017154,65020784044802050,65020762569965570,65020895713951746,65020758274998274,65020869944147970,65302572570968064,65584064720732161,65583716828119040,65584099087351809,65584129144717313,65584034650390530,65583832792039424,65584069015568385,65584146324717569,65584056130207744,65583768367923200,65583789841973248,65583815603650560,65583721122693120,65583785547661312,65583841382105088,65583703943544832,65583699647594496,65583845676613632,65865183205457922,65865277694738434,65865221860163586,65865355004149762,65865187500425218,65865329234345986,65865170320556034,65865290579640322,65865346414215170,65865715781402626,65865208975261698,65865320644411394,65865230450098178,65865234745065474,65865161730621442,65865153140686850,65865509622972418,65865191795392514,65865531097808898,65865174615523330,65865200385327106,65865256219901954,65865269104803842,65865166025588738,65865243335000066,65865264809836546,65865312054476802,65865217565196290,65865247629967362,65865157435654146,65865294874607618,65865303464542210,65865148845719554,65865239040032770,65865324939378690,65865299169574914,65865281989705730,66146649601015808,66146782745460736,66147018968989697,66146765557071872,66146653896966144,66146671076114432,66146984603811842,66147014674153473,66146739795394560,66147096278138881,66146718321344512,66147049040838657,66146666781540352,66146791335526400,66147079098138625,66146795630034944,66146735501082624,66147006083629056,66428098799403010,66428107389337602,66428296367898626,66428180403781634,66428120274239490,66428231943389186,66428124569206786,66428184698748930,66428279188029442,66428219058487298,66428193288683522,66428459576655874,66428253418225666,66428274893062146,66428171813847042,66428249123258370,66428304957833218,66428206173585410,66428270598094850,66428115979272194,66428262008160258,66428481051492354,66428141749075970,66428240533323778,66428150339010562,66428227648421890,66428137454108674,66428244828291074,66428665735086082,66428197583650818,66428158928945154,66428214763520002,66428111684304898,66428188993716226,66428133159141378,66428167518879746,66428103094370306,66709685454503936,66710046231560193,66709668274765824,66709616734961664,66709956037050368,66709732698882048,66709745583456256,66709968922411009,66709998994325505,66709934557233154,66709964627574785,66709603850387456,66709689748815872,66709741288947712,66709715510493184,66709599554437120,66710029051559937,66709621029535744,66991439604285441,66991190487203840,66991091711672320,66991078827098112,66991220560166912,66991216265658368,66991207675592704,66991143251476480,66991473971101697,66991160431214592,66991164725526528,66991074531147776,66991431013761024,66991096006246400,66991409533943810,66991521208270849,66991443899121665,66991504028270593,67272905990471680,67272635407925248,67272570982957056,67272948947877889,67272618228187136,67272914580996097,67272979004981249,67272566688382976,67272695536877568,67272918875832321,67272553803808768,67272549507858432,67272639702237184,67272682652303360,67272884510654466,67272996184981505,67272665463914496,67272691242369024,67554161914871810,67554196274610178,67554153324937218,67554359483367426,67554024475918338,67554007296049154,67554011591016450,67554204864544770,67554118965198850,67554003001081858,67554174799773698,67554097490362370,67554114670231554,67554088900427778,67554179094740994,67554084605460482,67554041655787522,67554170504806402,67554106080296962,67554144735002626,67554020180951042,67554093195395074,67554131850100738,67554037360820226,67554140440035330,67554565641797634,67554080310493186,67553998706114562,67554149029969922,67554380958203906,67554058835656706,67554071720558594,67554067425591298,67554050245722114,67554033065852930,67554127555133442,67554015885983746,67835495157465090,67835490862497794,67835834459881474,67835855934717954,67835482272563202,67835486567530498,67836040618311682,67835654071255042,67835525222236162,67835533812170754,67835645481320450,67835559581974530,67835546697072642,67835477977595906,67835619711516674,67835473682628610,67835568171909122,67835508042366978,67835581056811010,67835563876941826,67835628301451266,67835593941712898,67835602531647490,67835499452432386,67835516632301570,67835649776287746,67835615416549378,67835555287007234,67835572466876418,67835624006483970,67835679841058818,67835606826614786,67835636891385858,67835512337334274,67835542402105346,67835671251124226,67835589646745602,68117330920603648,68117120467009536,68117090394046464,68116991618514944,68116974437990400,68117043158319104,68117116172500992,68117060338057216,68117403935113217,68117343805964289,68117421115113473,68116995913089024,68116978733940736,68117339511128065,68117373878075393,68117107582435328,68117064632369152,68117309440786434,68398629795921922,68398586857259008,68398604037193728,68398462292197378,68398556781477890,68398531011674114,68398990573174786,68398440817360898,68398457997230082,68398621205987330,68398445112328194,68398578256314370,68398543896576002,68398599731150850,68398513831804930,68398423637491714,68398569666379778,68398436522393602,68398552497389568,68398483767033858,68398496662880256,68398522421739522,68398509536837634,68398427932459010,68398573961347074,68398475177099266,68398505241870338,68398432227426306,68398492356968450,68680465549819906,68680023177363456,68680061822894082,68679967333613570,68679980218515458,68680018873221122,68679907204071426,68679971628580866,68679950153744386,68679915794006018,68679911499038722,68679997398384642,68680104772567042,68680267987812354,68679932973875202,68680048937992194,68679958743678978,68680053232959490,68680005988319234,68679988808450050,68679984513482754,68679954457821184,68680044643024898,68680096182632450,68679920088973314,68680027463155714,68680074707795970,68679937268842498,68680079002763266,68679902909104130,68680031758123010,68679898614136834,68961553990615040,68961506734964738,68961528209801218,68961523914833922,68961390770847746,68961502450810880,68961446616301568,68961463785291778,68961455195357186,68961382180913154,68961407950716930,68961493850062850,68961425130586114,68961536810680320,68961480965160962,68961549684637698,68961412245684226,68961386475880450,68961472375226370,68961395065815042,68961373590978562,68961433720520706,68961459490324482,68961377885945858,68961519619866626,68961571159474178,68961579749408770,68961442310455298,68961940526661634,69242934481649664,69242981711740930,69243024661413890,69242882927493122,69242857157689346,69242900107362306,69242998891610114,69242852862722050,69242977416773634,69242861452656642,69242917287231490,69243415503437826,69242865747623938,69243046136250370,69242908697296898,69242870042591234,69243011776512002,69242947352002562,69242848567754754,69243003186577410,69242938762067970,69242994596642818,69243054726184962,69242968826839042,69242887222460418,69242930172133378,69242955941937154,69242921582198786,69243028956381186,69524783121432577,69524800297500673,69524705799307264,69524465277599744,69524722978914305,69524791707631617,69524516820680704,69524495345385472,69524349316694016,69524795993161729,69524439511138304,69524684324339714,69806159309504512,69805996089344002,69805807110782978,69805974614507522,69805897305096194,69805944549736450,69806365456531458,69805819995684866,69806004679278594,69805953139671042,69805815700717570,69805888715161602,69805798520848386,69805871535292418,69805832880586754,69805811405750274,69805880125227010,69805802815815682,69805927369867266,69805867240325122,69805978909474818,69805837175554050,69805850060455938,69805961729605634,69805931664834562,69805918779932674,69805858650390530,69805884420194306,69805948844703746,69805905895030786,70087634277761026,70087299274964992,70087385175031808,70087432419409920,70087698715181057,70087320750063616,70087745952088065,70087655757578240,70087316455489536,70087445303984128,70087668642938881,70087389469343744,70087415231021056,70087367995293696,70087303570915328,70087664348102657,70087728772087809,70087441009475584,70369109254471682,70369130734288896,70369190871826433,70369220928798721,70369143619649537,70368864446054400,70368920280694784,70368791432200192,70368860151742464,70369139324813313,70368907396120576,70368778547625984,70368890207731712,70368915986186240,70369203748798465,70369173692022785,70368774251675648,70368795726774272,70368842972004352,70650395257405440,70650618596360193,70650266408910848,70650339422765056,70650648668798977,70650253524336640,70650390962896896,70650270703484928,70650614301523969,70650605710999552,70650382372831232,70650584231182338,70650249228386304,70650365184442368,70650695905509377,70650678725509121,70650317948715008,70650335128453120,70931870228938752,70931724200247296,70932097862467585,70932170876715009,70931891704233984,70932059207892994,70931840161153024,70932080682860544,70932175181053953,70932166595248129,70931814394691584,71213220656906240,71213332326252544,71213315137863680,71213598622351361,71213534184603650,71213555664420864,71213216362332160,71213289376186368,71213628678930433,71213340916318208,71213203477757952,71213345210826752,71213568549781505,71213199181807616,71213285081874432,71213564254945281,71213645858930689,71213267902136320,71494656976879618,71494803005767682,71494721400274944,71495009163149312,71776277983789058,71776179201638400,71776492731629570,71776247921180672,71776131954900994,72057671365230592,72339129155059712,72339442685050882,72339197874601984,72339219347079170,72339081908125698,72620552587116546,72620698616004610,72620599831756802,72620745860644866,72620681436135426,72620638486462466,72620561177051138,72620548292149250,72620617011625986,72621115227832322,72620685731102722,72620668551233538,72620754450579458,72620604131770368,72620917661761538,72620629896527874,72620612716658690,72620672851312640,72620647076397058,72620634191495170,72620569766985730,72620724385808386,72902212259545088,73183627101470720,73183652859871234,73183678641274880,73183661461340160,73183571266961408,73183506830983170,73465153617985536,73465011872006146,73464981807235074,73465046243672064,73465102078181376,73465136438050816,73746628594696192,73746461079240706,73746611414761472,73746577054892032,73746594223226882,73746521220382720,74028069199675394,74027996197093376,74028103571406848,74028052031602688,74028086391472128,74027931760721922,74309561368182784,74309527008313344,74309411032727554,74309578548117504,74309544176713730,74309471173804032,74590946150514688,74591036344893440,74590881714208770,74591053524828160,74591019153162242,74591001985024000,74872399641837570,74872434015862784,74872382461968386,74872481246216194,74872511310987266,74872438296543234,74872545670725634,74872502721052674,74872365282099202,74872356692164610,74872528490856450,74872348102230018,74872554260660226,74872386756935682,74872416821706754,74872429706608642,74872421116674050,74872369577066498,74872524195889154,74872468361314306,74872498426085378,74872446886477826,74872915037913090,74872408231772162,74872476951248898,74872494131118082,74872360987131906,74872455476412418,74872352397197314,75153896103936000,75153951938445312,75153861733580802,75153874618482690,75153969107763202,75153913273188354,75153930453057538,75153904683253762,75153977697697794,75154020647370754,75153956222861314,75153999172534274,75154003478249472,75154029237305346,75153973402730498,75153835963777026,75153883208417282,75153986298314752,75153857438613506,75153831668809730,75154390014558210,75153827373842434,75153823078875138,75153921863122946,75153943337959426,75153844553711618,75153840258744322,75153908978221058,75153891798351874,75435310956412928,75435302366412800,75716901891866624,75716953431670784,75716846057357312,75716777326149634,75716936251736064,75716785916084226,75998308154540032,75998428408381440,75998411228446720,75998376868577280,75998321034067968,76279796000423938,76279929144410114,76279821770227714,76279740165849090,76279774525587458,76279727280947202,76279873309835266,76279920554475522,76279808885325826,76279744460816386,76279731575914498,76279856129966082,76279791705456642,76279903374606338,76279813180293122,76279899079639042,76279761640685570,76279843245064194,76279830360162306,76279757345718274,76280289921662978,76279804590358530,76279783115522050,76279869014867970,76279735870881794,76279722985979906,76279851834998786,76279877604802562,76279886194737154,76561404121186306,76561197962756098,76561236617461762,76561378361802752,76561331106742274,76561202257723394,76561279567134722,76561266682232834,76561249502363650,76561283862102018,76561395531251714,76561361181868032,76561326821998592,76561305336938498,76561348286611458,76561352581578754,76561318221840386,76561219437592578,76561343991644162,76561270987489280,76561764898439170,76561374056415234,76561258092298242,76561210847657986,76561206552690690,76561215142625282,76561288157069314,76561232322494466,76561296747003906,76843188351270913,76843209815556097,76843038016798720,76842844743139328,76843214110392321,76842698714120192,76843042312486914,77124263887110144,77124573133733889,77124319721750528,77124315427241984,77124289648787456,77124259592798208,77124177988681728,77124190873255936,77124530175344640,77124543060705281,77124173692731392,77124603189854209,77124508695527426,77124620369854465,77124195167830016,77124242413060096,77124538765869057,77124306837176320,77405713085366274,77405691610529794,77405798984712194,77405730265235458,77406189826736130,77405695905497090,77406005143142402,77405764624973826,77405773214908418,77405820459548674,77405717380333570,77405631480987650,77405829049483266,77405756035039234,77405704495431682,77405661545758722,77405708790398978,77405786099810306,77405803279679490,77405983668305922,77405627186020354,77405768919941122,77405622891053058,77405644365889538,77405794689744898,77405721675300866,77405648660856834,77405743150137346,77405738855170050,77405674430660610,77405777509875714,77405657250791426,77405665840726018,77405635775954946,77405683020595202,77405751740071938,77405640070922242,77687256790597632,77687269675171840,77687140826677248,77687523087220737,77687213840531456,77687209546219520,77687553143275521,77687480128765952,77687127942103040,77687239602208768,77687458648948738,77687570323275777,77687145121251328,77687123646152704,77687265380663296,77687192366481408,77687493014126593,77687488719290369,77968744651882496,77968963696001025,77968955105476608,77968731767308288,77969045299986433,77968667343192064,77968714578919424,77968740357373952,77969028119986177,77968998063996929,77968967990837249,77968688817242112,77968602918813696,77968684522930176,77968598622863360,77968933625659394,77968615803387904,77968620097961984,78250202448199682,78250172385525760,78250417195974658,78250056419311618,78250103665983488,78531595824463872,78531531388551170,78531651658973184,78531703198777344,78531677417439234,78531686018842624,78813178175488000,78813070801174528,78813126635683840,78813010659966978,78813002070032386,78813160995553280,79094605896744962,79094472752758786,79094489932627970,79094635972263936,79094562947072002,79094627371581442,79095039688441858,79094485637660674,79094545777885184,79094648846417922,79094524292366338,79094541472235522,79094554357137410,79094580126941186,79094494227595266,79094532882300930,79094593011843074,79094653152198656,79094601612394496,79094618781646850,79094511407464450,79094507112497154,79094481342693378,79094558652104706,79094678911188994,79094477047726082,79094670321254402,79094623076614146,79094571537006594,];
pub fn make_parser() -> ZCParser<(),()>
{
let mut parser1:ZCParser<(),()> = ZCParser::new(137,282);
let mut rule = ZCRProduction::<(),()>::new_skeleton("start");
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expcn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expcn");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expcn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expcn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expsn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expsn");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expsn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("expsn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exprow");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exprow");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("appexp");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("appexp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("infexp");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("infexp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item5_ = parser.popstack(); let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exp");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("match");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("match");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("mrule");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item6_ = parser.popstack(); let mut _item5_ = parser.popstack(); let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("dec");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("stridn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("stridn");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("vidn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("vidn");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("valbind");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("valbind");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("valbind");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("fvalbind");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("fvalbind");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("mfvalbind");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("mfvalbind");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sfvalbind");
rule.Ruleaction = |parser|{ let mut _item5_ = parser.popstack(); let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("op");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("op");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyop");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyop");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpatn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpatn");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("typbind");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("typbind");
rule.Ruleaction = |parser|{ let mut _item5_ = parser.popstack(); let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarseq");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarseq");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarseq");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarseq");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarcn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyvarcn");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("datbind");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("datbind");
rule.Ruleaction = |parser|{ let mut _item5_ = parser.popstack(); let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("conbind");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("conbind");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sconbind");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sconbind");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exbind");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("exbind");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sexbind");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sexbind");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("sexbind");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("atpat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patcn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patcn");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patcn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patcn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patrow");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patrow");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("patrow");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("spatrow");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("spatrow");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("spatrow");
rule.Ruleaction = |parser|{ let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("pat");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("pat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("pat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("pat");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("pat");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("ty");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyseq");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyseq");
rule.Ruleaction = |parser|{ <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyseq");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyseq");
rule.Ruleaction = |parser|{ let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tycn");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tycn");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tysn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tysn2");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyrow");
rule.Ruleaction = |parser|{ let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("tyrow");
rule.Ruleaction = |parser|{ let mut _item4_ = parser.popstack(); let mut _item3_ = parser.popstack(); let mut _item2_ = parser.popstack(); let mut _item1_ = parser.popstack(); let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
rule = ZCRProduction::<(),()>::new_skeleton("START");
rule.Ruleaction = |parser|{ let mut _item0_ = parser.popstack(); <()>::default()};
parser1.Rules.push(rule);
parser1.Errsym = "";
for i in 0..3648 {
let symi = ((TABLE[i] & 0x0000ffff00000000) >> 32) as usize;
let sti = ((TABLE[i] & 0xffff000000000000) >> 48) as usize;
parser1.RSM[sti].insert(SYMBOLS[symi],decode_action(TABLE[i]));
}
for s in SYMBOLS { parser1.Symset.insert(s); }
load_extras(&mut parser1);
return parser1;
} //make_parser
pub fn parse_with<'t>(parser:&mut ZCParser<(),()>, lexer:&mut dyn Tokenizer<'t,()>) -> Result<(),()>
{
let _xres_ = parser.parse(lexer); if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
}//parse_with public function
pub fn parse_train_with<'t>(parser:&mut ZCParser<(),()>, lexer:&mut dyn Tokenizer<'t,()>, parserpath:&str) -> Result<(),()>
{
let _xres_ = parser.parse_train(lexer,parserpath); if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
}//parse_train_with public function
// Lexical Scanner using RawToken and StrTokenizer
pub struct smllexer<'t> {
stk: StrTokenizer<'t>,
keywords: HashSet<&'static str>,
lexnames: HashMap<&'static str,&'static str>,
shared_state: Rc<RefCell<()>>,
}
impl<'t> smllexer<'t>
{
pub fn from_str(s:&'t str) -> smllexer<'t> {
Self::new(StrTokenizer::from_str(s))
}
pub fn from_source(s:&'t LexSource<'t>) -> smllexer<'t> {
Self::new(StrTokenizer::from_source(s))
}
pub fn new(mut stk:StrTokenizer<'t>) -> smllexer<'t> {
let mut lexnames = HashMap::with_capacity(64);
let mut keywords = HashSet::with_capacity(64);
let shared_state = Rc::new(RefCell::new(<()>::default()));
for kw in ["fn","infixr","val","LAB","orelse","VID","_","if","DIGIT","and","op","fun","else","_WILDCARD_TOKEN_","TYVAR","do","while","infix","case","withtype","STRID","raise","of","handle","as","abstype","then","exception","open","in","SCON","TYCON","type","let","andalso","rec","local","end","nonfix","with","datatype",] {keywords.insert(kw);}
for c in ['}',';',')','*',':','|','{',']','=',',','(','[','#',] {stk.add_single(c);}
for d in ["=>","->",] {stk.add_double(d);}
for d in ["...",] {stk.add_triple(d);}
for (k,v) in [(r"do","DO"),(r"=>","MATCH"),(r"}","TERMINAL36"),(r"type","TYPE"),(r"raise","RAISE"),(r"case","CASE"),(r"exception","EXCEPTION"),(r";","TERMINAL3"),(r"while","WHILE"),(r")","TERMINAL34"),(r"andalso","ANDALSO"),(r"*","TERMINAL29"),(r"rec","REC"),(r"if","IF"),(r":","TERMINAL17"),(r"end","END"),(r"and","AND"),(r"nonfix","NONFIX"),(r"local","LOCAL"),(r"open","OPEN"),(r"|","TERMINAL20"),(r"{","TERMINAL6"),(r"infix","INFIX"),(r"]","TERMINAL9"),(r"let","LET"),(r"infixr","INFIXR"),(r"as","AS"),(r"=","TERMINAL44"),(r"fn","FN"),(r",","TERMINAL2"),(r"in","IN"),(r"of","OF"),(r"->","APPL"),(r"withtype","WITHTYPE"),(r"orelse","ORELSE"),(r"(","TERMINAL40"),(r"handle","HANDLE"),(r"_","TERMINAL45"),(r"val","VAL"),(r"datatype","DATATYPE"),(r"...","WILDCARD"),(r"fun","FUN"),(r"with","WITH"),(r"abstype","ABSTYPE"),(r"[","TERMINAL27"),(r"#","TERMINAL22"),(r"else","ELSE"),(r"then","THEN"),(r"op","OP"),] {lexnames.insert(k,v);}
smllexer {stk,keywords,lexnames,shared_state}
}
}
impl<'t> Tokenizer<'t,()> for smllexer<'t>
{
fn nextsym(&mut self) -> Option<TerminalToken<'t,()>> {
let tokopt = self.stk.next_token();
if let None = tokopt {return None;}
let token = tokopt.unwrap();
match token.0 {
RawToken::Alphanum(sym) if self.keywords.contains(sym) => {
let truesym = self.lexnames.get(sym).unwrap_or(&sym);
Some(TerminalToken::from_raw(token,truesym,<()>::default()))
},
RawToken::Symbol(s) if self.lexnames.contains_key(s) => {
let tname = self.lexnames.get(s).unwrap();
Some(TerminalToken::from_raw(token,tname,<()>::default()))
},
RawToken::Symbol(s) => Some(TerminalToken::from_raw(token,s,<()>::default())),
RawToken::Alphanum(s) => Some(TerminalToken::from_raw(token,s,<()>::default())),
_ => Some(TerminalToken::from_raw(token,"<LexicalError>",<()>::default())),
}
}
fn linenum(&self) -> usize {self.stk.line()}
fn column(&self) -> usize {self.stk.column()}
fn position(&self) -> usize {self.stk.current_position()}
fn current_line(&self) -> &str {self.stk.current_line()}
fn get_line(&self,i:usize) -> Option<&str> {self.stk.get_line(i)}
fn get_slice(&self,s:usize,l:usize) -> &str {self.stk.get_slice(s,l)}
}//impl Tokenizer
fn load_extras(parser:&mut ZCParser<(),()>)
{
}//end of load_extras: don't change this line as it affects augmentation