solc-0.8.35 0xdac17f958d2ee523a2206206994597c13d831ec7 optimized-low-runs

5424 bytes

608060405234801561000f575f5ffd5b506004361061017e575f3560e01c806306fdde03146101825780630753c30c146101a0578063095ea7b3146101b55780630e136b19146101c85780630ecb93c0146101ec57806318160ddd146101ff57806323b872dd1461021557806326976e3f1461022857806327e235e314610248578063313ce5671461026757806335390714146102705780633eaaf86b146102795780633f4ba83a1461028257806359bf1abe1461028a5780635c658165146102b55780635c975abb146102df57806370a08231146102f25780638456cb5914610305578063893d20e81461030d5780638da5cb5b1461031d57806395d89b411461032f578063a9059cbb14610337578063c0324c771461034a578063cc872b661461035d578063db006a7514610370578063dd62ed3e14610383578063dd644f7214610396578063e47d60601461039f578063e4997dc5146103c1578063e5b5019a146103d4578063f2fde38b146103dc578063f3bdc228146103ef575b5f5ffd5b61018a610402565b60405161019791906111e8565b60405180910390f35b6101b36101ae366004611233565b61048e565b005b6101b36101c336600461124c565b610501565b600a546101dc90600160a01b900460ff1681565b6040519015158152602001610197565b6101b36101fa366004611233565b6105a0565b610207610607565b604051908152602001610197565b6101b3610223366004611274565b61069b565b600a5461023b906001600160a01b031681565b60405161019791906112ae565b610207610256366004611233565b60026020525f908152604090205481565b61020760095481565b61020760045481565b61020760015481565b6101b3610738565b6101dc610298366004611233565b6001600160a01b03165f9081526006602052604090205460ff1690565b6102076102c33660046112c2565b600560209081525f928352604080842090915290825290205481565b5f546101dc90600160a01b900460ff1681565b610207610300366004611233565b610796565b6101b3610841565b5f546001600160a01b031661023b565b5f5461023b906001600160a01b031681565b61018a6108a6565b6101b361034536600461124c565b6108b3565b6101b36103583660046112f3565b610968565b6101b361036b366004611313565b6109fd565b6101b361037e366004611313565b610ac7565b6102076103913660046112c2565b610b7f565b61020760035481565b6101dc6103ad366004611233565b60066020525f908152604090205460ff1681565b6101b36103cf366004611233565b610c38565b6102075f1981565b6101b36103ea366004611233565b610c9c565b6101b36103fd366004611233565b610cde565b6007805461040f9061132a565b80601f016020809104026020016040519081016040528092919081815260200182805461043b9061132a565b80156104865780601f1061045d57610100808354040283529160200191610486565b820191905f5260205f20905b81548152906001019060200180831161046957829003601f168201915b505050505081565b5f546001600160a01b031633146104a3575f5ffd5b600a80546001600160a01b0383166001600160a81b031990911617600160a01b1790556040517fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e906104f69083906112ae565b60405180910390a150565b604061050e816004611376565b361015610519575f5ffd5b600a54600160a01b900460ff161561059157600a5460405163aee92d3360e01b81526001600160a01b039091169063aee92d339061055f90339087908790600401611389565b5f604051808303815f87803b158015610576575f5ffd5b505af1158015610588573d5f5f3e3d5ffd5b50505050505050565b61059b8383610d95565b505050565b5f546001600160a01b031633146105b5575f5ffd5b6001600160a01b0381165f9081526006602052604090819020805460ff19166001179055517f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc906104f69083906112ae565b600a545f90600160a01b900460ff161561069457600a5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561066b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068f91906113ad565b905090565b5060015490565b5f54600160a01b900460ff16156106b0575f5ffd5b6001600160a01b0383165f9081526006602052604090205460ff16156106d4575f5ffd5b600a54600160a01b900460ff161561072d57600a54604051638b477adb60e01b81523360048201526001600160a01b03858116602483015284811660448301526064820184905290911690638b477adb9060840161055f565b61059b838383610e45565b5f546001600160a01b0316331461074d575f5ffd5b5f54600160a01b900460ff16610761575f5ffd5b5f805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600a545f90600160a01b900460ff161561081f57600a546040516370a0823160e01b81526001600160a01b03909116906370a08231906107da9085906004016112ae565b602060405180830381865afa1580156107f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906113ad565b92915050565b6001600160a01b0382165f90815260026020526040902054610819565b919050565b5f546001600160a01b03163314610856575f5ffd5b5f54600160a01b900460ff161561086b575f5ffd5b5f805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6008805461040f9061132a565b5f54600160a01b900460ff16156108c8575f5ffd5b335f9081526006602052604090205460ff16156108e3575f5ffd5b600a54600160a01b900460ff161561095a57600a5460405163370c4c0560e11b81526001600160a01b0390911690636e18980a9061092990339086908690600401611389565b5f604051808303815f87803b158015610940575f5ffd5b505af1158015610952573d5f5f3e3d5ffd5b505050505050565b6109648282611010565b5050565b5f546001600160a01b0316331461097d575f5ffd5b60148210610989575f5ffd5b60328110610995575f5ffd5b60038290556009546109b3906109ac90600a6114a7565b8290611160565b60048190556003546040517fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e926109f1928252602082015260400190565b60405180910390a15050565b5f546001600160a01b03163314610a12575f5ffd5b600154610a1f8282611376565b11610a28575f5ffd5b5f80546001600160a01b0316815260026020526040902054610a4a8282611376565b11610a53575f5ffd5b5f80546001600160a01b031681526002602052604081208054839290610a7a908490611376565b925050819055508060015f828254610a929190611376565b90915550506040518181527fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a906020016104f6565b5f546001600160a01b03163314610adc575f5ffd5b806001541015610aea575f5ffd5b5f80546001600160a01b0316815260026020526040902054811115610b0d575f5ffd5b8060015f828254610b1e91906114b2565b90915550505f80546001600160a01b031681526002602052604081208054839290610b4a9084906114b2565b90915550506040518181527f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a44906020016104f6565b600a545f90600160a01b900460ff1615610c0e57600a54604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610be3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0791906113ad565b9050610819565b6001600160a01b038084165f90815260056020908152604080832093861683529290522054610c07565b5f546001600160a01b03163314610c4d575f5ffd5b6001600160a01b0381165f9081526006602052604090819020805460ff19169055517fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c906104f69083906112ae565b5f546001600160a01b03163314610cb1575f5ffd5b6001600160a01b03811615610cdb575f80546001600160a01b0319166001600160a01b0383161790555b50565b5f546001600160a01b03163314610cf3575f5ffd5b6001600160a01b0381165f9081526006602052604090205460ff16610d16575f5ffd5b5f610d2082610796565b6001600160a01b0383165f908152600260205260408120819055600180549293508392909190610d519084906114b2565b9091555050604080516001600160a01b0384168152602081018390527f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c691016109f1565b6040610da2816004611376565b361015610dad575f5ffd5b8115801590610ddd5750335f9081526005602090815260408083206001600160a01b038716845290915290205415155b15610de6575f5ffd5b335f8181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6060610e52816004611376565b361015610e5d575f5ffd5b6001600160a01b0384165f908152600560209081526040808320338452909152812054600354909190610e9f9061271090610e99908790611160565b9061119b565b9050600454811115610eb057506004545b5f19821015610ee757610ec382856111af565b6001600160a01b0387165f9081526005602090815260408083203384529091529020555b5f610ef285836111af565b6001600160a01b0388165f90815260026020526040902054909150610f1790866111af565b6001600160a01b038089165f908152600260205260408082209390935590881681522054610f4590826111ca565b6001600160a01b0387165f908152600260205260409020558115610fcd575f80546001600160a01b0316815260026020526040902054610f8590836111ca565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292811692908a16915f5160206115105f395f51905f52910160405180910390a35b856001600160a01b0316876001600160a01b03165f5160206115105f395f51905f5283604051610fff91815260200190565b60405180910390a350505050505050565b604061101d816004611376565b361015611028575f5ffd5b5f611044612710610e996003548661116090919063ffffffff16565b905060045481111561105557506004545b5f61106084836111af565b335f9081526002602052604090205490915061107c90856111af565b335f90815260026020526040808220929092556001600160a01b038716815220546110a790826111ca565b6001600160a01b0386165f90815260026020526040902055811561112c575f80546001600160a01b03168152600260205260409020546110e790836111ca565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292169133915f5160206115105f395f51905f52910160405180910390a35b6040518181526001600160a01b0386169033905f5160206115105f395f51905f529060200160405180910390a35050505050565b5f825f0361116f57505f610819565b5f61117a83856114c5565b90508261118785836114dc565b14611194576111946114fb565b9392505050565b5f806111a783856114dc565b949350505050565b5f828211156111c0576111c06114fb565b61119482846114b2565b5f806111d68385611376565b905083811015611194576111946114fb565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461083c575f5ffd5b5f60208284031215611243575f5ffd5b6111948261121d565b5f5f6040838503121561125d575f5ffd5b6112668361121d565b946020939093013593505050565b5f5f5f60608486031215611286575f5ffd5b61128f8461121d565b925061129d6020850161121d565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b5f5f604083850312156112d3575f5ffd5b6112dc8361121d565b91506112ea6020840161121d565b90509250929050565b5f5f60408385031215611304575f5ffd5b50508035926020909101359150565b5f60208284031215611323575f5ffd5b5035919050565b600181811c9082168061133e57607f821691505b60208210810361135c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561081957610819611362565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f602082840312156113bd575f5ffd5b5051919050565b6001815b60018411156113ff578085048111156113e3576113e3611362565b60018416156113f157908102905b60019390931c9280026113c8565b935093915050565b5f8261141557506001610819565b8161142157505f610819565b816001811461143757600281146114415761145d565b6001915050610819565b60ff84111561145257611452611362565b50506001821b610819565b5060208310610133831016604e8410600b8410161715611480575081810a610819565b61148c5f1984846113c4565b805f190482111561149f5761149f611362565b029392505050565b5f6111948383611407565b8181038181111561081957610819611362565b808202811582820484141761081957610819611362565b5f826114f657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52600160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef