You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ERC20.json 474KB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052
  1. {
  2. "contractName": "ERC20",
  3. "abi": [
  4. {
  5. "anonymous": false,
  6. "inputs": [
  7. {
  8. "indexed": true,
  9. "name": "from",
  10. "type": "address"
  11. },
  12. {
  13. "indexed": true,
  14. "name": "to",
  15. "type": "address"
  16. },
  17. {
  18. "indexed": false,
  19. "name": "value",
  20. "type": "uint256"
  21. }
  22. ],
  23. "name": "Transfer",
  24. "type": "event"
  25. },
  26. {
  27. "anonymous": false,
  28. "inputs": [
  29. {
  30. "indexed": true,
  31. "name": "owner",
  32. "type": "address"
  33. },
  34. {
  35. "indexed": true,
  36. "name": "spender",
  37. "type": "address"
  38. },
  39. {
  40. "indexed": false,
  41. "name": "value",
  42. "type": "uint256"
  43. }
  44. ],
  45. "name": "Approval",
  46. "type": "event"
  47. },
  48. {
  49. "constant": true,
  50. "inputs": [],
  51. "name": "totalSupply",
  52. "outputs": [
  53. {
  54. "name": "",
  55. "type": "uint256"
  56. }
  57. ],
  58. "payable": false,
  59. "stateMutability": "view",
  60. "type": "function"
  61. },
  62. {
  63. "constant": true,
  64. "inputs": [
  65. {
  66. "name": "account",
  67. "type": "address"
  68. }
  69. ],
  70. "name": "balanceOf",
  71. "outputs": [
  72. {
  73. "name": "",
  74. "type": "uint256"
  75. }
  76. ],
  77. "payable": false,
  78. "stateMutability": "view",
  79. "type": "function"
  80. },
  81. {
  82. "constant": false,
  83. "inputs": [
  84. {
  85. "name": "recipient",
  86. "type": "address"
  87. },
  88. {
  89. "name": "amount",
  90. "type": "uint256"
  91. }
  92. ],
  93. "name": "transfer",
  94. "outputs": [
  95. {
  96. "name": "",
  97. "type": "bool"
  98. }
  99. ],
  100. "payable": false,
  101. "stateMutability": "nonpayable",
  102. "type": "function"
  103. },
  104. {
  105. "constant": true,
  106. "inputs": [
  107. {
  108. "name": "owner",
  109. "type": "address"
  110. },
  111. {
  112. "name": "spender",
  113. "type": "address"
  114. }
  115. ],
  116. "name": "allowance",
  117. "outputs": [
  118. {
  119. "name": "",
  120. "type": "uint256"
  121. }
  122. ],
  123. "payable": false,
  124. "stateMutability": "view",
  125. "type": "function"
  126. },
  127. {
  128. "constant": false,
  129. "inputs": [
  130. {
  131. "name": "spender",
  132. "type": "address"
  133. },
  134. {
  135. "name": "value",
  136. "type": "uint256"
  137. }
  138. ],
  139. "name": "approve",
  140. "outputs": [
  141. {
  142. "name": "",
  143. "type": "bool"
  144. }
  145. ],
  146. "payable": false,
  147. "stateMutability": "nonpayable",
  148. "type": "function"
  149. },
  150. {
  151. "constant": false,
  152. "inputs": [
  153. {
  154. "name": "sender",
  155. "type": "address"
  156. },
  157. {
  158. "name": "recipient",
  159. "type": "address"
  160. },
  161. {
  162. "name": "amount",
  163. "type": "uint256"
  164. }
  165. ],
  166. "name": "transferFrom",
  167. "outputs": [
  168. {
  169. "name": "",
  170. "type": "bool"
  171. }
  172. ],
  173. "payable": false,
  174. "stateMutability": "nonpayable",
  175. "type": "function"
  176. },
  177. {
  178. "constant": false,
  179. "inputs": [
  180. {
  181. "name": "spender",
  182. "type": "address"
  183. },
  184. {
  185. "name": "addedValue",
  186. "type": "uint256"
  187. }
  188. ],
  189. "name": "increaseAllowance",
  190. "outputs": [
  191. {
  192. "name": "",
  193. "type": "bool"
  194. }
  195. ],
  196. "payable": false,
  197. "stateMutability": "nonpayable",
  198. "type": "function"
  199. },
  200. {
  201. "constant": false,
  202. "inputs": [
  203. {
  204. "name": "spender",
  205. "type": "address"
  206. },
  207. {
  208. "name": "subtractedValue",
  209. "type": "uint256"
  210. }
  211. ],
  212. "name": "decreaseAllowance",
  213. "outputs": [
  214. {
  215. "name": "",
  216. "type": "bool"
  217. }
  218. ],
  219. "payable": false,
  220. "stateMutability": "nonpayable",
  221. "type": "function"
  222. }
  223. ],
  224. "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Implementation of the `IERC20` interface. * This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using `_mint`. For a generic mechanism see `ERC20Mintable`. * *For a detailed writeup see our guide [How to implement supply mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. * Additionally, an `Approval` event is emitted on calls to `transferFrom`. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` functions have been added to mitigate the well-known issues around setting allowances. See `IERC20.approve`.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See `IERC20.allowance`.\"},\"approve(address,uint256)\":{\"details\":\"See `IERC20.approve`. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See `IERC20.balanceOf`.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to `approve` that can be used as a mitigation for problems described in `IERC20.approve`. * Emits an `Approval` event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to `approve` that can be used as a mitigation for problems described in `IERC20.approve`. * Emits an `Approval` event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"totalSupply()\":{\"details\":\"See `IERC20.totalSupply`.\"},\"transfer(address,uint256)\":{\"details\":\"See `IERC20.transfer`. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See `IERC20.transferFrom`. * Emits an `Approval` event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of `ERC20`; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `value`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzzr://1604f5b6d6e916c154efd8c6720cda069e5ba32dfa0a9dedf2b42e5b02d07f89\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzzr://07fb42206812a17c1f71e548cfa5cec6f9aa1ae0ca5df870718ca4aa9759d1a5\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzzr://aa8b45b57edafc3d67bc5d916327ea16807fae33f753ca163ae0c4061b789766\"]}},\"version\":1}",
  225. "bytecode": "0x608060405234801561001057600080fd5b50610710806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a0823114610166578063a457c2d71461018c578063a9059cbb146101b8578063dd62ed3e146101e4576100a5565b8063095ea7b3146100aa57806318160ddd146100ea57806323b872dd14610104578063395093511461013a575b600080fd5b6100d6600480360360408110156100c057600080fd5b50600160a060020a038135169060200135610212565b604080519115158252519081900360200190f35b6100f2610228565b60408051918252519081900360200190f35b6100d66004803603606081101561011a57600080fd5b50600160a060020a0381358116916020810135909116906040013561022e565b6100d66004803603604081101561015057600080fd5b50600160a060020a038135169060200135610285565b6100f26004803603602081101561017c57600080fd5b5035600160a060020a03166102c1565b6100d6600480360360408110156101a257600080fd5b50600160a060020a0381351690602001356102dc565b6100d6600480360360408110156101ce57600080fd5b50600160a060020a038135169060200135610318565b6100f2600480360360408110156101fa57600080fd5b50600160a060020a0381358116916020013516610325565b600061021f338484610350565b50600192915050565b60025490565b600061023b848484610446565b600160a060020a03841660009081526001602090815260408083203380855292529091205461027b918691610276908663ffffffff61059216565b610350565b5060019392505050565b336000818152600160209081526040808320600160a060020a0387168452909152812054909161021f918590610276908663ffffffff6105f216565b600160a060020a031660009081526020819052604090205490565b336000818152600160209081526040808320600160a060020a0387168452909152812054909161021f918590610276908663ffffffff61059216565b600061021f338484610446565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600160a060020a038316151561039a5760405160e560020a62461bcd0281526004018080602001828103825260248152602001806106c16024913960400191505060405180910390fd5b600160a060020a03821615156103e45760405160e560020a62461bcd02815260040180806020018281038252602281526020018061067a6022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a03831615156104905760405160e560020a62461bcd02815260040180806020018281038252602581526020018061069c6025913960400191505060405180910390fd5b600160a060020a03821615156104da5760405160e560020a62461bcd0281526004018080602001828103825260238152602001806106576023913960400191505060405180910390fd5b600160a060020a038316600090815260208190526040902054610503908263ffffffff61059216565b600160a060020a038085166000908152602081905260408082209390935590841681522054610538908263ffffffff6105f216565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105ec576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561064f576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820d508fef87366948927f9a8d179b6e30108f6468136cc4c57105c9d5c35238b740029",
  226. "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a0823114610166578063a457c2d71461018c578063a9059cbb146101b8578063dd62ed3e146101e4576100a5565b8063095ea7b3146100aa57806318160ddd146100ea57806323b872dd14610104578063395093511461013a575b600080fd5b6100d6600480360360408110156100c057600080fd5b50600160a060020a038135169060200135610212565b604080519115158252519081900360200190f35b6100f2610228565b60408051918252519081900360200190f35b6100d66004803603606081101561011a57600080fd5b50600160a060020a0381358116916020810135909116906040013561022e565b6100d66004803603604081101561015057600080fd5b50600160a060020a038135169060200135610285565b6100f26004803603602081101561017c57600080fd5b5035600160a060020a03166102c1565b6100d6600480360360408110156101a257600080fd5b50600160a060020a0381351690602001356102dc565b6100d6600480360360408110156101ce57600080fd5b50600160a060020a038135169060200135610318565b6100f2600480360360408110156101fa57600080fd5b50600160a060020a0381358116916020013516610325565b600061021f338484610350565b50600192915050565b60025490565b600061023b848484610446565b600160a060020a03841660009081526001602090815260408083203380855292529091205461027b918691610276908663ffffffff61059216565b610350565b5060019392505050565b336000818152600160209081526040808320600160a060020a0387168452909152812054909161021f918590610276908663ffffffff6105f216565b600160a060020a031660009081526020819052604090205490565b336000818152600160209081526040808320600160a060020a0387168452909152812054909161021f918590610276908663ffffffff61059216565b600061021f338484610446565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600160a060020a038316151561039a5760405160e560020a62461bcd0281526004018080602001828103825260248152602001806106c16024913960400191505060405180910390fd5b600160a060020a03821615156103e45760405160e560020a62461bcd02815260040180806020018281038252602281526020018061067a6022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a03831615156104905760405160e560020a62461bcd02815260040180806020018281038252602581526020018061069c6025913960400191505060405180910390fd5b600160a060020a03821615156104da5760405160e560020a62461bcd0281526004018080602001828103825260238152602001806106576023913960400191505060405180910390fd5b600160a060020a038316600090815260208190526040902054610503908263ffffffff61059216565b600160a060020a038085166000908152602081905260408082209390935590841681522054610538908263ffffffff6105f216565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105ec576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561064f576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820d508fef87366948927f9a8d179b6e30108f6468136cc4c57105c9d5c35238b740029",
  227. "sourceMap": "1232:6578:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1232:6578:10;;;;;;;",
  228. "deployedSourceMap": "1232:6578:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1232:6578:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2453:145;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2453:145:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1514:89;;;:::i;:::-;;;;;;;;;;;;;;;;3055:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3055:252:10;;;;;;;;;;;;;;;;;:::i;3702:203::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3702:203:10;;;;;;;;:::i;1661:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1661:108:10;-1:-1:-1;;;;;1661:108:10;;:::i;4392:213::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4392:213:10;;;;;;;;:::i;1972:153::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1972:153:10;;;;;;;;:::i;2183:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2183:132:10;;;;;;;;;;:::i;2453:145::-;2518:4;2534:36;2543:10;2555:7;2564:5;2534:8;:36::i;:::-;-1:-1:-1;2587:4:10;2453:145;;;;:::o;1514:89::-;1584:12;;1514:89;:::o;3055:252::-;3144:4;3160:36;3170:6;3178:9;3189:6;3160:9;:36::i;:::-;-1:-1:-1;;;;;3235:19:10;;;;;;:11;:19;;;;;;;;3223:10;3235:31;;;;;;;;;3206:73;;3215:6;;3235:43;;3271:6;3235:43;:35;:43;:::i;:::-;3206:8;:73::i;:::-;-1:-1:-1;3296:4:10;3055:252;;;;;:::o;3702:203::-;3807:10;3782:4;3828:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;3828:32:10;;;;;;;;;;3782:4;;3798:79;;3819:7;;3828:48;;3865:10;3828:48;:36;:48;:::i;1661:108::-;-1:-1:-1;;;;;1744:18:10;1718:7;1744:18;;;;;;;;;;;;1661:108::o;4392:213::-;4502:10;4477:4;4523:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4523:32:10;;;;;;;;;;4477:4;;4493:84;;4514:7;;4523:53;;4560:15;4523:53;:36;:53;:::i;1972:153::-;2041:4;2057:40;2067:10;2079:9;2090:6;2057:9;:40::i;2183:132::-;-1:-1:-1;;;;;2281:18:10;;;2255:7;2281:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2183:132::o;7117:329::-;-1:-1:-1;;;;;7209:19:10;;;;7201:68;;;;-1:-1:-1;;;;;7201:68:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7287:21:10;;;;7279:68;;;;-1:-1:-1;;;;;7279:68:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7358:18:10;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;7408:31;;;;;;;;;;;;;;;;;7117:329;;;:::o;5079:422::-;-1:-1:-1;;;;;5176:20:10;;;;5168:70;;;;-1:-1:-1;;;;;5168:70:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5256:23:10;;;;5248:71;;;;-1:-1:-1;;;;;5248:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5350:17:10;;:9;:17;;;;;;;;;;;:29;;5372:6;5350:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;5330:17:10;;;:9;:17;;;;;;;;;;;:49;;;;5412:20;;;;;;;:32;;5437:6;5412:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5389:20:10;;;:9;:20;;;;;;;;;;;;:55;;;;5459:35;;;;;;;5389:20;;5459:35;;;;;;;;;;;;;5079:422;;;:::o;1274:179:9:-;1332:7;1359:6;;;;1351:49;;;;;-1:-1:-1;;;;;1351:49:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:9;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:9:o",
  229. "source": "pragma solidity ^0.5.0;\n\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @dev Implementation of the `IERC20` interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using `_mint`.\n * For a generic mechanism see `ERC20Mintable`.\n *\n * *For a detailed writeup see our guide [How to implement supply\n * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an `Approval` event is emitted on calls to `transferFrom`.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See `IERC20.approve`.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n /**\n * @dev See `IERC20.totalSupply`.\n */\n function totalSupply() public view returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See `IERC20.balanceOf`.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See `IERC20.transfer`.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See `IERC20.allowance`.\n */\n function allowance(address owner, address spender) public view returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See `IERC20.approve`.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public returns (bool) {\n _approve(msg.sender, spender, value);\n return true;\n }\n\n /**\n * @dev See `IERC20.transferFrom`.\n *\n * Emits an `Approval` event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of `ERC20`;\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `value`.\n * - the caller must have allowance for `sender`'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to `approve` that can be used as a mitigation for\n * problems described in `IERC20.approve`.\n *\n * Emits an `Approval` event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to `approve` that can be used as a mitigation for\n * problems described in `IERC20.approve`.\n *\n * Emits an `Approval` event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to `transfer`, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a `Transfer` event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a `Transfer` event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destoys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a `Transfer` event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 value) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _totalSupply = _totalSupply.sub(value);\n _balances[account] = _balances[account].sub(value);\n emit Transfer(account, address(0), value);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an `Approval` event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = value;\n emit Approval(owner, spender, value);\n }\n\n /**\n * @dev Destoys `amount` tokens from `account`.`amount` is then deducted\n * from the caller's allowance.\n *\n * See `_burn` and `_approve`.\n */\n function _burnFrom(address account, uint256 amount) internal {\n _burn(account, amount);\n _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));\n }\n}\n",
  230. "sourcePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
  231. "ast": {
  232. "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
  233. "exportedSymbols": {
  234. "ERC20": [
  235. 3520
  236. ]
  237. },
  238. "id": 3521,
  239. "nodeType": "SourceUnit",
  240. "nodes": [
  241. {
  242. "id": 3125,
  243. "literals": [
  244. "solidity",
  245. "^",
  246. "0.5",
  247. ".0"
  248. ],
  249. "nodeType": "PragmaDirective",
  250. "src": "0:23:10"
  251. },
  252. {
  253. "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
  254. "file": "./IERC20.sol",
  255. "id": 3126,
  256. "nodeType": "ImportDirective",
  257. "scope": 3521,
  258. "sourceUnit": 3648,
  259. "src": "25:22:10",
  260. "symbolAliases": [],
  261. "unitAlias": ""
  262. },
  263. {
  264. "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
  265. "file": "../../math/SafeMath.sol",
  266. "id": 3127,
  267. "nodeType": "ImportDirective",
  268. "scope": 3521,
  269. "sourceUnit": 3124,
  270. "src": "48:33:10",
  271. "symbolAliases": [],
  272. "unitAlias": ""
  273. },
  274. {
  275. "baseContracts": [
  276. {
  277. "arguments": null,
  278. "baseName": {
  279. "contractScope": null,
  280. "id": 3128,
  281. "name": "IERC20",
  282. "nodeType": "UserDefinedTypeName",
  283. "referencedDeclaration": 3647,
  284. "src": "1250:6:10",
  285. "typeDescriptions": {
  286. "typeIdentifier": "t_contract$_IERC20_$3647",
  287. "typeString": "contract IERC20"
  288. }
  289. },
  290. "id": 3129,
  291. "nodeType": "InheritanceSpecifier",
  292. "src": "1250:6:10"
  293. }
  294. ],
  295. "contractDependencies": [
  296. 3647
  297. ],
  298. "contractKind": "contract",
  299. "documentation": "@dev Implementation of the `IERC20` interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using `_mint`.\nFor a generic mechanism see `ERC20Mintable`.\n * *For a detailed writeup see our guide [How to implement supply\nmechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an `Approval` event is emitted on calls to `transferFrom`.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See `IERC20.approve`.",
  300. "fullyImplemented": true,
  301. "id": 3520,
  302. "linearizedBaseContracts": [
  303. 3520,
  304. 3647
  305. ],
  306. "name": "ERC20",
  307. "nodeType": "ContractDefinition",
  308. "nodes": [
  309. {
  310. "id": 3132,
  311. "libraryName": {
  312. "contractScope": null,
  313. "id": 3130,
  314. "name": "SafeMath",
  315. "nodeType": "UserDefinedTypeName",
  316. "referencedDeclaration": 3123,
  317. "src": "1269:8:10",
  318. "typeDescriptions": {
  319. "typeIdentifier": "t_contract$_SafeMath_$3123",
  320. "typeString": "library SafeMath"
  321. }
  322. },
  323. "nodeType": "UsingForDirective",
  324. "src": "1263:27:10",
  325. "typeName": {
  326. "id": 3131,
  327. "name": "uint256",
  328. "nodeType": "ElementaryTypeName",
  329. "src": "1282:7:10",
  330. "typeDescriptions": {
  331. "typeIdentifier": "t_uint256",
  332. "typeString": "uint256"
  333. }
  334. }
  335. },
  336. {
  337. "constant": false,
  338. "id": 3136,
  339. "name": "_balances",
  340. "nodeType": "VariableDeclaration",
  341. "scope": 3520,
  342. "src": "1296:46:10",
  343. "stateVariable": true,
  344. "storageLocation": "default",
  345. "typeDescriptions": {
  346. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  347. "typeString": "mapping(address => uint256)"
  348. },
  349. "typeName": {
  350. "id": 3135,
  351. "keyType": {
  352. "id": 3133,
  353. "name": "address",
  354. "nodeType": "ElementaryTypeName",
  355. "src": "1305:7:10",
  356. "typeDescriptions": {
  357. "typeIdentifier": "t_address",
  358. "typeString": "address"
  359. }
  360. },
  361. "nodeType": "Mapping",
  362. "src": "1296:28:10",
  363. "typeDescriptions": {
  364. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  365. "typeString": "mapping(address => uint256)"
  366. },
  367. "valueType": {
  368. "id": 3134,
  369. "name": "uint256",
  370. "nodeType": "ElementaryTypeName",
  371. "src": "1316:7:10",
  372. "typeDescriptions": {
  373. "typeIdentifier": "t_uint256",
  374. "typeString": "uint256"
  375. }
  376. }
  377. },
  378. "value": null,
  379. "visibility": "private"
  380. },
  381. {
  382. "constant": false,
  383. "id": 3142,
  384. "name": "_allowances",
  385. "nodeType": "VariableDeclaration",
  386. "scope": 3520,
  387. "src": "1349:69:10",
  388. "stateVariable": true,
  389. "storageLocation": "default",
  390. "typeDescriptions": {
  391. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  392. "typeString": "mapping(address => mapping(address => uint256))"
  393. },
  394. "typeName": {
  395. "id": 3141,
  396. "keyType": {
  397. "id": 3137,
  398. "name": "address",
  399. "nodeType": "ElementaryTypeName",
  400. "src": "1358:7:10",
  401. "typeDescriptions": {
  402. "typeIdentifier": "t_address",
  403. "typeString": "address"
  404. }
  405. },
  406. "nodeType": "Mapping",
  407. "src": "1349:49:10",
  408. "typeDescriptions": {
  409. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  410. "typeString": "mapping(address => mapping(address => uint256))"
  411. },
  412. "valueType": {
  413. "id": 3140,
  414. "keyType": {
  415. "id": 3138,
  416. "name": "address",
  417. "nodeType": "ElementaryTypeName",
  418. "src": "1378:7:10",
  419. "typeDescriptions": {
  420. "typeIdentifier": "t_address",
  421. "typeString": "address"
  422. }
  423. },
  424. "nodeType": "Mapping",
  425. "src": "1369:28:10",
  426. "typeDescriptions": {
  427. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  428. "typeString": "mapping(address => uint256)"
  429. },
  430. "valueType": {
  431. "id": 3139,
  432. "name": "uint256",
  433. "nodeType": "ElementaryTypeName",
  434. "src": "1389:7:10",
  435. "typeDescriptions": {
  436. "typeIdentifier": "t_uint256",
  437. "typeString": "uint256"
  438. }
  439. }
  440. }
  441. },
  442. "value": null,
  443. "visibility": "private"
  444. },
  445. {
  446. "constant": false,
  447. "id": 3144,
  448. "name": "_totalSupply",
  449. "nodeType": "VariableDeclaration",
  450. "scope": 3520,
  451. "src": "1425:28:10",
  452. "stateVariable": true,
  453. "storageLocation": "default",
  454. "typeDescriptions": {
  455. "typeIdentifier": "t_uint256",
  456. "typeString": "uint256"
  457. },
  458. "typeName": {
  459. "id": 3143,
  460. "name": "uint256",
  461. "nodeType": "ElementaryTypeName",
  462. "src": "1425:7:10",
  463. "typeDescriptions": {
  464. "typeIdentifier": "t_uint256",
  465. "typeString": "uint256"
  466. }
  467. },
  468. "value": null,
  469. "visibility": "private"
  470. },
  471. {
  472. "body": {
  473. "id": 3151,
  474. "nodeType": "Block",
  475. "src": "1567:36:10",
  476. "statements": [
  477. {
  478. "expression": {
  479. "argumentTypes": null,
  480. "id": 3149,
  481. "name": "_totalSupply",
  482. "nodeType": "Identifier",
  483. "overloadedDeclarations": [],
  484. "referencedDeclaration": 3144,
  485. "src": "1584:12:10",
  486. "typeDescriptions": {
  487. "typeIdentifier": "t_uint256",
  488. "typeString": "uint256"
  489. }
  490. },
  491. "functionReturnParameters": 3148,
  492. "id": 3150,
  493. "nodeType": "Return",
  494. "src": "1577:19:10"
  495. }
  496. ]
  497. },
  498. "documentation": "@dev See `IERC20.totalSupply`.",
  499. "id": 3152,
  500. "implemented": true,
  501. "kind": "function",
  502. "modifiers": [],
  503. "name": "totalSupply",
  504. "nodeType": "FunctionDefinition",
  505. "parameters": {
  506. "id": 3145,
  507. "nodeType": "ParameterList",
  508. "parameters": [],
  509. "src": "1534:2:10"
  510. },
  511. "returnParameters": {
  512. "id": 3148,
  513. "nodeType": "ParameterList",
  514. "parameters": [
  515. {
  516. "constant": false,
  517. "id": 3147,
  518. "name": "",
  519. "nodeType": "VariableDeclaration",
  520. "scope": 3152,
  521. "src": "1558:7:10",
  522. "stateVariable": false,
  523. "storageLocation": "default",
  524. "typeDescriptions": {
  525. "typeIdentifier": "t_uint256",
  526. "typeString": "uint256"
  527. },
  528. "typeName": {
  529. "id": 3146,
  530. "name": "uint256",
  531. "nodeType": "ElementaryTypeName",
  532. "src": "1558:7:10",
  533. "typeDescriptions": {
  534. "typeIdentifier": "t_uint256",
  535. "typeString": "uint256"
  536. }
  537. },
  538. "value": null,
  539. "visibility": "internal"
  540. }
  541. ],
  542. "src": "1557:9:10"
  543. },
  544. "scope": 3520,
  545. "src": "1514:89:10",
  546. "stateMutability": "view",
  547. "superFunction": 3585,
  548. "visibility": "public"
  549. },
  550. {
  551. "body": {
  552. "id": 3163,
  553. "nodeType": "Block",
  554. "src": "1727:42:10",
  555. "statements": [
  556. {
  557. "expression": {
  558. "argumentTypes": null,
  559. "baseExpression": {
  560. "argumentTypes": null,
  561. "id": 3159,
  562. "name": "_balances",
  563. "nodeType": "Identifier",
  564. "overloadedDeclarations": [],
  565. "referencedDeclaration": 3136,
  566. "src": "1744:9:10",
  567. "typeDescriptions": {
  568. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  569. "typeString": "mapping(address => uint256)"
  570. }
  571. },
  572. "id": 3161,
  573. "indexExpression": {
  574. "argumentTypes": null,
  575. "id": 3160,
  576. "name": "account",
  577. "nodeType": "Identifier",
  578. "overloadedDeclarations": [],
  579. "referencedDeclaration": 3154,
  580. "src": "1754:7:10",
  581. "typeDescriptions": {
  582. "typeIdentifier": "t_address",
  583. "typeString": "address"
  584. }
  585. },
  586. "isConstant": false,
  587. "isLValue": true,
  588. "isPure": false,
  589. "lValueRequested": false,
  590. "nodeType": "IndexAccess",
  591. "src": "1744:18:10",
  592. "typeDescriptions": {
  593. "typeIdentifier": "t_uint256",
  594. "typeString": "uint256"
  595. }
  596. },
  597. "functionReturnParameters": 3158,
  598. "id": 3162,
  599. "nodeType": "Return",
  600. "src": "1737:25:10"
  601. }
  602. ]
  603. },
  604. "documentation": "@dev See `IERC20.balanceOf`.",
  605. "id": 3164,
  606. "implemented": true,
  607. "kind": "function",
  608. "modifiers": [],
  609. "name": "balanceOf",
  610. "nodeType": "FunctionDefinition",
  611. "parameters": {
  612. "id": 3155,
  613. "nodeType": "ParameterList",
  614. "parameters": [
  615. {
  616. "constant": false,
  617. "id": 3154,
  618. "name": "account",
  619. "nodeType": "VariableDeclaration",
  620. "scope": 3164,
  621. "src": "1680:15:10",
  622. "stateVariable": false,
  623. "storageLocation": "default",
  624. "typeDescriptions": {
  625. "typeIdentifier": "t_address",
  626. "typeString": "address"
  627. },
  628. "typeName": {
  629. "id": 3153,
  630. "name": "address",
  631. "nodeType": "ElementaryTypeName",
  632. "src": "1680:7:10",
  633. "stateMutability": "nonpayable",
  634. "typeDescriptions": {
  635. "typeIdentifier": "t_address",
  636. "typeString": "address"
  637. }
  638. },
  639. "value": null,
  640. "visibility": "internal"
  641. }
  642. ],
  643. "src": "1679:17:10"
  644. },
  645. "returnParameters": {
  646. "id": 3158,
  647. "nodeType": "ParameterList",
  648. "parameters": [
  649. {
  650. "constant": false,
  651. "id": 3157,
  652. "name": "",
  653. "nodeType": "VariableDeclaration",
  654. "scope": 3164,
  655. "src": "1718:7:10",
  656. "stateVariable": false,
  657. "storageLocation": "default",
  658. "typeDescriptions": {
  659. "typeIdentifier": "t_uint256",
  660. "typeString": "uint256"
  661. },
  662. "typeName": {
  663. "id": 3156,
  664. "name": "uint256",
  665. "nodeType": "ElementaryTypeName",
  666. "src": "1718:7:10",
  667. "typeDescriptions": {
  668. "typeIdentifier": "t_uint256",
  669. "typeString": "uint256"
  670. }
  671. },
  672. "value": null,
  673. "visibility": "internal"
  674. }
  675. ],
  676. "src": "1717:9:10"
  677. },
  678. "scope": 3520,
  679. "src": "1661:108:10",
  680. "stateMutability": "view",
  681. "superFunction": 3592,
  682. "visibility": "public"
  683. },
  684. {
  685. "body": {
  686. "id": 3182,
  687. "nodeType": "Block",
  688. "src": "2047:78:10",
  689. "statements": [
  690. {
  691. "expression": {
  692. "argumentTypes": null,
  693. "arguments": [
  694. {
  695. "argumentTypes": null,
  696. "expression": {
  697. "argumentTypes": null,
  698. "id": 3174,
  699. "name": "msg",
  700. "nodeType": "Identifier",
  701. "overloadedDeclarations": [],
  702. "referencedDeclaration": 3662,
  703. "src": "2067:3:10",
  704. "typeDescriptions": {
  705. "typeIdentifier": "t_magic_message",
  706. "typeString": "msg"
  707. }
  708. },
  709. "id": 3175,
  710. "isConstant": false,
  711. "isLValue": false,
  712. "isPure": false,
  713. "lValueRequested": false,
  714. "memberName": "sender",
  715. "nodeType": "MemberAccess",
  716. "referencedDeclaration": null,
  717. "src": "2067:10:10",
  718. "typeDescriptions": {
  719. "typeIdentifier": "t_address_payable",
  720. "typeString": "address payable"
  721. }
  722. },
  723. {
  724. "argumentTypes": null,
  725. "id": 3176,
  726. "name": "recipient",
  727. "nodeType": "Identifier",
  728. "overloadedDeclarations": [],
  729. "referencedDeclaration": 3166,
  730. "src": "2079:9:10",
  731. "typeDescriptions": {
  732. "typeIdentifier": "t_address",
  733. "typeString": "address"
  734. }
  735. },
  736. {
  737. "argumentTypes": null,
  738. "id": 3177,
  739. "name": "amount",
  740. "nodeType": "Identifier",
  741. "overloadedDeclarations": [],
  742. "referencedDeclaration": 3168,
  743. "src": "2090:6:10",
  744. "typeDescriptions": {
  745. "typeIdentifier": "t_uint256",
  746. "typeString": "uint256"
  747. }
  748. }
  749. ],
  750. "expression": {
  751. "argumentTypes": [
  752. {
  753. "typeIdentifier": "t_address_payable",
  754. "typeString": "address payable"
  755. },
  756. {
  757. "typeIdentifier": "t_address",
  758. "typeString": "address"
  759. },
  760. {
  761. "typeIdentifier": "t_uint256",
  762. "typeString": "uint256"
  763. }
  764. ],
  765. "id": 3173,
  766. "name": "_transfer",
  767. "nodeType": "Identifier",
  768. "overloadedDeclarations": [],
  769. "referencedDeclaration": 3363,
  770. "src": "2057:9:10",
  771. "typeDescriptions": {
  772. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  773. "typeString": "function (address,address,uint256)"
  774. }
  775. },
  776. "id": 3178,
  777. "isConstant": false,
  778. "isLValue": false,
  779. "isPure": false,
  780. "kind": "functionCall",
  781. "lValueRequested": false,
  782. "names": [],
  783. "nodeType": "FunctionCall",
  784. "src": "2057:40:10",
  785. "typeDescriptions": {
  786. "typeIdentifier": "t_tuple$__$",
  787. "typeString": "tuple()"
  788. }
  789. },
  790. "id": 3179,
  791. "nodeType": "ExpressionStatement",
  792. "src": "2057:40:10"
  793. },
  794. {
  795. "expression": {
  796. "argumentTypes": null,
  797. "hexValue": "74727565",
  798. "id": 3180,
  799. "isConstant": false,
  800. "isLValue": false,
  801. "isPure": true,
  802. "kind": "bool",
  803. "lValueRequested": false,
  804. "nodeType": "Literal",
  805. "src": "2114:4:10",
  806. "subdenomination": null,
  807. "typeDescriptions": {
  808. "typeIdentifier": "t_bool",
  809. "typeString": "bool"
  810. },
  811. "value": "true"
  812. },
  813. "functionReturnParameters": 3172,
  814. "id": 3181,
  815. "nodeType": "Return",
  816. "src": "2107:11:10"
  817. }
  818. ]
  819. },
  820. "documentation": "@dev See `IERC20.transfer`.\n * Requirements:\n * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.",
  821. "id": 3183,
  822. "implemented": true,
  823. "kind": "function",
  824. "modifiers": [],
  825. "name": "transfer",
  826. "nodeType": "FunctionDefinition",
  827. "parameters": {
  828. "id": 3169,
  829. "nodeType": "ParameterList",
  830. "parameters": [
  831. {
  832. "constant": false,
  833. "id": 3166,
  834. "name": "recipient",
  835. "nodeType": "VariableDeclaration",
  836. "scope": 3183,
  837. "src": "1990:17:10",
  838. "stateVariable": false,
  839. "storageLocation": "default",
  840. "typeDescriptions": {
  841. "typeIdentifier": "t_address",
  842. "typeString": "address"
  843. },
  844. "typeName": {
  845. "id": 3165,
  846. "name": "address",
  847. "nodeType": "ElementaryTypeName",
  848. "src": "1990:7:10",
  849. "stateMutability": "nonpayable",
  850. "typeDescriptions": {
  851. "typeIdentifier": "t_address",
  852. "typeString": "address"
  853. }
  854. },
  855. "value": null,
  856. "visibility": "internal"
  857. },
  858. {
  859. "constant": false,
  860. "id": 3168,
  861. "name": "amount",
  862. "nodeType": "VariableDeclaration",
  863. "scope": 3183,
  864. "src": "2009:14:10",
  865. "stateVariable": false,
  866. "storageLocation": "default",
  867. "typeDescriptions": {
  868. "typeIdentifier": "t_uint256",
  869. "typeString": "uint256"
  870. },
  871. "typeName": {
  872. "id": 3167,
  873. "name": "uint256",
  874. "nodeType": "ElementaryTypeName",
  875. "src": "2009:7:10",
  876. "typeDescriptions": {
  877. "typeIdentifier": "t_uint256",
  878. "typeString": "uint256"
  879. }
  880. },
  881. "value": null,
  882. "visibility": "internal"
  883. }
  884. ],
  885. "src": "1989:35:10"
  886. },
  887. "returnParameters": {
  888. "id": 3172,
  889. "nodeType": "ParameterList",
  890. "parameters": [
  891. {
  892. "constant": false,
  893. "id": 3171,
  894. "name": "",
  895. "nodeType": "VariableDeclaration",
  896. "scope": 3183,
  897. "src": "2041:4:10",
  898. "stateVariable": false,
  899. "storageLocation": "default",
  900. "typeDescriptions": {
  901. "typeIdentifier": "t_bool",
  902. "typeString": "bool"
  903. },
  904. "typeName": {
  905. "id": 3170,
  906. "name": "bool",
  907. "nodeType": "ElementaryTypeName",
  908. "src": "2041:4:10",
  909. "typeDescriptions": {
  910. "typeIdentifier": "t_bool",
  911. "typeString": "bool"
  912. }
  913. },
  914. "value": null,
  915. "visibility": "internal"
  916. }
  917. ],
  918. "src": "2040:6:10"
  919. },
  920. "scope": 3520,
  921. "src": "1972:153:10",
  922. "stateMutability": "nonpayable",
  923. "superFunction": 3601,
  924. "visibility": "public"
  925. },
  926. {
  927. "body": {
  928. "id": 3198,
  929. "nodeType": "Block",
  930. "src": "2264:51:10",
  931. "statements": [
  932. {
  933. "expression": {
  934. "argumentTypes": null,
  935. "baseExpression": {
  936. "argumentTypes": null,
  937. "baseExpression": {
  938. "argumentTypes": null,
  939. "id": 3192,
  940. "name": "_allowances",
  941. "nodeType": "Identifier",
  942. "overloadedDeclarations": [],
  943. "referencedDeclaration": 3142,
  944. "src": "2281:11:10",
  945. "typeDescriptions": {
  946. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  947. "typeString": "mapping(address => mapping(address => uint256))"
  948. }
  949. },
  950. "id": 3194,
  951. "indexExpression": {
  952. "argumentTypes": null,
  953. "id": 3193,
  954. "name": "owner",
  955. "nodeType": "Identifier",
  956. "overloadedDeclarations": [],
  957. "referencedDeclaration": 3185,
  958. "src": "2293:5:10",
  959. "typeDescriptions": {
  960. "typeIdentifier": "t_address",
  961. "typeString": "address"
  962. }
  963. },
  964. "isConstant": false,
  965. "isLValue": true,
  966. "isPure": false,
  967. "lValueRequested": false,
  968. "nodeType": "IndexAccess",
  969. "src": "2281:18:10",
  970. "typeDescriptions": {
  971. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  972. "typeString": "mapping(address => uint256)"
  973. }
  974. },
  975. "id": 3196,
  976. "indexExpression": {
  977. "argumentTypes": null,
  978. "id": 3195,
  979. "name": "spender",
  980. "nodeType": "Identifier",
  981. "overloadedDeclarations": [],
  982. "referencedDeclaration": 3187,
  983. "src": "2300:7:10",
  984. "typeDescriptions": {
  985. "typeIdentifier": "t_address",
  986. "typeString": "address"
  987. }
  988. },
  989. "isConstant": false,
  990. "isLValue": true,
  991. "isPure": false,
  992. "lValueRequested": false,
  993. "nodeType": "IndexAccess",
  994. "src": "2281:27:10",
  995. "typeDescriptions": {
  996. "typeIdentifier": "t_uint256",
  997. "typeString": "uint256"
  998. }
  999. },
  1000. "functionReturnParameters": 3191,
  1001. "id": 3197,
  1002. "nodeType": "Return",
  1003. "src": "2274:34:10"
  1004. }
  1005. ]
  1006. },
  1007. "documentation": "@dev See `IERC20.allowance`.",
  1008. "id": 3199,
  1009. "implemented": true,
  1010. "kind": "function",
  1011. "modifiers": [],
  1012. "name": "allowance",
  1013. "nodeType": "FunctionDefinition",
  1014. "parameters": {
  1015. "id": 3188,
  1016. "nodeType": "ParameterList",
  1017. "parameters": [
  1018. {
  1019. "constant": false,
  1020. "id": 3185,
  1021. "name": "owner",
  1022. "nodeType": "VariableDeclaration",
  1023. "scope": 3199,
  1024. "src": "2202:13:10",
  1025. "stateVariable": false,
  1026. "storageLocation": "default",
  1027. "typeDescriptions": {
  1028. "typeIdentifier": "t_address",
  1029. "typeString": "address"
  1030. },
  1031. "typeName": {
  1032. "id": 3184,
  1033. "name": "address",
  1034. "nodeType": "ElementaryTypeName",
  1035. "src": "2202:7:10",
  1036. "stateMutability": "nonpayable",
  1037. "typeDescriptions": {
  1038. "typeIdentifier": "t_address",
  1039. "typeString": "address"
  1040. }
  1041. },
  1042. "value": null,
  1043. "visibility": "internal"
  1044. },
  1045. {
  1046. "constant": false,
  1047. "id": 3187,
  1048. "name": "spender",
  1049. "nodeType": "VariableDeclaration",
  1050. "scope": 3199,
  1051. "src": "2217:15:10",
  1052. "stateVariable": false,
  1053. "storageLocation": "default",
  1054. "typeDescriptions": {
  1055. "typeIdentifier": "t_address",
  1056. "typeString": "address"
  1057. },
  1058. "typeName": {
  1059. "id": 3186,
  1060. "name": "address",
  1061. "nodeType": "ElementaryTypeName",
  1062. "src": "2217:7:10",
  1063. "stateMutability": "nonpayable",
  1064. "typeDescriptions": {
  1065. "typeIdentifier": "t_address",
  1066. "typeString": "address"
  1067. }
  1068. },
  1069. "value": null,
  1070. "visibility": "internal"
  1071. }
  1072. ],
  1073. "src": "2201:32:10"
  1074. },
  1075. "returnParameters": {
  1076. "id": 3191,
  1077. "nodeType": "ParameterList",
  1078. "parameters": [
  1079. {
  1080. "constant": false,
  1081. "id": 3190,
  1082. "name": "",
  1083. "nodeType": "VariableDeclaration",
  1084. "scope": 3199,
  1085. "src": "2255:7:10",
  1086. "stateVariable": false,
  1087. "storageLocation": "default",
  1088. "typeDescriptions": {
  1089. "typeIdentifier": "t_uint256",
  1090. "typeString": "uint256"
  1091. },
  1092. "typeName": {
  1093. "id": 3189,
  1094. "name": "uint256",
  1095. "nodeType": "ElementaryTypeName",
  1096. "src": "2255:7:10",
  1097. "typeDescriptions": {
  1098. "typeIdentifier": "t_uint256",
  1099. "typeString": "uint256"
  1100. }
  1101. },
  1102. "value": null,
  1103. "visibility": "internal"
  1104. }
  1105. ],
  1106. "src": "2254:9:10"
  1107. },
  1108. "scope": 3520,
  1109. "src": "2183:132:10",
  1110. "stateMutability": "view",
  1111. "superFunction": 3610,
  1112. "visibility": "public"
  1113. },
  1114. {
  1115. "body": {
  1116. "id": 3217,
  1117. "nodeType": "Block",
  1118. "src": "2524:74:10",
  1119. "statements": [
  1120. {
  1121. "expression": {
  1122. "argumentTypes": null,
  1123. "arguments": [
  1124. {
  1125. "argumentTypes": null,
  1126. "expression": {
  1127. "argumentTypes": null,
  1128. "id": 3209,
  1129. "name": "msg",
  1130. "nodeType": "Identifier",
  1131. "overloadedDeclarations": [],
  1132. "referencedDeclaration": 3662,
  1133. "src": "2543:3:10",
  1134. "typeDescriptions": {
  1135. "typeIdentifier": "t_magic_message",
  1136. "typeString": "msg"
  1137. }
  1138. },
  1139. "id": 3210,
  1140. "isConstant": false,
  1141. "isLValue": false,
  1142. "isPure": false,
  1143. "lValueRequested": false,
  1144. "memberName": "sender",
  1145. "nodeType": "MemberAccess",
  1146. "referencedDeclaration": null,
  1147. "src": "2543:10:10",
  1148. "typeDescriptions": {
  1149. "typeIdentifier": "t_address_payable",
  1150. "typeString": "address payable"
  1151. }
  1152. },
  1153. {
  1154. "argumentTypes": null,
  1155. "id": 3211,
  1156. "name": "spender",
  1157. "nodeType": "Identifier",
  1158. "overloadedDeclarations": [],
  1159. "referencedDeclaration": 3201,
  1160. "src": "2555:7:10",
  1161. "typeDescriptions": {
  1162. "typeIdentifier": "t_address",
  1163. "typeString": "address"
  1164. }
  1165. },
  1166. {
  1167. "argumentTypes": null,
  1168. "id": 3212,
  1169. "name": "value",
  1170. "nodeType": "Identifier",
  1171. "overloadedDeclarations": [],
  1172. "referencedDeclaration": 3203,
  1173. "src": "2564:5:10",
  1174. "typeDescriptions": {
  1175. "typeIdentifier": "t_uint256",
  1176. "typeString": "uint256"
  1177. }
  1178. }
  1179. ],
  1180. "expression": {
  1181. "argumentTypes": [
  1182. {
  1183. "typeIdentifier": "t_address_payable",
  1184. "typeString": "address payable"
  1185. },
  1186. {
  1187. "typeIdentifier": "t_address",
  1188. "typeString": "address"
  1189. },
  1190. {
  1191. "typeIdentifier": "t_uint256",
  1192. "typeString": "uint256"
  1193. }
  1194. ],
  1195. "id": 3208,
  1196. "name": "_approve",
  1197. "nodeType": "Identifier",
  1198. "overloadedDeclarations": [],
  1199. "referencedDeclaration": 3491,
  1200. "src": "2534:8:10",
  1201. "typeDescriptions": {
  1202. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  1203. "typeString": "function (address,address,uint256)"
  1204. }
  1205. },
  1206. "id": 3213,
  1207. "isConstant": false,
  1208. "isLValue": false,
  1209. "isPure": false,
  1210. "kind": "functionCall",
  1211. "lValueRequested": false,
  1212. "names": [],
  1213. "nodeType": "FunctionCall",
  1214. "src": "2534:36:10",
  1215. "typeDescriptions": {
  1216. "typeIdentifier": "t_tuple$__$",
  1217. "typeString": "tuple()"
  1218. }
  1219. },
  1220. "id": 3214,
  1221. "nodeType": "ExpressionStatement",
  1222. "src": "2534:36:10"
  1223. },
  1224. {
  1225. "expression": {
  1226. "argumentTypes": null,
  1227. "hexValue": "74727565",
  1228. "id": 3215,
  1229. "isConstant": false,
  1230. "isLValue": false,
  1231. "isPure": true,
  1232. "kind": "bool",
  1233. "lValueRequested": false,
  1234. "nodeType": "Literal",
  1235. "src": "2587:4:10",
  1236. "subdenomination": null,
  1237. "typeDescriptions": {
  1238. "typeIdentifier": "t_bool",
  1239. "typeString": "bool"
  1240. },
  1241. "value": "true"
  1242. },
  1243. "functionReturnParameters": 3207,
  1244. "id": 3216,
  1245. "nodeType": "Return",
  1246. "src": "2580:11:10"
  1247. }
  1248. ]
  1249. },
  1250. "documentation": "@dev See `IERC20.approve`.\n * Requirements:\n * - `spender` cannot be the zero address.",
  1251. "id": 3218,
  1252. "implemented": true,
  1253. "kind": "function",
  1254. "modifiers": [],
  1255. "name": "approve",
  1256. "nodeType": "FunctionDefinition",
  1257. "parameters": {
  1258. "id": 3204,
  1259. "nodeType": "ParameterList",
  1260. "parameters": [
  1261. {
  1262. "constant": false,
  1263. "id": 3201,
  1264. "name": "spender",
  1265. "nodeType": "VariableDeclaration",
  1266. "scope": 3218,
  1267. "src": "2470:15:10",
  1268. "stateVariable": false,
  1269. "storageLocation": "default",
  1270. "typeDescriptions": {
  1271. "typeIdentifier": "t_address",
  1272. "typeString": "address"
  1273. },
  1274. "typeName": {
  1275. "id": 3200,
  1276. "name": "address",
  1277. "nodeType": "ElementaryTypeName",
  1278. "src": "2470:7:10",
  1279. "stateMutability": "nonpayable",
  1280. "typeDescriptions": {
  1281. "typeIdentifier": "t_address",
  1282. "typeString": "address"
  1283. }
  1284. },
  1285. "value": null,
  1286. "visibility": "internal"
  1287. },
  1288. {
  1289. "constant": false,
  1290. "id": 3203,
  1291. "name": "value",
  1292. "nodeType": "VariableDeclaration",
  1293. "scope": 3218,
  1294. "src": "2487:13:10",
  1295. "stateVariable": false,
  1296. "storageLocation": "default",
  1297. "typeDescriptions": {
  1298. "typeIdentifier": "t_uint256",
  1299. "typeString": "uint256"
  1300. },
  1301. "typeName": {
  1302. "id": 3202,
  1303. "name": "uint256",
  1304. "nodeType": "ElementaryTypeName",
  1305. "src": "2487:7:10",
  1306. "typeDescriptions": {
  1307. "typeIdentifier": "t_uint256",
  1308. "typeString": "uint256"
  1309. }
  1310. },
  1311. "value": null,
  1312. "visibility": "internal"
  1313. }
  1314. ],
  1315. "src": "2469:32:10"
  1316. },
  1317. "returnParameters": {
  1318. "id": 3207,
  1319. "nodeType": "ParameterList",
  1320. "parameters": [
  1321. {
  1322. "constant": false,
  1323. "id": 3206,
  1324. "name": "",
  1325. "nodeType": "VariableDeclaration",
  1326. "scope": 3218,
  1327. "src": "2518:4:10",
  1328. "stateVariable": false,
  1329. "storageLocation": "default",
  1330. "typeDescriptions": {
  1331. "typeIdentifier": "t_bool",
  1332. "typeString": "bool"
  1333. },
  1334. "typeName": {
  1335. "id": 3205,
  1336. "name": "bool",
  1337. "nodeType": "ElementaryTypeName",
  1338. "src": "2518:4:10",
  1339. "typeDescriptions": {
  1340. "typeIdentifier": "t_bool",
  1341. "typeString": "bool"
  1342. }
  1343. },
  1344. "value": null,
  1345. "visibility": "internal"
  1346. }
  1347. ],
  1348. "src": "2517:6:10"
  1349. },
  1350. "scope": 3520,
  1351. "src": "2453:145:10",
  1352. "stateMutability": "nonpayable",
  1353. "superFunction": 3619,
  1354. "visibility": "public"
  1355. },
  1356. {
  1357. "body": {
  1358. "id": 3252,
  1359. "nodeType": "Block",
  1360. "src": "3150:157:10",
  1361. "statements": [
  1362. {
  1363. "expression": {
  1364. "argumentTypes": null,
  1365. "arguments": [
  1366. {
  1367. "argumentTypes": null,
  1368. "id": 3230,
  1369. "name": "sender",
  1370. "nodeType": "Identifier",
  1371. "overloadedDeclarations": [],
  1372. "referencedDeclaration": 3220,
  1373. "src": "3170:6:10",
  1374. "typeDescriptions": {
  1375. "typeIdentifier": "t_address",
  1376. "typeString": "address"
  1377. }
  1378. },
  1379. {
  1380. "argumentTypes": null,
  1381. "id": 3231,
  1382. "name": "recipient",
  1383. "nodeType": "Identifier",
  1384. "overloadedDeclarations": [],
  1385. "referencedDeclaration": 3222,
  1386. "src": "3178:9:10",
  1387. "typeDescriptions": {
  1388. "typeIdentifier": "t_address",
  1389. "typeString": "address"
  1390. }
  1391. },
  1392. {
  1393. "argumentTypes": null,
  1394. "id": 3232,
  1395. "name": "amount",
  1396. "nodeType": "Identifier",
  1397. "overloadedDeclarations": [],
  1398. "referencedDeclaration": 3224,
  1399. "src": "3189:6:10",
  1400. "typeDescriptions": {
  1401. "typeIdentifier": "t_uint256",
  1402. "typeString": "uint256"
  1403. }
  1404. }
  1405. ],
  1406. "expression": {
  1407. "argumentTypes": [
  1408. {
  1409. "typeIdentifier": "t_address",
  1410. "typeString": "address"
  1411. },
  1412. {
  1413. "typeIdentifier": "t_address",
  1414. "typeString": "address"
  1415. },
  1416. {
  1417. "typeIdentifier": "t_uint256",
  1418. "typeString": "uint256"
  1419. }
  1420. ],
  1421. "id": 3229,
  1422. "name": "_transfer",
  1423. "nodeType": "Identifier",
  1424. "overloadedDeclarations": [],
  1425. "referencedDeclaration": 3363,
  1426. "src": "3160:9:10",
  1427. "typeDescriptions": {
  1428. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  1429. "typeString": "function (address,address,uint256)"
  1430. }
  1431. },
  1432. "id": 3233,
  1433. "isConstant": false,
  1434. "isLValue": false,
  1435. "isPure": false,
  1436. "kind": "functionCall",
  1437. "lValueRequested": false,
  1438. "names": [],
  1439. "nodeType": "FunctionCall",
  1440. "src": "3160:36:10",
  1441. "typeDescriptions": {
  1442. "typeIdentifier": "t_tuple$__$",
  1443. "typeString": "tuple()"
  1444. }
  1445. },
  1446. "id": 3234,
  1447. "nodeType": "ExpressionStatement",
  1448. "src": "3160:36:10"
  1449. },
  1450. {
  1451. "expression": {
  1452. "argumentTypes": null,
  1453. "arguments": [
  1454. {
  1455. "argumentTypes": null,
  1456. "id": 3236,
  1457. "name": "sender",
  1458. "nodeType": "Identifier",
  1459. "overloadedDeclarations": [],
  1460. "referencedDeclaration": 3220,
  1461. "src": "3215:6:10",
  1462. "typeDescriptions": {
  1463. "typeIdentifier": "t_address",
  1464. "typeString": "address"
  1465. }
  1466. },
  1467. {
  1468. "argumentTypes": null,
  1469. "expression": {
  1470. "argumentTypes": null,
  1471. "id": 3237,
  1472. "name": "msg",
  1473. "nodeType": "Identifier",
  1474. "overloadedDeclarations": [],
  1475. "referencedDeclaration": 3662,
  1476. "src": "3223:3:10",
  1477. "typeDescriptions": {
  1478. "typeIdentifier": "t_magic_message",
  1479. "typeString": "msg"
  1480. }
  1481. },
  1482. "id": 3238,
  1483. "isConstant": false,
  1484. "isLValue": false,
  1485. "isPure": false,
  1486. "lValueRequested": false,
  1487. "memberName": "sender",
  1488. "nodeType": "MemberAccess",
  1489. "referencedDeclaration": null,
  1490. "src": "3223:10:10",
  1491. "typeDescriptions": {
  1492. "typeIdentifier": "t_address_payable",
  1493. "typeString": "address payable"
  1494. }
  1495. },
  1496. {
  1497. "argumentTypes": null,
  1498. "arguments": [
  1499. {
  1500. "argumentTypes": null,
  1501. "id": 3246,
  1502. "name": "amount",
  1503. "nodeType": "Identifier",
  1504. "overloadedDeclarations": [],
  1505. "referencedDeclaration": 3224,
  1506. "src": "3271:6:10",
  1507. "typeDescriptions": {
  1508. "typeIdentifier": "t_uint256",
  1509. "typeString": "uint256"
  1510. }
  1511. }
  1512. ],
  1513. "expression": {
  1514. "argumentTypes": [
  1515. {
  1516. "typeIdentifier": "t_uint256",
  1517. "typeString": "uint256"
  1518. }
  1519. ],
  1520. "expression": {
  1521. "argumentTypes": null,
  1522. "baseExpression": {
  1523. "argumentTypes": null,
  1524. "baseExpression": {
  1525. "argumentTypes": null,
  1526. "id": 3239,
  1527. "name": "_allowances",
  1528. "nodeType": "Identifier",
  1529. "overloadedDeclarations": [],
  1530. "referencedDeclaration": 3142,
  1531. "src": "3235:11:10",
  1532. "typeDescriptions": {
  1533. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  1534. "typeString": "mapping(address => mapping(address => uint256))"
  1535. }
  1536. },
  1537. "id": 3241,
  1538. "indexExpression": {
  1539. "argumentTypes": null,
  1540. "id": 3240,
  1541. "name": "sender",
  1542. "nodeType": "Identifier",
  1543. "overloadedDeclarations": [],
  1544. "referencedDeclaration": 3220,
  1545. "src": "3247:6:10",
  1546. "typeDescriptions": {
  1547. "typeIdentifier": "t_address",
  1548. "typeString": "address"
  1549. }
  1550. },
  1551. "isConstant": false,
  1552. "isLValue": true,
  1553. "isPure": false,
  1554. "lValueRequested": false,
  1555. "nodeType": "IndexAccess",
  1556. "src": "3235:19:10",
  1557. "typeDescriptions": {
  1558. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  1559. "typeString": "mapping(address => uint256)"
  1560. }
  1561. },
  1562. "id": 3244,
  1563. "indexExpression": {
  1564. "argumentTypes": null,
  1565. "expression": {
  1566. "argumentTypes": null,
  1567. "id": 3242,
  1568. "name": "msg",
  1569. "nodeType": "Identifier",
  1570. "overloadedDeclarations": [],
  1571. "referencedDeclaration": 3662,
  1572. "src": "3255:3:10",
  1573. "typeDescriptions": {
  1574. "typeIdentifier": "t_magic_message",
  1575. "typeString": "msg"
  1576. }
  1577. },
  1578. "id": 3243,
  1579. "isConstant": false,
  1580. "isLValue": false,
  1581. "isPure": false,
  1582. "lValueRequested": false,
  1583. "memberName": "sender",
  1584. "nodeType": "MemberAccess",
  1585. "referencedDeclaration": null,
  1586. "src": "3255:10:10",
  1587. "typeDescriptions": {
  1588. "typeIdentifier": "t_address_payable",
  1589. "typeString": "address payable"
  1590. }
  1591. },
  1592. "isConstant": false,
  1593. "isLValue": true,
  1594. "isPure": false,
  1595. "lValueRequested": false,
  1596. "nodeType": "IndexAccess",
  1597. "src": "3235:31:10",
  1598. "typeDescriptions": {
  1599. "typeIdentifier": "t_uint256",
  1600. "typeString": "uint256"
  1601. }
  1602. },
  1603. "id": 3245,
  1604. "isConstant": false,
  1605. "isLValue": false,
  1606. "isPure": false,
  1607. "lValueRequested": false,
  1608. "memberName": "sub",
  1609. "nodeType": "MemberAccess",
  1610. "referencedDeclaration": 3042,
  1611. "src": "3235:35:10",
  1612. "typeDescriptions": {
  1613. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  1614. "typeString": "function (uint256,uint256) pure returns (uint256)"
  1615. }
  1616. },
  1617. "id": 3247,
  1618. "isConstant": false,
  1619. "isLValue": false,
  1620. "isPure": false,
  1621. "kind": "functionCall",
  1622. "lValueRequested": false,
  1623. "names": [],
  1624. "nodeType": "FunctionCall",
  1625. "src": "3235:43:10",
  1626. "typeDescriptions": {
  1627. "typeIdentifier": "t_uint256",
  1628. "typeString": "uint256"
  1629. }
  1630. }
  1631. ],
  1632. "expression": {
  1633. "argumentTypes": [
  1634. {
  1635. "typeIdentifier": "t_address",
  1636. "typeString": "address"
  1637. },
  1638. {
  1639. "typeIdentifier": "t_address_payable",
  1640. "typeString": "address payable"
  1641. },
  1642. {
  1643. "typeIdentifier": "t_uint256",
  1644. "typeString": "uint256"
  1645. }
  1646. ],
  1647. "id": 3235,
  1648. "name": "_approve",
  1649. "nodeType": "Identifier",
  1650. "overloadedDeclarations": [],
  1651. "referencedDeclaration": 3491,
  1652. "src": "3206:8:10",
  1653. "typeDescriptions": {
  1654. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  1655. "typeString": "function (address,address,uint256)"
  1656. }
  1657. },
  1658. "id": 3248,
  1659. "isConstant": false,
  1660. "isLValue": false,
  1661. "isPure": false,
  1662. "kind": "functionCall",
  1663. "lValueRequested": false,
  1664. "names": [],
  1665. "nodeType": "FunctionCall",
  1666. "src": "3206:73:10",
  1667. "typeDescriptions": {
  1668. "typeIdentifier": "t_tuple$__$",
  1669. "typeString": "tuple()"
  1670. }
  1671. },
  1672. "id": 3249,
  1673. "nodeType": "ExpressionStatement",
  1674. "src": "3206:73:10"
  1675. },
  1676. {
  1677. "expression": {
  1678. "argumentTypes": null,
  1679. "hexValue": "74727565",
  1680. "id": 3250,
  1681. "isConstant": false,
  1682. "isLValue": false,
  1683. "isPure": true,
  1684. "kind": "bool",
  1685. "lValueRequested": false,
  1686. "nodeType": "Literal",
  1687. "src": "3296:4:10",
  1688. "subdenomination": null,
  1689. "typeDescriptions": {
  1690. "typeIdentifier": "t_bool",
  1691. "typeString": "bool"
  1692. },
  1693. "value": "true"
  1694. },
  1695. "functionReturnParameters": 3228,
  1696. "id": 3251,
  1697. "nodeType": "Return",
  1698. "src": "3289:11:10"
  1699. }
  1700. ]
  1701. },
  1702. "documentation": "@dev See `IERC20.transferFrom`.\n * Emits an `Approval` event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of `ERC20`;\n * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `value`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.",
  1703. "id": 3253,
  1704. "implemented": true,
  1705. "kind": "function",
  1706. "modifiers": [],
  1707. "name": "transferFrom",
  1708. "nodeType": "FunctionDefinition",
  1709. "parameters": {
  1710. "id": 3225,
  1711. "nodeType": "ParameterList",
  1712. "parameters": [
  1713. {
  1714. "constant": false,
  1715. "id": 3220,
  1716. "name": "sender",
  1717. "nodeType": "VariableDeclaration",
  1718. "scope": 3253,
  1719. "src": "3077:14:10",
  1720. "stateVariable": false,
  1721. "storageLocation": "default",
  1722. "typeDescriptions": {
  1723. "typeIdentifier": "t_address",
  1724. "typeString": "address"
  1725. },
  1726. "typeName": {
  1727. "id": 3219,
  1728. "name": "address",
  1729. "nodeType": "ElementaryTypeName",
  1730. "src": "3077:7:10",
  1731. "stateMutability": "nonpayable",
  1732. "typeDescriptions": {
  1733. "typeIdentifier": "t_address",
  1734. "typeString": "address"
  1735. }
  1736. },
  1737. "value": null,
  1738. "visibility": "internal"
  1739. },
  1740. {
  1741. "constant": false,
  1742. "id": 3222,
  1743. "name": "recipient",
  1744. "nodeType": "VariableDeclaration",
  1745. "scope": 3253,
  1746. "src": "3093:17:10",
  1747. "stateVariable": false,
  1748. "storageLocation": "default",
  1749. "typeDescriptions": {
  1750. "typeIdentifier": "t_address",
  1751. "typeString": "address"
  1752. },
  1753. "typeName": {
  1754. "id": 3221,
  1755. "name": "address",
  1756. "nodeType": "ElementaryTypeName",
  1757. "src": "3093:7:10",
  1758. "stateMutability": "nonpayable",
  1759. "typeDescriptions": {
  1760. "typeIdentifier": "t_address",
  1761. "typeString": "address"
  1762. }
  1763. },
  1764. "value": null,
  1765. "visibility": "internal"
  1766. },
  1767. {
  1768. "constant": false,
  1769. "id": 3224,
  1770. "name": "amount",
  1771. "nodeType": "VariableDeclaration",
  1772. "scope": 3253,
  1773. "src": "3112:14:10",
  1774. "stateVariable": false,
  1775. "storageLocation": "default",
  1776. "typeDescriptions": {
  1777. "typeIdentifier": "t_uint256",
  1778. "typeString": "uint256"
  1779. },
  1780. "typeName": {
  1781. "id": 3223,
  1782. "name": "uint256",
  1783. "nodeType": "ElementaryTypeName",
  1784. "src": "3112:7:10",
  1785. "typeDescriptions": {
  1786. "typeIdentifier": "t_uint256",
  1787. "typeString": "uint256"
  1788. }
  1789. },
  1790. "value": null,
  1791. "visibility": "internal"
  1792. }
  1793. ],
  1794. "src": "3076:51:10"
  1795. },
  1796. "returnParameters": {
  1797. "id": 3228,
  1798. "nodeType": "ParameterList",
  1799. "parameters": [
  1800. {
  1801. "constant": false,
  1802. "id": 3227,
  1803. "name": "",
  1804. "nodeType": "VariableDeclaration",
  1805. "scope": 3253,
  1806. "src": "3144:4:10",
  1807. "stateVariable": false,
  1808. "storageLocation": "default",
  1809. "typeDescriptions": {
  1810. "typeIdentifier": "t_bool",
  1811. "typeString": "bool"
  1812. },
  1813. "typeName": {
  1814. "id": 3226,
  1815. "name": "bool",
  1816. "nodeType": "ElementaryTypeName",
  1817. "src": "3144:4:10",
  1818. "typeDescriptions": {
  1819. "typeIdentifier": "t_bool",
  1820. "typeString": "bool"
  1821. }
  1822. },
  1823. "value": null,
  1824. "visibility": "internal"
  1825. }
  1826. ],
  1827. "src": "3143:6:10"
  1828. },
  1829. "scope": 3520,
  1830. "src": "3055:252:10",
  1831. "stateMutability": "nonpayable",
  1832. "superFunction": 3630,
  1833. "visibility": "public"
  1834. },
  1835. {
  1836. "body": {
  1837. "id": 3279,
  1838. "nodeType": "Block",
  1839. "src": "3788:117:10",
  1840. "statements": [
  1841. {
  1842. "expression": {
  1843. "argumentTypes": null,
  1844. "arguments": [
  1845. {
  1846. "argumentTypes": null,
  1847. "expression": {
  1848. "argumentTypes": null,
  1849. "id": 3263,
  1850. "name": "msg",
  1851. "nodeType": "Identifier",
  1852. "overloadedDeclarations": [],
  1853. "referencedDeclaration": 3662,
  1854. "src": "3807:3:10",
  1855. "typeDescriptions": {
  1856. "typeIdentifier": "t_magic_message",
  1857. "typeString": "msg"
  1858. }
  1859. },
  1860. "id": 3264,
  1861. "isConstant": false,
  1862. "isLValue": false,
  1863. "isPure": false,
  1864. "lValueRequested": false,
  1865. "memberName": "sender",
  1866. "nodeType": "MemberAccess",
  1867. "referencedDeclaration": null,
  1868. "src": "3807:10:10",
  1869. "typeDescriptions": {
  1870. "typeIdentifier": "t_address_payable",
  1871. "typeString": "address payable"
  1872. }
  1873. },
  1874. {
  1875. "argumentTypes": null,
  1876. "id": 3265,
  1877. "name": "spender",
  1878. "nodeType": "Identifier",
  1879. "overloadedDeclarations": [],
  1880. "referencedDeclaration": 3255,
  1881. "src": "3819:7:10",
  1882. "typeDescriptions": {
  1883. "typeIdentifier": "t_address",
  1884. "typeString": "address"
  1885. }
  1886. },
  1887. {
  1888. "argumentTypes": null,
  1889. "arguments": [
  1890. {
  1891. "argumentTypes": null,
  1892. "id": 3273,
  1893. "name": "addedValue",
  1894. "nodeType": "Identifier",
  1895. "overloadedDeclarations": [],
  1896. "referencedDeclaration": 3257,
  1897. "src": "3865:10:10",
  1898. "typeDescriptions": {
  1899. "typeIdentifier": "t_uint256",
  1900. "typeString": "uint256"
  1901. }
  1902. }
  1903. ],
  1904. "expression": {
  1905. "argumentTypes": [
  1906. {
  1907. "typeIdentifier": "t_uint256",
  1908. "typeString": "uint256"
  1909. }
  1910. ],
  1911. "expression": {
  1912. "argumentTypes": null,
  1913. "baseExpression": {
  1914. "argumentTypes": null,
  1915. "baseExpression": {
  1916. "argumentTypes": null,
  1917. "id": 3266,
  1918. "name": "_allowances",
  1919. "nodeType": "Identifier",
  1920. "overloadedDeclarations": [],
  1921. "referencedDeclaration": 3142,
  1922. "src": "3828:11:10",
  1923. "typeDescriptions": {
  1924. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  1925. "typeString": "mapping(address => mapping(address => uint256))"
  1926. }
  1927. },
  1928. "id": 3269,
  1929. "indexExpression": {
  1930. "argumentTypes": null,
  1931. "expression": {
  1932. "argumentTypes": null,
  1933. "id": 3267,
  1934. "name": "msg",
  1935. "nodeType": "Identifier",
  1936. "overloadedDeclarations": [],
  1937. "referencedDeclaration": 3662,
  1938. "src": "3840:3:10",
  1939. "typeDescriptions": {
  1940. "typeIdentifier": "t_magic_message",
  1941. "typeString": "msg"
  1942. }
  1943. },
  1944. "id": 3268,
  1945. "isConstant": false,
  1946. "isLValue": false,
  1947. "isPure": false,
  1948. "lValueRequested": false,
  1949. "memberName": "sender",
  1950. "nodeType": "MemberAccess",
  1951. "referencedDeclaration": null,
  1952. "src": "3840:10:10",
  1953. "typeDescriptions": {
  1954. "typeIdentifier": "t_address_payable",
  1955. "typeString": "address payable"
  1956. }
  1957. },
  1958. "isConstant": false,
  1959. "isLValue": true,
  1960. "isPure": false,
  1961. "lValueRequested": false,
  1962. "nodeType": "IndexAccess",
  1963. "src": "3828:23:10",
  1964. "typeDescriptions": {
  1965. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  1966. "typeString": "mapping(address => uint256)"
  1967. }
  1968. },
  1969. "id": 3271,
  1970. "indexExpression": {
  1971. "argumentTypes": null,
  1972. "id": 3270,
  1973. "name": "spender",
  1974. "nodeType": "Identifier",
  1975. "overloadedDeclarations": [],
  1976. "referencedDeclaration": 3255,
  1977. "src": "3852:7:10",
  1978. "typeDescriptions": {
  1979. "typeIdentifier": "t_address",
  1980. "typeString": "address"
  1981. }
  1982. },
  1983. "isConstant": false,
  1984. "isLValue": true,
  1985. "isPure": false,
  1986. "lValueRequested": false,
  1987. "nodeType": "IndexAccess",
  1988. "src": "3828:32:10",
  1989. "typeDescriptions": {
  1990. "typeIdentifier": "t_uint256",
  1991. "typeString": "uint256"
  1992. }
  1993. },
  1994. "id": 3272,
  1995. "isConstant": false,
  1996. "isLValue": false,
  1997. "isPure": false,
  1998. "lValueRequested": false,
  1999. "memberName": "add",
  2000. "nodeType": "MemberAccess",
  2001. "referencedDeclaration": 3017,
  2002. "src": "3828:36:10",
  2003. "typeDescriptions": {
  2004. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  2005. "typeString": "function (uint256,uint256) pure returns (uint256)"
  2006. }
  2007. },
  2008. "id": 3274,
  2009. "isConstant": false,
  2010. "isLValue": false,
  2011. "isPure": false,
  2012. "kind": "functionCall",
  2013. "lValueRequested": false,
  2014. "names": [],
  2015. "nodeType": "FunctionCall",
  2016. "src": "3828:48:10",
  2017. "typeDescriptions": {
  2018. "typeIdentifier": "t_uint256",
  2019. "typeString": "uint256"
  2020. }
  2021. }
  2022. ],
  2023. "expression": {
  2024. "argumentTypes": [
  2025. {
  2026. "typeIdentifier": "t_address_payable",
  2027. "typeString": "address payable"
  2028. },
  2029. {
  2030. "typeIdentifier": "t_address",
  2031. "typeString": "address"
  2032. },
  2033. {
  2034. "typeIdentifier": "t_uint256",
  2035. "typeString": "uint256"
  2036. }
  2037. ],
  2038. "id": 3262,
  2039. "name": "_approve",
  2040. "nodeType": "Identifier",
  2041. "overloadedDeclarations": [],
  2042. "referencedDeclaration": 3491,
  2043. "src": "3798:8:10",
  2044. "typeDescriptions": {
  2045. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  2046. "typeString": "function (address,address,uint256)"
  2047. }
  2048. },
  2049. "id": 3275,
  2050. "isConstant": false,
  2051. "isLValue": false,
  2052. "isPure": false,
  2053. "kind": "functionCall",
  2054. "lValueRequested": false,
  2055. "names": [],
  2056. "nodeType": "FunctionCall",
  2057. "src": "3798:79:10",
  2058. "typeDescriptions": {
  2059. "typeIdentifier": "t_tuple$__$",
  2060. "typeString": "tuple()"
  2061. }
  2062. },
  2063. "id": 3276,
  2064. "nodeType": "ExpressionStatement",
  2065. "src": "3798:79:10"
  2066. },
  2067. {
  2068. "expression": {
  2069. "argumentTypes": null,
  2070. "hexValue": "74727565",
  2071. "id": 3277,
  2072. "isConstant": false,
  2073. "isLValue": false,
  2074. "isPure": true,
  2075. "kind": "bool",
  2076. "lValueRequested": false,
  2077. "nodeType": "Literal",
  2078. "src": "3894:4:10",
  2079. "subdenomination": null,
  2080. "typeDescriptions": {
  2081. "typeIdentifier": "t_bool",
  2082. "typeString": "bool"
  2083. },
  2084. "value": "true"
  2085. },
  2086. "functionReturnParameters": 3261,
  2087. "id": 3278,
  2088. "nodeType": "Return",
  2089. "src": "3887:11:10"
  2090. }
  2091. ]
  2092. },
  2093. "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n * This is an alternative to `approve` that can be used as a mitigation for\nproblems described in `IERC20.approve`.\n * Emits an `Approval` event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.",
  2094. "id": 3280,
  2095. "implemented": true,
  2096. "kind": "function",
  2097. "modifiers": [],
  2098. "name": "increaseAllowance",
  2099. "nodeType": "FunctionDefinition",
  2100. "parameters": {
  2101. "id": 3258,
  2102. "nodeType": "ParameterList",
  2103. "parameters": [
  2104. {
  2105. "constant": false,
  2106. "id": 3255,
  2107. "name": "spender",
  2108. "nodeType": "VariableDeclaration",
  2109. "scope": 3280,
  2110. "src": "3729:15:10",
  2111. "stateVariable": false,
  2112. "storageLocation": "default",
  2113. "typeDescriptions": {
  2114. "typeIdentifier": "t_address",
  2115. "typeString": "address"
  2116. },
  2117. "typeName": {
  2118. "id": 3254,
  2119. "name": "address",
  2120. "nodeType": "ElementaryTypeName",
  2121. "src": "3729:7:10",
  2122. "stateMutability": "nonpayable",
  2123. "typeDescriptions": {
  2124. "typeIdentifier": "t_address",
  2125. "typeString": "address"
  2126. }
  2127. },
  2128. "value": null,
  2129. "visibility": "internal"
  2130. },
  2131. {
  2132. "constant": false,
  2133. "id": 3257,
  2134. "name": "addedValue",
  2135. "nodeType": "VariableDeclaration",
  2136. "scope": 3280,
  2137. "src": "3746:18:10",
  2138. "stateVariable": false,
  2139. "storageLocation": "default",
  2140. "typeDescriptions": {
  2141. "typeIdentifier": "t_uint256",
  2142. "typeString": "uint256"
  2143. },
  2144. "typeName": {
  2145. "id": 3256,
  2146. "name": "uint256",
  2147. "nodeType": "ElementaryTypeName",
  2148. "src": "3746:7:10",
  2149. "typeDescriptions": {
  2150. "typeIdentifier": "t_uint256",
  2151. "typeString": "uint256"
  2152. }
  2153. },
  2154. "value": null,
  2155. "visibility": "internal"
  2156. }
  2157. ],
  2158. "src": "3728:37:10"
  2159. },
  2160. "returnParameters": {
  2161. "id": 3261,
  2162. "nodeType": "ParameterList",
  2163. "parameters": [
  2164. {
  2165. "constant": false,
  2166. "id": 3260,
  2167. "name": "",
  2168. "nodeType": "VariableDeclaration",
  2169. "scope": 3280,
  2170. "src": "3782:4:10",
  2171. "stateVariable": false,
  2172. "storageLocation": "default",
  2173. "typeDescriptions": {
  2174. "typeIdentifier": "t_bool",
  2175. "typeString": "bool"
  2176. },
  2177. "typeName": {
  2178. "id": 3259,
  2179. "name": "bool",
  2180. "nodeType": "ElementaryTypeName",
  2181. "src": "3782:4:10",
  2182. "typeDescriptions": {
  2183. "typeIdentifier": "t_bool",
  2184. "typeString": "bool"
  2185. }
  2186. },
  2187. "value": null,
  2188. "visibility": "internal"
  2189. }
  2190. ],
  2191. "src": "3781:6:10"
  2192. },
  2193. "scope": 3520,
  2194. "src": "3702:203:10",
  2195. "stateMutability": "nonpayable",
  2196. "superFunction": null,
  2197. "visibility": "public"
  2198. },
  2199. {
  2200. "body": {
  2201. "id": 3306,
  2202. "nodeType": "Block",
  2203. "src": "4483:122:10",
  2204. "statements": [
  2205. {
  2206. "expression": {
  2207. "argumentTypes": null,
  2208. "arguments": [
  2209. {
  2210. "argumentTypes": null,
  2211. "expression": {
  2212. "argumentTypes": null,
  2213. "id": 3290,
  2214. "name": "msg",
  2215. "nodeType": "Identifier",
  2216. "overloadedDeclarations": [],
  2217. "referencedDeclaration": 3662,
  2218. "src": "4502:3:10",
  2219. "typeDescriptions": {
  2220. "typeIdentifier": "t_magic_message",
  2221. "typeString": "msg"
  2222. }
  2223. },
  2224. "id": 3291,
  2225. "isConstant": false,
  2226. "isLValue": false,
  2227. "isPure": false,
  2228. "lValueRequested": false,
  2229. "memberName": "sender",
  2230. "nodeType": "MemberAccess",
  2231. "referencedDeclaration": null,
  2232. "src": "4502:10:10",
  2233. "typeDescriptions": {
  2234. "typeIdentifier": "t_address_payable",
  2235. "typeString": "address payable"
  2236. }
  2237. },
  2238. {
  2239. "argumentTypes": null,
  2240. "id": 3292,
  2241. "name": "spender",
  2242. "nodeType": "Identifier",
  2243. "overloadedDeclarations": [],
  2244. "referencedDeclaration": 3282,
  2245. "src": "4514:7:10",
  2246. "typeDescriptions": {
  2247. "typeIdentifier": "t_address",
  2248. "typeString": "address"
  2249. }
  2250. },
  2251. {
  2252. "argumentTypes": null,
  2253. "arguments": [
  2254. {
  2255. "argumentTypes": null,
  2256. "id": 3300,
  2257. "name": "subtractedValue",
  2258. "nodeType": "Identifier",
  2259. "overloadedDeclarations": [],
  2260. "referencedDeclaration": 3284,
  2261. "src": "4560:15:10",
  2262. "typeDescriptions": {
  2263. "typeIdentifier": "t_uint256",
  2264. "typeString": "uint256"
  2265. }
  2266. }
  2267. ],
  2268. "expression": {
  2269. "argumentTypes": [
  2270. {
  2271. "typeIdentifier": "t_uint256",
  2272. "typeString": "uint256"
  2273. }
  2274. ],
  2275. "expression": {
  2276. "argumentTypes": null,
  2277. "baseExpression": {
  2278. "argumentTypes": null,
  2279. "baseExpression": {
  2280. "argumentTypes": null,
  2281. "id": 3293,
  2282. "name": "_allowances",
  2283. "nodeType": "Identifier",
  2284. "overloadedDeclarations": [],
  2285. "referencedDeclaration": 3142,
  2286. "src": "4523:11:10",
  2287. "typeDescriptions": {
  2288. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  2289. "typeString": "mapping(address => mapping(address => uint256))"
  2290. }
  2291. },
  2292. "id": 3296,
  2293. "indexExpression": {
  2294. "argumentTypes": null,
  2295. "expression": {
  2296. "argumentTypes": null,
  2297. "id": 3294,
  2298. "name": "msg",
  2299. "nodeType": "Identifier",
  2300. "overloadedDeclarations": [],
  2301. "referencedDeclaration": 3662,
  2302. "src": "4535:3:10",
  2303. "typeDescriptions": {
  2304. "typeIdentifier": "t_magic_message",
  2305. "typeString": "msg"
  2306. }
  2307. },
  2308. "id": 3295,
  2309. "isConstant": false,
  2310. "isLValue": false,
  2311. "isPure": false,
  2312. "lValueRequested": false,
  2313. "memberName": "sender",
  2314. "nodeType": "MemberAccess",
  2315. "referencedDeclaration": null,
  2316. "src": "4535:10:10",
  2317. "typeDescriptions": {
  2318. "typeIdentifier": "t_address_payable",
  2319. "typeString": "address payable"
  2320. }
  2321. },
  2322. "isConstant": false,
  2323. "isLValue": true,
  2324. "isPure": false,
  2325. "lValueRequested": false,
  2326. "nodeType": "IndexAccess",
  2327. "src": "4523:23:10",
  2328. "typeDescriptions": {
  2329. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  2330. "typeString": "mapping(address => uint256)"
  2331. }
  2332. },
  2333. "id": 3298,
  2334. "indexExpression": {
  2335. "argumentTypes": null,
  2336. "id": 3297,
  2337. "name": "spender",
  2338. "nodeType": "Identifier",
  2339. "overloadedDeclarations": [],
  2340. "referencedDeclaration": 3282,
  2341. "src": "4547:7:10",
  2342. "typeDescriptions": {
  2343. "typeIdentifier": "t_address",
  2344. "typeString": "address"
  2345. }
  2346. },
  2347. "isConstant": false,
  2348. "isLValue": true,
  2349. "isPure": false,
  2350. "lValueRequested": false,
  2351. "nodeType": "IndexAccess",
  2352. "src": "4523:32:10",
  2353. "typeDescriptions": {
  2354. "typeIdentifier": "t_uint256",
  2355. "typeString": "uint256"
  2356. }
  2357. },
  2358. "id": 3299,
  2359. "isConstant": false,
  2360. "isLValue": false,
  2361. "isPure": false,
  2362. "lValueRequested": false,
  2363. "memberName": "sub",
  2364. "nodeType": "MemberAccess",
  2365. "referencedDeclaration": 3042,
  2366. "src": "4523:36:10",
  2367. "typeDescriptions": {
  2368. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  2369. "typeString": "function (uint256,uint256) pure returns (uint256)"
  2370. }
  2371. },
  2372. "id": 3301,
  2373. "isConstant": false,
  2374. "isLValue": false,
  2375. "isPure": false,
  2376. "kind": "functionCall",
  2377. "lValueRequested": false,
  2378. "names": [],
  2379. "nodeType": "FunctionCall",
  2380. "src": "4523:53:10",
  2381. "typeDescriptions": {
  2382. "typeIdentifier": "t_uint256",
  2383. "typeString": "uint256"
  2384. }
  2385. }
  2386. ],
  2387. "expression": {
  2388. "argumentTypes": [
  2389. {
  2390. "typeIdentifier": "t_address_payable",
  2391. "typeString": "address payable"
  2392. },
  2393. {
  2394. "typeIdentifier": "t_address",
  2395. "typeString": "address"
  2396. },
  2397. {
  2398. "typeIdentifier": "t_uint256",
  2399. "typeString": "uint256"
  2400. }
  2401. ],
  2402. "id": 3289,
  2403. "name": "_approve",
  2404. "nodeType": "Identifier",
  2405. "overloadedDeclarations": [],
  2406. "referencedDeclaration": 3491,
  2407. "src": "4493:8:10",
  2408. "typeDescriptions": {
  2409. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  2410. "typeString": "function (address,address,uint256)"
  2411. }
  2412. },
  2413. "id": 3302,
  2414. "isConstant": false,
  2415. "isLValue": false,
  2416. "isPure": false,
  2417. "kind": "functionCall",
  2418. "lValueRequested": false,
  2419. "names": [],
  2420. "nodeType": "FunctionCall",
  2421. "src": "4493:84:10",
  2422. "typeDescriptions": {
  2423. "typeIdentifier": "t_tuple$__$",
  2424. "typeString": "tuple()"
  2425. }
  2426. },
  2427. "id": 3303,
  2428. "nodeType": "ExpressionStatement",
  2429. "src": "4493:84:10"
  2430. },
  2431. {
  2432. "expression": {
  2433. "argumentTypes": null,
  2434. "hexValue": "74727565",
  2435. "id": 3304,
  2436. "isConstant": false,
  2437. "isLValue": false,
  2438. "isPure": true,
  2439. "kind": "bool",
  2440. "lValueRequested": false,
  2441. "nodeType": "Literal",
  2442. "src": "4594:4:10",
  2443. "subdenomination": null,
  2444. "typeDescriptions": {
  2445. "typeIdentifier": "t_bool",
  2446. "typeString": "bool"
  2447. },
  2448. "value": "true"
  2449. },
  2450. "functionReturnParameters": 3288,
  2451. "id": 3305,
  2452. "nodeType": "Return",
  2453. "src": "4587:11:10"
  2454. }
  2455. ]
  2456. },
  2457. "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n * This is an alternative to `approve` that can be used as a mitigation for\nproblems described in `IERC20.approve`.\n * Emits an `Approval` event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.",
  2458. "id": 3307,
  2459. "implemented": true,
  2460. "kind": "function",
  2461. "modifiers": [],
  2462. "name": "decreaseAllowance",
  2463. "nodeType": "FunctionDefinition",
  2464. "parameters": {
  2465. "id": 3285,
  2466. "nodeType": "ParameterList",
  2467. "parameters": [
  2468. {
  2469. "constant": false,
  2470. "id": 3282,
  2471. "name": "spender",
  2472. "nodeType": "VariableDeclaration",
  2473. "scope": 3307,
  2474. "src": "4419:15:10",
  2475. "stateVariable": false,
  2476. "storageLocation": "default",
  2477. "typeDescriptions": {
  2478. "typeIdentifier": "t_address",
  2479. "typeString": "address"
  2480. },
  2481. "typeName": {
  2482. "id": 3281,
  2483. "name": "address",
  2484. "nodeType": "ElementaryTypeName",
  2485. "src": "4419:7:10",
  2486. "stateMutability": "nonpayable",
  2487. "typeDescriptions": {
  2488. "typeIdentifier": "t_address",
  2489. "typeString": "address"
  2490. }
  2491. },
  2492. "value": null,
  2493. "visibility": "internal"
  2494. },
  2495. {
  2496. "constant": false,
  2497. "id": 3284,
  2498. "name": "subtractedValue",
  2499. "nodeType": "VariableDeclaration",
  2500. "scope": 3307,
  2501. "src": "4436:23:10",
  2502. "stateVariable": false,
  2503. "storageLocation": "default",
  2504. "typeDescriptions": {
  2505. "typeIdentifier": "t_uint256",
  2506. "typeString": "uint256"
  2507. },
  2508. "typeName": {
  2509. "id": 3283,
  2510. "name": "uint256",
  2511. "nodeType": "ElementaryTypeName",
  2512. "src": "4436:7:10",
  2513. "typeDescriptions": {
  2514. "typeIdentifier": "t_uint256",
  2515. "typeString": "uint256"
  2516. }
  2517. },
  2518. "value": null,
  2519. "visibility": "internal"
  2520. }
  2521. ],
  2522. "src": "4418:42:10"
  2523. },
  2524. "returnParameters": {
  2525. "id": 3288,
  2526. "nodeType": "ParameterList",
  2527. "parameters": [
  2528. {
  2529. "constant": false,
  2530. "id": 3287,
  2531. "name": "",
  2532. "nodeType": "VariableDeclaration",
  2533. "scope": 3307,
  2534. "src": "4477:4:10",
  2535. "stateVariable": false,
  2536. "storageLocation": "default",
  2537. "typeDescriptions": {
  2538. "typeIdentifier": "t_bool",
  2539. "typeString": "bool"
  2540. },
  2541. "typeName": {
  2542. "id": 3286,
  2543. "name": "bool",
  2544. "nodeType": "ElementaryTypeName",
  2545. "src": "4477:4:10",
  2546. "typeDescriptions": {
  2547. "typeIdentifier": "t_bool",
  2548. "typeString": "bool"
  2549. }
  2550. },
  2551. "value": null,
  2552. "visibility": "internal"
  2553. }
  2554. ],
  2555. "src": "4476:6:10"
  2556. },
  2557. "scope": 3520,
  2558. "src": "4392:213:10",
  2559. "stateMutability": "nonpayable",
  2560. "superFunction": null,
  2561. "visibility": "public"
  2562. },
  2563. {
  2564. "body": {
  2565. "id": 3362,
  2566. "nodeType": "Block",
  2567. "src": "5158:343:10",
  2568. "statements": [
  2569. {
  2570. "expression": {
  2571. "argumentTypes": null,
  2572. "arguments": [
  2573. {
  2574. "argumentTypes": null,
  2575. "commonType": {
  2576. "typeIdentifier": "t_address",
  2577. "typeString": "address"
  2578. },
  2579. "id": 3321,
  2580. "isConstant": false,
  2581. "isLValue": false,
  2582. "isPure": false,
  2583. "lValueRequested": false,
  2584. "leftExpression": {
  2585. "argumentTypes": null,
  2586. "id": 3317,
  2587. "name": "sender",
  2588. "nodeType": "Identifier",
  2589. "overloadedDeclarations": [],
  2590. "referencedDeclaration": 3309,
  2591. "src": "5176:6:10",
  2592. "typeDescriptions": {
  2593. "typeIdentifier": "t_address",
  2594. "typeString": "address"
  2595. }
  2596. },
  2597. "nodeType": "BinaryOperation",
  2598. "operator": "!=",
  2599. "rightExpression": {
  2600. "argumentTypes": null,
  2601. "arguments": [
  2602. {
  2603. "argumentTypes": null,
  2604. "hexValue": "30",
  2605. "id": 3319,
  2606. "isConstant": false,
  2607. "isLValue": false,
  2608. "isPure": true,
  2609. "kind": "number",
  2610. "lValueRequested": false,
  2611. "nodeType": "Literal",
  2612. "src": "5194:1:10",
  2613. "subdenomination": null,
  2614. "typeDescriptions": {
  2615. "typeIdentifier": "t_rational_0_by_1",
  2616. "typeString": "int_const 0"
  2617. },
  2618. "value": "0"
  2619. }
  2620. ],
  2621. "expression": {
  2622. "argumentTypes": [
  2623. {
  2624. "typeIdentifier": "t_rational_0_by_1",
  2625. "typeString": "int_const 0"
  2626. }
  2627. ],
  2628. "id": 3318,
  2629. "isConstant": false,
  2630. "isLValue": false,
  2631. "isPure": true,
  2632. "lValueRequested": false,
  2633. "nodeType": "ElementaryTypeNameExpression",
  2634. "src": "5186:7:10",
  2635. "typeDescriptions": {
  2636. "typeIdentifier": "t_type$_t_address_$",
  2637. "typeString": "type(address)"
  2638. },
  2639. "typeName": "address"
  2640. },
  2641. "id": 3320,
  2642. "isConstant": false,
  2643. "isLValue": false,
  2644. "isPure": true,
  2645. "kind": "typeConversion",
  2646. "lValueRequested": false,
  2647. "names": [],
  2648. "nodeType": "FunctionCall",
  2649. "src": "5186:10:10",
  2650. "typeDescriptions": {
  2651. "typeIdentifier": "t_address_payable",
  2652. "typeString": "address payable"
  2653. }
  2654. },
  2655. "src": "5176:20:10",
  2656. "typeDescriptions": {
  2657. "typeIdentifier": "t_bool",
  2658. "typeString": "bool"
  2659. }
  2660. },
  2661. {
  2662. "argumentTypes": null,
  2663. "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
  2664. "id": 3322,
  2665. "isConstant": false,
  2666. "isLValue": false,
  2667. "isPure": true,
  2668. "kind": "string",
  2669. "lValueRequested": false,
  2670. "nodeType": "Literal",
  2671. "src": "5198:39:10",
  2672. "subdenomination": null,
  2673. "typeDescriptions": {
  2674. "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
  2675. "typeString": "literal_string \"ERC20: transfer from the zero address\""
  2676. },
  2677. "value": "ERC20: transfer from the zero address"
  2678. }
  2679. ],
  2680. "expression": {
  2681. "argumentTypes": [
  2682. {
  2683. "typeIdentifier": "t_bool",
  2684. "typeString": "bool"
  2685. },
  2686. {
  2687. "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
  2688. "typeString": "literal_string \"ERC20: transfer from the zero address\""
  2689. }
  2690. ],
  2691. "id": 3316,
  2692. "name": "require",
  2693. "nodeType": "Identifier",
  2694. "overloadedDeclarations": [
  2695. 3665,
  2696. 3666
  2697. ],
  2698. "referencedDeclaration": 3666,
  2699. "src": "5168:7:10",
  2700. "typeDescriptions": {
  2701. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  2702. "typeString": "function (bool,string memory) pure"
  2703. }
  2704. },
  2705. "id": 3323,
  2706. "isConstant": false,
  2707. "isLValue": false,
  2708. "isPure": false,
  2709. "kind": "functionCall",
  2710. "lValueRequested": false,
  2711. "names": [],
  2712. "nodeType": "FunctionCall",
  2713. "src": "5168:70:10",
  2714. "typeDescriptions": {
  2715. "typeIdentifier": "t_tuple$__$",
  2716. "typeString": "tuple()"
  2717. }
  2718. },
  2719. "id": 3324,
  2720. "nodeType": "ExpressionStatement",
  2721. "src": "5168:70:10"
  2722. },
  2723. {
  2724. "expression": {
  2725. "argumentTypes": null,
  2726. "arguments": [
  2727. {
  2728. "argumentTypes": null,
  2729. "commonType": {
  2730. "typeIdentifier": "t_address",
  2731. "typeString": "address"
  2732. },
  2733. "id": 3330,
  2734. "isConstant": false,
  2735. "isLValue": false,
  2736. "isPure": false,
  2737. "lValueRequested": false,
  2738. "leftExpression": {
  2739. "argumentTypes": null,
  2740. "id": 3326,
  2741. "name": "recipient",
  2742. "nodeType": "Identifier",
  2743. "overloadedDeclarations": [],
  2744. "referencedDeclaration": 3311,
  2745. "src": "5256:9:10",
  2746. "typeDescriptions": {
  2747. "typeIdentifier": "t_address",
  2748. "typeString": "address"
  2749. }
  2750. },
  2751. "nodeType": "BinaryOperation",
  2752. "operator": "!=",
  2753. "rightExpression": {
  2754. "argumentTypes": null,
  2755. "arguments": [
  2756. {
  2757. "argumentTypes": null,
  2758. "hexValue": "30",
  2759. "id": 3328,
  2760. "isConstant": false,
  2761. "isLValue": false,
  2762. "isPure": true,
  2763. "kind": "number",
  2764. "lValueRequested": false,
  2765. "nodeType": "Literal",
  2766. "src": "5277:1:10",
  2767. "subdenomination": null,
  2768. "typeDescriptions": {
  2769. "typeIdentifier": "t_rational_0_by_1",
  2770. "typeString": "int_const 0"
  2771. },
  2772. "value": "0"
  2773. }
  2774. ],
  2775. "expression": {
  2776. "argumentTypes": [
  2777. {
  2778. "typeIdentifier": "t_rational_0_by_1",
  2779. "typeString": "int_const 0"
  2780. }
  2781. ],
  2782. "id": 3327,
  2783. "isConstant": false,
  2784. "isLValue": false,
  2785. "isPure": true,
  2786. "lValueRequested": false,
  2787. "nodeType": "ElementaryTypeNameExpression",
  2788. "src": "5269:7:10",
  2789. "typeDescriptions": {
  2790. "typeIdentifier": "t_type$_t_address_$",
  2791. "typeString": "type(address)"
  2792. },
  2793. "typeName": "address"
  2794. },
  2795. "id": 3329,
  2796. "isConstant": false,
  2797. "isLValue": false,
  2798. "isPure": true,
  2799. "kind": "typeConversion",
  2800. "lValueRequested": false,
  2801. "names": [],
  2802. "nodeType": "FunctionCall",
  2803. "src": "5269:10:10",
  2804. "typeDescriptions": {
  2805. "typeIdentifier": "t_address_payable",
  2806. "typeString": "address payable"
  2807. }
  2808. },
  2809. "src": "5256:23:10",
  2810. "typeDescriptions": {
  2811. "typeIdentifier": "t_bool",
  2812. "typeString": "bool"
  2813. }
  2814. },
  2815. {
  2816. "argumentTypes": null,
  2817. "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
  2818. "id": 3331,
  2819. "isConstant": false,
  2820. "isLValue": false,
  2821. "isPure": true,
  2822. "kind": "string",
  2823. "lValueRequested": false,
  2824. "nodeType": "Literal",
  2825. "src": "5281:37:10",
  2826. "subdenomination": null,
  2827. "typeDescriptions": {
  2828. "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
  2829. "typeString": "literal_string \"ERC20: transfer to the zero address\""
  2830. },
  2831. "value": "ERC20: transfer to the zero address"
  2832. }
  2833. ],
  2834. "expression": {
  2835. "argumentTypes": [
  2836. {
  2837. "typeIdentifier": "t_bool",
  2838. "typeString": "bool"
  2839. },
  2840. {
  2841. "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
  2842. "typeString": "literal_string \"ERC20: transfer to the zero address\""
  2843. }
  2844. ],
  2845. "id": 3325,
  2846. "name": "require",
  2847. "nodeType": "Identifier",
  2848. "overloadedDeclarations": [
  2849. 3665,
  2850. 3666
  2851. ],
  2852. "referencedDeclaration": 3666,
  2853. "src": "5248:7:10",
  2854. "typeDescriptions": {
  2855. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  2856. "typeString": "function (bool,string memory) pure"
  2857. }
  2858. },
  2859. "id": 3332,
  2860. "isConstant": false,
  2861. "isLValue": false,
  2862. "isPure": false,
  2863. "kind": "functionCall",
  2864. "lValueRequested": false,
  2865. "names": [],
  2866. "nodeType": "FunctionCall",
  2867. "src": "5248:71:10",
  2868. "typeDescriptions": {
  2869. "typeIdentifier": "t_tuple$__$",
  2870. "typeString": "tuple()"
  2871. }
  2872. },
  2873. "id": 3333,
  2874. "nodeType": "ExpressionStatement",
  2875. "src": "5248:71:10"
  2876. },
  2877. {
  2878. "expression": {
  2879. "argumentTypes": null,
  2880. "id": 3343,
  2881. "isConstant": false,
  2882. "isLValue": false,
  2883. "isPure": false,
  2884. "lValueRequested": false,
  2885. "leftHandSide": {
  2886. "argumentTypes": null,
  2887. "baseExpression": {
  2888. "argumentTypes": null,
  2889. "id": 3334,
  2890. "name": "_balances",
  2891. "nodeType": "Identifier",
  2892. "overloadedDeclarations": [],
  2893. "referencedDeclaration": 3136,
  2894. "src": "5330:9:10",
  2895. "typeDescriptions": {
  2896. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  2897. "typeString": "mapping(address => uint256)"
  2898. }
  2899. },
  2900. "id": 3336,
  2901. "indexExpression": {
  2902. "argumentTypes": null,
  2903. "id": 3335,
  2904. "name": "sender",
  2905. "nodeType": "Identifier",
  2906. "overloadedDeclarations": [],
  2907. "referencedDeclaration": 3309,
  2908. "src": "5340:6:10",
  2909. "typeDescriptions": {
  2910. "typeIdentifier": "t_address",
  2911. "typeString": "address"
  2912. }
  2913. },
  2914. "isConstant": false,
  2915. "isLValue": true,
  2916. "isPure": false,
  2917. "lValueRequested": true,
  2918. "nodeType": "IndexAccess",
  2919. "src": "5330:17:10",
  2920. "typeDescriptions": {
  2921. "typeIdentifier": "t_uint256",
  2922. "typeString": "uint256"
  2923. }
  2924. },
  2925. "nodeType": "Assignment",
  2926. "operator": "=",
  2927. "rightHandSide": {
  2928. "argumentTypes": null,
  2929. "arguments": [
  2930. {
  2931. "argumentTypes": null,
  2932. "id": 3341,
  2933. "name": "amount",
  2934. "nodeType": "Identifier",
  2935. "overloadedDeclarations": [],
  2936. "referencedDeclaration": 3313,
  2937. "src": "5372:6:10",
  2938. "typeDescriptions": {
  2939. "typeIdentifier": "t_uint256",
  2940. "typeString": "uint256"
  2941. }
  2942. }
  2943. ],
  2944. "expression": {
  2945. "argumentTypes": [
  2946. {
  2947. "typeIdentifier": "t_uint256",
  2948. "typeString": "uint256"
  2949. }
  2950. ],
  2951. "expression": {
  2952. "argumentTypes": null,
  2953. "baseExpression": {
  2954. "argumentTypes": null,
  2955. "id": 3337,
  2956. "name": "_balances",
  2957. "nodeType": "Identifier",
  2958. "overloadedDeclarations": [],
  2959. "referencedDeclaration": 3136,
  2960. "src": "5350:9:10",
  2961. "typeDescriptions": {
  2962. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  2963. "typeString": "mapping(address => uint256)"
  2964. }
  2965. },
  2966. "id": 3339,
  2967. "indexExpression": {
  2968. "argumentTypes": null,
  2969. "id": 3338,
  2970. "name": "sender",
  2971. "nodeType": "Identifier",
  2972. "overloadedDeclarations": [],
  2973. "referencedDeclaration": 3309,
  2974. "src": "5360:6:10",
  2975. "typeDescriptions": {
  2976. "typeIdentifier": "t_address",
  2977. "typeString": "address"
  2978. }
  2979. },
  2980. "isConstant": false,
  2981. "isLValue": true,
  2982. "isPure": false,
  2983. "lValueRequested": false,
  2984. "nodeType": "IndexAccess",
  2985. "src": "5350:17:10",
  2986. "typeDescriptions": {
  2987. "typeIdentifier": "t_uint256",
  2988. "typeString": "uint256"
  2989. }
  2990. },
  2991. "id": 3340,
  2992. "isConstant": false,
  2993. "isLValue": false,
  2994. "isPure": false,
  2995. "lValueRequested": false,
  2996. "memberName": "sub",
  2997. "nodeType": "MemberAccess",
  2998. "referencedDeclaration": 3042,
  2999. "src": "5350:21:10",
  3000. "typeDescriptions": {
  3001. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  3002. "typeString": "function (uint256,uint256) pure returns (uint256)"
  3003. }
  3004. },
  3005. "id": 3342,
  3006. "isConstant": false,
  3007. "isLValue": false,
  3008. "isPure": false,
  3009. "kind": "functionCall",
  3010. "lValueRequested": false,
  3011. "names": [],
  3012. "nodeType": "FunctionCall",
  3013. "src": "5350:29:10",
  3014. "typeDescriptions": {
  3015. "typeIdentifier": "t_uint256",
  3016. "typeString": "uint256"
  3017. }
  3018. },
  3019. "src": "5330:49:10",
  3020. "typeDescriptions": {
  3021. "typeIdentifier": "t_uint256",
  3022. "typeString": "uint256"
  3023. }
  3024. },
  3025. "id": 3344,
  3026. "nodeType": "ExpressionStatement",
  3027. "src": "5330:49:10"
  3028. },
  3029. {
  3030. "expression": {
  3031. "argumentTypes": null,
  3032. "id": 3354,
  3033. "isConstant": false,
  3034. "isLValue": false,
  3035. "isPure": false,
  3036. "lValueRequested": false,
  3037. "leftHandSide": {
  3038. "argumentTypes": null,
  3039. "baseExpression": {
  3040. "argumentTypes": null,
  3041. "id": 3345,
  3042. "name": "_balances",
  3043. "nodeType": "Identifier",
  3044. "overloadedDeclarations": [],
  3045. "referencedDeclaration": 3136,
  3046. "src": "5389:9:10",
  3047. "typeDescriptions": {
  3048. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  3049. "typeString": "mapping(address => uint256)"
  3050. }
  3051. },
  3052. "id": 3347,
  3053. "indexExpression": {
  3054. "argumentTypes": null,
  3055. "id": 3346,
  3056. "name": "recipient",
  3057. "nodeType": "Identifier",
  3058. "overloadedDeclarations": [],
  3059. "referencedDeclaration": 3311,
  3060. "src": "5399:9:10",
  3061. "typeDescriptions": {
  3062. "typeIdentifier": "t_address",
  3063. "typeString": "address"
  3064. }
  3065. },
  3066. "isConstant": false,
  3067. "isLValue": true,
  3068. "isPure": false,
  3069. "lValueRequested": true,
  3070. "nodeType": "IndexAccess",
  3071. "src": "5389:20:10",
  3072. "typeDescriptions": {
  3073. "typeIdentifier": "t_uint256",
  3074. "typeString": "uint256"
  3075. }
  3076. },
  3077. "nodeType": "Assignment",
  3078. "operator": "=",
  3079. "rightHandSide": {
  3080. "argumentTypes": null,
  3081. "arguments": [
  3082. {
  3083. "argumentTypes": null,
  3084. "id": 3352,
  3085. "name": "amount",
  3086. "nodeType": "Identifier",
  3087. "overloadedDeclarations": [],
  3088. "referencedDeclaration": 3313,
  3089. "src": "5437:6:10",
  3090. "typeDescriptions": {
  3091. "typeIdentifier": "t_uint256",
  3092. "typeString": "uint256"
  3093. }
  3094. }
  3095. ],
  3096. "expression": {
  3097. "argumentTypes": [
  3098. {
  3099. "typeIdentifier": "t_uint256",
  3100. "typeString": "uint256"
  3101. }
  3102. ],
  3103. "expression": {
  3104. "argumentTypes": null,
  3105. "baseExpression": {
  3106. "argumentTypes": null,
  3107. "id": 3348,
  3108. "name": "_balances",
  3109. "nodeType": "Identifier",
  3110. "overloadedDeclarations": [],
  3111. "referencedDeclaration": 3136,
  3112. "src": "5412:9:10",
  3113. "typeDescriptions": {
  3114. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  3115. "typeString": "mapping(address => uint256)"
  3116. }
  3117. },
  3118. "id": 3350,
  3119. "indexExpression": {
  3120. "argumentTypes": null,
  3121. "id": 3349,
  3122. "name": "recipient",
  3123. "nodeType": "Identifier",
  3124. "overloadedDeclarations": [],
  3125. "referencedDeclaration": 3311,
  3126. "src": "5422:9:10",
  3127. "typeDescriptions": {
  3128. "typeIdentifier": "t_address",
  3129. "typeString": "address"
  3130. }
  3131. },
  3132. "isConstant": false,
  3133. "isLValue": true,
  3134. "isPure": false,
  3135. "lValueRequested": false,
  3136. "nodeType": "IndexAccess",
  3137. "src": "5412:20:10",
  3138. "typeDescriptions": {
  3139. "typeIdentifier": "t_uint256",
  3140. "typeString": "uint256"
  3141. }
  3142. },
  3143. "id": 3351,
  3144. "isConstant": false,
  3145. "isLValue": false,
  3146. "isPure": false,
  3147. "lValueRequested": false,
  3148. "memberName": "add",
  3149. "nodeType": "MemberAccess",
  3150. "referencedDeclaration": 3017,
  3151. "src": "5412:24:10",
  3152. "typeDescriptions": {
  3153. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  3154. "typeString": "function (uint256,uint256) pure returns (uint256)"
  3155. }
  3156. },
  3157. "id": 3353,
  3158. "isConstant": false,
  3159. "isLValue": false,
  3160. "isPure": false,
  3161. "kind": "functionCall",
  3162. "lValueRequested": false,
  3163. "names": [],
  3164. "nodeType": "FunctionCall",
  3165. "src": "5412:32:10",
  3166. "typeDescriptions": {
  3167. "typeIdentifier": "t_uint256",
  3168. "typeString": "uint256"
  3169. }
  3170. },
  3171. "src": "5389:55:10",
  3172. "typeDescriptions": {
  3173. "typeIdentifier": "t_uint256",
  3174. "typeString": "uint256"
  3175. }
  3176. },
  3177. "id": 3355,
  3178. "nodeType": "ExpressionStatement",
  3179. "src": "5389:55:10"
  3180. },
  3181. {
  3182. "eventCall": {
  3183. "argumentTypes": null,
  3184. "arguments": [
  3185. {
  3186. "argumentTypes": null,
  3187. "id": 3357,
  3188. "name": "sender",
  3189. "nodeType": "Identifier",
  3190. "overloadedDeclarations": [],
  3191. "referencedDeclaration": 3309,
  3192. "src": "5468:6:10",
  3193. "typeDescriptions": {
  3194. "typeIdentifier": "t_address",
  3195. "typeString": "address"
  3196. }
  3197. },
  3198. {
  3199. "argumentTypes": null,
  3200. "id": 3358,
  3201. "name": "recipient",
  3202. "nodeType": "Identifier",
  3203. "overloadedDeclarations": [],
  3204. "referencedDeclaration": 3311,
  3205. "src": "5476:9:10",
  3206. "typeDescriptions": {
  3207. "typeIdentifier": "t_address",
  3208. "typeString": "address"
  3209. }
  3210. },
  3211. {
  3212. "argumentTypes": null,
  3213. "id": 3359,
  3214. "name": "amount",
  3215. "nodeType": "Identifier",
  3216. "overloadedDeclarations": [],
  3217. "referencedDeclaration": 3313,
  3218. "src": "5487:6:10",
  3219. "typeDescriptions": {
  3220. "typeIdentifier": "t_uint256",
  3221. "typeString": "uint256"
  3222. }
  3223. }
  3224. ],
  3225. "expression": {
  3226. "argumentTypes": [
  3227. {
  3228. "typeIdentifier": "t_address",
  3229. "typeString": "address"
  3230. },
  3231. {
  3232. "typeIdentifier": "t_address",
  3233. "typeString": "address"
  3234. },
  3235. {
  3236. "typeIdentifier": "t_uint256",
  3237. "typeString": "uint256"
  3238. }
  3239. ],
  3240. "id": 3356,
  3241. "name": "Transfer",
  3242. "nodeType": "Identifier",
  3243. "overloadedDeclarations": [],
  3244. "referencedDeclaration": 3638,
  3245. "src": "5459:8:10",
  3246. "typeDescriptions": {
  3247. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  3248. "typeString": "function (address,address,uint256)"
  3249. }
  3250. },
  3251. "id": 3360,
  3252. "isConstant": false,
  3253. "isLValue": false,
  3254. "isPure": false,
  3255. "kind": "functionCall",
  3256. "lValueRequested": false,
  3257. "names": [],
  3258. "nodeType": "FunctionCall",
  3259. "src": "5459:35:10",
  3260. "typeDescriptions": {
  3261. "typeIdentifier": "t_tuple$__$",
  3262. "typeString": "tuple()"
  3263. }
  3264. },
  3265. "id": 3361,
  3266. "nodeType": "EmitStatement",
  3267. "src": "5454:40:10"
  3268. }
  3269. ]
  3270. },
  3271. "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n * This is internal function is equivalent to `transfer`, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n * Emits a `Transfer` event.\n * Requirements:\n * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.",
  3272. "id": 3363,
  3273. "implemented": true,
  3274. "kind": "function",
  3275. "modifiers": [],
  3276. "name": "_transfer",
  3277. "nodeType": "FunctionDefinition",
  3278. "parameters": {
  3279. "id": 3314,
  3280. "nodeType": "ParameterList",
  3281. "parameters": [
  3282. {
  3283. "constant": false,
  3284. "id": 3309,
  3285. "name": "sender",
  3286. "nodeType": "VariableDeclaration",
  3287. "scope": 3363,
  3288. "src": "5098:14:10",
  3289. "stateVariable": false,
  3290. "storageLocation": "default",
  3291. "typeDescriptions": {
  3292. "typeIdentifier": "t_address",
  3293. "typeString": "address"
  3294. },
  3295. "typeName": {
  3296. "id": 3308,
  3297. "name": "address",
  3298. "nodeType": "ElementaryTypeName",
  3299. "src": "5098:7:10",
  3300. "stateMutability": "nonpayable",
  3301. "typeDescriptions": {
  3302. "typeIdentifier": "t_address",
  3303. "typeString": "address"
  3304. }
  3305. },
  3306. "value": null,
  3307. "visibility": "internal"
  3308. },
  3309. {
  3310. "constant": false,
  3311. "id": 3311,
  3312. "name": "recipient",
  3313. "nodeType": "VariableDeclaration",
  3314. "scope": 3363,
  3315. "src": "5114:17:10",
  3316. "stateVariable": false,
  3317. "storageLocation": "default",
  3318. "typeDescriptions": {
  3319. "typeIdentifier": "t_address",
  3320. "typeString": "address"
  3321. },
  3322. "typeName": {
  3323. "id": 3310,
  3324. "name": "address",
  3325. "nodeType": "ElementaryTypeName",
  3326. "src": "5114:7:10",
  3327. "stateMutability": "nonpayable",
  3328. "typeDescriptions": {
  3329. "typeIdentifier": "t_address",
  3330. "typeString": "address"
  3331. }
  3332. },
  3333. "value": null,
  3334. "visibility": "internal"
  3335. },
  3336. {
  3337. "constant": false,
  3338. "id": 3313,
  3339. "name": "amount",
  3340. "nodeType": "VariableDeclaration",
  3341. "scope": 3363,
  3342. "src": "5133:14:10",
  3343. "stateVariable": false,
  3344. "storageLocation": "default",
  3345. "typeDescriptions": {
  3346. "typeIdentifier": "t_uint256",
  3347. "typeString": "uint256"
  3348. },
  3349. "typeName": {
  3350. "id": 3312,
  3351. "name": "uint256",
  3352. "nodeType": "ElementaryTypeName",
  3353. "src": "5133:7:10",
  3354. "typeDescriptions": {
  3355. "typeIdentifier": "t_uint256",
  3356. "typeString": "uint256"
  3357. }
  3358. },
  3359. "value": null,
  3360. "visibility": "internal"
  3361. }
  3362. ],
  3363. "src": "5097:51:10"
  3364. },
  3365. "returnParameters": {
  3366. "id": 3315,
  3367. "nodeType": "ParameterList",
  3368. "parameters": [],
  3369. "src": "5158:0:10"
  3370. },
  3371. "scope": 3520,
  3372. "src": "5079:422:10",
  3373. "stateMutability": "nonpayable",
  3374. "superFunction": null,
  3375. "visibility": "internal"
  3376. },
  3377. {
  3378. "body": {
  3379. "id": 3405,
  3380. "nodeType": "Block",
  3381. "src": "5828:245:10",
  3382. "statements": [
  3383. {
  3384. "expression": {
  3385. "argumentTypes": null,
  3386. "arguments": [
  3387. {
  3388. "argumentTypes": null,
  3389. "commonType": {
  3390. "typeIdentifier": "t_address",
  3391. "typeString": "address"
  3392. },
  3393. "id": 3375,
  3394. "isConstant": false,
  3395. "isLValue": false,
  3396. "isPure": false,
  3397. "lValueRequested": false,
  3398. "leftExpression": {
  3399. "argumentTypes": null,
  3400. "id": 3371,
  3401. "name": "account",
  3402. "nodeType": "Identifier",
  3403. "overloadedDeclarations": [],
  3404. "referencedDeclaration": 3365,
  3405. "src": "5846:7:10",
  3406. "typeDescriptions": {
  3407. "typeIdentifier": "t_address",
  3408. "typeString": "address"
  3409. }
  3410. },
  3411. "nodeType": "BinaryOperation",
  3412. "operator": "!=",
  3413. "rightExpression": {
  3414. "argumentTypes": null,
  3415. "arguments": [
  3416. {
  3417. "argumentTypes": null,
  3418. "hexValue": "30",
  3419. "id": 3373,
  3420. "isConstant": false,
  3421. "isLValue": false,
  3422. "isPure": true,
  3423. "kind": "number",
  3424. "lValueRequested": false,
  3425. "nodeType": "Literal",
  3426. "src": "5865:1:10",
  3427. "subdenomination": null,
  3428. "typeDescriptions": {
  3429. "typeIdentifier": "t_rational_0_by_1",
  3430. "typeString": "int_const 0"
  3431. },
  3432. "value": "0"
  3433. }
  3434. ],
  3435. "expression": {
  3436. "argumentTypes": [
  3437. {
  3438. "typeIdentifier": "t_rational_0_by_1",
  3439. "typeString": "int_const 0"
  3440. }
  3441. ],
  3442. "id": 3372,
  3443. "isConstant": false,
  3444. "isLValue": false,
  3445. "isPure": true,
  3446. "lValueRequested": false,
  3447. "nodeType": "ElementaryTypeNameExpression",
  3448. "src": "5857:7:10",
  3449. "typeDescriptions": {
  3450. "typeIdentifier": "t_type$_t_address_$",
  3451. "typeString": "type(address)"
  3452. },
  3453. "typeName": "address"
  3454. },
  3455. "id": 3374,
  3456. "isConstant": false,
  3457. "isLValue": false,
  3458. "isPure": true,
  3459. "kind": "typeConversion",
  3460. "lValueRequested": false,
  3461. "names": [],
  3462. "nodeType": "FunctionCall",
  3463. "src": "5857:10:10",
  3464. "typeDescriptions": {
  3465. "typeIdentifier": "t_address_payable",
  3466. "typeString": "address payable"
  3467. }
  3468. },
  3469. "src": "5846:21:10",
  3470. "typeDescriptions": {
  3471. "typeIdentifier": "t_bool",
  3472. "typeString": "bool"
  3473. }
  3474. },
  3475. {
  3476. "argumentTypes": null,
  3477. "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
  3478. "id": 3376,
  3479. "isConstant": false,
  3480. "isLValue": false,
  3481. "isPure": true,
  3482. "kind": "string",
  3483. "lValueRequested": false,
  3484. "nodeType": "Literal",
  3485. "src": "5869:33:10",
  3486. "subdenomination": null,
  3487. "typeDescriptions": {
  3488. "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
  3489. "typeString": "literal_string \"ERC20: mint to the zero address\""
  3490. },
  3491. "value": "ERC20: mint to the zero address"
  3492. }
  3493. ],
  3494. "expression": {
  3495. "argumentTypes": [
  3496. {
  3497. "typeIdentifier": "t_bool",
  3498. "typeString": "bool"
  3499. },
  3500. {
  3501. "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
  3502. "typeString": "literal_string \"ERC20: mint to the zero address\""
  3503. }
  3504. ],
  3505. "id": 3370,
  3506. "name": "require",
  3507. "nodeType": "Identifier",
  3508. "overloadedDeclarations": [
  3509. 3665,
  3510. 3666
  3511. ],
  3512. "referencedDeclaration": 3666,
  3513. "src": "5838:7:10",
  3514. "typeDescriptions": {
  3515. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  3516. "typeString": "function (bool,string memory) pure"
  3517. }
  3518. },
  3519. "id": 3377,
  3520. "isConstant": false,
  3521. "isLValue": false,
  3522. "isPure": false,
  3523. "kind": "functionCall",
  3524. "lValueRequested": false,
  3525. "names": [],
  3526. "nodeType": "FunctionCall",
  3527. "src": "5838:65:10",
  3528. "typeDescriptions": {
  3529. "typeIdentifier": "t_tuple$__$",
  3530. "typeString": "tuple()"
  3531. }
  3532. },
  3533. "id": 3378,
  3534. "nodeType": "ExpressionStatement",
  3535. "src": "5838:65:10"
  3536. },
  3537. {
  3538. "expression": {
  3539. "argumentTypes": null,
  3540. "id": 3384,
  3541. "isConstant": false,
  3542. "isLValue": false,
  3543. "isPure": false,
  3544. "lValueRequested": false,
  3545. "leftHandSide": {
  3546. "argumentTypes": null,
  3547. "id": 3379,
  3548. "name": "_totalSupply",
  3549. "nodeType": "Identifier",
  3550. "overloadedDeclarations": [],
  3551. "referencedDeclaration": 3144,
  3552. "src": "5914:12:10",
  3553. "typeDescriptions": {
  3554. "typeIdentifier": "t_uint256",
  3555. "typeString": "uint256"
  3556. }
  3557. },
  3558. "nodeType": "Assignment",
  3559. "operator": "=",
  3560. "rightHandSide": {
  3561. "argumentTypes": null,
  3562. "arguments": [
  3563. {
  3564. "argumentTypes": null,
  3565. "id": 3382,
  3566. "name": "amount",
  3567. "nodeType": "Identifier",
  3568. "overloadedDeclarations": [],
  3569. "referencedDeclaration": 3367,
  3570. "src": "5946:6:10",
  3571. "typeDescriptions": {
  3572. "typeIdentifier": "t_uint256",
  3573. "typeString": "uint256"
  3574. }
  3575. }
  3576. ],
  3577. "expression": {
  3578. "argumentTypes": [
  3579. {
  3580. "typeIdentifier": "t_uint256",
  3581. "typeString": "uint256"
  3582. }
  3583. ],
  3584. "expression": {
  3585. "argumentTypes": null,
  3586. "id": 3380,
  3587. "name": "_totalSupply",
  3588. "nodeType": "Identifier",
  3589. "overloadedDeclarations": [],
  3590. "referencedDeclaration": 3144,
  3591. "src": "5929:12:10",
  3592. "typeDescriptions": {
  3593. "typeIdentifier": "t_uint256",
  3594. "typeString": "uint256"
  3595. }
  3596. },
  3597. "id": 3381,
  3598. "isConstant": false,
  3599. "isLValue": false,
  3600. "isPure": false,
  3601. "lValueRequested": false,
  3602. "memberName": "add",
  3603. "nodeType": "MemberAccess",
  3604. "referencedDeclaration": 3017,
  3605. "src": "5929:16:10",
  3606. "typeDescriptions": {
  3607. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  3608. "typeString": "function (uint256,uint256) pure returns (uint256)"
  3609. }
  3610. },
  3611. "id": 3383,
  3612. "isConstant": false,
  3613. "isLValue": false,
  3614. "isPure": false,
  3615. "kind": "functionCall",
  3616. "lValueRequested": false,
  3617. "names": [],
  3618. "nodeType": "FunctionCall",
  3619. "src": "5929:24:10",
  3620. "typeDescriptions": {
  3621. "typeIdentifier": "t_uint256",
  3622. "typeString": "uint256"
  3623. }
  3624. },
  3625. "src": "5914:39:10",
  3626. "typeDescriptions": {
  3627. "typeIdentifier": "t_uint256",
  3628. "typeString": "uint256"
  3629. }
  3630. },
  3631. "id": 3385,
  3632. "nodeType": "ExpressionStatement",
  3633. "src": "5914:39:10"
  3634. },
  3635. {
  3636. "expression": {
  3637. "argumentTypes": null,
  3638. "id": 3395,
  3639. "isConstant": false,
  3640. "isLValue": false,
  3641. "isPure": false,
  3642. "lValueRequested": false,
  3643. "leftHandSide": {
  3644. "argumentTypes": null,
  3645. "baseExpression": {
  3646. "argumentTypes": null,
  3647. "id": 3386,
  3648. "name": "_balances",
  3649. "nodeType": "Identifier",
  3650. "overloadedDeclarations": [],
  3651. "referencedDeclaration": 3136,
  3652. "src": "5963:9:10",
  3653. "typeDescriptions": {
  3654. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  3655. "typeString": "mapping(address => uint256)"
  3656. }
  3657. },
  3658. "id": 3388,
  3659. "indexExpression": {
  3660. "argumentTypes": null,
  3661. "id": 3387,
  3662. "name": "account",
  3663. "nodeType": "Identifier",
  3664. "overloadedDeclarations": [],
  3665. "referencedDeclaration": 3365,
  3666. "src": "5973:7:10",
  3667. "typeDescriptions": {
  3668. "typeIdentifier": "t_address",
  3669. "typeString": "address"
  3670. }
  3671. },
  3672. "isConstant": false,
  3673. "isLValue": true,
  3674. "isPure": false,
  3675. "lValueRequested": true,
  3676. "nodeType": "IndexAccess",
  3677. "src": "5963:18:10",
  3678. "typeDescriptions": {
  3679. "typeIdentifier": "t_uint256",
  3680. "typeString": "uint256"
  3681. }
  3682. },
  3683. "nodeType": "Assignment",
  3684. "operator": "=",
  3685. "rightHandSide": {
  3686. "argumentTypes": null,
  3687. "arguments": [
  3688. {
  3689. "argumentTypes": null,
  3690. "id": 3393,
  3691. "name": "amount",
  3692. "nodeType": "Identifier",
  3693. "overloadedDeclarations": [],
  3694. "referencedDeclaration": 3367,
  3695. "src": "6007:6:10",
  3696. "typeDescriptions": {
  3697. "typeIdentifier": "t_uint256",
  3698. "typeString": "uint256"
  3699. }
  3700. }
  3701. ],
  3702. "expression": {
  3703. "argumentTypes": [
  3704. {
  3705. "typeIdentifier": "t_uint256",
  3706. "typeString": "uint256"
  3707. }
  3708. ],
  3709. "expression": {
  3710. "argumentTypes": null,
  3711. "baseExpression": {
  3712. "argumentTypes": null,
  3713. "id": 3389,
  3714. "name": "_balances",
  3715. "nodeType": "Identifier",
  3716. "overloadedDeclarations": [],
  3717. "referencedDeclaration": 3136,
  3718. "src": "5984:9:10",
  3719. "typeDescriptions": {
  3720. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  3721. "typeString": "mapping(address => uint256)"
  3722. }
  3723. },
  3724. "id": 3391,
  3725. "indexExpression": {
  3726. "argumentTypes": null,
  3727. "id": 3390,
  3728. "name": "account",
  3729. "nodeType": "Identifier",
  3730. "overloadedDeclarations": [],
  3731. "referencedDeclaration": 3365,
  3732. "src": "5994:7:10",
  3733. "typeDescriptions": {
  3734. "typeIdentifier": "t_address",
  3735. "typeString": "address"
  3736. }
  3737. },
  3738. "isConstant": false,
  3739. "isLValue": true,
  3740. "isPure": false,
  3741. "lValueRequested": false,
  3742. "nodeType": "IndexAccess",
  3743. "src": "5984:18:10",
  3744. "typeDescriptions": {
  3745. "typeIdentifier": "t_uint256",
  3746. "typeString": "uint256"
  3747. }
  3748. },
  3749. "id": 3392,
  3750. "isConstant": false,
  3751. "isLValue": false,
  3752. "isPure": false,
  3753. "lValueRequested": false,
  3754. "memberName": "add",
  3755. "nodeType": "MemberAccess",
  3756. "referencedDeclaration": 3017,
  3757. "src": "5984:22:10",
  3758. "typeDescriptions": {
  3759. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  3760. "typeString": "function (uint256,uint256) pure returns (uint256)"
  3761. }
  3762. },
  3763. "id": 3394,
  3764. "isConstant": false,
  3765. "isLValue": false,
  3766. "isPure": false,
  3767. "kind": "functionCall",
  3768. "lValueRequested": false,
  3769. "names": [],
  3770. "nodeType": "FunctionCall",
  3771. "src": "5984:30:10",
  3772. "typeDescriptions": {
  3773. "typeIdentifier": "t_uint256",
  3774. "typeString": "uint256"
  3775. }
  3776. },
  3777. "src": "5963:51:10",
  3778. "typeDescriptions": {
  3779. "typeIdentifier": "t_uint256",
  3780. "typeString": "uint256"
  3781. }
  3782. },
  3783. "id": 3396,
  3784. "nodeType": "ExpressionStatement",
  3785. "src": "5963:51:10"
  3786. },
  3787. {
  3788. "eventCall": {
  3789. "argumentTypes": null,
  3790. "arguments": [
  3791. {
  3792. "argumentTypes": null,
  3793. "arguments": [
  3794. {
  3795. "argumentTypes": null,
  3796. "hexValue": "30",
  3797. "id": 3399,
  3798. "isConstant": false,
  3799. "isLValue": false,
  3800. "isPure": true,
  3801. "kind": "number",
  3802. "lValueRequested": false,
  3803. "nodeType": "Literal",
  3804. "src": "6046:1:10",
  3805. "subdenomination": null,
  3806. "typeDescriptions": {
  3807. "typeIdentifier": "t_rational_0_by_1",
  3808. "typeString": "int_const 0"
  3809. },
  3810. "value": "0"
  3811. }
  3812. ],
  3813. "expression": {
  3814. "argumentTypes": [
  3815. {
  3816. "typeIdentifier": "t_rational_0_by_1",
  3817. "typeString": "int_const 0"
  3818. }
  3819. ],
  3820. "id": 3398,
  3821. "isConstant": false,
  3822. "isLValue": false,
  3823. "isPure": true,
  3824. "lValueRequested": false,
  3825. "nodeType": "ElementaryTypeNameExpression",
  3826. "src": "6038:7:10",
  3827. "typeDescriptions": {
  3828. "typeIdentifier": "t_type$_t_address_$",
  3829. "typeString": "type(address)"
  3830. },
  3831. "typeName": "address"
  3832. },
  3833. "id": 3400,
  3834. "isConstant": false,
  3835. "isLValue": false,
  3836. "isPure": true,
  3837. "kind": "typeConversion",
  3838. "lValueRequested": false,
  3839. "names": [],
  3840. "nodeType": "FunctionCall",
  3841. "src": "6038:10:10",
  3842. "typeDescriptions": {
  3843. "typeIdentifier": "t_address_payable",
  3844. "typeString": "address payable"
  3845. }
  3846. },
  3847. {
  3848. "argumentTypes": null,
  3849. "id": 3401,
  3850. "name": "account",
  3851. "nodeType": "Identifier",
  3852. "overloadedDeclarations": [],
  3853. "referencedDeclaration": 3365,
  3854. "src": "6050:7:10",
  3855. "typeDescriptions": {
  3856. "typeIdentifier": "t_address",
  3857. "typeString": "address"
  3858. }
  3859. },
  3860. {
  3861. "argumentTypes": null,
  3862. "id": 3402,
  3863. "name": "amount",
  3864. "nodeType": "Identifier",
  3865. "overloadedDeclarations": [],
  3866. "referencedDeclaration": 3367,
  3867. "src": "6059:6:10",
  3868. "typeDescriptions": {
  3869. "typeIdentifier": "t_uint256",
  3870. "typeString": "uint256"
  3871. }
  3872. }
  3873. ],
  3874. "expression": {
  3875. "argumentTypes": [
  3876. {
  3877. "typeIdentifier": "t_address_payable",
  3878. "typeString": "address payable"
  3879. },
  3880. {
  3881. "typeIdentifier": "t_address",
  3882. "typeString": "address"
  3883. },
  3884. {
  3885. "typeIdentifier": "t_uint256",
  3886. "typeString": "uint256"
  3887. }
  3888. ],
  3889. "id": 3397,
  3890. "name": "Transfer",
  3891. "nodeType": "Identifier",
  3892. "overloadedDeclarations": [],
  3893. "referencedDeclaration": 3638,
  3894. "src": "6029:8:10",
  3895. "typeDescriptions": {
  3896. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  3897. "typeString": "function (address,address,uint256)"
  3898. }
  3899. },
  3900. "id": 3403,
  3901. "isConstant": false,
  3902. "isLValue": false,
  3903. "isPure": false,
  3904. "kind": "functionCall",
  3905. "lValueRequested": false,
  3906. "names": [],
  3907. "nodeType": "FunctionCall",
  3908. "src": "6029:37:10",
  3909. "typeDescriptions": {
  3910. "typeIdentifier": "t_tuple$__$",
  3911. "typeString": "tuple()"
  3912. }
  3913. },
  3914. "id": 3404,
  3915. "nodeType": "EmitStatement",
  3916. "src": "6024:42:10"
  3917. }
  3918. ]
  3919. },
  3920. "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n * Emits a `Transfer` event with `from` set to the zero address.\n * Requirements\n * - `to` cannot be the zero address.",
  3921. "id": 3406,
  3922. "implemented": true,
  3923. "kind": "function",
  3924. "modifiers": [],
  3925. "name": "_mint",
  3926. "nodeType": "FunctionDefinition",
  3927. "parameters": {
  3928. "id": 3368,
  3929. "nodeType": "ParameterList",
  3930. "parameters": [
  3931. {
  3932. "constant": false,
  3933. "id": 3365,
  3934. "name": "account",
  3935. "nodeType": "VariableDeclaration",
  3936. "scope": 3406,
  3937. "src": "5786:15:10",
  3938. "stateVariable": false,
  3939. "storageLocation": "default",
  3940. "typeDescriptions": {
  3941. "typeIdentifier": "t_address",
  3942. "typeString": "address"
  3943. },
  3944. "typeName": {
  3945. "id": 3364,
  3946. "name": "address",
  3947. "nodeType": "ElementaryTypeName",
  3948. "src": "5786:7:10",
  3949. "stateMutability": "nonpayable",
  3950. "typeDescriptions": {
  3951. "typeIdentifier": "t_address",
  3952. "typeString": "address"
  3953. }
  3954. },
  3955. "value": null,
  3956. "visibility": "internal"
  3957. },
  3958. {
  3959. "constant": false,
  3960. "id": 3367,
  3961. "name": "amount",
  3962. "nodeType": "VariableDeclaration",
  3963. "scope": 3406,
  3964. "src": "5803:14:10",
  3965. "stateVariable": false,
  3966. "storageLocation": "default",
  3967. "typeDescriptions": {
  3968. "typeIdentifier": "t_uint256",
  3969. "typeString": "uint256"
  3970. },
  3971. "typeName": {
  3972. "id": 3366,
  3973. "name": "uint256",
  3974. "nodeType": "ElementaryTypeName",
  3975. "src": "5803:7:10",
  3976. "typeDescriptions": {
  3977. "typeIdentifier": "t_uint256",
  3978. "typeString": "uint256"
  3979. }
  3980. },
  3981. "value": null,
  3982. "visibility": "internal"
  3983. }
  3984. ],
  3985. "src": "5785:33:10"
  3986. },
  3987. "returnParameters": {
  3988. "id": 3369,
  3989. "nodeType": "ParameterList",
  3990. "parameters": [],
  3991. "src": "5828:0:10"
  3992. },
  3993. "scope": 3520,
  3994. "src": "5771:302:10",
  3995. "stateMutability": "nonpayable",
  3996. "superFunction": null,
  3997. "visibility": "internal"
  3998. },
  3999. {
  4000. "body": {
  4001. "id": 3448,
  4002. "nodeType": "Block",
  4003. "src": "6448:244:10",
  4004. "statements": [
  4005. {
  4006. "expression": {
  4007. "argumentTypes": null,
  4008. "arguments": [
  4009. {
  4010. "argumentTypes": null,
  4011. "commonType": {
  4012. "typeIdentifier": "t_address",
  4013. "typeString": "address"
  4014. },
  4015. "id": 3418,
  4016. "isConstant": false,
  4017. "isLValue": false,
  4018. "isPure": false,
  4019. "lValueRequested": false,
  4020. "leftExpression": {
  4021. "argumentTypes": null,
  4022. "id": 3414,
  4023. "name": "account",
  4024. "nodeType": "Identifier",
  4025. "overloadedDeclarations": [],
  4026. "referencedDeclaration": 3408,
  4027. "src": "6466:7:10",
  4028. "typeDescriptions": {
  4029. "typeIdentifier": "t_address",
  4030. "typeString": "address"
  4031. }
  4032. },
  4033. "nodeType": "BinaryOperation",
  4034. "operator": "!=",
  4035. "rightExpression": {
  4036. "argumentTypes": null,
  4037. "arguments": [
  4038. {
  4039. "argumentTypes": null,
  4040. "hexValue": "30",
  4041. "id": 3416,
  4042. "isConstant": false,
  4043. "isLValue": false,
  4044. "isPure": true,
  4045. "kind": "number",
  4046. "lValueRequested": false,
  4047. "nodeType": "Literal",
  4048. "src": "6485:1:10",
  4049. "subdenomination": null,
  4050. "typeDescriptions": {
  4051. "typeIdentifier": "t_rational_0_by_1",
  4052. "typeString": "int_const 0"
  4053. },
  4054. "value": "0"
  4055. }
  4056. ],
  4057. "expression": {
  4058. "argumentTypes": [
  4059. {
  4060. "typeIdentifier": "t_rational_0_by_1",
  4061. "typeString": "int_const 0"
  4062. }
  4063. ],
  4064. "id": 3415,
  4065. "isConstant": false,
  4066. "isLValue": false,
  4067. "isPure": true,
  4068. "lValueRequested": false,
  4069. "nodeType": "ElementaryTypeNameExpression",
  4070. "src": "6477:7:10",
  4071. "typeDescriptions": {
  4072. "typeIdentifier": "t_type$_t_address_$",
  4073. "typeString": "type(address)"
  4074. },
  4075. "typeName": "address"
  4076. },
  4077. "id": 3417,
  4078. "isConstant": false,
  4079. "isLValue": false,
  4080. "isPure": true,
  4081. "kind": "typeConversion",
  4082. "lValueRequested": false,
  4083. "names": [],
  4084. "nodeType": "FunctionCall",
  4085. "src": "6477:10:10",
  4086. "typeDescriptions": {
  4087. "typeIdentifier": "t_address_payable",
  4088. "typeString": "address payable"
  4089. }
  4090. },
  4091. "src": "6466:21:10",
  4092. "typeDescriptions": {
  4093. "typeIdentifier": "t_bool",
  4094. "typeString": "bool"
  4095. }
  4096. },
  4097. {
  4098. "argumentTypes": null,
  4099. "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
  4100. "id": 3419,
  4101. "isConstant": false,
  4102. "isLValue": false,
  4103. "isPure": true,
  4104. "kind": "string",
  4105. "lValueRequested": false,
  4106. "nodeType": "Literal",
  4107. "src": "6489:35:10",
  4108. "subdenomination": null,
  4109. "typeDescriptions": {
  4110. "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
  4111. "typeString": "literal_string \"ERC20: burn from the zero address\""
  4112. },
  4113. "value": "ERC20: burn from the zero address"
  4114. }
  4115. ],
  4116. "expression": {
  4117. "argumentTypes": [
  4118. {
  4119. "typeIdentifier": "t_bool",
  4120. "typeString": "bool"
  4121. },
  4122. {
  4123. "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
  4124. "typeString": "literal_string \"ERC20: burn from the zero address\""
  4125. }
  4126. ],
  4127. "id": 3413,
  4128. "name": "require",
  4129. "nodeType": "Identifier",
  4130. "overloadedDeclarations": [
  4131. 3665,
  4132. 3666
  4133. ],
  4134. "referencedDeclaration": 3666,
  4135. "src": "6458:7:10",
  4136. "typeDescriptions": {
  4137. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  4138. "typeString": "function (bool,string memory) pure"
  4139. }
  4140. },
  4141. "id": 3420,
  4142. "isConstant": false,
  4143. "isLValue": false,
  4144. "isPure": false,
  4145. "kind": "functionCall",
  4146. "lValueRequested": false,
  4147. "names": [],
  4148. "nodeType": "FunctionCall",
  4149. "src": "6458:67:10",
  4150. "typeDescriptions": {
  4151. "typeIdentifier": "t_tuple$__$",
  4152. "typeString": "tuple()"
  4153. }
  4154. },
  4155. "id": 3421,
  4156. "nodeType": "ExpressionStatement",
  4157. "src": "6458:67:10"
  4158. },
  4159. {
  4160. "expression": {
  4161. "argumentTypes": null,
  4162. "id": 3427,
  4163. "isConstant": false,
  4164. "isLValue": false,
  4165. "isPure": false,
  4166. "lValueRequested": false,
  4167. "leftHandSide": {
  4168. "argumentTypes": null,
  4169. "id": 3422,
  4170. "name": "_totalSupply",
  4171. "nodeType": "Identifier",
  4172. "overloadedDeclarations": [],
  4173. "referencedDeclaration": 3144,
  4174. "src": "6536:12:10",
  4175. "typeDescriptions": {
  4176. "typeIdentifier": "t_uint256",
  4177. "typeString": "uint256"
  4178. }
  4179. },
  4180. "nodeType": "Assignment",
  4181. "operator": "=",
  4182. "rightHandSide": {
  4183. "argumentTypes": null,
  4184. "arguments": [
  4185. {
  4186. "argumentTypes": null,
  4187. "id": 3425,
  4188. "name": "value",
  4189. "nodeType": "Identifier",
  4190. "overloadedDeclarations": [],
  4191. "referencedDeclaration": 3410,
  4192. "src": "6568:5:10",
  4193. "typeDescriptions": {
  4194. "typeIdentifier": "t_uint256",
  4195. "typeString": "uint256"
  4196. }
  4197. }
  4198. ],
  4199. "expression": {
  4200. "argumentTypes": [
  4201. {
  4202. "typeIdentifier": "t_uint256",
  4203. "typeString": "uint256"
  4204. }
  4205. ],
  4206. "expression": {
  4207. "argumentTypes": null,
  4208. "id": 3423,
  4209. "name": "_totalSupply",
  4210. "nodeType": "Identifier",
  4211. "overloadedDeclarations": [],
  4212. "referencedDeclaration": 3144,
  4213. "src": "6551:12:10",
  4214. "typeDescriptions": {
  4215. "typeIdentifier": "t_uint256",
  4216. "typeString": "uint256"
  4217. }
  4218. },
  4219. "id": 3424,
  4220. "isConstant": false,
  4221. "isLValue": false,
  4222. "isPure": false,
  4223. "lValueRequested": false,
  4224. "memberName": "sub",
  4225. "nodeType": "MemberAccess",
  4226. "referencedDeclaration": 3042,
  4227. "src": "6551:16:10",
  4228. "typeDescriptions": {
  4229. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  4230. "typeString": "function (uint256,uint256) pure returns (uint256)"
  4231. }
  4232. },
  4233. "id": 3426,
  4234. "isConstant": false,
  4235. "isLValue": false,
  4236. "isPure": false,
  4237. "kind": "functionCall",
  4238. "lValueRequested": false,
  4239. "names": [],
  4240. "nodeType": "FunctionCall",
  4241. "src": "6551:23:10",
  4242. "typeDescriptions": {
  4243. "typeIdentifier": "t_uint256",
  4244. "typeString": "uint256"
  4245. }
  4246. },
  4247. "src": "6536:38:10",
  4248. "typeDescriptions": {
  4249. "typeIdentifier": "t_uint256",
  4250. "typeString": "uint256"
  4251. }
  4252. },
  4253. "id": 3428,
  4254. "nodeType": "ExpressionStatement",
  4255. "src": "6536:38:10"
  4256. },
  4257. {
  4258. "expression": {
  4259. "argumentTypes": null,
  4260. "id": 3438,
  4261. "isConstant": false,
  4262. "isLValue": false,
  4263. "isPure": false,
  4264. "lValueRequested": false,
  4265. "leftHandSide": {
  4266. "argumentTypes": null,
  4267. "baseExpression": {
  4268. "argumentTypes": null,
  4269. "id": 3429,
  4270. "name": "_balances",
  4271. "nodeType": "Identifier",
  4272. "overloadedDeclarations": [],
  4273. "referencedDeclaration": 3136,
  4274. "src": "6584:9:10",
  4275. "typeDescriptions": {
  4276. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  4277. "typeString": "mapping(address => uint256)"
  4278. }
  4279. },
  4280. "id": 3431,
  4281. "indexExpression": {
  4282. "argumentTypes": null,
  4283. "id": 3430,
  4284. "name": "account",
  4285. "nodeType": "Identifier",
  4286. "overloadedDeclarations": [],
  4287. "referencedDeclaration": 3408,
  4288. "src": "6594:7:10",
  4289. "typeDescriptions": {
  4290. "typeIdentifier": "t_address",
  4291. "typeString": "address"
  4292. }
  4293. },
  4294. "isConstant": false,
  4295. "isLValue": true,
  4296. "isPure": false,
  4297. "lValueRequested": true,
  4298. "nodeType": "IndexAccess",
  4299. "src": "6584:18:10",
  4300. "typeDescriptions": {
  4301. "typeIdentifier": "t_uint256",
  4302. "typeString": "uint256"
  4303. }
  4304. },
  4305. "nodeType": "Assignment",
  4306. "operator": "=",
  4307. "rightHandSide": {
  4308. "argumentTypes": null,
  4309. "arguments": [
  4310. {
  4311. "argumentTypes": null,
  4312. "id": 3436,
  4313. "name": "value",
  4314. "nodeType": "Identifier",
  4315. "overloadedDeclarations": [],
  4316. "referencedDeclaration": 3410,
  4317. "src": "6628:5:10",
  4318. "typeDescriptions": {
  4319. "typeIdentifier": "t_uint256",
  4320. "typeString": "uint256"
  4321. }
  4322. }
  4323. ],
  4324. "expression": {
  4325. "argumentTypes": [
  4326. {
  4327. "typeIdentifier": "t_uint256",
  4328. "typeString": "uint256"
  4329. }
  4330. ],
  4331. "expression": {
  4332. "argumentTypes": null,
  4333. "baseExpression": {
  4334. "argumentTypes": null,
  4335. "id": 3432,
  4336. "name": "_balances",
  4337. "nodeType": "Identifier",
  4338. "overloadedDeclarations": [],
  4339. "referencedDeclaration": 3136,
  4340. "src": "6605:9:10",
  4341. "typeDescriptions": {
  4342. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  4343. "typeString": "mapping(address => uint256)"
  4344. }
  4345. },
  4346. "id": 3434,
  4347. "indexExpression": {
  4348. "argumentTypes": null,
  4349. "id": 3433,
  4350. "name": "account",
  4351. "nodeType": "Identifier",
  4352. "overloadedDeclarations": [],
  4353. "referencedDeclaration": 3408,
  4354. "src": "6615:7:10",
  4355. "typeDescriptions": {
  4356. "typeIdentifier": "t_address",
  4357. "typeString": "address"
  4358. }
  4359. },
  4360. "isConstant": false,
  4361. "isLValue": true,
  4362. "isPure": false,
  4363. "lValueRequested": false,
  4364. "nodeType": "IndexAccess",
  4365. "src": "6605:18:10",
  4366. "typeDescriptions": {
  4367. "typeIdentifier": "t_uint256",
  4368. "typeString": "uint256"
  4369. }
  4370. },
  4371. "id": 3435,
  4372. "isConstant": false,
  4373. "isLValue": false,
  4374. "isPure": false,
  4375. "lValueRequested": false,
  4376. "memberName": "sub",
  4377. "nodeType": "MemberAccess",
  4378. "referencedDeclaration": 3042,
  4379. "src": "6605:22:10",
  4380. "typeDescriptions": {
  4381. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  4382. "typeString": "function (uint256,uint256) pure returns (uint256)"
  4383. }
  4384. },
  4385. "id": 3437,
  4386. "isConstant": false,
  4387. "isLValue": false,
  4388. "isPure": false,
  4389. "kind": "functionCall",
  4390. "lValueRequested": false,
  4391. "names": [],
  4392. "nodeType": "FunctionCall",
  4393. "src": "6605:29:10",
  4394. "typeDescriptions": {
  4395. "typeIdentifier": "t_uint256",
  4396. "typeString": "uint256"
  4397. }
  4398. },
  4399. "src": "6584:50:10",
  4400. "typeDescriptions": {
  4401. "typeIdentifier": "t_uint256",
  4402. "typeString": "uint256"
  4403. }
  4404. },
  4405. "id": 3439,
  4406. "nodeType": "ExpressionStatement",
  4407. "src": "6584:50:10"
  4408. },
  4409. {
  4410. "eventCall": {
  4411. "argumentTypes": null,
  4412. "arguments": [
  4413. {
  4414. "argumentTypes": null,
  4415. "id": 3441,
  4416. "name": "account",
  4417. "nodeType": "Identifier",
  4418. "overloadedDeclarations": [],
  4419. "referencedDeclaration": 3408,
  4420. "src": "6658:7:10",
  4421. "typeDescriptions": {
  4422. "typeIdentifier": "t_address",
  4423. "typeString": "address"
  4424. }
  4425. },
  4426. {
  4427. "argumentTypes": null,
  4428. "arguments": [
  4429. {
  4430. "argumentTypes": null,
  4431. "hexValue": "30",
  4432. "id": 3443,
  4433. "isConstant": false,
  4434. "isLValue": false,
  4435. "isPure": true,
  4436. "kind": "number",
  4437. "lValueRequested": false,
  4438. "nodeType": "Literal",
  4439. "src": "6675:1:10",
  4440. "subdenomination": null,
  4441. "typeDescriptions": {
  4442. "typeIdentifier": "t_rational_0_by_1",
  4443. "typeString": "int_const 0"
  4444. },
  4445. "value": "0"
  4446. }
  4447. ],
  4448. "expression": {
  4449. "argumentTypes": [
  4450. {
  4451. "typeIdentifier": "t_rational_0_by_1",
  4452. "typeString": "int_const 0"
  4453. }
  4454. ],
  4455. "id": 3442,
  4456. "isConstant": false,
  4457. "isLValue": false,
  4458. "isPure": true,
  4459. "lValueRequested": false,
  4460. "nodeType": "ElementaryTypeNameExpression",
  4461. "src": "6667:7:10",
  4462. "typeDescriptions": {
  4463. "typeIdentifier": "t_type$_t_address_$",
  4464. "typeString": "type(address)"
  4465. },
  4466. "typeName": "address"
  4467. },
  4468. "id": 3444,
  4469. "isConstant": false,
  4470. "isLValue": false,
  4471. "isPure": true,
  4472. "kind": "typeConversion",
  4473. "lValueRequested": false,
  4474. "names": [],
  4475. "nodeType": "FunctionCall",
  4476. "src": "6667:10:10",
  4477. "typeDescriptions": {
  4478. "typeIdentifier": "t_address_payable",
  4479. "typeString": "address payable"
  4480. }
  4481. },
  4482. {
  4483. "argumentTypes": null,
  4484. "id": 3445,
  4485. "name": "value",
  4486. "nodeType": "Identifier",
  4487. "overloadedDeclarations": [],
  4488. "referencedDeclaration": 3410,
  4489. "src": "6679:5:10",
  4490. "typeDescriptions": {
  4491. "typeIdentifier": "t_uint256",
  4492. "typeString": "uint256"
  4493. }
  4494. }
  4495. ],
  4496. "expression": {
  4497. "argumentTypes": [
  4498. {
  4499. "typeIdentifier": "t_address",
  4500. "typeString": "address"
  4501. },
  4502. {
  4503. "typeIdentifier": "t_address_payable",
  4504. "typeString": "address payable"
  4505. },
  4506. {
  4507. "typeIdentifier": "t_uint256",
  4508. "typeString": "uint256"
  4509. }
  4510. ],
  4511. "id": 3440,
  4512. "name": "Transfer",
  4513. "nodeType": "Identifier",
  4514. "overloadedDeclarations": [],
  4515. "referencedDeclaration": 3638,
  4516. "src": "6649:8:10",
  4517. "typeDescriptions": {
  4518. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  4519. "typeString": "function (address,address,uint256)"
  4520. }
  4521. },
  4522. "id": 3446,
  4523. "isConstant": false,
  4524. "isLValue": false,
  4525. "isPure": false,
  4526. "kind": "functionCall",
  4527. "lValueRequested": false,
  4528. "names": [],
  4529. "nodeType": "FunctionCall",
  4530. "src": "6649:36:10",
  4531. "typeDescriptions": {
  4532. "typeIdentifier": "t_tuple$__$",
  4533. "typeString": "tuple()"
  4534. }
  4535. },
  4536. "id": 3447,
  4537. "nodeType": "EmitStatement",
  4538. "src": "6644:41:10"
  4539. }
  4540. ]
  4541. },
  4542. "documentation": "@dev Destoys `amount` tokens from `account`, reducing the\ntotal supply.\n * Emits a `Transfer` event with `to` set to the zero address.\n * Requirements\n * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.",
  4543. "id": 3449,
  4544. "implemented": true,
  4545. "kind": "function",
  4546. "modifiers": [],
  4547. "name": "_burn",
  4548. "nodeType": "FunctionDefinition",
  4549. "parameters": {
  4550. "id": 3411,
  4551. "nodeType": "ParameterList",
  4552. "parameters": [
  4553. {
  4554. "constant": false,
  4555. "id": 3408,
  4556. "name": "account",
  4557. "nodeType": "VariableDeclaration",
  4558. "scope": 3449,
  4559. "src": "6407:15:10",
  4560. "stateVariable": false,
  4561. "storageLocation": "default",
  4562. "typeDescriptions": {
  4563. "typeIdentifier": "t_address",
  4564. "typeString": "address"
  4565. },
  4566. "typeName": {
  4567. "id": 3407,
  4568. "name": "address",
  4569. "nodeType": "ElementaryTypeName",
  4570. "src": "6407:7:10",
  4571. "stateMutability": "nonpayable",
  4572. "typeDescriptions": {
  4573. "typeIdentifier": "t_address",
  4574. "typeString": "address"
  4575. }
  4576. },
  4577. "value": null,
  4578. "visibility": "internal"
  4579. },
  4580. {
  4581. "constant": false,
  4582. "id": 3410,
  4583. "name": "value",
  4584. "nodeType": "VariableDeclaration",
  4585. "scope": 3449,
  4586. "src": "6424:13:10",
  4587. "stateVariable": false,
  4588. "storageLocation": "default",
  4589. "typeDescriptions": {
  4590. "typeIdentifier": "t_uint256",
  4591. "typeString": "uint256"
  4592. },
  4593. "typeName": {
  4594. "id": 3409,
  4595. "name": "uint256",
  4596. "nodeType": "ElementaryTypeName",
  4597. "src": "6424:7:10",
  4598. "typeDescriptions": {
  4599. "typeIdentifier": "t_uint256",
  4600. "typeString": "uint256"
  4601. }
  4602. },
  4603. "value": null,
  4604. "visibility": "internal"
  4605. }
  4606. ],
  4607. "src": "6406:32:10"
  4608. },
  4609. "returnParameters": {
  4610. "id": 3412,
  4611. "nodeType": "ParameterList",
  4612. "parameters": [],
  4613. "src": "6448:0:10"
  4614. },
  4615. "scope": 3520,
  4616. "src": "6392:300:10",
  4617. "stateMutability": "nonpayable",
  4618. "superFunction": null,
  4619. "visibility": "internal"
  4620. },
  4621. {
  4622. "body": {
  4623. "id": 3490,
  4624. "nodeType": "Block",
  4625. "src": "7191:255:10",
  4626. "statements": [
  4627. {
  4628. "expression": {
  4629. "argumentTypes": null,
  4630. "arguments": [
  4631. {
  4632. "argumentTypes": null,
  4633. "commonType": {
  4634. "typeIdentifier": "t_address",
  4635. "typeString": "address"
  4636. },
  4637. "id": 3463,
  4638. "isConstant": false,
  4639. "isLValue": false,
  4640. "isPure": false,
  4641. "lValueRequested": false,
  4642. "leftExpression": {
  4643. "argumentTypes": null,
  4644. "id": 3459,
  4645. "name": "owner",
  4646. "nodeType": "Identifier",
  4647. "overloadedDeclarations": [],
  4648. "referencedDeclaration": 3451,
  4649. "src": "7209:5:10",
  4650. "typeDescriptions": {
  4651. "typeIdentifier": "t_address",
  4652. "typeString": "address"
  4653. }
  4654. },
  4655. "nodeType": "BinaryOperation",
  4656. "operator": "!=",
  4657. "rightExpression": {
  4658. "argumentTypes": null,
  4659. "arguments": [
  4660. {
  4661. "argumentTypes": null,
  4662. "hexValue": "30",
  4663. "id": 3461,
  4664. "isConstant": false,
  4665. "isLValue": false,
  4666. "isPure": true,
  4667. "kind": "number",
  4668. "lValueRequested": false,
  4669. "nodeType": "Literal",
  4670. "src": "7226:1:10",
  4671. "subdenomination": null,
  4672. "typeDescriptions": {
  4673. "typeIdentifier": "t_rational_0_by_1",
  4674. "typeString": "int_const 0"
  4675. },
  4676. "value": "0"
  4677. }
  4678. ],
  4679. "expression": {
  4680. "argumentTypes": [
  4681. {
  4682. "typeIdentifier": "t_rational_0_by_1",
  4683. "typeString": "int_const 0"
  4684. }
  4685. ],
  4686. "id": 3460,
  4687. "isConstant": false,
  4688. "isLValue": false,
  4689. "isPure": true,
  4690. "lValueRequested": false,
  4691. "nodeType": "ElementaryTypeNameExpression",
  4692. "src": "7218:7:10",
  4693. "typeDescriptions": {
  4694. "typeIdentifier": "t_type$_t_address_$",
  4695. "typeString": "type(address)"
  4696. },
  4697. "typeName": "address"
  4698. },
  4699. "id": 3462,
  4700. "isConstant": false,
  4701. "isLValue": false,
  4702. "isPure": true,
  4703. "kind": "typeConversion",
  4704. "lValueRequested": false,
  4705. "names": [],
  4706. "nodeType": "FunctionCall",
  4707. "src": "7218:10:10",
  4708. "typeDescriptions": {
  4709. "typeIdentifier": "t_address_payable",
  4710. "typeString": "address payable"
  4711. }
  4712. },
  4713. "src": "7209:19:10",
  4714. "typeDescriptions": {
  4715. "typeIdentifier": "t_bool",
  4716. "typeString": "bool"
  4717. }
  4718. },
  4719. {
  4720. "argumentTypes": null,
  4721. "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
  4722. "id": 3464,
  4723. "isConstant": false,
  4724. "isLValue": false,
  4725. "isPure": true,
  4726. "kind": "string",
  4727. "lValueRequested": false,
  4728. "nodeType": "Literal",
  4729. "src": "7230:38:10",
  4730. "subdenomination": null,
  4731. "typeDescriptions": {
  4732. "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
  4733. "typeString": "literal_string \"ERC20: approve from the zero address\""
  4734. },
  4735. "value": "ERC20: approve from the zero address"
  4736. }
  4737. ],
  4738. "expression": {
  4739. "argumentTypes": [
  4740. {
  4741. "typeIdentifier": "t_bool",
  4742. "typeString": "bool"
  4743. },
  4744. {
  4745. "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
  4746. "typeString": "literal_string \"ERC20: approve from the zero address\""
  4747. }
  4748. ],
  4749. "id": 3458,
  4750. "name": "require",
  4751. "nodeType": "Identifier",
  4752. "overloadedDeclarations": [
  4753. 3665,
  4754. 3666
  4755. ],
  4756. "referencedDeclaration": 3666,
  4757. "src": "7201:7:10",
  4758. "typeDescriptions": {
  4759. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  4760. "typeString": "function (bool,string memory) pure"
  4761. }
  4762. },
  4763. "id": 3465,
  4764. "isConstant": false,
  4765. "isLValue": false,
  4766. "isPure": false,
  4767. "kind": "functionCall",
  4768. "lValueRequested": false,
  4769. "names": [],
  4770. "nodeType": "FunctionCall",
  4771. "src": "7201:68:10",
  4772. "typeDescriptions": {
  4773. "typeIdentifier": "t_tuple$__$",
  4774. "typeString": "tuple()"
  4775. }
  4776. },
  4777. "id": 3466,
  4778. "nodeType": "ExpressionStatement",
  4779. "src": "7201:68:10"
  4780. },
  4781. {
  4782. "expression": {
  4783. "argumentTypes": null,
  4784. "arguments": [
  4785. {
  4786. "argumentTypes": null,
  4787. "commonType": {
  4788. "typeIdentifier": "t_address",
  4789. "typeString": "address"
  4790. },
  4791. "id": 3472,
  4792. "isConstant": false,
  4793. "isLValue": false,
  4794. "isPure": false,
  4795. "lValueRequested": false,
  4796. "leftExpression": {
  4797. "argumentTypes": null,
  4798. "id": 3468,
  4799. "name": "spender",
  4800. "nodeType": "Identifier",
  4801. "overloadedDeclarations": [],
  4802. "referencedDeclaration": 3453,
  4803. "src": "7287:7:10",
  4804. "typeDescriptions": {
  4805. "typeIdentifier": "t_address",
  4806. "typeString": "address"
  4807. }
  4808. },
  4809. "nodeType": "BinaryOperation",
  4810. "operator": "!=",
  4811. "rightExpression": {
  4812. "argumentTypes": null,
  4813. "arguments": [
  4814. {
  4815. "argumentTypes": null,
  4816. "hexValue": "30",
  4817. "id": 3470,
  4818. "isConstant": false,
  4819. "isLValue": false,
  4820. "isPure": true,
  4821. "kind": "number",
  4822. "lValueRequested": false,
  4823. "nodeType": "Literal",
  4824. "src": "7306:1:10",
  4825. "subdenomination": null,
  4826. "typeDescriptions": {
  4827. "typeIdentifier": "t_rational_0_by_1",
  4828. "typeString": "int_const 0"
  4829. },
  4830. "value": "0"
  4831. }
  4832. ],
  4833. "expression": {
  4834. "argumentTypes": [
  4835. {
  4836. "typeIdentifier": "t_rational_0_by_1",
  4837. "typeString": "int_const 0"
  4838. }
  4839. ],
  4840. "id": 3469,
  4841. "isConstant": false,
  4842. "isLValue": false,
  4843. "isPure": true,
  4844. "lValueRequested": false,
  4845. "nodeType": "ElementaryTypeNameExpression",
  4846. "src": "7298:7:10",
  4847. "typeDescriptions": {
  4848. "typeIdentifier": "t_type$_t_address_$",
  4849. "typeString": "type(address)"
  4850. },
  4851. "typeName": "address"
  4852. },
  4853. "id": 3471,
  4854. "isConstant": false,
  4855. "isLValue": false,
  4856. "isPure": true,
  4857. "kind": "typeConversion",
  4858. "lValueRequested": false,
  4859. "names": [],
  4860. "nodeType": "FunctionCall",
  4861. "src": "7298:10:10",
  4862. "typeDescriptions": {
  4863. "typeIdentifier": "t_address_payable",
  4864. "typeString": "address payable"
  4865. }
  4866. },
  4867. "src": "7287:21:10",
  4868. "typeDescriptions": {
  4869. "typeIdentifier": "t_bool",
  4870. "typeString": "bool"
  4871. }
  4872. },
  4873. {
  4874. "argumentTypes": null,
  4875. "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
  4876. "id": 3473,
  4877. "isConstant": false,
  4878. "isLValue": false,
  4879. "isPure": true,
  4880. "kind": "string",
  4881. "lValueRequested": false,
  4882. "nodeType": "Literal",
  4883. "src": "7310:36:10",
  4884. "subdenomination": null,
  4885. "typeDescriptions": {
  4886. "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
  4887. "typeString": "literal_string \"ERC20: approve to the zero address\""
  4888. },
  4889. "value": "ERC20: approve to the zero address"
  4890. }
  4891. ],
  4892. "expression": {
  4893. "argumentTypes": [
  4894. {
  4895. "typeIdentifier": "t_bool",
  4896. "typeString": "bool"
  4897. },
  4898. {
  4899. "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
  4900. "typeString": "literal_string \"ERC20: approve to the zero address\""
  4901. }
  4902. ],
  4903. "id": 3467,
  4904. "name": "require",
  4905. "nodeType": "Identifier",
  4906. "overloadedDeclarations": [
  4907. 3665,
  4908. 3666
  4909. ],
  4910. "referencedDeclaration": 3666,
  4911. "src": "7279:7:10",
  4912. "typeDescriptions": {
  4913. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  4914. "typeString": "function (bool,string memory) pure"
  4915. }
  4916. },
  4917. "id": 3474,
  4918. "isConstant": false,
  4919. "isLValue": false,
  4920. "isPure": false,
  4921. "kind": "functionCall",
  4922. "lValueRequested": false,
  4923. "names": [],
  4924. "nodeType": "FunctionCall",
  4925. "src": "7279:68:10",
  4926. "typeDescriptions": {
  4927. "typeIdentifier": "t_tuple$__$",
  4928. "typeString": "tuple()"
  4929. }
  4930. },
  4931. "id": 3475,
  4932. "nodeType": "ExpressionStatement",
  4933. "src": "7279:68:10"
  4934. },
  4935. {
  4936. "expression": {
  4937. "argumentTypes": null,
  4938. "id": 3482,
  4939. "isConstant": false,
  4940. "isLValue": false,
  4941. "isPure": false,
  4942. "lValueRequested": false,
  4943. "leftHandSide": {
  4944. "argumentTypes": null,
  4945. "baseExpression": {
  4946. "argumentTypes": null,
  4947. "baseExpression": {
  4948. "argumentTypes": null,
  4949. "id": 3476,
  4950. "name": "_allowances",
  4951. "nodeType": "Identifier",
  4952. "overloadedDeclarations": [],
  4953. "referencedDeclaration": 3142,
  4954. "src": "7358:11:10",
  4955. "typeDescriptions": {
  4956. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  4957. "typeString": "mapping(address => mapping(address => uint256))"
  4958. }
  4959. },
  4960. "id": 3479,
  4961. "indexExpression": {
  4962. "argumentTypes": null,
  4963. "id": 3477,
  4964. "name": "owner",
  4965. "nodeType": "Identifier",
  4966. "overloadedDeclarations": [],
  4967. "referencedDeclaration": 3451,
  4968. "src": "7370:5:10",
  4969. "typeDescriptions": {
  4970. "typeIdentifier": "t_address",
  4971. "typeString": "address"
  4972. }
  4973. },
  4974. "isConstant": false,
  4975. "isLValue": true,
  4976. "isPure": false,
  4977. "lValueRequested": false,
  4978. "nodeType": "IndexAccess",
  4979. "src": "7358:18:10",
  4980. "typeDescriptions": {
  4981. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  4982. "typeString": "mapping(address => uint256)"
  4983. }
  4984. },
  4985. "id": 3480,
  4986. "indexExpression": {
  4987. "argumentTypes": null,
  4988. "id": 3478,
  4989. "name": "spender",
  4990. "nodeType": "Identifier",
  4991. "overloadedDeclarations": [],
  4992. "referencedDeclaration": 3453,
  4993. "src": "7377:7:10",
  4994. "typeDescriptions": {
  4995. "typeIdentifier": "t_address",
  4996. "typeString": "address"
  4997. }
  4998. },
  4999. "isConstant": false,
  5000. "isLValue": true,
  5001. "isPure": false,
  5002. "lValueRequested": true,
  5003. "nodeType": "IndexAccess",
  5004. "src": "7358:27:10",
  5005. "typeDescriptions": {
  5006. "typeIdentifier": "t_uint256",
  5007. "typeString": "uint256"
  5008. }
  5009. },
  5010. "nodeType": "Assignment",
  5011. "operator": "=",
  5012. "rightHandSide": {
  5013. "argumentTypes": null,
  5014. "id": 3481,
  5015. "name": "value",
  5016. "nodeType": "Identifier",
  5017. "overloadedDeclarations": [],
  5018. "referencedDeclaration": 3455,
  5019. "src": "7388:5:10",
  5020. "typeDescriptions": {
  5021. "typeIdentifier": "t_uint256",
  5022. "typeString": "uint256"
  5023. }
  5024. },
  5025. "src": "7358:35:10",
  5026. "typeDescriptions": {
  5027. "typeIdentifier": "t_uint256",
  5028. "typeString": "uint256"
  5029. }
  5030. },
  5031. "id": 3483,
  5032. "nodeType": "ExpressionStatement",
  5033. "src": "7358:35:10"
  5034. },
  5035. {
  5036. "eventCall": {
  5037. "argumentTypes": null,
  5038. "arguments": [
  5039. {
  5040. "argumentTypes": null,
  5041. "id": 3485,
  5042. "name": "owner",
  5043. "nodeType": "Identifier",
  5044. "overloadedDeclarations": [],
  5045. "referencedDeclaration": 3451,
  5046. "src": "7417:5:10",
  5047. "typeDescriptions": {
  5048. "typeIdentifier": "t_address",
  5049. "typeString": "address"
  5050. }
  5051. },
  5052. {
  5053. "argumentTypes": null,
  5054. "id": 3486,
  5055. "name": "spender",
  5056. "nodeType": "Identifier",
  5057. "overloadedDeclarations": [],
  5058. "referencedDeclaration": 3453,
  5059. "src": "7424:7:10",
  5060. "typeDescriptions": {
  5061. "typeIdentifier": "t_address",
  5062. "typeString": "address"
  5063. }
  5064. },
  5065. {
  5066. "argumentTypes": null,
  5067. "id": 3487,
  5068. "name": "value",
  5069. "nodeType": "Identifier",
  5070. "overloadedDeclarations": [],
  5071. "referencedDeclaration": 3455,
  5072. "src": "7433:5:10",
  5073. "typeDescriptions": {
  5074. "typeIdentifier": "t_uint256",
  5075. "typeString": "uint256"
  5076. }
  5077. }
  5078. ],
  5079. "expression": {
  5080. "argumentTypes": [
  5081. {
  5082. "typeIdentifier": "t_address",
  5083. "typeString": "address"
  5084. },
  5085. {
  5086. "typeIdentifier": "t_address",
  5087. "typeString": "address"
  5088. },
  5089. {
  5090. "typeIdentifier": "t_uint256",
  5091. "typeString": "uint256"
  5092. }
  5093. ],
  5094. "id": 3484,
  5095. "name": "Approval",
  5096. "nodeType": "Identifier",
  5097. "overloadedDeclarations": [],
  5098. "referencedDeclaration": 3646,
  5099. "src": "7408:8:10",
  5100. "typeDescriptions": {
  5101. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  5102. "typeString": "function (address,address,uint256)"
  5103. }
  5104. },
  5105. "id": 3488,
  5106. "isConstant": false,
  5107. "isLValue": false,
  5108. "isPure": false,
  5109. "kind": "functionCall",
  5110. "lValueRequested": false,
  5111. "names": [],
  5112. "nodeType": "FunctionCall",
  5113. "src": "7408:31:10",
  5114. "typeDescriptions": {
  5115. "typeIdentifier": "t_tuple$__$",
  5116. "typeString": "tuple()"
  5117. }
  5118. },
  5119. "id": 3489,
  5120. "nodeType": "EmitStatement",
  5121. "src": "7403:36:10"
  5122. }
  5123. ]
  5124. },
  5125. "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n * Emits an `Approval` event.\n * Requirements:\n * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.",
  5126. "id": 3491,
  5127. "implemented": true,
  5128. "kind": "function",
  5129. "modifiers": [],
  5130. "name": "_approve",
  5131. "nodeType": "FunctionDefinition",
  5132. "parameters": {
  5133. "id": 3456,
  5134. "nodeType": "ParameterList",
  5135. "parameters": [
  5136. {
  5137. "constant": false,
  5138. "id": 3451,
  5139. "name": "owner",
  5140. "nodeType": "VariableDeclaration",
  5141. "scope": 3491,
  5142. "src": "7135:13:10",
  5143. "stateVariable": false,
  5144. "storageLocation": "default",
  5145. "typeDescriptions": {
  5146. "typeIdentifier": "t_address",
  5147. "typeString": "address"
  5148. },
  5149. "typeName": {
  5150. "id": 3450,
  5151. "name": "address",
  5152. "nodeType": "ElementaryTypeName",
  5153. "src": "7135:7:10",
  5154. "stateMutability": "nonpayable",
  5155. "typeDescriptions": {
  5156. "typeIdentifier": "t_address",
  5157. "typeString": "address"
  5158. }
  5159. },
  5160. "value": null,
  5161. "visibility": "internal"
  5162. },
  5163. {
  5164. "constant": false,
  5165. "id": 3453,
  5166. "name": "spender",
  5167. "nodeType": "VariableDeclaration",
  5168. "scope": 3491,
  5169. "src": "7150:15:10",
  5170. "stateVariable": false,
  5171. "storageLocation": "default",
  5172. "typeDescriptions": {
  5173. "typeIdentifier": "t_address",
  5174. "typeString": "address"
  5175. },
  5176. "typeName": {
  5177. "id": 3452,
  5178. "name": "address",
  5179. "nodeType": "ElementaryTypeName",
  5180. "src": "7150:7:10",
  5181. "stateMutability": "nonpayable",
  5182. "typeDescriptions": {
  5183. "typeIdentifier": "t_address",
  5184. "typeString": "address"
  5185. }
  5186. },
  5187. "value": null,
  5188. "visibility": "internal"
  5189. },
  5190. {
  5191. "constant": false,
  5192. "id": 3455,
  5193. "name": "value",
  5194. "nodeType": "VariableDeclaration",
  5195. "scope": 3491,
  5196. "src": "7167:13:10",
  5197. "stateVariable": false,
  5198. "storageLocation": "default",
  5199. "typeDescriptions": {
  5200. "typeIdentifier": "t_uint256",
  5201. "typeString": "uint256"
  5202. },
  5203. "typeName": {
  5204. "id": 3454,
  5205. "name": "uint256",
  5206. "nodeType": "ElementaryTypeName",
  5207. "src": "7167:7:10",
  5208. "typeDescriptions": {
  5209. "typeIdentifier": "t_uint256",
  5210. "typeString": "uint256"
  5211. }
  5212. },
  5213. "value": null,
  5214. "visibility": "internal"
  5215. }
  5216. ],
  5217. "src": "7134:47:10"
  5218. },
  5219. "returnParameters": {
  5220. "id": 3457,
  5221. "nodeType": "ParameterList",
  5222. "parameters": [],
  5223. "src": "7191:0:10"
  5224. },
  5225. "scope": 3520,
  5226. "src": "7117:329:10",
  5227. "stateMutability": "nonpayable",
  5228. "superFunction": null,
  5229. "visibility": "internal"
  5230. },
  5231. {
  5232. "body": {
  5233. "id": 3518,
  5234. "nodeType": "Block",
  5235. "src": "7684:124:10",
  5236. "statements": [
  5237. {
  5238. "expression": {
  5239. "argumentTypes": null,
  5240. "arguments": [
  5241. {
  5242. "argumentTypes": null,
  5243. "id": 3499,
  5244. "name": "account",
  5245. "nodeType": "Identifier",
  5246. "overloadedDeclarations": [],
  5247. "referencedDeclaration": 3493,
  5248. "src": "7700:7:10",
  5249. "typeDescriptions": {
  5250. "typeIdentifier": "t_address",
  5251. "typeString": "address"
  5252. }
  5253. },
  5254. {
  5255. "argumentTypes": null,
  5256. "id": 3500,
  5257. "name": "amount",
  5258. "nodeType": "Identifier",
  5259. "overloadedDeclarations": [],
  5260. "referencedDeclaration": 3495,
  5261. "src": "7709:6:10",
  5262. "typeDescriptions": {
  5263. "typeIdentifier": "t_uint256",
  5264. "typeString": "uint256"
  5265. }
  5266. }
  5267. ],
  5268. "expression": {
  5269. "argumentTypes": [
  5270. {
  5271. "typeIdentifier": "t_address",
  5272. "typeString": "address"
  5273. },
  5274. {
  5275. "typeIdentifier": "t_uint256",
  5276. "typeString": "uint256"
  5277. }
  5278. ],
  5279. "id": 3498,
  5280. "name": "_burn",
  5281. "nodeType": "Identifier",
  5282. "overloadedDeclarations": [],
  5283. "referencedDeclaration": 3449,
  5284. "src": "7694:5:10",
  5285. "typeDescriptions": {
  5286. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
  5287. "typeString": "function (address,uint256)"
  5288. }
  5289. },
  5290. "id": 3501,
  5291. "isConstant": false,
  5292. "isLValue": false,
  5293. "isPure": false,
  5294. "kind": "functionCall",
  5295. "lValueRequested": false,
  5296. "names": [],
  5297. "nodeType": "FunctionCall",
  5298. "src": "7694:22:10",
  5299. "typeDescriptions": {
  5300. "typeIdentifier": "t_tuple$__$",
  5301. "typeString": "tuple()"
  5302. }
  5303. },
  5304. "id": 3502,
  5305. "nodeType": "ExpressionStatement",
  5306. "src": "7694:22:10"
  5307. },
  5308. {
  5309. "expression": {
  5310. "argumentTypes": null,
  5311. "arguments": [
  5312. {
  5313. "argumentTypes": null,
  5314. "id": 3504,
  5315. "name": "account",
  5316. "nodeType": "Identifier",
  5317. "overloadedDeclarations": [],
  5318. "referencedDeclaration": 3493,
  5319. "src": "7735:7:10",
  5320. "typeDescriptions": {
  5321. "typeIdentifier": "t_address",
  5322. "typeString": "address"
  5323. }
  5324. },
  5325. {
  5326. "argumentTypes": null,
  5327. "expression": {
  5328. "argumentTypes": null,
  5329. "id": 3505,
  5330. "name": "msg",
  5331. "nodeType": "Identifier",
  5332. "overloadedDeclarations": [],
  5333. "referencedDeclaration": 3662,
  5334. "src": "7744:3:10",
  5335. "typeDescriptions": {
  5336. "typeIdentifier": "t_magic_message",
  5337. "typeString": "msg"
  5338. }
  5339. },
  5340. "id": 3506,
  5341. "isConstant": false,
  5342. "isLValue": false,
  5343. "isPure": false,
  5344. "lValueRequested": false,
  5345. "memberName": "sender",
  5346. "nodeType": "MemberAccess",
  5347. "referencedDeclaration": null,
  5348. "src": "7744:10:10",
  5349. "typeDescriptions": {
  5350. "typeIdentifier": "t_address_payable",
  5351. "typeString": "address payable"
  5352. }
  5353. },
  5354. {
  5355. "argumentTypes": null,
  5356. "arguments": [
  5357. {
  5358. "argumentTypes": null,
  5359. "id": 3514,
  5360. "name": "amount",
  5361. "nodeType": "Identifier",
  5362. "overloadedDeclarations": [],
  5363. "referencedDeclaration": 3495,
  5364. "src": "7793:6:10",
  5365. "typeDescriptions": {
  5366. "typeIdentifier": "t_uint256",
  5367. "typeString": "uint256"
  5368. }
  5369. }
  5370. ],
  5371. "expression": {
  5372. "argumentTypes": [
  5373. {
  5374. "typeIdentifier": "t_uint256",
  5375. "typeString": "uint256"
  5376. }
  5377. ],
  5378. "expression": {
  5379. "argumentTypes": null,
  5380. "baseExpression": {
  5381. "argumentTypes": null,
  5382. "baseExpression": {
  5383. "argumentTypes": null,
  5384. "id": 3507,
  5385. "name": "_allowances",
  5386. "nodeType": "Identifier",
  5387. "overloadedDeclarations": [],
  5388. "referencedDeclaration": 3142,
  5389. "src": "7756:11:10",
  5390. "typeDescriptions": {
  5391. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  5392. "typeString": "mapping(address => mapping(address => uint256))"
  5393. }
  5394. },
  5395. "id": 3509,
  5396. "indexExpression": {
  5397. "argumentTypes": null,
  5398. "id": 3508,
  5399. "name": "account",
  5400. "nodeType": "Identifier",
  5401. "overloadedDeclarations": [],
  5402. "referencedDeclaration": 3493,
  5403. "src": "7768:7:10",
  5404. "typeDescriptions": {
  5405. "typeIdentifier": "t_address",
  5406. "typeString": "address"
  5407. }
  5408. },
  5409. "isConstant": false,
  5410. "isLValue": true,
  5411. "isPure": false,
  5412. "lValueRequested": false,
  5413. "nodeType": "IndexAccess",
  5414. "src": "7756:20:10",
  5415. "typeDescriptions": {
  5416. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  5417. "typeString": "mapping(address => uint256)"
  5418. }
  5419. },
  5420. "id": 3512,
  5421. "indexExpression": {
  5422. "argumentTypes": null,
  5423. "expression": {
  5424. "argumentTypes": null,
  5425. "id": 3510,
  5426. "name": "msg",
  5427. "nodeType": "Identifier",
  5428. "overloadedDeclarations": [],
  5429. "referencedDeclaration": 3662,
  5430. "src": "7777:3:10",
  5431. "typeDescriptions": {
  5432. "typeIdentifier": "t_magic_message",
  5433. "typeString": "msg"
  5434. }
  5435. },
  5436. "id": 3511,
  5437. "isConstant": false,
  5438. "isLValue": false,
  5439. "isPure": false,
  5440. "lValueRequested": false,
  5441. "memberName": "sender",
  5442. "nodeType": "MemberAccess",
  5443. "referencedDeclaration": null,
  5444. "src": "7777:10:10",
  5445. "typeDescriptions": {
  5446. "typeIdentifier": "t_address_payable",
  5447. "typeString": "address payable"
  5448. }
  5449. },
  5450. "isConstant": false,
  5451. "isLValue": true,
  5452. "isPure": false,
  5453. "lValueRequested": false,
  5454. "nodeType": "IndexAccess",
  5455. "src": "7756:32:10",
  5456. "typeDescriptions": {
  5457. "typeIdentifier": "t_uint256",
  5458. "typeString": "uint256"
  5459. }
  5460. },
  5461. "id": 3513,
  5462. "isConstant": false,
  5463. "isLValue": false,
  5464. "isPure": false,
  5465. "lValueRequested": false,
  5466. "memberName": "sub",
  5467. "nodeType": "MemberAccess",
  5468. "referencedDeclaration": 3042,
  5469. "src": "7756:36:10",
  5470. "typeDescriptions": {
  5471. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  5472. "typeString": "function (uint256,uint256) pure returns (uint256)"
  5473. }
  5474. },
  5475. "id": 3515,
  5476. "isConstant": false,
  5477. "isLValue": false,
  5478. "isPure": false,
  5479. "kind": "functionCall",
  5480. "lValueRequested": false,
  5481. "names": [],
  5482. "nodeType": "FunctionCall",
  5483. "src": "7756:44:10",
  5484. "typeDescriptions": {
  5485. "typeIdentifier": "t_uint256",
  5486. "typeString": "uint256"
  5487. }
  5488. }
  5489. ],
  5490. "expression": {
  5491. "argumentTypes": [
  5492. {
  5493. "typeIdentifier": "t_address",
  5494. "typeString": "address"
  5495. },
  5496. {
  5497. "typeIdentifier": "t_address_payable",
  5498. "typeString": "address payable"
  5499. },
  5500. {
  5501. "typeIdentifier": "t_uint256",
  5502. "typeString": "uint256"
  5503. }
  5504. ],
  5505. "id": 3503,
  5506. "name": "_approve",
  5507. "nodeType": "Identifier",
  5508. "overloadedDeclarations": [],
  5509. "referencedDeclaration": 3491,
  5510. "src": "7726:8:10",
  5511. "typeDescriptions": {
  5512. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  5513. "typeString": "function (address,address,uint256)"
  5514. }
  5515. },
  5516. "id": 3516,
  5517. "isConstant": false,
  5518. "isLValue": false,
  5519. "isPure": false,
  5520. "kind": "functionCall",
  5521. "lValueRequested": false,
  5522. "names": [],
  5523. "nodeType": "FunctionCall",
  5524. "src": "7726:75:10",
  5525. "typeDescriptions": {
  5526. "typeIdentifier": "t_tuple$__$",
  5527. "typeString": "tuple()"
  5528. }
  5529. },
  5530. "id": 3517,
  5531. "nodeType": "ExpressionStatement",
  5532. "src": "7726:75:10"
  5533. }
  5534. ]
  5535. },
  5536. "documentation": "@dev Destoys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n * See `_burn` and `_approve`.",
  5537. "id": 3519,
  5538. "implemented": true,
  5539. "kind": "function",
  5540. "modifiers": [],
  5541. "name": "_burnFrom",
  5542. "nodeType": "FunctionDefinition",
  5543. "parameters": {
  5544. "id": 3496,
  5545. "nodeType": "ParameterList",
  5546. "parameters": [
  5547. {
  5548. "constant": false,
  5549. "id": 3493,
  5550. "name": "account",
  5551. "nodeType": "VariableDeclaration",
  5552. "scope": 3519,
  5553. "src": "7642:15:10",
  5554. "stateVariable": false,
  5555. "storageLocation": "default",
  5556. "typeDescriptions": {
  5557. "typeIdentifier": "t_address",
  5558. "typeString": "address"
  5559. },
  5560. "typeName": {
  5561. "id": 3492,
  5562. "name": "address",
  5563. "nodeType": "ElementaryTypeName",
  5564. "src": "7642:7:10",
  5565. "stateMutability": "nonpayable",
  5566. "typeDescriptions": {
  5567. "typeIdentifier": "t_address",
  5568. "typeString": "address"
  5569. }
  5570. },
  5571. "value": null,
  5572. "visibility": "internal"
  5573. },
  5574. {
  5575. "constant": false,
  5576. "id": 3495,
  5577. "name": "amount",
  5578. "nodeType": "VariableDeclaration",
  5579. "scope": 3519,
  5580. "src": "7659:14:10",
  5581. "stateVariable": false,
  5582. "storageLocation": "default",
  5583. "typeDescriptions": {
  5584. "typeIdentifier": "t_uint256",
  5585. "typeString": "uint256"
  5586. },
  5587. "typeName": {
  5588. "id": 3494,
  5589. "name": "uint256",
  5590. "nodeType": "ElementaryTypeName",
  5591. "src": "7659:7:10",
  5592. "typeDescriptions": {
  5593. "typeIdentifier": "t_uint256",
  5594. "typeString": "uint256"
  5595. }
  5596. },
  5597. "value": null,
  5598. "visibility": "internal"
  5599. }
  5600. ],
  5601. "src": "7641:33:10"
  5602. },
  5603. "returnParameters": {
  5604. "id": 3497,
  5605. "nodeType": "ParameterList",
  5606. "parameters": [],
  5607. "src": "7684:0:10"
  5608. },
  5609. "scope": 3520,
  5610. "src": "7623:185:10",
  5611. "stateMutability": "nonpayable",
  5612. "superFunction": null,
  5613. "visibility": "internal"
  5614. }
  5615. ],
  5616. "scope": 3521,
  5617. "src": "1232:6578:10"
  5618. }
  5619. ],
  5620. "src": "0:7811:10"
  5621. },
  5622. "legacyAST": {
  5623. "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
  5624. "exportedSymbols": {
  5625. "ERC20": [
  5626. 3520
  5627. ]
  5628. },
  5629. "id": 3521,
  5630. "nodeType": "SourceUnit",
  5631. "nodes": [
  5632. {
  5633. "id": 3125,
  5634. "literals": [
  5635. "solidity",
  5636. "^",
  5637. "0.5",
  5638. ".0"
  5639. ],
  5640. "nodeType": "PragmaDirective",
  5641. "src": "0:23:10"
  5642. },
  5643. {
  5644. "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
  5645. "file": "./IERC20.sol",
  5646. "id": 3126,
  5647. "nodeType": "ImportDirective",
  5648. "scope": 3521,
  5649. "sourceUnit": 3648,
  5650. "src": "25:22:10",
  5651. "symbolAliases": [],
  5652. "unitAlias": ""
  5653. },
  5654. {
  5655. "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
  5656. "file": "../../math/SafeMath.sol",
  5657. "id": 3127,
  5658. "nodeType": "ImportDirective",
  5659. "scope": 3521,
  5660. "sourceUnit": 3124,
  5661. "src": "48:33:10",
  5662. "symbolAliases": [],
  5663. "unitAlias": ""
  5664. },
  5665. {
  5666. "baseContracts": [
  5667. {
  5668. "arguments": null,
  5669. "baseName": {
  5670. "contractScope": null,
  5671. "id": 3128,
  5672. "name": "IERC20",
  5673. "nodeType": "UserDefinedTypeName",
  5674. "referencedDeclaration": 3647,
  5675. "src": "1250:6:10",
  5676. "typeDescriptions": {
  5677. "typeIdentifier": "t_contract$_IERC20_$3647",
  5678. "typeString": "contract IERC20"
  5679. }
  5680. },
  5681. "id": 3129,
  5682. "nodeType": "InheritanceSpecifier",
  5683. "src": "1250:6:10"
  5684. }
  5685. ],
  5686. "contractDependencies": [
  5687. 3647
  5688. ],
  5689. "contractKind": "contract",
  5690. "documentation": "@dev Implementation of the `IERC20` interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using `_mint`.\nFor a generic mechanism see `ERC20Mintable`.\n * *For a detailed writeup see our guide [How to implement supply\nmechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an `Approval` event is emitted on calls to `transferFrom`.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See `IERC20.approve`.",
  5691. "fullyImplemented": true,
  5692. "id": 3520,
  5693. "linearizedBaseContracts": [
  5694. 3520,
  5695. 3647
  5696. ],
  5697. "name": "ERC20",
  5698. "nodeType": "ContractDefinition",
  5699. "nodes": [
  5700. {
  5701. "id": 3132,
  5702. "libraryName": {
  5703. "contractScope": null,
  5704. "id": 3130,
  5705. "name": "SafeMath",
  5706. "nodeType": "UserDefinedTypeName",
  5707. "referencedDeclaration": 3123,
  5708. "src": "1269:8:10",
  5709. "typeDescriptions": {
  5710. "typeIdentifier": "t_contract$_SafeMath_$3123",
  5711. "typeString": "library SafeMath"
  5712. }
  5713. },
  5714. "nodeType": "UsingForDirective",
  5715. "src": "1263:27:10",
  5716. "typeName": {
  5717. "id": 3131,
  5718. "name": "uint256",
  5719. "nodeType": "ElementaryTypeName",
  5720. "src": "1282:7:10",
  5721. "typeDescriptions": {
  5722. "typeIdentifier": "t_uint256",
  5723. "typeString": "uint256"
  5724. }
  5725. }
  5726. },
  5727. {
  5728. "constant": false,
  5729. "id": 3136,
  5730. "name": "_balances",
  5731. "nodeType": "VariableDeclaration",
  5732. "scope": 3520,
  5733. "src": "1296:46:10",
  5734. "stateVariable": true,
  5735. "storageLocation": "default",
  5736. "typeDescriptions": {
  5737. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  5738. "typeString": "mapping(address => uint256)"
  5739. },
  5740. "typeName": {
  5741. "id": 3135,
  5742. "keyType": {
  5743. "id": 3133,
  5744. "name": "address",
  5745. "nodeType": "ElementaryTypeName",
  5746. "src": "1305:7:10",
  5747. "typeDescriptions": {
  5748. "typeIdentifier": "t_address",
  5749. "typeString": "address"
  5750. }
  5751. },
  5752. "nodeType": "Mapping",
  5753. "src": "1296:28:10",
  5754. "typeDescriptions": {
  5755. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  5756. "typeString": "mapping(address => uint256)"
  5757. },
  5758. "valueType": {
  5759. "id": 3134,
  5760. "name": "uint256",
  5761. "nodeType": "ElementaryTypeName",
  5762. "src": "1316:7:10",
  5763. "typeDescriptions": {
  5764. "typeIdentifier": "t_uint256",
  5765. "typeString": "uint256"
  5766. }
  5767. }
  5768. },
  5769. "value": null,
  5770. "visibility": "private"
  5771. },
  5772. {
  5773. "constant": false,
  5774. "id": 3142,
  5775. "name": "_allowances",
  5776. "nodeType": "VariableDeclaration",
  5777. "scope": 3520,
  5778. "src": "1349:69:10",
  5779. "stateVariable": true,
  5780. "storageLocation": "default",
  5781. "typeDescriptions": {
  5782. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  5783. "typeString": "mapping(address => mapping(address => uint256))"
  5784. },
  5785. "typeName": {
  5786. "id": 3141,
  5787. "keyType": {
  5788. "id": 3137,
  5789. "name": "address",
  5790. "nodeType": "ElementaryTypeName",
  5791. "src": "1358:7:10",
  5792. "typeDescriptions": {
  5793. "typeIdentifier": "t_address",
  5794. "typeString": "address"
  5795. }
  5796. },
  5797. "nodeType": "Mapping",
  5798. "src": "1349:49:10",
  5799. "typeDescriptions": {
  5800. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  5801. "typeString": "mapping(address => mapping(address => uint256))"
  5802. },
  5803. "valueType": {
  5804. "id": 3140,
  5805. "keyType": {
  5806. "id": 3138,
  5807. "name": "address",
  5808. "nodeType": "ElementaryTypeName",
  5809. "src": "1378:7:10",
  5810. "typeDescriptions": {
  5811. "typeIdentifier": "t_address",
  5812. "typeString": "address"
  5813. }
  5814. },
  5815. "nodeType": "Mapping",
  5816. "src": "1369:28:10",
  5817. "typeDescriptions": {
  5818. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  5819. "typeString": "mapping(address => uint256)"
  5820. },
  5821. "valueType": {
  5822. "id": 3139,
  5823. "name": "uint256",
  5824. "nodeType": "ElementaryTypeName",
  5825. "src": "1389:7:10",
  5826. "typeDescriptions": {
  5827. "typeIdentifier": "t_uint256",
  5828. "typeString": "uint256"
  5829. }
  5830. }
  5831. }
  5832. },
  5833. "value": null,
  5834. "visibility": "private"
  5835. },
  5836. {
  5837. "constant": false,
  5838. "id": 3144,
  5839. "name": "_totalSupply",
  5840. "nodeType": "VariableDeclaration",
  5841. "scope": 3520,
  5842. "src": "1425:28:10",
  5843. "stateVariable": true,
  5844. "storageLocation": "default",
  5845. "typeDescriptions": {
  5846. "typeIdentifier": "t_uint256",
  5847. "typeString": "uint256"
  5848. },
  5849. "typeName": {
  5850. "id": 3143,
  5851. "name": "uint256",
  5852. "nodeType": "ElementaryTypeName",
  5853. "src": "1425:7:10",
  5854. "typeDescriptions": {
  5855. "typeIdentifier": "t_uint256",
  5856. "typeString": "uint256"
  5857. }
  5858. },
  5859. "value": null,
  5860. "visibility": "private"
  5861. },
  5862. {
  5863. "body": {
  5864. "id": 3151,
  5865. "nodeType": "Block",
  5866. "src": "1567:36:10",
  5867. "statements": [
  5868. {
  5869. "expression": {
  5870. "argumentTypes": null,
  5871. "id": 3149,
  5872. "name": "_totalSupply",
  5873. "nodeType": "Identifier",
  5874. "overloadedDeclarations": [],
  5875. "referencedDeclaration": 3144,
  5876. "src": "1584:12:10",
  5877. "typeDescriptions": {
  5878. "typeIdentifier": "t_uint256",
  5879. "typeString": "uint256"
  5880. }
  5881. },
  5882. "functionReturnParameters": 3148,
  5883. "id": 3150,
  5884. "nodeType": "Return",
  5885. "src": "1577:19:10"
  5886. }
  5887. ]
  5888. },
  5889. "documentation": "@dev See `IERC20.totalSupply`.",
  5890. "id": 3152,
  5891. "implemented": true,
  5892. "kind": "function",
  5893. "modifiers": [],
  5894. "name": "totalSupply",
  5895. "nodeType": "FunctionDefinition",
  5896. "parameters": {
  5897. "id": 3145,
  5898. "nodeType": "ParameterList",
  5899. "parameters": [],
  5900. "src": "1534:2:10"
  5901. },
  5902. "returnParameters": {
  5903. "id": 3148,
  5904. "nodeType": "ParameterList",
  5905. "parameters": [
  5906. {
  5907. "constant": false,
  5908. "id": 3147,
  5909. "name": "",
  5910. "nodeType": "VariableDeclaration",
  5911. "scope": 3152,
  5912. "src": "1558:7:10",
  5913. "stateVariable": false,
  5914. "storageLocation": "default",
  5915. "typeDescriptions": {
  5916. "typeIdentifier": "t_uint256",
  5917. "typeString": "uint256"
  5918. },
  5919. "typeName": {
  5920. "id": 3146,
  5921. "name": "uint256",
  5922. "nodeType": "ElementaryTypeName",
  5923. "src": "1558:7:10",
  5924. "typeDescriptions": {
  5925. "typeIdentifier": "t_uint256",
  5926. "typeString": "uint256"
  5927. }
  5928. },
  5929. "value": null,
  5930. "visibility": "internal"
  5931. }
  5932. ],
  5933. "src": "1557:9:10"
  5934. },
  5935. "scope": 3520,
  5936. "src": "1514:89:10",
  5937. "stateMutability": "view",
  5938. "superFunction": 3585,
  5939. "visibility": "public"
  5940. },
  5941. {
  5942. "body": {
  5943. "id": 3163,
  5944. "nodeType": "Block",
  5945. "src": "1727:42:10",
  5946. "statements": [
  5947. {
  5948. "expression": {
  5949. "argumentTypes": null,
  5950. "baseExpression": {
  5951. "argumentTypes": null,
  5952. "id": 3159,
  5953. "name": "_balances",
  5954. "nodeType": "Identifier",
  5955. "overloadedDeclarations": [],
  5956. "referencedDeclaration": 3136,
  5957. "src": "1744:9:10",
  5958. "typeDescriptions": {
  5959. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  5960. "typeString": "mapping(address => uint256)"
  5961. }
  5962. },
  5963. "id": 3161,
  5964. "indexExpression": {
  5965. "argumentTypes": null,
  5966. "id": 3160,
  5967. "name": "account",
  5968. "nodeType": "Identifier",
  5969. "overloadedDeclarations": [],
  5970. "referencedDeclaration": 3154,
  5971. "src": "1754:7:10",
  5972. "typeDescriptions": {
  5973. "typeIdentifier": "t_address",
  5974. "typeString": "address"
  5975. }
  5976. },
  5977. "isConstant": false,
  5978. "isLValue": true,
  5979. "isPure": false,
  5980. "lValueRequested": false,
  5981. "nodeType": "IndexAccess",
  5982. "src": "1744:18:10",
  5983. "typeDescriptions": {
  5984. "typeIdentifier": "t_uint256",
  5985. "typeString": "uint256"
  5986. }
  5987. },
  5988. "functionReturnParameters": 3158,
  5989. "id": 3162,
  5990. "nodeType": "Return",
  5991. "src": "1737:25:10"
  5992. }
  5993. ]
  5994. },
  5995. "documentation": "@dev See `IERC20.balanceOf`.",
  5996. "id": 3164,
  5997. "implemented": true,
  5998. "kind": "function",
  5999. "modifiers": [],
  6000. "name": "balanceOf",
  6001. "nodeType": "FunctionDefinition",
  6002. "parameters": {
  6003. "id": 3155,
  6004. "nodeType": "ParameterList",
  6005. "parameters": [
  6006. {
  6007. "constant": false,
  6008. "id": 3154,
  6009. "name": "account",
  6010. "nodeType": "VariableDeclaration",
  6011. "scope": 3164,
  6012. "src": "1680:15:10",
  6013. "stateVariable": false,
  6014. "storageLocation": "default",
  6015. "typeDescriptions": {
  6016. "typeIdentifier": "t_address",
  6017. "typeString": "address"
  6018. },
  6019. "typeName": {
  6020. "id": 3153,
  6021. "name": "address",
  6022. "nodeType": "ElementaryTypeName",
  6023. "src": "1680:7:10",
  6024. "stateMutability": "nonpayable",
  6025. "typeDescriptions": {
  6026. "typeIdentifier": "t_address",
  6027. "typeString": "address"
  6028. }
  6029. },
  6030. "value": null,
  6031. "visibility": "internal"
  6032. }
  6033. ],
  6034. "src": "1679:17:10"
  6035. },
  6036. "returnParameters": {
  6037. "id": 3158,
  6038. "nodeType": "ParameterList",
  6039. "parameters": [
  6040. {
  6041. "constant": false,
  6042. "id": 3157,
  6043. "name": "",
  6044. "nodeType": "VariableDeclaration",
  6045. "scope": 3164,
  6046. "src": "1718:7:10",
  6047. "stateVariable": false,
  6048. "storageLocation": "default",
  6049. "typeDescriptions": {
  6050. "typeIdentifier": "t_uint256",
  6051. "typeString": "uint256"
  6052. },
  6053. "typeName": {
  6054. "id": 3156,
  6055. "name": "uint256",
  6056. "nodeType": "ElementaryTypeName",
  6057. "src": "1718:7:10",
  6058. "typeDescriptions": {
  6059. "typeIdentifier": "t_uint256",
  6060. "typeString": "uint256"
  6061. }
  6062. },
  6063. "value": null,
  6064. "visibility": "internal"
  6065. }
  6066. ],
  6067. "src": "1717:9:10"
  6068. },
  6069. "scope": 3520,
  6070. "src": "1661:108:10",
  6071. "stateMutability": "view",
  6072. "superFunction": 3592,
  6073. "visibility": "public"
  6074. },
  6075. {
  6076. "body": {
  6077. "id": 3182,
  6078. "nodeType": "Block",
  6079. "src": "2047:78:10",
  6080. "statements": [
  6081. {
  6082. "expression": {
  6083. "argumentTypes": null,
  6084. "arguments": [
  6085. {
  6086. "argumentTypes": null,
  6087. "expression": {
  6088. "argumentTypes": null,
  6089. "id": 3174,
  6090. "name": "msg",
  6091. "nodeType": "Identifier",
  6092. "overloadedDeclarations": [],
  6093. "referencedDeclaration": 3662,
  6094. "src": "2067:3:10",
  6095. "typeDescriptions": {
  6096. "typeIdentifier": "t_magic_message",
  6097. "typeString": "msg"
  6098. }
  6099. },
  6100. "id": 3175,
  6101. "isConstant": false,
  6102. "isLValue": false,
  6103. "isPure": false,
  6104. "lValueRequested": false,
  6105. "memberName": "sender",
  6106. "nodeType": "MemberAccess",
  6107. "referencedDeclaration": null,
  6108. "src": "2067:10:10",
  6109. "typeDescriptions": {
  6110. "typeIdentifier": "t_address_payable",
  6111. "typeString": "address payable"
  6112. }
  6113. },
  6114. {
  6115. "argumentTypes": null,
  6116. "id": 3176,
  6117. "name": "recipient",
  6118. "nodeType": "Identifier",
  6119. "overloadedDeclarations": [],
  6120. "referencedDeclaration": 3166,
  6121. "src": "2079:9:10",
  6122. "typeDescriptions": {
  6123. "typeIdentifier": "t_address",
  6124. "typeString": "address"
  6125. }
  6126. },
  6127. {
  6128. "argumentTypes": null,
  6129. "id": 3177,
  6130. "name": "amount",
  6131. "nodeType": "Identifier",
  6132. "overloadedDeclarations": [],
  6133. "referencedDeclaration": 3168,
  6134. "src": "2090:6:10",
  6135. "typeDescriptions": {
  6136. "typeIdentifier": "t_uint256",
  6137. "typeString": "uint256"
  6138. }
  6139. }
  6140. ],
  6141. "expression": {
  6142. "argumentTypes": [
  6143. {
  6144. "typeIdentifier": "t_address_payable",
  6145. "typeString": "address payable"
  6146. },
  6147. {
  6148. "typeIdentifier": "t_address",
  6149. "typeString": "address"
  6150. },
  6151. {
  6152. "typeIdentifier": "t_uint256",
  6153. "typeString": "uint256"
  6154. }
  6155. ],
  6156. "id": 3173,
  6157. "name": "_transfer",
  6158. "nodeType": "Identifier",
  6159. "overloadedDeclarations": [],
  6160. "referencedDeclaration": 3363,
  6161. "src": "2057:9:10",
  6162. "typeDescriptions": {
  6163. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  6164. "typeString": "function (address,address,uint256)"
  6165. }
  6166. },
  6167. "id": 3178,
  6168. "isConstant": false,
  6169. "isLValue": false,
  6170. "isPure": false,
  6171. "kind": "functionCall",
  6172. "lValueRequested": false,
  6173. "names": [],
  6174. "nodeType": "FunctionCall",
  6175. "src": "2057:40:10",
  6176. "typeDescriptions": {
  6177. "typeIdentifier": "t_tuple$__$",
  6178. "typeString": "tuple()"
  6179. }
  6180. },
  6181. "id": 3179,
  6182. "nodeType": "ExpressionStatement",
  6183. "src": "2057:40:10"
  6184. },
  6185. {
  6186. "expression": {
  6187. "argumentTypes": null,
  6188. "hexValue": "74727565",
  6189. "id": 3180,
  6190. "isConstant": false,
  6191. "isLValue": false,
  6192. "isPure": true,
  6193. "kind": "bool",
  6194. "lValueRequested": false,
  6195. "nodeType": "Literal",
  6196. "src": "2114:4:10",
  6197. "subdenomination": null,
  6198. "typeDescriptions": {
  6199. "typeIdentifier": "t_bool",
  6200. "typeString": "bool"
  6201. },
  6202. "value": "true"
  6203. },
  6204. "functionReturnParameters": 3172,
  6205. "id": 3181,
  6206. "nodeType": "Return",
  6207. "src": "2107:11:10"
  6208. }
  6209. ]
  6210. },
  6211. "documentation": "@dev See `IERC20.transfer`.\n * Requirements:\n * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.",
  6212. "id": 3183,
  6213. "implemented": true,
  6214. "kind": "function",
  6215. "modifiers": [],
  6216. "name": "transfer",
  6217. "nodeType": "FunctionDefinition",
  6218. "parameters": {
  6219. "id": 3169,
  6220. "nodeType": "ParameterList",
  6221. "parameters": [
  6222. {
  6223. "constant": false,
  6224. "id": 3166,
  6225. "name": "recipient",
  6226. "nodeType": "VariableDeclaration",
  6227. "scope": 3183,
  6228. "src": "1990:17:10",
  6229. "stateVariable": false,
  6230. "storageLocation": "default",
  6231. "typeDescriptions": {
  6232. "typeIdentifier": "t_address",
  6233. "typeString": "address"
  6234. },
  6235. "typeName": {
  6236. "id": 3165,
  6237. "name": "address",
  6238. "nodeType": "ElementaryTypeName",
  6239. "src": "1990:7:10",
  6240. "stateMutability": "nonpayable",
  6241. "typeDescriptions": {
  6242. "typeIdentifier": "t_address",
  6243. "typeString": "address"
  6244. }
  6245. },
  6246. "value": null,
  6247. "visibility": "internal"
  6248. },
  6249. {
  6250. "constant": false,
  6251. "id": 3168,
  6252. "name": "amount",
  6253. "nodeType": "VariableDeclaration",
  6254. "scope": 3183,
  6255. "src": "2009:14:10",
  6256. "stateVariable": false,
  6257. "storageLocation": "default",
  6258. "typeDescriptions": {
  6259. "typeIdentifier": "t_uint256",
  6260. "typeString": "uint256"
  6261. },
  6262. "typeName": {
  6263. "id": 3167,
  6264. "name": "uint256",
  6265. "nodeType": "ElementaryTypeName",
  6266. "src": "2009:7:10",
  6267. "typeDescriptions": {
  6268. "typeIdentifier": "t_uint256",
  6269. "typeString": "uint256"
  6270. }
  6271. },
  6272. "value": null,
  6273. "visibility": "internal"
  6274. }
  6275. ],
  6276. "src": "1989:35:10"
  6277. },
  6278. "returnParameters": {
  6279. "id": 3172,
  6280. "nodeType": "ParameterList",
  6281. "parameters": [
  6282. {
  6283. "constant": false,
  6284. "id": 3171,
  6285. "name": "",
  6286. "nodeType": "VariableDeclaration",
  6287. "scope": 3183,
  6288. "src": "2041:4:10",
  6289. "stateVariable": false,
  6290. "storageLocation": "default",
  6291. "typeDescriptions": {
  6292. "typeIdentifier": "t_bool",
  6293. "typeString": "bool"
  6294. },
  6295. "typeName": {
  6296. "id": 3170,
  6297. "name": "bool",
  6298. "nodeType": "ElementaryTypeName",
  6299. "src": "2041:4:10",
  6300. "typeDescriptions": {
  6301. "typeIdentifier": "t_bool",
  6302. "typeString": "bool"
  6303. }
  6304. },
  6305. "value": null,
  6306. "visibility": "internal"
  6307. }
  6308. ],
  6309. "src": "2040:6:10"
  6310. },
  6311. "scope": 3520,
  6312. "src": "1972:153:10",
  6313. "stateMutability": "nonpayable",
  6314. "superFunction": 3601,
  6315. "visibility": "public"
  6316. },
  6317. {
  6318. "body": {
  6319. "id": 3198,
  6320. "nodeType": "Block",
  6321. "src": "2264:51:10",
  6322. "statements": [
  6323. {
  6324. "expression": {
  6325. "argumentTypes": null,
  6326. "baseExpression": {
  6327. "argumentTypes": null,
  6328. "baseExpression": {
  6329. "argumentTypes": null,
  6330. "id": 3192,
  6331. "name": "_allowances",
  6332. "nodeType": "Identifier",
  6333. "overloadedDeclarations": [],
  6334. "referencedDeclaration": 3142,
  6335. "src": "2281:11:10",
  6336. "typeDescriptions": {
  6337. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  6338. "typeString": "mapping(address => mapping(address => uint256))"
  6339. }
  6340. },
  6341. "id": 3194,
  6342. "indexExpression": {
  6343. "argumentTypes": null,
  6344. "id": 3193,
  6345. "name": "owner",
  6346. "nodeType": "Identifier",
  6347. "overloadedDeclarations": [],
  6348. "referencedDeclaration": 3185,
  6349. "src": "2293:5:10",
  6350. "typeDescriptions": {
  6351. "typeIdentifier": "t_address",
  6352. "typeString": "address"
  6353. }
  6354. },
  6355. "isConstant": false,
  6356. "isLValue": true,
  6357. "isPure": false,
  6358. "lValueRequested": false,
  6359. "nodeType": "IndexAccess",
  6360. "src": "2281:18:10",
  6361. "typeDescriptions": {
  6362. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  6363. "typeString": "mapping(address => uint256)"
  6364. }
  6365. },
  6366. "id": 3196,
  6367. "indexExpression": {
  6368. "argumentTypes": null,
  6369. "id": 3195,
  6370. "name": "spender",
  6371. "nodeType": "Identifier",
  6372. "overloadedDeclarations": [],
  6373. "referencedDeclaration": 3187,
  6374. "src": "2300:7:10",
  6375. "typeDescriptions": {
  6376. "typeIdentifier": "t_address",
  6377. "typeString": "address"
  6378. }
  6379. },
  6380. "isConstant": false,
  6381. "isLValue": true,
  6382. "isPure": false,
  6383. "lValueRequested": false,
  6384. "nodeType": "IndexAccess",
  6385. "src": "2281:27:10",
  6386. "typeDescriptions": {
  6387. "typeIdentifier": "t_uint256",
  6388. "typeString": "uint256"
  6389. }
  6390. },
  6391. "functionReturnParameters": 3191,
  6392. "id": 3197,
  6393. "nodeType": "Return",
  6394. "src": "2274:34:10"
  6395. }
  6396. ]
  6397. },
  6398. "documentation": "@dev See `IERC20.allowance`.",
  6399. "id": 3199,
  6400. "implemented": true,
  6401. "kind": "function",
  6402. "modifiers": [],
  6403. "name": "allowance",
  6404. "nodeType": "FunctionDefinition",
  6405. "parameters": {
  6406. "id": 3188,
  6407. "nodeType": "ParameterList",
  6408. "parameters": [
  6409. {
  6410. "constant": false,
  6411. "id": 3185,
  6412. "name": "owner",
  6413. "nodeType": "VariableDeclaration",
  6414. "scope": 3199,
  6415. "src": "2202:13:10",
  6416. "stateVariable": false,
  6417. "storageLocation": "default",
  6418. "typeDescriptions": {
  6419. "typeIdentifier": "t_address",
  6420. "typeString": "address"
  6421. },
  6422. "typeName": {
  6423. "id": 3184,
  6424. "name": "address",
  6425. "nodeType": "ElementaryTypeName",
  6426. "src": "2202:7:10",
  6427. "stateMutability": "nonpayable",
  6428. "typeDescriptions": {
  6429. "typeIdentifier": "t_address",
  6430. "typeString": "address"
  6431. }
  6432. },
  6433. "value": null,
  6434. "visibility": "internal"
  6435. },
  6436. {
  6437. "constant": false,
  6438. "id": 3187,
  6439. "name": "spender",
  6440. "nodeType": "VariableDeclaration",
  6441. "scope": 3199,
  6442. "src": "2217:15:10",
  6443. "stateVariable": false,
  6444. "storageLocation": "default",
  6445. "typeDescriptions": {
  6446. "typeIdentifier": "t_address",
  6447. "typeString": "address"
  6448. },
  6449. "typeName": {
  6450. "id": 3186,
  6451. "name": "address",
  6452. "nodeType": "ElementaryTypeName",
  6453. "src": "2217:7:10",
  6454. "stateMutability": "nonpayable",
  6455. "typeDescriptions": {
  6456. "typeIdentifier": "t_address",
  6457. "typeString": "address"
  6458. }
  6459. },
  6460. "value": null,
  6461. "visibility": "internal"
  6462. }
  6463. ],
  6464. "src": "2201:32:10"
  6465. },
  6466. "returnParameters": {
  6467. "id": 3191,
  6468. "nodeType": "ParameterList",
  6469. "parameters": [
  6470. {
  6471. "constant": false,
  6472. "id": 3190,
  6473. "name": "",
  6474. "nodeType": "VariableDeclaration",
  6475. "scope": 3199,
  6476. "src": "2255:7:10",
  6477. "stateVariable": false,
  6478. "storageLocation": "default",
  6479. "typeDescriptions": {
  6480. "typeIdentifier": "t_uint256",
  6481. "typeString": "uint256"
  6482. },
  6483. "typeName": {
  6484. "id": 3189,
  6485. "name": "uint256",
  6486. "nodeType": "ElementaryTypeName",
  6487. "src": "2255:7:10",
  6488. "typeDescriptions": {
  6489. "typeIdentifier": "t_uint256",
  6490. "typeString": "uint256"
  6491. }
  6492. },
  6493. "value": null,
  6494. "visibility": "internal"
  6495. }
  6496. ],
  6497. "src": "2254:9:10"
  6498. },
  6499. "scope": 3520,
  6500. "src": "2183:132:10",
  6501. "stateMutability": "view",
  6502. "superFunction": 3610,
  6503. "visibility": "public"
  6504. },
  6505. {
  6506. "body": {
  6507. "id": 3217,
  6508. "nodeType": "Block",
  6509. "src": "2524:74:10",
  6510. "statements": [
  6511. {
  6512. "expression": {
  6513. "argumentTypes": null,
  6514. "arguments": [
  6515. {
  6516. "argumentTypes": null,
  6517. "expression": {
  6518. "argumentTypes": null,
  6519. "id": 3209,
  6520. "name": "msg",
  6521. "nodeType": "Identifier",
  6522. "overloadedDeclarations": [],
  6523. "referencedDeclaration": 3662,
  6524. "src": "2543:3:10",
  6525. "typeDescriptions": {
  6526. "typeIdentifier": "t_magic_message",
  6527. "typeString": "msg"
  6528. }
  6529. },
  6530. "id": 3210,
  6531. "isConstant": false,
  6532. "isLValue": false,
  6533. "isPure": false,
  6534. "lValueRequested": false,
  6535. "memberName": "sender",
  6536. "nodeType": "MemberAccess",
  6537. "referencedDeclaration": null,
  6538. "src": "2543:10:10",
  6539. "typeDescriptions": {
  6540. "typeIdentifier": "t_address_payable",
  6541. "typeString": "address payable"
  6542. }
  6543. },
  6544. {
  6545. "argumentTypes": null,
  6546. "id": 3211,
  6547. "name": "spender",
  6548. "nodeType": "Identifier",
  6549. "overloadedDeclarations": [],
  6550. "referencedDeclaration": 3201,
  6551. "src": "2555:7:10",
  6552. "typeDescriptions": {
  6553. "typeIdentifier": "t_address",
  6554. "typeString": "address"
  6555. }
  6556. },
  6557. {
  6558. "argumentTypes": null,
  6559. "id": 3212,
  6560. "name": "value",
  6561. "nodeType": "Identifier",
  6562. "overloadedDeclarations": [],
  6563. "referencedDeclaration": 3203,
  6564. "src": "2564:5:10",
  6565. "typeDescriptions": {
  6566. "typeIdentifier": "t_uint256",
  6567. "typeString": "uint256"
  6568. }
  6569. }
  6570. ],
  6571. "expression": {
  6572. "argumentTypes": [
  6573. {
  6574. "typeIdentifier": "t_address_payable",
  6575. "typeString": "address payable"
  6576. },
  6577. {
  6578. "typeIdentifier": "t_address",
  6579. "typeString": "address"
  6580. },
  6581. {
  6582. "typeIdentifier": "t_uint256",
  6583. "typeString": "uint256"
  6584. }
  6585. ],
  6586. "id": 3208,
  6587. "name": "_approve",
  6588. "nodeType": "Identifier",
  6589. "overloadedDeclarations": [],
  6590. "referencedDeclaration": 3491,
  6591. "src": "2534:8:10",
  6592. "typeDescriptions": {
  6593. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  6594. "typeString": "function (address,address,uint256)"
  6595. }
  6596. },
  6597. "id": 3213,
  6598. "isConstant": false,
  6599. "isLValue": false,
  6600. "isPure": false,
  6601. "kind": "functionCall",
  6602. "lValueRequested": false,
  6603. "names": [],
  6604. "nodeType": "FunctionCall",
  6605. "src": "2534:36:10",
  6606. "typeDescriptions": {
  6607. "typeIdentifier": "t_tuple$__$",
  6608. "typeString": "tuple()"
  6609. }
  6610. },
  6611. "id": 3214,
  6612. "nodeType": "ExpressionStatement",
  6613. "src": "2534:36:10"
  6614. },
  6615. {
  6616. "expression": {
  6617. "argumentTypes": null,
  6618. "hexValue": "74727565",
  6619. "id": 3215,
  6620. "isConstant": false,
  6621. "isLValue": false,
  6622. "isPure": true,
  6623. "kind": "bool",
  6624. "lValueRequested": false,
  6625. "nodeType": "Literal",
  6626. "src": "2587:4:10",
  6627. "subdenomination": null,
  6628. "typeDescriptions": {
  6629. "typeIdentifier": "t_bool",
  6630. "typeString": "bool"
  6631. },
  6632. "value": "true"
  6633. },
  6634. "functionReturnParameters": 3207,
  6635. "id": 3216,
  6636. "nodeType": "Return",
  6637. "src": "2580:11:10"
  6638. }
  6639. ]
  6640. },
  6641. "documentation": "@dev See `IERC20.approve`.\n * Requirements:\n * - `spender` cannot be the zero address.",
  6642. "id": 3218,
  6643. "implemented": true,
  6644. "kind": "function",
  6645. "modifiers": [],
  6646. "name": "approve",
  6647. "nodeType": "FunctionDefinition",
  6648. "parameters": {
  6649. "id": 3204,
  6650. "nodeType": "ParameterList",
  6651. "parameters": [
  6652. {
  6653. "constant": false,
  6654. "id": 3201,
  6655. "name": "spender",
  6656. "nodeType": "VariableDeclaration",
  6657. "scope": 3218,
  6658. "src": "2470:15:10",
  6659. "stateVariable": false,
  6660. "storageLocation": "default",
  6661. "typeDescriptions": {
  6662. "typeIdentifier": "t_address",
  6663. "typeString": "address"
  6664. },
  6665. "typeName": {
  6666. "id": 3200,
  6667. "name": "address",
  6668. "nodeType": "ElementaryTypeName",
  6669. "src": "2470:7:10",
  6670. "stateMutability": "nonpayable",
  6671. "typeDescriptions": {
  6672. "typeIdentifier": "t_address",
  6673. "typeString": "address"
  6674. }
  6675. },
  6676. "value": null,
  6677. "visibility": "internal"
  6678. },
  6679. {
  6680. "constant": false,
  6681. "id": 3203,
  6682. "name": "value",
  6683. "nodeType": "VariableDeclaration",
  6684. "scope": 3218,
  6685. "src": "2487:13:10",
  6686. "stateVariable": false,
  6687. "storageLocation": "default",
  6688. "typeDescriptions": {
  6689. "typeIdentifier": "t_uint256",
  6690. "typeString": "uint256"
  6691. },
  6692. "typeName": {
  6693. "id": 3202,
  6694. "name": "uint256",
  6695. "nodeType": "ElementaryTypeName",
  6696. "src": "2487:7:10",
  6697. "typeDescriptions": {
  6698. "typeIdentifier": "t_uint256",
  6699. "typeString": "uint256"
  6700. }
  6701. },
  6702. "value": null,
  6703. "visibility": "internal"
  6704. }
  6705. ],
  6706. "src": "2469:32:10"
  6707. },
  6708. "returnParameters": {
  6709. "id": 3207,
  6710. "nodeType": "ParameterList",
  6711. "parameters": [
  6712. {
  6713. "constant": false,
  6714. "id": 3206,
  6715. "name": "",
  6716. "nodeType": "VariableDeclaration",
  6717. "scope": 3218,
  6718. "src": "2518:4:10",
  6719. "stateVariable": false,
  6720. "storageLocation": "default",
  6721. "typeDescriptions": {
  6722. "typeIdentifier": "t_bool",
  6723. "typeString": "bool"
  6724. },
  6725. "typeName": {
  6726. "id": 3205,
  6727. "name": "bool",
  6728. "nodeType": "ElementaryTypeName",
  6729. "src": "2518:4:10",
  6730. "typeDescriptions": {
  6731. "typeIdentifier": "t_bool",
  6732. "typeString": "bool"
  6733. }
  6734. },
  6735. "value": null,
  6736. "visibility": "internal"
  6737. }
  6738. ],
  6739. "src": "2517:6:10"
  6740. },
  6741. "scope": 3520,
  6742. "src": "2453:145:10",
  6743. "stateMutability": "nonpayable",
  6744. "superFunction": 3619,
  6745. "visibility": "public"
  6746. },
  6747. {
  6748. "body": {
  6749. "id": 3252,
  6750. "nodeType": "Block",
  6751. "src": "3150:157:10",
  6752. "statements": [
  6753. {
  6754. "expression": {
  6755. "argumentTypes": null,
  6756. "arguments": [
  6757. {
  6758. "argumentTypes": null,
  6759. "id": 3230,
  6760. "name": "sender",
  6761. "nodeType": "Identifier",
  6762. "overloadedDeclarations": [],
  6763. "referencedDeclaration": 3220,
  6764. "src": "3170:6:10",
  6765. "typeDescriptions": {
  6766. "typeIdentifier": "t_address",
  6767. "typeString": "address"
  6768. }
  6769. },
  6770. {
  6771. "argumentTypes": null,
  6772. "id": 3231,
  6773. "name": "recipient",
  6774. "nodeType": "Identifier",
  6775. "overloadedDeclarations": [],
  6776. "referencedDeclaration": 3222,
  6777. "src": "3178:9:10",
  6778. "typeDescriptions": {
  6779. "typeIdentifier": "t_address",
  6780. "typeString": "address"
  6781. }
  6782. },
  6783. {
  6784. "argumentTypes": null,
  6785. "id": 3232,
  6786. "name": "amount",
  6787. "nodeType": "Identifier",
  6788. "overloadedDeclarations": [],
  6789. "referencedDeclaration": 3224,
  6790. "src": "3189:6:10",
  6791. "typeDescriptions": {
  6792. "typeIdentifier": "t_uint256",
  6793. "typeString": "uint256"
  6794. }
  6795. }
  6796. ],
  6797. "expression": {
  6798. "argumentTypes": [
  6799. {
  6800. "typeIdentifier": "t_address",
  6801. "typeString": "address"
  6802. },
  6803. {
  6804. "typeIdentifier": "t_address",
  6805. "typeString": "address"
  6806. },
  6807. {
  6808. "typeIdentifier": "t_uint256",
  6809. "typeString": "uint256"
  6810. }
  6811. ],
  6812. "id": 3229,
  6813. "name": "_transfer",
  6814. "nodeType": "Identifier",
  6815. "overloadedDeclarations": [],
  6816. "referencedDeclaration": 3363,
  6817. "src": "3160:9:10",
  6818. "typeDescriptions": {
  6819. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  6820. "typeString": "function (address,address,uint256)"
  6821. }
  6822. },
  6823. "id": 3233,
  6824. "isConstant": false,
  6825. "isLValue": false,
  6826. "isPure": false,
  6827. "kind": "functionCall",
  6828. "lValueRequested": false,
  6829. "names": [],
  6830. "nodeType": "FunctionCall",
  6831. "src": "3160:36:10",
  6832. "typeDescriptions": {
  6833. "typeIdentifier": "t_tuple$__$",
  6834. "typeString": "tuple()"
  6835. }
  6836. },
  6837. "id": 3234,
  6838. "nodeType": "ExpressionStatement",
  6839. "src": "3160:36:10"
  6840. },
  6841. {
  6842. "expression": {
  6843. "argumentTypes": null,
  6844. "arguments": [
  6845. {
  6846. "argumentTypes": null,
  6847. "id": 3236,
  6848. "name": "sender",
  6849. "nodeType": "Identifier",
  6850. "overloadedDeclarations": [],
  6851. "referencedDeclaration": 3220,
  6852. "src": "3215:6:10",
  6853. "typeDescriptions": {
  6854. "typeIdentifier": "t_address",
  6855. "typeString": "address"
  6856. }
  6857. },
  6858. {
  6859. "argumentTypes": null,
  6860. "expression": {
  6861. "argumentTypes": null,
  6862. "id": 3237,
  6863. "name": "msg",
  6864. "nodeType": "Identifier",
  6865. "overloadedDeclarations": [],
  6866. "referencedDeclaration": 3662,
  6867. "src": "3223:3:10",
  6868. "typeDescriptions": {
  6869. "typeIdentifier": "t_magic_message",
  6870. "typeString": "msg"
  6871. }
  6872. },
  6873. "id": 3238,
  6874. "isConstant": false,
  6875. "isLValue": false,
  6876. "isPure": false,
  6877. "lValueRequested": false,
  6878. "memberName": "sender",
  6879. "nodeType": "MemberAccess",
  6880. "referencedDeclaration": null,
  6881. "src": "3223:10:10",
  6882. "typeDescriptions": {
  6883. "typeIdentifier": "t_address_payable",
  6884. "typeString": "address payable"
  6885. }
  6886. },
  6887. {
  6888. "argumentTypes": null,
  6889. "arguments": [
  6890. {
  6891. "argumentTypes": null,
  6892. "id": 3246,
  6893. "name": "amount",
  6894. "nodeType": "Identifier",
  6895. "overloadedDeclarations": [],
  6896. "referencedDeclaration": 3224,
  6897. "src": "3271:6:10",
  6898. "typeDescriptions": {
  6899. "typeIdentifier": "t_uint256",
  6900. "typeString": "uint256"
  6901. }
  6902. }
  6903. ],
  6904. "expression": {
  6905. "argumentTypes": [
  6906. {
  6907. "typeIdentifier": "t_uint256",
  6908. "typeString": "uint256"
  6909. }
  6910. ],
  6911. "expression": {
  6912. "argumentTypes": null,
  6913. "baseExpression": {
  6914. "argumentTypes": null,
  6915. "baseExpression": {
  6916. "argumentTypes": null,
  6917. "id": 3239,
  6918. "name": "_allowances",
  6919. "nodeType": "Identifier",
  6920. "overloadedDeclarations": [],
  6921. "referencedDeclaration": 3142,
  6922. "src": "3235:11:10",
  6923. "typeDescriptions": {
  6924. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  6925. "typeString": "mapping(address => mapping(address => uint256))"
  6926. }
  6927. },
  6928. "id": 3241,
  6929. "indexExpression": {
  6930. "argumentTypes": null,
  6931. "id": 3240,
  6932. "name": "sender",
  6933. "nodeType": "Identifier",
  6934. "overloadedDeclarations": [],
  6935. "referencedDeclaration": 3220,
  6936. "src": "3247:6:10",
  6937. "typeDescriptions": {
  6938. "typeIdentifier": "t_address",
  6939. "typeString": "address"
  6940. }
  6941. },
  6942. "isConstant": false,
  6943. "isLValue": true,
  6944. "isPure": false,
  6945. "lValueRequested": false,
  6946. "nodeType": "IndexAccess",
  6947. "src": "3235:19:10",
  6948. "typeDescriptions": {
  6949. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  6950. "typeString": "mapping(address => uint256)"
  6951. }
  6952. },
  6953. "id": 3244,
  6954. "indexExpression": {
  6955. "argumentTypes": null,
  6956. "expression": {
  6957. "argumentTypes": null,
  6958. "id": 3242,
  6959. "name": "msg",
  6960. "nodeType": "Identifier",
  6961. "overloadedDeclarations": [],
  6962. "referencedDeclaration": 3662,
  6963. "src": "3255:3:10",
  6964. "typeDescriptions": {
  6965. "typeIdentifier": "t_magic_message",
  6966. "typeString": "msg"
  6967. }
  6968. },
  6969. "id": 3243,
  6970. "isConstant": false,
  6971. "isLValue": false,
  6972. "isPure": false,
  6973. "lValueRequested": false,
  6974. "memberName": "sender",
  6975. "nodeType": "MemberAccess",
  6976. "referencedDeclaration": null,
  6977. "src": "3255:10:10",
  6978. "typeDescriptions": {
  6979. "typeIdentifier": "t_address_payable",
  6980. "typeString": "address payable"
  6981. }
  6982. },
  6983. "isConstant": false,
  6984. "isLValue": true,
  6985. "isPure": false,
  6986. "lValueRequested": false,
  6987. "nodeType": "IndexAccess",
  6988. "src": "3235:31:10",
  6989. "typeDescriptions": {
  6990. "typeIdentifier": "t_uint256",
  6991. "typeString": "uint256"
  6992. }
  6993. },
  6994. "id": 3245,
  6995. "isConstant": false,
  6996. "isLValue": false,
  6997. "isPure": false,
  6998. "lValueRequested": false,
  6999. "memberName": "sub",
  7000. "nodeType": "MemberAccess",
  7001. "referencedDeclaration": 3042,
  7002. "src": "3235:35:10",
  7003. "typeDescriptions": {
  7004. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  7005. "typeString": "function (uint256,uint256) pure returns (uint256)"
  7006. }
  7007. },
  7008. "id": 3247,
  7009. "isConstant": false,
  7010. "isLValue": false,
  7011. "isPure": false,
  7012. "kind": "functionCall",
  7013. "lValueRequested": false,
  7014. "names": [],
  7015. "nodeType": "FunctionCall",
  7016. "src": "3235:43:10",
  7017. "typeDescriptions": {
  7018. "typeIdentifier": "t_uint256",
  7019. "typeString": "uint256"
  7020. }
  7021. }
  7022. ],
  7023. "expression": {
  7024. "argumentTypes": [
  7025. {
  7026. "typeIdentifier": "t_address",
  7027. "typeString": "address"
  7028. },
  7029. {
  7030. "typeIdentifier": "t_address_payable",
  7031. "typeString": "address payable"
  7032. },
  7033. {
  7034. "typeIdentifier": "t_uint256",
  7035. "typeString": "uint256"
  7036. }
  7037. ],
  7038. "id": 3235,
  7039. "name": "_approve",
  7040. "nodeType": "Identifier",
  7041. "overloadedDeclarations": [],
  7042. "referencedDeclaration": 3491,
  7043. "src": "3206:8:10",
  7044. "typeDescriptions": {
  7045. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  7046. "typeString": "function (address,address,uint256)"
  7047. }
  7048. },
  7049. "id": 3248,
  7050. "isConstant": false,
  7051. "isLValue": false,
  7052. "isPure": false,
  7053. "kind": "functionCall",
  7054. "lValueRequested": false,
  7055. "names": [],
  7056. "nodeType": "FunctionCall",
  7057. "src": "3206:73:10",
  7058. "typeDescriptions": {
  7059. "typeIdentifier": "t_tuple$__$",
  7060. "typeString": "tuple()"
  7061. }
  7062. },
  7063. "id": 3249,
  7064. "nodeType": "ExpressionStatement",
  7065. "src": "3206:73:10"
  7066. },
  7067. {
  7068. "expression": {
  7069. "argumentTypes": null,
  7070. "hexValue": "74727565",
  7071. "id": 3250,
  7072. "isConstant": false,
  7073. "isLValue": false,
  7074. "isPure": true,
  7075. "kind": "bool",
  7076. "lValueRequested": false,
  7077. "nodeType": "Literal",
  7078. "src": "3296:4:10",
  7079. "subdenomination": null,
  7080. "typeDescriptions": {
  7081. "typeIdentifier": "t_bool",
  7082. "typeString": "bool"
  7083. },
  7084. "value": "true"
  7085. },
  7086. "functionReturnParameters": 3228,
  7087. "id": 3251,
  7088. "nodeType": "Return",
  7089. "src": "3289:11:10"
  7090. }
  7091. ]
  7092. },
  7093. "documentation": "@dev See `IERC20.transferFrom`.\n * Emits an `Approval` event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of `ERC20`;\n * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `value`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.",
  7094. "id": 3253,
  7095. "implemented": true,
  7096. "kind": "function",
  7097. "modifiers": [],
  7098. "name": "transferFrom",
  7099. "nodeType": "FunctionDefinition",
  7100. "parameters": {
  7101. "id": 3225,
  7102. "nodeType": "ParameterList",
  7103. "parameters": [
  7104. {
  7105. "constant": false,
  7106. "id": 3220,
  7107. "name": "sender",
  7108. "nodeType": "VariableDeclaration",
  7109. "scope": 3253,
  7110. "src": "3077:14:10",
  7111. "stateVariable": false,
  7112. "storageLocation": "default",
  7113. "typeDescriptions": {
  7114. "typeIdentifier": "t_address",
  7115. "typeString": "address"
  7116. },
  7117. "typeName": {
  7118. "id": 3219,
  7119. "name": "address",
  7120. "nodeType": "ElementaryTypeName",
  7121. "src": "3077:7:10",
  7122. "stateMutability": "nonpayable",
  7123. "typeDescriptions": {
  7124. "typeIdentifier": "t_address",
  7125. "typeString": "address"
  7126. }
  7127. },
  7128. "value": null,
  7129. "visibility": "internal"
  7130. },
  7131. {
  7132. "constant": false,
  7133. "id": 3222,
  7134. "name": "recipient",
  7135. "nodeType": "VariableDeclaration",
  7136. "scope": 3253,
  7137. "src": "3093:17:10",
  7138. "stateVariable": false,
  7139. "storageLocation": "default",
  7140. "typeDescriptions": {
  7141. "typeIdentifier": "t_address",
  7142. "typeString": "address"
  7143. },
  7144. "typeName": {
  7145. "id": 3221,
  7146. "name": "address",
  7147. "nodeType": "ElementaryTypeName",
  7148. "src": "3093:7:10",
  7149. "stateMutability": "nonpayable",
  7150. "typeDescriptions": {
  7151. "typeIdentifier": "t_address",
  7152. "typeString": "address"
  7153. }
  7154. },
  7155. "value": null,
  7156. "visibility": "internal"
  7157. },
  7158. {
  7159. "constant": false,
  7160. "id": 3224,
  7161. "name": "amount",
  7162. "nodeType": "VariableDeclaration",
  7163. "scope": 3253,
  7164. "src": "3112:14:10",
  7165. "stateVariable": false,
  7166. "storageLocation": "default",
  7167. "typeDescriptions": {
  7168. "typeIdentifier": "t_uint256",
  7169. "typeString": "uint256"
  7170. },
  7171. "typeName": {
  7172. "id": 3223,
  7173. "name": "uint256",
  7174. "nodeType": "ElementaryTypeName",
  7175. "src": "3112:7:10",
  7176. "typeDescriptions": {
  7177. "typeIdentifier": "t_uint256",
  7178. "typeString": "uint256"
  7179. }
  7180. },
  7181. "value": null,
  7182. "visibility": "internal"
  7183. }
  7184. ],
  7185. "src": "3076:51:10"
  7186. },
  7187. "returnParameters": {
  7188. "id": 3228,
  7189. "nodeType": "ParameterList",
  7190. "parameters": [
  7191. {
  7192. "constant": false,
  7193. "id": 3227,
  7194. "name": "",
  7195. "nodeType": "VariableDeclaration",
  7196. "scope": 3253,
  7197. "src": "3144:4:10",
  7198. "stateVariable": false,
  7199. "storageLocation": "default",
  7200. "typeDescriptions": {
  7201. "typeIdentifier": "t_bool",
  7202. "typeString": "bool"
  7203. },
  7204. "typeName": {
  7205. "id": 3226,
  7206. "name": "bool",
  7207. "nodeType": "ElementaryTypeName",
  7208. "src": "3144:4:10",
  7209. "typeDescriptions": {
  7210. "typeIdentifier": "t_bool",
  7211. "typeString": "bool"
  7212. }
  7213. },
  7214. "value": null,
  7215. "visibility": "internal"
  7216. }
  7217. ],
  7218. "src": "3143:6:10"
  7219. },
  7220. "scope": 3520,
  7221. "src": "3055:252:10",
  7222. "stateMutability": "nonpayable",
  7223. "superFunction": 3630,
  7224. "visibility": "public"
  7225. },
  7226. {
  7227. "body": {
  7228. "id": 3279,
  7229. "nodeType": "Block",
  7230. "src": "3788:117:10",
  7231. "statements": [
  7232. {
  7233. "expression": {
  7234. "argumentTypes": null,
  7235. "arguments": [
  7236. {
  7237. "argumentTypes": null,
  7238. "expression": {
  7239. "argumentTypes": null,
  7240. "id": 3263,
  7241. "name": "msg",
  7242. "nodeType": "Identifier",
  7243. "overloadedDeclarations": [],
  7244. "referencedDeclaration": 3662,
  7245. "src": "3807:3:10",
  7246. "typeDescriptions": {
  7247. "typeIdentifier": "t_magic_message",
  7248. "typeString": "msg"
  7249. }
  7250. },
  7251. "id": 3264,
  7252. "isConstant": false,
  7253. "isLValue": false,
  7254. "isPure": false,
  7255. "lValueRequested": false,
  7256. "memberName": "sender",
  7257. "nodeType": "MemberAccess",
  7258. "referencedDeclaration": null,
  7259. "src": "3807:10:10",
  7260. "typeDescriptions": {
  7261. "typeIdentifier": "t_address_payable",
  7262. "typeString": "address payable"
  7263. }
  7264. },
  7265. {
  7266. "argumentTypes": null,
  7267. "id": 3265,
  7268. "name": "spender",
  7269. "nodeType": "Identifier",
  7270. "overloadedDeclarations": [],
  7271. "referencedDeclaration": 3255,
  7272. "src": "3819:7:10",
  7273. "typeDescriptions": {
  7274. "typeIdentifier": "t_address",
  7275. "typeString": "address"
  7276. }
  7277. },
  7278. {
  7279. "argumentTypes": null,
  7280. "arguments": [
  7281. {
  7282. "argumentTypes": null,
  7283. "id": 3273,
  7284. "name": "addedValue",
  7285. "nodeType": "Identifier",
  7286. "overloadedDeclarations": [],
  7287. "referencedDeclaration": 3257,
  7288. "src": "3865:10:10",
  7289. "typeDescriptions": {
  7290. "typeIdentifier": "t_uint256",
  7291. "typeString": "uint256"
  7292. }
  7293. }
  7294. ],
  7295. "expression": {
  7296. "argumentTypes": [
  7297. {
  7298. "typeIdentifier": "t_uint256",
  7299. "typeString": "uint256"
  7300. }
  7301. ],
  7302. "expression": {
  7303. "argumentTypes": null,
  7304. "baseExpression": {
  7305. "argumentTypes": null,
  7306. "baseExpression": {
  7307. "argumentTypes": null,
  7308. "id": 3266,
  7309. "name": "_allowances",
  7310. "nodeType": "Identifier",
  7311. "overloadedDeclarations": [],
  7312. "referencedDeclaration": 3142,
  7313. "src": "3828:11:10",
  7314. "typeDescriptions": {
  7315. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  7316. "typeString": "mapping(address => mapping(address => uint256))"
  7317. }
  7318. },
  7319. "id": 3269,
  7320. "indexExpression": {
  7321. "argumentTypes": null,
  7322. "expression": {
  7323. "argumentTypes": null,
  7324. "id": 3267,
  7325. "name": "msg",
  7326. "nodeType": "Identifier",
  7327. "overloadedDeclarations": [],
  7328. "referencedDeclaration": 3662,
  7329. "src": "3840:3:10",
  7330. "typeDescriptions": {
  7331. "typeIdentifier": "t_magic_message",
  7332. "typeString": "msg"
  7333. }
  7334. },
  7335. "id": 3268,
  7336. "isConstant": false,
  7337. "isLValue": false,
  7338. "isPure": false,
  7339. "lValueRequested": false,
  7340. "memberName": "sender",
  7341. "nodeType": "MemberAccess",
  7342. "referencedDeclaration": null,
  7343. "src": "3840:10:10",
  7344. "typeDescriptions": {
  7345. "typeIdentifier": "t_address_payable",
  7346. "typeString": "address payable"
  7347. }
  7348. },
  7349. "isConstant": false,
  7350. "isLValue": true,
  7351. "isPure": false,
  7352. "lValueRequested": false,
  7353. "nodeType": "IndexAccess",
  7354. "src": "3828:23:10",
  7355. "typeDescriptions": {
  7356. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  7357. "typeString": "mapping(address => uint256)"
  7358. }
  7359. },
  7360. "id": 3271,
  7361. "indexExpression": {
  7362. "argumentTypes": null,
  7363. "id": 3270,
  7364. "name": "spender",
  7365. "nodeType": "Identifier",
  7366. "overloadedDeclarations": [],
  7367. "referencedDeclaration": 3255,
  7368. "src": "3852:7:10",
  7369. "typeDescriptions": {
  7370. "typeIdentifier": "t_address",
  7371. "typeString": "address"
  7372. }
  7373. },
  7374. "isConstant": false,
  7375. "isLValue": true,
  7376. "isPure": false,
  7377. "lValueRequested": false,
  7378. "nodeType": "IndexAccess",
  7379. "src": "3828:32:10",
  7380. "typeDescriptions": {
  7381. "typeIdentifier": "t_uint256",
  7382. "typeString": "uint256"
  7383. }
  7384. },
  7385. "id": 3272,
  7386. "isConstant": false,
  7387. "isLValue": false,
  7388. "isPure": false,
  7389. "lValueRequested": false,
  7390. "memberName": "add",
  7391. "nodeType": "MemberAccess",
  7392. "referencedDeclaration": 3017,
  7393. "src": "3828:36:10",
  7394. "typeDescriptions": {
  7395. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  7396. "typeString": "function (uint256,uint256) pure returns (uint256)"
  7397. }
  7398. },
  7399. "id": 3274,
  7400. "isConstant": false,
  7401. "isLValue": false,
  7402. "isPure": false,
  7403. "kind": "functionCall",
  7404. "lValueRequested": false,
  7405. "names": [],
  7406. "nodeType": "FunctionCall",
  7407. "src": "3828:48:10",
  7408. "typeDescriptions": {
  7409. "typeIdentifier": "t_uint256",
  7410. "typeString": "uint256"
  7411. }
  7412. }
  7413. ],
  7414. "expression": {
  7415. "argumentTypes": [
  7416. {
  7417. "typeIdentifier": "t_address_payable",
  7418. "typeString": "address payable"
  7419. },
  7420. {
  7421. "typeIdentifier": "t_address",
  7422. "typeString": "address"
  7423. },
  7424. {
  7425. "typeIdentifier": "t_uint256",
  7426. "typeString": "uint256"
  7427. }
  7428. ],
  7429. "id": 3262,
  7430. "name": "_approve",
  7431. "nodeType": "Identifier",
  7432. "overloadedDeclarations": [],
  7433. "referencedDeclaration": 3491,
  7434. "src": "3798:8:10",
  7435. "typeDescriptions": {
  7436. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  7437. "typeString": "function (address,address,uint256)"
  7438. }
  7439. },
  7440. "id": 3275,
  7441. "isConstant": false,
  7442. "isLValue": false,
  7443. "isPure": false,
  7444. "kind": "functionCall",
  7445. "lValueRequested": false,
  7446. "names": [],
  7447. "nodeType": "FunctionCall",
  7448. "src": "3798:79:10",
  7449. "typeDescriptions": {
  7450. "typeIdentifier": "t_tuple$__$",
  7451. "typeString": "tuple()"
  7452. }
  7453. },
  7454. "id": 3276,
  7455. "nodeType": "ExpressionStatement",
  7456. "src": "3798:79:10"
  7457. },
  7458. {
  7459. "expression": {
  7460. "argumentTypes": null,
  7461. "hexValue": "74727565",
  7462. "id": 3277,
  7463. "isConstant": false,
  7464. "isLValue": false,
  7465. "isPure": true,
  7466. "kind": "bool",
  7467. "lValueRequested": false,
  7468. "nodeType": "Literal",
  7469. "src": "3894:4:10",
  7470. "subdenomination": null,
  7471. "typeDescriptions": {
  7472. "typeIdentifier": "t_bool",
  7473. "typeString": "bool"
  7474. },
  7475. "value": "true"
  7476. },
  7477. "functionReturnParameters": 3261,
  7478. "id": 3278,
  7479. "nodeType": "Return",
  7480. "src": "3887:11:10"
  7481. }
  7482. ]
  7483. },
  7484. "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n * This is an alternative to `approve` that can be used as a mitigation for\nproblems described in `IERC20.approve`.\n * Emits an `Approval` event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.",
  7485. "id": 3280,
  7486. "implemented": true,
  7487. "kind": "function",
  7488. "modifiers": [],
  7489. "name": "increaseAllowance",
  7490. "nodeType": "FunctionDefinition",
  7491. "parameters": {
  7492. "id": 3258,
  7493. "nodeType": "ParameterList",
  7494. "parameters": [
  7495. {
  7496. "constant": false,
  7497. "id": 3255,
  7498. "name": "spender",
  7499. "nodeType": "VariableDeclaration",
  7500. "scope": 3280,
  7501. "src": "3729:15:10",
  7502. "stateVariable": false,
  7503. "storageLocation": "default",
  7504. "typeDescriptions": {
  7505. "typeIdentifier": "t_address",
  7506. "typeString": "address"
  7507. },
  7508. "typeName": {
  7509. "id": 3254,
  7510. "name": "address",
  7511. "nodeType": "ElementaryTypeName",
  7512. "src": "3729:7:10",
  7513. "stateMutability": "nonpayable",
  7514. "typeDescriptions": {
  7515. "typeIdentifier": "t_address",
  7516. "typeString": "address"
  7517. }
  7518. },
  7519. "value": null,
  7520. "visibility": "internal"
  7521. },
  7522. {
  7523. "constant": false,
  7524. "id": 3257,
  7525. "name": "addedValue",
  7526. "nodeType": "VariableDeclaration",
  7527. "scope": 3280,
  7528. "src": "3746:18:10",
  7529. "stateVariable": false,
  7530. "storageLocation": "default",
  7531. "typeDescriptions": {
  7532. "typeIdentifier": "t_uint256",
  7533. "typeString": "uint256"
  7534. },
  7535. "typeName": {
  7536. "id": 3256,
  7537. "name": "uint256",
  7538. "nodeType": "ElementaryTypeName",
  7539. "src": "3746:7:10",
  7540. "typeDescriptions": {
  7541. "typeIdentifier": "t_uint256",
  7542. "typeString": "uint256"
  7543. }
  7544. },
  7545. "value": null,
  7546. "visibility": "internal"
  7547. }
  7548. ],
  7549. "src": "3728:37:10"
  7550. },
  7551. "returnParameters": {
  7552. "id": 3261,
  7553. "nodeType": "ParameterList",
  7554. "parameters": [
  7555. {
  7556. "constant": false,
  7557. "id": 3260,
  7558. "name": "",
  7559. "nodeType": "VariableDeclaration",
  7560. "scope": 3280,
  7561. "src": "3782:4:10",
  7562. "stateVariable": false,
  7563. "storageLocation": "default",
  7564. "typeDescriptions": {
  7565. "typeIdentifier": "t_bool",
  7566. "typeString": "bool"
  7567. },
  7568. "typeName": {
  7569. "id": 3259,
  7570. "name": "bool",
  7571. "nodeType": "ElementaryTypeName",
  7572. "src": "3782:4:10",
  7573. "typeDescriptions": {
  7574. "typeIdentifier": "t_bool",
  7575. "typeString": "bool"
  7576. }
  7577. },
  7578. "value": null,
  7579. "visibility": "internal"
  7580. }
  7581. ],
  7582. "src": "3781:6:10"
  7583. },
  7584. "scope": 3520,
  7585. "src": "3702:203:10",
  7586. "stateMutability": "nonpayable",
  7587. "superFunction": null,
  7588. "visibility": "public"
  7589. },
  7590. {
  7591. "body": {
  7592. "id": 3306,
  7593. "nodeType": "Block",
  7594. "src": "4483:122:10",
  7595. "statements": [
  7596. {
  7597. "expression": {
  7598. "argumentTypes": null,
  7599. "arguments": [
  7600. {
  7601. "argumentTypes": null,
  7602. "expression": {
  7603. "argumentTypes": null,
  7604. "id": 3290,
  7605. "name": "msg",
  7606. "nodeType": "Identifier",
  7607. "overloadedDeclarations": [],
  7608. "referencedDeclaration": 3662,
  7609. "src": "4502:3:10",
  7610. "typeDescriptions": {
  7611. "typeIdentifier": "t_magic_message",
  7612. "typeString": "msg"
  7613. }
  7614. },
  7615. "id": 3291,
  7616. "isConstant": false,
  7617. "isLValue": false,
  7618. "isPure": false,
  7619. "lValueRequested": false,
  7620. "memberName": "sender",
  7621. "nodeType": "MemberAccess",
  7622. "referencedDeclaration": null,
  7623. "src": "4502:10:10",
  7624. "typeDescriptions": {
  7625. "typeIdentifier": "t_address_payable",
  7626. "typeString": "address payable"
  7627. }
  7628. },
  7629. {
  7630. "argumentTypes": null,
  7631. "id": 3292,
  7632. "name": "spender",
  7633. "nodeType": "Identifier",
  7634. "overloadedDeclarations": [],
  7635. "referencedDeclaration": 3282,
  7636. "src": "4514:7:10",
  7637. "typeDescriptions": {
  7638. "typeIdentifier": "t_address",
  7639. "typeString": "address"
  7640. }
  7641. },
  7642. {
  7643. "argumentTypes": null,
  7644. "arguments": [
  7645. {
  7646. "argumentTypes": null,
  7647. "id": 3300,
  7648. "name": "subtractedValue",
  7649. "nodeType": "Identifier",
  7650. "overloadedDeclarations": [],
  7651. "referencedDeclaration": 3284,
  7652. "src": "4560:15:10",
  7653. "typeDescriptions": {
  7654. "typeIdentifier": "t_uint256",
  7655. "typeString": "uint256"
  7656. }
  7657. }
  7658. ],
  7659. "expression": {
  7660. "argumentTypes": [
  7661. {
  7662. "typeIdentifier": "t_uint256",
  7663. "typeString": "uint256"
  7664. }
  7665. ],
  7666. "expression": {
  7667. "argumentTypes": null,
  7668. "baseExpression": {
  7669. "argumentTypes": null,
  7670. "baseExpression": {
  7671. "argumentTypes": null,
  7672. "id": 3293,
  7673. "name": "_allowances",
  7674. "nodeType": "Identifier",
  7675. "overloadedDeclarations": [],
  7676. "referencedDeclaration": 3142,
  7677. "src": "4523:11:10",
  7678. "typeDescriptions": {
  7679. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  7680. "typeString": "mapping(address => mapping(address => uint256))"
  7681. }
  7682. },
  7683. "id": 3296,
  7684. "indexExpression": {
  7685. "argumentTypes": null,
  7686. "expression": {
  7687. "argumentTypes": null,
  7688. "id": 3294,
  7689. "name": "msg",
  7690. "nodeType": "Identifier",
  7691. "overloadedDeclarations": [],
  7692. "referencedDeclaration": 3662,
  7693. "src": "4535:3:10",
  7694. "typeDescriptions": {
  7695. "typeIdentifier": "t_magic_message",
  7696. "typeString": "msg"
  7697. }
  7698. },
  7699. "id": 3295,
  7700. "isConstant": false,
  7701. "isLValue": false,
  7702. "isPure": false,
  7703. "lValueRequested": false,
  7704. "memberName": "sender",
  7705. "nodeType": "MemberAccess",
  7706. "referencedDeclaration": null,
  7707. "src": "4535:10:10",
  7708. "typeDescriptions": {
  7709. "typeIdentifier": "t_address_payable",
  7710. "typeString": "address payable"
  7711. }
  7712. },
  7713. "isConstant": false,
  7714. "isLValue": true,
  7715. "isPure": false,
  7716. "lValueRequested": false,
  7717. "nodeType": "IndexAccess",
  7718. "src": "4523:23:10",
  7719. "typeDescriptions": {
  7720. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  7721. "typeString": "mapping(address => uint256)"
  7722. }
  7723. },
  7724. "id": 3298,
  7725. "indexExpression": {
  7726. "argumentTypes": null,
  7727. "id": 3297,
  7728. "name": "spender",
  7729. "nodeType": "Identifier",
  7730. "overloadedDeclarations": [],
  7731. "referencedDeclaration": 3282,
  7732. "src": "4547:7:10",
  7733. "typeDescriptions": {
  7734. "typeIdentifier": "t_address",
  7735. "typeString": "address"
  7736. }
  7737. },
  7738. "isConstant": false,
  7739. "isLValue": true,
  7740. "isPure": false,
  7741. "lValueRequested": false,
  7742. "nodeType": "IndexAccess",
  7743. "src": "4523:32:10",
  7744. "typeDescriptions": {
  7745. "typeIdentifier": "t_uint256",
  7746. "typeString": "uint256"
  7747. }
  7748. },
  7749. "id": 3299,
  7750. "isConstant": false,
  7751. "isLValue": false,
  7752. "isPure": false,
  7753. "lValueRequested": false,
  7754. "memberName": "sub",
  7755. "nodeType": "MemberAccess",
  7756. "referencedDeclaration": 3042,
  7757. "src": "4523:36:10",
  7758. "typeDescriptions": {
  7759. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  7760. "typeString": "function (uint256,uint256) pure returns (uint256)"
  7761. }
  7762. },
  7763. "id": 3301,
  7764. "isConstant": false,
  7765. "isLValue": false,
  7766. "isPure": false,
  7767. "kind": "functionCall",
  7768. "lValueRequested": false,
  7769. "names": [],
  7770. "nodeType": "FunctionCall",
  7771. "src": "4523:53:10",
  7772. "typeDescriptions": {
  7773. "typeIdentifier": "t_uint256",
  7774. "typeString": "uint256"
  7775. }
  7776. }
  7777. ],
  7778. "expression": {
  7779. "argumentTypes": [
  7780. {
  7781. "typeIdentifier": "t_address_payable",
  7782. "typeString": "address payable"
  7783. },
  7784. {
  7785. "typeIdentifier": "t_address",
  7786. "typeString": "address"
  7787. },
  7788. {
  7789. "typeIdentifier": "t_uint256",
  7790. "typeString": "uint256"
  7791. }
  7792. ],
  7793. "id": 3289,
  7794. "name": "_approve",
  7795. "nodeType": "Identifier",
  7796. "overloadedDeclarations": [],
  7797. "referencedDeclaration": 3491,
  7798. "src": "4493:8:10",
  7799. "typeDescriptions": {
  7800. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  7801. "typeString": "function (address,address,uint256)"
  7802. }
  7803. },
  7804. "id": 3302,
  7805. "isConstant": false,
  7806. "isLValue": false,
  7807. "isPure": false,
  7808. "kind": "functionCall",
  7809. "lValueRequested": false,
  7810. "names": [],
  7811. "nodeType": "FunctionCall",
  7812. "src": "4493:84:10",
  7813. "typeDescriptions": {
  7814. "typeIdentifier": "t_tuple$__$",
  7815. "typeString": "tuple()"
  7816. }
  7817. },
  7818. "id": 3303,
  7819. "nodeType": "ExpressionStatement",
  7820. "src": "4493:84:10"
  7821. },
  7822. {
  7823. "expression": {
  7824. "argumentTypes": null,
  7825. "hexValue": "74727565",
  7826. "id": 3304,
  7827. "isConstant": false,
  7828. "isLValue": false,
  7829. "isPure": true,
  7830. "kind": "bool",
  7831. "lValueRequested": false,
  7832. "nodeType": "Literal",
  7833. "src": "4594:4:10",
  7834. "subdenomination": null,
  7835. "typeDescriptions": {
  7836. "typeIdentifier": "t_bool",
  7837. "typeString": "bool"
  7838. },
  7839. "value": "true"
  7840. },
  7841. "functionReturnParameters": 3288,
  7842. "id": 3305,
  7843. "nodeType": "Return",
  7844. "src": "4587:11:10"
  7845. }
  7846. ]
  7847. },
  7848. "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n * This is an alternative to `approve` that can be used as a mitigation for\nproblems described in `IERC20.approve`.\n * Emits an `Approval` event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.",
  7849. "id": 3307,
  7850. "implemented": true,
  7851. "kind": "function",
  7852. "modifiers": [],
  7853. "name": "decreaseAllowance",
  7854. "nodeType": "FunctionDefinition",
  7855. "parameters": {
  7856. "id": 3285,
  7857. "nodeType": "ParameterList",
  7858. "parameters": [
  7859. {
  7860. "constant": false,
  7861. "id": 3282,
  7862. "name": "spender",
  7863. "nodeType": "VariableDeclaration",
  7864. "scope": 3307,
  7865. "src": "4419:15:10",
  7866. "stateVariable": false,
  7867. "storageLocation": "default",
  7868. "typeDescriptions": {
  7869. "typeIdentifier": "t_address",
  7870. "typeString": "address"
  7871. },
  7872. "typeName": {
  7873. "id": 3281,
  7874. "name": "address",
  7875. "nodeType": "ElementaryTypeName",
  7876. "src": "4419:7:10",
  7877. "stateMutability": "nonpayable",
  7878. "typeDescriptions": {
  7879. "typeIdentifier": "t_address",
  7880. "typeString": "address"
  7881. }
  7882. },
  7883. "value": null,
  7884. "visibility": "internal"
  7885. },
  7886. {
  7887. "constant": false,
  7888. "id": 3284,
  7889. "name": "subtractedValue",
  7890. "nodeType": "VariableDeclaration",
  7891. "scope": 3307,
  7892. "src": "4436:23:10",
  7893. "stateVariable": false,
  7894. "storageLocation": "default",
  7895. "typeDescriptions": {
  7896. "typeIdentifier": "t_uint256",
  7897. "typeString": "uint256"
  7898. },
  7899. "typeName": {
  7900. "id": 3283,
  7901. "name": "uint256",
  7902. "nodeType": "ElementaryTypeName",
  7903. "src": "4436:7:10",
  7904. "typeDescriptions": {
  7905. "typeIdentifier": "t_uint256",
  7906. "typeString": "uint256"
  7907. }
  7908. },
  7909. "value": null,
  7910. "visibility": "internal"
  7911. }
  7912. ],
  7913. "src": "4418:42:10"
  7914. },
  7915. "returnParameters": {
  7916. "id": 3288,
  7917. "nodeType": "ParameterList",
  7918. "parameters": [
  7919. {
  7920. "constant": false,
  7921. "id": 3287,
  7922. "name": "",
  7923. "nodeType": "VariableDeclaration",
  7924. "scope": 3307,
  7925. "src": "4477:4:10",
  7926. "stateVariable": false,
  7927. "storageLocation": "default",
  7928. "typeDescriptions": {
  7929. "typeIdentifier": "t_bool",
  7930. "typeString": "bool"
  7931. },
  7932. "typeName": {
  7933. "id": 3286,
  7934. "name": "bool",
  7935. "nodeType": "ElementaryTypeName",
  7936. "src": "4477:4:10",
  7937. "typeDescriptions": {
  7938. "typeIdentifier": "t_bool",
  7939. "typeString": "bool"
  7940. }
  7941. },
  7942. "value": null,
  7943. "visibility": "internal"
  7944. }
  7945. ],
  7946. "src": "4476:6:10"
  7947. },
  7948. "scope": 3520,
  7949. "src": "4392:213:10",
  7950. "stateMutability": "nonpayable",
  7951. "superFunction": null,
  7952. "visibility": "public"
  7953. },
  7954. {
  7955. "body": {
  7956. "id": 3362,
  7957. "nodeType": "Block",
  7958. "src": "5158:343:10",
  7959. "statements": [
  7960. {
  7961. "expression": {
  7962. "argumentTypes": null,
  7963. "arguments": [
  7964. {
  7965. "argumentTypes": null,
  7966. "commonType": {
  7967. "typeIdentifier": "t_address",
  7968. "typeString": "address"
  7969. },
  7970. "id": 3321,
  7971. "isConstant": false,
  7972. "isLValue": false,
  7973. "isPure": false,
  7974. "lValueRequested": false,
  7975. "leftExpression": {
  7976. "argumentTypes": null,
  7977. "id": 3317,
  7978. "name": "sender",
  7979. "nodeType": "Identifier",
  7980. "overloadedDeclarations": [],
  7981. "referencedDeclaration": 3309,
  7982. "src": "5176:6:10",
  7983. "typeDescriptions": {
  7984. "typeIdentifier": "t_address",
  7985. "typeString": "address"
  7986. }
  7987. },
  7988. "nodeType": "BinaryOperation",
  7989. "operator": "!=",
  7990. "rightExpression": {
  7991. "argumentTypes": null,
  7992. "arguments": [
  7993. {
  7994. "argumentTypes": null,
  7995. "hexValue": "30",
  7996. "id": 3319,
  7997. "isConstant": false,
  7998. "isLValue": false,
  7999. "isPure": true,
  8000. "kind": "number",
  8001. "lValueRequested": false,
  8002. "nodeType": "Literal",
  8003. "src": "5194:1:10",
  8004. "subdenomination": null,
  8005. "typeDescriptions": {
  8006. "typeIdentifier": "t_rational_0_by_1",
  8007. "typeString": "int_const 0"
  8008. },
  8009. "value": "0"
  8010. }
  8011. ],
  8012. "expression": {
  8013. "argumentTypes": [
  8014. {
  8015. "typeIdentifier": "t_rational_0_by_1",
  8016. "typeString": "int_const 0"
  8017. }
  8018. ],
  8019. "id": 3318,
  8020. "isConstant": false,
  8021. "isLValue": false,
  8022. "isPure": true,
  8023. "lValueRequested": false,
  8024. "nodeType": "ElementaryTypeNameExpression",
  8025. "src": "5186:7:10",
  8026. "typeDescriptions": {
  8027. "typeIdentifier": "t_type$_t_address_$",
  8028. "typeString": "type(address)"
  8029. },
  8030. "typeName": "address"
  8031. },
  8032. "id": 3320,
  8033. "isConstant": false,
  8034. "isLValue": false,
  8035. "isPure": true,
  8036. "kind": "typeConversion",
  8037. "lValueRequested": false,
  8038. "names": [],
  8039. "nodeType": "FunctionCall",
  8040. "src": "5186:10:10",
  8041. "typeDescriptions": {
  8042. "typeIdentifier": "t_address_payable",
  8043. "typeString": "address payable"
  8044. }
  8045. },
  8046. "src": "5176:20:10",
  8047. "typeDescriptions": {
  8048. "typeIdentifier": "t_bool",
  8049. "typeString": "bool"
  8050. }
  8051. },
  8052. {
  8053. "argumentTypes": null,
  8054. "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
  8055. "id": 3322,
  8056. "isConstant": false,
  8057. "isLValue": false,
  8058. "isPure": true,
  8059. "kind": "string",
  8060. "lValueRequested": false,
  8061. "nodeType": "Literal",
  8062. "src": "5198:39:10",
  8063. "subdenomination": null,
  8064. "typeDescriptions": {
  8065. "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
  8066. "typeString": "literal_string \"ERC20: transfer from the zero address\""
  8067. },
  8068. "value": "ERC20: transfer from the zero address"
  8069. }
  8070. ],
  8071. "expression": {
  8072. "argumentTypes": [
  8073. {
  8074. "typeIdentifier": "t_bool",
  8075. "typeString": "bool"
  8076. },
  8077. {
  8078. "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
  8079. "typeString": "literal_string \"ERC20: transfer from the zero address\""
  8080. }
  8081. ],
  8082. "id": 3316,
  8083. "name": "require",
  8084. "nodeType": "Identifier",
  8085. "overloadedDeclarations": [
  8086. 3665,
  8087. 3666
  8088. ],
  8089. "referencedDeclaration": 3666,
  8090. "src": "5168:7:10",
  8091. "typeDescriptions": {
  8092. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  8093. "typeString": "function (bool,string memory) pure"
  8094. }
  8095. },
  8096. "id": 3323,
  8097. "isConstant": false,
  8098. "isLValue": false,
  8099. "isPure": false,
  8100. "kind": "functionCall",
  8101. "lValueRequested": false,
  8102. "names": [],
  8103. "nodeType": "FunctionCall",
  8104. "src": "5168:70:10",
  8105. "typeDescriptions": {
  8106. "typeIdentifier": "t_tuple$__$",
  8107. "typeString": "tuple()"
  8108. }
  8109. },
  8110. "id": 3324,
  8111. "nodeType": "ExpressionStatement",
  8112. "src": "5168:70:10"
  8113. },
  8114. {
  8115. "expression": {
  8116. "argumentTypes": null,
  8117. "arguments": [
  8118. {
  8119. "argumentTypes": null,
  8120. "commonType": {
  8121. "typeIdentifier": "t_address",
  8122. "typeString": "address"
  8123. },
  8124. "id": 3330,
  8125. "isConstant": false,
  8126. "isLValue": false,
  8127. "isPure": false,
  8128. "lValueRequested": false,
  8129. "leftExpression": {
  8130. "argumentTypes": null,
  8131. "id": 3326,
  8132. "name": "recipient",
  8133. "nodeType": "Identifier",
  8134. "overloadedDeclarations": [],
  8135. "referencedDeclaration": 3311,
  8136. "src": "5256:9:10",
  8137. "typeDescriptions": {
  8138. "typeIdentifier": "t_address",
  8139. "typeString": "address"
  8140. }
  8141. },
  8142. "nodeType": "BinaryOperation",
  8143. "operator": "!=",
  8144. "rightExpression": {
  8145. "argumentTypes": null,
  8146. "arguments": [
  8147. {
  8148. "argumentTypes": null,
  8149. "hexValue": "30",
  8150. "id": 3328,
  8151. "isConstant": false,
  8152. "isLValue": false,
  8153. "isPure": true,
  8154. "kind": "number",
  8155. "lValueRequested": false,
  8156. "nodeType": "Literal",
  8157. "src": "5277:1:10",
  8158. "subdenomination": null,
  8159. "typeDescriptions": {
  8160. "typeIdentifier": "t_rational_0_by_1",
  8161. "typeString": "int_const 0"
  8162. },
  8163. "value": "0"
  8164. }
  8165. ],
  8166. "expression": {
  8167. "argumentTypes": [
  8168. {
  8169. "typeIdentifier": "t_rational_0_by_1",
  8170. "typeString": "int_const 0"
  8171. }
  8172. ],
  8173. "id": 3327,
  8174. "isConstant": false,
  8175. "isLValue": false,
  8176. "isPure": true,
  8177. "lValueRequested": false,
  8178. "nodeType": "ElementaryTypeNameExpression",
  8179. "src": "5269:7:10",
  8180. "typeDescriptions": {
  8181. "typeIdentifier": "t_type$_t_address_$",
  8182. "typeString": "type(address)"
  8183. },
  8184. "typeName": "address"
  8185. },
  8186. "id": 3329,
  8187. "isConstant": false,
  8188. "isLValue": false,
  8189. "isPure": true,
  8190. "kind": "typeConversion",
  8191. "lValueRequested": false,
  8192. "names": [],
  8193. "nodeType": "FunctionCall",
  8194. "src": "5269:10:10",
  8195. "typeDescriptions": {
  8196. "typeIdentifier": "t_address_payable",
  8197. "typeString": "address payable"
  8198. }
  8199. },
  8200. "src": "5256:23:10",
  8201. "typeDescriptions": {
  8202. "typeIdentifier": "t_bool",
  8203. "typeString": "bool"
  8204. }
  8205. },
  8206. {
  8207. "argumentTypes": null,
  8208. "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
  8209. "id": 3331,
  8210. "isConstant": false,
  8211. "isLValue": false,
  8212. "isPure": true,
  8213. "kind": "string",
  8214. "lValueRequested": false,
  8215. "nodeType": "Literal",
  8216. "src": "5281:37:10",
  8217. "subdenomination": null,
  8218. "typeDescriptions": {
  8219. "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
  8220. "typeString": "literal_string \"ERC20: transfer to the zero address\""
  8221. },
  8222. "value": "ERC20: transfer to the zero address"
  8223. }
  8224. ],
  8225. "expression": {
  8226. "argumentTypes": [
  8227. {
  8228. "typeIdentifier": "t_bool",
  8229. "typeString": "bool"
  8230. },
  8231. {
  8232. "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
  8233. "typeString": "literal_string \"ERC20: transfer to the zero address\""
  8234. }
  8235. ],
  8236. "id": 3325,
  8237. "name": "require",
  8238. "nodeType": "Identifier",
  8239. "overloadedDeclarations": [
  8240. 3665,
  8241. 3666
  8242. ],
  8243. "referencedDeclaration": 3666,
  8244. "src": "5248:7:10",
  8245. "typeDescriptions": {
  8246. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  8247. "typeString": "function (bool,string memory) pure"
  8248. }
  8249. },
  8250. "id": 3332,
  8251. "isConstant": false,
  8252. "isLValue": false,
  8253. "isPure": false,
  8254. "kind": "functionCall",
  8255. "lValueRequested": false,
  8256. "names": [],
  8257. "nodeType": "FunctionCall",
  8258. "src": "5248:71:10",
  8259. "typeDescriptions": {
  8260. "typeIdentifier": "t_tuple$__$",
  8261. "typeString": "tuple()"
  8262. }
  8263. },
  8264. "id": 3333,
  8265. "nodeType": "ExpressionStatement",
  8266. "src": "5248:71:10"
  8267. },
  8268. {
  8269. "expression": {
  8270. "argumentTypes": null,
  8271. "id": 3343,
  8272. "isConstant": false,
  8273. "isLValue": false,
  8274. "isPure": false,
  8275. "lValueRequested": false,
  8276. "leftHandSide": {
  8277. "argumentTypes": null,
  8278. "baseExpression": {
  8279. "argumentTypes": null,
  8280. "id": 3334,
  8281. "name": "_balances",
  8282. "nodeType": "Identifier",
  8283. "overloadedDeclarations": [],
  8284. "referencedDeclaration": 3136,
  8285. "src": "5330:9:10",
  8286. "typeDescriptions": {
  8287. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  8288. "typeString": "mapping(address => uint256)"
  8289. }
  8290. },
  8291. "id": 3336,
  8292. "indexExpression": {
  8293. "argumentTypes": null,
  8294. "id": 3335,
  8295. "name": "sender",
  8296. "nodeType": "Identifier",
  8297. "overloadedDeclarations": [],
  8298. "referencedDeclaration": 3309,
  8299. "src": "5340:6:10",
  8300. "typeDescriptions": {
  8301. "typeIdentifier": "t_address",
  8302. "typeString": "address"
  8303. }
  8304. },
  8305. "isConstant": false,
  8306. "isLValue": true,
  8307. "isPure": false,
  8308. "lValueRequested": true,
  8309. "nodeType": "IndexAccess",
  8310. "src": "5330:17:10",
  8311. "typeDescriptions": {
  8312. "typeIdentifier": "t_uint256",
  8313. "typeString": "uint256"
  8314. }
  8315. },
  8316. "nodeType": "Assignment",
  8317. "operator": "=",
  8318. "rightHandSide": {
  8319. "argumentTypes": null,
  8320. "arguments": [
  8321. {
  8322. "argumentTypes": null,
  8323. "id": 3341,
  8324. "name": "amount",
  8325. "nodeType": "Identifier",
  8326. "overloadedDeclarations": [],
  8327. "referencedDeclaration": 3313,
  8328. "src": "5372:6:10",
  8329. "typeDescriptions": {
  8330. "typeIdentifier": "t_uint256",
  8331. "typeString": "uint256"
  8332. }
  8333. }
  8334. ],
  8335. "expression": {
  8336. "argumentTypes": [
  8337. {
  8338. "typeIdentifier": "t_uint256",
  8339. "typeString": "uint256"
  8340. }
  8341. ],
  8342. "expression": {
  8343. "argumentTypes": null,
  8344. "baseExpression": {
  8345. "argumentTypes": null,
  8346. "id": 3337,
  8347. "name": "_balances",
  8348. "nodeType": "Identifier",
  8349. "overloadedDeclarations": [],
  8350. "referencedDeclaration": 3136,
  8351. "src": "5350:9:10",
  8352. "typeDescriptions": {
  8353. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  8354. "typeString": "mapping(address => uint256)"
  8355. }
  8356. },
  8357. "id": 3339,
  8358. "indexExpression": {
  8359. "argumentTypes": null,
  8360. "id": 3338,
  8361. "name": "sender",
  8362. "nodeType": "Identifier",
  8363. "overloadedDeclarations": [],
  8364. "referencedDeclaration": 3309,
  8365. "src": "5360:6:10",
  8366. "typeDescriptions": {
  8367. "typeIdentifier": "t_address",
  8368. "typeString": "address"
  8369. }
  8370. },
  8371. "isConstant": false,
  8372. "isLValue": true,
  8373. "isPure": false,
  8374. "lValueRequested": false,
  8375. "nodeType": "IndexAccess",
  8376. "src": "5350:17:10",
  8377. "typeDescriptions": {
  8378. "typeIdentifier": "t_uint256",
  8379. "typeString": "uint256"
  8380. }
  8381. },
  8382. "id": 3340,
  8383. "isConstant": false,
  8384. "isLValue": false,
  8385. "isPure": false,
  8386. "lValueRequested": false,
  8387. "memberName": "sub",
  8388. "nodeType": "MemberAccess",
  8389. "referencedDeclaration": 3042,
  8390. "src": "5350:21:10",
  8391. "typeDescriptions": {
  8392. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  8393. "typeString": "function (uint256,uint256) pure returns (uint256)"
  8394. }
  8395. },
  8396. "id": 3342,
  8397. "isConstant": false,
  8398. "isLValue": false,
  8399. "isPure": false,
  8400. "kind": "functionCall",
  8401. "lValueRequested": false,
  8402. "names": [],
  8403. "nodeType": "FunctionCall",
  8404. "src": "5350:29:10",
  8405. "typeDescriptions": {
  8406. "typeIdentifier": "t_uint256",
  8407. "typeString": "uint256"
  8408. }
  8409. },
  8410. "src": "5330:49:10",
  8411. "typeDescriptions": {
  8412. "typeIdentifier": "t_uint256",
  8413. "typeString": "uint256"
  8414. }
  8415. },
  8416. "id": 3344,
  8417. "nodeType": "ExpressionStatement",
  8418. "src": "5330:49:10"
  8419. },
  8420. {
  8421. "expression": {
  8422. "argumentTypes": null,
  8423. "id": 3354,
  8424. "isConstant": false,
  8425. "isLValue": false,
  8426. "isPure": false,
  8427. "lValueRequested": false,
  8428. "leftHandSide": {
  8429. "argumentTypes": null,
  8430. "baseExpression": {
  8431. "argumentTypes": null,
  8432. "id": 3345,
  8433. "name": "_balances",
  8434. "nodeType": "Identifier",
  8435. "overloadedDeclarations": [],
  8436. "referencedDeclaration": 3136,
  8437. "src": "5389:9:10",
  8438. "typeDescriptions": {
  8439. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  8440. "typeString": "mapping(address => uint256)"
  8441. }
  8442. },
  8443. "id": 3347,
  8444. "indexExpression": {
  8445. "argumentTypes": null,
  8446. "id": 3346,
  8447. "name": "recipient",
  8448. "nodeType": "Identifier",
  8449. "overloadedDeclarations": [],
  8450. "referencedDeclaration": 3311,
  8451. "src": "5399:9:10",
  8452. "typeDescriptions": {
  8453. "typeIdentifier": "t_address",
  8454. "typeString": "address"
  8455. }
  8456. },
  8457. "isConstant": false,
  8458. "isLValue": true,
  8459. "isPure": false,
  8460. "lValueRequested": true,
  8461. "nodeType": "IndexAccess",
  8462. "src": "5389:20:10",
  8463. "typeDescriptions": {
  8464. "typeIdentifier": "t_uint256",
  8465. "typeString": "uint256"
  8466. }
  8467. },
  8468. "nodeType": "Assignment",
  8469. "operator": "=",
  8470. "rightHandSide": {
  8471. "argumentTypes": null,
  8472. "arguments": [
  8473. {
  8474. "argumentTypes": null,
  8475. "id": 3352,
  8476. "name": "amount",
  8477. "nodeType": "Identifier",
  8478. "overloadedDeclarations": [],
  8479. "referencedDeclaration": 3313,
  8480. "src": "5437:6:10",
  8481. "typeDescriptions": {
  8482. "typeIdentifier": "t_uint256",
  8483. "typeString": "uint256"
  8484. }
  8485. }
  8486. ],
  8487. "expression": {
  8488. "argumentTypes": [
  8489. {
  8490. "typeIdentifier": "t_uint256",
  8491. "typeString": "uint256"
  8492. }
  8493. ],
  8494. "expression": {
  8495. "argumentTypes": null,
  8496. "baseExpression": {
  8497. "argumentTypes": null,
  8498. "id": 3348,
  8499. "name": "_balances",
  8500. "nodeType": "Identifier",
  8501. "overloadedDeclarations": [],
  8502. "referencedDeclaration": 3136,
  8503. "src": "5412:9:10",
  8504. "typeDescriptions": {
  8505. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  8506. "typeString": "mapping(address => uint256)"
  8507. }
  8508. },
  8509. "id": 3350,
  8510. "indexExpression": {
  8511. "argumentTypes": null,
  8512. "id": 3349,
  8513. "name": "recipient",
  8514. "nodeType": "Identifier",
  8515. "overloadedDeclarations": [],
  8516. "referencedDeclaration": 3311,
  8517. "src": "5422:9:10",
  8518. "typeDescriptions": {
  8519. "typeIdentifier": "t_address",
  8520. "typeString": "address"
  8521. }
  8522. },
  8523. "isConstant": false,
  8524. "isLValue": true,
  8525. "isPure": false,
  8526. "lValueRequested": false,
  8527. "nodeType": "IndexAccess",
  8528. "src": "5412:20:10",
  8529. "typeDescriptions": {
  8530. "typeIdentifier": "t_uint256",
  8531. "typeString": "uint256"
  8532. }
  8533. },
  8534. "id": 3351,
  8535. "isConstant": false,
  8536. "isLValue": false,
  8537. "isPure": false,
  8538. "lValueRequested": false,
  8539. "memberName": "add",
  8540. "nodeType": "MemberAccess",
  8541. "referencedDeclaration": 3017,
  8542. "src": "5412:24:10",
  8543. "typeDescriptions": {
  8544. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  8545. "typeString": "function (uint256,uint256) pure returns (uint256)"
  8546. }
  8547. },
  8548. "id": 3353,
  8549. "isConstant": false,
  8550. "isLValue": false,
  8551. "isPure": false,
  8552. "kind": "functionCall",
  8553. "lValueRequested": false,
  8554. "names": [],
  8555. "nodeType": "FunctionCall",
  8556. "src": "5412:32:10",
  8557. "typeDescriptions": {
  8558. "typeIdentifier": "t_uint256",
  8559. "typeString": "uint256"
  8560. }
  8561. },
  8562. "src": "5389:55:10",
  8563. "typeDescriptions": {
  8564. "typeIdentifier": "t_uint256",
  8565. "typeString": "uint256"
  8566. }
  8567. },
  8568. "id": 3355,
  8569. "nodeType": "ExpressionStatement",
  8570. "src": "5389:55:10"
  8571. },
  8572. {
  8573. "eventCall": {
  8574. "argumentTypes": null,
  8575. "arguments": [
  8576. {
  8577. "argumentTypes": null,
  8578. "id": 3357,
  8579. "name": "sender",
  8580. "nodeType": "Identifier",
  8581. "overloadedDeclarations": [],
  8582. "referencedDeclaration": 3309,
  8583. "src": "5468:6:10",
  8584. "typeDescriptions": {
  8585. "typeIdentifier": "t_address",
  8586. "typeString": "address"
  8587. }
  8588. },
  8589. {
  8590. "argumentTypes": null,
  8591. "id": 3358,
  8592. "name": "recipient",
  8593. "nodeType": "Identifier",
  8594. "overloadedDeclarations": [],
  8595. "referencedDeclaration": 3311,
  8596. "src": "5476:9:10",
  8597. "typeDescriptions": {
  8598. "typeIdentifier": "t_address",
  8599. "typeString": "address"
  8600. }
  8601. },
  8602. {
  8603. "argumentTypes": null,
  8604. "id": 3359,
  8605. "name": "amount",
  8606. "nodeType": "Identifier",
  8607. "overloadedDeclarations": [],
  8608. "referencedDeclaration": 3313,
  8609. "src": "5487:6:10",
  8610. "typeDescriptions": {
  8611. "typeIdentifier": "t_uint256",
  8612. "typeString": "uint256"
  8613. }
  8614. }
  8615. ],
  8616. "expression": {
  8617. "argumentTypes": [
  8618. {
  8619. "typeIdentifier": "t_address",
  8620. "typeString": "address"
  8621. },
  8622. {
  8623. "typeIdentifier": "t_address",
  8624. "typeString": "address"
  8625. },
  8626. {
  8627. "typeIdentifier": "t_uint256",
  8628. "typeString": "uint256"
  8629. }
  8630. ],
  8631. "id": 3356,
  8632. "name": "Transfer",
  8633. "nodeType": "Identifier",
  8634. "overloadedDeclarations": [],
  8635. "referencedDeclaration": 3638,
  8636. "src": "5459:8:10",
  8637. "typeDescriptions": {
  8638. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  8639. "typeString": "function (address,address,uint256)"
  8640. }
  8641. },
  8642. "id": 3360,
  8643. "isConstant": false,
  8644. "isLValue": false,
  8645. "isPure": false,
  8646. "kind": "functionCall",
  8647. "lValueRequested": false,
  8648. "names": [],
  8649. "nodeType": "FunctionCall",
  8650. "src": "5459:35:10",
  8651. "typeDescriptions": {
  8652. "typeIdentifier": "t_tuple$__$",
  8653. "typeString": "tuple()"
  8654. }
  8655. },
  8656. "id": 3361,
  8657. "nodeType": "EmitStatement",
  8658. "src": "5454:40:10"
  8659. }
  8660. ]
  8661. },
  8662. "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n * This is internal function is equivalent to `transfer`, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n * Emits a `Transfer` event.\n * Requirements:\n * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.",
  8663. "id": 3363,
  8664. "implemented": true,
  8665. "kind": "function",
  8666. "modifiers": [],
  8667. "name": "_transfer",
  8668. "nodeType": "FunctionDefinition",
  8669. "parameters": {
  8670. "id": 3314,
  8671. "nodeType": "ParameterList",
  8672. "parameters": [
  8673. {
  8674. "constant": false,
  8675. "id": 3309,
  8676. "name": "sender",
  8677. "nodeType": "VariableDeclaration",
  8678. "scope": 3363,
  8679. "src": "5098:14:10",
  8680. "stateVariable": false,
  8681. "storageLocation": "default",
  8682. "typeDescriptions": {
  8683. "typeIdentifier": "t_address",
  8684. "typeString": "address"
  8685. },
  8686. "typeName": {
  8687. "id": 3308,
  8688. "name": "address",
  8689. "nodeType": "ElementaryTypeName",
  8690. "src": "5098:7:10",
  8691. "stateMutability": "nonpayable",
  8692. "typeDescriptions": {
  8693. "typeIdentifier": "t_address",
  8694. "typeString": "address"
  8695. }
  8696. },
  8697. "value": null,
  8698. "visibility": "internal"
  8699. },
  8700. {
  8701. "constant": false,
  8702. "id": 3311,
  8703. "name": "recipient",
  8704. "nodeType": "VariableDeclaration",
  8705. "scope": 3363,
  8706. "src": "5114:17:10",
  8707. "stateVariable": false,
  8708. "storageLocation": "default",
  8709. "typeDescriptions": {
  8710. "typeIdentifier": "t_address",
  8711. "typeString": "address"
  8712. },
  8713. "typeName": {
  8714. "id": 3310,
  8715. "name": "address",
  8716. "nodeType": "ElementaryTypeName",
  8717. "src": "5114:7:10",
  8718. "stateMutability": "nonpayable",
  8719. "typeDescriptions": {
  8720. "typeIdentifier": "t_address",
  8721. "typeString": "address"
  8722. }
  8723. },
  8724. "value": null,
  8725. "visibility": "internal"
  8726. },
  8727. {
  8728. "constant": false,
  8729. "id": 3313,
  8730. "name": "amount",
  8731. "nodeType": "VariableDeclaration",
  8732. "scope": 3363,
  8733. "src": "5133:14:10",
  8734. "stateVariable": false,
  8735. "storageLocation": "default",
  8736. "typeDescriptions": {
  8737. "typeIdentifier": "t_uint256",
  8738. "typeString": "uint256"
  8739. },
  8740. "typeName": {
  8741. "id": 3312,
  8742. "name": "uint256",
  8743. "nodeType": "ElementaryTypeName",
  8744. "src": "5133:7:10",
  8745. "typeDescriptions": {
  8746. "typeIdentifier": "t_uint256",
  8747. "typeString": "uint256"
  8748. }
  8749. },
  8750. "value": null,
  8751. "visibility": "internal"
  8752. }
  8753. ],
  8754. "src": "5097:51:10"
  8755. },
  8756. "returnParameters": {
  8757. "id": 3315,
  8758. "nodeType": "ParameterList",
  8759. "parameters": [],
  8760. "src": "5158:0:10"
  8761. },
  8762. "scope": 3520,
  8763. "src": "5079:422:10",
  8764. "stateMutability": "nonpayable",
  8765. "superFunction": null,
  8766. "visibility": "internal"
  8767. },
  8768. {
  8769. "body": {
  8770. "id": 3405,
  8771. "nodeType": "Block",
  8772. "src": "5828:245:10",
  8773. "statements": [
  8774. {
  8775. "expression": {
  8776. "argumentTypes": null,
  8777. "arguments": [
  8778. {
  8779. "argumentTypes": null,
  8780. "commonType": {
  8781. "typeIdentifier": "t_address",
  8782. "typeString": "address"
  8783. },
  8784. "id": 3375,
  8785. "isConstant": false,
  8786. "isLValue": false,
  8787. "isPure": false,
  8788. "lValueRequested": false,
  8789. "leftExpression": {
  8790. "argumentTypes": null,
  8791. "id": 3371,
  8792. "name": "account",
  8793. "nodeType": "Identifier",
  8794. "overloadedDeclarations": [],
  8795. "referencedDeclaration": 3365,
  8796. "src": "5846:7:10",
  8797. "typeDescriptions": {
  8798. "typeIdentifier": "t_address",
  8799. "typeString": "address"
  8800. }
  8801. },
  8802. "nodeType": "BinaryOperation",
  8803. "operator": "!=",
  8804. "rightExpression": {
  8805. "argumentTypes": null,
  8806. "arguments": [
  8807. {
  8808. "argumentTypes": null,
  8809. "hexValue": "30",
  8810. "id": 3373,
  8811. "isConstant": false,
  8812. "isLValue": false,
  8813. "isPure": true,
  8814. "kind": "number",
  8815. "lValueRequested": false,
  8816. "nodeType": "Literal",
  8817. "src": "5865:1:10",
  8818. "subdenomination": null,
  8819. "typeDescriptions": {
  8820. "typeIdentifier": "t_rational_0_by_1",
  8821. "typeString": "int_const 0"
  8822. },
  8823. "value": "0"
  8824. }
  8825. ],
  8826. "expression": {
  8827. "argumentTypes": [
  8828. {
  8829. "typeIdentifier": "t_rational_0_by_1",
  8830. "typeString": "int_const 0"
  8831. }
  8832. ],
  8833. "id": 3372,
  8834. "isConstant": false,
  8835. "isLValue": false,
  8836. "isPure": true,
  8837. "lValueRequested": false,
  8838. "nodeType": "ElementaryTypeNameExpression",
  8839. "src": "5857:7:10",
  8840. "typeDescriptions": {
  8841. "typeIdentifier": "t_type$_t_address_$",
  8842. "typeString": "type(address)"
  8843. },
  8844. "typeName": "address"
  8845. },
  8846. "id": 3374,
  8847. "isConstant": false,
  8848. "isLValue": false,
  8849. "isPure": true,
  8850. "kind": "typeConversion",
  8851. "lValueRequested": false,
  8852. "names": [],
  8853. "nodeType": "FunctionCall",
  8854. "src": "5857:10:10",
  8855. "typeDescriptions": {
  8856. "typeIdentifier": "t_address_payable",
  8857. "typeString": "address payable"
  8858. }
  8859. },
  8860. "src": "5846:21:10",
  8861. "typeDescriptions": {
  8862. "typeIdentifier": "t_bool",
  8863. "typeString": "bool"
  8864. }
  8865. },
  8866. {
  8867. "argumentTypes": null,
  8868. "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
  8869. "id": 3376,
  8870. "isConstant": false,
  8871. "isLValue": false,
  8872. "isPure": true,
  8873. "kind": "string",
  8874. "lValueRequested": false,
  8875. "nodeType": "Literal",
  8876. "src": "5869:33:10",
  8877. "subdenomination": null,
  8878. "typeDescriptions": {
  8879. "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
  8880. "typeString": "literal_string \"ERC20: mint to the zero address\""
  8881. },
  8882. "value": "ERC20: mint to the zero address"
  8883. }
  8884. ],
  8885. "expression": {
  8886. "argumentTypes": [
  8887. {
  8888. "typeIdentifier": "t_bool",
  8889. "typeString": "bool"
  8890. },
  8891. {
  8892. "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
  8893. "typeString": "literal_string \"ERC20: mint to the zero address\""
  8894. }
  8895. ],
  8896. "id": 3370,
  8897. "name": "require",
  8898. "nodeType": "Identifier",
  8899. "overloadedDeclarations": [
  8900. 3665,
  8901. 3666
  8902. ],
  8903. "referencedDeclaration": 3666,
  8904. "src": "5838:7:10",
  8905. "typeDescriptions": {
  8906. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  8907. "typeString": "function (bool,string memory) pure"
  8908. }
  8909. },
  8910. "id": 3377,
  8911. "isConstant": false,
  8912. "isLValue": false,
  8913. "isPure": false,
  8914. "kind": "functionCall",
  8915. "lValueRequested": false,
  8916. "names": [],
  8917. "nodeType": "FunctionCall",
  8918. "src": "5838:65:10",
  8919. "typeDescriptions": {
  8920. "typeIdentifier": "t_tuple$__$",
  8921. "typeString": "tuple()"
  8922. }
  8923. },
  8924. "id": 3378,
  8925. "nodeType": "ExpressionStatement",
  8926. "src": "5838:65:10"
  8927. },
  8928. {
  8929. "expression": {
  8930. "argumentTypes": null,
  8931. "id": 3384,
  8932. "isConstant": false,
  8933. "isLValue": false,
  8934. "isPure": false,
  8935. "lValueRequested": false,
  8936. "leftHandSide": {
  8937. "argumentTypes": null,
  8938. "id": 3379,
  8939. "name": "_totalSupply",
  8940. "nodeType": "Identifier",
  8941. "overloadedDeclarations": [],
  8942. "referencedDeclaration": 3144,
  8943. "src": "5914:12:10",
  8944. "typeDescriptions": {
  8945. "typeIdentifier": "t_uint256",
  8946. "typeString": "uint256"
  8947. }
  8948. },
  8949. "nodeType": "Assignment",
  8950. "operator": "=",
  8951. "rightHandSide": {
  8952. "argumentTypes": null,
  8953. "arguments": [
  8954. {
  8955. "argumentTypes": null,
  8956. "id": 3382,
  8957. "name": "amount",
  8958. "nodeType": "Identifier",
  8959. "overloadedDeclarations": [],
  8960. "referencedDeclaration": 3367,
  8961. "src": "5946:6:10",
  8962. "typeDescriptions": {
  8963. "typeIdentifier": "t_uint256",
  8964. "typeString": "uint256"
  8965. }
  8966. }
  8967. ],
  8968. "expression": {
  8969. "argumentTypes": [
  8970. {
  8971. "typeIdentifier": "t_uint256",
  8972. "typeString": "uint256"
  8973. }
  8974. ],
  8975. "expression": {
  8976. "argumentTypes": null,
  8977. "id": 3380,
  8978. "name": "_totalSupply",
  8979. "nodeType": "Identifier",
  8980. "overloadedDeclarations": [],
  8981. "referencedDeclaration": 3144,
  8982. "src": "5929:12:10",
  8983. "typeDescriptions": {
  8984. "typeIdentifier": "t_uint256",
  8985. "typeString": "uint256"
  8986. }
  8987. },
  8988. "id": 3381,
  8989. "isConstant": false,
  8990. "isLValue": false,
  8991. "isPure": false,
  8992. "lValueRequested": false,
  8993. "memberName": "add",
  8994. "nodeType": "MemberAccess",
  8995. "referencedDeclaration": 3017,
  8996. "src": "5929:16:10",
  8997. "typeDescriptions": {
  8998. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  8999. "typeString": "function (uint256,uint256) pure returns (uint256)"
  9000. }
  9001. },
  9002. "id": 3383,
  9003. "isConstant": false,
  9004. "isLValue": false,
  9005. "isPure": false,
  9006. "kind": "functionCall",
  9007. "lValueRequested": false,
  9008. "names": [],
  9009. "nodeType": "FunctionCall",
  9010. "src": "5929:24:10",
  9011. "typeDescriptions": {
  9012. "typeIdentifier": "t_uint256",
  9013. "typeString": "uint256"
  9014. }
  9015. },
  9016. "src": "5914:39:10",
  9017. "typeDescriptions": {
  9018. "typeIdentifier": "t_uint256",
  9019. "typeString": "uint256"
  9020. }
  9021. },
  9022. "id": 3385,
  9023. "nodeType": "ExpressionStatement",
  9024. "src": "5914:39:10"
  9025. },
  9026. {
  9027. "expression": {
  9028. "argumentTypes": null,
  9029. "id": 3395,
  9030. "isConstant": false,
  9031. "isLValue": false,
  9032. "isPure": false,
  9033. "lValueRequested": false,
  9034. "leftHandSide": {
  9035. "argumentTypes": null,
  9036. "baseExpression": {
  9037. "argumentTypes": null,
  9038. "id": 3386,
  9039. "name": "_balances",
  9040. "nodeType": "Identifier",
  9041. "overloadedDeclarations": [],
  9042. "referencedDeclaration": 3136,
  9043. "src": "5963:9:10",
  9044. "typeDescriptions": {
  9045. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  9046. "typeString": "mapping(address => uint256)"
  9047. }
  9048. },
  9049. "id": 3388,
  9050. "indexExpression": {
  9051. "argumentTypes": null,
  9052. "id": 3387,
  9053. "name": "account",
  9054. "nodeType": "Identifier",
  9055. "overloadedDeclarations": [],
  9056. "referencedDeclaration": 3365,
  9057. "src": "5973:7:10",
  9058. "typeDescriptions": {
  9059. "typeIdentifier": "t_address",
  9060. "typeString": "address"
  9061. }
  9062. },
  9063. "isConstant": false,
  9064. "isLValue": true,
  9065. "isPure": false,
  9066. "lValueRequested": true,
  9067. "nodeType": "IndexAccess",
  9068. "src": "5963:18:10",
  9069. "typeDescriptions": {
  9070. "typeIdentifier": "t_uint256",
  9071. "typeString": "uint256"
  9072. }
  9073. },
  9074. "nodeType": "Assignment",
  9075. "operator": "=",
  9076. "rightHandSide": {
  9077. "argumentTypes": null,
  9078. "arguments": [
  9079. {
  9080. "argumentTypes": null,
  9081. "id": 3393,
  9082. "name": "amount",
  9083. "nodeType": "Identifier",
  9084. "overloadedDeclarations": [],
  9085. "referencedDeclaration": 3367,
  9086. "src": "6007:6:10",
  9087. "typeDescriptions": {
  9088. "typeIdentifier": "t_uint256",
  9089. "typeString": "uint256"
  9090. }
  9091. }
  9092. ],
  9093. "expression": {
  9094. "argumentTypes": [
  9095. {
  9096. "typeIdentifier": "t_uint256",
  9097. "typeString": "uint256"
  9098. }
  9099. ],
  9100. "expression": {
  9101. "argumentTypes": null,
  9102. "baseExpression": {
  9103. "argumentTypes": null,
  9104. "id": 3389,
  9105. "name": "_balances",
  9106. "nodeType": "Identifier",
  9107. "overloadedDeclarations": [],
  9108. "referencedDeclaration": 3136,
  9109. "src": "5984:9:10",
  9110. "typeDescriptions": {
  9111. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  9112. "typeString": "mapping(address => uint256)"
  9113. }
  9114. },
  9115. "id": 3391,
  9116. "indexExpression": {
  9117. "argumentTypes": null,
  9118. "id": 3390,
  9119. "name": "account",
  9120. "nodeType": "Identifier",
  9121. "overloadedDeclarations": [],
  9122. "referencedDeclaration": 3365,
  9123. "src": "5994:7:10",
  9124. "typeDescriptions": {
  9125. "typeIdentifier": "t_address",
  9126. "typeString": "address"
  9127. }
  9128. },
  9129. "isConstant": false,
  9130. "isLValue": true,
  9131. "isPure": false,
  9132. "lValueRequested": false,
  9133. "nodeType": "IndexAccess",
  9134. "src": "5984:18:10",
  9135. "typeDescriptions": {
  9136. "typeIdentifier": "t_uint256",
  9137. "typeString": "uint256"
  9138. }
  9139. },
  9140. "id": 3392,
  9141. "isConstant": false,
  9142. "isLValue": false,
  9143. "isPure": false,
  9144. "lValueRequested": false,
  9145. "memberName": "add",
  9146. "nodeType": "MemberAccess",
  9147. "referencedDeclaration": 3017,
  9148. "src": "5984:22:10",
  9149. "typeDescriptions": {
  9150. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  9151. "typeString": "function (uint256,uint256) pure returns (uint256)"
  9152. }
  9153. },
  9154. "id": 3394,
  9155. "isConstant": false,
  9156. "isLValue": false,
  9157. "isPure": false,
  9158. "kind": "functionCall",
  9159. "lValueRequested": false,
  9160. "names": [],
  9161. "nodeType": "FunctionCall",
  9162. "src": "5984:30:10",
  9163. "typeDescriptions": {
  9164. "typeIdentifier": "t_uint256",
  9165. "typeString": "uint256"
  9166. }
  9167. },
  9168. "src": "5963:51:10",
  9169. "typeDescriptions": {
  9170. "typeIdentifier": "t_uint256",
  9171. "typeString": "uint256"
  9172. }
  9173. },
  9174. "id": 3396,
  9175. "nodeType": "ExpressionStatement",
  9176. "src": "5963:51:10"
  9177. },
  9178. {
  9179. "eventCall": {
  9180. "argumentTypes": null,
  9181. "arguments": [
  9182. {
  9183. "argumentTypes": null,
  9184. "arguments": [
  9185. {
  9186. "argumentTypes": null,
  9187. "hexValue": "30",
  9188. "id": 3399,
  9189. "isConstant": false,
  9190. "isLValue": false,
  9191. "isPure": true,
  9192. "kind": "number",
  9193. "lValueRequested": false,
  9194. "nodeType": "Literal",
  9195. "src": "6046:1:10",
  9196. "subdenomination": null,
  9197. "typeDescriptions": {
  9198. "typeIdentifier": "t_rational_0_by_1",
  9199. "typeString": "int_const 0"
  9200. },
  9201. "value": "0"
  9202. }
  9203. ],
  9204. "expression": {
  9205. "argumentTypes": [
  9206. {
  9207. "typeIdentifier": "t_rational_0_by_1",
  9208. "typeString": "int_const 0"
  9209. }
  9210. ],
  9211. "id": 3398,
  9212. "isConstant": false,
  9213. "isLValue": false,
  9214. "isPure": true,
  9215. "lValueRequested": false,
  9216. "nodeType": "ElementaryTypeNameExpression",
  9217. "src": "6038:7:10",
  9218. "typeDescriptions": {
  9219. "typeIdentifier": "t_type$_t_address_$",
  9220. "typeString": "type(address)"
  9221. },
  9222. "typeName": "address"
  9223. },
  9224. "id": 3400,
  9225. "isConstant": false,
  9226. "isLValue": false,
  9227. "isPure": true,
  9228. "kind": "typeConversion",
  9229. "lValueRequested": false,
  9230. "names": [],
  9231. "nodeType": "FunctionCall",
  9232. "src": "6038:10:10",
  9233. "typeDescriptions": {
  9234. "typeIdentifier": "t_address_payable",
  9235. "typeString": "address payable"
  9236. }
  9237. },
  9238. {
  9239. "argumentTypes": null,
  9240. "id": 3401,
  9241. "name": "account",
  9242. "nodeType": "Identifier",
  9243. "overloadedDeclarations": [],
  9244. "referencedDeclaration": 3365,
  9245. "src": "6050:7:10",
  9246. "typeDescriptions": {
  9247. "typeIdentifier": "t_address",
  9248. "typeString": "address"
  9249. }
  9250. },
  9251. {
  9252. "argumentTypes": null,
  9253. "id": 3402,
  9254. "name": "amount",
  9255. "nodeType": "Identifier",
  9256. "overloadedDeclarations": [],
  9257. "referencedDeclaration": 3367,
  9258. "src": "6059:6:10",
  9259. "typeDescriptions": {
  9260. "typeIdentifier": "t_uint256",
  9261. "typeString": "uint256"
  9262. }
  9263. }
  9264. ],
  9265. "expression": {
  9266. "argumentTypes": [
  9267. {
  9268. "typeIdentifier": "t_address_payable",
  9269. "typeString": "address payable"
  9270. },
  9271. {
  9272. "typeIdentifier": "t_address",
  9273. "typeString": "address"
  9274. },
  9275. {
  9276. "typeIdentifier": "t_uint256",
  9277. "typeString": "uint256"
  9278. }
  9279. ],
  9280. "id": 3397,
  9281. "name": "Transfer",
  9282. "nodeType": "Identifier",
  9283. "overloadedDeclarations": [],
  9284. "referencedDeclaration": 3638,
  9285. "src": "6029:8:10",
  9286. "typeDescriptions": {
  9287. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  9288. "typeString": "function (address,address,uint256)"
  9289. }
  9290. },
  9291. "id": 3403,
  9292. "isConstant": false,
  9293. "isLValue": false,
  9294. "isPure": false,
  9295. "kind": "functionCall",
  9296. "lValueRequested": false,
  9297. "names": [],
  9298. "nodeType": "FunctionCall",
  9299. "src": "6029:37:10",
  9300. "typeDescriptions": {
  9301. "typeIdentifier": "t_tuple$__$",
  9302. "typeString": "tuple()"
  9303. }
  9304. },
  9305. "id": 3404,
  9306. "nodeType": "EmitStatement",
  9307. "src": "6024:42:10"
  9308. }
  9309. ]
  9310. },
  9311. "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n * Emits a `Transfer` event with `from` set to the zero address.\n * Requirements\n * - `to` cannot be the zero address.",
  9312. "id": 3406,
  9313. "implemented": true,
  9314. "kind": "function",
  9315. "modifiers": [],
  9316. "name": "_mint",
  9317. "nodeType": "FunctionDefinition",
  9318. "parameters": {
  9319. "id": 3368,
  9320. "nodeType": "ParameterList",
  9321. "parameters": [
  9322. {
  9323. "constant": false,
  9324. "id": 3365,
  9325. "name": "account",
  9326. "nodeType": "VariableDeclaration",
  9327. "scope": 3406,
  9328. "src": "5786:15:10",
  9329. "stateVariable": false,
  9330. "storageLocation": "default",
  9331. "typeDescriptions": {
  9332. "typeIdentifier": "t_address",
  9333. "typeString": "address"
  9334. },
  9335. "typeName": {
  9336. "id": 3364,
  9337. "name": "address",
  9338. "nodeType": "ElementaryTypeName",
  9339. "src": "5786:7:10",
  9340. "stateMutability": "nonpayable",
  9341. "typeDescriptions": {
  9342. "typeIdentifier": "t_address",
  9343. "typeString": "address"
  9344. }
  9345. },
  9346. "value": null,
  9347. "visibility": "internal"
  9348. },
  9349. {
  9350. "constant": false,
  9351. "id": 3367,
  9352. "name": "amount",
  9353. "nodeType": "VariableDeclaration",
  9354. "scope": 3406,
  9355. "src": "5803:14:10",
  9356. "stateVariable": false,
  9357. "storageLocation": "default",
  9358. "typeDescriptions": {
  9359. "typeIdentifier": "t_uint256",
  9360. "typeString": "uint256"
  9361. },
  9362. "typeName": {
  9363. "id": 3366,
  9364. "name": "uint256",
  9365. "nodeType": "ElementaryTypeName",
  9366. "src": "5803:7:10",
  9367. "typeDescriptions": {
  9368. "typeIdentifier": "t_uint256",
  9369. "typeString": "uint256"
  9370. }
  9371. },
  9372. "value": null,
  9373. "visibility": "internal"
  9374. }
  9375. ],
  9376. "src": "5785:33:10"
  9377. },
  9378. "returnParameters": {
  9379. "id": 3369,
  9380. "nodeType": "ParameterList",
  9381. "parameters": [],
  9382. "src": "5828:0:10"
  9383. },
  9384. "scope": 3520,
  9385. "src": "5771:302:10",
  9386. "stateMutability": "nonpayable",
  9387. "superFunction": null,
  9388. "visibility": "internal"
  9389. },
  9390. {
  9391. "body": {
  9392. "id": 3448,
  9393. "nodeType": "Block",
  9394. "src": "6448:244:10",
  9395. "statements": [
  9396. {
  9397. "expression": {
  9398. "argumentTypes": null,
  9399. "arguments": [
  9400. {
  9401. "argumentTypes": null,
  9402. "commonType": {
  9403. "typeIdentifier": "t_address",
  9404. "typeString": "address"
  9405. },
  9406. "id": 3418,
  9407. "isConstant": false,
  9408. "isLValue": false,
  9409. "isPure": false,
  9410. "lValueRequested": false,
  9411. "leftExpression": {
  9412. "argumentTypes": null,
  9413. "id": 3414,
  9414. "name": "account",
  9415. "nodeType": "Identifier",
  9416. "overloadedDeclarations": [],
  9417. "referencedDeclaration": 3408,
  9418. "src": "6466:7:10",
  9419. "typeDescriptions": {
  9420. "typeIdentifier": "t_address",
  9421. "typeString": "address"
  9422. }
  9423. },
  9424. "nodeType": "BinaryOperation",
  9425. "operator": "!=",
  9426. "rightExpression": {
  9427. "argumentTypes": null,
  9428. "arguments": [
  9429. {
  9430. "argumentTypes": null,
  9431. "hexValue": "30",
  9432. "id": 3416,
  9433. "isConstant": false,
  9434. "isLValue": false,
  9435. "isPure": true,
  9436. "kind": "number",
  9437. "lValueRequested": false,
  9438. "nodeType": "Literal",
  9439. "src": "6485:1:10",
  9440. "subdenomination": null,
  9441. "typeDescriptions": {
  9442. "typeIdentifier": "t_rational_0_by_1",
  9443. "typeString": "int_const 0"
  9444. },
  9445. "value": "0"
  9446. }
  9447. ],
  9448. "expression": {
  9449. "argumentTypes": [
  9450. {
  9451. "typeIdentifier": "t_rational_0_by_1",
  9452. "typeString": "int_const 0"
  9453. }
  9454. ],
  9455. "id": 3415,
  9456. "isConstant": false,
  9457. "isLValue": false,
  9458. "isPure": true,
  9459. "lValueRequested": false,
  9460. "nodeType": "ElementaryTypeNameExpression",
  9461. "src": "6477:7:10",
  9462. "typeDescriptions": {
  9463. "typeIdentifier": "t_type$_t_address_$",
  9464. "typeString": "type(address)"
  9465. },
  9466. "typeName": "address"
  9467. },
  9468. "id": 3417,
  9469. "isConstant": false,
  9470. "isLValue": false,
  9471. "isPure": true,
  9472. "kind": "typeConversion",
  9473. "lValueRequested": false,
  9474. "names": [],
  9475. "nodeType": "FunctionCall",
  9476. "src": "6477:10:10",
  9477. "typeDescriptions": {
  9478. "typeIdentifier": "t_address_payable",
  9479. "typeString": "address payable"
  9480. }
  9481. },
  9482. "src": "6466:21:10",
  9483. "typeDescriptions": {
  9484. "typeIdentifier": "t_bool",
  9485. "typeString": "bool"
  9486. }
  9487. },
  9488. {
  9489. "argumentTypes": null,
  9490. "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
  9491. "id": 3419,
  9492. "isConstant": false,
  9493. "isLValue": false,
  9494. "isPure": true,
  9495. "kind": "string",
  9496. "lValueRequested": false,
  9497. "nodeType": "Literal",
  9498. "src": "6489:35:10",
  9499. "subdenomination": null,
  9500. "typeDescriptions": {
  9501. "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
  9502. "typeString": "literal_string \"ERC20: burn from the zero address\""
  9503. },
  9504. "value": "ERC20: burn from the zero address"
  9505. }
  9506. ],
  9507. "expression": {
  9508. "argumentTypes": [
  9509. {
  9510. "typeIdentifier": "t_bool",
  9511. "typeString": "bool"
  9512. },
  9513. {
  9514. "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
  9515. "typeString": "literal_string \"ERC20: burn from the zero address\""
  9516. }
  9517. ],
  9518. "id": 3413,
  9519. "name": "require",
  9520. "nodeType": "Identifier",
  9521. "overloadedDeclarations": [
  9522. 3665,
  9523. 3666
  9524. ],
  9525. "referencedDeclaration": 3666,
  9526. "src": "6458:7:10",
  9527. "typeDescriptions": {
  9528. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  9529. "typeString": "function (bool,string memory) pure"
  9530. }
  9531. },
  9532. "id": 3420,
  9533. "isConstant": false,
  9534. "isLValue": false,
  9535. "isPure": false,
  9536. "kind": "functionCall",
  9537. "lValueRequested": false,
  9538. "names": [],
  9539. "nodeType": "FunctionCall",
  9540. "src": "6458:67:10",
  9541. "typeDescriptions": {
  9542. "typeIdentifier": "t_tuple$__$",
  9543. "typeString": "tuple()"
  9544. }
  9545. },
  9546. "id": 3421,
  9547. "nodeType": "ExpressionStatement",
  9548. "src": "6458:67:10"
  9549. },
  9550. {
  9551. "expression": {
  9552. "argumentTypes": null,
  9553. "id": 3427,
  9554. "isConstant": false,
  9555. "isLValue": false,
  9556. "isPure": false,
  9557. "lValueRequested": false,
  9558. "leftHandSide": {
  9559. "argumentTypes": null,
  9560. "id": 3422,
  9561. "name": "_totalSupply",
  9562. "nodeType": "Identifier",
  9563. "overloadedDeclarations": [],
  9564. "referencedDeclaration": 3144,
  9565. "src": "6536:12:10",
  9566. "typeDescriptions": {
  9567. "typeIdentifier": "t_uint256",
  9568. "typeString": "uint256"
  9569. }
  9570. },
  9571. "nodeType": "Assignment",
  9572. "operator": "=",
  9573. "rightHandSide": {
  9574. "argumentTypes": null,
  9575. "arguments": [
  9576. {
  9577. "argumentTypes": null,
  9578. "id": 3425,
  9579. "name": "value",
  9580. "nodeType": "Identifier",
  9581. "overloadedDeclarations": [],
  9582. "referencedDeclaration": 3410,
  9583. "src": "6568:5:10",
  9584. "typeDescriptions": {
  9585. "typeIdentifier": "t_uint256",
  9586. "typeString": "uint256"
  9587. }
  9588. }
  9589. ],
  9590. "expression": {
  9591. "argumentTypes": [
  9592. {
  9593. "typeIdentifier": "t_uint256",
  9594. "typeString": "uint256"
  9595. }
  9596. ],
  9597. "expression": {
  9598. "argumentTypes": null,
  9599. "id": 3423,
  9600. "name": "_totalSupply",
  9601. "nodeType": "Identifier",
  9602. "overloadedDeclarations": [],
  9603. "referencedDeclaration": 3144,
  9604. "src": "6551:12:10",
  9605. "typeDescriptions": {
  9606. "typeIdentifier": "t_uint256",
  9607. "typeString": "uint256"
  9608. }
  9609. },
  9610. "id": 3424,
  9611. "isConstant": false,
  9612. "isLValue": false,
  9613. "isPure": false,
  9614. "lValueRequested": false,
  9615. "memberName": "sub",
  9616. "nodeType": "MemberAccess",
  9617. "referencedDeclaration": 3042,
  9618. "src": "6551:16:10",
  9619. "typeDescriptions": {
  9620. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  9621. "typeString": "function (uint256,uint256) pure returns (uint256)"
  9622. }
  9623. },
  9624. "id": 3426,
  9625. "isConstant": false,
  9626. "isLValue": false,
  9627. "isPure": false,
  9628. "kind": "functionCall",
  9629. "lValueRequested": false,
  9630. "names": [],
  9631. "nodeType": "FunctionCall",
  9632. "src": "6551:23:10",
  9633. "typeDescriptions": {
  9634. "typeIdentifier": "t_uint256",
  9635. "typeString": "uint256"
  9636. }
  9637. },
  9638. "src": "6536:38:10",
  9639. "typeDescriptions": {
  9640. "typeIdentifier": "t_uint256",
  9641. "typeString": "uint256"
  9642. }
  9643. },
  9644. "id": 3428,
  9645. "nodeType": "ExpressionStatement",
  9646. "src": "6536:38:10"
  9647. },
  9648. {
  9649. "expression": {
  9650. "argumentTypes": null,
  9651. "id": 3438,
  9652. "isConstant": false,
  9653. "isLValue": false,
  9654. "isPure": false,
  9655. "lValueRequested": false,
  9656. "leftHandSide": {
  9657. "argumentTypes": null,
  9658. "baseExpression": {
  9659. "argumentTypes": null,
  9660. "id": 3429,
  9661. "name": "_balances",
  9662. "nodeType": "Identifier",
  9663. "overloadedDeclarations": [],
  9664. "referencedDeclaration": 3136,
  9665. "src": "6584:9:10",
  9666. "typeDescriptions": {
  9667. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  9668. "typeString": "mapping(address => uint256)"
  9669. }
  9670. },
  9671. "id": 3431,
  9672. "indexExpression": {
  9673. "argumentTypes": null,
  9674. "id": 3430,
  9675. "name": "account",
  9676. "nodeType": "Identifier",
  9677. "overloadedDeclarations": [],
  9678. "referencedDeclaration": 3408,
  9679. "src": "6594:7:10",
  9680. "typeDescriptions": {
  9681. "typeIdentifier": "t_address",
  9682. "typeString": "address"
  9683. }
  9684. },
  9685. "isConstant": false,
  9686. "isLValue": true,
  9687. "isPure": false,
  9688. "lValueRequested": true,
  9689. "nodeType": "IndexAccess",
  9690. "src": "6584:18:10",
  9691. "typeDescriptions": {
  9692. "typeIdentifier": "t_uint256",
  9693. "typeString": "uint256"
  9694. }
  9695. },
  9696. "nodeType": "Assignment",
  9697. "operator": "=",
  9698. "rightHandSide": {
  9699. "argumentTypes": null,
  9700. "arguments": [
  9701. {
  9702. "argumentTypes": null,
  9703. "id": 3436,
  9704. "name": "value",
  9705. "nodeType": "Identifier",
  9706. "overloadedDeclarations": [],
  9707. "referencedDeclaration": 3410,
  9708. "src": "6628:5:10",
  9709. "typeDescriptions": {
  9710. "typeIdentifier": "t_uint256",
  9711. "typeString": "uint256"
  9712. }
  9713. }
  9714. ],
  9715. "expression": {
  9716. "argumentTypes": [
  9717. {
  9718. "typeIdentifier": "t_uint256",
  9719. "typeString": "uint256"
  9720. }
  9721. ],
  9722. "expression": {
  9723. "argumentTypes": null,
  9724. "baseExpression": {
  9725. "argumentTypes": null,
  9726. "id": 3432,
  9727. "name": "_balances",
  9728. "nodeType": "Identifier",
  9729. "overloadedDeclarations": [],
  9730. "referencedDeclaration": 3136,
  9731. "src": "6605:9:10",
  9732. "typeDescriptions": {
  9733. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  9734. "typeString": "mapping(address => uint256)"
  9735. }
  9736. },
  9737. "id": 3434,
  9738. "indexExpression": {
  9739. "argumentTypes": null,
  9740. "id": 3433,
  9741. "name": "account",
  9742. "nodeType": "Identifier",
  9743. "overloadedDeclarations": [],
  9744. "referencedDeclaration": 3408,
  9745. "src": "6615:7:10",
  9746. "typeDescriptions": {
  9747. "typeIdentifier": "t_address",
  9748. "typeString": "address"
  9749. }
  9750. },
  9751. "isConstant": false,
  9752. "isLValue": true,
  9753. "isPure": false,
  9754. "lValueRequested": false,
  9755. "nodeType": "IndexAccess",
  9756. "src": "6605:18:10",
  9757. "typeDescriptions": {
  9758. "typeIdentifier": "t_uint256",
  9759. "typeString": "uint256"
  9760. }
  9761. },
  9762. "id": 3435,
  9763. "isConstant": false,
  9764. "isLValue": false,
  9765. "isPure": false,
  9766. "lValueRequested": false,
  9767. "memberName": "sub",
  9768. "nodeType": "MemberAccess",
  9769. "referencedDeclaration": 3042,
  9770. "src": "6605:22:10",
  9771. "typeDescriptions": {
  9772. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  9773. "typeString": "function (uint256,uint256) pure returns (uint256)"
  9774. }
  9775. },
  9776. "id": 3437,
  9777. "isConstant": false,
  9778. "isLValue": false,
  9779. "isPure": false,
  9780. "kind": "functionCall",
  9781. "lValueRequested": false,
  9782. "names": [],
  9783. "nodeType": "FunctionCall",
  9784. "src": "6605:29:10",
  9785. "typeDescriptions": {
  9786. "typeIdentifier": "t_uint256",
  9787. "typeString": "uint256"
  9788. }
  9789. },
  9790. "src": "6584:50:10",
  9791. "typeDescriptions": {
  9792. "typeIdentifier": "t_uint256",
  9793. "typeString": "uint256"
  9794. }
  9795. },
  9796. "id": 3439,
  9797. "nodeType": "ExpressionStatement",
  9798. "src": "6584:50:10"
  9799. },
  9800. {
  9801. "eventCall": {
  9802. "argumentTypes": null,
  9803. "arguments": [
  9804. {
  9805. "argumentTypes": null,
  9806. "id": 3441,
  9807. "name": "account",
  9808. "nodeType": "Identifier",
  9809. "overloadedDeclarations": [],
  9810. "referencedDeclaration": 3408,
  9811. "src": "6658:7:10",
  9812. "typeDescriptions": {
  9813. "typeIdentifier": "t_address",
  9814. "typeString": "address"
  9815. }
  9816. },
  9817. {
  9818. "argumentTypes": null,
  9819. "arguments": [
  9820. {
  9821. "argumentTypes": null,
  9822. "hexValue": "30",
  9823. "id": 3443,
  9824. "isConstant": false,
  9825. "isLValue": false,
  9826. "isPure": true,
  9827. "kind": "number",
  9828. "lValueRequested": false,
  9829. "nodeType": "Literal",
  9830. "src": "6675:1:10",
  9831. "subdenomination": null,
  9832. "typeDescriptions": {
  9833. "typeIdentifier": "t_rational_0_by_1",
  9834. "typeString": "int_const 0"
  9835. },
  9836. "value": "0"
  9837. }
  9838. ],
  9839. "expression": {
  9840. "argumentTypes": [
  9841. {
  9842. "typeIdentifier": "t_rational_0_by_1",
  9843. "typeString": "int_const 0"
  9844. }
  9845. ],
  9846. "id": 3442,
  9847. "isConstant": false,
  9848. "isLValue": false,
  9849. "isPure": true,
  9850. "lValueRequested": false,
  9851. "nodeType": "ElementaryTypeNameExpression",
  9852. "src": "6667:7:10",
  9853. "typeDescriptions": {
  9854. "typeIdentifier": "t_type$_t_address_$",
  9855. "typeString": "type(address)"
  9856. },
  9857. "typeName": "address"
  9858. },
  9859. "id": 3444,
  9860. "isConstant": false,
  9861. "isLValue": false,
  9862. "isPure": true,
  9863. "kind": "typeConversion",
  9864. "lValueRequested": false,
  9865. "names": [],
  9866. "nodeType": "FunctionCall",
  9867. "src": "6667:10:10",
  9868. "typeDescriptions": {
  9869. "typeIdentifier": "t_address_payable",
  9870. "typeString": "address payable"
  9871. }
  9872. },
  9873. {
  9874. "argumentTypes": null,
  9875. "id": 3445,
  9876. "name": "value",
  9877. "nodeType": "Identifier",
  9878. "overloadedDeclarations": [],
  9879. "referencedDeclaration": 3410,
  9880. "src": "6679:5:10",
  9881. "typeDescriptions": {
  9882. "typeIdentifier": "t_uint256",
  9883. "typeString": "uint256"
  9884. }
  9885. }
  9886. ],
  9887. "expression": {
  9888. "argumentTypes": [
  9889. {
  9890. "typeIdentifier": "t_address",
  9891. "typeString": "address"
  9892. },
  9893. {
  9894. "typeIdentifier": "t_address_payable",
  9895. "typeString": "address payable"
  9896. },
  9897. {
  9898. "typeIdentifier": "t_uint256",
  9899. "typeString": "uint256"
  9900. }
  9901. ],
  9902. "id": 3440,
  9903. "name": "Transfer",
  9904. "nodeType": "Identifier",
  9905. "overloadedDeclarations": [],
  9906. "referencedDeclaration": 3638,
  9907. "src": "6649:8:10",
  9908. "typeDescriptions": {
  9909. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  9910. "typeString": "function (address,address,uint256)"
  9911. }
  9912. },
  9913. "id": 3446,
  9914. "isConstant": false,
  9915. "isLValue": false,
  9916. "isPure": false,
  9917. "kind": "functionCall",
  9918. "lValueRequested": false,
  9919. "names": [],
  9920. "nodeType": "FunctionCall",
  9921. "src": "6649:36:10",
  9922. "typeDescriptions": {
  9923. "typeIdentifier": "t_tuple$__$",
  9924. "typeString": "tuple()"
  9925. }
  9926. },
  9927. "id": 3447,
  9928. "nodeType": "EmitStatement",
  9929. "src": "6644:41:10"
  9930. }
  9931. ]
  9932. },
  9933. "documentation": "@dev Destoys `amount` tokens from `account`, reducing the\ntotal supply.\n * Emits a `Transfer` event with `to` set to the zero address.\n * Requirements\n * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.",
  9934. "id": 3449,
  9935. "implemented": true,
  9936. "kind": "function",
  9937. "modifiers": [],
  9938. "name": "_burn",
  9939. "nodeType": "FunctionDefinition",
  9940. "parameters": {
  9941. "id": 3411,
  9942. "nodeType": "ParameterList",
  9943. "parameters": [
  9944. {
  9945. "constant": false,
  9946. "id": 3408,
  9947. "name": "account",
  9948. "nodeType": "VariableDeclaration",
  9949. "scope": 3449,
  9950. "src": "6407:15:10",
  9951. "stateVariable": false,
  9952. "storageLocation": "default",
  9953. "typeDescriptions": {
  9954. "typeIdentifier": "t_address",
  9955. "typeString": "address"
  9956. },
  9957. "typeName": {
  9958. "id": 3407,
  9959. "name": "address",
  9960. "nodeType": "ElementaryTypeName",
  9961. "src": "6407:7:10",
  9962. "stateMutability": "nonpayable",
  9963. "typeDescriptions": {
  9964. "typeIdentifier": "t_address",
  9965. "typeString": "address"
  9966. }
  9967. },
  9968. "value": null,
  9969. "visibility": "internal"
  9970. },
  9971. {
  9972. "constant": false,
  9973. "id": 3410,
  9974. "name": "value",
  9975. "nodeType": "VariableDeclaration",
  9976. "scope": 3449,
  9977. "src": "6424:13:10",
  9978. "stateVariable": false,
  9979. "storageLocation": "default",
  9980. "typeDescriptions": {
  9981. "typeIdentifier": "t_uint256",
  9982. "typeString": "uint256"
  9983. },
  9984. "typeName": {
  9985. "id": 3409,
  9986. "name": "uint256",
  9987. "nodeType": "ElementaryTypeName",
  9988. "src": "6424:7:10",
  9989. "typeDescriptions": {
  9990. "typeIdentifier": "t_uint256",
  9991. "typeString": "uint256"
  9992. }
  9993. },
  9994. "value": null,
  9995. "visibility": "internal"
  9996. }
  9997. ],
  9998. "src": "6406:32:10"
  9999. },
  10000. "returnParameters": {
  10001. "id": 3412,
  10002. "nodeType": "ParameterList",
  10003. "parameters": [],
  10004. "src": "6448:0:10"
  10005. },
  10006. "scope": 3520,
  10007. "src": "6392:300:10",
  10008. "stateMutability": "nonpayable",
  10009. "superFunction": null,
  10010. "visibility": "internal"
  10011. },
  10012. {
  10013. "body": {
  10014. "id": 3490,
  10015. "nodeType": "Block",
  10016. "src": "7191:255:10",
  10017. "statements": [
  10018. {
  10019. "expression": {
  10020. "argumentTypes": null,
  10021. "arguments": [
  10022. {
  10023. "argumentTypes": null,
  10024. "commonType": {
  10025. "typeIdentifier": "t_address",
  10026. "typeString": "address"
  10027. },
  10028. "id": 3463,
  10029. "isConstant": false,
  10030. "isLValue": false,
  10031. "isPure": false,
  10032. "lValueRequested": false,
  10033. "leftExpression": {
  10034. "argumentTypes": null,
  10035. "id": 3459,
  10036. "name": "owner",
  10037. "nodeType": "Identifier",
  10038. "overloadedDeclarations": [],
  10039. "referencedDeclaration": 3451,
  10040. "src": "7209:5:10",
  10041. "typeDescriptions": {
  10042. "typeIdentifier": "t_address",
  10043. "typeString": "address"
  10044. }
  10045. },
  10046. "nodeType": "BinaryOperation",
  10047. "operator": "!=",
  10048. "rightExpression": {
  10049. "argumentTypes": null,
  10050. "arguments": [
  10051. {
  10052. "argumentTypes": null,
  10053. "hexValue": "30",
  10054. "id": 3461,
  10055. "isConstant": false,
  10056. "isLValue": false,
  10057. "isPure": true,
  10058. "kind": "number",
  10059. "lValueRequested": false,
  10060. "nodeType": "Literal",
  10061. "src": "7226:1:10",
  10062. "subdenomination": null,
  10063. "typeDescriptions": {
  10064. "typeIdentifier": "t_rational_0_by_1",
  10065. "typeString": "int_const 0"
  10066. },
  10067. "value": "0"
  10068. }
  10069. ],
  10070. "expression": {
  10071. "argumentTypes": [
  10072. {
  10073. "typeIdentifier": "t_rational_0_by_1",
  10074. "typeString": "int_const 0"
  10075. }
  10076. ],
  10077. "id": 3460,
  10078. "isConstant": false,
  10079. "isLValue": false,
  10080. "isPure": true,
  10081. "lValueRequested": false,
  10082. "nodeType": "ElementaryTypeNameExpression",
  10083. "src": "7218:7:10",
  10084. "typeDescriptions": {
  10085. "typeIdentifier": "t_type$_t_address_$",
  10086. "typeString": "type(address)"
  10087. },
  10088. "typeName": "address"
  10089. },
  10090. "id": 3462,
  10091. "isConstant": false,
  10092. "isLValue": false,
  10093. "isPure": true,
  10094. "kind": "typeConversion",
  10095. "lValueRequested": false,
  10096. "names": [],
  10097. "nodeType": "FunctionCall",
  10098. "src": "7218:10:10",
  10099. "typeDescriptions": {
  10100. "typeIdentifier": "t_address_payable",
  10101. "typeString": "address payable"
  10102. }
  10103. },
  10104. "src": "7209:19:10",
  10105. "typeDescriptions": {
  10106. "typeIdentifier": "t_bool",
  10107. "typeString": "bool"
  10108. }
  10109. },
  10110. {
  10111. "argumentTypes": null,
  10112. "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
  10113. "id": 3464,
  10114. "isConstant": false,
  10115. "isLValue": false,
  10116. "isPure": true,
  10117. "kind": "string",
  10118. "lValueRequested": false,
  10119. "nodeType": "Literal",
  10120. "src": "7230:38:10",
  10121. "subdenomination": null,
  10122. "typeDescriptions": {
  10123. "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
  10124. "typeString": "literal_string \"ERC20: approve from the zero address\""
  10125. },
  10126. "value": "ERC20: approve from the zero address"
  10127. }
  10128. ],
  10129. "expression": {
  10130. "argumentTypes": [
  10131. {
  10132. "typeIdentifier": "t_bool",
  10133. "typeString": "bool"
  10134. },
  10135. {
  10136. "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
  10137. "typeString": "literal_string \"ERC20: approve from the zero address\""
  10138. }
  10139. ],
  10140. "id": 3458,
  10141. "name": "require",
  10142. "nodeType": "Identifier",
  10143. "overloadedDeclarations": [
  10144. 3665,
  10145. 3666
  10146. ],
  10147. "referencedDeclaration": 3666,
  10148. "src": "7201:7:10",
  10149. "typeDescriptions": {
  10150. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  10151. "typeString": "function (bool,string memory) pure"
  10152. }
  10153. },
  10154. "id": 3465,
  10155. "isConstant": false,
  10156. "isLValue": false,
  10157. "isPure": false,
  10158. "kind": "functionCall",
  10159. "lValueRequested": false,
  10160. "names": [],
  10161. "nodeType": "FunctionCall",
  10162. "src": "7201:68:10",
  10163. "typeDescriptions": {
  10164. "typeIdentifier": "t_tuple$__$",
  10165. "typeString": "tuple()"
  10166. }
  10167. },
  10168. "id": 3466,
  10169. "nodeType": "ExpressionStatement",
  10170. "src": "7201:68:10"
  10171. },
  10172. {
  10173. "expression": {
  10174. "argumentTypes": null,
  10175. "arguments": [
  10176. {
  10177. "argumentTypes": null,
  10178. "commonType": {
  10179. "typeIdentifier": "t_address",
  10180. "typeString": "address"
  10181. },
  10182. "id": 3472,
  10183. "isConstant": false,
  10184. "isLValue": false,
  10185. "isPure": false,
  10186. "lValueRequested": false,
  10187. "leftExpression": {
  10188. "argumentTypes": null,
  10189. "id": 3468,
  10190. "name": "spender",
  10191. "nodeType": "Identifier",
  10192. "overloadedDeclarations": [],
  10193. "referencedDeclaration": 3453,
  10194. "src": "7287:7:10",
  10195. "typeDescriptions": {
  10196. "typeIdentifier": "t_address",
  10197. "typeString": "address"
  10198. }
  10199. },
  10200. "nodeType": "BinaryOperation",
  10201. "operator": "!=",
  10202. "rightExpression": {
  10203. "argumentTypes": null,
  10204. "arguments": [
  10205. {
  10206. "argumentTypes": null,
  10207. "hexValue": "30",
  10208. "id": 3470,
  10209. "isConstant": false,
  10210. "isLValue": false,
  10211. "isPure": true,
  10212. "kind": "number",
  10213. "lValueRequested": false,
  10214. "nodeType": "Literal",
  10215. "src": "7306:1:10",
  10216. "subdenomination": null,
  10217. "typeDescriptions": {
  10218. "typeIdentifier": "t_rational_0_by_1",
  10219. "typeString": "int_const 0"
  10220. },
  10221. "value": "0"
  10222. }
  10223. ],
  10224. "expression": {
  10225. "argumentTypes": [
  10226. {
  10227. "typeIdentifier": "t_rational_0_by_1",
  10228. "typeString": "int_const 0"
  10229. }
  10230. ],
  10231. "id": 3469,
  10232. "isConstant": false,
  10233. "isLValue": false,
  10234. "isPure": true,
  10235. "lValueRequested": false,
  10236. "nodeType": "ElementaryTypeNameExpression",
  10237. "src": "7298:7:10",
  10238. "typeDescriptions": {
  10239. "typeIdentifier": "t_type$_t_address_$",
  10240. "typeString": "type(address)"
  10241. },
  10242. "typeName": "address"
  10243. },
  10244. "id": 3471,
  10245. "isConstant": false,
  10246. "isLValue": false,
  10247. "isPure": true,
  10248. "kind": "typeConversion",
  10249. "lValueRequested": false,
  10250. "names": [],
  10251. "nodeType": "FunctionCall",
  10252. "src": "7298:10:10",
  10253. "typeDescriptions": {
  10254. "typeIdentifier": "t_address_payable",
  10255. "typeString": "address payable"
  10256. }
  10257. },
  10258. "src": "7287:21:10",
  10259. "typeDescriptions": {
  10260. "typeIdentifier": "t_bool",
  10261. "typeString": "bool"
  10262. }
  10263. },
  10264. {
  10265. "argumentTypes": null,
  10266. "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
  10267. "id": 3473,
  10268. "isConstant": false,
  10269. "isLValue": false,
  10270. "isPure": true,
  10271. "kind": "string",
  10272. "lValueRequested": false,
  10273. "nodeType": "Literal",
  10274. "src": "7310:36:10",
  10275. "subdenomination": null,
  10276. "typeDescriptions": {
  10277. "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
  10278. "typeString": "literal_string \"ERC20: approve to the zero address\""
  10279. },
  10280. "value": "ERC20: approve to the zero address"
  10281. }
  10282. ],
  10283. "expression": {
  10284. "argumentTypes": [
  10285. {
  10286. "typeIdentifier": "t_bool",
  10287. "typeString": "bool"
  10288. },
  10289. {
  10290. "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
  10291. "typeString": "literal_string \"ERC20: approve to the zero address\""
  10292. }
  10293. ],
  10294. "id": 3467,
  10295. "name": "require",
  10296. "nodeType": "Identifier",
  10297. "overloadedDeclarations": [
  10298. 3665,
  10299. 3666
  10300. ],
  10301. "referencedDeclaration": 3666,
  10302. "src": "7279:7:10",
  10303. "typeDescriptions": {
  10304. "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
  10305. "typeString": "function (bool,string memory) pure"
  10306. }
  10307. },
  10308. "id": 3474,
  10309. "isConstant": false,
  10310. "isLValue": false,
  10311. "isPure": false,
  10312. "kind": "functionCall",
  10313. "lValueRequested": false,
  10314. "names": [],
  10315. "nodeType": "FunctionCall",
  10316. "src": "7279:68:10",
  10317. "typeDescriptions": {
  10318. "typeIdentifier": "t_tuple$__$",
  10319. "typeString": "tuple()"
  10320. }
  10321. },
  10322. "id": 3475,
  10323. "nodeType": "ExpressionStatement",
  10324. "src": "7279:68:10"
  10325. },
  10326. {
  10327. "expression": {
  10328. "argumentTypes": null,
  10329. "id": 3482,
  10330. "isConstant": false,
  10331. "isLValue": false,
  10332. "isPure": false,
  10333. "lValueRequested": false,
  10334. "leftHandSide": {
  10335. "argumentTypes": null,
  10336. "baseExpression": {
  10337. "argumentTypes": null,
  10338. "baseExpression": {
  10339. "argumentTypes": null,
  10340. "id": 3476,
  10341. "name": "_allowances",
  10342. "nodeType": "Identifier",
  10343. "overloadedDeclarations": [],
  10344. "referencedDeclaration": 3142,
  10345. "src": "7358:11:10",
  10346. "typeDescriptions": {
  10347. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  10348. "typeString": "mapping(address => mapping(address => uint256))"
  10349. }
  10350. },
  10351. "id": 3479,
  10352. "indexExpression": {
  10353. "argumentTypes": null,
  10354. "id": 3477,
  10355. "name": "owner",
  10356. "nodeType": "Identifier",
  10357. "overloadedDeclarations": [],
  10358. "referencedDeclaration": 3451,
  10359. "src": "7370:5:10",
  10360. "typeDescriptions": {
  10361. "typeIdentifier": "t_address",
  10362. "typeString": "address"
  10363. }
  10364. },
  10365. "isConstant": false,
  10366. "isLValue": true,
  10367. "isPure": false,
  10368. "lValueRequested": false,
  10369. "nodeType": "IndexAccess",
  10370. "src": "7358:18:10",
  10371. "typeDescriptions": {
  10372. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  10373. "typeString": "mapping(address => uint256)"
  10374. }
  10375. },
  10376. "id": 3480,
  10377. "indexExpression": {
  10378. "argumentTypes": null,
  10379. "id": 3478,
  10380. "name": "spender",
  10381. "nodeType": "Identifier",
  10382. "overloadedDeclarations": [],
  10383. "referencedDeclaration": 3453,
  10384. "src": "7377:7:10",
  10385. "typeDescriptions": {
  10386. "typeIdentifier": "t_address",
  10387. "typeString": "address"
  10388. }
  10389. },
  10390. "isConstant": false,
  10391. "isLValue": true,
  10392. "isPure": false,
  10393. "lValueRequested": true,
  10394. "nodeType": "IndexAccess",
  10395. "src": "7358:27:10",
  10396. "typeDescriptions": {
  10397. "typeIdentifier": "t_uint256",
  10398. "typeString": "uint256"
  10399. }
  10400. },
  10401. "nodeType": "Assignment",
  10402. "operator": "=",
  10403. "rightHandSide": {
  10404. "argumentTypes": null,
  10405. "id": 3481,
  10406. "name": "value",
  10407. "nodeType": "Identifier",
  10408. "overloadedDeclarations": [],
  10409. "referencedDeclaration": 3455,
  10410. "src": "7388:5:10",
  10411. "typeDescriptions": {
  10412. "typeIdentifier": "t_uint256",
  10413. "typeString": "uint256"
  10414. }
  10415. },
  10416. "src": "7358:35:10",
  10417. "typeDescriptions": {
  10418. "typeIdentifier": "t_uint256",
  10419. "typeString": "uint256"
  10420. }
  10421. },
  10422. "id": 3483,
  10423. "nodeType": "ExpressionStatement",
  10424. "src": "7358:35:10"
  10425. },
  10426. {
  10427. "eventCall": {
  10428. "argumentTypes": null,
  10429. "arguments": [
  10430. {
  10431. "argumentTypes": null,
  10432. "id": 3485,
  10433. "name": "owner",
  10434. "nodeType": "Identifier",
  10435. "overloadedDeclarations": [],
  10436. "referencedDeclaration": 3451,
  10437. "src": "7417:5:10",
  10438. "typeDescriptions": {
  10439. "typeIdentifier": "t_address",
  10440. "typeString": "address"
  10441. }
  10442. },
  10443. {
  10444. "argumentTypes": null,
  10445. "id": 3486,
  10446. "name": "spender",
  10447. "nodeType": "Identifier",
  10448. "overloadedDeclarations": [],
  10449. "referencedDeclaration": 3453,
  10450. "src": "7424:7:10",
  10451. "typeDescriptions": {
  10452. "typeIdentifier": "t_address",
  10453. "typeString": "address"
  10454. }
  10455. },
  10456. {
  10457. "argumentTypes": null,
  10458. "id": 3487,
  10459. "name": "value",
  10460. "nodeType": "Identifier",
  10461. "overloadedDeclarations": [],
  10462. "referencedDeclaration": 3455,
  10463. "src": "7433:5:10",
  10464. "typeDescriptions": {
  10465. "typeIdentifier": "t_uint256",
  10466. "typeString": "uint256"
  10467. }
  10468. }
  10469. ],
  10470. "expression": {
  10471. "argumentTypes": [
  10472. {
  10473. "typeIdentifier": "t_address",
  10474. "typeString": "address"
  10475. },
  10476. {
  10477. "typeIdentifier": "t_address",
  10478. "typeString": "address"
  10479. },
  10480. {
  10481. "typeIdentifier": "t_uint256",
  10482. "typeString": "uint256"
  10483. }
  10484. ],
  10485. "id": 3484,
  10486. "name": "Approval",
  10487. "nodeType": "Identifier",
  10488. "overloadedDeclarations": [],
  10489. "referencedDeclaration": 3646,
  10490. "src": "7408:8:10",
  10491. "typeDescriptions": {
  10492. "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  10493. "typeString": "function (address,address,uint256)"
  10494. }
  10495. },
  10496. "id": 3488,
  10497. "isConstant": false,
  10498. "isLValue": false,
  10499. "isPure": false,
  10500. "kind": "functionCall",
  10501. "lValueRequested": false,
  10502. "names": [],
  10503. "nodeType": "FunctionCall",
  10504. "src": "7408:31:10",
  10505. "typeDescriptions": {
  10506. "typeIdentifier": "t_tuple$__$",
  10507. "typeString": "tuple()"
  10508. }
  10509. },
  10510. "id": 3489,
  10511. "nodeType": "EmitStatement",
  10512. "src": "7403:36:10"
  10513. }
  10514. ]
  10515. },
  10516. "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n * Emits an `Approval` event.\n * Requirements:\n * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.",
  10517. "id": 3491,
  10518. "implemented": true,
  10519. "kind": "function",
  10520. "modifiers": [],
  10521. "name": "_approve",
  10522. "nodeType": "FunctionDefinition",
  10523. "parameters": {
  10524. "id": 3456,
  10525. "nodeType": "ParameterList",
  10526. "parameters": [
  10527. {
  10528. "constant": false,
  10529. "id": 3451,
  10530. "name": "owner",
  10531. "nodeType": "VariableDeclaration",
  10532. "scope": 3491,
  10533. "src": "7135:13:10",
  10534. "stateVariable": false,
  10535. "storageLocation": "default",
  10536. "typeDescriptions": {
  10537. "typeIdentifier": "t_address",
  10538. "typeString": "address"
  10539. },
  10540. "typeName": {
  10541. "id": 3450,
  10542. "name": "address",
  10543. "nodeType": "ElementaryTypeName",
  10544. "src": "7135:7:10",
  10545. "stateMutability": "nonpayable",
  10546. "typeDescriptions": {
  10547. "typeIdentifier": "t_address",
  10548. "typeString": "address"
  10549. }
  10550. },
  10551. "value": null,
  10552. "visibility": "internal"
  10553. },
  10554. {
  10555. "constant": false,
  10556. "id": 3453,
  10557. "name": "spender",
  10558. "nodeType": "VariableDeclaration",
  10559. "scope": 3491,
  10560. "src": "7150:15:10",
  10561. "stateVariable": false,
  10562. "storageLocation": "default",
  10563. "typeDescriptions": {
  10564. "typeIdentifier": "t_address",
  10565. "typeString": "address"
  10566. },
  10567. "typeName": {
  10568. "id": 3452,
  10569. "name": "address",
  10570. "nodeType": "ElementaryTypeName",
  10571. "src": "7150:7:10",
  10572. "stateMutability": "nonpayable",
  10573. "typeDescriptions": {
  10574. "typeIdentifier": "t_address",
  10575. "typeString": "address"
  10576. }
  10577. },
  10578. "value": null,
  10579. "visibility": "internal"
  10580. },
  10581. {
  10582. "constant": false,
  10583. "id": 3455,
  10584. "name": "value",
  10585. "nodeType": "VariableDeclaration",
  10586. "scope": 3491,
  10587. "src": "7167:13:10",
  10588. "stateVariable": false,
  10589. "storageLocation": "default",
  10590. "typeDescriptions": {
  10591. "typeIdentifier": "t_uint256",
  10592. "typeString": "uint256"
  10593. },
  10594. "typeName": {
  10595. "id": 3454,
  10596. "name": "uint256",
  10597. "nodeType": "ElementaryTypeName",
  10598. "src": "7167:7:10",
  10599. "typeDescriptions": {
  10600. "typeIdentifier": "t_uint256",
  10601. "typeString": "uint256"
  10602. }
  10603. },
  10604. "value": null,
  10605. "visibility": "internal"
  10606. }
  10607. ],
  10608. "src": "7134:47:10"
  10609. },
  10610. "returnParameters": {
  10611. "id": 3457,
  10612. "nodeType": "ParameterList",
  10613. "parameters": [],
  10614. "src": "7191:0:10"
  10615. },
  10616. "scope": 3520,
  10617. "src": "7117:329:10",
  10618. "stateMutability": "nonpayable",
  10619. "superFunction": null,
  10620. "visibility": "internal"
  10621. },
  10622. {
  10623. "body": {
  10624. "id": 3518,
  10625. "nodeType": "Block",
  10626. "src": "7684:124:10",
  10627. "statements": [
  10628. {
  10629. "expression": {
  10630. "argumentTypes": null,
  10631. "arguments": [
  10632. {
  10633. "argumentTypes": null,
  10634. "id": 3499,
  10635. "name": "account",
  10636. "nodeType": "Identifier",
  10637. "overloadedDeclarations": [],
  10638. "referencedDeclaration": 3493,
  10639. "src": "7700:7:10",
  10640. "typeDescriptions": {
  10641. "typeIdentifier": "t_address",
  10642. "typeString": "address"
  10643. }
  10644. },
  10645. {
  10646. "argumentTypes": null,
  10647. "id": 3500,
  10648. "name": "amount",
  10649. "nodeType": "Identifier",
  10650. "overloadedDeclarations": [],
  10651. "referencedDeclaration": 3495,
  10652. "src": "7709:6:10",
  10653. "typeDescriptions": {
  10654. "typeIdentifier": "t_uint256",
  10655. "typeString": "uint256"
  10656. }
  10657. }
  10658. ],
  10659. "expression": {
  10660. "argumentTypes": [
  10661. {
  10662. "typeIdentifier": "t_address",
  10663. "typeString": "address"
  10664. },
  10665. {
  10666. "typeIdentifier": "t_uint256",
  10667. "typeString": "uint256"
  10668. }
  10669. ],
  10670. "id": 3498,
  10671. "name": "_burn",
  10672. "nodeType": "Identifier",
  10673. "overloadedDeclarations": [],
  10674. "referencedDeclaration": 3449,
  10675. "src": "7694:5:10",
  10676. "typeDescriptions": {
  10677. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
  10678. "typeString": "function (address,uint256)"
  10679. }
  10680. },
  10681. "id": 3501,
  10682. "isConstant": false,
  10683. "isLValue": false,
  10684. "isPure": false,
  10685. "kind": "functionCall",
  10686. "lValueRequested": false,
  10687. "names": [],
  10688. "nodeType": "FunctionCall",
  10689. "src": "7694:22:10",
  10690. "typeDescriptions": {
  10691. "typeIdentifier": "t_tuple$__$",
  10692. "typeString": "tuple()"
  10693. }
  10694. },
  10695. "id": 3502,
  10696. "nodeType": "ExpressionStatement",
  10697. "src": "7694:22:10"
  10698. },
  10699. {
  10700. "expression": {
  10701. "argumentTypes": null,
  10702. "arguments": [
  10703. {
  10704. "argumentTypes": null,
  10705. "id": 3504,
  10706. "name": "account",
  10707. "nodeType": "Identifier",
  10708. "overloadedDeclarations": [],
  10709. "referencedDeclaration": 3493,
  10710. "src": "7735:7:10",
  10711. "typeDescriptions": {
  10712. "typeIdentifier": "t_address",
  10713. "typeString": "address"
  10714. }
  10715. },
  10716. {
  10717. "argumentTypes": null,
  10718. "expression": {
  10719. "argumentTypes": null,
  10720. "id": 3505,
  10721. "name": "msg",
  10722. "nodeType": "Identifier",
  10723. "overloadedDeclarations": [],
  10724. "referencedDeclaration": 3662,
  10725. "src": "7744:3:10",
  10726. "typeDescriptions": {
  10727. "typeIdentifier": "t_magic_message",
  10728. "typeString": "msg"
  10729. }
  10730. },
  10731. "id": 3506,
  10732. "isConstant": false,
  10733. "isLValue": false,
  10734. "isPure": false,
  10735. "lValueRequested": false,
  10736. "memberName": "sender",
  10737. "nodeType": "MemberAccess",
  10738. "referencedDeclaration": null,
  10739. "src": "7744:10:10",
  10740. "typeDescriptions": {
  10741. "typeIdentifier": "t_address_payable",
  10742. "typeString": "address payable"
  10743. }
  10744. },
  10745. {
  10746. "argumentTypes": null,
  10747. "arguments": [
  10748. {
  10749. "argumentTypes": null,
  10750. "id": 3514,
  10751. "name": "amount",
  10752. "nodeType": "Identifier",
  10753. "overloadedDeclarations": [],
  10754. "referencedDeclaration": 3495,
  10755. "src": "7793:6:10",
  10756. "typeDescriptions": {
  10757. "typeIdentifier": "t_uint256",
  10758. "typeString": "uint256"
  10759. }
  10760. }
  10761. ],
  10762. "expression": {
  10763. "argumentTypes": [
  10764. {
  10765. "typeIdentifier": "t_uint256",
  10766. "typeString": "uint256"
  10767. }
  10768. ],
  10769. "expression": {
  10770. "argumentTypes": null,
  10771. "baseExpression": {
  10772. "argumentTypes": null,
  10773. "baseExpression": {
  10774. "argumentTypes": null,
  10775. "id": 3507,
  10776. "name": "_allowances",
  10777. "nodeType": "Identifier",
  10778. "overloadedDeclarations": [],
  10779. "referencedDeclaration": 3142,
  10780. "src": "7756:11:10",
  10781. "typeDescriptions": {
  10782. "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
  10783. "typeString": "mapping(address => mapping(address => uint256))"
  10784. }
  10785. },
  10786. "id": 3509,
  10787. "indexExpression": {
  10788. "argumentTypes": null,
  10789. "id": 3508,
  10790. "name": "account",
  10791. "nodeType": "Identifier",
  10792. "overloadedDeclarations": [],
  10793. "referencedDeclaration": 3493,
  10794. "src": "7768:7:10",
  10795. "typeDescriptions": {
  10796. "typeIdentifier": "t_address",
  10797. "typeString": "address"
  10798. }
  10799. },
  10800. "isConstant": false,
  10801. "isLValue": true,
  10802. "isPure": false,
  10803. "lValueRequested": false,
  10804. "nodeType": "IndexAccess",
  10805. "src": "7756:20:10",
  10806. "typeDescriptions": {
  10807. "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
  10808. "typeString": "mapping(address => uint256)"
  10809. }
  10810. },
  10811. "id": 3512,
  10812. "indexExpression": {
  10813. "argumentTypes": null,
  10814. "expression": {
  10815. "argumentTypes": null,
  10816. "id": 3510,
  10817. "name": "msg",
  10818. "nodeType": "Identifier",
  10819. "overloadedDeclarations": [],
  10820. "referencedDeclaration": 3662,
  10821. "src": "7777:3:10",
  10822. "typeDescriptions": {
  10823. "typeIdentifier": "t_magic_message",
  10824. "typeString": "msg"
  10825. }
  10826. },
  10827. "id": 3511,
  10828. "isConstant": false,
  10829. "isLValue": false,
  10830. "isPure": false,
  10831. "lValueRequested": false,
  10832. "memberName": "sender",
  10833. "nodeType": "MemberAccess",
  10834. "referencedDeclaration": null,
  10835. "src": "7777:10:10",
  10836. "typeDescriptions": {
  10837. "typeIdentifier": "t_address_payable",
  10838. "typeString": "address payable"
  10839. }
  10840. },
  10841. "isConstant": false,
  10842. "isLValue": true,
  10843. "isPure": false,
  10844. "lValueRequested": false,
  10845. "nodeType": "IndexAccess",
  10846. "src": "7756:32:10",
  10847. "typeDescriptions": {
  10848. "typeIdentifier": "t_uint256",
  10849. "typeString": "uint256"
  10850. }
  10851. },
  10852. "id": 3513,
  10853. "isConstant": false,
  10854. "isLValue": false,
  10855. "isPure": false,
  10856. "lValueRequested": false,
  10857. "memberName": "sub",
  10858. "nodeType": "MemberAccess",
  10859. "referencedDeclaration": 3042,
  10860. "src": "7756:36:10",
  10861. "typeDescriptions": {
  10862. "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
  10863. "typeString": "function (uint256,uint256) pure returns (uint256)"
  10864. }
  10865. },
  10866. "id": 3515,
  10867. "isConstant": false,
  10868. "isLValue": false,
  10869. "isPure": false,
  10870. "kind": "functionCall",
  10871. "lValueRequested": false,
  10872. "names": [],
  10873. "nodeType": "FunctionCall",
  10874. "src": "7756:44:10",
  10875. "typeDescriptions": {
  10876. "typeIdentifier": "t_uint256",
  10877. "typeString": "uint256"
  10878. }
  10879. }
  10880. ],
  10881. "expression": {
  10882. "argumentTypes": [
  10883. {
  10884. "typeIdentifier": "t_address",
  10885. "typeString": "address"
  10886. },
  10887. {
  10888. "typeIdentifier": "t_address_payable",
  10889. "typeString": "address payable"
  10890. },
  10891. {
  10892. "typeIdentifier": "t_uint256",
  10893. "typeString": "uint256"
  10894. }
  10895. ],
  10896. "id": 3503,
  10897. "name": "_approve",
  10898. "nodeType": "Identifier",
  10899. "overloadedDeclarations": [],
  10900. "referencedDeclaration": 3491,
  10901. "src": "7726:8:10",
  10902. "typeDescriptions": {
  10903. "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
  10904. "typeString": "function (address,address,uint256)"
  10905. }
  10906. },
  10907. "id": 3516,
  10908. "isConstant": false,
  10909. "isLValue": false,
  10910. "isPure": false,
  10911. "kind": "functionCall",
  10912. "lValueRequested": false,
  10913. "names": [],
  10914. "nodeType": "FunctionCall",
  10915. "src": "7726:75:10",
  10916. "typeDescriptions": {
  10917. "typeIdentifier": "t_tuple$__$",
  10918. "typeString": "tuple()"
  10919. }
  10920. },
  10921. "id": 3517,
  10922. "nodeType": "ExpressionStatement",
  10923. "src": "7726:75:10"
  10924. }
  10925. ]
  10926. },
  10927. "documentation": "@dev Destoys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n * See `_burn` and `_approve`.",
  10928. "id": 3519,
  10929. "implemented": true,
  10930. "kind": "function",
  10931. "modifiers": [],
  10932. "name": "_burnFrom",
  10933. "nodeType": "FunctionDefinition",
  10934. "parameters": {
  10935. "id": 3496,
  10936. "nodeType": "ParameterList",
  10937. "parameters": [
  10938. {
  10939. "constant": false,
  10940. "id": 3493,
  10941. "name": "account",
  10942. "nodeType": "VariableDeclaration",
  10943. "scope": 3519,
  10944. "src": "7642:15:10",
  10945. "stateVariable": false,
  10946. "storageLocation": "default",
  10947. "typeDescriptions": {
  10948. "typeIdentifier": "t_address",
  10949. "typeString": "address"
  10950. },
  10951. "typeName": {
  10952. "id": 3492,
  10953. "name": "address",
  10954. "nodeType": "ElementaryTypeName",
  10955. "src": "7642:7:10",
  10956. "stateMutability": "nonpayable",
  10957. "typeDescriptions": {
  10958. "typeIdentifier": "t_address",
  10959. "typeString": "address"
  10960. }
  10961. },
  10962. "value": null,
  10963. "visibility": "internal"
  10964. },
  10965. {
  10966. "constant": false,
  10967. "id": 3495,
  10968. "name": "amount",
  10969. "nodeType": "VariableDeclaration",
  10970. "scope": 3519,
  10971. "src": "7659:14:10",
  10972. "stateVariable": false,
  10973. "storageLocation": "default",
  10974. "typeDescriptions": {
  10975. "typeIdentifier": "t_uint256",
  10976. "typeString": "uint256"
  10977. },
  10978. "typeName": {
  10979. "id": 3494,
  10980. "name": "uint256",
  10981. "nodeType": "ElementaryTypeName",
  10982. "src": "7659:7:10",
  10983. "typeDescriptions": {
  10984. "typeIdentifier": "t_uint256",
  10985. "typeString": "uint256"
  10986. }
  10987. },
  10988. "value": null,
  10989. "visibility": "internal"
  10990. }
  10991. ],
  10992. "src": "7641:33:10"
  10993. },
  10994. "returnParameters": {
  10995. "id": 3497,
  10996. "nodeType": "ParameterList",
  10997. "parameters": [],
  10998. "src": "7684:0:10"
  10999. },
  11000. "scope": 3520,
  11001. "src": "7623:185:10",
  11002. "stateMutability": "nonpayable",
  11003. "superFunction": null,
  11004. "visibility": "internal"
  11005. }
  11006. ],
  11007. "scope": 3521,
  11008. "src": "1232:6578:10"
  11009. }
  11010. ],
  11011. "src": "0:7811:10"
  11012. },
  11013. "compiler": {
  11014. "name": "solc",
  11015. "version": "0.5.2+commit.1df8f40c.Emscripten.clang"
  11016. },
  11017. "networks": {},
  11018. "schemaVersion": "3.0.16",
  11019. "updatedAt": "2019-10-23T07:58:23.286Z",
  11020. "devdoc": {
  11021. "details": "Implementation of the `IERC20` interface. * This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using `_mint`. For a generic mechanism see `ERC20Mintable`. * *For a detailed writeup see our guide [How to implement supply mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. * Additionally, an `Approval` event is emitted on calls to `transferFrom`. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` functions have been added to mitigate the well-known issues around setting allowances. See `IERC20.approve`.",
  11022. "methods": {
  11023. "allowance(address,address)": {
  11024. "details": "See `IERC20.allowance`."
  11025. },
  11026. "approve(address,uint256)": {
  11027. "details": "See `IERC20.approve`. * Requirements: * - `spender` cannot be the zero address."
  11028. },
  11029. "balanceOf(address)": {
  11030. "details": "See `IERC20.balanceOf`."
  11031. },
  11032. "decreaseAllowance(address,uint256)": {
  11033. "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to `approve` that can be used as a mitigation for problems described in `IERC20.approve`. * Emits an `Approval` event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
  11034. },
  11035. "increaseAllowance(address,uint256)": {
  11036. "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to `approve` that can be used as a mitigation for problems described in `IERC20.approve`. * Emits an `Approval` event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address."
  11037. },
  11038. "totalSupply()": {
  11039. "details": "See `IERC20.totalSupply`."
  11040. },
  11041. "transfer(address,uint256)": {
  11042. "details": "See `IERC20.transfer`. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
  11043. },
  11044. "transferFrom(address,address,uint256)": {
  11045. "details": "See `IERC20.transferFrom`. * Emits an `Approval` event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of `ERC20`; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `value`. - the caller must have allowance for `sender`'s tokens of at least `amount`."
  11046. }
  11047. }
  11048. },
  11049. "userdoc": {
  11050. "methods": {}
  11051. }
  11052. }