solc-0.8.36-fakeopcode 0xdac17f958d2ee523a2206206994597c13d831ec7 optimized-high-runs

7018 bytes

608060405234801561000f575f5ffd5b50600436106101e7575f3560e01c806370a0823111610109578063db006a751161009e578063e4997dc51161006e578063e4997dc514610498578063e5b5019a146104ab578063f2fde38b146104d2578063f3bdc228146104e5575f5ffd5b8063db006a7514610447578063dd62ed3e1461045a578063dd644f721461046d578063e47d606014610476575f5ffd5b806395d89b41116100d957806395d89b4114610406578063a9059cbb1461040e578063c0324c7714610421578063cc872b6614610434575f5ffd5b806370a08231146103af5780638456cb59146103c2578063893d20e8146103ca5780638da5cb5b146103e7575f5ffd5b806327e235e31161017f5780633f4ba83a1161014f5780633f4ba83a1461032157806359bf1abe146103295780635c658165146103615780635c975abb1461038b575f5ffd5b806327e235e3146102e7578063313ce56714610306578063353907141461030f5780633eaaf86b14610318575f5ffd5b80630ecb93c0116101ba5780630ecb93c01461026657806318160ddd1461027957806323b872dd1461028f57806326976e3f146102a2575f5ffd5b806306fdde03146101eb5780630753c30c14610209578063095ea7b31461021e5780630e136b1914610231575b5f5ffd5b6101f36104f8565b60405161020091906117ae565b60405180910390f35b61021c610217366004611824565b610584565b005b61021c61022c36600461183d565b610638565b600a546102569074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610200565b61021c610274366004611824565b610715565b6102816107b5565b604051908152602001610200565b61021c61029d366004611865565b610874565b600a546102c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6102816102f5366004611824565b60026020525f908152604090205481565b61028160095481565b61028160045481565b61028160015481565b61021c610966565b610256610337366004611824565b73ffffffffffffffffffffffffffffffffffffffff165f9081526006602052604090205460ff1690565b61028161036f36600461189f565b600560209081525f928352604080842090915290825290205481565b5f546102569074010000000000000000000000000000000000000000900460ff1681565b6102816103bd366004611824565b6109fd565b61021c610ae9565b5f5473ffffffffffffffffffffffffffffffffffffffff166102c2565b5f546102c29073ffffffffffffffffffffffffffffffffffffffff1681565b6101f3610b98565b61021c61041c36600461183d565b610ba5565b61021c61042f3660046118d0565b610ca8565b61021c6104423660046118f0565b610d4a565b61021c6104553660046118f0565b610e3b565b61028161046836600461189f565b610f1a565b61028160035481565b610256610484366004611824565b60066020525f908152604090205460ff1681565b61021c6104a6366004611824565b611017565b6102817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b61021c6104e0366004611824565b6110b4565b61021c6104f3366004611824565b611135565b6007805461050590611907565b80601f016020809104026020016040519081016040528092919081815260200182805461053190611907565b801561057c5780601f106105535761010080835404028352916020019161057c565b820191905f5260205f20905b81548152906001019060200180831161055f57829003601f168201915b505050505081565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105a6575f5ffd5b600a805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffff000000000000000000000000000000000000000000909116811774010000000000000000000000000000000000000000179091556040519081527fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e906020015b60405180910390a150565b6040610645816004611985565b361015610650575f5ffd5b600a5474010000000000000000000000000000000000000000900460ff161561070657600a546040517faee92d3300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018590529091169063aee92d33906064015b5f604051808303815f87803b1580156106eb575f5ffd5b505af11580156106fd573d5f5f3e3d5ffd5b50505050505050565b6107108383611220565b505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610737575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81165f8181526006602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc910161062d565b600a545f9074010000000000000000000000000000000000000000900460ff161561086d57600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610844573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108689190611998565b905090565b5060015490565b5f5474010000000000000000000000000000000000000000900460ff161561089a575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff83165f9081526006602052604090205460ff16156108cb575f5ffd5b600a5474010000000000000000000000000000000000000000900460ff161561095b57600a546040517f8b477adb00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff858116602483015284811660448301526064820184905290911690638b477adb906084016106d4565b6107108383836112ea565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610988575f5ffd5b5f5474010000000000000000000000000000000000000000900460ff166109ad575f5ffd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600a545f9074010000000000000000000000000000000000000000900460ff1615610aba57600a546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906370a0823190602401602060405180830381865afa158015610a90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab49190611998565b92915050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020526040902054610ab4565b919050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b0b575f5ffd5b5f5474010000000000000000000000000000000000000000900460ff1615610b31575f5ffd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6008805461050590611907565b5f5474010000000000000000000000000000000000000000900460ff1615610bcb575f5ffd5b335f9081526006602052604090205460ff1615610be6575f5ffd5b600a5474010000000000000000000000000000000000000000900460ff1615610c9a57600a546040517f6e18980a00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301526044820184905290911690636e18980a906064015f604051808303815f87803b158015610c80575f5ffd5b505af1158015610c92573d5f5f3e3d5ffd5b505050505050565b610ca4828261156f565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610cca575f5ffd5b60148210610cd6575f5ffd5b60328110610ce2575f5ffd5b6003829055600954610d0090610cf990600a611ad0565b8290611726565b60048190556003546040517fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e92610d3e928252602082015260400190565b60405180910390a15050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610d6c575f5ffd5b600154610d798282611985565b11610d82575f5ffd5b5f805473ffffffffffffffffffffffffffffffffffffffff16815260026020526040902054610db18282611985565b11610dba575f5ffd5b5f805473ffffffffffffffffffffffffffffffffffffffff1681526002602052604081208054839290610dee908490611985565b925050819055508060015f828254610e069190611985565b90915550506040518181527fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a9060200161062d565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610e5d575f5ffd5b806001541015610e6b575f5ffd5b5f805473ffffffffffffffffffffffffffffffffffffffff16815260026020526040902054811115610e9b575f5ffd5b8060015f828254610eac9190611adb565b90915550505f805473ffffffffffffffffffffffffffffffffffffffff1681526002602052604081208054839290610ee5908490611adb565b90915550506040518181527f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a449060200161062d565b600a545f9074010000000000000000000000000000000000000000900460ff1615610fe057600a546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610fb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd99190611998565b9050610ab4565b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260056020908152604080832093861683529290522054610fd9565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611039575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81165f8181526006602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c910161062d565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146110d6575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff811615611132575f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314611157575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81165f9081526006602052604090205460ff16611187575f5ffd5b5f611191826109fd565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602052604081208190556001805492935083929091906111cf908490611adb565b90915550506040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c69101610d3e565b604061122d816004611985565b361015611238575f5ffd5b81158015906112755750335f90815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205415155b1561127e575f5ffd5b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60606112f7816004611985565b361015611302575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff84165f908152600560209081526040808320338452909152812054600354909190611351906127109061134b908790611726565b90611761565b905060045481111561136257506004545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8210156113c5576113948285611775565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526005602090815260408083203384529091529020555b5f6113d08583611775565b73ffffffffffffffffffffffffffffffffffffffff88165f908152600260205260409020549091506114029086611775565b73ffffffffffffffffffffffffffffffffffffffff8089165f90815260026020526040808220939093559088168152205461143d9082611790565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526002602052604090205581156114ff575f805473ffffffffffffffffffffffffffffffffffffffff168152600260205260409020546114979083611790565b5f805473ffffffffffffffffffffffffffffffffffffffff9081168252600260209081526040808420949094559154925185815292811692908a16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161155e91815260200190565b60405180910390a350505050505050565b604061157c816004611985565b361015611587575f5ffd5b5f6115a361271061134b6003548661172690919063ffffffff16565b90506004548111156115b457506004545b5f6115bf8483611775565b335f908152600260205260409020549091506115db9085611775565b335f908152600260205260408082209290925573ffffffffffffffffffffffffffffffffffffffff8716815220546116139082611790565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602052604090205581156116d2575f805473ffffffffffffffffffffffffffffffffffffffff1681526002602052604090205461166d9083611790565b5f805473ffffffffffffffffffffffffffffffffffffffff9081168252600260209081526040808420949094559154925185815292169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b60405181815273ffffffffffffffffffffffffffffffffffffffff86169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b5f825f0361173557505f610ab4565b5f6117408385611aee565b90508261174d8583611b05565b1461175a5761175a611b3d565b9392505050565b5f8061176d8385611b05565b949350505050565b5f8282111561178657611786611b3d565b61175a8284611adb565b5f8061179c8385611985565b90508381101561175a5761175a611b3d565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ae4575f5ffd5b5f60208284031215611834575f5ffd5b61175a82611801565b5f5f6040838503121561184e575f5ffd5b61185783611801565b946020939093013593505050565b5f5f5f60608486031215611877575f5ffd5b61188084611801565b925061188e60208501611801565b929592945050506040919091013590565b5f5f604083850312156118b0575f5ffd5b6118b983611801565b91506118c760208401611801565b90509250929050565b5f5f604083850312156118e1575f5ffd5b50508035926020909101359150565b5f60208284031215611900575f5ffd5b5035919050565b600181811c9082168061191b57607f821691505b602082108103611952577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ab457610ab4611958565b5f602082840312156119a8575f5ffd5b5051919050565b6001815b60018411156119ea578085048111156119ce576119ce611958565b60018416156119dc57908102905b60019390931c9280026119b3565b935093915050565b5f82611a0057506001610ab4565b81611a0c57505f610ab4565b8160018114611a225760028114611a2c57611a48565b6001915050610ab4565b60ff841115611a3d57611a3d611958565b50506001821b610ab4565b5060208310610133831016604e8410600b8410161715611a6b575081810a610ab4565b611a967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846119af565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611ac857611ac8611958565b029392505050565b5f61175a83836119f2565b81810381811115610ab457610ab4611958565b8082028115828204841417610ab457610ab4611958565b5f82611b38577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd