solc-0.8.35 0xd86756dbb01e75a11aadacb75c8495759ed92033 via-ir

8495 bytes

6080806040526004361015610012575f80fd5b5f3560e01c90816306a2da3d146111645750806306fdde031461111e578063077f22b7146110fb578063095ea7b3146110825780630c340a241461104e57806318160ddd1461103157806323b872dd14610f3f578063313ce56714610f2457806339a7919f14610ef357806340c10f1914610deb578063430bf08a14610dc3578063456ee28614610d7f5780635d36b19014610c455780635f5a857714610c05578063609350cd14610bcd5780636691cb3d14610baa5780636b96be3914610b6a57806370a0823114610b3f5780637a46a9c514610b225780637d0d66ff14610b0557806395d89b4114610ac35780639d01fc72146105645780639dc29fac1461052a578063a9059cbb146104c7578063baa9c9db14610471578063c2376dff14610458578063c7af335214610423578063cd6dc6871461033e578063d38bfff41461029e578063dd62ed3e1461024e578063e5c4fffe146101fd578063e696393a146101e0578063f51b0fd4146101c55763f9854bfc14610192575f80fd5b346101c15760203660031901126101c15760406101b56101b0611356565b611902565b82519182526020820152f35b5f80fd5b346101c1575f3660031901126101c1576101de33611f1a565b005b346101c1575f3660031901126101c157602060a054604051908152f35b346101c15760203660031901126101c1576060610218611356565b6001600160a01b0381165f908152609d60205260409020549061023a90611d75565b604051918252602082015260016040820152f35b346101c15760403660031901126101c157610267611356565b61026f61136c565b6001600160a01b039182165f908152609b60209081526040808320949093168252928352819020549051908152f35b346101c15760203660031901126101c1576102b7611356565b6102d860018060a01b035f51602061210f5f395f51905f52541633146118b6565b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db8190555f51602061210f5f395f51905f52546001600160a01b0391821691167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d5f80a3005b346101c15760403660031901126101c157610357611356565b61037860018060a01b035f51602061210f5f395f51905f52541633146118b6565b6001600160a01b031680156103e957609c546001600160a01b0381166103ae57602435609f556001600160a01b03191617609c55005b60405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152715a65726f207661756c74206164647265737360701b6044820152606490fd5b346101c1575f3660031901126101c157602060018060a01b035f51602061210f5f395f51905f52541633146040519015158152f35b346101c1575f3660031901126101c1576101de33611d9c565b346101c15760203660031901126101c1576101de61048d611356565b6104ae60018060a01b035f51602061210f5f395f51905f52541633146118b6565b6104c26001600160a01b038216151561145e565b611f1a565b346101c15760403660031901126101c1576104e0611356565b6001600160a01b03811690602435906105069082906105008515156114f4565b33611a6e565b6040519081525f5160206120ef5f395f51905f5260203392a3602060405160018152f35b346101c15760403660031901126101c1576101de610546611356565b61055b60018060a01b03609c54163314611540565b60243590611817565b346101c15760403660031901126101c15761057d611356565b61058561136c565b5f51602061210f5f395f51905f52546001600160a01b031633148015610a3e575b6105af90611401565b6001600160a01b0382169182156109f9576001600160a01b03821680156109b45780841461096f575f81815260a560205260409020546001600160a01b03161580610951575b80610933575b80610915575b156108c457835f5260a260205260ff60405f205416815f5260a260205260ff60405f20541690600581101590816108405780159182156108b7575b82156108a6575b5050156108615760058110159081610840578015918215610854575b821561082f575b5050156107f157836107b16107ac6107a66107b7947f31e39e4bb9df9d4143551c8a3a4798fc19b0854768570ce84d966f6adffd01a3985f5260a160205260405f2054156107e3575b805f5260a160205260405f20546107d5575b6107a061079a6106d08961174a565b966106da8b61174a565b93805f52609d6020526106fa6106f560405f2054968b611599565b61195b565b91805f5260a460205260405f20826001600160601b0360a01b825416179055815f5260a560205260405f20816001600160601b0360a01b825416179055805f5260a260205260405f20600360ff19825416179055805f5260a1602052670de0b6b3a764000060405f20555f52609d6020528860405f2055805f5260a260205260405f20600460ff198254161790555f52609d6020528060405f20556119a1565b916119a1565b906114aa565b926119a1565b611807565b90611a23565b604080516001600160a01b03928316815292909116602083015290a1005b6107de88611f1a565b6106c1565b6107ec87611d9c565b6106af565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420726562617365537461746520746f60501b6044820152606490fd5b909150610840576002148580610666565b634e487b7160e01b5f52602160045260245ffd5b506001811491505f61065f565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c69642072656261736553746174652066726f6d00000000000000006044820152606490fd5b909150610840576002148680610643565b506001811491505f61063c565b60405162461bcd60e51b8152602060048201526024808201527f426c6f636b6564206279206578697374696e67207969656c642064656c6567616044820152633a34b7b760e11b6064820152608490fd5b505f84815260a460205260409020546001600160a01b031615610601565b505f84815260a560205260409020546001600160a01b0316156105fb565b505f81815260a460205260409020546001600160a01b0316156105f5565b60405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742064656c656761746520746f2073656c660000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601b60248201527f5a65726f20746f2061646472657373206e6f7420616c6c6f77656400000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f5a65726f2066726f6d2061646472657373206e6f7420616c6c6f7765640000006044820152606490fd5b50609c5460405163570d8e1d60e01b815290602090829060049082906001600160a01b03165afa8015610ab8576105af915f91610a89575b506001600160a01b0316331490506105a6565b610aab915060203d602011610ab1575b610aa381836113ac565b8101906113e2565b84610a76565b503d610a99565b6040513d5f823e3d90fd5b346101c1575f3660031901126101c157610b01604051610ae46040826113ac565b600481526309e8aa8960e31b602082015260405191829182611382565b0390f35b346101c1575f3660031901126101c1576020609e54604051908152f35b346101c1575f3660031901126101c1576020609f54604051908152f35b346101c15760203660031901126101c1576020610b62610b5d611356565b61174a565b604051908152f35b346101c15760203660031901126101c1576001600160a01b03610b8b611356565b165f5260a5602052602060018060a01b0360405f205416604051908152f35b346101c1575f3660031901126101c1576020633b9aca00609f5404604051908152f35b346101c15760203660031901126101c1576001600160a01b03610bee611356565b165f5260a1602052602060405f2054604051908152f35b346101c15760203660031901126101c1576001600160a01b03610c26611356565b165f5260a4602052602060018060a01b0360405f205416604051908152f35b346101c1575f3660031901126101c1577f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db546001600160a01b03163303610d21573315610cdc575f51602061210f5f395f51905f525433906001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a5f80a3335f51602061210f5f395f51905f5255005b60405162461bcd60e51b815260206004820152601a60248201527f4e657720476f7665726e6f7220697320616464726573732830290000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201526f6d706c6574652074686520636c61696d60801b6064820152608490fd5b346101c15760203660031901126101c1576001600160a01b03610da0611356565b165f5260a260205260ff60405f2054166040516005821015610840576020918152f35b346101c1575f3660031901126101c157609c546040516001600160a01b039091168152602090f35b346101c15760403660031901126101c157610e04611356565b602435610e1c60018060a01b03609c54163314611540565b6001600160a01b038216918215610eae576107b1610e4391610e3d846119a1565b90611a9f565b6001600160801b03610e5782609a54611599565b80609a551015610e7c575f5160206120ef5f395f51905f5260205f92604051908152a3005b60405162461bcd60e51b815260206004820152600a6024820152694d617820737570706c7960b01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606490fd5b346101c15760203660031901126101c157610f1960018060a01b03609c54163314611540565b6101de6004356115a6565b346101c1575f3660031901126101c157602060405160128152f35b346101c15760603660031901126101c157610f58611356565b610f6061136c565b6001600160a01b0381169160443591610f7a8415156114f4565b6001600160a01b0382165f818152609b6020908152604080832033845290915290205490939092838211610ff75781602093610fe5925f5160206120ef5f395f51905f5296885f52609b875260405f2060018060a01b0333165f5287528360405f2091039055611a6e565b604051908152a3602060405160018152f35b60405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b6044820152606490fd5b346101c1575f3660031901126101c1576020609a54604051908152f35b346101c1575f3660031901126101c1575f51602061210f5f395f51905f52546040516001600160a01b039091168152602090f35b346101c15760403660031901126101c15761109b611356565b335f818152609b602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346101c1575f3660031901126101c1576020633b9aca00609e5404604051908152f35b346101c1575f3660031901126101c157610b0160405161113f6040826113ac565b600c81526b27b934b3b4b71022ba3432b960a11b602082015260405191829182611382565b346101c15760203660031901126101c15761117d611356565b5f51602061210f5f395f51905f52546001600160a01b031633149182156112cb575b506111ca7fa4fa89dd14422a509261a2d4d459f93abdc84c6e92c5e7ae5448243713967bd392611401565b6001600160a01b038181165f81815260a460205260409020549092916111f29116151561145e565b5f82815260a460205260409020546001600160a01b0316916107b7906107b161079a61121d8561174a565b926107a061079a61122d8961174a565b92895f52609d60205261124460405f20549461195b565b908a5f5260a560205260405f206001600160601b0360a01b8154169055805f5260a460205260405f206001600160601b0360a01b8154169055805f5260a260205260405f20600160ff198254161790555f52609d6020528660405f2055895f5260a260205260405f20600260ff19825416179055895f52609d6020528060405f20556119a1565b609c5463570d8e1d60e01b8252909250602090839060049082906001600160a01b03165afa918215610ab8577fa4fa89dd14422a509261a2d4d459f93abdc84c6e92c5e7ae5448243713967bd3926111ca915f91611337575b506001600160a01b03163314925061119f565b611350915060203d602011610ab157610aa381836113ac565b84611324565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff8211176113ce57604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126101c157516001600160a01b03811681036101c15790565b1561140857565b60405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74207468652053747261746567697374206f722060448201526723b7bb32b93737b960c11b6064820152608490fd5b1561146557565b60405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000006044820152606490fd5b81810392915f1380158285131691841216176114c257565b634e487b7160e01b5f52601160045260245ffd5b81156114e0570490565b634e487b7160e01b5f52601260045260245ffd5b156114fb57565b60405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f206164647265737300000000000000006044820152606490fd5b1561154757565b60405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865205661756c740000000000000000006044820152606490fd5b919082039182116114c257565b919082018092116114c257565b609a548015611705578181146116bf57506001600160801b038111156116ba57506001600160801b035b80609a556115e060a0548261158c565b609e5490670de0b6b3a76400008202828104670de0b6b3a764000014831517156114c2578161160e91611599565b5f198101919082116114c257611623916114d6565b9182609f558215611675576116707f41645eb819d3011b13f97696a8109d14bfcddfaca7d063ec0564d62a3e25723593604051938493846040919493926060820195825260208201520152565b0390a1565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206368616e676520696e20737570706c7900000000000000006044820152606490fd5b6115d0565b609e54609f54604080519384526020840192909252908201527f41645eb819d3011b13f97696a8109d14bfcddfaca7d063ec0564d62a3e25723591508060608101611670565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420696e637265617365203020737570706c7900000000000000006044820152606490fd5b6001600160a01b0381165f81815260a2602052604090205460ff1691600583101561084057600383146117f557815f52609d60205260405f205490670de0b6b3a7640000820291808304670de0b6b3a764000014901517156114c2576004916117b56117bb92611d75565b906114d6565b92146117c5575090565b5f90815260a560209081526040808320546001600160a01b03168352609d9091529020546117f29161158c565b90565b5090505f52609d60205260405f205490565b600160ff1b81146114c2575f0390565b906001600160a01b03821690811561187157801561186c576020816118546107b15f96610e3d6107ac5f5160206120ef5f395f51905f52976119a1565b61186081609a5461158c565b609a55604051908152a3565b505050565b60405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606490fd5b156118bd57565b60405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f742074686520476f7665726e6f720000000000006044820152606490fd5b9061190c82611d75565b916b033b2e3c9fd0803ce8000000830361193b576001600160a01b03165f908152609d60205260409020549190565b60018060a01b03165f52609d602052633b9aca008060405f205404920490565b609f54908181029181830414901517156114c257670de0b6b3a76400008101908181116114c257670de0b6b3a763ffff019081116114c257670de0b6b3a7640000900490565b6001600160ff1b0381116119b25790565b60405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608490fd5b9190915f83820193841291129080158216911516176114c257565b80611a53575b5080611a325750565b611a49611a4e91611a4460a0546119a1565b611a08565b6120a0565b60a055565b611a49611a6591611a44609e546119a1565b609e555f611a29565b611a9d92611a97611a97610e3d94611a8f6107b195610e3d6107ac876119a1565b9690946119a1565b92611a08565b565b90915f915f9260018060a01b03821694855f5260a260205260ff60405f20541692611ad1611acc8261174a565b6119a1565b5f611adc8483611a08565b12611d3057611a4983611aee92611a08565b9360058110156108405760038103611b6e575050505f85815260a460205260409020546001600160a01b03169050611b316106f583611b2c8461174a565b611599565b91611b53611b3e846119a1565b835f52609d6020526107a060405f20546119a1565b955f52609d60205260405f20555f52609d60205260405f2055565b600403611bd6575050506106f5611ba691855f5260a560205260018060a01b0360405f2054165f52609d60205260405f205490611599565b611bc7611bb2826119a1565b855f52609d6020526107a060405f20546119a1565b935f52609d60205260405f2055565b809692963b8015908115611c9a575b501580611c7a575b80611c66575b611c57575b505f82815260a16020526040902054948515611c49575093670de0b6b3a763ffff1901611c2e575b5f52609d60205260405f2055565b805f5260a1602052670de0b6b3a764000060405f2055611c20565b9450509350611ba69061195b565b611c6090611d9c565b5f611bf8565b50825f5260a160205260405f205415611bf3565b50825f5260a260205260ff60405f20541660058110156108405715611bed565b601791501480611cab575b5f611be5565b50803b67ffffffffffffffff81116113ce57604051611cd4601f8301601f1916602001826113ac565b81815260208101915f83853c5190516001600160e81b03198116919060038210611d11575b50506001600160e81b03191661ef0160f01b14611ca5565b6001600160e81b0319600392830390921b82901b161690505f80611cf9565b60405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606490fd5b6001600160a01b03165f90815260a160205260409020548015611d955790565b50609f5490565b6001600160a01b0381165f81815260a16020526040902054909190611ed557815f5260a260205260ff60405f20541660058110156108405760028114908115611ecc575b5015611e735781611e6a6020927f201ace89ad3f5ab7428b91989f6a50d1998791c7b94a0fa812fd64a57687165e945f52609d84526107b161079a6107ac611e2c60405f20549461174a565b93865f5260a2885260405f20600160ff19825416179055865f5260a18852670de0b6b3a764000060405f2055865f52609d88528460405f20556119a1565b604051908152a1565b60405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79207374616e64617264207265626173696e67206163636f756e74732060448201526a18d85b881bdc1d081bdd5d60aa1b6064820152608490fd5b9050155f611de0565b60405162461bcd60e51b815260206004820152601860248201527f4163636f756e74206d757374206265207265626173696e6700000000000000006044820152606490fd5b611f238161174a565b9060018060a01b031690815f5260a160205260405f20541580159061208c575b1561204757815f5260a260205260ff60405f2054166005811015610840576001811490811561203e575b5015611fe2577f19a249fa2050bac8314ac10e3ad420bd9825574bf750f58810c3c7adfc7b1c6f91611e6a826107b16107ac6107a6611fad60209761195b565b865f5260a2885260405f20600260ff19825416179055865f5260a188525f6040812055865f52609d88528060405f20556119a1565b60405162461bcd60e51b815260206004820152602e60248201527f4f6e6c79207374616e64617264206e6f6e2d7265626173696e67206163636f7560448201526d373a399031b0b71037b83a1034b760911b6064820152608490fd5b9050155f611f6d565b60405162461bcd60e51b815260206004820152601c60248201527f4163636f756e74206d757374206265206e6f6e2d7265626173696e67000000006044820152606490fd5b50815f52609d60205260405f205415611f43565b5f81126120aa5790565b606460405162461bcd60e51b815260206004820152602060248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a