solc-0.8.35 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d via-ir-low-runs

9687 bytes

60806040526004361015610011575f80fd5b5f3560e01c8063018a2c371461026457806301ffc9a71461025f57806306fdde031461025a578063081812fc14610255578063095ea7b314610250578063109695231461024b57806318160ddd1461024657806318e20a381461024157806323b872dd1461023c5780632f745c591461023757806334918dfd146102325780633ccfd60b1461022d57806342842e0e146102285780634f6ccce71461022357806355f804b31461021e578063571dff3b14610219578063607e20e3146102145780636352211e1461020f5780636c0360eb1461020a57806370a0823114610205578063715018a6146102005780637a3f451e146101fb5780637d17fcbe146101f65780638da5cb5b146101f157806395d89b41146101ec578063a22cb465146101e7578063a723533e146101e2578063b0f67427146101dd578063b88d4fde146101d8578063bb8a16bd146101d3578063c87b56dd146101ce578063cb774d47146101c9578063e36d6498146101c4578063e985e9c5146101bf578063e9866550146101ba578063eb8d2444146101b55763f2fde38b146101b0575f80fd5b611361565b61133f565b611277565b611227565b61120a565b6111ed565b6111ba565b61119d565b61113d565b6110e7565b611028565b610f5c565b610eb7565b610e8f565b610e58565b610e36565b610ded565b610d4d565b610cbb565b610c9d565b610c0b565b610a63565b610982565b6108f6565b6108cd565b61087d565b610841565b610793565b61076a565b610713565b6106f6565b610609565b610456565b6103fa565b610320565b6102a8565b346102925760203660031901126102925760043561028d60018060a01b03600a54163314611436565b601055005b5f80fd5b6001600160e01b031981160361029257565b34610292576020366003190112610292576004356102c581610296565b63ffffffff60e01b165f525f602052602060ff60405f2054166040519015158152f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061031d9281815201906102e8565b90565b34610292575f366003190112610292576040515f60065461034081610a91565b80845290600181169081156103d65750600114610378575b610374836103688185038261055a565b6040519182918261030c565b0390f35b60065f9081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f939250905b8082106103bc57509091508101602001610368610358565b9192600181602092548385880101520191019092916103a4565b60ff191660208086019190915291151560051b840190910191506103689050610358565b34610292576020366003190112610292576020610418600435611481565b6040516001600160a01b039091168152f35b600435906001600160a01b038216820361029257565b602435906001600160a01b038216820361029257565b346102925760403660031901126102925761046f61042a565b60243561047b816116f8565b916001600160a01b0380841690821681146104d7576104b0936104ab91339081149182156104b2575b5050611503565b611b0c565b005b6104d09250906104c46104c9926116b1565b6116e3565b5460ff1690565b5f806104a4565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761055557604052565b610526565b601f909101601f19168101906001600160401b0382119082101761055557604052565b6001600160401b03811161055557601f01601f191660200190565b9291926105a48261057d565b916105b2604051938461055a565b829481845281830111610292578281602093845f960137010152565b602060031982011261029257600435906001600160401b03821161029257806023830112156102925781602461031d93600401359101610598565b3461029257610617366105ce565b61062c60018060a01b03600a54163314611436565b80516001600160401b038111610555576106508161064b600b54610a91565b61158d565b602091601f821160011461068e5761067e925f9183610683575b50508160011b915f199060031b1c19161790565b600b55005b015190505f8061066a565b600b5f52601f198216925f5160206125975f395f51905f52915f5b8581106106de575083600195106106c6575b505050811b01600b55005b01515f1960f88460031b161c191690555f80806106bb565b919260206001819286850151815501940192016106a9565b34610292575f366003190112610292576020600254604051908152f35b34610292575f366003190112610292576020601054604051908152f35b6060906003190112610292576004356001600160a01b038116810361029257906024356001600160a01b0381168103610292579060443590565b34610292576104b061077b36610730565b9161078e6107898433611b60565b61164b565b611c7e565b34610292576040366003190112610292576107ac61042a565b6024359060018060a01b03165f52600160205260405f2081815411156107f157610374916107d991612138565b90549060031b1c604051918291829190602083019252565b60405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608490fd5b34610292575f3660031901126102925761086660018060a01b03600a54163314611436565b600f5460ff80821615169060ff191617600f555f80f35b34610292575f366003190112610292576108a260018060a01b03600a54163314611436565b5f808080478181156108c4575b3390f1156108b957005b6040513d5f823e3d90fd5b506108fc6108af565b34610292576104b06108de36610730565b90604051926108ee60208561055a565b5f845261196b565b3461029257602036600319011261029257600435806002541115610932576109206103749161214d565b50546040519081529081906020820190565b60405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608490fd5b3461029257610990366105ce565b6109a560018060a01b03600a54163314611436565b80516001600160401b038111610555576109c9816109c4600954610a91565b6115ec565b602091601f82116001146109fb576109f6925f91836106835750508160011b915f199060031b1c19161790565b600955005b60095f52601f198216925f5160206125775f395f51905f52915f5b858110610a4b57508360019510610a33575b505050811b01600955005b01515f1960f88460031b161c191690555f8080610a28565b91926020600181928685015181550194019201610a16565b34610292575f36600319011261029257602060405160148152f35b634e487b7160e01b5f525f60045260245ffd5b90600182811c92168015610abf575b6020831014610aab57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610aa0565b604051905f8260095491610adc83610a91565b8083529260018116908115610b4e5750600114610b02575b610b009250038361055a565b565b5060095f90815290915f5160206125775f395f51905f525b818310610b32575050906020610b0092820101610af4565b6020919350806001915483858901015201910190918492610b1a565b60209250610b0094915060ff191682840152151560051b820101610af4565b9060405191825f825492610b8084610a91565b8084529360018116908115610be95750600114610ba5575b50610b009250038361055a565b90505f9291925260205f20905f915b818310610bcd575050906020610b00928201015f610b98565b6020919350806001915483858901015201910190918492610bb4565b905060209250610b0094915060ff191682840152151560051b8201015f610b98565b34610292575f366003190112610292576040515f600b54610c2b81610a91565b80845290600181169081156103d65750600114610c5257610374836103688185038261055a565b600b5f9081525f5160206125975f395f51905f52939250905b808210610c8357509091508101602001610368610358565b919260018160209254838588010152019101909291610c6b565b346102925760203660031901126102925760206104186004356116f8565b34610292575f366003190112610292576040515f600954610cdb81610a91565b80845290600181169081156103d65750600114610d0257610374836103688185038261055a565b60095f9081525f5160206125775f395f51905f52939250905b808210610d3357509091508101602001610368610358565b919260018160209254838588010152019101909291610d1b565b34610292576020366003190112610292576001600160a01b03610d6e61042a565b168015610d95575f52600160205261037460405f2054604051918291829190602083019252565b60405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608490fd5b34610292575f36600319011261029257600a545f6001600160a01b038216610e16338214611436565b5f5160206125375f395f51905f528280a36001600160a01b031916600a55005b34610292575f36600319011261029257602060405167011c37937e0800008152f35b34610292575f36600319011261029257610e7d60018060a01b03600a54163314611436565b610e89600d54156117a4565b43600c55005b34610292575f36600319011261029257600a546040516001600160a01b039091168152602090f35b34610292575f366003190112610292576040515f600754610ed781610a91565b80845290600181169081156103d65750600114610efe57610374836103688185038261055a565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b808210610f4257509091508101602001610368610358565b919260018160209254838588010152019101909291610f2a565b3461029257604036600319011261029257610f7561042a565b6024358015158103610292576001600160a01b03821691338314610fe75781610fa4610fb5926104c4336116b1565b9060ff801983541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b60405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606490fd5b60203660031901126102925760043561104b611046600f5460ff1690565b6117f0565b611058601482111561183c565b61107161106782600254611dad565b600e541015611892565b61108561107d82611dc1565b3410156118ef565b5f5b8181106110c057600c5415806110a7575b61109e57005b6104b043600c55565b50600254600e5414806110985750601054421015611098565b600190600254600e5481106110d7575b5001611087565b6110e19033611e36565b5f6110d0565b34610292575f3660031901126102925761110c60018060a01b03600a54163314611436565b6002545f5b601e811061111b57005b808201908183116111385761113260019233611e36565b01611111565b61193b565b346102925760803660031901126102925761115661042a565b61115e610440565b6064359190604435906001600160401b0384116102925736602385011215610292576111976104b0943690602481600401359101610598565b9261196b565b34610292575f366003190112610292576020600e54604051908152f35b34610292576020366003190112610292576103746111d96004356119a9565b6040519182916020835260208301906102e8565b34610292575f366003190112610292576020600d54604051908152f35b34610292575f366003190112610292576020600c54604051908152f35b3461029257604036600319011261029257602060ff61126b61124761042a565b61124f610440565b6001600160a01b039091165f90815260058552604090206116e3565b54166040519015158152f35b34610292575f36600319011261029257611293600d54156117a4565b600c5480156112fb576112ad6112b291600e549040611aa0565b600d55565b60ff6112c0600c54436120ca565b116112dd575b600d5480156112d157005b6112ad6104b091611d55565b6112f66112ad6112ec43611abe565b40600e5490611aa0565b6112c6565b606460405162461bcd60e51b815260206004820152602060248201527f5374617274696e6720696e64657820626c6f636b206d757374206265207365746044820152fd5b34610292575f36600319011261029257602060ff600f54166040519015158152f35b346102925760203660031901126102925761137a61042a565b600a54906113926001600160a01b0383163314611436565b6001600160a01b03811680156113e2576104b0926001600160a01b03165f5160206125375f395f51905f525f80a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b1561143d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61148a81612296565b156114a9575f908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608490fd5b1561150a57565b60405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608490fd5b916115899183549060031b91821b915f19901b19161790565b9055565b90601f821161159a575050565b8082116115a5575050565b600b5f5260205f206020601f830160051c92106115e4575b81601f9101920160051c03905f5b8281106115d757505050565b5f828201556001016115cb565b5f91506115bd565b90601f82116115f9575050565b808211611604575050565b60095f5260205f206020601f830160051c9210611643575b81601f9101920160051c03905f5b82811061163657505050565b5f8282015560010161162a565b5f915061161c565b1561165257565b60405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608490fd5b6001600160a01b03165f90815260056020526040902090565b6001600160a01b03165f90815260016020526040902090565b9060018060a01b03165f5260205260405f2090565b6040519061170760608361055a565b602982527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460208301526832b73a103a37b5b2b760b91b60408301525f52600360205260405f205490811561177c57505f1981019081116111385761176b9061214d565b50600101546001600160a01b031690565b60405162461bcd60e51b8152602060048201529081906117a09060248301906102e8565b0390fd5b156117ab57565b60405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606490fd5b156117f757565b60405162461bcd60e51b815260206004820152601f60248201527f53616c65206d7573742062652061637469766520746f206d696e7420417065006044820152606490fd5b1561184357565b60405162461bcd60e51b815260206004820152602160248201527f43616e206f6e6c79206d696e7420323020746f6b656e7320617420612074696d6044820152606560f81b6064820152608490fd5b1561189957565b60405162461bcd60e51b815260206004820152602860248201527f507572636861736520776f756c6420657863656564206d617820737570706c79604482015267206f66204170657360c01b6064820152608490fd5b156118f657565b60405162461bcd60e51b815260206004820152601f60248201527f45746865722076616c75652073656e74206973206e6f7420636f7272656374006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b603001908160301161113857565b906001820180921161113857565b91610b009391611992936119826107898433611b60565b61198d838383611c7e565b61225a565b611f67565b805191908290602001825e015f815290565b6119b281612296565b15611a43576119d16119cc825f52600860205260405f2090565b610b6d565b906119da610ac9565b91825115611a3d578051611a205750611a0c91611a126119fc61031d9361200f565b6040519485936020850190611997565b90611997565b03601f19810183528261055a565b61031d915091611a12611a0c936040519485936020850190611997565b91505090565b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b8115611aaa570690565b634e487b7160e01b5f52601260045260245ffd5b5f1981019190821161113857565b5f81815260046020526040812080546001600160a01b03191690556001600160a01b03611af8836116f8565b165f5160206125b75f395f51905f528280a4565b5f82815260046020526040902080546001600160a01b0319166001600160a01b0383811691909117909155611b40836116f8565b6001600160a01b0390921691165f5160206125b75f395f51905f525f80a4565b611b6982612296565b15611bcc57611b77826116f8565b6001600160a01b038281169082168114938415611bae575b50508215611b9c57505090565b61031d9250906104c46104c9926116b1565b611bba91929450611481565b6001600160a01b031614915f80611b8f565b60405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608490fd5b15611c2d57565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b90611c88836116f8565b6001600160a01b03838116929116829003611cfe57611cea90611cd085611ccb60018060a01b03841696611cbd881515611c26565b611cc683611acc565b6116ca565b6122e2565b50611ce385611cde836116ca565b612380565b5084612123565b505f5160206125575f395f51905f525f80a4565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608490fd5b6001810190818111611138578110611d6a5790565b60405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b6044820152606490fd5b90810190818111611138578110611d6a5790565b8067011c37937e080000029067011c37937e08000082048082036111385703611de75790565b60405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608490fd5b90604051611e4560208261055a565b5f81526001600160a01b038316918215611ee357611e6281612296565b611e9f57838161199294611e7c82611cde610b00996116ca565b50611e878383612123565b505f5f5160206125575f395f51905f528180a46121e7565b60405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60207131b2b4bb32b91034b6b83632b6b2b73a32b960711b917f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581520152565b15611f6e57565b60405162461bcd60e51b81526020600482015260326024820152608490611f9760448201611f27565bfd5b5f1981146111385760010190565b90611fb18261057d565b611fbe604051918261055a565b8281528092611fcf601f199161057d565b0190602036910137565b8015611138575f190190565b634e487b7160e01b5f52603260045260245ffd5b90815181101561200a570160200190565b611fe5565b9081156120a9575f82805b61208e575061203161202b82611fa7565b91611abe565b92805b61203d57509150565b61208890612069612059612053600a840661194f565b60ff1690565b60f81b6001600160f81b03191690565b9461208061207682611fd9565b965f1a9185611ff9565b53600a900490565b80612034565b9061209b6120a391611f99565b91600a900490565b8061201a565b90506040516120b960408261055a565b60018152600360fc1b602082015290565b908181116120de5781039081116111385790565b60405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606490fd5b61031d916001600160a01b03169060026123ea565b805482101561200a575f5260205f2001905f90565b60025481101561200a5760025f5260205f209060011b01905f90565b805482101561200a575f5260205f209060011b01905f90565b6001600160a01b03918216815291166020820152604081019190915260806060820181905261031d929101906102e8565b604051906121c260608361055a565b60328252610b0060208301611f27565b90816020910312610292575161031d81610296565b9091813b156122525761221861222693611a12604051938492630a85bd0160e11b60208501525f3360248601612182565b6122206121b3565b91612486565b8051630a85bd0160e11b916001600160e01b03199161224d916020918101820191016121d2565b161490565b505050600190565b92919091823b1561228d5761222693611a1261221892604051948593630a85bd0160e11b60208601523360248601612182565b50505050600190565b5f52600360205260405f2054151590565b805480156122ce575f1901906122bd8282612138565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b906001820190805f528160205260405f2054918215155f14612378575f1983019283116111385783545f19810190811161113857846123729461235f61235061232f612365955f9a612138565b90549060031b1c9261234b846123458388612138565b90611570565b61195d565b9185905f5260205260405f2090565b556122a7565b905f5260205260405f2090565b55600190565b505050505f90565b6001810190825f528160205260405f2054155f146123e3578054600160401b811015610555576123d06123ba826001879401855584612138565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b91906001830192815f528360205260405f205480155f1461246357506040516124128161053a565b828152602081019384528154600160401b8110156105555780600161243a9201845583612169565b91909161245e5761237294600191518355519101555492905f5260205260405f2090565b610a7e565b92935090505f1982019182116111385760019161247f91612169565b5001555f90565b9190823b156124d5575f8161031d948260208195519301915af13d156124cd573d906124b18261057d565b916124bf604051938461055a565b82523d5f602084013e61251a565b60609061251a565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b90919015612526575090565b81511561177c5750805190602001fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db98c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925