eigenlayer_contract_deployer/bindings/core/
strategymanager.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use StrategyManager::*;
3
4/**
5
6Generated by the following Solidity interface...
7```solidity
8interface StrategyManager {
9    error CurrentlyPaused();
10    error InputAddressZero();
11    error InvalidNewPausedStatus();
12    error InvalidShortString();
13    error InvalidSignature();
14    error MaxStrategiesExceeded();
15    error OnlyDelegationManager();
16    error OnlyPauser();
17    error OnlyStrategyWhitelister();
18    error OnlyUnpauser();
19    error SharesAmountTooHigh();
20    error SharesAmountZero();
21    error SignatureExpired();
22    error StakerAddressZero();
23    error StrategyNotFound();
24    error StrategyNotWhitelisted();
25    error StringTooLong(string str);
26
27    event BurnableSharesDecreased(address strategy, uint256 shares);
28    event BurnableSharesIncreased(address strategy, uint256 shares);
29    event Deposit(address staker, address strategy, uint256 shares);
30    event Initialized(uint8 version);
31    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
32    event Paused(address indexed account, uint256 newPausedStatus);
33    event StrategyAddedToDepositWhitelist(address strategy);
34    event StrategyRemovedFromDepositWhitelist(address strategy);
35    event StrategyWhitelisterChanged(address previousAddress, address newAddress);
36    event Unpaused(address indexed account, uint256 newPausedStatus);
37
38    constructor(address _delegation, address _pauserRegistry, string _version);
39
40    function DEFAULT_BURN_ADDRESS() external view returns (address);
41    function DEPOSIT_TYPEHASH() external view returns (bytes32);
42    function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
43    function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
44    function burnShares(address strategy) external;
45    function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
46    function delegation() external view returns (address);
47    function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
48    function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
49    function domainSeparator() external view returns (bytes32);
50    function getBurnableShares(address strategy) external view returns (uint256);
51    function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
52    function getStakerStrategyList(address staker) external view returns (address[] memory);
53    function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
54    function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
55    function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
56    function nonces(address signer) external view returns (uint256 nonce);
57    function owner() external view returns (address);
58    function pause(uint256 newPausedStatus) external;
59    function pauseAll() external;
60    function paused(uint8 index) external view returns (bool);
61    function paused() external view returns (uint256);
62    function pauserRegistry() external view returns (address);
63    function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
64    function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
65    function renounceOwnership() external;
66    function setStrategyWhitelister(address newStrategyWhitelister) external;
67    function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
68    function stakerStrategyList(address staker, uint256) external view returns (address strategies);
69    function stakerStrategyListLength(address staker) external view returns (uint256);
70    function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
71    function strategyWhitelister() external view returns (address);
72    function transferOwnership(address newOwner) external;
73    function unpause(uint256 newPausedStatus) external;
74    function version() external view returns (string memory);
75    function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
76}
77```
78
79...which was generated by the following JSON ABI:
80```json
81[
82  {
83    "type": "constructor",
84    "inputs": [
85      {
86        "name": "_delegation",
87        "type": "address",
88        "internalType": "contract IDelegationManager"
89      },
90      {
91        "name": "_pauserRegistry",
92        "type": "address",
93        "internalType": "contract IPauserRegistry"
94      },
95      {
96        "name": "_version",
97        "type": "string",
98        "internalType": "string"
99      }
100    ],
101    "stateMutability": "nonpayable"
102  },
103  {
104    "type": "function",
105    "name": "DEFAULT_BURN_ADDRESS",
106    "inputs": [],
107    "outputs": [
108      {
109        "name": "",
110        "type": "address",
111        "internalType": "address"
112      }
113    ],
114    "stateMutability": "view"
115  },
116  {
117    "type": "function",
118    "name": "DEPOSIT_TYPEHASH",
119    "inputs": [],
120    "outputs": [
121      {
122        "name": "",
123        "type": "bytes32",
124        "internalType": "bytes32"
125      }
126    ],
127    "stateMutability": "view"
128  },
129  {
130    "type": "function",
131    "name": "addShares",
132    "inputs": [
133      {
134        "name": "staker",
135        "type": "address",
136        "internalType": "address"
137      },
138      {
139        "name": "strategy",
140        "type": "address",
141        "internalType": "contract IStrategy"
142      },
143      {
144        "name": "shares",
145        "type": "uint256",
146        "internalType": "uint256"
147      }
148    ],
149    "outputs": [
150      {
151        "name": "",
152        "type": "uint256",
153        "internalType": "uint256"
154      },
155      {
156        "name": "",
157        "type": "uint256",
158        "internalType": "uint256"
159      }
160    ],
161    "stateMutability": "nonpayable"
162  },
163  {
164    "type": "function",
165    "name": "addStrategiesToDepositWhitelist",
166    "inputs": [
167      {
168        "name": "strategiesToWhitelist",
169        "type": "address[]",
170        "internalType": "contract IStrategy[]"
171      }
172    ],
173    "outputs": [],
174    "stateMutability": "nonpayable"
175  },
176  {
177    "type": "function",
178    "name": "burnShares",
179    "inputs": [
180      {
181        "name": "strategy",
182        "type": "address",
183        "internalType": "contract IStrategy"
184      }
185    ],
186    "outputs": [],
187    "stateMutability": "nonpayable"
188  },
189  {
190    "type": "function",
191    "name": "calculateStrategyDepositDigestHash",
192    "inputs": [
193      {
194        "name": "staker",
195        "type": "address",
196        "internalType": "address"
197      },
198      {
199        "name": "strategy",
200        "type": "address",
201        "internalType": "contract IStrategy"
202      },
203      {
204        "name": "token",
205        "type": "address",
206        "internalType": "contract IERC20"
207      },
208      {
209        "name": "amount",
210        "type": "uint256",
211        "internalType": "uint256"
212      },
213      {
214        "name": "nonce",
215        "type": "uint256",
216        "internalType": "uint256"
217      },
218      {
219        "name": "expiry",
220        "type": "uint256",
221        "internalType": "uint256"
222      }
223    ],
224    "outputs": [
225      {
226        "name": "",
227        "type": "bytes32",
228        "internalType": "bytes32"
229      }
230    ],
231    "stateMutability": "view"
232  },
233  {
234    "type": "function",
235    "name": "delegation",
236    "inputs": [],
237    "outputs": [
238      {
239        "name": "",
240        "type": "address",
241        "internalType": "contract IDelegationManager"
242      }
243    ],
244    "stateMutability": "view"
245  },
246  {
247    "type": "function",
248    "name": "depositIntoStrategy",
249    "inputs": [
250      {
251        "name": "strategy",
252        "type": "address",
253        "internalType": "contract IStrategy"
254      },
255      {
256        "name": "token",
257        "type": "address",
258        "internalType": "contract IERC20"
259      },
260      {
261        "name": "amount",
262        "type": "uint256",
263        "internalType": "uint256"
264      }
265    ],
266    "outputs": [
267      {
268        "name": "depositShares",
269        "type": "uint256",
270        "internalType": "uint256"
271      }
272    ],
273    "stateMutability": "nonpayable"
274  },
275  {
276    "type": "function",
277    "name": "depositIntoStrategyWithSignature",
278    "inputs": [
279      {
280        "name": "strategy",
281        "type": "address",
282        "internalType": "contract IStrategy"
283      },
284      {
285        "name": "token",
286        "type": "address",
287        "internalType": "contract IERC20"
288      },
289      {
290        "name": "amount",
291        "type": "uint256",
292        "internalType": "uint256"
293      },
294      {
295        "name": "staker",
296        "type": "address",
297        "internalType": "address"
298      },
299      {
300        "name": "expiry",
301        "type": "uint256",
302        "internalType": "uint256"
303      },
304      {
305        "name": "signature",
306        "type": "bytes",
307        "internalType": "bytes"
308      }
309    ],
310    "outputs": [
311      {
312        "name": "depositShares",
313        "type": "uint256",
314        "internalType": "uint256"
315      }
316    ],
317    "stateMutability": "nonpayable"
318  },
319  {
320    "type": "function",
321    "name": "domainSeparator",
322    "inputs": [],
323    "outputs": [
324      {
325        "name": "",
326        "type": "bytes32",
327        "internalType": "bytes32"
328      }
329    ],
330    "stateMutability": "view"
331  },
332  {
333    "type": "function",
334    "name": "getBurnableShares",
335    "inputs": [
336      {
337        "name": "strategy",
338        "type": "address",
339        "internalType": "contract IStrategy"
340      }
341    ],
342    "outputs": [
343      {
344        "name": "",
345        "type": "uint256",
346        "internalType": "uint256"
347      }
348    ],
349    "stateMutability": "view"
350  },
351  {
352    "type": "function",
353    "name": "getDeposits",
354    "inputs": [
355      {
356        "name": "staker",
357        "type": "address",
358        "internalType": "address"
359      }
360    ],
361    "outputs": [
362      {
363        "name": "",
364        "type": "address[]",
365        "internalType": "contract IStrategy[]"
366      },
367      {
368        "name": "",
369        "type": "uint256[]",
370        "internalType": "uint256[]"
371      }
372    ],
373    "stateMutability": "view"
374  },
375  {
376    "type": "function",
377    "name": "getStakerStrategyList",
378    "inputs": [
379      {
380        "name": "staker",
381        "type": "address",
382        "internalType": "address"
383      }
384    ],
385    "outputs": [
386      {
387        "name": "",
388        "type": "address[]",
389        "internalType": "contract IStrategy[]"
390      }
391    ],
392    "stateMutability": "view"
393  },
394  {
395    "type": "function",
396    "name": "getStrategiesWithBurnableShares",
397    "inputs": [],
398    "outputs": [
399      {
400        "name": "",
401        "type": "address[]",
402        "internalType": "address[]"
403      },
404      {
405        "name": "",
406        "type": "uint256[]",
407        "internalType": "uint256[]"
408      }
409    ],
410    "stateMutability": "view"
411  },
412  {
413    "type": "function",
414    "name": "increaseBurnableShares",
415    "inputs": [
416      {
417        "name": "strategy",
418        "type": "address",
419        "internalType": "contract IStrategy"
420      },
421      {
422        "name": "addedSharesToBurn",
423        "type": "uint256",
424        "internalType": "uint256"
425      }
426    ],
427    "outputs": [],
428    "stateMutability": "nonpayable"
429  },
430  {
431    "type": "function",
432    "name": "initialize",
433    "inputs": [
434      {
435        "name": "initialOwner",
436        "type": "address",
437        "internalType": "address"
438      },
439      {
440        "name": "initialStrategyWhitelister",
441        "type": "address",
442        "internalType": "address"
443      },
444      {
445        "name": "initialPausedStatus",
446        "type": "uint256",
447        "internalType": "uint256"
448      }
449    ],
450    "outputs": [],
451    "stateMutability": "nonpayable"
452  },
453  {
454    "type": "function",
455    "name": "nonces",
456    "inputs": [
457      {
458        "name": "signer",
459        "type": "address",
460        "internalType": "address"
461      }
462    ],
463    "outputs": [
464      {
465        "name": "nonce",
466        "type": "uint256",
467        "internalType": "uint256"
468      }
469    ],
470    "stateMutability": "view"
471  },
472  {
473    "type": "function",
474    "name": "owner",
475    "inputs": [],
476    "outputs": [
477      {
478        "name": "",
479        "type": "address",
480        "internalType": "address"
481      }
482    ],
483    "stateMutability": "view"
484  },
485  {
486    "type": "function",
487    "name": "pause",
488    "inputs": [
489      {
490        "name": "newPausedStatus",
491        "type": "uint256",
492        "internalType": "uint256"
493      }
494    ],
495    "outputs": [],
496    "stateMutability": "nonpayable"
497  },
498  {
499    "type": "function",
500    "name": "pauseAll",
501    "inputs": [],
502    "outputs": [],
503    "stateMutability": "nonpayable"
504  },
505  {
506    "type": "function",
507    "name": "paused",
508    "inputs": [
509      {
510        "name": "index",
511        "type": "uint8",
512        "internalType": "uint8"
513      }
514    ],
515    "outputs": [
516      {
517        "name": "",
518        "type": "bool",
519        "internalType": "bool"
520      }
521    ],
522    "stateMutability": "view"
523  },
524  {
525    "type": "function",
526    "name": "paused",
527    "inputs": [],
528    "outputs": [
529      {
530        "name": "",
531        "type": "uint256",
532        "internalType": "uint256"
533      }
534    ],
535    "stateMutability": "view"
536  },
537  {
538    "type": "function",
539    "name": "pauserRegistry",
540    "inputs": [],
541    "outputs": [
542      {
543        "name": "",
544        "type": "address",
545        "internalType": "contract IPauserRegistry"
546      }
547    ],
548    "stateMutability": "view"
549  },
550  {
551    "type": "function",
552    "name": "removeDepositShares",
553    "inputs": [
554      {
555        "name": "staker",
556        "type": "address",
557        "internalType": "address"
558      },
559      {
560        "name": "strategy",
561        "type": "address",
562        "internalType": "contract IStrategy"
563      },
564      {
565        "name": "depositSharesToRemove",
566        "type": "uint256",
567        "internalType": "uint256"
568      }
569    ],
570    "outputs": [
571      {
572        "name": "",
573        "type": "uint256",
574        "internalType": "uint256"
575      }
576    ],
577    "stateMutability": "nonpayable"
578  },
579  {
580    "type": "function",
581    "name": "removeStrategiesFromDepositWhitelist",
582    "inputs": [
583      {
584        "name": "strategiesToRemoveFromWhitelist",
585        "type": "address[]",
586        "internalType": "contract IStrategy[]"
587      }
588    ],
589    "outputs": [],
590    "stateMutability": "nonpayable"
591  },
592  {
593    "type": "function",
594    "name": "renounceOwnership",
595    "inputs": [],
596    "outputs": [],
597    "stateMutability": "nonpayable"
598  },
599  {
600    "type": "function",
601    "name": "setStrategyWhitelister",
602    "inputs": [
603      {
604        "name": "newStrategyWhitelister",
605        "type": "address",
606        "internalType": "address"
607      }
608    ],
609    "outputs": [],
610    "stateMutability": "nonpayable"
611  },
612  {
613    "type": "function",
614    "name": "stakerDepositShares",
615    "inputs": [
616      {
617        "name": "staker",
618        "type": "address",
619        "internalType": "address"
620      },
621      {
622        "name": "strategy",
623        "type": "address",
624        "internalType": "contract IStrategy"
625      }
626    ],
627    "outputs": [
628      {
629        "name": "shares",
630        "type": "uint256",
631        "internalType": "uint256"
632      }
633    ],
634    "stateMutability": "view"
635  },
636  {
637    "type": "function",
638    "name": "stakerStrategyList",
639    "inputs": [
640      {
641        "name": "staker",
642        "type": "address",
643        "internalType": "address"
644      },
645      {
646        "name": "",
647        "type": "uint256",
648        "internalType": "uint256"
649      }
650    ],
651    "outputs": [
652      {
653        "name": "strategies",
654        "type": "address",
655        "internalType": "contract IStrategy"
656      }
657    ],
658    "stateMutability": "view"
659  },
660  {
661    "type": "function",
662    "name": "stakerStrategyListLength",
663    "inputs": [
664      {
665        "name": "staker",
666        "type": "address",
667        "internalType": "address"
668      }
669    ],
670    "outputs": [
671      {
672        "name": "",
673        "type": "uint256",
674        "internalType": "uint256"
675      }
676    ],
677    "stateMutability": "view"
678  },
679  {
680    "type": "function",
681    "name": "strategyIsWhitelistedForDeposit",
682    "inputs": [
683      {
684        "name": "strategy",
685        "type": "address",
686        "internalType": "contract IStrategy"
687      }
688    ],
689    "outputs": [
690      {
691        "name": "whitelisted",
692        "type": "bool",
693        "internalType": "bool"
694      }
695    ],
696    "stateMutability": "view"
697  },
698  {
699    "type": "function",
700    "name": "strategyWhitelister",
701    "inputs": [],
702    "outputs": [
703      {
704        "name": "",
705        "type": "address",
706        "internalType": "address"
707      }
708    ],
709    "stateMutability": "view"
710  },
711  {
712    "type": "function",
713    "name": "transferOwnership",
714    "inputs": [
715      {
716        "name": "newOwner",
717        "type": "address",
718        "internalType": "address"
719      }
720    ],
721    "outputs": [],
722    "stateMutability": "nonpayable"
723  },
724  {
725    "type": "function",
726    "name": "unpause",
727    "inputs": [
728      {
729        "name": "newPausedStatus",
730        "type": "uint256",
731        "internalType": "uint256"
732      }
733    ],
734    "outputs": [],
735    "stateMutability": "nonpayable"
736  },
737  {
738    "type": "function",
739    "name": "version",
740    "inputs": [],
741    "outputs": [
742      {
743        "name": "",
744        "type": "string",
745        "internalType": "string"
746      }
747    ],
748    "stateMutability": "view"
749  },
750  {
751    "type": "function",
752    "name": "withdrawSharesAsTokens",
753    "inputs": [
754      {
755        "name": "staker",
756        "type": "address",
757        "internalType": "address"
758      },
759      {
760        "name": "strategy",
761        "type": "address",
762        "internalType": "contract IStrategy"
763      },
764      {
765        "name": "token",
766        "type": "address",
767        "internalType": "contract IERC20"
768      },
769      {
770        "name": "shares",
771        "type": "uint256",
772        "internalType": "uint256"
773      }
774    ],
775    "outputs": [],
776    "stateMutability": "nonpayable"
777  },
778  {
779    "type": "event",
780    "name": "BurnableSharesDecreased",
781    "inputs": [
782      {
783        "name": "strategy",
784        "type": "address",
785        "indexed": false,
786        "internalType": "contract IStrategy"
787      },
788      {
789        "name": "shares",
790        "type": "uint256",
791        "indexed": false,
792        "internalType": "uint256"
793      }
794    ],
795    "anonymous": false
796  },
797  {
798    "type": "event",
799    "name": "BurnableSharesIncreased",
800    "inputs": [
801      {
802        "name": "strategy",
803        "type": "address",
804        "indexed": false,
805        "internalType": "contract IStrategy"
806      },
807      {
808        "name": "shares",
809        "type": "uint256",
810        "indexed": false,
811        "internalType": "uint256"
812      }
813    ],
814    "anonymous": false
815  },
816  {
817    "type": "event",
818    "name": "Deposit",
819    "inputs": [
820      {
821        "name": "staker",
822        "type": "address",
823        "indexed": false,
824        "internalType": "address"
825      },
826      {
827        "name": "strategy",
828        "type": "address",
829        "indexed": false,
830        "internalType": "contract IStrategy"
831      },
832      {
833        "name": "shares",
834        "type": "uint256",
835        "indexed": false,
836        "internalType": "uint256"
837      }
838    ],
839    "anonymous": false
840  },
841  {
842    "type": "event",
843    "name": "Initialized",
844    "inputs": [
845      {
846        "name": "version",
847        "type": "uint8",
848        "indexed": false,
849        "internalType": "uint8"
850      }
851    ],
852    "anonymous": false
853  },
854  {
855    "type": "event",
856    "name": "OwnershipTransferred",
857    "inputs": [
858      {
859        "name": "previousOwner",
860        "type": "address",
861        "indexed": true,
862        "internalType": "address"
863      },
864      {
865        "name": "newOwner",
866        "type": "address",
867        "indexed": true,
868        "internalType": "address"
869      }
870    ],
871    "anonymous": false
872  },
873  {
874    "type": "event",
875    "name": "Paused",
876    "inputs": [
877      {
878        "name": "account",
879        "type": "address",
880        "indexed": true,
881        "internalType": "address"
882      },
883      {
884        "name": "newPausedStatus",
885        "type": "uint256",
886        "indexed": false,
887        "internalType": "uint256"
888      }
889    ],
890    "anonymous": false
891  },
892  {
893    "type": "event",
894    "name": "StrategyAddedToDepositWhitelist",
895    "inputs": [
896      {
897        "name": "strategy",
898        "type": "address",
899        "indexed": false,
900        "internalType": "contract IStrategy"
901      }
902    ],
903    "anonymous": false
904  },
905  {
906    "type": "event",
907    "name": "StrategyRemovedFromDepositWhitelist",
908    "inputs": [
909      {
910        "name": "strategy",
911        "type": "address",
912        "indexed": false,
913        "internalType": "contract IStrategy"
914      }
915    ],
916    "anonymous": false
917  },
918  {
919    "type": "event",
920    "name": "StrategyWhitelisterChanged",
921    "inputs": [
922      {
923        "name": "previousAddress",
924        "type": "address",
925        "indexed": false,
926        "internalType": "address"
927      },
928      {
929        "name": "newAddress",
930        "type": "address",
931        "indexed": false,
932        "internalType": "address"
933      }
934    ],
935    "anonymous": false
936  },
937  {
938    "type": "event",
939    "name": "Unpaused",
940    "inputs": [
941      {
942        "name": "account",
943        "type": "address",
944        "indexed": true,
945        "internalType": "address"
946      },
947      {
948        "name": "newPausedStatus",
949        "type": "uint256",
950        "indexed": false,
951        "internalType": "uint256"
952      }
953    ],
954    "anonymous": false
955  },
956  {
957    "type": "error",
958    "name": "CurrentlyPaused",
959    "inputs": []
960  },
961  {
962    "type": "error",
963    "name": "InputAddressZero",
964    "inputs": []
965  },
966  {
967    "type": "error",
968    "name": "InvalidNewPausedStatus",
969    "inputs": []
970  },
971  {
972    "type": "error",
973    "name": "InvalidShortString",
974    "inputs": []
975  },
976  {
977    "type": "error",
978    "name": "InvalidSignature",
979    "inputs": []
980  },
981  {
982    "type": "error",
983    "name": "MaxStrategiesExceeded",
984    "inputs": []
985  },
986  {
987    "type": "error",
988    "name": "OnlyDelegationManager",
989    "inputs": []
990  },
991  {
992    "type": "error",
993    "name": "OnlyPauser",
994    "inputs": []
995  },
996  {
997    "type": "error",
998    "name": "OnlyStrategyWhitelister",
999    "inputs": []
1000  },
1001  {
1002    "type": "error",
1003    "name": "OnlyUnpauser",
1004    "inputs": []
1005  },
1006  {
1007    "type": "error",
1008    "name": "SharesAmountTooHigh",
1009    "inputs": []
1010  },
1011  {
1012    "type": "error",
1013    "name": "SharesAmountZero",
1014    "inputs": []
1015  },
1016  {
1017    "type": "error",
1018    "name": "SignatureExpired",
1019    "inputs": []
1020  },
1021  {
1022    "type": "error",
1023    "name": "StakerAddressZero",
1024    "inputs": []
1025  },
1026  {
1027    "type": "error",
1028    "name": "StrategyNotFound",
1029    "inputs": []
1030  },
1031  {
1032    "type": "error",
1033    "name": "StrategyNotWhitelisted",
1034    "inputs": []
1035  },
1036  {
1037    "type": "error",
1038    "name": "StringTooLong",
1039    "inputs": [
1040      {
1041        "name": "str",
1042        "type": "string",
1043        "internalType": "string"
1044      }
1045    ]
1046  }
1047]
1048```*/
1049#[allow(
1050    non_camel_case_types,
1051    non_snake_case,
1052    clippy::pub_underscore_fields,
1053    clippy::style,
1054    clippy::empty_structs_with_brackets
1055)]
1056pub mod StrategyManager {
1057    use super::*;
1058    use alloy::sol_types as alloy_sol_types;
1059    /// The creation / init bytecode of the contract.
1060    ///
1061    /// ```text
1062    ///0x60e060405234801561000f575f5ffd5b50604051612ef9380380612ef983398101604081905261002e916101d5565b808084846001600160a01b038116610059576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b039081166080521660a0526100748161008a565b60c0525061008290506100d0565b505050610302565b5f5f829050601f815111156100bd578260405163305a27a960e01b81526004016100b491906102aa565b60405180910390fd5b80516100c8826102dc565b179392505050565b5f54610100900460ff16156101375760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100b4565b5f5460ff90811614610186575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116811461019c575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156101cd5781810151838201526020016101b5565b50505f910152565b5f5f5f606084860312156101e7575f5ffd5b83516101f281610188565b602085015190935061020381610188565b60408501519092506001600160401b0381111561021e575f5ffd5b8401601f8101861361022e575f5ffd5b80516001600160401b038111156102475761024761019f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102755761027561019f565b60405281815282820160200188101561028c575f5ffd5b61029d8260208301602086016101b3565b8093505050509250925092565b602081525f82518060208401526102c88160408501602087016101b3565b601f01601f19169190910160400192915050565b805160208083015191908110156102fc575f198160200360031b1b821691505b50919050565b60805160a05160c051612b8e61036b5f395f8181610b6c0152611c2101525f81816104a00152818161075501528181610afe01528181610db301528181611238015261183d01525f81816103800152818161056101528181610bac015261146b0152612b8e5ff3fe608060405234801561000f575f5ffd5b50600436106101d7575f3560e01c80638b8aac3c11610101578063debe1eab1161009a578063debe1eab14610488578063df5cf7231461049b578063e7a050aa146104c2578063f2fde38b146104d5578063f3b4a000146104e8578063f698da25146104f2578063fabc1cbc146104fa578063fd9804231461050d578063fe243a1714610520575f5ffd5b80638b8aac3c146103af5780638da5cb5b146103d757806394f649dd146103e8578063967fc0d2146104095780639ac01d611461041c578063b5d8b5b81461042f578063c665670214610442578063cbc2bd6214610455578063de44acb614610468575f5ffd5b8063595c6a6711610173578063595c6a67146102c95780635ac86ab7146102d15780635c975abb146103045780635de08ff21461030c578063663c1de41461031f578063715018a614610341578063724af423146103495780637ecebe001461035c578063886f11951461037b575f5ffd5b8063136439dd146101db5780631794bb3c146101f05780632eae418c1461020357806332e89ace1461021657806336a8c5001461023c57806348825e94146102525780634b6d5d6e1461027957806350ff72251461028c57806354fd4d50146102b4575b5f5ffd5b6101ee6101e9366004612577565b61054a565b005b6101ee6101fe3660046125a2565b610624565b6101ee6102113660046125e0565b61074a565b610229610224366004612642565b610802565b6040519081526020015b60405180910390f35b6102446108a6565b604051610233929190612774565b6102297f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b6101ee6102873660046127ca565b6109c1565b61029f61029a3660046125a2565b610af1565b60408051928352602083019190915201610233565b6102bc610b65565b6040516102339190612832565b6101ee610b95565b6102f46102df366004612844565b609854600160ff9092169190911b9081161490565b6040519015158152602001610233565b609854610229565b6101ee61031a366004612864565b610c49565b6102f461032d3660046127ca565b60d16020525f908152604090205460ff1681565b6101ee610d96565b6102296103573660046125a2565b610da7565b61022961036a3660046127ca565b60ca6020525f908152604090205481565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b60405161023391906128d3565b6102296103bd3660046127ca565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103a2565b6103fb6103f63660046127ca565b610e1a565b604051610233929190612920565b60cb546103a2906001600160a01b031681565b61022961042a36600461294d565b610f91565b6101ee61043d366004612864565b611022565b6101ee6104503660046127ca565b611163565b6103a26104633660046129ae565b611186565b61047b6104763660046127ca565b6111ba565b60405161023391906129d8565b6101ee6104963660046129ae565b61122d565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b6102296104d03660046125a2565b6112e8565b6101ee6104e33660046127ca565b61133a565b6103a2620e16e481565b6102296113b0565b6101ee610508366004612577565b611469565b61022961051b3660046127ca565b61157f565b61022961052e3660046129ea565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e906105969033906004016128d3565b602060405180830381865afa1580156105b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d59190612a21565b6105f257604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106175760405163c61dca5d60e01b815260040160405180910390fd5b61062082611594565b5050565b5f54610100900460ff161580801561064257505f54600160ff909116105b8061065b5750303b15801561065b57505f5460ff166001145b6106c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106e4575f805461ff0019166101001790555b6106ed82611594565b6106f6846115d1565b6106ff83611622565b8015610744575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107935760405163f739589b60e01b815260040160405180910390fd5b61079b61168b565b604051636ce5768960e11b81526001600160a01b0384169063d9caed12906107cb90879086908690600401612a40565b5f604051808303815f87803b1580156107e2575f5ffd5b505af11580156107f4573d5f5f3e3d5ffd5b505050506107446001606555565b6098545f90819060019081160361082c5760405163840a48d560e01b815260040160405180910390fd5b61083461168b565b6001600160a01b0385165f90815260ca60205260409020546108658661085e818c8c8c878c610f91565b86886116e4565b6001600160a01b0386165f90815260ca6020526040902060018201905561088e868a8a8a611736565b92505061089b6001606555565b509695505050505050565b6060805f6108b460d46118a1565b90505f816001600160401b038111156108cf576108cf61262e565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b5090505f826001600160401b038111156109145761091461262e565b60405190808252806020026020018201604052801561093d578160200160208202803683370190505b5090505f5b838110156109b6575f5f61095760d4846118b1565b915091508185848151811061096e5761096e612a64565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109a1576109a1612a64565b60209081029190910101525050600101610942565b509094909350915050565b6109c961168b565b5f6109d560d4836118ce565b9150506109e360d4836118e5565b507fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed8398282604051610a15929190612a78565b60405180910390a18015610ae357816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190612a91565b846040518463ffffffff1660e01b8152600401610ab593929190612a40565b5f604051808303815f87803b158015610acc575f5ffd5b505af1158015610ade573d5f5f3e3d5ffd5b505050505b50610aee6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b3c5760405163f739589b60e01b815260040160405180910390fd5b610b4461168b565b610b4f8585856118f9565b91509150610b5d6001606555565b935093915050565b6060610b907f0000000000000000000000000000000000000000000000000000000000000000611a61565b905090565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90610be19033906004016128d3565b602060405180830381865afa158015610bfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190612a21565b610c3d57604051631d77d47760e21b815260040160405180910390fd5b610c475f19611594565b565b60cb546001600160a01b03163314610c74576040516320ba3ff960e21b815260040160405180910390fd5b610c7c61168b565b805f5b81811015610d8a5760d15f858584818110610c9c57610c9c612a64565b9050602002016020810190610cb191906127ca565b6001600160a01b0316815260208101919091526040015f205460ff16610d8257600160d15f868685818110610ce857610ce8612a64565b9050602002016020810190610cfd91906127ca565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d5757610d57612a64565b9050602002016020810190610d6c91906127ca565b604051610d7991906128d3565b60405180910390a15b600101610c7f565b50506106206001606555565b610d9e611a9e565b610c475f6115d1565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610df15760405163f739589b60e01b815260040160405180910390fd5b610df961168b565b5f610e05858585611af8565b92505050610e136001606555565b9392505050565b6001600160a01b0381165f90815260ce6020526040812054606091829190816001600160401b03811115610e5057610e5061262e565b604051908082528060200260200182016040528015610e79578160200160208202803683370190505b5090505f5b82811015610f07576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610ebc57610ebc612a64565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ef457610ef4612a64565b6020908102919091010152600101610e7e565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610f7f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f61575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611017906101000160405160208183030381529060405280519060200120611bbe565b979650505050505050565b60cb546001600160a01b0316331461104d576040516320ba3ff960e21b815260040160405180910390fd5b61105561168b565b805f5b81811015610d8a5760d15f85858481811061107557611075612a64565b905060200201602081019061108a91906127ca565b6001600160a01b0316815260208101919091526040015f205460ff161561115b575f60d15f8686858181106110c1576110c1612a64565b90506020020160208101906110d691906127ca565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061113057611130612a64565b905060200201602081019061114591906127ca565b60405161115291906128d3565b60405180910390a15b600101611058565b61116b611a9e565b61117361168b565b61117c81611622565b610aee6001606555565b60ce602052815f5260405f20818154811061119f575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561122157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611203575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112765760405163f739589b60e01b815260040160405180910390fd5b61127e61168b565b5f61128a60d4846118ce565b91506112a3905060d48461129e8585612ac0565b611c04565b507fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff83836040516112d5929190612a78565b60405180910390a1506106206001606555565b6098545f9081906001908116036113125760405163840a48d560e01b815260040160405180910390fd5b61131a61168b565b61132633868686611736565b91506113326001606555565b509392505050565b611342611a9e565b6001600160a01b0381166113a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b610aee816115d1565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61141d611c19565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e99190612a91565b6001600160a01b0316336001600160a01b03161461151a5760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146115415760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f61158c60d4846118ce565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036116dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106ba565b6002606555565b4281101561170557604051630819bdcd60e01b815260040160405180910390fd5b6117196001600160a01b0385168484611cb5565b61074457604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff1661177057604051632efd965160e11b815260040160405180910390fd5b6117856001600160a01b038516338786611d13565b6040516311f9fbc960e21b81526001600160a01b038616906347e7ef24906117b39087908790600401612a78565b6020604051808303815f875af11580156117cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f39190612ad3565b91505f5f6118028888866118f9565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611880575f5ffd5b505af1158015611892573d5f5f3e3d5ffd5b50505050505050949350505050565b5f6118ab82611d6b565b92915050565b5f8080806118bf8686611d75565b909450925050505b9250929050565b5f8080806118bf866001600160a01b038716611d9e565b5f610e13836001600160a01b038416611dd6565b5f806001600160a01b038516611922576040516316f2ccc960e01b815260040160405180910390fd5b825f03611942576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd60209081526040808320938816835292905290812054908190036119e8576001600160a01b0386165f90815260ce6020908152604090912054106119aa576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6119f28482612ac0565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611a4e90889088908890612a40565b60405180910390a1959294509192505050565b60605f611a6d83611df2565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b5f5f825f03611b1a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611b6057604051634b18b19360e01b815260040160405180910390fd5b611b6a8482612aea565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611bb257611ba78686611e19565b600192509050610b5d565b5f969095509350505050565b5f611bc76113b0565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f61158c846001600160a01b03851684611f97565b60605f611c457f0000000000000000000000000000000000000000000000000000000000000000611a61565b9050805f81518110611c5957611c59612a64565b602001015160f81c60f81b81600181518110611c7757611c77612a64565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611cc28585611fb3565b90925090505f816004811115611cda57611cda612afd565b148015611cf85750856001600160a01b0316826001600160a01b0316145b80611d095750611d09868686611ff2565b9695505050505050565b610744846323b872dd60e01b858585604051602401611d3493929190612a40565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120d9565b5f6118ab826121b1565b5f8080611d8285856121ba565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611dcb57611dbf85856121c5565b92505f91506118c79050565b6001925090506118c7565b5f8181526002830160205260408120819055610e1383836121d0565b5f60ff8216601f8111156118ab57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f2b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611e6957611e69612a64565b5f918252602090912001546001600160a01b031603611f23576001600160a01b0384165f90815260ce602052604090208054611ea790600190612aea565b81548110611eb757611eb7612a64565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611ef357611ef3612a64565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f2b565b600101611e33565b818103611f4b57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611f7157611f71612b11565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f828152600284016020526040812082905561158c84846121db565b5f5f8251604103611fe7576020830151604084015160608501515f1a611fdb878285856121e6565b945094505050506118c7565b505f905060026118c7565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161201a929190612b25565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120589190612b3d565b5f60405180830381855afa9150503d805f8114612090576040519150601f19603f3d011682016040523d82523d5f602084013e612095565b606091505b50915091508180156120a957506020815110155b8015611d0957508051630b135d3f60e11b906120ce9083016020908101908401612ad3565b149695505050505050565b5f61212d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122999092919063ffffffff16565b905080515f148061214d57508080602001905181019061214d9190612a21565b6121ac5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ba565b505050565b5f6118ab825490565b5f610e1383836122a7565b5f610e1383836122cd565b5f610e1383836122e4565b5f610e1383836123c7565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561221157505f90506003612290565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612262573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661228a575f60019250925050612290565b91505f90505b94509492505050565b606061158c84845f85612413565b5f825f0182815481106122bc576122bc612a64565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e13565b5f81815260018301602052604081205480156123be575f612306600183612aea565b85549091505f9061231990600190612aea565b9050818114612378575f865f01828154811061233757612337612a64565b905f5260205f200154905080875f01848154811061235757612357612a64565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061238957612389612b11565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506118ab565b5f9150506118ab565b5f81815260018301602052604081205461240c57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556118ab565b505f6118ab565b6060824710156124745760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ba565b5f5f866001600160a01b0316858760405161248f9190612b3d565b5f6040518083038185875af1925050503d805f81146124c9576040519150601f19603f3d011682016040523d82523d5f602084013e6124ce565b606091505b509150915061101787838387606083156125485782515f03612541576001600160a01b0385163b6125415760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ba565b508161158c565b61158c838381511561255d5781518083602001fd5b8060405162461bcd60e51b81526004016106ba9190612832565b5f60208284031215612587575f5ffd5b5035919050565b6001600160a01b0381168114610aee575f5ffd5b5f5f5f606084860312156125b4575f5ffd5b83356125bf8161258e565b925060208401356125cf8161258e565b929592945050506040919091013590565b5f5f5f5f608085870312156125f3575f5ffd5b84356125fe8161258e565b9350602085013561260e8161258e565b9250604085013561261e8161258e565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c08789031215612657575f5ffd5b86356126628161258e565b955060208701356126728161258e565b94506040870135935060608701356126898161258e565b92506080870135915060a08701356001600160401b038111156126aa575f5ffd5b8701601f810189136126ba575f5ffd5b80356001600160401b038111156126d3576126d361262e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156127015761270161262e565b6040528181528282016020018b1015612718575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b8281101561276a57815186526020958601959091019060010161274c565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156127b65783516001600160a01b031683526020938401939092019160010161278f565b50508381036020850152611d09818661273a565b5f602082840312156127da575f5ffd5b8135610e138161258e565b5f5b838110156127ff5781810151838201526020016127e7565b50505f910152565b5f815180845261281e8160208601602086016127e5565b601f01601f19169290920160200192915050565b602081525f610e136020830184612807565b5f60208284031215612854575f5ffd5b813560ff81168114610e13575f5ffd5b5f5f60208385031215612875575f5ffd5b82356001600160401b0381111561288a575f5ffd5b8301601f8101851361289a575f5ffd5b80356001600160401b038111156128af575f5ffd5b8560208260051b84010111156128c3575f5ffd5b6020919091019590945092505050565b6001600160a01b0391909116815260200190565b5f8151808452602084019350602083015f5b8281101561276a5781516001600160a01b03168652602095860195909101906001016128f9565b604081525f61293260408301856128e7565b8281036020840152612944818561273a565b95945050505050565b5f5f5f5f5f5f60c08789031215612962575f5ffd5b863561296d8161258e565b9550602087013561297d8161258e565b9450604087013561298d8161258e565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129bf575f5ffd5b82356129ca8161258e565b946020939093013593505050565b602081525f610e1360208301846128e7565b5f5f604083850312156129fb575f5ffd5b8235612a068161258e565b91506020830135612a168161258e565b809150509250929050565b5f60208284031215612a31575f5ffd5b81518015158114610e13575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03929092168252602082015260400190565b5f60208284031215612aa1575f5ffd5b8151610e138161258e565b634e487b7160e01b5f52601160045260245ffd5b808201808211156118ab576118ab612aac565b5f60208284031215612ae3575f5ffd5b5051919050565b818103818111156118ab576118ab612aac565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f61158c6040830184612807565b5f8251612b4e8184602087016127e5565b919091019291505056fea2646970667358221220a295972c9a6fe7a11ad0c2a2281742cfa9e215d07080c6d656d3a293e05744ef64736f6c634300081b0033
1063    /// ```
1064    #[rustfmt::skip]
1065    #[allow(clippy::all)]
1066    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1067        b"`\xE0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa.\xF98\x03\x80a.\xF9\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\xD5V[\x80\x80\x84\x84`\x01`\x01`\xA0\x1B\x03\x81\x16a\0YW`@Qc9\xB1\x90\xBB`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x90\x81\x16`\x80R\x16`\xA0Ra\0t\x81a\0\x8AV[`\xC0RPa\0\x82\x90Pa\0\xD0V[PPPa\x03\x02V[__\x82\x90P`\x1F\x81Q\x11\x15a\0\xBDW\x82`@Qc0Z'\xA9`\xE0\x1B\x81R`\x04\x01a\0\xB4\x91\x90a\x02\xAAV[`@Q\x80\x91\x03\x90\xFD[\x80Qa\0\xC8\x82a\x02\xDCV[\x17\x93\x92PPPV[_Ta\x01\0\x90\x04`\xFF\x16\x15a\x017W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01a\0\xB4V[_T`\xFF\x90\x81\x16\x14a\x01\x86W_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01\x9CW__\xFD[PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x01\xCDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x01\xB5V[PP_\x91\x01RV[___``\x84\x86\x03\x12\x15a\x01\xE7W__\xFD[\x83Qa\x01\xF2\x81a\x01\x88V[` \x85\x01Q\x90\x93Pa\x02\x03\x81a\x01\x88V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x1EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x02.W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02GWa\x02Ga\x01\x9FV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02uWa\x02ua\x01\x9FV[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x02\x8CW__\xFD[a\x02\x9D\x82` \x83\x01` \x86\x01a\x01\xB3V[\x80\x93PPPP\x92P\x92P\x92V[` \x81R_\x82Q\x80` \x84\x01Ra\x02\xC8\x81`@\x85\x01` \x87\x01a\x01\xB3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\x02\xFCW_\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\x80Q`\xA0Q`\xC0Qa+\x8Ea\x03k_9_\x81\x81a\x0Bl\x01Ra\x1C!\x01R_\x81\x81a\x04\xA0\x01R\x81\x81a\x07U\x01R\x81\x81a\n\xFE\x01R\x81\x81a\r\xB3\x01R\x81\x81a\x128\x01Ra\x18=\x01R_\x81\x81a\x03\x80\x01R\x81\x81a\x05a\x01R\x81\x81a\x0B\xAC\x01Ra\x14k\x01Ra+\x8E_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xD7W_5`\xE0\x1C\x80c\x8B\x8A\xAC<\x11a\x01\x01W\x80c\xDE\xBE\x1E\xAB\x11a\0\x9AW\x80c\xDE\xBE\x1E\xAB\x14a\x04\x88W\x80c\xDF\\\xF7#\x14a\x04\x9BW\x80c\xE7\xA0P\xAA\x14a\x04\xC2W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xD5W\x80c\xF3\xB4\xA0\0\x14a\x04\xE8W\x80c\xF6\x98\xDA%\x14a\x04\xF2W\x80c\xFA\xBC\x1C\xBC\x14a\x04\xFAW\x80c\xFD\x98\x04#\x14a\x05\rW\x80c\xFE$:\x17\x14a\x05 W__\xFD[\x80c\x8B\x8A\xAC<\x14a\x03\xAFW\x80c\x8D\xA5\xCB[\x14a\x03\xD7W\x80c\x94\xF6I\xDD\x14a\x03\xE8W\x80c\x96\x7F\xC0\xD2\x14a\x04\tW\x80c\x9A\xC0\x1Da\x14a\x04\x1CW\x80c\xB5\xD8\xB5\xB8\x14a\x04/W\x80c\xC6eg\x02\x14a\x04BW\x80c\xCB\xC2\xBDb\x14a\x04UW\x80c\xDED\xAC\xB6\x14a\x04hW__\xFD[\x80cY\\jg\x11a\x01sW\x80cY\\jg\x14a\x02\xC9W\x80cZ\xC8j\xB7\x14a\x02\xD1W\x80c\\\x97Z\xBB\x14a\x03\x04W\x80c]\xE0\x8F\xF2\x14a\x03\x0CW\x80cf<\x1D\xE4\x14a\x03\x1FW\x80cqP\x18\xA6\x14a\x03AW\x80crJ\xF4#\x14a\x03IW\x80c~\xCE\xBE\0\x14a\x03\\W\x80c\x88o\x11\x95\x14a\x03{W__\xFD[\x80c\x13d9\xDD\x14a\x01\xDBW\x80c\x17\x94\xBB<\x14a\x01\xF0W\x80c.\xAEA\x8C\x14a\x02\x03W\x80c2\xE8\x9A\xCE\x14a\x02\x16W\x80c6\xA8\xC5\0\x14a\x02<W\x80cH\x82^\x94\x14a\x02RW\x80cKm]n\x14a\x02yW\x80cP\xFFr%\x14a\x02\x8CW\x80cT\xFDMP\x14a\x02\xB4W[__\xFD[a\x01\xEEa\x01\xE96`\x04a%wV[a\x05JV[\0[a\x01\xEEa\x01\xFE6`\x04a%\xA2V[a\x06$V[a\x01\xEEa\x02\x116`\x04a%\xE0V[a\x07JV[a\x02)a\x02$6`\x04a&BV[a\x08\x02V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02Da\x08\xA6V[`@Qa\x023\x92\x91\x90a'tV[a\x02)\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x81V[a\x01\xEEa\x02\x876`\x04a'\xCAV[a\t\xC1V[a\x02\x9Fa\x02\x9A6`\x04a%\xA2V[a\n\xF1V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x023V[a\x02\xBCa\x0BeV[`@Qa\x023\x91\x90a(2V[a\x01\xEEa\x0B\x95V[a\x02\xF4a\x02\xDF6`\x04a(DV[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x023V[`\x98Ta\x02)V[a\x01\xEEa\x03\x1A6`\x04a(dV[a\x0CIV[a\x02\xF4a\x03-6`\x04a'\xCAV[`\xD1` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x01\xEEa\r\x96V[a\x02)a\x03W6`\x04a%\xA2V[a\r\xA7V[a\x02)a\x03j6`\x04a'\xCAV[`\xCA` R_\x90\x81R`@\x90 T\x81V[a\x03\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qa\x023\x91\x90a(\xD3V[a\x02)a\x03\xBD6`\x04a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xCE` R`@\x90 T\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xA2V[a\x03\xFBa\x03\xF66`\x04a'\xCAV[a\x0E\x1AV[`@Qa\x023\x92\x91\x90a) V[`\xCBTa\x03\xA2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02)a\x04*6`\x04a)MV[a\x0F\x91V[a\x01\xEEa\x04=6`\x04a(dV[a\x10\"V[a\x01\xEEa\x04P6`\x04a'\xCAV[a\x11cV[a\x03\xA2a\x04c6`\x04a)\xAEV[a\x11\x86V[a\x04{a\x04v6`\x04a'\xCAV[a\x11\xBAV[`@Qa\x023\x91\x90a)\xD8V[a\x01\xEEa\x04\x966`\x04a)\xAEV[a\x12-V[a\x03\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02)a\x04\xD06`\x04a%\xA2V[a\x12\xE8V[a\x01\xEEa\x04\xE36`\x04a'\xCAV[a\x13:V[a\x03\xA2b\x0E\x16\xE4\x81V[a\x02)a\x13\xB0V[a\x01\xEEa\x05\x086`\x04a%wV[a\x14iV[a\x02)a\x05\x1B6`\x04a'\xCAV[a\x15\x7FV[a\x02)a\x05.6`\x04a)\xEAV[`\xCD` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Qc#}\xFBG`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cF\xFB\xF6\x8E\x90a\x05\x96\x903\x90`\x04\x01a(\xD3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xB1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD5\x91\x90a*!V[a\x05\xF2W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x81\x81\x16\x81\x14a\x06\x17W`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06 \x82a\x15\x94V[PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x06BWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x06[WP0;\x15\x80\x15a\x06[WP_T`\xFF\x16`\x01\x14[a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x06\xE4W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x06\xED\x82a\x15\x94V[a\x06\xF6\x84a\x15\xD1V[a\x06\xFF\x83a\x16\"V[\x80\x15a\x07DW_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x07\x93W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\x9Ba\x16\x8BV[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xD9\xCA\xED\x12\x90a\x07\xCB\x90\x87\x90\x86\x90\x86\x90`\x04\x01a*@V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\xE2W__\xFD[PZ\xF1\x15\x80\x15a\x07\xF4W=__>=_\xFD[PPPPa\x07D`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x08,W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x084a\x16\x8BV[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\xCA` R`@\x90 Ta\x08e\x86a\x08^\x81\x8C\x8C\x8C\x87\x8Ca\x0F\x91V[\x86\x88a\x16\xE4V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCA` R`@\x90 `\x01\x82\x01\x90Ua\x08\x8E\x86\x8A\x8A\x8Aa\x176V[\x92PPa\x08\x9B`\x01`eUV[P\x96\x95PPPPPPV[``\x80_a\x08\xB4`\xD4a\x18\xA1V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCFWa\x08\xCFa&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\x14Wa\t\x14a&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t=W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\t\xB6W__a\tW`\xD4\x84a\x18\xB1V[\x91P\x91P\x81\x85\x84\x81Q\x81\x10a\tnWa\tna*dV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x84\x84\x81Q\x81\x10a\t\xA1Wa\t\xA1a*dV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\tBV[P\x90\x94\x90\x93P\x91PPV[a\t\xC9a\x16\x8BV[_a\t\xD5`\xD4\x83a\x18\xCEV[\x91PPa\t\xE3`\xD4\x83a\x18\xE5V[P\x7F\xD9\xD0\x82\xC3\xECO:?\xFAU\xC3$\x93\x9A\x06@\x7F_\xBC\xB8}^\x0C\xE3\xB9P\x8C\x92\xC8N\xD89\x82\x82`@Qa\n\x15\x92\x91\x90a*xV[`@Q\x80\x91\x03\x90\xA1\x80\x15a\n\xE3W\x81`\x01`\x01`\xA0\x1B\x03\x16c\xD9\xCA\xED\x12b\x0E\x16\xE4\x84`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nrW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x96\x91\x90a*\x91V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xB5\x93\x92\x91\x90a*@V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xCCW__\xFD[PZ\xF1\x15\x80\x15a\n\xDEW=__>=_\xFD[PPPP[Pa\n\xEE`\x01`eUV[PV[_\x803`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0B<W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0BDa\x16\x8BV[a\x0BO\x85\x85\x85a\x18\xF9V[\x91P\x91Pa\x0B]`\x01`eUV[\x93P\x93\x91PPV[``a\x0B\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1AaV[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cF\xFB\xF6\x8E\x90a\x0B\xE1\x903\x90`\x04\x01a(\xD3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C \x91\x90a*!V[a\x0C=W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0CG_\x19a\x15\x94V[V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CtW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C|a\x16\x8BV[\x80_[\x81\x81\x10\x15a\r\x8AW`\xD1_\x85\x85\x84\x81\x81\x10a\x0C\x9CWa\x0C\x9Ca*dV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xB1\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16a\r\x82W`\x01`\xD1_\x86\x86\x85\x81\x81\x10a\x0C\xE8Wa\x0C\xE8a*dV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xFD\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x84\x84\x83\x81\x81\x10a\rWWa\rWa*dV[\x90P` \x02\x01` \x81\x01\x90a\rl\x91\x90a'\xCAV[`@Qa\ry\x91\x90a(\xD3V[`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x0C\x7FV[PPa\x06 `\x01`eUV[a\r\x9Ea\x1A\x9EV[a\x0CG_a\x15\xD1V[_3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\r\xF1W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xF9a\x16\x8BV[_a\x0E\x05\x85\x85\x85a\x1A\xF8V[\x92PPPa\x0E\x13`\x01`eUV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EPWa\x0EPa&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EyW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0F\x07W`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0E\xBCWa\x0E\xBCa*dV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0E\xF4Wa\x0E\xF4a*dV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E~V[P`\xCE_\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x0F\x7FW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x0FaW[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`@\x80Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x89\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x84\x90R`\xC0\x81\x01\x83\x90R`\xE0\x81\x01\x82\x90R_\x90a\x10\x17\x90a\x01\0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1B\xBEV[\x97\x96PPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10MW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10Ua\x16\x8BV[\x80_[\x81\x81\x10\x15a\r\x8AW`\xD1_\x85\x85\x84\x81\x81\x10a\x10uWa\x10ua*dV[\x90P` \x02\x01` \x81\x01\x90a\x10\x8A\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11[W_`\xD1_\x86\x86\x85\x81\x81\x10a\x10\xC1Wa\x10\xC1a*dV[\x90P` \x02\x01` \x81\x01\x90a\x10\xD6\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x110Wa\x110a*dV[\x90P` \x02\x01` \x81\x01\x90a\x11E\x91\x90a'\xCAV[`@Qa\x11R\x91\x90a(\xD3V[`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x10XV[a\x11ka\x1A\x9EV[a\x11sa\x16\x8BV[a\x11|\x81a\x16\"V[a\n\xEE`\x01`eUV[`\xCE` R\x81_R`@_ \x81\x81T\x81\x10a\x11\x9FW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x91\x82\x90 \x80T\x83Q\x81\x84\x02\x81\x01\x84\x01\x90\x94R\x80\x84R``\x93\x92\x83\x01\x82\x82\x80\x15a\x12!W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x12\x03W[PPPPP\x90P\x91\x90PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x12vW`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12~a\x16\x8BV[_a\x12\x8A`\xD4\x84a\x18\xCEV[\x91Pa\x12\xA3\x90P`\xD4\x84a\x12\x9E\x85\x85a*\xC0V[a\x1C\x04V[P\x7F\xCA>\x02\xA4\xABz\xD3\xC4z\x8E6\xE5\xA6$\xC3\x01py\x17&\xABr\x0F\x1B\xAB\xFE\xF2\x10F\xD9S\xFF\x83\x83`@Qa\x12\xD5\x92\x91\x90a*xV[`@Q\x80\x91\x03\x90\xA1Pa\x06 `\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x13\x12W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1Aa\x16\x8BV[a\x13&3\x86\x86\x86a\x176V[\x91Pa\x132`\x01`eUV[P\x93\x92PPPV[a\x13Ba\x1A\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x13\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[a\n\xEE\x81a\x15\xD1V[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa\x14\x1Da\x1C\x19V[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xC5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xE9\x91\x90a*\x91V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15\x1AW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x80\x19\x82\x19\x81\x16\x14a\x15AW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2PPV[__a\x15\x8C`\xD4\x84a\x18\xCEV[\x94\x93PPPPV[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPV[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x02`eT\x03a\x16\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xBAV[`\x02`eUV[B\x81\x10\x15a\x17\x05W`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x19`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84a\x1C\xB5V[a\x07DW`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x17pW`@Qc.\xFD\x96Q`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x85`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a\x1D\x13V[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90cG\xE7\xEF$\x90a\x17\xB3\x90\x87\x90\x87\x90`\x04\x01a*xV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF3\x91\x90a*\xD3V[\x91P__a\x18\x02\x88\x88\x86a\x18\xF9V[`@Qc\x1E2\x8Ey`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16`\x04\x83\x01R\x8A\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R`d\x82\x01\x83\x90R\x92\x94P\x90\x92P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c<e\x1C\xF2\x90`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x80W__\xFD[PZ\xF1\x15\x80\x15a\x18\x92W=__>=_\xFD[PPPPPPP\x94\x93PPPPV[_a\x18\xAB\x82a\x1DkV[\x92\x91PPV[_\x80\x80\x80a\x18\xBF\x86\x86a\x1DuV[\x90\x94P\x92PPP[\x92P\x92\x90PV[_\x80\x80\x80a\x18\xBF\x86`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1D\x9EV[_a\x0E\x13\x83`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1D\xD6V[_\x80`\x01`\x01`\xA0\x1B\x03\x85\x16a\x19\"W`@Qc\x16\xF2\xCC\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82_\x03a\x19BW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x19\xE8W`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x19\xAAW`@Qc\x01\xA1D9`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x87\x16\x91\x90\x91\x17\x90U[a\x19\xF2\x84\x82a*\xC0V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x81\x90 \x91\x90\x91UQ\x7FUH\xC87\xAB\x06\x8C\xF5j,$y\xDF\x08\x82\xA4\x92/\xD2\x03\xED\xB7Qs!\x83\x1D\x95\x07\x8C_b\x90a\x1AN\x90\x88\x90\x88\x90\x88\x90a*@V[`@Q\x80\x91\x03\x90\xA1\x95\x92\x94P\x91\x92PPPV[``_a\x1Am\x83a\x1D\xF2V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\xBAV[__\x82_\x03a\x1B\x1AW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R T\x80\x84\x11\x15a\x1B`W`@QcK\x18\xB1\x93`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Bj\x84\x82a*\xEAV[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x90\x81 \x82\x90U\x90\x91P\x81\x90\x03a\x1B\xB2Wa\x1B\xA7\x86\x86a\x1E\x19V[`\x01\x92P\x90Pa\x0B]V[_\x96\x90\x95P\x93PPPPV[_a\x1B\xC7a\x13\xB0V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_a\x15\x8C\x84`\x01`\x01`\xA0\x1B\x03\x85\x16\x84a\x1F\x97V[``_a\x1CE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1AaV[\x90P\x80_\x81Q\x81\x10a\x1CYWa\x1CYa*dV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1CwWa\x1Cwa*dV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[___a\x1C\xC2\x85\x85a\x1F\xB3V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15a\x1C\xDAWa\x1C\xDAa*\xFDV[\x14\x80\x15a\x1C\xF8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x1D\tWPa\x1D\t\x86\x86\x86a\x1F\xF2V[\x96\x95PPPPPPV[a\x07D\x84c#\xB8r\xDD`\xE0\x1B\x85\x85\x85`@Q`$\x01a\x1D4\x93\x92\x91\x90a*@V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x93\x16\x92\x90\x92\x17\x90\x91Ra \xD9V[_a\x18\xAB\x82a!\xB1V[_\x80\x80a\x1D\x82\x85\x85a!\xBAV[_\x81\x81R`\x02\x96\x90\x96\x01` R`@\x90\x95 T\x94\x95\x93PPPPV[_\x81\x81R`\x02\x83\x01` R`@\x81 T\x81\x90\x80a\x1D\xCBWa\x1D\xBF\x85\x85a!\xC5V[\x92P_\x91Pa\x18\xC7\x90PV[`\x01\x92P\x90Pa\x18\xC7V[_\x81\x81R`\x02\x83\x01` R`@\x81 \x81\x90Ua\x0E\x13\x83\x83a!\xD0V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x18\xABW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a\x1F+W`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\x1EiWa\x1Eia*dV[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F#W`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80Ta\x1E\xA7\x90`\x01\x90a*\xEAV[\x81T\x81\x10a\x1E\xB7Wa\x1E\xB7a*dV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a\x1E\xF3Wa\x1E\xF3a*dV[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa\x1F+V[`\x01\x01a\x1E3V[\x81\x81\x03a\x1FKW`@Qc-\xF1ZA`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x80a\x1FqWa\x1Fqa+\x11V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[_\x82\x81R`\x02\x84\x01` R`@\x81 \x82\x90Ua\x15\x8C\x84\x84a!\xDBV[__\x82Q`A\x03a\x1F\xE7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1Aa\x1F\xDB\x87\x82\x85\x85a!\xE6V[\x94P\x94PPPPa\x18\xC7V[P_\x90P`\x02a\x18\xC7V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01a \x1A\x92\x91\x90a+%V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa X\x91\x90a+=V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a \x90W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a \x95V[``\x91P[P\x91P\x91P\x81\x80\x15a \xA9WP` \x81Q\x10\x15[\x80\x15a\x1D\tWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a \xCE\x90\x83\x01` \x90\x81\x01\x90\x84\x01a*\xD3V[\x14\x96\x95PPPPPPV[_a!-\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\"\x99\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a!MWP\x80\x80` \x01\x90Q\x81\x01\x90a!M\x91\x90a*!V[a!\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[PPPV[_a\x18\xAB\x82T\x90V[_a\x0E\x13\x83\x83a\"\xA7V[_a\x0E\x13\x83\x83a\"\xCDV[_a\x0E\x13\x83\x83a\"\xE4V[_a\x0E\x13\x83\x83a#\xC7V[_\x80o\xA2\xA8\x91\x8C\xA8[\xAF\xE2 \x16\xD0\xB9\x97\xE4\xDF``\x01`\xFF\x1B\x03\x83\x11\x15a\"\x11WP_\x90P`\x03a\"\x90V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\"bW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\x8AW_`\x01\x92P\x92PPa\"\x90V[\x91P_\x90P[\x94P\x94\x92PPPV[``a\x15\x8C\x84\x84_\x85a$\x13V[_\x82_\x01\x82\x81T\x81\x10a\"\xBCWa\"\xBCa*dV[\x90_R` _ \x01T\x90P\x92\x91PPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x15\x15a\x0E\x13V[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15a#\xBEW_a#\x06`\x01\x83a*\xEAV[\x85T\x90\x91P_\x90a#\x19\x90`\x01\x90a*\xEAV[\x90P\x81\x81\x14a#xW_\x86_\x01\x82\x81T\x81\x10a#7Wa#7a*dV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#WWa#Wa*dV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80a#\x89Wa#\x89a+\x11V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x18\xABV[_\x91PPa\x18\xABV[_\x81\x81R`\x01\x83\x01` R`@\x81 Ta$\x0CWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x18\xABV[P_a\x18\xABV[``\x82G\x10\x15a$tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa$\x8F\x91\x90a+=V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a$\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$\xCEV[``\x91P[P\x91P\x91Pa\x10\x17\x87\x83\x83\x87``\x83\x15a%HW\x82Q_\x03a%AW`\x01`\x01`\xA0\x1B\x03\x85\x16;a%AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06\xBAV[P\x81a\x15\x8CV[a\x15\x8C\x83\x83\x81Q\x15a%]W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x91\x90a(2V[_` \x82\x84\x03\x12\x15a%\x87W__\xFD[P5\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\n\xEEW__\xFD[___``\x84\x86\x03\x12\x15a%\xB4W__\xFD[\x835a%\xBF\x81a%\x8EV[\x92P` \x84\x015a%\xCF\x81a%\x8EV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a%\xF3W__\xFD[\x845a%\xFE\x81a%\x8EV[\x93P` \x85\x015a&\x0E\x81a%\x8EV[\x92P`@\x85\x015a&\x1E\x81a%\x8EV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[______`\xC0\x87\x89\x03\x12\x15a&WW__\xFD[\x865a&b\x81a%\x8EV[\x95P` \x87\x015a&r\x81a%\x8EV[\x94P`@\x87\x015\x93P``\x87\x015a&\x89\x81a%\x8EV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xAAW__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a&\xBAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xD3Wa&\xD3a&.V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a'\x01Wa'\x01a&.V[`@R\x81\x81R\x82\x82\x01` \x01\x8B\x10\x15a'\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92\x95P\x92\x95P\x92\x95V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'jW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a'LV[P\x93\x94\x93PPPPV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a'\xB6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a'\x8FV[PP\x83\x81\x03` \x85\x01Ra\x1D\t\x81\x86a':V[_` \x82\x84\x03\x12\x15a'\xDAW__\xFD[\x815a\x0E\x13\x81a%\x8EV[_[\x83\x81\x10\x15a'\xFFW\x81\x81\x01Q\x83\x82\x01R` \x01a'\xE7V[PP_\x91\x01RV[_\x81Q\x80\x84Ra(\x1E\x81` \x86\x01` \x86\x01a'\xE5V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x0E\x13` \x83\x01\x84a(\x07V[_` \x82\x84\x03\x12\x15a(TW__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0E\x13W__\xFD[__` \x83\x85\x03\x12\x15a(uW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x8AW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\x9AW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xAFW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a(\xC3W__\xFD[` \x91\x90\x91\x01\x95\x90\x94P\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'jW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a(\xF9V[`@\x81R_a)2`@\x83\x01\x85a(\xE7V[\x82\x81\x03` \x84\x01Ra)D\x81\x85a':V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)bW__\xFD[\x865a)m\x81a%\x8EV[\x95P` \x87\x015a)}\x81a%\x8EV[\x94P`@\x87\x015a)\x8D\x81a%\x8EV[\x95\x98\x94\x97P\x94\x95``\x81\x015\x95P`\x80\x81\x015\x94`\xA0\x90\x91\x015\x93P\x91PPV[__`@\x83\x85\x03\x12\x15a)\xBFW__\xFD[\x825a)\xCA\x81a%\x8EV[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0E\x13` \x83\x01\x84a(\xE7V[__`@\x83\x85\x03\x12\x15a)\xFBW__\xFD[\x825a*\x06\x81a%\x8EV[\x91P` \x83\x015a*\x16\x81a%\x8EV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\x13W__\xFD[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[_` \x82\x84\x03\x12\x15a*\xA1W__\xFD[\x81Qa\x0E\x13\x81a%\x8EV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x18\xABWa\x18\xABa*\xACV[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x18\xABWa\x18\xABa*\xACV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x15\x8C`@\x83\x01\x84a(\x07V[_\x82Qa+N\x81\x84` \x87\x01a'\xE5V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA2\x95\x97,\x9Ao\xE7\xA1\x1A\xD0\xC2\xA2(\x17B\xCF\xA9\xE2\x15\xD0p\x80\xC6\xD6V\xD3\xA2\x93\xE0WD\xEFdsolcC\0\x08\x1B\x003",
1068    );
1069    /// The runtime bytecode of the contract, as deployed on the network.
1070    ///
1071    /// ```text
1072    ///0x608060405234801561000f575f5ffd5b50600436106101d7575f3560e01c80638b8aac3c11610101578063debe1eab1161009a578063debe1eab14610488578063df5cf7231461049b578063e7a050aa146104c2578063f2fde38b146104d5578063f3b4a000146104e8578063f698da25146104f2578063fabc1cbc146104fa578063fd9804231461050d578063fe243a1714610520575f5ffd5b80638b8aac3c146103af5780638da5cb5b146103d757806394f649dd146103e8578063967fc0d2146104095780639ac01d611461041c578063b5d8b5b81461042f578063c665670214610442578063cbc2bd6214610455578063de44acb614610468575f5ffd5b8063595c6a6711610173578063595c6a67146102c95780635ac86ab7146102d15780635c975abb146103045780635de08ff21461030c578063663c1de41461031f578063715018a614610341578063724af423146103495780637ecebe001461035c578063886f11951461037b575f5ffd5b8063136439dd146101db5780631794bb3c146101f05780632eae418c1461020357806332e89ace1461021657806336a8c5001461023c57806348825e94146102525780634b6d5d6e1461027957806350ff72251461028c57806354fd4d50146102b4575b5f5ffd5b6101ee6101e9366004612577565b61054a565b005b6101ee6101fe3660046125a2565b610624565b6101ee6102113660046125e0565b61074a565b610229610224366004612642565b610802565b6040519081526020015b60405180910390f35b6102446108a6565b604051610233929190612774565b6102297f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b6101ee6102873660046127ca565b6109c1565b61029f61029a3660046125a2565b610af1565b60408051928352602083019190915201610233565b6102bc610b65565b6040516102339190612832565b6101ee610b95565b6102f46102df366004612844565b609854600160ff9092169190911b9081161490565b6040519015158152602001610233565b609854610229565b6101ee61031a366004612864565b610c49565b6102f461032d3660046127ca565b60d16020525f908152604090205460ff1681565b6101ee610d96565b6102296103573660046125a2565b610da7565b61022961036a3660046127ca565b60ca6020525f908152604090205481565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b60405161023391906128d3565b6102296103bd3660046127ca565b6001600160a01b03165f90815260ce602052604090205490565b6033546001600160a01b03166103a2565b6103fb6103f63660046127ca565b610e1a565b604051610233929190612920565b60cb546103a2906001600160a01b031681565b61022961042a36600461294d565b610f91565b6101ee61043d366004612864565b611022565b6101ee6104503660046127ca565b611163565b6103a26104633660046129ae565b611186565b61047b6104763660046127ca565b6111ba565b60405161023391906129d8565b6101ee6104963660046129ae565b61122d565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b6102296104d03660046125a2565b6112e8565b6101ee6104e33660046127ca565b61133a565b6103a2620e16e481565b6102296113b0565b6101ee610508366004612577565b611469565b61022961051b3660046127ca565b61157f565b61022961052e3660046129ea565b60cd60209081525f928352604080842090915290825290205481565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e906105969033906004016128d3565b602060405180830381865afa1580156105b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d59190612a21565b6105f257604051631d77d47760e21b815260040160405180910390fd5b60985481811681146106175760405163c61dca5d60e01b815260040160405180910390fd5b61062082611594565b5050565b5f54610100900460ff161580801561064257505f54600160ff909116105b8061065b5750303b15801561065b57505f5460ff166001145b6106c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106e4575f805461ff0019166101001790555b6106ed82611594565b6106f6846115d1565b6106ff83611622565b8015610744575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107935760405163f739589b60e01b815260040160405180910390fd5b61079b61168b565b604051636ce5768960e11b81526001600160a01b0384169063d9caed12906107cb90879086908690600401612a40565b5f604051808303815f87803b1580156107e2575f5ffd5b505af11580156107f4573d5f5f3e3d5ffd5b505050506107446001606555565b6098545f90819060019081160361082c5760405163840a48d560e01b815260040160405180910390fd5b61083461168b565b6001600160a01b0385165f90815260ca60205260409020546108658661085e818c8c8c878c610f91565b86886116e4565b6001600160a01b0386165f90815260ca6020526040902060018201905561088e868a8a8a611736565b92505061089b6001606555565b509695505050505050565b6060805f6108b460d46118a1565b90505f816001600160401b038111156108cf576108cf61262e565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b5090505f826001600160401b038111156109145761091461262e565b60405190808252806020026020018201604052801561093d578160200160208202803683370190505b5090505f5b838110156109b6575f5f61095760d4846118b1565b915091508185848151811061096e5761096e612a64565b60200260200101906001600160a01b031690816001600160a01b031681525050808484815181106109a1576109a1612a64565b60209081029190910101525050600101610942565b509094909350915050565b6109c961168b565b5f6109d560d4836118ce565b9150506109e360d4836118e5565b507fd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed8398282604051610a15929190612a78565b60405180910390a18015610ae357816001600160a01b031663d9caed12620e16e4846001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a969190612a91565b846040518463ffffffff1660e01b8152600401610ab593929190612a40565b5f604051808303815f87803b158015610acc575f5ffd5b505af1158015610ade573d5f5f3e3d5ffd5b505050505b50610aee6001606555565b50565b5f80336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b3c5760405163f739589b60e01b815260040160405180910390fd5b610b4461168b565b610b4f8585856118f9565b91509150610b5d6001606555565b935093915050565b6060610b907f0000000000000000000000000000000000000000000000000000000000000000611a61565b905090565b60405163237dfb4760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906346fbf68e90610be19033906004016128d3565b602060405180830381865afa158015610bfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190612a21565b610c3d57604051631d77d47760e21b815260040160405180910390fd5b610c475f19611594565b565b60cb546001600160a01b03163314610c74576040516320ba3ff960e21b815260040160405180910390fd5b610c7c61168b565b805f5b81811015610d8a5760d15f858584818110610c9c57610c9c612a64565b9050602002016020810190610cb191906127ca565b6001600160a01b0316815260208101919091526040015f205460ff16610d8257600160d15f868685818110610ce857610ce8612a64565b9050602002016020810190610cfd91906127ca565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe848483818110610d5757610d57612a64565b9050602002016020810190610d6c91906127ca565b604051610d7991906128d3565b60405180910390a15b600101610c7f565b50506106206001606555565b610d9e611a9e565b610c475f6115d1565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610df15760405163f739589b60e01b815260040160405180910390fd5b610df961168b565b5f610e05858585611af8565b92505050610e136001606555565b9392505050565b6001600160a01b0381165f90815260ce6020526040812054606091829190816001600160401b03811115610e5057610e5061262e565b604051908082528060200260200182016040528015610e79578160200160208202803683370190505b5090505f5b82811015610f07576001600160a01b0386165f90815260cd6020908152604080832060ce9092528220805491929184908110610ebc57610ebc612a64565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ef457610ef4612a64565b6020908102919091010152600101610e7e565b5060ce5f866001600160a01b03166001600160a01b031681526020019081526020015f208181805480602002602001604051908101604052809291908181526020018280548015610f7f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f61575b50505050509150935093505050915091565b604080517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922460208201526001600160a01b03808916928201929092528187166060820152908516608082015260a0810184905260c0810183905260e081018290525f90611017906101000160405160208183030381529060405280519060200120611bbe565b979650505050505050565b60cb546001600160a01b0316331461104d576040516320ba3ff960e21b815260040160405180910390fd5b61105561168b565b805f5b81811015610d8a5760d15f85858481811061107557611075612a64565b905060200201602081019061108a91906127ca565b6001600160a01b0316815260208101919091526040015f205460ff161561115b575f60d15f8686858181106110c1576110c1612a64565b90506020020160208101906110d691906127ca565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba03084848381811061113057611130612a64565b905060200201602081019061114591906127ca565b60405161115291906128d3565b60405180910390a15b600101611058565b61116b611a9e565b61117361168b565b61117c81611622565b610aee6001606555565b60ce602052815f5260405f20818154811061119f575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6001600160a01b0381165f90815260ce602090815260409182902080548351818402810184019094528084526060939283018282801561122157602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611203575b50505050509050919050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112765760405163f739589b60e01b815260040160405180910390fd5b61127e61168b565b5f61128a60d4846118ce565b91506112a3905060d48461129e8585612ac0565b611c04565b507fca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff83836040516112d5929190612a78565b60405180910390a1506106206001606555565b6098545f9081906001908116036113125760405163840a48d560e01b815260040160405180910390fd5b61131a61168b565b61132633868686611736565b91506113326001606555565b509392505050565b611342611a9e565b6001600160a01b0381166113a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ba565b610aee816115d1565b60408051808201909152600a81526922b4b3b2b72630bcb2b960b11b6020909101525f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea61141d611c19565b805160209182012060408051928301949094529281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e99190612a91565b6001600160a01b0316336001600160a01b03161461151a5760405163794821ff60e01b815260040160405180910390fd5b609854801982198116146115415760405163c61dca5d60e01b815260040160405180910390fd5b609882905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f5f61158c60d4846118ce565b949350505050565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b6002606554036116dd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106ba565b6002606555565b4281101561170557604051630819bdcd60e01b815260040160405180910390fd5b6117196001600160a01b0385168484611cb5565b61074457604051638baa579f60e01b815260040160405180910390fd5b6001600160a01b0383165f90815260d16020526040812054849060ff1661177057604051632efd965160e11b815260040160405180910390fd5b6117856001600160a01b038516338786611d13565b6040516311f9fbc960e21b81526001600160a01b038616906347e7ef24906117b39087908790600401612a78565b6020604051808303815f875af11580156117cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f39190612ad3565b91505f5f6118028888866118f9565b604051631e328e7960e11b81526001600160a01b038b811660048301528a8116602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015611880575f5ffd5b505af1158015611892573d5f5f3e3d5ffd5b50505050505050949350505050565b5f6118ab82611d6b565b92915050565b5f8080806118bf8686611d75565b909450925050505b9250929050565b5f8080806118bf866001600160a01b038716611d9e565b5f610e13836001600160a01b038416611dd6565b5f806001600160a01b038516611922576040516316f2ccc960e01b815260040160405180910390fd5b825f03611942576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd60209081526040808320938816835292905290812054908190036119e8576001600160a01b0386165f90815260ce6020908152604090912054106119aa576040516301a1443960e31b815260040160405180910390fd5b6001600160a01b038681165f90815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169187169190911790555b6119f28482612ac0565b6001600160a01b038088165f90815260cd60209081526040808320938a16835292905281902091909155517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f6290611a4e90889088908890612a40565b60405180910390a1959294509192505050565b60605f611a6d83611df2565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610c475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106ba565b5f5f825f03611b1a576040516342061b2560e11b815260040160405180910390fd5b6001600160a01b038086165f90815260cd602090815260408083209388168352929052205480841115611b6057604051634b18b19360e01b815260040160405180910390fd5b611b6a8482612aea565b6001600160a01b038088165f90815260cd60209081526040808320938a168352929052908120829055909150819003611bb257611ba78686611e19565b600192509050610b5d565b5f969095509350505050565b5f611bc76113b0565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f61158c846001600160a01b03851684611f97565b60605f611c457f0000000000000000000000000000000000000000000000000000000000000000611a61565b9050805f81518110611c5957611c59612a64565b602001015160f81c60f81b81600181518110611c7757611c77612a64565b016020908101516040516001600160f81b03199384169281019290925291909116602182015260220160405160208183030381529060405291505090565b5f5f5f611cc28585611fb3565b90925090505f816004811115611cda57611cda612afd565b148015611cf85750856001600160a01b0316826001600160a01b0316145b80611d095750611d09868686611ff2565b9695505050505050565b610744846323b872dd60e01b858585604051602401611d3493929190612a40565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120d9565b5f6118ab826121b1565b5f8080611d8285856121ba565b5f81815260029690960160205260409095205494959350505050565b5f818152600283016020526040812054819080611dcb57611dbf85856121c5565b92505f91506118c79050565b6001925090506118c7565b5f8181526002830160205260408120819055610e1383836121d0565b5f60ff8216601f8111156118ab57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b0382165f90815260ce6020526040812054905b81811015611f2b576001600160a01b038481165f90815260ce6020526040902080549185169183908110611e6957611e69612a64565b5f918252602090912001546001600160a01b031603611f23576001600160a01b0384165f90815260ce602052604090208054611ea790600190612aea565b81548110611eb757611eb7612a64565b5f9182526020808320909101546001600160a01b03878116845260ce9092526040909220805491909216919083908110611ef357611ef3612a64565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f2b565b600101611e33565b818103611f4b57604051632df15a4160e11b815260040160405180910390fd5b6001600160a01b0384165f90815260ce60205260409020805480611f7157611f71612b11565b5f8281526020902081015f1990810180546001600160a01b031916905501905550505050565b5f828152600284016020526040812082905561158c84846121db565b5f5f8251604103611fe7576020830151604084015160608501515f1a611fdb878285856121e6565b945094505050506118c7565b505f905060026118c7565b5f5f5f856001600160a01b0316631626ba7e60e01b868660405160240161201a929190612b25565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516120589190612b3d565b5f60405180830381855afa9150503d805f8114612090576040519150601f19603f3d011682016040523d82523d5f602084013e612095565b606091505b50915091508180156120a957506020815110155b8015611d0957508051630b135d3f60e11b906120ce9083016020908101908401612ad3565b149695505050505050565b5f61212d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122999092919063ffffffff16565b905080515f148061214d57508080602001905181019061214d9190612a21565b6121ac5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106ba565b505050565b5f6118ab825490565b5f610e1383836122a7565b5f610e1383836122cd565b5f610e1383836122e4565b5f610e1383836123c7565b5f806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561221157505f90506003612290565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612262573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661228a575f60019250925050612290565b91505f90505b94509492505050565b606061158c84845f85612413565b5f825f0182815481106122bc576122bc612a64565b905f5260205f200154905092915050565b5f8181526001830160205260408120541515610e13565b5f81815260018301602052604081205480156123be575f612306600183612aea565b85549091505f9061231990600190612aea565b9050818114612378575f865f01828154811061233757612337612a64565b905f5260205f200154905080875f01848154811061235757612357612a64565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061238957612389612b11565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506118ab565b5f9150506118ab565b5f81815260018301602052604081205461240c57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556118ab565b505f6118ab565b6060824710156124745760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106ba565b5f5f866001600160a01b0316858760405161248f9190612b3d565b5f6040518083038185875af1925050503d805f81146124c9576040519150601f19603f3d011682016040523d82523d5f602084013e6124ce565b606091505b509150915061101787838387606083156125485782515f03612541576001600160a01b0385163b6125415760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ba565b508161158c565b61158c838381511561255d5781518083602001fd5b8060405162461bcd60e51b81526004016106ba9190612832565b5f60208284031215612587575f5ffd5b5035919050565b6001600160a01b0381168114610aee575f5ffd5b5f5f5f606084860312156125b4575f5ffd5b83356125bf8161258e565b925060208401356125cf8161258e565b929592945050506040919091013590565b5f5f5f5f608085870312156125f3575f5ffd5b84356125fe8161258e565b9350602085013561260e8161258e565b9250604085013561261e8161258e565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f5f60c08789031215612657575f5ffd5b86356126628161258e565b955060208701356126728161258e565b94506040870135935060608701356126898161258e565b92506080870135915060a08701356001600160401b038111156126aa575f5ffd5b8701601f810189136126ba575f5ffd5b80356001600160401b038111156126d3576126d361262e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156127015761270161262e565b6040528181528282016020018b1015612718575f5ffd5b816020840160208301375f602083830101528093505050509295509295509295565b5f8151808452602084019350602083015f5b8281101561276a57815186526020958601959091019060010161274c565b5093949350505050565b604080825283519082018190525f9060208501906060840190835b818110156127b65783516001600160a01b031683526020938401939092019160010161278f565b50508381036020850152611d09818661273a565b5f602082840312156127da575f5ffd5b8135610e138161258e565b5f5b838110156127ff5781810151838201526020016127e7565b50505f910152565b5f815180845261281e8160208601602086016127e5565b601f01601f19169290920160200192915050565b602081525f610e136020830184612807565b5f60208284031215612854575f5ffd5b813560ff81168114610e13575f5ffd5b5f5f60208385031215612875575f5ffd5b82356001600160401b0381111561288a575f5ffd5b8301601f8101851361289a575f5ffd5b80356001600160401b038111156128af575f5ffd5b8560208260051b84010111156128c3575f5ffd5b6020919091019590945092505050565b6001600160a01b0391909116815260200190565b5f8151808452602084019350602083015f5b8281101561276a5781516001600160a01b03168652602095860195909101906001016128f9565b604081525f61293260408301856128e7565b8281036020840152612944818561273a565b95945050505050565b5f5f5f5f5f5f60c08789031215612962575f5ffd5b863561296d8161258e565b9550602087013561297d8161258e565b9450604087013561298d8161258e565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f604083850312156129bf575f5ffd5b82356129ca8161258e565b946020939093013593505050565b602081525f610e1360208301846128e7565b5f5f604083850312156129fb575f5ffd5b8235612a068161258e565b91506020830135612a168161258e565b809150509250929050565b5f60208284031215612a31575f5ffd5b81518015158114610e13575f5ffd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b03929092168252602082015260400190565b5f60208284031215612aa1575f5ffd5b8151610e138161258e565b634e487b7160e01b5f52601160045260245ffd5b808201808211156118ab576118ab612aac565b5f60208284031215612ae3575f5ffd5b5051919050565b818103818111156118ab576118ab612aac565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b828152604060208201525f61158c6040830184612807565b5f8251612b4e8184602087016127e5565b919091019291505056fea2646970667358221220a295972c9a6fe7a11ad0c2a2281742cfa9e215d07080c6d656d3a293e05744ef64736f6c634300081b0033
1073    /// ```
1074    #[rustfmt::skip]
1075    #[allow(clippy::all)]
1076    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1077        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xD7W_5`\xE0\x1C\x80c\x8B\x8A\xAC<\x11a\x01\x01W\x80c\xDE\xBE\x1E\xAB\x11a\0\x9AW\x80c\xDE\xBE\x1E\xAB\x14a\x04\x88W\x80c\xDF\\\xF7#\x14a\x04\x9BW\x80c\xE7\xA0P\xAA\x14a\x04\xC2W\x80c\xF2\xFD\xE3\x8B\x14a\x04\xD5W\x80c\xF3\xB4\xA0\0\x14a\x04\xE8W\x80c\xF6\x98\xDA%\x14a\x04\xF2W\x80c\xFA\xBC\x1C\xBC\x14a\x04\xFAW\x80c\xFD\x98\x04#\x14a\x05\rW\x80c\xFE$:\x17\x14a\x05 W__\xFD[\x80c\x8B\x8A\xAC<\x14a\x03\xAFW\x80c\x8D\xA5\xCB[\x14a\x03\xD7W\x80c\x94\xF6I\xDD\x14a\x03\xE8W\x80c\x96\x7F\xC0\xD2\x14a\x04\tW\x80c\x9A\xC0\x1Da\x14a\x04\x1CW\x80c\xB5\xD8\xB5\xB8\x14a\x04/W\x80c\xC6eg\x02\x14a\x04BW\x80c\xCB\xC2\xBDb\x14a\x04UW\x80c\xDED\xAC\xB6\x14a\x04hW__\xFD[\x80cY\\jg\x11a\x01sW\x80cY\\jg\x14a\x02\xC9W\x80cZ\xC8j\xB7\x14a\x02\xD1W\x80c\\\x97Z\xBB\x14a\x03\x04W\x80c]\xE0\x8F\xF2\x14a\x03\x0CW\x80cf<\x1D\xE4\x14a\x03\x1FW\x80cqP\x18\xA6\x14a\x03AW\x80crJ\xF4#\x14a\x03IW\x80c~\xCE\xBE\0\x14a\x03\\W\x80c\x88o\x11\x95\x14a\x03{W__\xFD[\x80c\x13d9\xDD\x14a\x01\xDBW\x80c\x17\x94\xBB<\x14a\x01\xF0W\x80c.\xAEA\x8C\x14a\x02\x03W\x80c2\xE8\x9A\xCE\x14a\x02\x16W\x80c6\xA8\xC5\0\x14a\x02<W\x80cH\x82^\x94\x14a\x02RW\x80cKm]n\x14a\x02yW\x80cP\xFFr%\x14a\x02\x8CW\x80cT\xFDMP\x14a\x02\xB4W[__\xFD[a\x01\xEEa\x01\xE96`\x04a%wV[a\x05JV[\0[a\x01\xEEa\x01\xFE6`\x04a%\xA2V[a\x06$V[a\x01\xEEa\x02\x116`\x04a%\xE0V[a\x07JV[a\x02)a\x02$6`\x04a&BV[a\x08\x02V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02Da\x08\xA6V[`@Qa\x023\x92\x91\x90a'tV[a\x02)\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$\x81V[a\x01\xEEa\x02\x876`\x04a'\xCAV[a\t\xC1V[a\x02\x9Fa\x02\x9A6`\x04a%\xA2V[a\n\xF1V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x023V[a\x02\xBCa\x0BeV[`@Qa\x023\x91\x90a(2V[a\x01\xEEa\x0B\x95V[a\x02\xF4a\x02\xDF6`\x04a(DV[`\x98T`\x01`\xFF\x90\x92\x16\x91\x90\x91\x1B\x90\x81\x16\x14\x90V[`@Q\x90\x15\x15\x81R` \x01a\x023V[`\x98Ta\x02)V[a\x01\xEEa\x03\x1A6`\x04a(dV[a\x0CIV[a\x02\xF4a\x03-6`\x04a'\xCAV[`\xD1` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[a\x01\xEEa\r\x96V[a\x02)a\x03W6`\x04a%\xA2V[a\r\xA7V[a\x02)a\x03j6`\x04a'\xCAV[`\xCA` R_\x90\x81R`@\x90 T\x81V[a\x03\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qa\x023\x91\x90a(\xD3V[a\x02)a\x03\xBD6`\x04a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\xCE` R`@\x90 T\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x16a\x03\xA2V[a\x03\xFBa\x03\xF66`\x04a'\xCAV[a\x0E\x1AV[`@Qa\x023\x92\x91\x90a) V[`\xCBTa\x03\xA2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x02)a\x04*6`\x04a)MV[a\x0F\x91V[a\x01\xEEa\x04=6`\x04a(dV[a\x10\"V[a\x01\xEEa\x04P6`\x04a'\xCAV[a\x11cV[a\x03\xA2a\x04c6`\x04a)\xAEV[a\x11\x86V[a\x04{a\x04v6`\x04a'\xCAV[a\x11\xBAV[`@Qa\x023\x91\x90a)\xD8V[a\x01\xEEa\x04\x966`\x04a)\xAEV[a\x12-V[a\x03\xA2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02)a\x04\xD06`\x04a%\xA2V[a\x12\xE8V[a\x01\xEEa\x04\xE36`\x04a'\xCAV[a\x13:V[a\x03\xA2b\x0E\x16\xE4\x81V[a\x02)a\x13\xB0V[a\x01\xEEa\x05\x086`\x04a%wV[a\x14iV[a\x02)a\x05\x1B6`\x04a'\xCAV[a\x15\x7FV[a\x02)a\x05.6`\x04a)\xEAV[`\xCD` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Qc#}\xFBG`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cF\xFB\xF6\x8E\x90a\x05\x96\x903\x90`\x04\x01a(\xD3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xB1W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\xD5\x91\x90a*!V[a\x05\xF2W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x81\x81\x16\x81\x14a\x06\x17W`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06 \x82a\x15\x94V[PPV[_Ta\x01\0\x90\x04`\xFF\x16\x15\x80\x80\x15a\x06BWP_T`\x01`\xFF\x90\x91\x16\x10[\x80a\x06[WP0;\x15\x80\x15a\x06[WP_T`\xFF\x16`\x01\x14[a\x06\xC3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[_\x80T`\xFF\x19\x16`\x01\x17\x90U\x80\x15a\x06\xE4W_\x80Ta\xFF\0\x19\x16a\x01\0\x17\x90U[a\x06\xED\x82a\x15\x94V[a\x06\xF6\x84a\x15\xD1V[a\x06\xFF\x83a\x16\"V[\x80\x15a\x07DW_\x80Ta\xFF\0\x19\x16\x90U`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x07\x93W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\x9Ba\x16\x8BV[`@Qcl\xE5v\x89`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90c\xD9\xCA\xED\x12\x90a\x07\xCB\x90\x87\x90\x86\x90\x86\x90`\x04\x01a*@V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07\xE2W__\xFD[PZ\xF1\x15\x80\x15a\x07\xF4W=__>=_\xFD[PPPPa\x07D`\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x08,W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x084a\x16\x8BV[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\xCA` R`@\x90 Ta\x08e\x86a\x08^\x81\x8C\x8C\x8C\x87\x8Ca\x0F\x91V[\x86\x88a\x16\xE4V[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCA` R`@\x90 `\x01\x82\x01\x90Ua\x08\x8E\x86\x8A\x8A\x8Aa\x176V[\x92PPa\x08\x9B`\x01`eUV[P\x96\x95PPPPPPV[``\x80_a\x08\xB4`\xD4a\x18\xA1V[\x90P_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xCFWa\x08\xCFa&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xF8W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\t\x14Wa\t\x14a&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t=W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\t\xB6W__a\tW`\xD4\x84a\x18\xB1V[\x91P\x91P\x81\x85\x84\x81Q\x81\x10a\tnWa\tna*dV[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x80\x84\x84\x81Q\x81\x10a\t\xA1Wa\t\xA1a*dV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\tBV[P\x90\x94\x90\x93P\x91PPV[a\t\xC9a\x16\x8BV[_a\t\xD5`\xD4\x83a\x18\xCEV[\x91PPa\t\xE3`\xD4\x83a\x18\xE5V[P\x7F\xD9\xD0\x82\xC3\xECO:?\xFAU\xC3$\x93\x9A\x06@\x7F_\xBC\xB8}^\x0C\xE3\xB9P\x8C\x92\xC8N\xD89\x82\x82`@Qa\n\x15\x92\x91\x90a*xV[`@Q\x80\x91\x03\x90\xA1\x80\x15a\n\xE3W\x81`\x01`\x01`\xA0\x1B\x03\x16c\xD9\xCA\xED\x12b\x0E\x16\xE4\x84`\x01`\x01`\xA0\x1B\x03\x16c$\x95\xA5\x99`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nrW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x96\x91\x90a*\x91V[\x84`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\n\xB5\x93\x92\x91\x90a*@V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xCCW__\xFD[PZ\xF1\x15\x80\x15a\n\xDEW=__>=_\xFD[PPPP[Pa\n\xEE`\x01`eUV[PV[_\x803`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0B<W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0BDa\x16\x8BV[a\x0BO\x85\x85\x85a\x18\xF9V[\x91P\x91Pa\x0B]`\x01`eUV[\x93P\x93\x91PPV[``a\x0B\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1AaV[\x90P\x90V[`@Qc#}\xFBG`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cF\xFB\xF6\x8E\x90a\x0B\xE1\x903\x90`\x04\x01a(\xD3V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xFCW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C \x91\x90a*!V[a\x0C=W`@Qc\x1Dw\xD4w`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0CG_\x19a\x15\x94V[V[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CtW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C|a\x16\x8BV[\x80_[\x81\x81\x10\x15a\r\x8AW`\xD1_\x85\x85\x84\x81\x81\x10a\x0C\x9CWa\x0C\x9Ca*dV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xB1\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16a\r\x82W`\x01`\xD1_\x86\x86\x85\x81\x81\x10a\x0C\xE8Wa\x0C\xE8a*dV[\x90P` \x02\x01` \x81\x01\x90a\x0C\xFD\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F\x0C5\xB1}\x91\xC9n\xB2u\x1C\xD4V\xE1%/B\xA3\x86\xE5$\xEF\x9F\xF2n\xCC\x99P\x85\x9F\xDC\x04\xFE\x84\x84\x83\x81\x81\x10a\rWWa\rWa*dV[\x90P` \x02\x01` \x81\x01\x90a\rl\x91\x90a'\xCAV[`@Qa\ry\x91\x90a(\xD3V[`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x0C\x7FV[PPa\x06 `\x01`eUV[a\r\x9Ea\x1A\x9EV[a\x0CG_a\x15\xD1V[_3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\r\xF1W`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\xF9a\x16\x8BV[_a\x0E\x05\x85\x85\x85a\x1A\xF8V[\x92PPPa\x0E\x13`\x01`eUV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` R`@\x81 T``\x91\x82\x91\x90\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0EPWa\x0EPa&.V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0EyW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a\x0F\x07W`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 `\xCE\x90\x92R\x82 \x80T\x91\x92\x91\x84\x90\x81\x10a\x0E\xBCWa\x0E\xBCa*dV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x16\x83R\x82\x01\x92\x90\x92R`@\x01\x90 T\x82Q\x83\x90\x83\x90\x81\x10a\x0E\xF4Wa\x0E\xF4a*dV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E~V[P`\xCE_\x86`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ \x81\x81\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x0F\x7FW` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x0FaW[PPPPP\x91P\x93P\x93PPP\x91P\x91V[`@\x80Q\x7FC7\xF8-\x14.A\xF2\xA8\xC1\x05G\xCD\x8C\x85\x9B\xDD\xB9\"b\xA6\x10X\xE7xB\xE2M\x9D\xEA\x92$` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x80\x89\x16\x92\x82\x01\x92\x90\x92R\x81\x87\x16``\x82\x01R\x90\x85\x16`\x80\x82\x01R`\xA0\x81\x01\x84\x90R`\xC0\x81\x01\x83\x90R`\xE0\x81\x01\x82\x90R_\x90a\x10\x17\x90a\x01\0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1B\xBEV[\x97\x96PPPPPPPV[`\xCBT`\x01`\x01`\xA0\x1B\x03\x163\x14a\x10MW`@Qc \xBA?\xF9`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10Ua\x16\x8BV[\x80_[\x81\x81\x10\x15a\r\x8AW`\xD1_\x85\x85\x84\x81\x81\x10a\x10uWa\x10ua*dV[\x90P` \x02\x01` \x81\x01\x90a\x10\x8A\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11[W_`\xD1_\x86\x86\x85\x81\x81\x10a\x10\xC1Wa\x10\xC1a*dV[\x90P` \x02\x01` \x81\x01\x90a\x10\xD6\x91\x90a'\xCAV[`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U\x7F@tA;KD>NX\x01\x9F(U\xA8vQ\x135\x8C|r\xE3\x95\t\xC6\xAFE\xFC\x0F[\xA00\x84\x84\x83\x81\x81\x10a\x110Wa\x110a*dV[\x90P` \x02\x01` \x81\x01\x90a\x11E\x91\x90a'\xCAV[`@Qa\x11R\x91\x90a(\xD3V[`@Q\x80\x91\x03\x90\xA1[`\x01\x01a\x10XV[a\x11ka\x1A\x9EV[a\x11sa\x16\x8BV[a\x11|\x81a\x16\"V[a\n\xEE`\x01`eUV[`\xCE` R\x81_R`@_ \x81\x81T\x81\x10a\x11\x9FW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x91\x82\x90 \x80T\x83Q\x81\x84\x02\x81\x01\x84\x01\x90\x94R\x80\x84R``\x93\x92\x83\x01\x82\x82\x80\x15a\x12!W` \x02\x82\x01\x91\x90_R` _ \x90[\x81T`\x01`\x01`\xA0\x1B\x03\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x12\x03W[PPPPP\x90P\x91\x90PV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x12vW`@Qc\xF79X\x9B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12~a\x16\x8BV[_a\x12\x8A`\xD4\x84a\x18\xCEV[\x91Pa\x12\xA3\x90P`\xD4\x84a\x12\x9E\x85\x85a*\xC0V[a\x1C\x04V[P\x7F\xCA>\x02\xA4\xABz\xD3\xC4z\x8E6\xE5\xA6$\xC3\x01py\x17&\xABr\x0F\x1B\xAB\xFE\xF2\x10F\xD9S\xFF\x83\x83`@Qa\x12\xD5\x92\x91\x90a*xV[`@Q\x80\x91\x03\x90\xA1Pa\x06 `\x01`eUV[`\x98T_\x90\x81\x90`\x01\x90\x81\x16\x03a\x13\x12W`@Qc\x84\nH\xD5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1Aa\x16\x8BV[a\x13&3\x86\x86\x86a\x176V[\x91Pa\x132`\x01`eUV[P\x93\x92PPPV[a\x13Ba\x1A\x9EV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x13\xA7W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[a\n\xEE\x81a\x15\xD1V[`@\x80Q\x80\x82\x01\x90\x91R`\n\x81Ri\"\xB4\xB3\xB2\xB7&0\xBC\xB2\xB9`\xB1\x1B` \x90\x91\x01R_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x7Fq\xB6%\xCF\xADD\xBA\xC6;\x13\xDB\xA0\x7F.\x1D`\x84\xEE\x04\xB6\xF8u!\x01\xEC\xE6\x12mXN\xE6\xEAa\x14\x1Da\x1C\x19V[\x80Q` \x91\x82\x01 `@\x80Q\x92\x83\x01\x94\x90\x94R\x92\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xEA\xB6mz`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xC5W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xE9\x91\x90a*\x91V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x15\x1AW`@QcyH!\xFF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98T\x80\x19\x82\x19\x81\x16\x14a\x15AW`@Qc\xC6\x1D\xCA]`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x98\x82\x90U`@Q\x82\x81R3\x90\x7F5\x82\xD1\x82\x8E&\xBFV\xBD\x80\x15\x02\xBC\x02\x1A\xC0\xBC\x8A\xFBW\xC8&\xE4\x98kEY<\x8F\xAD8\x9C\x90` \x01`@Q\x80\x91\x03\x90\xA2PPV[__a\x15\x8C`\xD4\x84a\x18\xCEV[\x94\x93PPPPV[`\x98\x81\x90U`@Q\x81\x81R3\x90\x7F\xAB@\xA3t\xBCQ\xDE7\"\0\xA8\xBC\x98\x1A\xF8\xC9\xEC\xDC\x08\xDF\xDA\xEF\x0B\xB6\xE0\x9F\x88\xF3\xC6\x16\xEF=\x90` \x01`@Q\x80\x91\x03\x90\xA2PV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x90\x93U`@Q\x91\x16\x91\x90\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPV[`\xCBT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x83\x16` \x83\x01R\x7FBd'^Y9U\xFF\x9DaF\xA5\x1AE%\xF6\xDD\xAC\xE2\xE8\x1D\xB99\x1A\xBC\xC9\xD1\xCAH\x04})\x91\x01`@Q\x80\x91\x03\x90\xA1`\xCB\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\x02`eT\x03a\x16\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xBAV[`\x02`eUV[B\x81\x10\x15a\x17\x05W`@Qc\x08\x19\xBD\xCD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x19`\x01`\x01`\xA0\x1B\x03\x85\x16\x84\x84a\x1C\xB5V[a\x07DW`@Qc\x8B\xAAW\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\xD1` R`@\x81 T\x84\x90`\xFF\x16a\x17pW`@Qc.\xFD\x96Q`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x85`\x01`\x01`\xA0\x1B\x03\x85\x163\x87\x86a\x1D\x13V[`@Qc\x11\xF9\xFB\xC9`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90cG\xE7\xEF$\x90a\x17\xB3\x90\x87\x90\x87\x90`\x04\x01a*xV[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x17\xCFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xF3\x91\x90a*\xD3V[\x91P__a\x18\x02\x88\x88\x86a\x18\xF9V[`@Qc\x1E2\x8Ey`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16`\x04\x83\x01R\x8A\x81\x16`$\x83\x01R`D\x82\x01\x84\x90R`d\x82\x01\x83\x90R\x92\x94P\x90\x92P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90c<e\x1C\xF2\x90`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x80W__\xFD[PZ\xF1\x15\x80\x15a\x18\x92W=__>=_\xFD[PPPPPPP\x94\x93PPPPV[_a\x18\xAB\x82a\x1DkV[\x92\x91PPV[_\x80\x80\x80a\x18\xBF\x86\x86a\x1DuV[\x90\x94P\x92PPP[\x92P\x92\x90PV[_\x80\x80\x80a\x18\xBF\x86`\x01`\x01`\xA0\x1B\x03\x87\x16a\x1D\x9EV[_a\x0E\x13\x83`\x01`\x01`\xA0\x1B\x03\x84\x16a\x1D\xD6V[_\x80`\x01`\x01`\xA0\x1B\x03\x85\x16a\x19\"W`@Qc\x16\xF2\xCC\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82_\x03a\x19BW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x19\xE8W`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\xCE` \x90\x81R`@\x90\x91 T\x10a\x19\xAAW`@Qc\x01\xA1D9`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x81\x16_\x90\x81R`\xCE` \x90\x81R`@\x82 \x80T`\x01\x81\x01\x82U\x90\x83R\x91 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x87\x16\x91\x90\x91\x17\x90U[a\x19\xF2\x84\x82a*\xC0V[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x81\x90 \x91\x90\x91UQ\x7FUH\xC87\xAB\x06\x8C\xF5j,$y\xDF\x08\x82\xA4\x92/\xD2\x03\xED\xB7Qs!\x83\x1D\x95\x07\x8C_b\x90a\x1AN\x90\x88\x90\x88\x90\x88\x90a*@V[`@Q\x80\x91\x03\x90\xA1\x95\x92\x94P\x91\x92PPPV[``_a\x1Am\x83a\x1D\xF2V[`@\x80Q` \x80\x82R\x81\x83\x01\x90\x92R\x91\x92P_\x91\x90` \x82\x01\x81\x806\x837PPP\x91\x82RP` \x81\x01\x92\x90\x92RP\x90V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0CGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\xBAV[__\x82_\x03a\x1B\x1AW`@QcB\x06\x1B%`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x88\x16\x83R\x92\x90R T\x80\x84\x11\x15a\x1B`W`@QcK\x18\xB1\x93`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Bj\x84\x82a*\xEAV[`\x01`\x01`\xA0\x1B\x03\x80\x88\x16_\x90\x81R`\xCD` \x90\x81R`@\x80\x83 \x93\x8A\x16\x83R\x92\x90R\x90\x81 \x82\x90U\x90\x91P\x81\x90\x03a\x1B\xB2Wa\x1B\xA7\x86\x86a\x1E\x19V[`\x01\x92P\x90Pa\x0B]V[_\x96\x90\x95P\x93PPPPV[_a\x1B\xC7a\x13\xB0V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x91\x90\x91R`B\x81\x01\x83\x90R`b\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_a\x15\x8C\x84`\x01`\x01`\xA0\x1B\x03\x85\x16\x84a\x1F\x97V[``_a\x1CE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1AaV[\x90P\x80_\x81Q\x81\x10a\x1CYWa\x1CYa*dV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x81`\x01\x81Q\x81\x10a\x1CwWa\x1Cwa*dV[\x01` \x90\x81\x01Q`@Q`\x01`\x01`\xF8\x1B\x03\x19\x93\x84\x16\x92\x81\x01\x92\x90\x92R\x91\x90\x91\x16`!\x82\x01R`\"\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[___a\x1C\xC2\x85\x85a\x1F\xB3V[\x90\x92P\x90P_\x81`\x04\x81\x11\x15a\x1C\xDAWa\x1C\xDAa*\xFDV[\x14\x80\x15a\x1C\xF8WP\x85`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x14[\x80a\x1D\tWPa\x1D\t\x86\x86\x86a\x1F\xF2V[\x96\x95PPPPPPV[a\x07D\x84c#\xB8r\xDD`\xE0\x1B\x85\x85\x85`@Q`$\x01a\x1D4\x93\x92\x91\x90a*@V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x93\x16\x92\x90\x92\x17\x90\x91Ra \xD9V[_a\x18\xAB\x82a!\xB1V[_\x80\x80a\x1D\x82\x85\x85a!\xBAV[_\x81\x81R`\x02\x96\x90\x96\x01` R`@\x90\x95 T\x94\x95\x93PPPPV[_\x81\x81R`\x02\x83\x01` R`@\x81 T\x81\x90\x80a\x1D\xCBWa\x1D\xBF\x85\x85a!\xC5V[\x92P_\x91Pa\x18\xC7\x90PV[`\x01\x92P\x90Pa\x18\xC7V[_\x81\x81R`\x02\x83\x01` R`@\x81 \x81\x90Ua\x0E\x13\x83\x83a!\xD0V[_`\xFF\x82\x16`\x1F\x81\x11\x15a\x18\xABW`@Qc,\xD4J\xC3`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\xCE` R`@\x81 T\x90[\x81\x81\x10\x15a\x1F+W`\x01`\x01`\xA0\x1B\x03\x84\x81\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x91\x85\x16\x91\x83\x90\x81\x10a\x1EiWa\x1Eia*dV[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F#W`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80Ta\x1E\xA7\x90`\x01\x90a*\xEAV[\x81T\x81\x10a\x1E\xB7Wa\x1E\xB7a*dV[_\x91\x82R` \x80\x83 \x90\x91\x01T`\x01`\x01`\xA0\x1B\x03\x87\x81\x16\x84R`\xCE\x90\x92R`@\x90\x92 \x80T\x91\x90\x92\x16\x91\x90\x83\x90\x81\x10a\x1E\xF3Wa\x1E\xF3a*dV[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UPa\x1F+V[`\x01\x01a\x1E3V[\x81\x81\x03a\x1FKW`@Qc-\xF1ZA`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\xCE` R`@\x90 \x80T\x80a\x1FqWa\x1Fqa+\x11V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90UPPPPV[_\x82\x81R`\x02\x84\x01` R`@\x81 \x82\x90Ua\x15\x8C\x84\x84a!\xDBV[__\x82Q`A\x03a\x1F\xE7W` \x83\x01Q`@\x84\x01Q``\x85\x01Q_\x1Aa\x1F\xDB\x87\x82\x85\x85a!\xE6V[\x94P\x94PPPPa\x18\xC7V[P_\x90P`\x02a\x18\xC7V[___\x85`\x01`\x01`\xA0\x1B\x03\x16c\x16&\xBA~`\xE0\x1B\x86\x86`@Q`$\x01a \x1A\x92\x91\x90a+%V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x81R` \x82\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16`\x01`\x01`\xE0\x1B\x03\x19\x90\x94\x16\x93\x90\x93\x17\x90\x92R\x90Qa X\x91\x90a+=V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a \x90W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a \x95V[``\x91P[P\x91P\x91P\x81\x80\x15a \xA9WP` \x81Q\x10\x15[\x80\x15a\x1D\tWP\x80Qc\x0B\x13]?`\xE1\x1B\x90a \xCE\x90\x83\x01` \x90\x81\x01\x90\x84\x01a*\xD3V[\x14\x96\x95PPPPPPV[_a!-\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\"\x99\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x80Q_\x14\x80a!MWP\x80\x80` \x01\x90Q\x81\x01\x90a!M\x91\x90a*!V[a!\xACW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[PPPV[_a\x18\xAB\x82T\x90V[_a\x0E\x13\x83\x83a\"\xA7V[_a\x0E\x13\x83\x83a\"\xCDV[_a\x0E\x13\x83\x83a\"\xE4V[_a\x0E\x13\x83\x83a#\xC7V[_\x80o\xA2\xA8\x91\x8C\xA8[\xAF\xE2 \x16\xD0\xB9\x97\xE4\xDF``\x01`\xFF\x1B\x03\x83\x11\x15a\"\x11WP_\x90P`\x03a\"\x90V[`@\x80Q_\x80\x82R` \x82\x01\x80\x84R\x89\x90R`\xFF\x88\x16\x92\x82\x01\x92\x90\x92R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\"bW=__>=_\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16a\"\x8AW_`\x01\x92P\x92PPa\"\x90V[\x91P_\x90P[\x94P\x94\x92PPPV[``a\x15\x8C\x84\x84_\x85a$\x13V[_\x82_\x01\x82\x81T\x81\x10a\"\xBCWa\"\xBCa*dV[\x90_R` _ \x01T\x90P\x92\x91PPV[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x15\x15a\x0E\x13V[_\x81\x81R`\x01\x83\x01` R`@\x81 T\x80\x15a#\xBEW_a#\x06`\x01\x83a*\xEAV[\x85T\x90\x91P_\x90a#\x19\x90`\x01\x90a*\xEAV[\x90P\x81\x81\x14a#xW_\x86_\x01\x82\x81T\x81\x10a#7Wa#7a*dV[\x90_R` _ \x01T\x90P\x80\x87_\x01\x84\x81T\x81\x10a#WWa#Wa*dV[_\x91\x82R` \x80\x83 \x90\x91\x01\x92\x90\x92U\x91\x82R`\x01\x88\x01\x90R`@\x90 \x83\x90U[\x85T\x86\x90\x80a#\x89Wa#\x89a+\x11V[`\x01\x90\x03\x81\x81\x90_R` _ \x01_\x90U\x90U\x85`\x01\x01_\x86\x81R` \x01\x90\x81R` \x01_ _\x90U`\x01\x93PPPPa\x18\xABV[_\x91PPa\x18\xABV[_\x81\x81R`\x01\x83\x01` R`@\x81 Ta$\x0CWP\x81T`\x01\x81\x81\x01\x84U_\x84\x81R` \x80\x82 \x90\x93\x01\x84\x90U\x84T\x84\x82R\x82\x86\x01\x90\x93R`@\x90 \x91\x90\x91Ua\x18\xABV[P_a\x18\xABV[``\x82G\x10\x15a$tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FAddress: insufficient balance fo`D\x82\x01Re\x1C\x88\x18\xD8[\x1B`\xD2\x1B`d\x82\x01R`\x84\x01a\x06\xBAV[__\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa$\x8F\x91\x90a+=V[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a$\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$\xCEV[``\x91P[P\x91P\x91Pa\x10\x17\x87\x83\x83\x87``\x83\x15a%HW\x82Q_\x03a%AW`\x01`\x01`\xA0\x1B\x03\x85\x16;a%AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06\xBAV[P\x81a\x15\x8CV[a\x15\x8C\x83\x83\x81Q\x15a%]W\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\xBA\x91\x90a(2V[_` \x82\x84\x03\x12\x15a%\x87W__\xFD[P5\x91\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\n\xEEW__\xFD[___``\x84\x86\x03\x12\x15a%\xB4W__\xFD[\x835a%\xBF\x81a%\x8EV[\x92P` \x84\x015a%\xCF\x81a%\x8EV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a%\xF3W__\xFD[\x845a%\xFE\x81a%\x8EV[\x93P` \x85\x015a&\x0E\x81a%\x8EV[\x92P`@\x85\x015a&\x1E\x81a%\x8EV[\x93\x96\x92\x95P\x92\x93``\x015\x92PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[______`\xC0\x87\x89\x03\x12\x15a&WW__\xFD[\x865a&b\x81a%\x8EV[\x95P` \x87\x015a&r\x81a%\x8EV[\x94P`@\x87\x015\x93P``\x87\x015a&\x89\x81a%\x8EV[\x92P`\x80\x87\x015\x91P`\xA0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xAAW__\xFD[\x87\x01`\x1F\x81\x01\x89\x13a&\xBAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xD3Wa&\xD3a&.V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a'\x01Wa'\x01a&.V[`@R\x81\x81R\x82\x82\x01` \x01\x8B\x10\x15a'\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92\x95P\x92\x95P\x92\x95V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'jW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a'LV[P\x93\x94\x93PPPPV[`@\x80\x82R\x83Q\x90\x82\x01\x81\x90R_\x90` \x85\x01\x90``\x84\x01\x90\x83[\x81\x81\x10\x15a'\xB6W\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a'\x8FV[PP\x83\x81\x03` \x85\x01Ra\x1D\t\x81\x86a':V[_` \x82\x84\x03\x12\x15a'\xDAW__\xFD[\x815a\x0E\x13\x81a%\x8EV[_[\x83\x81\x10\x15a'\xFFW\x81\x81\x01Q\x83\x82\x01R` \x01a'\xE7V[PP_\x91\x01RV[_\x81Q\x80\x84Ra(\x1E\x81` \x86\x01` \x86\x01a'\xE5V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x0E\x13` \x83\x01\x84a(\x07V[_` \x82\x84\x03\x12\x15a(TW__\xFD[\x815`\xFF\x81\x16\x81\x14a\x0E\x13W__\xFD[__` \x83\x85\x03\x12\x15a(uW__\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a(\x8AW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a(\x9AW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xAFW__\xFD[\x85` \x82`\x05\x1B\x84\x01\x01\x11\x15a(\xC3W__\xFD[` \x91\x90\x91\x01\x95\x90\x94P\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a'jW\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a(\xF9V[`@\x81R_a)2`@\x83\x01\x85a(\xE7V[\x82\x81\x03` \x84\x01Ra)D\x81\x85a':V[\x95\x94PPPPPV[______`\xC0\x87\x89\x03\x12\x15a)bW__\xFD[\x865a)m\x81a%\x8EV[\x95P` \x87\x015a)}\x81a%\x8EV[\x94P`@\x87\x015a)\x8D\x81a%\x8EV[\x95\x98\x94\x97P\x94\x95``\x81\x015\x95P`\x80\x81\x015\x94`\xA0\x90\x91\x015\x93P\x91PPV[__`@\x83\x85\x03\x12\x15a)\xBFW__\xFD[\x825a)\xCA\x81a%\x8EV[\x94` \x93\x90\x93\x015\x93PPPV[` \x81R_a\x0E\x13` \x83\x01\x84a(\xE7V[__`@\x83\x85\x03\x12\x15a)\xFBW__\xFD[\x825a*\x06\x81a%\x8EV[\x91P` \x83\x015a*\x16\x81a%\x8EV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a*1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x0E\x13W__\xFD[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R` \x82\x01R`@\x01\x90V[_` \x82\x84\x03\x12\x15a*\xA1W__\xFD[\x81Qa\x0E\x13\x81a%\x8EV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x18\xABWa\x18\xABa*\xACV[_` \x82\x84\x03\x12\x15a*\xE3W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x18\xABWa\x18\xABa*\xACV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[\x82\x81R`@` \x82\x01R_a\x15\x8C`@\x83\x01\x84a(\x07V[_\x82Qa+N\x81\x84` \x87\x01a'\xE5V[\x91\x90\x91\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xA2\x95\x97,\x9Ao\xE7\xA1\x1A\xD0\xC2\xA2(\x17B\xCF\xA9\xE2\x15\xD0p\x80\xC6\xD6V\xD3\xA2\x93\xE0WD\xEFdsolcC\0\x08\x1B\x003",
1078    );
1079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1080    /**Custom error with signature `CurrentlyPaused()` and selector `0x840a48d5`.
1081```solidity
1082error CurrentlyPaused();
1083```*/
1084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1085    #[derive(Clone)]
1086    pub struct CurrentlyPaused {}
1087    #[allow(
1088        non_camel_case_types,
1089        non_snake_case,
1090        clippy::pub_underscore_fields,
1091        clippy::style
1092    )]
1093    const _: () = {
1094        use alloy::sol_types as alloy_sol_types;
1095        #[doc(hidden)]
1096        type UnderlyingSolTuple<'a> = ();
1097        #[doc(hidden)]
1098        type UnderlyingRustTuple<'a> = ();
1099        #[cfg(test)]
1100        #[allow(dead_code, unreachable_patterns)]
1101        fn _type_assertion(
1102            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1103        ) {
1104            match _t {
1105                alloy_sol_types::private::AssertTypeEq::<
1106                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1107                >(_) => {}
1108            }
1109        }
1110        #[automatically_derived]
1111        #[doc(hidden)]
1112        impl ::core::convert::From<CurrentlyPaused> for UnderlyingRustTuple<'_> {
1113            fn from(value: CurrentlyPaused) -> Self {
1114                ()
1115            }
1116        }
1117        #[automatically_derived]
1118        #[doc(hidden)]
1119        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CurrentlyPaused {
1120            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1121                Self {}
1122            }
1123        }
1124        #[automatically_derived]
1125        impl alloy_sol_types::SolError for CurrentlyPaused {
1126            type Parameters<'a> = UnderlyingSolTuple<'a>;
1127            type Token<'a> = <Self::Parameters<
1128                'a,
1129            > as alloy_sol_types::SolType>::Token<'a>;
1130            const SIGNATURE: &'static str = "CurrentlyPaused()";
1131            const SELECTOR: [u8; 4] = [132u8, 10u8, 72u8, 213u8];
1132            #[inline]
1133            fn new<'a>(
1134                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1135            ) -> Self {
1136                tuple.into()
1137            }
1138            #[inline]
1139            fn tokenize(&self) -> Self::Token<'_> {
1140                ()
1141            }
1142        }
1143    };
1144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1145    /**Custom error with signature `InputAddressZero()` and selector `0x73632176`.
1146```solidity
1147error InputAddressZero();
1148```*/
1149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1150    #[derive(Clone)]
1151    pub struct InputAddressZero {}
1152    #[allow(
1153        non_camel_case_types,
1154        non_snake_case,
1155        clippy::pub_underscore_fields,
1156        clippy::style
1157    )]
1158    const _: () = {
1159        use alloy::sol_types as alloy_sol_types;
1160        #[doc(hidden)]
1161        type UnderlyingSolTuple<'a> = ();
1162        #[doc(hidden)]
1163        type UnderlyingRustTuple<'a> = ();
1164        #[cfg(test)]
1165        #[allow(dead_code, unreachable_patterns)]
1166        fn _type_assertion(
1167            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1168        ) {
1169            match _t {
1170                alloy_sol_types::private::AssertTypeEq::<
1171                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1172                >(_) => {}
1173            }
1174        }
1175        #[automatically_derived]
1176        #[doc(hidden)]
1177        impl ::core::convert::From<InputAddressZero> for UnderlyingRustTuple<'_> {
1178            fn from(value: InputAddressZero) -> Self {
1179                ()
1180            }
1181        }
1182        #[automatically_derived]
1183        #[doc(hidden)]
1184        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputAddressZero {
1185            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1186                Self {}
1187            }
1188        }
1189        #[automatically_derived]
1190        impl alloy_sol_types::SolError for InputAddressZero {
1191            type Parameters<'a> = UnderlyingSolTuple<'a>;
1192            type Token<'a> = <Self::Parameters<
1193                'a,
1194            > as alloy_sol_types::SolType>::Token<'a>;
1195            const SIGNATURE: &'static str = "InputAddressZero()";
1196            const SELECTOR: [u8; 4] = [115u8, 99u8, 33u8, 118u8];
1197            #[inline]
1198            fn new<'a>(
1199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1200            ) -> Self {
1201                tuple.into()
1202            }
1203            #[inline]
1204            fn tokenize(&self) -> Self::Token<'_> {
1205                ()
1206            }
1207        }
1208    };
1209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1210    /**Custom error with signature `InvalidNewPausedStatus()` and selector `0xc61dca5d`.
1211```solidity
1212error InvalidNewPausedStatus();
1213```*/
1214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1215    #[derive(Clone)]
1216    pub struct InvalidNewPausedStatus {}
1217    #[allow(
1218        non_camel_case_types,
1219        non_snake_case,
1220        clippy::pub_underscore_fields,
1221        clippy::style
1222    )]
1223    const _: () = {
1224        use alloy::sol_types as alloy_sol_types;
1225        #[doc(hidden)]
1226        type UnderlyingSolTuple<'a> = ();
1227        #[doc(hidden)]
1228        type UnderlyingRustTuple<'a> = ();
1229        #[cfg(test)]
1230        #[allow(dead_code, unreachable_patterns)]
1231        fn _type_assertion(
1232            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1233        ) {
1234            match _t {
1235                alloy_sol_types::private::AssertTypeEq::<
1236                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1237                >(_) => {}
1238            }
1239        }
1240        #[automatically_derived]
1241        #[doc(hidden)]
1242        impl ::core::convert::From<InvalidNewPausedStatus> for UnderlyingRustTuple<'_> {
1243            fn from(value: InvalidNewPausedStatus) -> Self {
1244                ()
1245            }
1246        }
1247        #[automatically_derived]
1248        #[doc(hidden)]
1249        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidNewPausedStatus {
1250            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1251                Self {}
1252            }
1253        }
1254        #[automatically_derived]
1255        impl alloy_sol_types::SolError for InvalidNewPausedStatus {
1256            type Parameters<'a> = UnderlyingSolTuple<'a>;
1257            type Token<'a> = <Self::Parameters<
1258                'a,
1259            > as alloy_sol_types::SolType>::Token<'a>;
1260            const SIGNATURE: &'static str = "InvalidNewPausedStatus()";
1261            const SELECTOR: [u8; 4] = [198u8, 29u8, 202u8, 93u8];
1262            #[inline]
1263            fn new<'a>(
1264                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1265            ) -> Self {
1266                tuple.into()
1267            }
1268            #[inline]
1269            fn tokenize(&self) -> Self::Token<'_> {
1270                ()
1271            }
1272        }
1273    };
1274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1275    /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`.
1276```solidity
1277error InvalidShortString();
1278```*/
1279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1280    #[derive(Clone)]
1281    pub struct InvalidShortString {}
1282    #[allow(
1283        non_camel_case_types,
1284        non_snake_case,
1285        clippy::pub_underscore_fields,
1286        clippy::style
1287    )]
1288    const _: () = {
1289        use alloy::sol_types as alloy_sol_types;
1290        #[doc(hidden)]
1291        type UnderlyingSolTuple<'a> = ();
1292        #[doc(hidden)]
1293        type UnderlyingRustTuple<'a> = ();
1294        #[cfg(test)]
1295        #[allow(dead_code, unreachable_patterns)]
1296        fn _type_assertion(
1297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1298        ) {
1299            match _t {
1300                alloy_sol_types::private::AssertTypeEq::<
1301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1302                >(_) => {}
1303            }
1304        }
1305        #[automatically_derived]
1306        #[doc(hidden)]
1307        impl ::core::convert::From<InvalidShortString> for UnderlyingRustTuple<'_> {
1308            fn from(value: InvalidShortString) -> Self {
1309                ()
1310            }
1311        }
1312        #[automatically_derived]
1313        #[doc(hidden)]
1314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidShortString {
1315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1316                Self {}
1317            }
1318        }
1319        #[automatically_derived]
1320        impl alloy_sol_types::SolError for InvalidShortString {
1321            type Parameters<'a> = UnderlyingSolTuple<'a>;
1322            type Token<'a> = <Self::Parameters<
1323                'a,
1324            > as alloy_sol_types::SolType>::Token<'a>;
1325            const SIGNATURE: &'static str = "InvalidShortString()";
1326            const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8];
1327            #[inline]
1328            fn new<'a>(
1329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1330            ) -> Self {
1331                tuple.into()
1332            }
1333            #[inline]
1334            fn tokenize(&self) -> Self::Token<'_> {
1335                ()
1336            }
1337        }
1338    };
1339    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1340    /**Custom error with signature `InvalidSignature()` and selector `0x8baa579f`.
1341```solidity
1342error InvalidSignature();
1343```*/
1344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1345    #[derive(Clone)]
1346    pub struct InvalidSignature {}
1347    #[allow(
1348        non_camel_case_types,
1349        non_snake_case,
1350        clippy::pub_underscore_fields,
1351        clippy::style
1352    )]
1353    const _: () = {
1354        use alloy::sol_types as alloy_sol_types;
1355        #[doc(hidden)]
1356        type UnderlyingSolTuple<'a> = ();
1357        #[doc(hidden)]
1358        type UnderlyingRustTuple<'a> = ();
1359        #[cfg(test)]
1360        #[allow(dead_code, unreachable_patterns)]
1361        fn _type_assertion(
1362            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1363        ) {
1364            match _t {
1365                alloy_sol_types::private::AssertTypeEq::<
1366                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1367                >(_) => {}
1368            }
1369        }
1370        #[automatically_derived]
1371        #[doc(hidden)]
1372        impl ::core::convert::From<InvalidSignature> for UnderlyingRustTuple<'_> {
1373            fn from(value: InvalidSignature) -> Self {
1374                ()
1375            }
1376        }
1377        #[automatically_derived]
1378        #[doc(hidden)]
1379        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSignature {
1380            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1381                Self {}
1382            }
1383        }
1384        #[automatically_derived]
1385        impl alloy_sol_types::SolError for InvalidSignature {
1386            type Parameters<'a> = UnderlyingSolTuple<'a>;
1387            type Token<'a> = <Self::Parameters<
1388                'a,
1389            > as alloy_sol_types::SolType>::Token<'a>;
1390            const SIGNATURE: &'static str = "InvalidSignature()";
1391            const SELECTOR: [u8; 4] = [139u8, 170u8, 87u8, 159u8];
1392            #[inline]
1393            fn new<'a>(
1394                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1395            ) -> Self {
1396                tuple.into()
1397            }
1398            #[inline]
1399            fn tokenize(&self) -> Self::Token<'_> {
1400                ()
1401            }
1402        }
1403    };
1404    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1405    /**Custom error with signature `MaxStrategiesExceeded()` and selector `0x0d0a21c8`.
1406```solidity
1407error MaxStrategiesExceeded();
1408```*/
1409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1410    #[derive(Clone)]
1411    pub struct MaxStrategiesExceeded {}
1412    #[allow(
1413        non_camel_case_types,
1414        non_snake_case,
1415        clippy::pub_underscore_fields,
1416        clippy::style
1417    )]
1418    const _: () = {
1419        use alloy::sol_types as alloy_sol_types;
1420        #[doc(hidden)]
1421        type UnderlyingSolTuple<'a> = ();
1422        #[doc(hidden)]
1423        type UnderlyingRustTuple<'a> = ();
1424        #[cfg(test)]
1425        #[allow(dead_code, unreachable_patterns)]
1426        fn _type_assertion(
1427            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1428        ) {
1429            match _t {
1430                alloy_sol_types::private::AssertTypeEq::<
1431                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1432                >(_) => {}
1433            }
1434        }
1435        #[automatically_derived]
1436        #[doc(hidden)]
1437        impl ::core::convert::From<MaxStrategiesExceeded> for UnderlyingRustTuple<'_> {
1438            fn from(value: MaxStrategiesExceeded) -> Self {
1439                ()
1440            }
1441        }
1442        #[automatically_derived]
1443        #[doc(hidden)]
1444        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MaxStrategiesExceeded {
1445            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1446                Self {}
1447            }
1448        }
1449        #[automatically_derived]
1450        impl alloy_sol_types::SolError for MaxStrategiesExceeded {
1451            type Parameters<'a> = UnderlyingSolTuple<'a>;
1452            type Token<'a> = <Self::Parameters<
1453                'a,
1454            > as alloy_sol_types::SolType>::Token<'a>;
1455            const SIGNATURE: &'static str = "MaxStrategiesExceeded()";
1456            const SELECTOR: [u8; 4] = [13u8, 10u8, 33u8, 200u8];
1457            #[inline]
1458            fn new<'a>(
1459                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1460            ) -> Self {
1461                tuple.into()
1462            }
1463            #[inline]
1464            fn tokenize(&self) -> Self::Token<'_> {
1465                ()
1466            }
1467        }
1468    };
1469    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1470    /**Custom error with signature `OnlyDelegationManager()` and selector `0xf739589b`.
1471```solidity
1472error OnlyDelegationManager();
1473```*/
1474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1475    #[derive(Clone)]
1476    pub struct OnlyDelegationManager {}
1477    #[allow(
1478        non_camel_case_types,
1479        non_snake_case,
1480        clippy::pub_underscore_fields,
1481        clippy::style
1482    )]
1483    const _: () = {
1484        use alloy::sol_types as alloy_sol_types;
1485        #[doc(hidden)]
1486        type UnderlyingSolTuple<'a> = ();
1487        #[doc(hidden)]
1488        type UnderlyingRustTuple<'a> = ();
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<OnlyDelegationManager> for UnderlyingRustTuple<'_> {
1503            fn from(value: OnlyDelegationManager) -> Self {
1504                ()
1505            }
1506        }
1507        #[automatically_derived]
1508        #[doc(hidden)]
1509        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyDelegationManager {
1510            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1511                Self {}
1512            }
1513        }
1514        #[automatically_derived]
1515        impl alloy_sol_types::SolError for OnlyDelegationManager {
1516            type Parameters<'a> = UnderlyingSolTuple<'a>;
1517            type Token<'a> = <Self::Parameters<
1518                'a,
1519            > as alloy_sol_types::SolType>::Token<'a>;
1520            const SIGNATURE: &'static str = "OnlyDelegationManager()";
1521            const SELECTOR: [u8; 4] = [247u8, 57u8, 88u8, 155u8];
1522            #[inline]
1523            fn new<'a>(
1524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1525            ) -> Self {
1526                tuple.into()
1527            }
1528            #[inline]
1529            fn tokenize(&self) -> Self::Token<'_> {
1530                ()
1531            }
1532        }
1533    };
1534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1535    /**Custom error with signature `OnlyPauser()` and selector `0x75df51dc`.
1536```solidity
1537error OnlyPauser();
1538```*/
1539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1540    #[derive(Clone)]
1541    pub struct OnlyPauser {}
1542    #[allow(
1543        non_camel_case_types,
1544        non_snake_case,
1545        clippy::pub_underscore_fields,
1546        clippy::style
1547    )]
1548    const _: () = {
1549        use alloy::sol_types as alloy_sol_types;
1550        #[doc(hidden)]
1551        type UnderlyingSolTuple<'a> = ();
1552        #[doc(hidden)]
1553        type UnderlyingRustTuple<'a> = ();
1554        #[cfg(test)]
1555        #[allow(dead_code, unreachable_patterns)]
1556        fn _type_assertion(
1557            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1558        ) {
1559            match _t {
1560                alloy_sol_types::private::AssertTypeEq::<
1561                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1562                >(_) => {}
1563            }
1564        }
1565        #[automatically_derived]
1566        #[doc(hidden)]
1567        impl ::core::convert::From<OnlyPauser> for UnderlyingRustTuple<'_> {
1568            fn from(value: OnlyPauser) -> Self {
1569                ()
1570            }
1571        }
1572        #[automatically_derived]
1573        #[doc(hidden)]
1574        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyPauser {
1575            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1576                Self {}
1577            }
1578        }
1579        #[automatically_derived]
1580        impl alloy_sol_types::SolError for OnlyPauser {
1581            type Parameters<'a> = UnderlyingSolTuple<'a>;
1582            type Token<'a> = <Self::Parameters<
1583                'a,
1584            > as alloy_sol_types::SolType>::Token<'a>;
1585            const SIGNATURE: &'static str = "OnlyPauser()";
1586            const SELECTOR: [u8; 4] = [117u8, 223u8, 81u8, 220u8];
1587            #[inline]
1588            fn new<'a>(
1589                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1590            ) -> Self {
1591                tuple.into()
1592            }
1593            #[inline]
1594            fn tokenize(&self) -> Self::Token<'_> {
1595                ()
1596            }
1597        }
1598    };
1599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1600    /**Custom error with signature `OnlyStrategyWhitelister()` and selector `0x82e8ffe4`.
1601```solidity
1602error OnlyStrategyWhitelister();
1603```*/
1604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1605    #[derive(Clone)]
1606    pub struct OnlyStrategyWhitelister {}
1607    #[allow(
1608        non_camel_case_types,
1609        non_snake_case,
1610        clippy::pub_underscore_fields,
1611        clippy::style
1612    )]
1613    const _: () = {
1614        use alloy::sol_types as alloy_sol_types;
1615        #[doc(hidden)]
1616        type UnderlyingSolTuple<'a> = ();
1617        #[doc(hidden)]
1618        type UnderlyingRustTuple<'a> = ();
1619        #[cfg(test)]
1620        #[allow(dead_code, unreachable_patterns)]
1621        fn _type_assertion(
1622            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1623        ) {
1624            match _t {
1625                alloy_sol_types::private::AssertTypeEq::<
1626                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1627                >(_) => {}
1628            }
1629        }
1630        #[automatically_derived]
1631        #[doc(hidden)]
1632        impl ::core::convert::From<OnlyStrategyWhitelister> for UnderlyingRustTuple<'_> {
1633            fn from(value: OnlyStrategyWhitelister) -> Self {
1634                ()
1635            }
1636        }
1637        #[automatically_derived]
1638        #[doc(hidden)]
1639        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyStrategyWhitelister {
1640            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1641                Self {}
1642            }
1643        }
1644        #[automatically_derived]
1645        impl alloy_sol_types::SolError for OnlyStrategyWhitelister {
1646            type Parameters<'a> = UnderlyingSolTuple<'a>;
1647            type Token<'a> = <Self::Parameters<
1648                'a,
1649            > as alloy_sol_types::SolType>::Token<'a>;
1650            const SIGNATURE: &'static str = "OnlyStrategyWhitelister()";
1651            const SELECTOR: [u8; 4] = [130u8, 232u8, 255u8, 228u8];
1652            #[inline]
1653            fn new<'a>(
1654                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1655            ) -> Self {
1656                tuple.into()
1657            }
1658            #[inline]
1659            fn tokenize(&self) -> Self::Token<'_> {
1660                ()
1661            }
1662        }
1663    };
1664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1665    /**Custom error with signature `OnlyUnpauser()` and selector `0x794821ff`.
1666```solidity
1667error OnlyUnpauser();
1668```*/
1669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1670    #[derive(Clone)]
1671    pub struct OnlyUnpauser {}
1672    #[allow(
1673        non_camel_case_types,
1674        non_snake_case,
1675        clippy::pub_underscore_fields,
1676        clippy::style
1677    )]
1678    const _: () = {
1679        use alloy::sol_types as alloy_sol_types;
1680        #[doc(hidden)]
1681        type UnderlyingSolTuple<'a> = ();
1682        #[doc(hidden)]
1683        type UnderlyingRustTuple<'a> = ();
1684        #[cfg(test)]
1685        #[allow(dead_code, unreachable_patterns)]
1686        fn _type_assertion(
1687            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1688        ) {
1689            match _t {
1690                alloy_sol_types::private::AssertTypeEq::<
1691                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1692                >(_) => {}
1693            }
1694        }
1695        #[automatically_derived]
1696        #[doc(hidden)]
1697        impl ::core::convert::From<OnlyUnpauser> for UnderlyingRustTuple<'_> {
1698            fn from(value: OnlyUnpauser) -> Self {
1699                ()
1700            }
1701        }
1702        #[automatically_derived]
1703        #[doc(hidden)]
1704        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyUnpauser {
1705            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1706                Self {}
1707            }
1708        }
1709        #[automatically_derived]
1710        impl alloy_sol_types::SolError for OnlyUnpauser {
1711            type Parameters<'a> = UnderlyingSolTuple<'a>;
1712            type Token<'a> = <Self::Parameters<
1713                'a,
1714            > as alloy_sol_types::SolType>::Token<'a>;
1715            const SIGNATURE: &'static str = "OnlyUnpauser()";
1716            const SELECTOR: [u8; 4] = [121u8, 72u8, 33u8, 255u8];
1717            #[inline]
1718            fn new<'a>(
1719                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1720            ) -> Self {
1721                tuple.into()
1722            }
1723            #[inline]
1724            fn tokenize(&self) -> Self::Token<'_> {
1725                ()
1726            }
1727        }
1728    };
1729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1730    /**Custom error with signature `SharesAmountTooHigh()` and selector `0x4b18b193`.
1731```solidity
1732error SharesAmountTooHigh();
1733```*/
1734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1735    #[derive(Clone)]
1736    pub struct SharesAmountTooHigh {}
1737    #[allow(
1738        non_camel_case_types,
1739        non_snake_case,
1740        clippy::pub_underscore_fields,
1741        clippy::style
1742    )]
1743    const _: () = {
1744        use alloy::sol_types as alloy_sol_types;
1745        #[doc(hidden)]
1746        type UnderlyingSolTuple<'a> = ();
1747        #[doc(hidden)]
1748        type UnderlyingRustTuple<'a> = ();
1749        #[cfg(test)]
1750        #[allow(dead_code, unreachable_patterns)]
1751        fn _type_assertion(
1752            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1753        ) {
1754            match _t {
1755                alloy_sol_types::private::AssertTypeEq::<
1756                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1757                >(_) => {}
1758            }
1759        }
1760        #[automatically_derived]
1761        #[doc(hidden)]
1762        impl ::core::convert::From<SharesAmountTooHigh> for UnderlyingRustTuple<'_> {
1763            fn from(value: SharesAmountTooHigh) -> Self {
1764                ()
1765            }
1766        }
1767        #[automatically_derived]
1768        #[doc(hidden)]
1769        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountTooHigh {
1770            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1771                Self {}
1772            }
1773        }
1774        #[automatically_derived]
1775        impl alloy_sol_types::SolError for SharesAmountTooHigh {
1776            type Parameters<'a> = UnderlyingSolTuple<'a>;
1777            type Token<'a> = <Self::Parameters<
1778                'a,
1779            > as alloy_sol_types::SolType>::Token<'a>;
1780            const SIGNATURE: &'static str = "SharesAmountTooHigh()";
1781            const SELECTOR: [u8; 4] = [75u8, 24u8, 177u8, 147u8];
1782            #[inline]
1783            fn new<'a>(
1784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1785            ) -> Self {
1786                tuple.into()
1787            }
1788            #[inline]
1789            fn tokenize(&self) -> Self::Token<'_> {
1790                ()
1791            }
1792        }
1793    };
1794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1795    /**Custom error with signature `SharesAmountZero()` and selector `0x840c364a`.
1796```solidity
1797error SharesAmountZero();
1798```*/
1799    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1800    #[derive(Clone)]
1801    pub struct SharesAmountZero {}
1802    #[allow(
1803        non_camel_case_types,
1804        non_snake_case,
1805        clippy::pub_underscore_fields,
1806        clippy::style
1807    )]
1808    const _: () = {
1809        use alloy::sol_types as alloy_sol_types;
1810        #[doc(hidden)]
1811        type UnderlyingSolTuple<'a> = ();
1812        #[doc(hidden)]
1813        type UnderlyingRustTuple<'a> = ();
1814        #[cfg(test)]
1815        #[allow(dead_code, unreachable_patterns)]
1816        fn _type_assertion(
1817            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1818        ) {
1819            match _t {
1820                alloy_sol_types::private::AssertTypeEq::<
1821                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1822                >(_) => {}
1823            }
1824        }
1825        #[automatically_derived]
1826        #[doc(hidden)]
1827        impl ::core::convert::From<SharesAmountZero> for UnderlyingRustTuple<'_> {
1828            fn from(value: SharesAmountZero) -> Self {
1829                ()
1830            }
1831        }
1832        #[automatically_derived]
1833        #[doc(hidden)]
1834        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SharesAmountZero {
1835            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1836                Self {}
1837            }
1838        }
1839        #[automatically_derived]
1840        impl alloy_sol_types::SolError for SharesAmountZero {
1841            type Parameters<'a> = UnderlyingSolTuple<'a>;
1842            type Token<'a> = <Self::Parameters<
1843                'a,
1844            > as alloy_sol_types::SolType>::Token<'a>;
1845            const SIGNATURE: &'static str = "SharesAmountZero()";
1846            const SELECTOR: [u8; 4] = [132u8, 12u8, 54u8, 74u8];
1847            #[inline]
1848            fn new<'a>(
1849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1850            ) -> Self {
1851                tuple.into()
1852            }
1853            #[inline]
1854            fn tokenize(&self) -> Self::Token<'_> {
1855                ()
1856            }
1857        }
1858    };
1859    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1860    /**Custom error with signature `SignatureExpired()` and selector `0x0819bdcd`.
1861```solidity
1862error SignatureExpired();
1863```*/
1864    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1865    #[derive(Clone)]
1866    pub struct SignatureExpired {}
1867    #[allow(
1868        non_camel_case_types,
1869        non_snake_case,
1870        clippy::pub_underscore_fields,
1871        clippy::style
1872    )]
1873    const _: () = {
1874        use alloy::sol_types as alloy_sol_types;
1875        #[doc(hidden)]
1876        type UnderlyingSolTuple<'a> = ();
1877        #[doc(hidden)]
1878        type UnderlyingRustTuple<'a> = ();
1879        #[cfg(test)]
1880        #[allow(dead_code, unreachable_patterns)]
1881        fn _type_assertion(
1882            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1883        ) {
1884            match _t {
1885                alloy_sol_types::private::AssertTypeEq::<
1886                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1887                >(_) => {}
1888            }
1889        }
1890        #[automatically_derived]
1891        #[doc(hidden)]
1892        impl ::core::convert::From<SignatureExpired> for UnderlyingRustTuple<'_> {
1893            fn from(value: SignatureExpired) -> Self {
1894                ()
1895            }
1896        }
1897        #[automatically_derived]
1898        #[doc(hidden)]
1899        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureExpired {
1900            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1901                Self {}
1902            }
1903        }
1904        #[automatically_derived]
1905        impl alloy_sol_types::SolError for SignatureExpired {
1906            type Parameters<'a> = UnderlyingSolTuple<'a>;
1907            type Token<'a> = <Self::Parameters<
1908                'a,
1909            > as alloy_sol_types::SolType>::Token<'a>;
1910            const SIGNATURE: &'static str = "SignatureExpired()";
1911            const SELECTOR: [u8; 4] = [8u8, 25u8, 189u8, 205u8];
1912            #[inline]
1913            fn new<'a>(
1914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1915            ) -> Self {
1916                tuple.into()
1917            }
1918            #[inline]
1919            fn tokenize(&self) -> Self::Token<'_> {
1920                ()
1921            }
1922        }
1923    };
1924    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1925    /**Custom error with signature `StakerAddressZero()` and selector `0x16f2ccc9`.
1926```solidity
1927error StakerAddressZero();
1928```*/
1929    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1930    #[derive(Clone)]
1931    pub struct StakerAddressZero {}
1932    #[allow(
1933        non_camel_case_types,
1934        non_snake_case,
1935        clippy::pub_underscore_fields,
1936        clippy::style
1937    )]
1938    const _: () = {
1939        use alloy::sol_types as alloy_sol_types;
1940        #[doc(hidden)]
1941        type UnderlyingSolTuple<'a> = ();
1942        #[doc(hidden)]
1943        type UnderlyingRustTuple<'a> = ();
1944        #[cfg(test)]
1945        #[allow(dead_code, unreachable_patterns)]
1946        fn _type_assertion(
1947            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1948        ) {
1949            match _t {
1950                alloy_sol_types::private::AssertTypeEq::<
1951                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1952                >(_) => {}
1953            }
1954        }
1955        #[automatically_derived]
1956        #[doc(hidden)]
1957        impl ::core::convert::From<StakerAddressZero> for UnderlyingRustTuple<'_> {
1958            fn from(value: StakerAddressZero) -> Self {
1959                ()
1960            }
1961        }
1962        #[automatically_derived]
1963        #[doc(hidden)]
1964        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakerAddressZero {
1965            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1966                Self {}
1967            }
1968        }
1969        #[automatically_derived]
1970        impl alloy_sol_types::SolError for StakerAddressZero {
1971            type Parameters<'a> = UnderlyingSolTuple<'a>;
1972            type Token<'a> = <Self::Parameters<
1973                'a,
1974            > as alloy_sol_types::SolType>::Token<'a>;
1975            const SIGNATURE: &'static str = "StakerAddressZero()";
1976            const SELECTOR: [u8; 4] = [22u8, 242u8, 204u8, 201u8];
1977            #[inline]
1978            fn new<'a>(
1979                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1980            ) -> Self {
1981                tuple.into()
1982            }
1983            #[inline]
1984            fn tokenize(&self) -> Self::Token<'_> {
1985                ()
1986            }
1987        }
1988    };
1989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1990    /**Custom error with signature `StrategyNotFound()` and selector `0x5be2b482`.
1991```solidity
1992error StrategyNotFound();
1993```*/
1994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1995    #[derive(Clone)]
1996    pub struct StrategyNotFound {}
1997    #[allow(
1998        non_camel_case_types,
1999        non_snake_case,
2000        clippy::pub_underscore_fields,
2001        clippy::style
2002    )]
2003    const _: () = {
2004        use alloy::sol_types as alloy_sol_types;
2005        #[doc(hidden)]
2006        type UnderlyingSolTuple<'a> = ();
2007        #[doc(hidden)]
2008        type UnderlyingRustTuple<'a> = ();
2009        #[cfg(test)]
2010        #[allow(dead_code, unreachable_patterns)]
2011        fn _type_assertion(
2012            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2013        ) {
2014            match _t {
2015                alloy_sol_types::private::AssertTypeEq::<
2016                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2017                >(_) => {}
2018            }
2019        }
2020        #[automatically_derived]
2021        #[doc(hidden)]
2022        impl ::core::convert::From<StrategyNotFound> for UnderlyingRustTuple<'_> {
2023            fn from(value: StrategyNotFound) -> Self {
2024                ()
2025            }
2026        }
2027        #[automatically_derived]
2028        #[doc(hidden)]
2029        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotFound {
2030            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2031                Self {}
2032            }
2033        }
2034        #[automatically_derived]
2035        impl alloy_sol_types::SolError for StrategyNotFound {
2036            type Parameters<'a> = UnderlyingSolTuple<'a>;
2037            type Token<'a> = <Self::Parameters<
2038                'a,
2039            > as alloy_sol_types::SolType>::Token<'a>;
2040            const SIGNATURE: &'static str = "StrategyNotFound()";
2041            const SELECTOR: [u8; 4] = [91u8, 226u8, 180u8, 130u8];
2042            #[inline]
2043            fn new<'a>(
2044                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2045            ) -> Self {
2046                tuple.into()
2047            }
2048            #[inline]
2049            fn tokenize(&self) -> Self::Token<'_> {
2050                ()
2051            }
2052        }
2053    };
2054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2055    /**Custom error with signature `StrategyNotWhitelisted()` and selector `0x5dfb2ca2`.
2056```solidity
2057error StrategyNotWhitelisted();
2058```*/
2059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2060    #[derive(Clone)]
2061    pub struct StrategyNotWhitelisted {}
2062    #[allow(
2063        non_camel_case_types,
2064        non_snake_case,
2065        clippy::pub_underscore_fields,
2066        clippy::style
2067    )]
2068    const _: () = {
2069        use alloy::sol_types as alloy_sol_types;
2070        #[doc(hidden)]
2071        type UnderlyingSolTuple<'a> = ();
2072        #[doc(hidden)]
2073        type UnderlyingRustTuple<'a> = ();
2074        #[cfg(test)]
2075        #[allow(dead_code, unreachable_patterns)]
2076        fn _type_assertion(
2077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2078        ) {
2079            match _t {
2080                alloy_sol_types::private::AssertTypeEq::<
2081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2082                >(_) => {}
2083            }
2084        }
2085        #[automatically_derived]
2086        #[doc(hidden)]
2087        impl ::core::convert::From<StrategyNotWhitelisted> for UnderlyingRustTuple<'_> {
2088            fn from(value: StrategyNotWhitelisted) -> Self {
2089                ()
2090            }
2091        }
2092        #[automatically_derived]
2093        #[doc(hidden)]
2094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyNotWhitelisted {
2095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2096                Self {}
2097            }
2098        }
2099        #[automatically_derived]
2100        impl alloy_sol_types::SolError for StrategyNotWhitelisted {
2101            type Parameters<'a> = UnderlyingSolTuple<'a>;
2102            type Token<'a> = <Self::Parameters<
2103                'a,
2104            > as alloy_sol_types::SolType>::Token<'a>;
2105            const SIGNATURE: &'static str = "StrategyNotWhitelisted()";
2106            const SELECTOR: [u8; 4] = [93u8, 251u8, 44u8, 162u8];
2107            #[inline]
2108            fn new<'a>(
2109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2110            ) -> Self {
2111                tuple.into()
2112            }
2113            #[inline]
2114            fn tokenize(&self) -> Self::Token<'_> {
2115                ()
2116            }
2117        }
2118    };
2119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2120    /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`.
2121```solidity
2122error StringTooLong(string str);
2123```*/
2124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2125    #[derive(Clone)]
2126    pub struct StringTooLong {
2127        #[allow(missing_docs)]
2128        pub str: alloy::sol_types::private::String,
2129    }
2130    #[allow(
2131        non_camel_case_types,
2132        non_snake_case,
2133        clippy::pub_underscore_fields,
2134        clippy::style
2135    )]
2136    const _: () = {
2137        use alloy::sol_types as alloy_sol_types;
2138        #[doc(hidden)]
2139        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
2140        #[doc(hidden)]
2141        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
2142        #[cfg(test)]
2143        #[allow(dead_code, unreachable_patterns)]
2144        fn _type_assertion(
2145            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2146        ) {
2147            match _t {
2148                alloy_sol_types::private::AssertTypeEq::<
2149                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2150                >(_) => {}
2151            }
2152        }
2153        #[automatically_derived]
2154        #[doc(hidden)]
2155        impl ::core::convert::From<StringTooLong> for UnderlyingRustTuple<'_> {
2156            fn from(value: StringTooLong) -> Self {
2157                (value.str,)
2158            }
2159        }
2160        #[automatically_derived]
2161        #[doc(hidden)]
2162        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StringTooLong {
2163            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2164                Self { str: tuple.0 }
2165            }
2166        }
2167        #[automatically_derived]
2168        impl alloy_sol_types::SolError for StringTooLong {
2169            type Parameters<'a> = UnderlyingSolTuple<'a>;
2170            type Token<'a> = <Self::Parameters<
2171                'a,
2172            > as alloy_sol_types::SolType>::Token<'a>;
2173            const SIGNATURE: &'static str = "StringTooLong(string)";
2174            const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8];
2175            #[inline]
2176            fn new<'a>(
2177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2178            ) -> Self {
2179                tuple.into()
2180            }
2181            #[inline]
2182            fn tokenize(&self) -> Self::Token<'_> {
2183                (
2184                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
2185                        &self.str,
2186                    ),
2187                )
2188            }
2189        }
2190    };
2191    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2192    /**Event with signature `BurnableSharesDecreased(address,uint256)` and selector `0xd9d082c3ec4f3a3ffa55c324939a06407f5fbcb87d5e0ce3b9508c92c84ed839`.
2193```solidity
2194event BurnableSharesDecreased(address strategy, uint256 shares);
2195```*/
2196    #[allow(
2197        non_camel_case_types,
2198        non_snake_case,
2199        clippy::pub_underscore_fields,
2200        clippy::style
2201    )]
2202    #[derive(Clone)]
2203    pub struct BurnableSharesDecreased {
2204        #[allow(missing_docs)]
2205        pub strategy: alloy::sol_types::private::Address,
2206        #[allow(missing_docs)]
2207        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2208    }
2209    #[allow(
2210        non_camel_case_types,
2211        non_snake_case,
2212        clippy::pub_underscore_fields,
2213        clippy::style
2214    )]
2215    const _: () = {
2216        use alloy::sol_types as alloy_sol_types;
2217        #[automatically_derived]
2218        impl alloy_sol_types::SolEvent for BurnableSharesDecreased {
2219            type DataTuple<'a> = (
2220                alloy::sol_types::sol_data::Address,
2221                alloy::sol_types::sol_data::Uint<256>,
2222            );
2223            type DataToken<'a> = <Self::DataTuple<
2224                'a,
2225            > as alloy_sol_types::SolType>::Token<'a>;
2226            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2227            const SIGNATURE: &'static str = "BurnableSharesDecreased(address,uint256)";
2228            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2229                217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8,
2230                36u8, 147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8,
2231                12u8, 227u8, 185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
2232            ]);
2233            const ANONYMOUS: bool = false;
2234            #[allow(unused_variables)]
2235            #[inline]
2236            fn new(
2237                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2238                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2239            ) -> Self {
2240                Self {
2241                    strategy: data.0,
2242                    shares: data.1,
2243                }
2244            }
2245            #[inline]
2246            fn check_signature(
2247                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2248            ) -> alloy_sol_types::Result<()> {
2249                if topics.0 != Self::SIGNATURE_HASH {
2250                    return Err(
2251                        alloy_sol_types::Error::invalid_event_signature_hash(
2252                            Self::SIGNATURE,
2253                            topics.0,
2254                            Self::SIGNATURE_HASH,
2255                        ),
2256                    );
2257                }
2258                Ok(())
2259            }
2260            #[inline]
2261            fn tokenize_body(&self) -> Self::DataToken<'_> {
2262                (
2263                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2264                        &self.strategy,
2265                    ),
2266                    <alloy::sol_types::sol_data::Uint<
2267                        256,
2268                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2269                )
2270            }
2271            #[inline]
2272            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2273                (Self::SIGNATURE_HASH.into(),)
2274            }
2275            #[inline]
2276            fn encode_topics_raw(
2277                &self,
2278                out: &mut [alloy_sol_types::abi::token::WordToken],
2279            ) -> alloy_sol_types::Result<()> {
2280                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2281                    return Err(alloy_sol_types::Error::Overrun);
2282                }
2283                out[0usize] = alloy_sol_types::abi::token::WordToken(
2284                    Self::SIGNATURE_HASH,
2285                );
2286                Ok(())
2287            }
2288        }
2289        #[automatically_derived]
2290        impl alloy_sol_types::private::IntoLogData for BurnableSharesDecreased {
2291            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2292                From::from(self)
2293            }
2294            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2295                From::from(&self)
2296            }
2297        }
2298        #[automatically_derived]
2299        impl From<&BurnableSharesDecreased> for alloy_sol_types::private::LogData {
2300            #[inline]
2301            fn from(
2302                this: &BurnableSharesDecreased,
2303            ) -> alloy_sol_types::private::LogData {
2304                alloy_sol_types::SolEvent::encode_log_data(this)
2305            }
2306        }
2307    };
2308    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2309    /**Event with signature `BurnableSharesIncreased(address,uint256)` and selector `0xca3e02a4ab7ad3c47a8e36e5a624c30170791726ab720f1babfef21046d953ff`.
2310```solidity
2311event BurnableSharesIncreased(address strategy, uint256 shares);
2312```*/
2313    #[allow(
2314        non_camel_case_types,
2315        non_snake_case,
2316        clippy::pub_underscore_fields,
2317        clippy::style
2318    )]
2319    #[derive(Clone)]
2320    pub struct BurnableSharesIncreased {
2321        #[allow(missing_docs)]
2322        pub strategy: alloy::sol_types::private::Address,
2323        #[allow(missing_docs)]
2324        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2325    }
2326    #[allow(
2327        non_camel_case_types,
2328        non_snake_case,
2329        clippy::pub_underscore_fields,
2330        clippy::style
2331    )]
2332    const _: () = {
2333        use alloy::sol_types as alloy_sol_types;
2334        #[automatically_derived]
2335        impl alloy_sol_types::SolEvent for BurnableSharesIncreased {
2336            type DataTuple<'a> = (
2337                alloy::sol_types::sol_data::Address,
2338                alloy::sol_types::sol_data::Uint<256>,
2339            );
2340            type DataToken<'a> = <Self::DataTuple<
2341                'a,
2342            > as alloy_sol_types::SolType>::Token<'a>;
2343            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2344            const SIGNATURE: &'static str = "BurnableSharesIncreased(address,uint256)";
2345            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2346                202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8,
2347                229u8, 166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8,
2348                15u8, 27u8, 171u8, 254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
2349            ]);
2350            const ANONYMOUS: bool = false;
2351            #[allow(unused_variables)]
2352            #[inline]
2353            fn new(
2354                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2355                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2356            ) -> Self {
2357                Self {
2358                    strategy: data.0,
2359                    shares: data.1,
2360                }
2361            }
2362            #[inline]
2363            fn check_signature(
2364                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2365            ) -> alloy_sol_types::Result<()> {
2366                if topics.0 != Self::SIGNATURE_HASH {
2367                    return Err(
2368                        alloy_sol_types::Error::invalid_event_signature_hash(
2369                            Self::SIGNATURE,
2370                            topics.0,
2371                            Self::SIGNATURE_HASH,
2372                        ),
2373                    );
2374                }
2375                Ok(())
2376            }
2377            #[inline]
2378            fn tokenize_body(&self) -> Self::DataToken<'_> {
2379                (
2380                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2381                        &self.strategy,
2382                    ),
2383                    <alloy::sol_types::sol_data::Uint<
2384                        256,
2385                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2386                )
2387            }
2388            #[inline]
2389            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2390                (Self::SIGNATURE_HASH.into(),)
2391            }
2392            #[inline]
2393            fn encode_topics_raw(
2394                &self,
2395                out: &mut [alloy_sol_types::abi::token::WordToken],
2396            ) -> alloy_sol_types::Result<()> {
2397                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2398                    return Err(alloy_sol_types::Error::Overrun);
2399                }
2400                out[0usize] = alloy_sol_types::abi::token::WordToken(
2401                    Self::SIGNATURE_HASH,
2402                );
2403                Ok(())
2404            }
2405        }
2406        #[automatically_derived]
2407        impl alloy_sol_types::private::IntoLogData for BurnableSharesIncreased {
2408            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2409                From::from(self)
2410            }
2411            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2412                From::from(&self)
2413            }
2414        }
2415        #[automatically_derived]
2416        impl From<&BurnableSharesIncreased> for alloy_sol_types::private::LogData {
2417            #[inline]
2418            fn from(
2419                this: &BurnableSharesIncreased,
2420            ) -> alloy_sol_types::private::LogData {
2421                alloy_sol_types::SolEvent::encode_log_data(this)
2422            }
2423        }
2424    };
2425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2426    /**Event with signature `Deposit(address,address,uint256)` and selector `0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62`.
2427```solidity
2428event Deposit(address staker, address strategy, uint256 shares);
2429```*/
2430    #[allow(
2431        non_camel_case_types,
2432        non_snake_case,
2433        clippy::pub_underscore_fields,
2434        clippy::style
2435    )]
2436    #[derive(Clone)]
2437    pub struct Deposit {
2438        #[allow(missing_docs)]
2439        pub staker: alloy::sol_types::private::Address,
2440        #[allow(missing_docs)]
2441        pub strategy: alloy::sol_types::private::Address,
2442        #[allow(missing_docs)]
2443        pub shares: alloy::sol_types::private::primitives::aliases::U256,
2444    }
2445    #[allow(
2446        non_camel_case_types,
2447        non_snake_case,
2448        clippy::pub_underscore_fields,
2449        clippy::style
2450    )]
2451    const _: () = {
2452        use alloy::sol_types as alloy_sol_types;
2453        #[automatically_derived]
2454        impl alloy_sol_types::SolEvent for Deposit {
2455            type DataTuple<'a> = (
2456                alloy::sol_types::sol_data::Address,
2457                alloy::sol_types::sol_data::Address,
2458                alloy::sol_types::sol_data::Uint<256>,
2459            );
2460            type DataToken<'a> = <Self::DataTuple<
2461                'a,
2462            > as alloy_sol_types::SolType>::Token<'a>;
2463            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2464            const SIGNATURE: &'static str = "Deposit(address,address,uint256)";
2465            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2466                85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8,
2467                121u8, 223u8, 8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8,
2468                81u8, 115u8, 33u8, 131u8, 29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
2469            ]);
2470            const ANONYMOUS: bool = false;
2471            #[allow(unused_variables)]
2472            #[inline]
2473            fn new(
2474                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2475                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2476            ) -> Self {
2477                Self {
2478                    staker: data.0,
2479                    strategy: data.1,
2480                    shares: data.2,
2481                }
2482            }
2483            #[inline]
2484            fn check_signature(
2485                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2486            ) -> alloy_sol_types::Result<()> {
2487                if topics.0 != Self::SIGNATURE_HASH {
2488                    return Err(
2489                        alloy_sol_types::Error::invalid_event_signature_hash(
2490                            Self::SIGNATURE,
2491                            topics.0,
2492                            Self::SIGNATURE_HASH,
2493                        ),
2494                    );
2495                }
2496                Ok(())
2497            }
2498            #[inline]
2499            fn tokenize_body(&self) -> Self::DataToken<'_> {
2500                (
2501                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2502                        &self.staker,
2503                    ),
2504                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2505                        &self.strategy,
2506                    ),
2507                    <alloy::sol_types::sol_data::Uint<
2508                        256,
2509                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
2510                )
2511            }
2512            #[inline]
2513            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2514                (Self::SIGNATURE_HASH.into(),)
2515            }
2516            #[inline]
2517            fn encode_topics_raw(
2518                &self,
2519                out: &mut [alloy_sol_types::abi::token::WordToken],
2520            ) -> alloy_sol_types::Result<()> {
2521                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2522                    return Err(alloy_sol_types::Error::Overrun);
2523                }
2524                out[0usize] = alloy_sol_types::abi::token::WordToken(
2525                    Self::SIGNATURE_HASH,
2526                );
2527                Ok(())
2528            }
2529        }
2530        #[automatically_derived]
2531        impl alloy_sol_types::private::IntoLogData for Deposit {
2532            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2533                From::from(self)
2534            }
2535            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2536                From::from(&self)
2537            }
2538        }
2539        #[automatically_derived]
2540        impl From<&Deposit> for alloy_sol_types::private::LogData {
2541            #[inline]
2542            fn from(this: &Deposit) -> alloy_sol_types::private::LogData {
2543                alloy_sol_types::SolEvent::encode_log_data(this)
2544            }
2545        }
2546    };
2547    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2548    /**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
2549```solidity
2550event Initialized(uint8 version);
2551```*/
2552    #[allow(
2553        non_camel_case_types,
2554        non_snake_case,
2555        clippy::pub_underscore_fields,
2556        clippy::style
2557    )]
2558    #[derive(Clone)]
2559    pub struct Initialized {
2560        #[allow(missing_docs)]
2561        pub version: u8,
2562    }
2563    #[allow(
2564        non_camel_case_types,
2565        non_snake_case,
2566        clippy::pub_underscore_fields,
2567        clippy::style
2568    )]
2569    const _: () = {
2570        use alloy::sol_types as alloy_sol_types;
2571        #[automatically_derived]
2572        impl alloy_sol_types::SolEvent for Initialized {
2573            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
2574            type DataToken<'a> = <Self::DataTuple<
2575                'a,
2576            > as alloy_sol_types::SolType>::Token<'a>;
2577            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2578            const SIGNATURE: &'static str = "Initialized(uint8)";
2579            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2580                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
2581                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
2582                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
2583            ]);
2584            const ANONYMOUS: bool = false;
2585            #[allow(unused_variables)]
2586            #[inline]
2587            fn new(
2588                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2589                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2590            ) -> Self {
2591                Self { version: data.0 }
2592            }
2593            #[inline]
2594            fn check_signature(
2595                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2596            ) -> alloy_sol_types::Result<()> {
2597                if topics.0 != Self::SIGNATURE_HASH {
2598                    return Err(
2599                        alloy_sol_types::Error::invalid_event_signature_hash(
2600                            Self::SIGNATURE,
2601                            topics.0,
2602                            Self::SIGNATURE_HASH,
2603                        ),
2604                    );
2605                }
2606                Ok(())
2607            }
2608            #[inline]
2609            fn tokenize_body(&self) -> Self::DataToken<'_> {
2610                (
2611                    <alloy::sol_types::sol_data::Uint<
2612                        8,
2613                    > as alloy_sol_types::SolType>::tokenize(&self.version),
2614                )
2615            }
2616            #[inline]
2617            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2618                (Self::SIGNATURE_HASH.into(),)
2619            }
2620            #[inline]
2621            fn encode_topics_raw(
2622                &self,
2623                out: &mut [alloy_sol_types::abi::token::WordToken],
2624            ) -> alloy_sol_types::Result<()> {
2625                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2626                    return Err(alloy_sol_types::Error::Overrun);
2627                }
2628                out[0usize] = alloy_sol_types::abi::token::WordToken(
2629                    Self::SIGNATURE_HASH,
2630                );
2631                Ok(())
2632            }
2633        }
2634        #[automatically_derived]
2635        impl alloy_sol_types::private::IntoLogData for Initialized {
2636            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2637                From::from(self)
2638            }
2639            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2640                From::from(&self)
2641            }
2642        }
2643        #[automatically_derived]
2644        impl From<&Initialized> for alloy_sol_types::private::LogData {
2645            #[inline]
2646            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
2647                alloy_sol_types::SolEvent::encode_log_data(this)
2648            }
2649        }
2650    };
2651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2652    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
2653```solidity
2654event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2655```*/
2656    #[allow(
2657        non_camel_case_types,
2658        non_snake_case,
2659        clippy::pub_underscore_fields,
2660        clippy::style
2661    )]
2662    #[derive(Clone)]
2663    pub struct OwnershipTransferred {
2664        #[allow(missing_docs)]
2665        pub previousOwner: alloy::sol_types::private::Address,
2666        #[allow(missing_docs)]
2667        pub newOwner: alloy::sol_types::private::Address,
2668    }
2669    #[allow(
2670        non_camel_case_types,
2671        non_snake_case,
2672        clippy::pub_underscore_fields,
2673        clippy::style
2674    )]
2675    const _: () = {
2676        use alloy::sol_types as alloy_sol_types;
2677        #[automatically_derived]
2678        impl alloy_sol_types::SolEvent for OwnershipTransferred {
2679            type DataTuple<'a> = ();
2680            type DataToken<'a> = <Self::DataTuple<
2681                'a,
2682            > as alloy_sol_types::SolType>::Token<'a>;
2683            type TopicList = (
2684                alloy_sol_types::sol_data::FixedBytes<32>,
2685                alloy::sol_types::sol_data::Address,
2686                alloy::sol_types::sol_data::Address,
2687            );
2688            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
2689            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2690                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
2691                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
2692                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
2693            ]);
2694            const ANONYMOUS: bool = false;
2695            #[allow(unused_variables)]
2696            #[inline]
2697            fn new(
2698                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2699                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2700            ) -> Self {
2701                Self {
2702                    previousOwner: topics.1,
2703                    newOwner: topics.2,
2704                }
2705            }
2706            #[inline]
2707            fn check_signature(
2708                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2709            ) -> alloy_sol_types::Result<()> {
2710                if topics.0 != Self::SIGNATURE_HASH {
2711                    return Err(
2712                        alloy_sol_types::Error::invalid_event_signature_hash(
2713                            Self::SIGNATURE,
2714                            topics.0,
2715                            Self::SIGNATURE_HASH,
2716                        ),
2717                    );
2718                }
2719                Ok(())
2720            }
2721            #[inline]
2722            fn tokenize_body(&self) -> Self::DataToken<'_> {
2723                ()
2724            }
2725            #[inline]
2726            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2727                (
2728                    Self::SIGNATURE_HASH.into(),
2729                    self.previousOwner.clone(),
2730                    self.newOwner.clone(),
2731                )
2732            }
2733            #[inline]
2734            fn encode_topics_raw(
2735                &self,
2736                out: &mut [alloy_sol_types::abi::token::WordToken],
2737            ) -> alloy_sol_types::Result<()> {
2738                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2739                    return Err(alloy_sol_types::Error::Overrun);
2740                }
2741                out[0usize] = alloy_sol_types::abi::token::WordToken(
2742                    Self::SIGNATURE_HASH,
2743                );
2744                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2745                    &self.previousOwner,
2746                );
2747                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2748                    &self.newOwner,
2749                );
2750                Ok(())
2751            }
2752        }
2753        #[automatically_derived]
2754        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
2755            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2756                From::from(self)
2757            }
2758            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2759                From::from(&self)
2760            }
2761        }
2762        #[automatically_derived]
2763        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
2764            #[inline]
2765            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
2766                alloy_sol_types::SolEvent::encode_log_data(this)
2767            }
2768        }
2769    };
2770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2771    /**Event with signature `Paused(address,uint256)` and selector `0xab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d`.
2772```solidity
2773event Paused(address indexed account, uint256 newPausedStatus);
2774```*/
2775    #[allow(
2776        non_camel_case_types,
2777        non_snake_case,
2778        clippy::pub_underscore_fields,
2779        clippy::style
2780    )]
2781    #[derive(Clone)]
2782    pub struct Paused {
2783        #[allow(missing_docs)]
2784        pub account: alloy::sol_types::private::Address,
2785        #[allow(missing_docs)]
2786        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
2787    }
2788    #[allow(
2789        non_camel_case_types,
2790        non_snake_case,
2791        clippy::pub_underscore_fields,
2792        clippy::style
2793    )]
2794    const _: () = {
2795        use alloy::sol_types as alloy_sol_types;
2796        #[automatically_derived]
2797        impl alloy_sol_types::SolEvent for Paused {
2798            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
2799            type DataToken<'a> = <Self::DataTuple<
2800                'a,
2801            > as alloy_sol_types::SolType>::Token<'a>;
2802            type TopicList = (
2803                alloy_sol_types::sol_data::FixedBytes<32>,
2804                alloy::sol_types::sol_data::Address,
2805            );
2806            const SIGNATURE: &'static str = "Paused(address,uint256)";
2807            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2808                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
2809                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
2810                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
2811            ]);
2812            const ANONYMOUS: bool = false;
2813            #[allow(unused_variables)]
2814            #[inline]
2815            fn new(
2816                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2817                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2818            ) -> Self {
2819                Self {
2820                    account: topics.1,
2821                    newPausedStatus: data.0,
2822                }
2823            }
2824            #[inline]
2825            fn check_signature(
2826                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2827            ) -> alloy_sol_types::Result<()> {
2828                if topics.0 != Self::SIGNATURE_HASH {
2829                    return Err(
2830                        alloy_sol_types::Error::invalid_event_signature_hash(
2831                            Self::SIGNATURE,
2832                            topics.0,
2833                            Self::SIGNATURE_HASH,
2834                        ),
2835                    );
2836                }
2837                Ok(())
2838            }
2839            #[inline]
2840            fn tokenize_body(&self) -> Self::DataToken<'_> {
2841                (
2842                    <alloy::sol_types::sol_data::Uint<
2843                        256,
2844                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
2845                )
2846            }
2847            #[inline]
2848            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2849                (Self::SIGNATURE_HASH.into(), self.account.clone())
2850            }
2851            #[inline]
2852            fn encode_topics_raw(
2853                &self,
2854                out: &mut [alloy_sol_types::abi::token::WordToken],
2855            ) -> alloy_sol_types::Result<()> {
2856                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2857                    return Err(alloy_sol_types::Error::Overrun);
2858                }
2859                out[0usize] = alloy_sol_types::abi::token::WordToken(
2860                    Self::SIGNATURE_HASH,
2861                );
2862                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2863                    &self.account,
2864                );
2865                Ok(())
2866            }
2867        }
2868        #[automatically_derived]
2869        impl alloy_sol_types::private::IntoLogData for Paused {
2870            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2871                From::from(self)
2872            }
2873            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2874                From::from(&self)
2875            }
2876        }
2877        #[automatically_derived]
2878        impl From<&Paused> for alloy_sol_types::private::LogData {
2879            #[inline]
2880            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
2881                alloy_sol_types::SolEvent::encode_log_data(this)
2882            }
2883        }
2884    };
2885    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2886    /**Event with signature `StrategyAddedToDepositWhitelist(address)` and selector `0x0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe`.
2887```solidity
2888event StrategyAddedToDepositWhitelist(address strategy);
2889```*/
2890    #[allow(
2891        non_camel_case_types,
2892        non_snake_case,
2893        clippy::pub_underscore_fields,
2894        clippy::style
2895    )]
2896    #[derive(Clone)]
2897    pub struct StrategyAddedToDepositWhitelist {
2898        #[allow(missing_docs)]
2899        pub strategy: alloy::sol_types::private::Address,
2900    }
2901    #[allow(
2902        non_camel_case_types,
2903        non_snake_case,
2904        clippy::pub_underscore_fields,
2905        clippy::style
2906    )]
2907    const _: () = {
2908        use alloy::sol_types as alloy_sol_types;
2909        #[automatically_derived]
2910        impl alloy_sol_types::SolEvent for StrategyAddedToDepositWhitelist {
2911            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
2912            type DataToken<'a> = <Self::DataTuple<
2913                'a,
2914            > as alloy_sol_types::SolType>::Token<'a>;
2915            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2916            const SIGNATURE: &'static str = "StrategyAddedToDepositWhitelist(address)";
2917            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2918                12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8,
2919                86u8, 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8,
2920                242u8, 110u8, 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
2921            ]);
2922            const ANONYMOUS: bool = false;
2923            #[allow(unused_variables)]
2924            #[inline]
2925            fn new(
2926                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2927                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2928            ) -> Self {
2929                Self { strategy: data.0 }
2930            }
2931            #[inline]
2932            fn check_signature(
2933                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2934            ) -> alloy_sol_types::Result<()> {
2935                if topics.0 != Self::SIGNATURE_HASH {
2936                    return Err(
2937                        alloy_sol_types::Error::invalid_event_signature_hash(
2938                            Self::SIGNATURE,
2939                            topics.0,
2940                            Self::SIGNATURE_HASH,
2941                        ),
2942                    );
2943                }
2944                Ok(())
2945            }
2946            #[inline]
2947            fn tokenize_body(&self) -> Self::DataToken<'_> {
2948                (
2949                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2950                        &self.strategy,
2951                    ),
2952                )
2953            }
2954            #[inline]
2955            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2956                (Self::SIGNATURE_HASH.into(),)
2957            }
2958            #[inline]
2959            fn encode_topics_raw(
2960                &self,
2961                out: &mut [alloy_sol_types::abi::token::WordToken],
2962            ) -> alloy_sol_types::Result<()> {
2963                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2964                    return Err(alloy_sol_types::Error::Overrun);
2965                }
2966                out[0usize] = alloy_sol_types::abi::token::WordToken(
2967                    Self::SIGNATURE_HASH,
2968                );
2969                Ok(())
2970            }
2971        }
2972        #[automatically_derived]
2973        impl alloy_sol_types::private::IntoLogData for StrategyAddedToDepositWhitelist {
2974            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2975                From::from(self)
2976            }
2977            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2978                From::from(&self)
2979            }
2980        }
2981        #[automatically_derived]
2982        impl From<&StrategyAddedToDepositWhitelist>
2983        for alloy_sol_types::private::LogData {
2984            #[inline]
2985            fn from(
2986                this: &StrategyAddedToDepositWhitelist,
2987            ) -> alloy_sol_types::private::LogData {
2988                alloy_sol_types::SolEvent::encode_log_data(this)
2989            }
2990        }
2991    };
2992    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2993    /**Event with signature `StrategyRemovedFromDepositWhitelist(address)` and selector `0x4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030`.
2994```solidity
2995event StrategyRemovedFromDepositWhitelist(address strategy);
2996```*/
2997    #[allow(
2998        non_camel_case_types,
2999        non_snake_case,
3000        clippy::pub_underscore_fields,
3001        clippy::style
3002    )]
3003    #[derive(Clone)]
3004    pub struct StrategyRemovedFromDepositWhitelist {
3005        #[allow(missing_docs)]
3006        pub strategy: alloy::sol_types::private::Address,
3007    }
3008    #[allow(
3009        non_camel_case_types,
3010        non_snake_case,
3011        clippy::pub_underscore_fields,
3012        clippy::style
3013    )]
3014    const _: () = {
3015        use alloy::sol_types as alloy_sol_types;
3016        #[automatically_derived]
3017        impl alloy_sol_types::SolEvent for StrategyRemovedFromDepositWhitelist {
3018            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3019            type DataToken<'a> = <Self::DataTuple<
3020                'a,
3021            > as alloy_sol_types::SolType>::Token<'a>;
3022            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3023            const SIGNATURE: &'static str = "StrategyRemovedFromDepositWhitelist(address)";
3024            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3025                64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8,
3026                85u8, 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8,
3027                9u8, 198u8, 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
3028            ]);
3029            const ANONYMOUS: bool = false;
3030            #[allow(unused_variables)]
3031            #[inline]
3032            fn new(
3033                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3034                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3035            ) -> Self {
3036                Self { strategy: data.0 }
3037            }
3038            #[inline]
3039            fn check_signature(
3040                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3041            ) -> alloy_sol_types::Result<()> {
3042                if topics.0 != Self::SIGNATURE_HASH {
3043                    return Err(
3044                        alloy_sol_types::Error::invalid_event_signature_hash(
3045                            Self::SIGNATURE,
3046                            topics.0,
3047                            Self::SIGNATURE_HASH,
3048                        ),
3049                    );
3050                }
3051                Ok(())
3052            }
3053            #[inline]
3054            fn tokenize_body(&self) -> Self::DataToken<'_> {
3055                (
3056                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3057                        &self.strategy,
3058                    ),
3059                )
3060            }
3061            #[inline]
3062            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3063                (Self::SIGNATURE_HASH.into(),)
3064            }
3065            #[inline]
3066            fn encode_topics_raw(
3067                &self,
3068                out: &mut [alloy_sol_types::abi::token::WordToken],
3069            ) -> alloy_sol_types::Result<()> {
3070                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3071                    return Err(alloy_sol_types::Error::Overrun);
3072                }
3073                out[0usize] = alloy_sol_types::abi::token::WordToken(
3074                    Self::SIGNATURE_HASH,
3075                );
3076                Ok(())
3077            }
3078        }
3079        #[automatically_derived]
3080        impl alloy_sol_types::private::IntoLogData
3081        for StrategyRemovedFromDepositWhitelist {
3082            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3083                From::from(self)
3084            }
3085            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3086                From::from(&self)
3087            }
3088        }
3089        #[automatically_derived]
3090        impl From<&StrategyRemovedFromDepositWhitelist>
3091        for alloy_sol_types::private::LogData {
3092            #[inline]
3093            fn from(
3094                this: &StrategyRemovedFromDepositWhitelist,
3095            ) -> alloy_sol_types::private::LogData {
3096                alloy_sol_types::SolEvent::encode_log_data(this)
3097            }
3098        }
3099    };
3100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3101    /**Event with signature `StrategyWhitelisterChanged(address,address)` and selector `0x4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29`.
3102```solidity
3103event StrategyWhitelisterChanged(address previousAddress, address newAddress);
3104```*/
3105    #[allow(
3106        non_camel_case_types,
3107        non_snake_case,
3108        clippy::pub_underscore_fields,
3109        clippy::style
3110    )]
3111    #[derive(Clone)]
3112    pub struct StrategyWhitelisterChanged {
3113        #[allow(missing_docs)]
3114        pub previousAddress: alloy::sol_types::private::Address,
3115        #[allow(missing_docs)]
3116        pub newAddress: alloy::sol_types::private::Address,
3117    }
3118    #[allow(
3119        non_camel_case_types,
3120        non_snake_case,
3121        clippy::pub_underscore_fields,
3122        clippy::style
3123    )]
3124    const _: () = {
3125        use alloy::sol_types as alloy_sol_types;
3126        #[automatically_derived]
3127        impl alloy_sol_types::SolEvent for StrategyWhitelisterChanged {
3128            type DataTuple<'a> = (
3129                alloy::sol_types::sol_data::Address,
3130                alloy::sol_types::sol_data::Address,
3131            );
3132            type DataToken<'a> = <Self::DataTuple<
3133                'a,
3134            > as alloy_sol_types::SolType>::Token<'a>;
3135            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3136            const SIGNATURE: &'static str = "StrategyWhitelisterChanged(address,address)";
3137            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3138                66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8,
3139                165u8, 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8,
3140                57u8, 26u8, 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
3141            ]);
3142            const ANONYMOUS: bool = false;
3143            #[allow(unused_variables)]
3144            #[inline]
3145            fn new(
3146                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3147                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3148            ) -> Self {
3149                Self {
3150                    previousAddress: data.0,
3151                    newAddress: data.1,
3152                }
3153            }
3154            #[inline]
3155            fn check_signature(
3156                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3157            ) -> alloy_sol_types::Result<()> {
3158                if topics.0 != Self::SIGNATURE_HASH {
3159                    return Err(
3160                        alloy_sol_types::Error::invalid_event_signature_hash(
3161                            Self::SIGNATURE,
3162                            topics.0,
3163                            Self::SIGNATURE_HASH,
3164                        ),
3165                    );
3166                }
3167                Ok(())
3168            }
3169            #[inline]
3170            fn tokenize_body(&self) -> Self::DataToken<'_> {
3171                (
3172                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3173                        &self.previousAddress,
3174                    ),
3175                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3176                        &self.newAddress,
3177                    ),
3178                )
3179            }
3180            #[inline]
3181            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3182                (Self::SIGNATURE_HASH.into(),)
3183            }
3184            #[inline]
3185            fn encode_topics_raw(
3186                &self,
3187                out: &mut [alloy_sol_types::abi::token::WordToken],
3188            ) -> alloy_sol_types::Result<()> {
3189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3190                    return Err(alloy_sol_types::Error::Overrun);
3191                }
3192                out[0usize] = alloy_sol_types::abi::token::WordToken(
3193                    Self::SIGNATURE_HASH,
3194                );
3195                Ok(())
3196            }
3197        }
3198        #[automatically_derived]
3199        impl alloy_sol_types::private::IntoLogData for StrategyWhitelisterChanged {
3200            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3201                From::from(self)
3202            }
3203            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3204                From::from(&self)
3205            }
3206        }
3207        #[automatically_derived]
3208        impl From<&StrategyWhitelisterChanged> for alloy_sol_types::private::LogData {
3209            #[inline]
3210            fn from(
3211                this: &StrategyWhitelisterChanged,
3212            ) -> alloy_sol_types::private::LogData {
3213                alloy_sol_types::SolEvent::encode_log_data(this)
3214            }
3215        }
3216    };
3217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3218    /**Event with signature `Unpaused(address,uint256)` and selector `0x3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c`.
3219```solidity
3220event Unpaused(address indexed account, uint256 newPausedStatus);
3221```*/
3222    #[allow(
3223        non_camel_case_types,
3224        non_snake_case,
3225        clippy::pub_underscore_fields,
3226        clippy::style
3227    )]
3228    #[derive(Clone)]
3229    pub struct Unpaused {
3230        #[allow(missing_docs)]
3231        pub account: alloy::sol_types::private::Address,
3232        #[allow(missing_docs)]
3233        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
3234    }
3235    #[allow(
3236        non_camel_case_types,
3237        non_snake_case,
3238        clippy::pub_underscore_fields,
3239        clippy::style
3240    )]
3241    const _: () = {
3242        use alloy::sol_types as alloy_sol_types;
3243        #[automatically_derived]
3244        impl alloy_sol_types::SolEvent for Unpaused {
3245            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3246            type DataToken<'a> = <Self::DataTuple<
3247                'a,
3248            > as alloy_sol_types::SolType>::Token<'a>;
3249            type TopicList = (
3250                alloy_sol_types::sol_data::FixedBytes<32>,
3251                alloy::sol_types::sol_data::Address,
3252            );
3253            const SIGNATURE: &'static str = "Unpaused(address,uint256)";
3254            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3255                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
3256                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
3257                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
3258            ]);
3259            const ANONYMOUS: bool = false;
3260            #[allow(unused_variables)]
3261            #[inline]
3262            fn new(
3263                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3264                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3265            ) -> Self {
3266                Self {
3267                    account: topics.1,
3268                    newPausedStatus: data.0,
3269                }
3270            }
3271            #[inline]
3272            fn check_signature(
3273                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3274            ) -> alloy_sol_types::Result<()> {
3275                if topics.0 != Self::SIGNATURE_HASH {
3276                    return Err(
3277                        alloy_sol_types::Error::invalid_event_signature_hash(
3278                            Self::SIGNATURE,
3279                            topics.0,
3280                            Self::SIGNATURE_HASH,
3281                        ),
3282                    );
3283                }
3284                Ok(())
3285            }
3286            #[inline]
3287            fn tokenize_body(&self) -> Self::DataToken<'_> {
3288                (
3289                    <alloy::sol_types::sol_data::Uint<
3290                        256,
3291                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
3292                )
3293            }
3294            #[inline]
3295            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3296                (Self::SIGNATURE_HASH.into(), self.account.clone())
3297            }
3298            #[inline]
3299            fn encode_topics_raw(
3300                &self,
3301                out: &mut [alloy_sol_types::abi::token::WordToken],
3302            ) -> alloy_sol_types::Result<()> {
3303                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3304                    return Err(alloy_sol_types::Error::Overrun);
3305                }
3306                out[0usize] = alloy_sol_types::abi::token::WordToken(
3307                    Self::SIGNATURE_HASH,
3308                );
3309                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3310                    &self.account,
3311                );
3312                Ok(())
3313            }
3314        }
3315        #[automatically_derived]
3316        impl alloy_sol_types::private::IntoLogData for Unpaused {
3317            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3318                From::from(self)
3319            }
3320            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3321                From::from(&self)
3322            }
3323        }
3324        #[automatically_derived]
3325        impl From<&Unpaused> for alloy_sol_types::private::LogData {
3326            #[inline]
3327            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
3328                alloy_sol_types::SolEvent::encode_log_data(this)
3329            }
3330        }
3331    };
3332    /**Constructor`.
3333```solidity
3334constructor(address _delegation, address _pauserRegistry, string _version);
3335```*/
3336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3337    #[derive(Clone)]
3338    pub struct constructorCall {
3339        #[allow(missing_docs)]
3340        pub _delegation: alloy::sol_types::private::Address,
3341        #[allow(missing_docs)]
3342        pub _pauserRegistry: alloy::sol_types::private::Address,
3343        #[allow(missing_docs)]
3344        pub _version: alloy::sol_types::private::String,
3345    }
3346    const _: () = {
3347        use alloy::sol_types as alloy_sol_types;
3348        {
3349            #[doc(hidden)]
3350            type UnderlyingSolTuple<'a> = (
3351                alloy::sol_types::sol_data::Address,
3352                alloy::sol_types::sol_data::Address,
3353                alloy::sol_types::sol_data::String,
3354            );
3355            #[doc(hidden)]
3356            type UnderlyingRustTuple<'a> = (
3357                alloy::sol_types::private::Address,
3358                alloy::sol_types::private::Address,
3359                alloy::sol_types::private::String,
3360            );
3361            #[cfg(test)]
3362            #[allow(dead_code, unreachable_patterns)]
3363            fn _type_assertion(
3364                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3365            ) {
3366                match _t {
3367                    alloy_sol_types::private::AssertTypeEq::<
3368                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3369                    >(_) => {}
3370                }
3371            }
3372            #[automatically_derived]
3373            #[doc(hidden)]
3374            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3375                fn from(value: constructorCall) -> Self {
3376                    (value._delegation, value._pauserRegistry, value._version)
3377                }
3378            }
3379            #[automatically_derived]
3380            #[doc(hidden)]
3381            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3383                    Self {
3384                        _delegation: tuple.0,
3385                        _pauserRegistry: tuple.1,
3386                        _version: tuple.2,
3387                    }
3388                }
3389            }
3390        }
3391        #[automatically_derived]
3392        impl alloy_sol_types::SolConstructor for constructorCall {
3393            type Parameters<'a> = (
3394                alloy::sol_types::sol_data::Address,
3395                alloy::sol_types::sol_data::Address,
3396                alloy::sol_types::sol_data::String,
3397            );
3398            type Token<'a> = <Self::Parameters<
3399                'a,
3400            > as alloy_sol_types::SolType>::Token<'a>;
3401            #[inline]
3402            fn new<'a>(
3403                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3404            ) -> Self {
3405                tuple.into()
3406            }
3407            #[inline]
3408            fn tokenize(&self) -> Self::Token<'_> {
3409                (
3410                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3411                        &self._delegation,
3412                    ),
3413                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3414                        &self._pauserRegistry,
3415                    ),
3416                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
3417                        &self._version,
3418                    ),
3419                )
3420            }
3421        }
3422    };
3423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3424    /**Function with signature `DEFAULT_BURN_ADDRESS()` and selector `0xf3b4a000`.
3425```solidity
3426function DEFAULT_BURN_ADDRESS() external view returns (address);
3427```*/
3428    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3429    #[derive(Clone)]
3430    pub struct DEFAULT_BURN_ADDRESSCall {}
3431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3432    ///Container type for the return parameters of the [`DEFAULT_BURN_ADDRESS()`](DEFAULT_BURN_ADDRESSCall) function.
3433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3434    #[derive(Clone)]
3435    pub struct DEFAULT_BURN_ADDRESSReturn {
3436        #[allow(missing_docs)]
3437        pub _0: alloy::sol_types::private::Address,
3438    }
3439    #[allow(
3440        non_camel_case_types,
3441        non_snake_case,
3442        clippy::pub_underscore_fields,
3443        clippy::style
3444    )]
3445    const _: () = {
3446        use alloy::sol_types as alloy_sol_types;
3447        {
3448            #[doc(hidden)]
3449            type UnderlyingSolTuple<'a> = ();
3450            #[doc(hidden)]
3451            type UnderlyingRustTuple<'a> = ();
3452            #[cfg(test)]
3453            #[allow(dead_code, unreachable_patterns)]
3454            fn _type_assertion(
3455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3456            ) {
3457                match _t {
3458                    alloy_sol_types::private::AssertTypeEq::<
3459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3460                    >(_) => {}
3461                }
3462            }
3463            #[automatically_derived]
3464            #[doc(hidden)]
3465            impl ::core::convert::From<DEFAULT_BURN_ADDRESSCall>
3466            for UnderlyingRustTuple<'_> {
3467                fn from(value: DEFAULT_BURN_ADDRESSCall) -> Self {
3468                    ()
3469                }
3470            }
3471            #[automatically_derived]
3472            #[doc(hidden)]
3473            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3474            for DEFAULT_BURN_ADDRESSCall {
3475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3476                    Self {}
3477                }
3478            }
3479        }
3480        {
3481            #[doc(hidden)]
3482            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3483            #[doc(hidden)]
3484            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3485            #[cfg(test)]
3486            #[allow(dead_code, unreachable_patterns)]
3487            fn _type_assertion(
3488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3489            ) {
3490                match _t {
3491                    alloy_sol_types::private::AssertTypeEq::<
3492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3493                    >(_) => {}
3494                }
3495            }
3496            #[automatically_derived]
3497            #[doc(hidden)]
3498            impl ::core::convert::From<DEFAULT_BURN_ADDRESSReturn>
3499            for UnderlyingRustTuple<'_> {
3500                fn from(value: DEFAULT_BURN_ADDRESSReturn) -> Self {
3501                    (value._0,)
3502                }
3503            }
3504            #[automatically_derived]
3505            #[doc(hidden)]
3506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3507            for DEFAULT_BURN_ADDRESSReturn {
3508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3509                    Self { _0: tuple.0 }
3510                }
3511            }
3512        }
3513        #[automatically_derived]
3514        impl alloy_sol_types::SolCall for DEFAULT_BURN_ADDRESSCall {
3515            type Parameters<'a> = ();
3516            type Token<'a> = <Self::Parameters<
3517                'a,
3518            > as alloy_sol_types::SolType>::Token<'a>;
3519            type Return = DEFAULT_BURN_ADDRESSReturn;
3520            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
3521            type ReturnToken<'a> = <Self::ReturnTuple<
3522                'a,
3523            > as alloy_sol_types::SolType>::Token<'a>;
3524            const SIGNATURE: &'static str = "DEFAULT_BURN_ADDRESS()";
3525            const SELECTOR: [u8; 4] = [243u8, 180u8, 160u8, 0u8];
3526            #[inline]
3527            fn new<'a>(
3528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3529            ) -> Self {
3530                tuple.into()
3531            }
3532            #[inline]
3533            fn tokenize(&self) -> Self::Token<'_> {
3534                ()
3535            }
3536            #[inline]
3537            fn abi_decode_returns(
3538                data: &[u8],
3539                validate: bool,
3540            ) -> alloy_sol_types::Result<Self::Return> {
3541                <Self::ReturnTuple<
3542                    '_,
3543                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3544                    .map(Into::into)
3545            }
3546        }
3547    };
3548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3549    /**Function with signature `DEPOSIT_TYPEHASH()` and selector `0x48825e94`.
3550```solidity
3551function DEPOSIT_TYPEHASH() external view returns (bytes32);
3552```*/
3553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3554    #[derive(Clone)]
3555    pub struct DEPOSIT_TYPEHASHCall {}
3556    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3557    ///Container type for the return parameters of the [`DEPOSIT_TYPEHASH()`](DEPOSIT_TYPEHASHCall) function.
3558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3559    #[derive(Clone)]
3560    pub struct DEPOSIT_TYPEHASHReturn {
3561        #[allow(missing_docs)]
3562        pub _0: alloy::sol_types::private::FixedBytes<32>,
3563    }
3564    #[allow(
3565        non_camel_case_types,
3566        non_snake_case,
3567        clippy::pub_underscore_fields,
3568        clippy::style
3569    )]
3570    const _: () = {
3571        use alloy::sol_types as alloy_sol_types;
3572        {
3573            #[doc(hidden)]
3574            type UnderlyingSolTuple<'a> = ();
3575            #[doc(hidden)]
3576            type UnderlyingRustTuple<'a> = ();
3577            #[cfg(test)]
3578            #[allow(dead_code, unreachable_patterns)]
3579            fn _type_assertion(
3580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3581            ) {
3582                match _t {
3583                    alloy_sol_types::private::AssertTypeEq::<
3584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3585                    >(_) => {}
3586                }
3587            }
3588            #[automatically_derived]
3589            #[doc(hidden)]
3590            impl ::core::convert::From<DEPOSIT_TYPEHASHCall>
3591            for UnderlyingRustTuple<'_> {
3592                fn from(value: DEPOSIT_TYPEHASHCall) -> Self {
3593                    ()
3594                }
3595            }
3596            #[automatically_derived]
3597            #[doc(hidden)]
3598            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3599            for DEPOSIT_TYPEHASHCall {
3600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3601                    Self {}
3602                }
3603            }
3604        }
3605        {
3606            #[doc(hidden)]
3607            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3608            #[doc(hidden)]
3609            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3610            #[cfg(test)]
3611            #[allow(dead_code, unreachable_patterns)]
3612            fn _type_assertion(
3613                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3614            ) {
3615                match _t {
3616                    alloy_sol_types::private::AssertTypeEq::<
3617                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3618                    >(_) => {}
3619                }
3620            }
3621            #[automatically_derived]
3622            #[doc(hidden)]
3623            impl ::core::convert::From<DEPOSIT_TYPEHASHReturn>
3624            for UnderlyingRustTuple<'_> {
3625                fn from(value: DEPOSIT_TYPEHASHReturn) -> Self {
3626                    (value._0,)
3627                }
3628            }
3629            #[automatically_derived]
3630            #[doc(hidden)]
3631            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3632            for DEPOSIT_TYPEHASHReturn {
3633                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3634                    Self { _0: tuple.0 }
3635                }
3636            }
3637        }
3638        #[automatically_derived]
3639        impl alloy_sol_types::SolCall for DEPOSIT_TYPEHASHCall {
3640            type Parameters<'a> = ();
3641            type Token<'a> = <Self::Parameters<
3642                'a,
3643            > as alloy_sol_types::SolType>::Token<'a>;
3644            type Return = DEPOSIT_TYPEHASHReturn;
3645            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3646            type ReturnToken<'a> = <Self::ReturnTuple<
3647                'a,
3648            > as alloy_sol_types::SolType>::Token<'a>;
3649            const SIGNATURE: &'static str = "DEPOSIT_TYPEHASH()";
3650            const SELECTOR: [u8; 4] = [72u8, 130u8, 94u8, 148u8];
3651            #[inline]
3652            fn new<'a>(
3653                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3654            ) -> Self {
3655                tuple.into()
3656            }
3657            #[inline]
3658            fn tokenize(&self) -> Self::Token<'_> {
3659                ()
3660            }
3661            #[inline]
3662            fn abi_decode_returns(
3663                data: &[u8],
3664                validate: bool,
3665            ) -> alloy_sol_types::Result<Self::Return> {
3666                <Self::ReturnTuple<
3667                    '_,
3668                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3669                    .map(Into::into)
3670            }
3671        }
3672    };
3673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3674    /**Function with signature `addShares(address,address,uint256)` and selector `0x50ff7225`.
3675```solidity
3676function addShares(address staker, address strategy, uint256 shares) external returns (uint256, uint256);
3677```*/
3678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3679    #[derive(Clone)]
3680    pub struct addSharesCall {
3681        #[allow(missing_docs)]
3682        pub staker: alloy::sol_types::private::Address,
3683        #[allow(missing_docs)]
3684        pub strategy: alloy::sol_types::private::Address,
3685        #[allow(missing_docs)]
3686        pub shares: alloy::sol_types::private::primitives::aliases::U256,
3687    }
3688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3689    ///Container type for the return parameters of the [`addShares(address,address,uint256)`](addSharesCall) function.
3690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3691    #[derive(Clone)]
3692    pub struct addSharesReturn {
3693        #[allow(missing_docs)]
3694        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3695        #[allow(missing_docs)]
3696        pub _1: alloy::sol_types::private::primitives::aliases::U256,
3697    }
3698    #[allow(
3699        non_camel_case_types,
3700        non_snake_case,
3701        clippy::pub_underscore_fields,
3702        clippy::style
3703    )]
3704    const _: () = {
3705        use alloy::sol_types as alloy_sol_types;
3706        {
3707            #[doc(hidden)]
3708            type UnderlyingSolTuple<'a> = (
3709                alloy::sol_types::sol_data::Address,
3710                alloy::sol_types::sol_data::Address,
3711                alloy::sol_types::sol_data::Uint<256>,
3712            );
3713            #[doc(hidden)]
3714            type UnderlyingRustTuple<'a> = (
3715                alloy::sol_types::private::Address,
3716                alloy::sol_types::private::Address,
3717                alloy::sol_types::private::primitives::aliases::U256,
3718            );
3719            #[cfg(test)]
3720            #[allow(dead_code, unreachable_patterns)]
3721            fn _type_assertion(
3722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3723            ) {
3724                match _t {
3725                    alloy_sol_types::private::AssertTypeEq::<
3726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3727                    >(_) => {}
3728                }
3729            }
3730            #[automatically_derived]
3731            #[doc(hidden)]
3732            impl ::core::convert::From<addSharesCall> for UnderlyingRustTuple<'_> {
3733                fn from(value: addSharesCall) -> Self {
3734                    (value.staker, value.strategy, value.shares)
3735                }
3736            }
3737            #[automatically_derived]
3738            #[doc(hidden)]
3739            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesCall {
3740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3741                    Self {
3742                        staker: tuple.0,
3743                        strategy: tuple.1,
3744                        shares: tuple.2,
3745                    }
3746                }
3747            }
3748        }
3749        {
3750            #[doc(hidden)]
3751            type UnderlyingSolTuple<'a> = (
3752                alloy::sol_types::sol_data::Uint<256>,
3753                alloy::sol_types::sol_data::Uint<256>,
3754            );
3755            #[doc(hidden)]
3756            type UnderlyingRustTuple<'a> = (
3757                alloy::sol_types::private::primitives::aliases::U256,
3758                alloy::sol_types::private::primitives::aliases::U256,
3759            );
3760            #[cfg(test)]
3761            #[allow(dead_code, unreachable_patterns)]
3762            fn _type_assertion(
3763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3764            ) {
3765                match _t {
3766                    alloy_sol_types::private::AssertTypeEq::<
3767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3768                    >(_) => {}
3769                }
3770            }
3771            #[automatically_derived]
3772            #[doc(hidden)]
3773            impl ::core::convert::From<addSharesReturn> for UnderlyingRustTuple<'_> {
3774                fn from(value: addSharesReturn) -> Self {
3775                    (value._0, value._1)
3776                }
3777            }
3778            #[automatically_derived]
3779            #[doc(hidden)]
3780            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addSharesReturn {
3781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3782                    Self { _0: tuple.0, _1: tuple.1 }
3783                }
3784            }
3785        }
3786        #[automatically_derived]
3787        impl alloy_sol_types::SolCall for addSharesCall {
3788            type Parameters<'a> = (
3789                alloy::sol_types::sol_data::Address,
3790                alloy::sol_types::sol_data::Address,
3791                alloy::sol_types::sol_data::Uint<256>,
3792            );
3793            type Token<'a> = <Self::Parameters<
3794                'a,
3795            > as alloy_sol_types::SolType>::Token<'a>;
3796            type Return = addSharesReturn;
3797            type ReturnTuple<'a> = (
3798                alloy::sol_types::sol_data::Uint<256>,
3799                alloy::sol_types::sol_data::Uint<256>,
3800            );
3801            type ReturnToken<'a> = <Self::ReturnTuple<
3802                'a,
3803            > as alloy_sol_types::SolType>::Token<'a>;
3804            const SIGNATURE: &'static str = "addShares(address,address,uint256)";
3805            const SELECTOR: [u8; 4] = [80u8, 255u8, 114u8, 37u8];
3806            #[inline]
3807            fn new<'a>(
3808                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3809            ) -> Self {
3810                tuple.into()
3811            }
3812            #[inline]
3813            fn tokenize(&self) -> Self::Token<'_> {
3814                (
3815                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3816                        &self.staker,
3817                    ),
3818                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3819                        &self.strategy,
3820                    ),
3821                    <alloy::sol_types::sol_data::Uint<
3822                        256,
3823                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
3824                )
3825            }
3826            #[inline]
3827            fn abi_decode_returns(
3828                data: &[u8],
3829                validate: bool,
3830            ) -> alloy_sol_types::Result<Self::Return> {
3831                <Self::ReturnTuple<
3832                    '_,
3833                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3834                    .map(Into::into)
3835            }
3836        }
3837    };
3838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3839    /**Function with signature `addStrategiesToDepositWhitelist(address[])` and selector `0x5de08ff2`.
3840```solidity
3841function addStrategiesToDepositWhitelist(address[] memory strategiesToWhitelist) external;
3842```*/
3843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3844    #[derive(Clone)]
3845    pub struct addStrategiesToDepositWhitelistCall {
3846        #[allow(missing_docs)]
3847        pub strategiesToWhitelist: alloy::sol_types::private::Vec<
3848            alloy::sol_types::private::Address,
3849        >,
3850    }
3851    ///Container type for the return parameters of the [`addStrategiesToDepositWhitelist(address[])`](addStrategiesToDepositWhitelistCall) function.
3852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3853    #[derive(Clone)]
3854    pub struct addStrategiesToDepositWhitelistReturn {}
3855    #[allow(
3856        non_camel_case_types,
3857        non_snake_case,
3858        clippy::pub_underscore_fields,
3859        clippy::style
3860    )]
3861    const _: () = {
3862        use alloy::sol_types as alloy_sol_types;
3863        {
3864            #[doc(hidden)]
3865            type UnderlyingSolTuple<'a> = (
3866                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3867            );
3868            #[doc(hidden)]
3869            type UnderlyingRustTuple<'a> = (
3870                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3871            );
3872            #[cfg(test)]
3873            #[allow(dead_code, unreachable_patterns)]
3874            fn _type_assertion(
3875                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3876            ) {
3877                match _t {
3878                    alloy_sol_types::private::AssertTypeEq::<
3879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3880                    >(_) => {}
3881                }
3882            }
3883            #[automatically_derived]
3884            #[doc(hidden)]
3885            impl ::core::convert::From<addStrategiesToDepositWhitelistCall>
3886            for UnderlyingRustTuple<'_> {
3887                fn from(value: addStrategiesToDepositWhitelistCall) -> Self {
3888                    (value.strategiesToWhitelist,)
3889                }
3890            }
3891            #[automatically_derived]
3892            #[doc(hidden)]
3893            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3894            for addStrategiesToDepositWhitelistCall {
3895                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3896                    Self {
3897                        strategiesToWhitelist: tuple.0,
3898                    }
3899                }
3900            }
3901        }
3902        {
3903            #[doc(hidden)]
3904            type UnderlyingSolTuple<'a> = ();
3905            #[doc(hidden)]
3906            type UnderlyingRustTuple<'a> = ();
3907            #[cfg(test)]
3908            #[allow(dead_code, unreachable_patterns)]
3909            fn _type_assertion(
3910                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3911            ) {
3912                match _t {
3913                    alloy_sol_types::private::AssertTypeEq::<
3914                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3915                    >(_) => {}
3916                }
3917            }
3918            #[automatically_derived]
3919            #[doc(hidden)]
3920            impl ::core::convert::From<addStrategiesToDepositWhitelistReturn>
3921            for UnderlyingRustTuple<'_> {
3922                fn from(value: addStrategiesToDepositWhitelistReturn) -> Self {
3923                    ()
3924                }
3925            }
3926            #[automatically_derived]
3927            #[doc(hidden)]
3928            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3929            for addStrategiesToDepositWhitelistReturn {
3930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3931                    Self {}
3932                }
3933            }
3934        }
3935        #[automatically_derived]
3936        impl alloy_sol_types::SolCall for addStrategiesToDepositWhitelistCall {
3937            type Parameters<'a> = (
3938                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3939            );
3940            type Token<'a> = <Self::Parameters<
3941                'a,
3942            > as alloy_sol_types::SolType>::Token<'a>;
3943            type Return = addStrategiesToDepositWhitelistReturn;
3944            type ReturnTuple<'a> = ();
3945            type ReturnToken<'a> = <Self::ReturnTuple<
3946                'a,
3947            > as alloy_sol_types::SolType>::Token<'a>;
3948            const SIGNATURE: &'static str = "addStrategiesToDepositWhitelist(address[])";
3949            const SELECTOR: [u8; 4] = [93u8, 224u8, 143u8, 242u8];
3950            #[inline]
3951            fn new<'a>(
3952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3953            ) -> Self {
3954                tuple.into()
3955            }
3956            #[inline]
3957            fn tokenize(&self) -> Self::Token<'_> {
3958                (
3959                    <alloy::sol_types::sol_data::Array<
3960                        alloy::sol_types::sol_data::Address,
3961                    > as alloy_sol_types::SolType>::tokenize(
3962                        &self.strategiesToWhitelist,
3963                    ),
3964                )
3965            }
3966            #[inline]
3967            fn abi_decode_returns(
3968                data: &[u8],
3969                validate: bool,
3970            ) -> alloy_sol_types::Result<Self::Return> {
3971                <Self::ReturnTuple<
3972                    '_,
3973                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3974                    .map(Into::into)
3975            }
3976        }
3977    };
3978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3979    /**Function with signature `burnShares(address)` and selector `0x4b6d5d6e`.
3980```solidity
3981function burnShares(address strategy) external;
3982```*/
3983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3984    #[derive(Clone)]
3985    pub struct burnSharesCall {
3986        #[allow(missing_docs)]
3987        pub strategy: alloy::sol_types::private::Address,
3988    }
3989    ///Container type for the return parameters of the [`burnShares(address)`](burnSharesCall) function.
3990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3991    #[derive(Clone)]
3992    pub struct burnSharesReturn {}
3993    #[allow(
3994        non_camel_case_types,
3995        non_snake_case,
3996        clippy::pub_underscore_fields,
3997        clippy::style
3998    )]
3999    const _: () = {
4000        use alloy::sol_types as alloy_sol_types;
4001        {
4002            #[doc(hidden)]
4003            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4004            #[doc(hidden)]
4005            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4006            #[cfg(test)]
4007            #[allow(dead_code, unreachable_patterns)]
4008            fn _type_assertion(
4009                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4010            ) {
4011                match _t {
4012                    alloy_sol_types::private::AssertTypeEq::<
4013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4014                    >(_) => {}
4015                }
4016            }
4017            #[automatically_derived]
4018            #[doc(hidden)]
4019            impl ::core::convert::From<burnSharesCall> for UnderlyingRustTuple<'_> {
4020                fn from(value: burnSharesCall) -> Self {
4021                    (value.strategy,)
4022                }
4023            }
4024            #[automatically_derived]
4025            #[doc(hidden)]
4026            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesCall {
4027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4028                    Self { strategy: tuple.0 }
4029                }
4030            }
4031        }
4032        {
4033            #[doc(hidden)]
4034            type UnderlyingSolTuple<'a> = ();
4035            #[doc(hidden)]
4036            type UnderlyingRustTuple<'a> = ();
4037            #[cfg(test)]
4038            #[allow(dead_code, unreachable_patterns)]
4039            fn _type_assertion(
4040                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4041            ) {
4042                match _t {
4043                    alloy_sol_types::private::AssertTypeEq::<
4044                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4045                    >(_) => {}
4046                }
4047            }
4048            #[automatically_derived]
4049            #[doc(hidden)]
4050            impl ::core::convert::From<burnSharesReturn> for UnderlyingRustTuple<'_> {
4051                fn from(value: burnSharesReturn) -> Self {
4052                    ()
4053                }
4054            }
4055            #[automatically_derived]
4056            #[doc(hidden)]
4057            impl ::core::convert::From<UnderlyingRustTuple<'_>> for burnSharesReturn {
4058                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4059                    Self {}
4060                }
4061            }
4062        }
4063        #[automatically_derived]
4064        impl alloy_sol_types::SolCall for burnSharesCall {
4065            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4066            type Token<'a> = <Self::Parameters<
4067                'a,
4068            > as alloy_sol_types::SolType>::Token<'a>;
4069            type Return = burnSharesReturn;
4070            type ReturnTuple<'a> = ();
4071            type ReturnToken<'a> = <Self::ReturnTuple<
4072                'a,
4073            > as alloy_sol_types::SolType>::Token<'a>;
4074            const SIGNATURE: &'static str = "burnShares(address)";
4075            const SELECTOR: [u8; 4] = [75u8, 109u8, 93u8, 110u8];
4076            #[inline]
4077            fn new<'a>(
4078                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4079            ) -> Self {
4080                tuple.into()
4081            }
4082            #[inline]
4083            fn tokenize(&self) -> Self::Token<'_> {
4084                (
4085                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4086                        &self.strategy,
4087                    ),
4088                )
4089            }
4090            #[inline]
4091            fn abi_decode_returns(
4092                data: &[u8],
4093                validate: bool,
4094            ) -> alloy_sol_types::Result<Self::Return> {
4095                <Self::ReturnTuple<
4096                    '_,
4097                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4098                    .map(Into::into)
4099            }
4100        }
4101    };
4102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4103    /**Function with signature `calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)` and selector `0x9ac01d61`.
4104```solidity
4105function calculateStrategyDepositDigestHash(address staker, address strategy, address token, uint256 amount, uint256 nonce, uint256 expiry) external view returns (bytes32);
4106```*/
4107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4108    #[derive(Clone)]
4109    pub struct calculateStrategyDepositDigestHashCall {
4110        #[allow(missing_docs)]
4111        pub staker: alloy::sol_types::private::Address,
4112        #[allow(missing_docs)]
4113        pub strategy: alloy::sol_types::private::Address,
4114        #[allow(missing_docs)]
4115        pub token: alloy::sol_types::private::Address,
4116        #[allow(missing_docs)]
4117        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4118        #[allow(missing_docs)]
4119        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
4120        #[allow(missing_docs)]
4121        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4122    }
4123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4124    ///Container type for the return parameters of the [`calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)`](calculateStrategyDepositDigestHashCall) function.
4125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4126    #[derive(Clone)]
4127    pub struct calculateStrategyDepositDigestHashReturn {
4128        #[allow(missing_docs)]
4129        pub _0: alloy::sol_types::private::FixedBytes<32>,
4130    }
4131    #[allow(
4132        non_camel_case_types,
4133        non_snake_case,
4134        clippy::pub_underscore_fields,
4135        clippy::style
4136    )]
4137    const _: () = {
4138        use alloy::sol_types as alloy_sol_types;
4139        {
4140            #[doc(hidden)]
4141            type UnderlyingSolTuple<'a> = (
4142                alloy::sol_types::sol_data::Address,
4143                alloy::sol_types::sol_data::Address,
4144                alloy::sol_types::sol_data::Address,
4145                alloy::sol_types::sol_data::Uint<256>,
4146                alloy::sol_types::sol_data::Uint<256>,
4147                alloy::sol_types::sol_data::Uint<256>,
4148            );
4149            #[doc(hidden)]
4150            type UnderlyingRustTuple<'a> = (
4151                alloy::sol_types::private::Address,
4152                alloy::sol_types::private::Address,
4153                alloy::sol_types::private::Address,
4154                alloy::sol_types::private::primitives::aliases::U256,
4155                alloy::sol_types::private::primitives::aliases::U256,
4156                alloy::sol_types::private::primitives::aliases::U256,
4157            );
4158            #[cfg(test)]
4159            #[allow(dead_code, unreachable_patterns)]
4160            fn _type_assertion(
4161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4162            ) {
4163                match _t {
4164                    alloy_sol_types::private::AssertTypeEq::<
4165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4166                    >(_) => {}
4167                }
4168            }
4169            #[automatically_derived]
4170            #[doc(hidden)]
4171            impl ::core::convert::From<calculateStrategyDepositDigestHashCall>
4172            for UnderlyingRustTuple<'_> {
4173                fn from(value: calculateStrategyDepositDigestHashCall) -> Self {
4174                    (
4175                        value.staker,
4176                        value.strategy,
4177                        value.token,
4178                        value.amount,
4179                        value.nonce,
4180                        value.expiry,
4181                    )
4182                }
4183            }
4184            #[automatically_derived]
4185            #[doc(hidden)]
4186            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4187            for calculateStrategyDepositDigestHashCall {
4188                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4189                    Self {
4190                        staker: tuple.0,
4191                        strategy: tuple.1,
4192                        token: tuple.2,
4193                        amount: tuple.3,
4194                        nonce: tuple.4,
4195                        expiry: tuple.5,
4196                    }
4197                }
4198            }
4199        }
4200        {
4201            #[doc(hidden)]
4202            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4203            #[doc(hidden)]
4204            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4205            #[cfg(test)]
4206            #[allow(dead_code, unreachable_patterns)]
4207            fn _type_assertion(
4208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4209            ) {
4210                match _t {
4211                    alloy_sol_types::private::AssertTypeEq::<
4212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4213                    >(_) => {}
4214                }
4215            }
4216            #[automatically_derived]
4217            #[doc(hidden)]
4218            impl ::core::convert::From<calculateStrategyDepositDigestHashReturn>
4219            for UnderlyingRustTuple<'_> {
4220                fn from(value: calculateStrategyDepositDigestHashReturn) -> Self {
4221                    (value._0,)
4222                }
4223            }
4224            #[automatically_derived]
4225            #[doc(hidden)]
4226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4227            for calculateStrategyDepositDigestHashReturn {
4228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4229                    Self { _0: tuple.0 }
4230                }
4231            }
4232        }
4233        #[automatically_derived]
4234        impl alloy_sol_types::SolCall for calculateStrategyDepositDigestHashCall {
4235            type Parameters<'a> = (
4236                alloy::sol_types::sol_data::Address,
4237                alloy::sol_types::sol_data::Address,
4238                alloy::sol_types::sol_data::Address,
4239                alloy::sol_types::sol_data::Uint<256>,
4240                alloy::sol_types::sol_data::Uint<256>,
4241                alloy::sol_types::sol_data::Uint<256>,
4242            );
4243            type Token<'a> = <Self::Parameters<
4244                'a,
4245            > as alloy_sol_types::SolType>::Token<'a>;
4246            type Return = calculateStrategyDepositDigestHashReturn;
4247            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4248            type ReturnToken<'a> = <Self::ReturnTuple<
4249                'a,
4250            > as alloy_sol_types::SolType>::Token<'a>;
4251            const SIGNATURE: &'static str = "calculateStrategyDepositDigestHash(address,address,address,uint256,uint256,uint256)";
4252            const SELECTOR: [u8; 4] = [154u8, 192u8, 29u8, 97u8];
4253            #[inline]
4254            fn new<'a>(
4255                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4256            ) -> Self {
4257                tuple.into()
4258            }
4259            #[inline]
4260            fn tokenize(&self) -> Self::Token<'_> {
4261                (
4262                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4263                        &self.staker,
4264                    ),
4265                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4266                        &self.strategy,
4267                    ),
4268                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4269                        &self.token,
4270                    ),
4271                    <alloy::sol_types::sol_data::Uint<
4272                        256,
4273                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4274                    <alloy::sol_types::sol_data::Uint<
4275                        256,
4276                    > as alloy_sol_types::SolType>::tokenize(&self.nonce),
4277                    <alloy::sol_types::sol_data::Uint<
4278                        256,
4279                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
4280                )
4281            }
4282            #[inline]
4283            fn abi_decode_returns(
4284                data: &[u8],
4285                validate: bool,
4286            ) -> alloy_sol_types::Result<Self::Return> {
4287                <Self::ReturnTuple<
4288                    '_,
4289                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4290                    .map(Into::into)
4291            }
4292        }
4293    };
4294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4295    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4296```solidity
4297function delegation() external view returns (address);
4298```*/
4299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4300    #[derive(Clone)]
4301    pub struct delegationCall {}
4302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4303    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4305    #[derive(Clone)]
4306    pub struct delegationReturn {
4307        #[allow(missing_docs)]
4308        pub _0: alloy::sol_types::private::Address,
4309    }
4310    #[allow(
4311        non_camel_case_types,
4312        non_snake_case,
4313        clippy::pub_underscore_fields,
4314        clippy::style
4315    )]
4316    const _: () = {
4317        use alloy::sol_types as alloy_sol_types;
4318        {
4319            #[doc(hidden)]
4320            type UnderlyingSolTuple<'a> = ();
4321            #[doc(hidden)]
4322            type UnderlyingRustTuple<'a> = ();
4323            #[cfg(test)]
4324            #[allow(dead_code, unreachable_patterns)]
4325            fn _type_assertion(
4326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4327            ) {
4328                match _t {
4329                    alloy_sol_types::private::AssertTypeEq::<
4330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4331                    >(_) => {}
4332                }
4333            }
4334            #[automatically_derived]
4335            #[doc(hidden)]
4336            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4337                fn from(value: delegationCall) -> Self {
4338                    ()
4339                }
4340            }
4341            #[automatically_derived]
4342            #[doc(hidden)]
4343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4345                    Self {}
4346                }
4347            }
4348        }
4349        {
4350            #[doc(hidden)]
4351            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4352            #[doc(hidden)]
4353            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4354            #[cfg(test)]
4355            #[allow(dead_code, unreachable_patterns)]
4356            fn _type_assertion(
4357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4358            ) {
4359                match _t {
4360                    alloy_sol_types::private::AssertTypeEq::<
4361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4362                    >(_) => {}
4363                }
4364            }
4365            #[automatically_derived]
4366            #[doc(hidden)]
4367            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4368                fn from(value: delegationReturn) -> Self {
4369                    (value._0,)
4370                }
4371            }
4372            #[automatically_derived]
4373            #[doc(hidden)]
4374            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4376                    Self { _0: tuple.0 }
4377                }
4378            }
4379        }
4380        #[automatically_derived]
4381        impl alloy_sol_types::SolCall for delegationCall {
4382            type Parameters<'a> = ();
4383            type Token<'a> = <Self::Parameters<
4384                'a,
4385            > as alloy_sol_types::SolType>::Token<'a>;
4386            type Return = delegationReturn;
4387            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4388            type ReturnToken<'a> = <Self::ReturnTuple<
4389                'a,
4390            > as alloy_sol_types::SolType>::Token<'a>;
4391            const SIGNATURE: &'static str = "delegation()";
4392            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4393            #[inline]
4394            fn new<'a>(
4395                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4396            ) -> Self {
4397                tuple.into()
4398            }
4399            #[inline]
4400            fn tokenize(&self) -> Self::Token<'_> {
4401                ()
4402            }
4403            #[inline]
4404            fn abi_decode_returns(
4405                data: &[u8],
4406                validate: bool,
4407            ) -> alloy_sol_types::Result<Self::Return> {
4408                <Self::ReturnTuple<
4409                    '_,
4410                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4411                    .map(Into::into)
4412            }
4413        }
4414    };
4415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4416    /**Function with signature `depositIntoStrategy(address,address,uint256)` and selector `0xe7a050aa`.
4417```solidity
4418function depositIntoStrategy(address strategy, address token, uint256 amount) external returns (uint256 depositShares);
4419```*/
4420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4421    #[derive(Clone)]
4422    pub struct depositIntoStrategyCall {
4423        #[allow(missing_docs)]
4424        pub strategy: alloy::sol_types::private::Address,
4425        #[allow(missing_docs)]
4426        pub token: alloy::sol_types::private::Address,
4427        #[allow(missing_docs)]
4428        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4429    }
4430    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4431    ///Container type for the return parameters of the [`depositIntoStrategy(address,address,uint256)`](depositIntoStrategyCall) function.
4432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4433    #[derive(Clone)]
4434    pub struct depositIntoStrategyReturn {
4435        #[allow(missing_docs)]
4436        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4437    }
4438    #[allow(
4439        non_camel_case_types,
4440        non_snake_case,
4441        clippy::pub_underscore_fields,
4442        clippy::style
4443    )]
4444    const _: () = {
4445        use alloy::sol_types as alloy_sol_types;
4446        {
4447            #[doc(hidden)]
4448            type UnderlyingSolTuple<'a> = (
4449                alloy::sol_types::sol_data::Address,
4450                alloy::sol_types::sol_data::Address,
4451                alloy::sol_types::sol_data::Uint<256>,
4452            );
4453            #[doc(hidden)]
4454            type UnderlyingRustTuple<'a> = (
4455                alloy::sol_types::private::Address,
4456                alloy::sol_types::private::Address,
4457                alloy::sol_types::private::primitives::aliases::U256,
4458            );
4459            #[cfg(test)]
4460            #[allow(dead_code, unreachable_patterns)]
4461            fn _type_assertion(
4462                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4463            ) {
4464                match _t {
4465                    alloy_sol_types::private::AssertTypeEq::<
4466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4467                    >(_) => {}
4468                }
4469            }
4470            #[automatically_derived]
4471            #[doc(hidden)]
4472            impl ::core::convert::From<depositIntoStrategyCall>
4473            for UnderlyingRustTuple<'_> {
4474                fn from(value: depositIntoStrategyCall) -> Self {
4475                    (value.strategy, value.token, value.amount)
4476                }
4477            }
4478            #[automatically_derived]
4479            #[doc(hidden)]
4480            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4481            for depositIntoStrategyCall {
4482                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4483                    Self {
4484                        strategy: tuple.0,
4485                        token: tuple.1,
4486                        amount: tuple.2,
4487                    }
4488                }
4489            }
4490        }
4491        {
4492            #[doc(hidden)]
4493            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4494            #[doc(hidden)]
4495            type UnderlyingRustTuple<'a> = (
4496                alloy::sol_types::private::primitives::aliases::U256,
4497            );
4498            #[cfg(test)]
4499            #[allow(dead_code, unreachable_patterns)]
4500            fn _type_assertion(
4501                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4502            ) {
4503                match _t {
4504                    alloy_sol_types::private::AssertTypeEq::<
4505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4506                    >(_) => {}
4507                }
4508            }
4509            #[automatically_derived]
4510            #[doc(hidden)]
4511            impl ::core::convert::From<depositIntoStrategyReturn>
4512            for UnderlyingRustTuple<'_> {
4513                fn from(value: depositIntoStrategyReturn) -> Self {
4514                    (value.depositShares,)
4515                }
4516            }
4517            #[automatically_derived]
4518            #[doc(hidden)]
4519            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4520            for depositIntoStrategyReturn {
4521                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4522                    Self { depositShares: tuple.0 }
4523                }
4524            }
4525        }
4526        #[automatically_derived]
4527        impl alloy_sol_types::SolCall for depositIntoStrategyCall {
4528            type Parameters<'a> = (
4529                alloy::sol_types::sol_data::Address,
4530                alloy::sol_types::sol_data::Address,
4531                alloy::sol_types::sol_data::Uint<256>,
4532            );
4533            type Token<'a> = <Self::Parameters<
4534                'a,
4535            > as alloy_sol_types::SolType>::Token<'a>;
4536            type Return = depositIntoStrategyReturn;
4537            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4538            type ReturnToken<'a> = <Self::ReturnTuple<
4539                'a,
4540            > as alloy_sol_types::SolType>::Token<'a>;
4541            const SIGNATURE: &'static str = "depositIntoStrategy(address,address,uint256)";
4542            const SELECTOR: [u8; 4] = [231u8, 160u8, 80u8, 170u8];
4543            #[inline]
4544            fn new<'a>(
4545                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4546            ) -> Self {
4547                tuple.into()
4548            }
4549            #[inline]
4550            fn tokenize(&self) -> Self::Token<'_> {
4551                (
4552                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4553                        &self.strategy,
4554                    ),
4555                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4556                        &self.token,
4557                    ),
4558                    <alloy::sol_types::sol_data::Uint<
4559                        256,
4560                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4561                )
4562            }
4563            #[inline]
4564            fn abi_decode_returns(
4565                data: &[u8],
4566                validate: bool,
4567            ) -> alloy_sol_types::Result<Self::Return> {
4568                <Self::ReturnTuple<
4569                    '_,
4570                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4571                    .map(Into::into)
4572            }
4573        }
4574    };
4575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4576    /**Function with signature `depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)` and selector `0x32e89ace`.
4577```solidity
4578function depositIntoStrategyWithSignature(address strategy, address token, uint256 amount, address staker, uint256 expiry, bytes memory signature) external returns (uint256 depositShares);
4579```*/
4580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4581    #[derive(Clone)]
4582    pub struct depositIntoStrategyWithSignatureCall {
4583        #[allow(missing_docs)]
4584        pub strategy: alloy::sol_types::private::Address,
4585        #[allow(missing_docs)]
4586        pub token: alloy::sol_types::private::Address,
4587        #[allow(missing_docs)]
4588        pub amount: alloy::sol_types::private::primitives::aliases::U256,
4589        #[allow(missing_docs)]
4590        pub staker: alloy::sol_types::private::Address,
4591        #[allow(missing_docs)]
4592        pub expiry: alloy::sol_types::private::primitives::aliases::U256,
4593        #[allow(missing_docs)]
4594        pub signature: alloy::sol_types::private::Bytes,
4595    }
4596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4597    ///Container type for the return parameters of the [`depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)`](depositIntoStrategyWithSignatureCall) function.
4598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4599    #[derive(Clone)]
4600    pub struct depositIntoStrategyWithSignatureReturn {
4601        #[allow(missing_docs)]
4602        pub depositShares: alloy::sol_types::private::primitives::aliases::U256,
4603    }
4604    #[allow(
4605        non_camel_case_types,
4606        non_snake_case,
4607        clippy::pub_underscore_fields,
4608        clippy::style
4609    )]
4610    const _: () = {
4611        use alloy::sol_types as alloy_sol_types;
4612        {
4613            #[doc(hidden)]
4614            type UnderlyingSolTuple<'a> = (
4615                alloy::sol_types::sol_data::Address,
4616                alloy::sol_types::sol_data::Address,
4617                alloy::sol_types::sol_data::Uint<256>,
4618                alloy::sol_types::sol_data::Address,
4619                alloy::sol_types::sol_data::Uint<256>,
4620                alloy::sol_types::sol_data::Bytes,
4621            );
4622            #[doc(hidden)]
4623            type UnderlyingRustTuple<'a> = (
4624                alloy::sol_types::private::Address,
4625                alloy::sol_types::private::Address,
4626                alloy::sol_types::private::primitives::aliases::U256,
4627                alloy::sol_types::private::Address,
4628                alloy::sol_types::private::primitives::aliases::U256,
4629                alloy::sol_types::private::Bytes,
4630            );
4631            #[cfg(test)]
4632            #[allow(dead_code, unreachable_patterns)]
4633            fn _type_assertion(
4634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4635            ) {
4636                match _t {
4637                    alloy_sol_types::private::AssertTypeEq::<
4638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4639                    >(_) => {}
4640                }
4641            }
4642            #[automatically_derived]
4643            #[doc(hidden)]
4644            impl ::core::convert::From<depositIntoStrategyWithSignatureCall>
4645            for UnderlyingRustTuple<'_> {
4646                fn from(value: depositIntoStrategyWithSignatureCall) -> Self {
4647                    (
4648                        value.strategy,
4649                        value.token,
4650                        value.amount,
4651                        value.staker,
4652                        value.expiry,
4653                        value.signature,
4654                    )
4655                }
4656            }
4657            #[automatically_derived]
4658            #[doc(hidden)]
4659            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4660            for depositIntoStrategyWithSignatureCall {
4661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4662                    Self {
4663                        strategy: tuple.0,
4664                        token: tuple.1,
4665                        amount: tuple.2,
4666                        staker: tuple.3,
4667                        expiry: tuple.4,
4668                        signature: tuple.5,
4669                    }
4670                }
4671            }
4672        }
4673        {
4674            #[doc(hidden)]
4675            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4676            #[doc(hidden)]
4677            type UnderlyingRustTuple<'a> = (
4678                alloy::sol_types::private::primitives::aliases::U256,
4679            );
4680            #[cfg(test)]
4681            #[allow(dead_code, unreachable_patterns)]
4682            fn _type_assertion(
4683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4684            ) {
4685                match _t {
4686                    alloy_sol_types::private::AssertTypeEq::<
4687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4688                    >(_) => {}
4689                }
4690            }
4691            #[automatically_derived]
4692            #[doc(hidden)]
4693            impl ::core::convert::From<depositIntoStrategyWithSignatureReturn>
4694            for UnderlyingRustTuple<'_> {
4695                fn from(value: depositIntoStrategyWithSignatureReturn) -> Self {
4696                    (value.depositShares,)
4697                }
4698            }
4699            #[automatically_derived]
4700            #[doc(hidden)]
4701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4702            for depositIntoStrategyWithSignatureReturn {
4703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4704                    Self { depositShares: tuple.0 }
4705                }
4706            }
4707        }
4708        #[automatically_derived]
4709        impl alloy_sol_types::SolCall for depositIntoStrategyWithSignatureCall {
4710            type Parameters<'a> = (
4711                alloy::sol_types::sol_data::Address,
4712                alloy::sol_types::sol_data::Address,
4713                alloy::sol_types::sol_data::Uint<256>,
4714                alloy::sol_types::sol_data::Address,
4715                alloy::sol_types::sol_data::Uint<256>,
4716                alloy::sol_types::sol_data::Bytes,
4717            );
4718            type Token<'a> = <Self::Parameters<
4719                'a,
4720            > as alloy_sol_types::SolType>::Token<'a>;
4721            type Return = depositIntoStrategyWithSignatureReturn;
4722            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4723            type ReturnToken<'a> = <Self::ReturnTuple<
4724                'a,
4725            > as alloy_sol_types::SolType>::Token<'a>;
4726            const SIGNATURE: &'static str = "depositIntoStrategyWithSignature(address,address,uint256,address,uint256,bytes)";
4727            const SELECTOR: [u8; 4] = [50u8, 232u8, 154u8, 206u8];
4728            #[inline]
4729            fn new<'a>(
4730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4731            ) -> Self {
4732                tuple.into()
4733            }
4734            #[inline]
4735            fn tokenize(&self) -> Self::Token<'_> {
4736                (
4737                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4738                        &self.strategy,
4739                    ),
4740                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4741                        &self.token,
4742                    ),
4743                    <alloy::sol_types::sol_data::Uint<
4744                        256,
4745                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
4746                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4747                        &self.staker,
4748                    ),
4749                    <alloy::sol_types::sol_data::Uint<
4750                        256,
4751                    > as alloy_sol_types::SolType>::tokenize(&self.expiry),
4752                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4753                        &self.signature,
4754                    ),
4755                )
4756            }
4757            #[inline]
4758            fn abi_decode_returns(
4759                data: &[u8],
4760                validate: bool,
4761            ) -> alloy_sol_types::Result<Self::Return> {
4762                <Self::ReturnTuple<
4763                    '_,
4764                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4765                    .map(Into::into)
4766            }
4767        }
4768    };
4769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4770    /**Function with signature `domainSeparator()` and selector `0xf698da25`.
4771```solidity
4772function domainSeparator() external view returns (bytes32);
4773```*/
4774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4775    #[derive(Clone)]
4776    pub struct domainSeparatorCall {}
4777    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4778    ///Container type for the return parameters of the [`domainSeparator()`](domainSeparatorCall) function.
4779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4780    #[derive(Clone)]
4781    pub struct domainSeparatorReturn {
4782        #[allow(missing_docs)]
4783        pub _0: alloy::sol_types::private::FixedBytes<32>,
4784    }
4785    #[allow(
4786        non_camel_case_types,
4787        non_snake_case,
4788        clippy::pub_underscore_fields,
4789        clippy::style
4790    )]
4791    const _: () = {
4792        use alloy::sol_types as alloy_sol_types;
4793        {
4794            #[doc(hidden)]
4795            type UnderlyingSolTuple<'a> = ();
4796            #[doc(hidden)]
4797            type UnderlyingRustTuple<'a> = ();
4798            #[cfg(test)]
4799            #[allow(dead_code, unreachable_patterns)]
4800            fn _type_assertion(
4801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4802            ) {
4803                match _t {
4804                    alloy_sol_types::private::AssertTypeEq::<
4805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4806                    >(_) => {}
4807                }
4808            }
4809            #[automatically_derived]
4810            #[doc(hidden)]
4811            impl ::core::convert::From<domainSeparatorCall> for UnderlyingRustTuple<'_> {
4812                fn from(value: domainSeparatorCall) -> Self {
4813                    ()
4814                }
4815            }
4816            #[automatically_derived]
4817            #[doc(hidden)]
4818            impl ::core::convert::From<UnderlyingRustTuple<'_>> for domainSeparatorCall {
4819                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4820                    Self {}
4821                }
4822            }
4823        }
4824        {
4825            #[doc(hidden)]
4826            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4827            #[doc(hidden)]
4828            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4829            #[cfg(test)]
4830            #[allow(dead_code, unreachable_patterns)]
4831            fn _type_assertion(
4832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4833            ) {
4834                match _t {
4835                    alloy_sol_types::private::AssertTypeEq::<
4836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4837                    >(_) => {}
4838                }
4839            }
4840            #[automatically_derived]
4841            #[doc(hidden)]
4842            impl ::core::convert::From<domainSeparatorReturn>
4843            for UnderlyingRustTuple<'_> {
4844                fn from(value: domainSeparatorReturn) -> Self {
4845                    (value._0,)
4846                }
4847            }
4848            #[automatically_derived]
4849            #[doc(hidden)]
4850            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4851            for domainSeparatorReturn {
4852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4853                    Self { _0: tuple.0 }
4854                }
4855            }
4856        }
4857        #[automatically_derived]
4858        impl alloy_sol_types::SolCall for domainSeparatorCall {
4859            type Parameters<'a> = ();
4860            type Token<'a> = <Self::Parameters<
4861                'a,
4862            > as alloy_sol_types::SolType>::Token<'a>;
4863            type Return = domainSeparatorReturn;
4864            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4865            type ReturnToken<'a> = <Self::ReturnTuple<
4866                'a,
4867            > as alloy_sol_types::SolType>::Token<'a>;
4868            const SIGNATURE: &'static str = "domainSeparator()";
4869            const SELECTOR: [u8; 4] = [246u8, 152u8, 218u8, 37u8];
4870            #[inline]
4871            fn new<'a>(
4872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4873            ) -> Self {
4874                tuple.into()
4875            }
4876            #[inline]
4877            fn tokenize(&self) -> Self::Token<'_> {
4878                ()
4879            }
4880            #[inline]
4881            fn abi_decode_returns(
4882                data: &[u8],
4883                validate: bool,
4884            ) -> alloy_sol_types::Result<Self::Return> {
4885                <Self::ReturnTuple<
4886                    '_,
4887                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4888                    .map(Into::into)
4889            }
4890        }
4891    };
4892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4893    /**Function with signature `getBurnableShares(address)` and selector `0xfd980423`.
4894```solidity
4895function getBurnableShares(address strategy) external view returns (uint256);
4896```*/
4897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4898    #[derive(Clone)]
4899    pub struct getBurnableSharesCall {
4900        #[allow(missing_docs)]
4901        pub strategy: alloy::sol_types::private::Address,
4902    }
4903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4904    ///Container type for the return parameters of the [`getBurnableShares(address)`](getBurnableSharesCall) function.
4905    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4906    #[derive(Clone)]
4907    pub struct getBurnableSharesReturn {
4908        #[allow(missing_docs)]
4909        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4910    }
4911    #[allow(
4912        non_camel_case_types,
4913        non_snake_case,
4914        clippy::pub_underscore_fields,
4915        clippy::style
4916    )]
4917    const _: () = {
4918        use alloy::sol_types as alloy_sol_types;
4919        {
4920            #[doc(hidden)]
4921            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4922            #[doc(hidden)]
4923            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4924            #[cfg(test)]
4925            #[allow(dead_code, unreachable_patterns)]
4926            fn _type_assertion(
4927                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4928            ) {
4929                match _t {
4930                    alloy_sol_types::private::AssertTypeEq::<
4931                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4932                    >(_) => {}
4933                }
4934            }
4935            #[automatically_derived]
4936            #[doc(hidden)]
4937            impl ::core::convert::From<getBurnableSharesCall>
4938            for UnderlyingRustTuple<'_> {
4939                fn from(value: getBurnableSharesCall) -> Self {
4940                    (value.strategy,)
4941                }
4942            }
4943            #[automatically_derived]
4944            #[doc(hidden)]
4945            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4946            for getBurnableSharesCall {
4947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4948                    Self { strategy: tuple.0 }
4949                }
4950            }
4951        }
4952        {
4953            #[doc(hidden)]
4954            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4955            #[doc(hidden)]
4956            type UnderlyingRustTuple<'a> = (
4957                alloy::sol_types::private::primitives::aliases::U256,
4958            );
4959            #[cfg(test)]
4960            #[allow(dead_code, unreachable_patterns)]
4961            fn _type_assertion(
4962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4963            ) {
4964                match _t {
4965                    alloy_sol_types::private::AssertTypeEq::<
4966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4967                    >(_) => {}
4968                }
4969            }
4970            #[automatically_derived]
4971            #[doc(hidden)]
4972            impl ::core::convert::From<getBurnableSharesReturn>
4973            for UnderlyingRustTuple<'_> {
4974                fn from(value: getBurnableSharesReturn) -> Self {
4975                    (value._0,)
4976                }
4977            }
4978            #[automatically_derived]
4979            #[doc(hidden)]
4980            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4981            for getBurnableSharesReturn {
4982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4983                    Self { _0: tuple.0 }
4984                }
4985            }
4986        }
4987        #[automatically_derived]
4988        impl alloy_sol_types::SolCall for getBurnableSharesCall {
4989            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4990            type Token<'a> = <Self::Parameters<
4991                'a,
4992            > as alloy_sol_types::SolType>::Token<'a>;
4993            type Return = getBurnableSharesReturn;
4994            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4995            type ReturnToken<'a> = <Self::ReturnTuple<
4996                'a,
4997            > as alloy_sol_types::SolType>::Token<'a>;
4998            const SIGNATURE: &'static str = "getBurnableShares(address)";
4999            const SELECTOR: [u8; 4] = [253u8, 152u8, 4u8, 35u8];
5000            #[inline]
5001            fn new<'a>(
5002                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5003            ) -> Self {
5004                tuple.into()
5005            }
5006            #[inline]
5007            fn tokenize(&self) -> Self::Token<'_> {
5008                (
5009                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5010                        &self.strategy,
5011                    ),
5012                )
5013            }
5014            #[inline]
5015            fn abi_decode_returns(
5016                data: &[u8],
5017                validate: bool,
5018            ) -> alloy_sol_types::Result<Self::Return> {
5019                <Self::ReturnTuple<
5020                    '_,
5021                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5022                    .map(Into::into)
5023            }
5024        }
5025    };
5026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5027    /**Function with signature `getDeposits(address)` and selector `0x94f649dd`.
5028```solidity
5029function getDeposits(address staker) external view returns (address[] memory, uint256[] memory);
5030```*/
5031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5032    #[derive(Clone)]
5033    pub struct getDepositsCall {
5034        #[allow(missing_docs)]
5035        pub staker: alloy::sol_types::private::Address,
5036    }
5037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5038    ///Container type for the return parameters of the [`getDeposits(address)`](getDepositsCall) function.
5039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5040    #[derive(Clone)]
5041    pub struct getDepositsReturn {
5042        #[allow(missing_docs)]
5043        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5044        #[allow(missing_docs)]
5045        pub _1: alloy::sol_types::private::Vec<
5046            alloy::sol_types::private::primitives::aliases::U256,
5047        >,
5048    }
5049    #[allow(
5050        non_camel_case_types,
5051        non_snake_case,
5052        clippy::pub_underscore_fields,
5053        clippy::style
5054    )]
5055    const _: () = {
5056        use alloy::sol_types as alloy_sol_types;
5057        {
5058            #[doc(hidden)]
5059            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5060            #[doc(hidden)]
5061            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5062            #[cfg(test)]
5063            #[allow(dead_code, unreachable_patterns)]
5064            fn _type_assertion(
5065                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5066            ) {
5067                match _t {
5068                    alloy_sol_types::private::AssertTypeEq::<
5069                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5070                    >(_) => {}
5071                }
5072            }
5073            #[automatically_derived]
5074            #[doc(hidden)]
5075            impl ::core::convert::From<getDepositsCall> for UnderlyingRustTuple<'_> {
5076                fn from(value: getDepositsCall) -> Self {
5077                    (value.staker,)
5078                }
5079            }
5080            #[automatically_derived]
5081            #[doc(hidden)]
5082            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsCall {
5083                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5084                    Self { staker: tuple.0 }
5085                }
5086            }
5087        }
5088        {
5089            #[doc(hidden)]
5090            type UnderlyingSolTuple<'a> = (
5091                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5092                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5093            );
5094            #[doc(hidden)]
5095            type UnderlyingRustTuple<'a> = (
5096                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5097                alloy::sol_types::private::Vec<
5098                    alloy::sol_types::private::primitives::aliases::U256,
5099                >,
5100            );
5101            #[cfg(test)]
5102            #[allow(dead_code, unreachable_patterns)]
5103            fn _type_assertion(
5104                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5105            ) {
5106                match _t {
5107                    alloy_sol_types::private::AssertTypeEq::<
5108                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5109                    >(_) => {}
5110                }
5111            }
5112            #[automatically_derived]
5113            #[doc(hidden)]
5114            impl ::core::convert::From<getDepositsReturn> for UnderlyingRustTuple<'_> {
5115                fn from(value: getDepositsReturn) -> Self {
5116                    (value._0, value._1)
5117                }
5118            }
5119            #[automatically_derived]
5120            #[doc(hidden)]
5121            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getDepositsReturn {
5122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5123                    Self { _0: tuple.0, _1: tuple.1 }
5124                }
5125            }
5126        }
5127        #[automatically_derived]
5128        impl alloy_sol_types::SolCall for getDepositsCall {
5129            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5130            type Token<'a> = <Self::Parameters<
5131                'a,
5132            > as alloy_sol_types::SolType>::Token<'a>;
5133            type Return = getDepositsReturn;
5134            type ReturnTuple<'a> = (
5135                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5136                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5137            );
5138            type ReturnToken<'a> = <Self::ReturnTuple<
5139                'a,
5140            > as alloy_sol_types::SolType>::Token<'a>;
5141            const SIGNATURE: &'static str = "getDeposits(address)";
5142            const SELECTOR: [u8; 4] = [148u8, 246u8, 73u8, 221u8];
5143            #[inline]
5144            fn new<'a>(
5145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5146            ) -> Self {
5147                tuple.into()
5148            }
5149            #[inline]
5150            fn tokenize(&self) -> Self::Token<'_> {
5151                (
5152                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5153                        &self.staker,
5154                    ),
5155                )
5156            }
5157            #[inline]
5158            fn abi_decode_returns(
5159                data: &[u8],
5160                validate: bool,
5161            ) -> alloy_sol_types::Result<Self::Return> {
5162                <Self::ReturnTuple<
5163                    '_,
5164                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5165                    .map(Into::into)
5166            }
5167        }
5168    };
5169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5170    /**Function with signature `getStakerStrategyList(address)` and selector `0xde44acb6`.
5171```solidity
5172function getStakerStrategyList(address staker) external view returns (address[] memory);
5173```*/
5174    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5175    #[derive(Clone)]
5176    pub struct getStakerStrategyListCall {
5177        #[allow(missing_docs)]
5178        pub staker: alloy::sol_types::private::Address,
5179    }
5180    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5181    ///Container type for the return parameters of the [`getStakerStrategyList(address)`](getStakerStrategyListCall) function.
5182    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5183    #[derive(Clone)]
5184    pub struct getStakerStrategyListReturn {
5185        #[allow(missing_docs)]
5186        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5187    }
5188    #[allow(
5189        non_camel_case_types,
5190        non_snake_case,
5191        clippy::pub_underscore_fields,
5192        clippy::style
5193    )]
5194    const _: () = {
5195        use alloy::sol_types as alloy_sol_types;
5196        {
5197            #[doc(hidden)]
5198            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5199            #[doc(hidden)]
5200            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5201            #[cfg(test)]
5202            #[allow(dead_code, unreachable_patterns)]
5203            fn _type_assertion(
5204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5205            ) {
5206                match _t {
5207                    alloy_sol_types::private::AssertTypeEq::<
5208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5209                    >(_) => {}
5210                }
5211            }
5212            #[automatically_derived]
5213            #[doc(hidden)]
5214            impl ::core::convert::From<getStakerStrategyListCall>
5215            for UnderlyingRustTuple<'_> {
5216                fn from(value: getStakerStrategyListCall) -> Self {
5217                    (value.staker,)
5218                }
5219            }
5220            #[automatically_derived]
5221            #[doc(hidden)]
5222            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5223            for getStakerStrategyListCall {
5224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5225                    Self { staker: tuple.0 }
5226                }
5227            }
5228        }
5229        {
5230            #[doc(hidden)]
5231            type UnderlyingSolTuple<'a> = (
5232                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5233            );
5234            #[doc(hidden)]
5235            type UnderlyingRustTuple<'a> = (
5236                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5237            );
5238            #[cfg(test)]
5239            #[allow(dead_code, unreachable_patterns)]
5240            fn _type_assertion(
5241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5242            ) {
5243                match _t {
5244                    alloy_sol_types::private::AssertTypeEq::<
5245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5246                    >(_) => {}
5247                }
5248            }
5249            #[automatically_derived]
5250            #[doc(hidden)]
5251            impl ::core::convert::From<getStakerStrategyListReturn>
5252            for UnderlyingRustTuple<'_> {
5253                fn from(value: getStakerStrategyListReturn) -> Self {
5254                    (value._0,)
5255                }
5256            }
5257            #[automatically_derived]
5258            #[doc(hidden)]
5259            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5260            for getStakerStrategyListReturn {
5261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5262                    Self { _0: tuple.0 }
5263                }
5264            }
5265        }
5266        #[automatically_derived]
5267        impl alloy_sol_types::SolCall for getStakerStrategyListCall {
5268            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5269            type Token<'a> = <Self::Parameters<
5270                'a,
5271            > as alloy_sol_types::SolType>::Token<'a>;
5272            type Return = getStakerStrategyListReturn;
5273            type ReturnTuple<'a> = (
5274                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5275            );
5276            type ReturnToken<'a> = <Self::ReturnTuple<
5277                'a,
5278            > as alloy_sol_types::SolType>::Token<'a>;
5279            const SIGNATURE: &'static str = "getStakerStrategyList(address)";
5280            const SELECTOR: [u8; 4] = [222u8, 68u8, 172u8, 182u8];
5281            #[inline]
5282            fn new<'a>(
5283                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5284            ) -> Self {
5285                tuple.into()
5286            }
5287            #[inline]
5288            fn tokenize(&self) -> Self::Token<'_> {
5289                (
5290                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5291                        &self.staker,
5292                    ),
5293                )
5294            }
5295            #[inline]
5296            fn abi_decode_returns(
5297                data: &[u8],
5298                validate: bool,
5299            ) -> alloy_sol_types::Result<Self::Return> {
5300                <Self::ReturnTuple<
5301                    '_,
5302                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5303                    .map(Into::into)
5304            }
5305        }
5306    };
5307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5308    /**Function with signature `getStrategiesWithBurnableShares()` and selector `0x36a8c500`.
5309```solidity
5310function getStrategiesWithBurnableShares() external view returns (address[] memory, uint256[] memory);
5311```*/
5312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5313    #[derive(Clone)]
5314    pub struct getStrategiesWithBurnableSharesCall {}
5315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5316    ///Container type for the return parameters of the [`getStrategiesWithBurnableShares()`](getStrategiesWithBurnableSharesCall) function.
5317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5318    #[derive(Clone)]
5319    pub struct getStrategiesWithBurnableSharesReturn {
5320        #[allow(missing_docs)]
5321        pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5322        #[allow(missing_docs)]
5323        pub _1: alloy::sol_types::private::Vec<
5324            alloy::sol_types::private::primitives::aliases::U256,
5325        >,
5326    }
5327    #[allow(
5328        non_camel_case_types,
5329        non_snake_case,
5330        clippy::pub_underscore_fields,
5331        clippy::style
5332    )]
5333    const _: () = {
5334        use alloy::sol_types as alloy_sol_types;
5335        {
5336            #[doc(hidden)]
5337            type UnderlyingSolTuple<'a> = ();
5338            #[doc(hidden)]
5339            type UnderlyingRustTuple<'a> = ();
5340            #[cfg(test)]
5341            #[allow(dead_code, unreachable_patterns)]
5342            fn _type_assertion(
5343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5344            ) {
5345                match _t {
5346                    alloy_sol_types::private::AssertTypeEq::<
5347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5348                    >(_) => {}
5349                }
5350            }
5351            #[automatically_derived]
5352            #[doc(hidden)]
5353            impl ::core::convert::From<getStrategiesWithBurnableSharesCall>
5354            for UnderlyingRustTuple<'_> {
5355                fn from(value: getStrategiesWithBurnableSharesCall) -> Self {
5356                    ()
5357                }
5358            }
5359            #[automatically_derived]
5360            #[doc(hidden)]
5361            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5362            for getStrategiesWithBurnableSharesCall {
5363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5364                    Self {}
5365                }
5366            }
5367        }
5368        {
5369            #[doc(hidden)]
5370            type UnderlyingSolTuple<'a> = (
5371                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5372                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5373            );
5374            #[doc(hidden)]
5375            type UnderlyingRustTuple<'a> = (
5376                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5377                alloy::sol_types::private::Vec<
5378                    alloy::sol_types::private::primitives::aliases::U256,
5379                >,
5380            );
5381            #[cfg(test)]
5382            #[allow(dead_code, unreachable_patterns)]
5383            fn _type_assertion(
5384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5385            ) {
5386                match _t {
5387                    alloy_sol_types::private::AssertTypeEq::<
5388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5389                    >(_) => {}
5390                }
5391            }
5392            #[automatically_derived]
5393            #[doc(hidden)]
5394            impl ::core::convert::From<getStrategiesWithBurnableSharesReturn>
5395            for UnderlyingRustTuple<'_> {
5396                fn from(value: getStrategiesWithBurnableSharesReturn) -> Self {
5397                    (value._0, value._1)
5398                }
5399            }
5400            #[automatically_derived]
5401            #[doc(hidden)]
5402            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5403            for getStrategiesWithBurnableSharesReturn {
5404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5405                    Self { _0: tuple.0, _1: tuple.1 }
5406                }
5407            }
5408        }
5409        #[automatically_derived]
5410        impl alloy_sol_types::SolCall for getStrategiesWithBurnableSharesCall {
5411            type Parameters<'a> = ();
5412            type Token<'a> = <Self::Parameters<
5413                'a,
5414            > as alloy_sol_types::SolType>::Token<'a>;
5415            type Return = getStrategiesWithBurnableSharesReturn;
5416            type ReturnTuple<'a> = (
5417                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5418                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5419            );
5420            type ReturnToken<'a> = <Self::ReturnTuple<
5421                'a,
5422            > as alloy_sol_types::SolType>::Token<'a>;
5423            const SIGNATURE: &'static str = "getStrategiesWithBurnableShares()";
5424            const SELECTOR: [u8; 4] = [54u8, 168u8, 197u8, 0u8];
5425            #[inline]
5426            fn new<'a>(
5427                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5428            ) -> Self {
5429                tuple.into()
5430            }
5431            #[inline]
5432            fn tokenize(&self) -> Self::Token<'_> {
5433                ()
5434            }
5435            #[inline]
5436            fn abi_decode_returns(
5437                data: &[u8],
5438                validate: bool,
5439            ) -> alloy_sol_types::Result<Self::Return> {
5440                <Self::ReturnTuple<
5441                    '_,
5442                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5443                    .map(Into::into)
5444            }
5445        }
5446    };
5447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5448    /**Function with signature `increaseBurnableShares(address,uint256)` and selector `0xdebe1eab`.
5449```solidity
5450function increaseBurnableShares(address strategy, uint256 addedSharesToBurn) external;
5451```*/
5452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5453    #[derive(Clone)]
5454    pub struct increaseBurnableSharesCall {
5455        #[allow(missing_docs)]
5456        pub strategy: alloy::sol_types::private::Address,
5457        #[allow(missing_docs)]
5458        pub addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
5459    }
5460    ///Container type for the return parameters of the [`increaseBurnableShares(address,uint256)`](increaseBurnableSharesCall) function.
5461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5462    #[derive(Clone)]
5463    pub struct increaseBurnableSharesReturn {}
5464    #[allow(
5465        non_camel_case_types,
5466        non_snake_case,
5467        clippy::pub_underscore_fields,
5468        clippy::style
5469    )]
5470    const _: () = {
5471        use alloy::sol_types as alloy_sol_types;
5472        {
5473            #[doc(hidden)]
5474            type UnderlyingSolTuple<'a> = (
5475                alloy::sol_types::sol_data::Address,
5476                alloy::sol_types::sol_data::Uint<256>,
5477            );
5478            #[doc(hidden)]
5479            type UnderlyingRustTuple<'a> = (
5480                alloy::sol_types::private::Address,
5481                alloy::sol_types::private::primitives::aliases::U256,
5482            );
5483            #[cfg(test)]
5484            #[allow(dead_code, unreachable_patterns)]
5485            fn _type_assertion(
5486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5487            ) {
5488                match _t {
5489                    alloy_sol_types::private::AssertTypeEq::<
5490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5491                    >(_) => {}
5492                }
5493            }
5494            #[automatically_derived]
5495            #[doc(hidden)]
5496            impl ::core::convert::From<increaseBurnableSharesCall>
5497            for UnderlyingRustTuple<'_> {
5498                fn from(value: increaseBurnableSharesCall) -> Self {
5499                    (value.strategy, value.addedSharesToBurn)
5500                }
5501            }
5502            #[automatically_derived]
5503            #[doc(hidden)]
5504            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5505            for increaseBurnableSharesCall {
5506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5507                    Self {
5508                        strategy: tuple.0,
5509                        addedSharesToBurn: tuple.1,
5510                    }
5511                }
5512            }
5513        }
5514        {
5515            #[doc(hidden)]
5516            type UnderlyingSolTuple<'a> = ();
5517            #[doc(hidden)]
5518            type UnderlyingRustTuple<'a> = ();
5519            #[cfg(test)]
5520            #[allow(dead_code, unreachable_patterns)]
5521            fn _type_assertion(
5522                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5523            ) {
5524                match _t {
5525                    alloy_sol_types::private::AssertTypeEq::<
5526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5527                    >(_) => {}
5528                }
5529            }
5530            #[automatically_derived]
5531            #[doc(hidden)]
5532            impl ::core::convert::From<increaseBurnableSharesReturn>
5533            for UnderlyingRustTuple<'_> {
5534                fn from(value: increaseBurnableSharesReturn) -> Self {
5535                    ()
5536                }
5537            }
5538            #[automatically_derived]
5539            #[doc(hidden)]
5540            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5541            for increaseBurnableSharesReturn {
5542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5543                    Self {}
5544                }
5545            }
5546        }
5547        #[automatically_derived]
5548        impl alloy_sol_types::SolCall for increaseBurnableSharesCall {
5549            type Parameters<'a> = (
5550                alloy::sol_types::sol_data::Address,
5551                alloy::sol_types::sol_data::Uint<256>,
5552            );
5553            type Token<'a> = <Self::Parameters<
5554                'a,
5555            > as alloy_sol_types::SolType>::Token<'a>;
5556            type Return = increaseBurnableSharesReturn;
5557            type ReturnTuple<'a> = ();
5558            type ReturnToken<'a> = <Self::ReturnTuple<
5559                'a,
5560            > as alloy_sol_types::SolType>::Token<'a>;
5561            const SIGNATURE: &'static str = "increaseBurnableShares(address,uint256)";
5562            const SELECTOR: [u8; 4] = [222u8, 190u8, 30u8, 171u8];
5563            #[inline]
5564            fn new<'a>(
5565                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5566            ) -> Self {
5567                tuple.into()
5568            }
5569            #[inline]
5570            fn tokenize(&self) -> Self::Token<'_> {
5571                (
5572                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5573                        &self.strategy,
5574                    ),
5575                    <alloy::sol_types::sol_data::Uint<
5576                        256,
5577                    > as alloy_sol_types::SolType>::tokenize(&self.addedSharesToBurn),
5578                )
5579            }
5580            #[inline]
5581            fn abi_decode_returns(
5582                data: &[u8],
5583                validate: bool,
5584            ) -> alloy_sol_types::Result<Self::Return> {
5585                <Self::ReturnTuple<
5586                    '_,
5587                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5588                    .map(Into::into)
5589            }
5590        }
5591    };
5592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5593    /**Function with signature `initialize(address,address,uint256)` and selector `0x1794bb3c`.
5594```solidity
5595function initialize(address initialOwner, address initialStrategyWhitelister, uint256 initialPausedStatus) external;
5596```*/
5597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5598    #[derive(Clone)]
5599    pub struct initializeCall {
5600        #[allow(missing_docs)]
5601        pub initialOwner: alloy::sol_types::private::Address,
5602        #[allow(missing_docs)]
5603        pub initialStrategyWhitelister: alloy::sol_types::private::Address,
5604        #[allow(missing_docs)]
5605        pub initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
5606    }
5607    ///Container type for the return parameters of the [`initialize(address,address,uint256)`](initializeCall) function.
5608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5609    #[derive(Clone)]
5610    pub struct initializeReturn {}
5611    #[allow(
5612        non_camel_case_types,
5613        non_snake_case,
5614        clippy::pub_underscore_fields,
5615        clippy::style
5616    )]
5617    const _: () = {
5618        use alloy::sol_types as alloy_sol_types;
5619        {
5620            #[doc(hidden)]
5621            type UnderlyingSolTuple<'a> = (
5622                alloy::sol_types::sol_data::Address,
5623                alloy::sol_types::sol_data::Address,
5624                alloy::sol_types::sol_data::Uint<256>,
5625            );
5626            #[doc(hidden)]
5627            type UnderlyingRustTuple<'a> = (
5628                alloy::sol_types::private::Address,
5629                alloy::sol_types::private::Address,
5630                alloy::sol_types::private::primitives::aliases::U256,
5631            );
5632            #[cfg(test)]
5633            #[allow(dead_code, unreachable_patterns)]
5634            fn _type_assertion(
5635                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5636            ) {
5637                match _t {
5638                    alloy_sol_types::private::AssertTypeEq::<
5639                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5640                    >(_) => {}
5641                }
5642            }
5643            #[automatically_derived]
5644            #[doc(hidden)]
5645            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
5646                fn from(value: initializeCall) -> Self {
5647                    (
5648                        value.initialOwner,
5649                        value.initialStrategyWhitelister,
5650                        value.initialPausedStatus,
5651                    )
5652                }
5653            }
5654            #[automatically_derived]
5655            #[doc(hidden)]
5656            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
5657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5658                    Self {
5659                        initialOwner: tuple.0,
5660                        initialStrategyWhitelister: tuple.1,
5661                        initialPausedStatus: tuple.2,
5662                    }
5663                }
5664            }
5665        }
5666        {
5667            #[doc(hidden)]
5668            type UnderlyingSolTuple<'a> = ();
5669            #[doc(hidden)]
5670            type UnderlyingRustTuple<'a> = ();
5671            #[cfg(test)]
5672            #[allow(dead_code, unreachable_patterns)]
5673            fn _type_assertion(
5674                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5675            ) {
5676                match _t {
5677                    alloy_sol_types::private::AssertTypeEq::<
5678                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5679                    >(_) => {}
5680                }
5681            }
5682            #[automatically_derived]
5683            #[doc(hidden)]
5684            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
5685                fn from(value: initializeReturn) -> Self {
5686                    ()
5687                }
5688            }
5689            #[automatically_derived]
5690            #[doc(hidden)]
5691            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
5692                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5693                    Self {}
5694                }
5695            }
5696        }
5697        #[automatically_derived]
5698        impl alloy_sol_types::SolCall for initializeCall {
5699            type Parameters<'a> = (
5700                alloy::sol_types::sol_data::Address,
5701                alloy::sol_types::sol_data::Address,
5702                alloy::sol_types::sol_data::Uint<256>,
5703            );
5704            type Token<'a> = <Self::Parameters<
5705                'a,
5706            > as alloy_sol_types::SolType>::Token<'a>;
5707            type Return = initializeReturn;
5708            type ReturnTuple<'a> = ();
5709            type ReturnToken<'a> = <Self::ReturnTuple<
5710                'a,
5711            > as alloy_sol_types::SolType>::Token<'a>;
5712            const SIGNATURE: &'static str = "initialize(address,address,uint256)";
5713            const SELECTOR: [u8; 4] = [23u8, 148u8, 187u8, 60u8];
5714            #[inline]
5715            fn new<'a>(
5716                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5717            ) -> Self {
5718                tuple.into()
5719            }
5720            #[inline]
5721            fn tokenize(&self) -> Self::Token<'_> {
5722                (
5723                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5724                        &self.initialOwner,
5725                    ),
5726                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5727                        &self.initialStrategyWhitelister,
5728                    ),
5729                    <alloy::sol_types::sol_data::Uint<
5730                        256,
5731                    > as alloy_sol_types::SolType>::tokenize(&self.initialPausedStatus),
5732                )
5733            }
5734            #[inline]
5735            fn abi_decode_returns(
5736                data: &[u8],
5737                validate: bool,
5738            ) -> alloy_sol_types::Result<Self::Return> {
5739                <Self::ReturnTuple<
5740                    '_,
5741                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5742                    .map(Into::into)
5743            }
5744        }
5745    };
5746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5747    /**Function with signature `nonces(address)` and selector `0x7ecebe00`.
5748```solidity
5749function nonces(address signer) external view returns (uint256 nonce);
5750```*/
5751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5752    #[derive(Clone)]
5753    pub struct noncesCall {
5754        #[allow(missing_docs)]
5755        pub signer: alloy::sol_types::private::Address,
5756    }
5757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5758    ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function.
5759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5760    #[derive(Clone)]
5761    pub struct noncesReturn {
5762        #[allow(missing_docs)]
5763        pub nonce: alloy::sol_types::private::primitives::aliases::U256,
5764    }
5765    #[allow(
5766        non_camel_case_types,
5767        non_snake_case,
5768        clippy::pub_underscore_fields,
5769        clippy::style
5770    )]
5771    const _: () = {
5772        use alloy::sol_types as alloy_sol_types;
5773        {
5774            #[doc(hidden)]
5775            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5776            #[doc(hidden)]
5777            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5778            #[cfg(test)]
5779            #[allow(dead_code, unreachable_patterns)]
5780            fn _type_assertion(
5781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5782            ) {
5783                match _t {
5784                    alloy_sol_types::private::AssertTypeEq::<
5785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5786                    >(_) => {}
5787                }
5788            }
5789            #[automatically_derived]
5790            #[doc(hidden)]
5791            impl ::core::convert::From<noncesCall> for UnderlyingRustTuple<'_> {
5792                fn from(value: noncesCall) -> Self {
5793                    (value.signer,)
5794                }
5795            }
5796            #[automatically_derived]
5797            #[doc(hidden)]
5798            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesCall {
5799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5800                    Self { signer: tuple.0 }
5801                }
5802            }
5803        }
5804        {
5805            #[doc(hidden)]
5806            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5807            #[doc(hidden)]
5808            type UnderlyingRustTuple<'a> = (
5809                alloy::sol_types::private::primitives::aliases::U256,
5810            );
5811            #[cfg(test)]
5812            #[allow(dead_code, unreachable_patterns)]
5813            fn _type_assertion(
5814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5815            ) {
5816                match _t {
5817                    alloy_sol_types::private::AssertTypeEq::<
5818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5819                    >(_) => {}
5820                }
5821            }
5822            #[automatically_derived]
5823            #[doc(hidden)]
5824            impl ::core::convert::From<noncesReturn> for UnderlyingRustTuple<'_> {
5825                fn from(value: noncesReturn) -> Self {
5826                    (value.nonce,)
5827                }
5828            }
5829            #[automatically_derived]
5830            #[doc(hidden)]
5831            impl ::core::convert::From<UnderlyingRustTuple<'_>> for noncesReturn {
5832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5833                    Self { nonce: tuple.0 }
5834                }
5835            }
5836        }
5837        #[automatically_derived]
5838        impl alloy_sol_types::SolCall for noncesCall {
5839            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
5840            type Token<'a> = <Self::Parameters<
5841                'a,
5842            > as alloy_sol_types::SolType>::Token<'a>;
5843            type Return = noncesReturn;
5844            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5845            type ReturnToken<'a> = <Self::ReturnTuple<
5846                'a,
5847            > as alloy_sol_types::SolType>::Token<'a>;
5848            const SIGNATURE: &'static str = "nonces(address)";
5849            const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8];
5850            #[inline]
5851            fn new<'a>(
5852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5853            ) -> Self {
5854                tuple.into()
5855            }
5856            #[inline]
5857            fn tokenize(&self) -> Self::Token<'_> {
5858                (
5859                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5860                        &self.signer,
5861                    ),
5862                )
5863            }
5864            #[inline]
5865            fn abi_decode_returns(
5866                data: &[u8],
5867                validate: bool,
5868            ) -> alloy_sol_types::Result<Self::Return> {
5869                <Self::ReturnTuple<
5870                    '_,
5871                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5872                    .map(Into::into)
5873            }
5874        }
5875    };
5876    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5877    /**Function with signature `owner()` and selector `0x8da5cb5b`.
5878```solidity
5879function owner() external view returns (address);
5880```*/
5881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5882    #[derive(Clone)]
5883    pub struct ownerCall {}
5884    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5885    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
5886    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5887    #[derive(Clone)]
5888    pub struct ownerReturn {
5889        #[allow(missing_docs)]
5890        pub _0: alloy::sol_types::private::Address,
5891    }
5892    #[allow(
5893        non_camel_case_types,
5894        non_snake_case,
5895        clippy::pub_underscore_fields,
5896        clippy::style
5897    )]
5898    const _: () = {
5899        use alloy::sol_types as alloy_sol_types;
5900        {
5901            #[doc(hidden)]
5902            type UnderlyingSolTuple<'a> = ();
5903            #[doc(hidden)]
5904            type UnderlyingRustTuple<'a> = ();
5905            #[cfg(test)]
5906            #[allow(dead_code, unreachable_patterns)]
5907            fn _type_assertion(
5908                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5909            ) {
5910                match _t {
5911                    alloy_sol_types::private::AssertTypeEq::<
5912                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5913                    >(_) => {}
5914                }
5915            }
5916            #[automatically_derived]
5917            #[doc(hidden)]
5918            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
5919                fn from(value: ownerCall) -> Self {
5920                    ()
5921                }
5922            }
5923            #[automatically_derived]
5924            #[doc(hidden)]
5925            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
5926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5927                    Self {}
5928                }
5929            }
5930        }
5931        {
5932            #[doc(hidden)]
5933            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5934            #[doc(hidden)]
5935            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5936            #[cfg(test)]
5937            #[allow(dead_code, unreachable_patterns)]
5938            fn _type_assertion(
5939                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5940            ) {
5941                match _t {
5942                    alloy_sol_types::private::AssertTypeEq::<
5943                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5944                    >(_) => {}
5945                }
5946            }
5947            #[automatically_derived]
5948            #[doc(hidden)]
5949            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
5950                fn from(value: ownerReturn) -> Self {
5951                    (value._0,)
5952                }
5953            }
5954            #[automatically_derived]
5955            #[doc(hidden)]
5956            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
5957                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5958                    Self { _0: tuple.0 }
5959                }
5960            }
5961        }
5962        #[automatically_derived]
5963        impl alloy_sol_types::SolCall for ownerCall {
5964            type Parameters<'a> = ();
5965            type Token<'a> = <Self::Parameters<
5966                'a,
5967            > as alloy_sol_types::SolType>::Token<'a>;
5968            type Return = ownerReturn;
5969            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5970            type ReturnToken<'a> = <Self::ReturnTuple<
5971                'a,
5972            > as alloy_sol_types::SolType>::Token<'a>;
5973            const SIGNATURE: &'static str = "owner()";
5974            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
5975            #[inline]
5976            fn new<'a>(
5977                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5978            ) -> Self {
5979                tuple.into()
5980            }
5981            #[inline]
5982            fn tokenize(&self) -> Self::Token<'_> {
5983                ()
5984            }
5985            #[inline]
5986            fn abi_decode_returns(
5987                data: &[u8],
5988                validate: bool,
5989            ) -> alloy_sol_types::Result<Self::Return> {
5990                <Self::ReturnTuple<
5991                    '_,
5992                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5993                    .map(Into::into)
5994            }
5995        }
5996    };
5997    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5998    /**Function with signature `pause(uint256)` and selector `0x136439dd`.
5999```solidity
6000function pause(uint256 newPausedStatus) external;
6001```*/
6002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6003    #[derive(Clone)]
6004    pub struct pauseCall {
6005        #[allow(missing_docs)]
6006        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
6007    }
6008    ///Container type for the return parameters of the [`pause(uint256)`](pauseCall) function.
6009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6010    #[derive(Clone)]
6011    pub struct pauseReturn {}
6012    #[allow(
6013        non_camel_case_types,
6014        non_snake_case,
6015        clippy::pub_underscore_fields,
6016        clippy::style
6017    )]
6018    const _: () = {
6019        use alloy::sol_types as alloy_sol_types;
6020        {
6021            #[doc(hidden)]
6022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6023            #[doc(hidden)]
6024            type UnderlyingRustTuple<'a> = (
6025                alloy::sol_types::private::primitives::aliases::U256,
6026            );
6027            #[cfg(test)]
6028            #[allow(dead_code, unreachable_patterns)]
6029            fn _type_assertion(
6030                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6031            ) {
6032                match _t {
6033                    alloy_sol_types::private::AssertTypeEq::<
6034                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6035                    >(_) => {}
6036                }
6037            }
6038            #[automatically_derived]
6039            #[doc(hidden)]
6040            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
6041                fn from(value: pauseCall) -> Self {
6042                    (value.newPausedStatus,)
6043                }
6044            }
6045            #[automatically_derived]
6046            #[doc(hidden)]
6047            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
6048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6049                    Self { newPausedStatus: tuple.0 }
6050                }
6051            }
6052        }
6053        {
6054            #[doc(hidden)]
6055            type UnderlyingSolTuple<'a> = ();
6056            #[doc(hidden)]
6057            type UnderlyingRustTuple<'a> = ();
6058            #[cfg(test)]
6059            #[allow(dead_code, unreachable_patterns)]
6060            fn _type_assertion(
6061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6062            ) {
6063                match _t {
6064                    alloy_sol_types::private::AssertTypeEq::<
6065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6066                    >(_) => {}
6067                }
6068            }
6069            #[automatically_derived]
6070            #[doc(hidden)]
6071            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
6072                fn from(value: pauseReturn) -> Self {
6073                    ()
6074                }
6075            }
6076            #[automatically_derived]
6077            #[doc(hidden)]
6078            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
6079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6080                    Self {}
6081                }
6082            }
6083        }
6084        #[automatically_derived]
6085        impl alloy_sol_types::SolCall for pauseCall {
6086            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6087            type Token<'a> = <Self::Parameters<
6088                'a,
6089            > as alloy_sol_types::SolType>::Token<'a>;
6090            type Return = pauseReturn;
6091            type ReturnTuple<'a> = ();
6092            type ReturnToken<'a> = <Self::ReturnTuple<
6093                'a,
6094            > as alloy_sol_types::SolType>::Token<'a>;
6095            const SIGNATURE: &'static str = "pause(uint256)";
6096            const SELECTOR: [u8; 4] = [19u8, 100u8, 57u8, 221u8];
6097            #[inline]
6098            fn new<'a>(
6099                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6100            ) -> Self {
6101                tuple.into()
6102            }
6103            #[inline]
6104            fn tokenize(&self) -> Self::Token<'_> {
6105                (
6106                    <alloy::sol_types::sol_data::Uint<
6107                        256,
6108                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
6109                )
6110            }
6111            #[inline]
6112            fn abi_decode_returns(
6113                data: &[u8],
6114                validate: bool,
6115            ) -> alloy_sol_types::Result<Self::Return> {
6116                <Self::ReturnTuple<
6117                    '_,
6118                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6119                    .map(Into::into)
6120            }
6121        }
6122    };
6123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6124    /**Function with signature `pauseAll()` and selector `0x595c6a67`.
6125```solidity
6126function pauseAll() external;
6127```*/
6128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6129    #[derive(Clone)]
6130    pub struct pauseAllCall {}
6131    ///Container type for the return parameters of the [`pauseAll()`](pauseAllCall) function.
6132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6133    #[derive(Clone)]
6134    pub struct pauseAllReturn {}
6135    #[allow(
6136        non_camel_case_types,
6137        non_snake_case,
6138        clippy::pub_underscore_fields,
6139        clippy::style
6140    )]
6141    const _: () = {
6142        use alloy::sol_types as alloy_sol_types;
6143        {
6144            #[doc(hidden)]
6145            type UnderlyingSolTuple<'a> = ();
6146            #[doc(hidden)]
6147            type UnderlyingRustTuple<'a> = ();
6148            #[cfg(test)]
6149            #[allow(dead_code, unreachable_patterns)]
6150            fn _type_assertion(
6151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6152            ) {
6153                match _t {
6154                    alloy_sol_types::private::AssertTypeEq::<
6155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6156                    >(_) => {}
6157                }
6158            }
6159            #[automatically_derived]
6160            #[doc(hidden)]
6161            impl ::core::convert::From<pauseAllCall> for UnderlyingRustTuple<'_> {
6162                fn from(value: pauseAllCall) -> Self {
6163                    ()
6164                }
6165            }
6166            #[automatically_derived]
6167            #[doc(hidden)]
6168            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllCall {
6169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6170                    Self {}
6171                }
6172            }
6173        }
6174        {
6175            #[doc(hidden)]
6176            type UnderlyingSolTuple<'a> = ();
6177            #[doc(hidden)]
6178            type UnderlyingRustTuple<'a> = ();
6179            #[cfg(test)]
6180            #[allow(dead_code, unreachable_patterns)]
6181            fn _type_assertion(
6182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6183            ) {
6184                match _t {
6185                    alloy_sol_types::private::AssertTypeEq::<
6186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6187                    >(_) => {}
6188                }
6189            }
6190            #[automatically_derived]
6191            #[doc(hidden)]
6192            impl ::core::convert::From<pauseAllReturn> for UnderlyingRustTuple<'_> {
6193                fn from(value: pauseAllReturn) -> Self {
6194                    ()
6195                }
6196            }
6197            #[automatically_derived]
6198            #[doc(hidden)]
6199            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseAllReturn {
6200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6201                    Self {}
6202                }
6203            }
6204        }
6205        #[automatically_derived]
6206        impl alloy_sol_types::SolCall for pauseAllCall {
6207            type Parameters<'a> = ();
6208            type Token<'a> = <Self::Parameters<
6209                'a,
6210            > as alloy_sol_types::SolType>::Token<'a>;
6211            type Return = pauseAllReturn;
6212            type ReturnTuple<'a> = ();
6213            type ReturnToken<'a> = <Self::ReturnTuple<
6214                'a,
6215            > as alloy_sol_types::SolType>::Token<'a>;
6216            const SIGNATURE: &'static str = "pauseAll()";
6217            const SELECTOR: [u8; 4] = [89u8, 92u8, 106u8, 103u8];
6218            #[inline]
6219            fn new<'a>(
6220                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6221            ) -> Self {
6222                tuple.into()
6223            }
6224            #[inline]
6225            fn tokenize(&self) -> Self::Token<'_> {
6226                ()
6227            }
6228            #[inline]
6229            fn abi_decode_returns(
6230                data: &[u8],
6231                validate: bool,
6232            ) -> alloy_sol_types::Result<Self::Return> {
6233                <Self::ReturnTuple<
6234                    '_,
6235                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6236                    .map(Into::into)
6237            }
6238        }
6239    };
6240    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6241    /**Function with signature `paused(uint8)` and selector `0x5ac86ab7`.
6242```solidity
6243function paused(uint8 index) external view returns (bool);
6244```*/
6245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6246    #[derive(Clone)]
6247    pub struct paused_0Call {
6248        #[allow(missing_docs)]
6249        pub index: u8,
6250    }
6251    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6252    ///Container type for the return parameters of the [`paused(uint8)`](paused_0Call) function.
6253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6254    #[derive(Clone)]
6255    pub struct paused_0Return {
6256        #[allow(missing_docs)]
6257        pub _0: bool,
6258    }
6259    #[allow(
6260        non_camel_case_types,
6261        non_snake_case,
6262        clippy::pub_underscore_fields,
6263        clippy::style
6264    )]
6265    const _: () = {
6266        use alloy::sol_types as alloy_sol_types;
6267        {
6268            #[doc(hidden)]
6269            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6270            #[doc(hidden)]
6271            type UnderlyingRustTuple<'a> = (u8,);
6272            #[cfg(test)]
6273            #[allow(dead_code, unreachable_patterns)]
6274            fn _type_assertion(
6275                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6276            ) {
6277                match _t {
6278                    alloy_sol_types::private::AssertTypeEq::<
6279                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6280                    >(_) => {}
6281                }
6282            }
6283            #[automatically_derived]
6284            #[doc(hidden)]
6285            impl ::core::convert::From<paused_0Call> for UnderlyingRustTuple<'_> {
6286                fn from(value: paused_0Call) -> Self {
6287                    (value.index,)
6288                }
6289            }
6290            #[automatically_derived]
6291            #[doc(hidden)]
6292            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Call {
6293                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6294                    Self { index: tuple.0 }
6295                }
6296            }
6297        }
6298        {
6299            #[doc(hidden)]
6300            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6301            #[doc(hidden)]
6302            type UnderlyingRustTuple<'a> = (bool,);
6303            #[cfg(test)]
6304            #[allow(dead_code, unreachable_patterns)]
6305            fn _type_assertion(
6306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6307            ) {
6308                match _t {
6309                    alloy_sol_types::private::AssertTypeEq::<
6310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6311                    >(_) => {}
6312                }
6313            }
6314            #[automatically_derived]
6315            #[doc(hidden)]
6316            impl ::core::convert::From<paused_0Return> for UnderlyingRustTuple<'_> {
6317                fn from(value: paused_0Return) -> Self {
6318                    (value._0,)
6319                }
6320            }
6321            #[automatically_derived]
6322            #[doc(hidden)]
6323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_0Return {
6324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6325                    Self { _0: tuple.0 }
6326                }
6327            }
6328        }
6329        #[automatically_derived]
6330        impl alloy_sol_types::SolCall for paused_0Call {
6331            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6332            type Token<'a> = <Self::Parameters<
6333                'a,
6334            > as alloy_sol_types::SolType>::Token<'a>;
6335            type Return = paused_0Return;
6336            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6337            type ReturnToken<'a> = <Self::ReturnTuple<
6338                'a,
6339            > as alloy_sol_types::SolType>::Token<'a>;
6340            const SIGNATURE: &'static str = "paused(uint8)";
6341            const SELECTOR: [u8; 4] = [90u8, 200u8, 106u8, 183u8];
6342            #[inline]
6343            fn new<'a>(
6344                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6345            ) -> Self {
6346                tuple.into()
6347            }
6348            #[inline]
6349            fn tokenize(&self) -> Self::Token<'_> {
6350                (
6351                    <alloy::sol_types::sol_data::Uint<
6352                        8,
6353                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6354                )
6355            }
6356            #[inline]
6357            fn abi_decode_returns(
6358                data: &[u8],
6359                validate: bool,
6360            ) -> alloy_sol_types::Result<Self::Return> {
6361                <Self::ReturnTuple<
6362                    '_,
6363                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6364                    .map(Into::into)
6365            }
6366        }
6367    };
6368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6369    /**Function with signature `paused()` and selector `0x5c975abb`.
6370```solidity
6371function paused() external view returns (uint256);
6372```*/
6373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6374    #[derive(Clone)]
6375    pub struct paused_1Call {}
6376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6377    ///Container type for the return parameters of the [`paused()`](paused_1Call) function.
6378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6379    #[derive(Clone)]
6380    pub struct paused_1Return {
6381        #[allow(missing_docs)]
6382        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6383    }
6384    #[allow(
6385        non_camel_case_types,
6386        non_snake_case,
6387        clippy::pub_underscore_fields,
6388        clippy::style
6389    )]
6390    const _: () = {
6391        use alloy::sol_types as alloy_sol_types;
6392        {
6393            #[doc(hidden)]
6394            type UnderlyingSolTuple<'a> = ();
6395            #[doc(hidden)]
6396            type UnderlyingRustTuple<'a> = ();
6397            #[cfg(test)]
6398            #[allow(dead_code, unreachable_patterns)]
6399            fn _type_assertion(
6400                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6401            ) {
6402                match _t {
6403                    alloy_sol_types::private::AssertTypeEq::<
6404                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6405                    >(_) => {}
6406                }
6407            }
6408            #[automatically_derived]
6409            #[doc(hidden)]
6410            impl ::core::convert::From<paused_1Call> for UnderlyingRustTuple<'_> {
6411                fn from(value: paused_1Call) -> Self {
6412                    ()
6413                }
6414            }
6415            #[automatically_derived]
6416            #[doc(hidden)]
6417            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Call {
6418                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6419                    Self {}
6420                }
6421            }
6422        }
6423        {
6424            #[doc(hidden)]
6425            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6426            #[doc(hidden)]
6427            type UnderlyingRustTuple<'a> = (
6428                alloy::sol_types::private::primitives::aliases::U256,
6429            );
6430            #[cfg(test)]
6431            #[allow(dead_code, unreachable_patterns)]
6432            fn _type_assertion(
6433                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6434            ) {
6435                match _t {
6436                    alloy_sol_types::private::AssertTypeEq::<
6437                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6438                    >(_) => {}
6439                }
6440            }
6441            #[automatically_derived]
6442            #[doc(hidden)]
6443            impl ::core::convert::From<paused_1Return> for UnderlyingRustTuple<'_> {
6444                fn from(value: paused_1Return) -> Self {
6445                    (value._0,)
6446                }
6447            }
6448            #[automatically_derived]
6449            #[doc(hidden)]
6450            impl ::core::convert::From<UnderlyingRustTuple<'_>> for paused_1Return {
6451                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6452                    Self { _0: tuple.0 }
6453                }
6454            }
6455        }
6456        #[automatically_derived]
6457        impl alloy_sol_types::SolCall for paused_1Call {
6458            type Parameters<'a> = ();
6459            type Token<'a> = <Self::Parameters<
6460                'a,
6461            > as alloy_sol_types::SolType>::Token<'a>;
6462            type Return = paused_1Return;
6463            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6464            type ReturnToken<'a> = <Self::ReturnTuple<
6465                'a,
6466            > as alloy_sol_types::SolType>::Token<'a>;
6467            const SIGNATURE: &'static str = "paused()";
6468            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
6469            #[inline]
6470            fn new<'a>(
6471                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6472            ) -> Self {
6473                tuple.into()
6474            }
6475            #[inline]
6476            fn tokenize(&self) -> Self::Token<'_> {
6477                ()
6478            }
6479            #[inline]
6480            fn abi_decode_returns(
6481                data: &[u8],
6482                validate: bool,
6483            ) -> alloy_sol_types::Result<Self::Return> {
6484                <Self::ReturnTuple<
6485                    '_,
6486                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6487                    .map(Into::into)
6488            }
6489        }
6490    };
6491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6492    /**Function with signature `pauserRegistry()` and selector `0x886f1195`.
6493```solidity
6494function pauserRegistry() external view returns (address);
6495```*/
6496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6497    #[derive(Clone)]
6498    pub struct pauserRegistryCall {}
6499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6500    ///Container type for the return parameters of the [`pauserRegistry()`](pauserRegistryCall) function.
6501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6502    #[derive(Clone)]
6503    pub struct pauserRegistryReturn {
6504        #[allow(missing_docs)]
6505        pub _0: alloy::sol_types::private::Address,
6506    }
6507    #[allow(
6508        non_camel_case_types,
6509        non_snake_case,
6510        clippy::pub_underscore_fields,
6511        clippy::style
6512    )]
6513    const _: () = {
6514        use alloy::sol_types as alloy_sol_types;
6515        {
6516            #[doc(hidden)]
6517            type UnderlyingSolTuple<'a> = ();
6518            #[doc(hidden)]
6519            type UnderlyingRustTuple<'a> = ();
6520            #[cfg(test)]
6521            #[allow(dead_code, unreachable_patterns)]
6522            fn _type_assertion(
6523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6524            ) {
6525                match _t {
6526                    alloy_sol_types::private::AssertTypeEq::<
6527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6528                    >(_) => {}
6529                }
6530            }
6531            #[automatically_derived]
6532            #[doc(hidden)]
6533            impl ::core::convert::From<pauserRegistryCall> for UnderlyingRustTuple<'_> {
6534                fn from(value: pauserRegistryCall) -> Self {
6535                    ()
6536                }
6537            }
6538            #[automatically_derived]
6539            #[doc(hidden)]
6540            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauserRegistryCall {
6541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6542                    Self {}
6543                }
6544            }
6545        }
6546        {
6547            #[doc(hidden)]
6548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6549            #[doc(hidden)]
6550            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6551            #[cfg(test)]
6552            #[allow(dead_code, unreachable_patterns)]
6553            fn _type_assertion(
6554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6555            ) {
6556                match _t {
6557                    alloy_sol_types::private::AssertTypeEq::<
6558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6559                    >(_) => {}
6560                }
6561            }
6562            #[automatically_derived]
6563            #[doc(hidden)]
6564            impl ::core::convert::From<pauserRegistryReturn>
6565            for UnderlyingRustTuple<'_> {
6566                fn from(value: pauserRegistryReturn) -> Self {
6567                    (value._0,)
6568                }
6569            }
6570            #[automatically_derived]
6571            #[doc(hidden)]
6572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6573            for pauserRegistryReturn {
6574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6575                    Self { _0: tuple.0 }
6576                }
6577            }
6578        }
6579        #[automatically_derived]
6580        impl alloy_sol_types::SolCall for pauserRegistryCall {
6581            type Parameters<'a> = ();
6582            type Token<'a> = <Self::Parameters<
6583                'a,
6584            > as alloy_sol_types::SolType>::Token<'a>;
6585            type Return = pauserRegistryReturn;
6586            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6587            type ReturnToken<'a> = <Self::ReturnTuple<
6588                'a,
6589            > as alloy_sol_types::SolType>::Token<'a>;
6590            const SIGNATURE: &'static str = "pauserRegistry()";
6591            const SELECTOR: [u8; 4] = [136u8, 111u8, 17u8, 149u8];
6592            #[inline]
6593            fn new<'a>(
6594                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6595            ) -> Self {
6596                tuple.into()
6597            }
6598            #[inline]
6599            fn tokenize(&self) -> Self::Token<'_> {
6600                ()
6601            }
6602            #[inline]
6603            fn abi_decode_returns(
6604                data: &[u8],
6605                validate: bool,
6606            ) -> alloy_sol_types::Result<Self::Return> {
6607                <Self::ReturnTuple<
6608                    '_,
6609                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6610                    .map(Into::into)
6611            }
6612        }
6613    };
6614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6615    /**Function with signature `removeDepositShares(address,address,uint256)` and selector `0x724af423`.
6616```solidity
6617function removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) external returns (uint256);
6618```*/
6619    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6620    #[derive(Clone)]
6621    pub struct removeDepositSharesCall {
6622        #[allow(missing_docs)]
6623        pub staker: alloy::sol_types::private::Address,
6624        #[allow(missing_docs)]
6625        pub strategy: alloy::sol_types::private::Address,
6626        #[allow(missing_docs)]
6627        pub depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
6628    }
6629    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6630    ///Container type for the return parameters of the [`removeDepositShares(address,address,uint256)`](removeDepositSharesCall) function.
6631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6632    #[derive(Clone)]
6633    pub struct removeDepositSharesReturn {
6634        #[allow(missing_docs)]
6635        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6636    }
6637    #[allow(
6638        non_camel_case_types,
6639        non_snake_case,
6640        clippy::pub_underscore_fields,
6641        clippy::style
6642    )]
6643    const _: () = {
6644        use alloy::sol_types as alloy_sol_types;
6645        {
6646            #[doc(hidden)]
6647            type UnderlyingSolTuple<'a> = (
6648                alloy::sol_types::sol_data::Address,
6649                alloy::sol_types::sol_data::Address,
6650                alloy::sol_types::sol_data::Uint<256>,
6651            );
6652            #[doc(hidden)]
6653            type UnderlyingRustTuple<'a> = (
6654                alloy::sol_types::private::Address,
6655                alloy::sol_types::private::Address,
6656                alloy::sol_types::private::primitives::aliases::U256,
6657            );
6658            #[cfg(test)]
6659            #[allow(dead_code, unreachable_patterns)]
6660            fn _type_assertion(
6661                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6662            ) {
6663                match _t {
6664                    alloy_sol_types::private::AssertTypeEq::<
6665                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6666                    >(_) => {}
6667                }
6668            }
6669            #[automatically_derived]
6670            #[doc(hidden)]
6671            impl ::core::convert::From<removeDepositSharesCall>
6672            for UnderlyingRustTuple<'_> {
6673                fn from(value: removeDepositSharesCall) -> Self {
6674                    (value.staker, value.strategy, value.depositSharesToRemove)
6675                }
6676            }
6677            #[automatically_derived]
6678            #[doc(hidden)]
6679            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6680            for removeDepositSharesCall {
6681                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6682                    Self {
6683                        staker: tuple.0,
6684                        strategy: tuple.1,
6685                        depositSharesToRemove: tuple.2,
6686                    }
6687                }
6688            }
6689        }
6690        {
6691            #[doc(hidden)]
6692            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6693            #[doc(hidden)]
6694            type UnderlyingRustTuple<'a> = (
6695                alloy::sol_types::private::primitives::aliases::U256,
6696            );
6697            #[cfg(test)]
6698            #[allow(dead_code, unreachable_patterns)]
6699            fn _type_assertion(
6700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6701            ) {
6702                match _t {
6703                    alloy_sol_types::private::AssertTypeEq::<
6704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6705                    >(_) => {}
6706                }
6707            }
6708            #[automatically_derived]
6709            #[doc(hidden)]
6710            impl ::core::convert::From<removeDepositSharesReturn>
6711            for UnderlyingRustTuple<'_> {
6712                fn from(value: removeDepositSharesReturn) -> Self {
6713                    (value._0,)
6714                }
6715            }
6716            #[automatically_derived]
6717            #[doc(hidden)]
6718            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6719            for removeDepositSharesReturn {
6720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6721                    Self { _0: tuple.0 }
6722                }
6723            }
6724        }
6725        #[automatically_derived]
6726        impl alloy_sol_types::SolCall for removeDepositSharesCall {
6727            type Parameters<'a> = (
6728                alloy::sol_types::sol_data::Address,
6729                alloy::sol_types::sol_data::Address,
6730                alloy::sol_types::sol_data::Uint<256>,
6731            );
6732            type Token<'a> = <Self::Parameters<
6733                'a,
6734            > as alloy_sol_types::SolType>::Token<'a>;
6735            type Return = removeDepositSharesReturn;
6736            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6737            type ReturnToken<'a> = <Self::ReturnTuple<
6738                'a,
6739            > as alloy_sol_types::SolType>::Token<'a>;
6740            const SIGNATURE: &'static str = "removeDepositShares(address,address,uint256)";
6741            const SELECTOR: [u8; 4] = [114u8, 74u8, 244u8, 35u8];
6742            #[inline]
6743            fn new<'a>(
6744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6745            ) -> Self {
6746                tuple.into()
6747            }
6748            #[inline]
6749            fn tokenize(&self) -> Self::Token<'_> {
6750                (
6751                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6752                        &self.staker,
6753                    ),
6754                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6755                        &self.strategy,
6756                    ),
6757                    <alloy::sol_types::sol_data::Uint<
6758                        256,
6759                    > as alloy_sol_types::SolType>::tokenize(&self.depositSharesToRemove),
6760                )
6761            }
6762            #[inline]
6763            fn abi_decode_returns(
6764                data: &[u8],
6765                validate: bool,
6766            ) -> alloy_sol_types::Result<Self::Return> {
6767                <Self::ReturnTuple<
6768                    '_,
6769                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6770                    .map(Into::into)
6771            }
6772        }
6773    };
6774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6775    /**Function with signature `removeStrategiesFromDepositWhitelist(address[])` and selector `0xb5d8b5b8`.
6776```solidity
6777function removeStrategiesFromDepositWhitelist(address[] memory strategiesToRemoveFromWhitelist) external;
6778```*/
6779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6780    #[derive(Clone)]
6781    pub struct removeStrategiesFromDepositWhitelistCall {
6782        #[allow(missing_docs)]
6783        pub strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec<
6784            alloy::sol_types::private::Address,
6785        >,
6786    }
6787    ///Container type for the return parameters of the [`removeStrategiesFromDepositWhitelist(address[])`](removeStrategiesFromDepositWhitelistCall) function.
6788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6789    #[derive(Clone)]
6790    pub struct removeStrategiesFromDepositWhitelistReturn {}
6791    #[allow(
6792        non_camel_case_types,
6793        non_snake_case,
6794        clippy::pub_underscore_fields,
6795        clippy::style
6796    )]
6797    const _: () = {
6798        use alloy::sol_types as alloy_sol_types;
6799        {
6800            #[doc(hidden)]
6801            type UnderlyingSolTuple<'a> = (
6802                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6803            );
6804            #[doc(hidden)]
6805            type UnderlyingRustTuple<'a> = (
6806                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6807            );
6808            #[cfg(test)]
6809            #[allow(dead_code, unreachable_patterns)]
6810            fn _type_assertion(
6811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6812            ) {
6813                match _t {
6814                    alloy_sol_types::private::AssertTypeEq::<
6815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6816                    >(_) => {}
6817                }
6818            }
6819            #[automatically_derived]
6820            #[doc(hidden)]
6821            impl ::core::convert::From<removeStrategiesFromDepositWhitelistCall>
6822            for UnderlyingRustTuple<'_> {
6823                fn from(value: removeStrategiesFromDepositWhitelistCall) -> Self {
6824                    (value.strategiesToRemoveFromWhitelist,)
6825                }
6826            }
6827            #[automatically_derived]
6828            #[doc(hidden)]
6829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6830            for removeStrategiesFromDepositWhitelistCall {
6831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6832                    Self {
6833                        strategiesToRemoveFromWhitelist: tuple.0,
6834                    }
6835                }
6836            }
6837        }
6838        {
6839            #[doc(hidden)]
6840            type UnderlyingSolTuple<'a> = ();
6841            #[doc(hidden)]
6842            type UnderlyingRustTuple<'a> = ();
6843            #[cfg(test)]
6844            #[allow(dead_code, unreachable_patterns)]
6845            fn _type_assertion(
6846                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6847            ) {
6848                match _t {
6849                    alloy_sol_types::private::AssertTypeEq::<
6850                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6851                    >(_) => {}
6852                }
6853            }
6854            #[automatically_derived]
6855            #[doc(hidden)]
6856            impl ::core::convert::From<removeStrategiesFromDepositWhitelistReturn>
6857            for UnderlyingRustTuple<'_> {
6858                fn from(value: removeStrategiesFromDepositWhitelistReturn) -> Self {
6859                    ()
6860                }
6861            }
6862            #[automatically_derived]
6863            #[doc(hidden)]
6864            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6865            for removeStrategiesFromDepositWhitelistReturn {
6866                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6867                    Self {}
6868                }
6869            }
6870        }
6871        #[automatically_derived]
6872        impl alloy_sol_types::SolCall for removeStrategiesFromDepositWhitelistCall {
6873            type Parameters<'a> = (
6874                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6875            );
6876            type Token<'a> = <Self::Parameters<
6877                'a,
6878            > as alloy_sol_types::SolType>::Token<'a>;
6879            type Return = removeStrategiesFromDepositWhitelistReturn;
6880            type ReturnTuple<'a> = ();
6881            type ReturnToken<'a> = <Self::ReturnTuple<
6882                'a,
6883            > as alloy_sol_types::SolType>::Token<'a>;
6884            const SIGNATURE: &'static str = "removeStrategiesFromDepositWhitelist(address[])";
6885            const SELECTOR: [u8; 4] = [181u8, 216u8, 181u8, 184u8];
6886            #[inline]
6887            fn new<'a>(
6888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6889            ) -> Self {
6890                tuple.into()
6891            }
6892            #[inline]
6893            fn tokenize(&self) -> Self::Token<'_> {
6894                (
6895                    <alloy::sol_types::sol_data::Array<
6896                        alloy::sol_types::sol_data::Address,
6897                    > as alloy_sol_types::SolType>::tokenize(
6898                        &self.strategiesToRemoveFromWhitelist,
6899                    ),
6900                )
6901            }
6902            #[inline]
6903            fn abi_decode_returns(
6904                data: &[u8],
6905                validate: bool,
6906            ) -> alloy_sol_types::Result<Self::Return> {
6907                <Self::ReturnTuple<
6908                    '_,
6909                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6910                    .map(Into::into)
6911            }
6912        }
6913    };
6914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6915    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
6916```solidity
6917function renounceOwnership() external;
6918```*/
6919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6920    #[derive(Clone)]
6921    pub struct renounceOwnershipCall {}
6922    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
6923    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6924    #[derive(Clone)]
6925    pub struct renounceOwnershipReturn {}
6926    #[allow(
6927        non_camel_case_types,
6928        non_snake_case,
6929        clippy::pub_underscore_fields,
6930        clippy::style
6931    )]
6932    const _: () = {
6933        use alloy::sol_types as alloy_sol_types;
6934        {
6935            #[doc(hidden)]
6936            type UnderlyingSolTuple<'a> = ();
6937            #[doc(hidden)]
6938            type UnderlyingRustTuple<'a> = ();
6939            #[cfg(test)]
6940            #[allow(dead_code, unreachable_patterns)]
6941            fn _type_assertion(
6942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6943            ) {
6944                match _t {
6945                    alloy_sol_types::private::AssertTypeEq::<
6946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6947                    >(_) => {}
6948                }
6949            }
6950            #[automatically_derived]
6951            #[doc(hidden)]
6952            impl ::core::convert::From<renounceOwnershipCall>
6953            for UnderlyingRustTuple<'_> {
6954                fn from(value: renounceOwnershipCall) -> Self {
6955                    ()
6956                }
6957            }
6958            #[automatically_derived]
6959            #[doc(hidden)]
6960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6961            for renounceOwnershipCall {
6962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6963                    Self {}
6964                }
6965            }
6966        }
6967        {
6968            #[doc(hidden)]
6969            type UnderlyingSolTuple<'a> = ();
6970            #[doc(hidden)]
6971            type UnderlyingRustTuple<'a> = ();
6972            #[cfg(test)]
6973            #[allow(dead_code, unreachable_patterns)]
6974            fn _type_assertion(
6975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6976            ) {
6977                match _t {
6978                    alloy_sol_types::private::AssertTypeEq::<
6979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6980                    >(_) => {}
6981                }
6982            }
6983            #[automatically_derived]
6984            #[doc(hidden)]
6985            impl ::core::convert::From<renounceOwnershipReturn>
6986            for UnderlyingRustTuple<'_> {
6987                fn from(value: renounceOwnershipReturn) -> Self {
6988                    ()
6989                }
6990            }
6991            #[automatically_derived]
6992            #[doc(hidden)]
6993            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6994            for renounceOwnershipReturn {
6995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6996                    Self {}
6997                }
6998            }
6999        }
7000        #[automatically_derived]
7001        impl alloy_sol_types::SolCall for renounceOwnershipCall {
7002            type Parameters<'a> = ();
7003            type Token<'a> = <Self::Parameters<
7004                'a,
7005            > as alloy_sol_types::SolType>::Token<'a>;
7006            type Return = renounceOwnershipReturn;
7007            type ReturnTuple<'a> = ();
7008            type ReturnToken<'a> = <Self::ReturnTuple<
7009                'a,
7010            > as alloy_sol_types::SolType>::Token<'a>;
7011            const SIGNATURE: &'static str = "renounceOwnership()";
7012            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
7013            #[inline]
7014            fn new<'a>(
7015                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7016            ) -> Self {
7017                tuple.into()
7018            }
7019            #[inline]
7020            fn tokenize(&self) -> Self::Token<'_> {
7021                ()
7022            }
7023            #[inline]
7024            fn abi_decode_returns(
7025                data: &[u8],
7026                validate: bool,
7027            ) -> alloy_sol_types::Result<Self::Return> {
7028                <Self::ReturnTuple<
7029                    '_,
7030                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7031                    .map(Into::into)
7032            }
7033        }
7034    };
7035    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7036    /**Function with signature `setStrategyWhitelister(address)` and selector `0xc6656702`.
7037```solidity
7038function setStrategyWhitelister(address newStrategyWhitelister) external;
7039```*/
7040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7041    #[derive(Clone)]
7042    pub struct setStrategyWhitelisterCall {
7043        #[allow(missing_docs)]
7044        pub newStrategyWhitelister: alloy::sol_types::private::Address,
7045    }
7046    ///Container type for the return parameters of the [`setStrategyWhitelister(address)`](setStrategyWhitelisterCall) function.
7047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7048    #[derive(Clone)]
7049    pub struct setStrategyWhitelisterReturn {}
7050    #[allow(
7051        non_camel_case_types,
7052        non_snake_case,
7053        clippy::pub_underscore_fields,
7054        clippy::style
7055    )]
7056    const _: () = {
7057        use alloy::sol_types as alloy_sol_types;
7058        {
7059            #[doc(hidden)]
7060            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7061            #[doc(hidden)]
7062            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7063            #[cfg(test)]
7064            #[allow(dead_code, unreachable_patterns)]
7065            fn _type_assertion(
7066                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7067            ) {
7068                match _t {
7069                    alloy_sol_types::private::AssertTypeEq::<
7070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7071                    >(_) => {}
7072                }
7073            }
7074            #[automatically_derived]
7075            #[doc(hidden)]
7076            impl ::core::convert::From<setStrategyWhitelisterCall>
7077            for UnderlyingRustTuple<'_> {
7078                fn from(value: setStrategyWhitelisterCall) -> Self {
7079                    (value.newStrategyWhitelister,)
7080                }
7081            }
7082            #[automatically_derived]
7083            #[doc(hidden)]
7084            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7085            for setStrategyWhitelisterCall {
7086                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7087                    Self {
7088                        newStrategyWhitelister: tuple.0,
7089                    }
7090                }
7091            }
7092        }
7093        {
7094            #[doc(hidden)]
7095            type UnderlyingSolTuple<'a> = ();
7096            #[doc(hidden)]
7097            type UnderlyingRustTuple<'a> = ();
7098            #[cfg(test)]
7099            #[allow(dead_code, unreachable_patterns)]
7100            fn _type_assertion(
7101                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7102            ) {
7103                match _t {
7104                    alloy_sol_types::private::AssertTypeEq::<
7105                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7106                    >(_) => {}
7107                }
7108            }
7109            #[automatically_derived]
7110            #[doc(hidden)]
7111            impl ::core::convert::From<setStrategyWhitelisterReturn>
7112            for UnderlyingRustTuple<'_> {
7113                fn from(value: setStrategyWhitelisterReturn) -> Self {
7114                    ()
7115                }
7116            }
7117            #[automatically_derived]
7118            #[doc(hidden)]
7119            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7120            for setStrategyWhitelisterReturn {
7121                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7122                    Self {}
7123                }
7124            }
7125        }
7126        #[automatically_derived]
7127        impl alloy_sol_types::SolCall for setStrategyWhitelisterCall {
7128            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7129            type Token<'a> = <Self::Parameters<
7130                'a,
7131            > as alloy_sol_types::SolType>::Token<'a>;
7132            type Return = setStrategyWhitelisterReturn;
7133            type ReturnTuple<'a> = ();
7134            type ReturnToken<'a> = <Self::ReturnTuple<
7135                'a,
7136            > as alloy_sol_types::SolType>::Token<'a>;
7137            const SIGNATURE: &'static str = "setStrategyWhitelister(address)";
7138            const SELECTOR: [u8; 4] = [198u8, 101u8, 103u8, 2u8];
7139            #[inline]
7140            fn new<'a>(
7141                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7142            ) -> Self {
7143                tuple.into()
7144            }
7145            #[inline]
7146            fn tokenize(&self) -> Self::Token<'_> {
7147                (
7148                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7149                        &self.newStrategyWhitelister,
7150                    ),
7151                )
7152            }
7153            #[inline]
7154            fn abi_decode_returns(
7155                data: &[u8],
7156                validate: bool,
7157            ) -> alloy_sol_types::Result<Self::Return> {
7158                <Self::ReturnTuple<
7159                    '_,
7160                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7161                    .map(Into::into)
7162            }
7163        }
7164    };
7165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7166    /**Function with signature `stakerDepositShares(address,address)` and selector `0xfe243a17`.
7167```solidity
7168function stakerDepositShares(address staker, address strategy) external view returns (uint256 shares);
7169```*/
7170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7171    #[derive(Clone)]
7172    pub struct stakerDepositSharesCall {
7173        #[allow(missing_docs)]
7174        pub staker: alloy::sol_types::private::Address,
7175        #[allow(missing_docs)]
7176        pub strategy: alloy::sol_types::private::Address,
7177    }
7178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7179    ///Container type for the return parameters of the [`stakerDepositShares(address,address)`](stakerDepositSharesCall) function.
7180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7181    #[derive(Clone)]
7182    pub struct stakerDepositSharesReturn {
7183        #[allow(missing_docs)]
7184        pub shares: alloy::sol_types::private::primitives::aliases::U256,
7185    }
7186    #[allow(
7187        non_camel_case_types,
7188        non_snake_case,
7189        clippy::pub_underscore_fields,
7190        clippy::style
7191    )]
7192    const _: () = {
7193        use alloy::sol_types as alloy_sol_types;
7194        {
7195            #[doc(hidden)]
7196            type UnderlyingSolTuple<'a> = (
7197                alloy::sol_types::sol_data::Address,
7198                alloy::sol_types::sol_data::Address,
7199            );
7200            #[doc(hidden)]
7201            type UnderlyingRustTuple<'a> = (
7202                alloy::sol_types::private::Address,
7203                alloy::sol_types::private::Address,
7204            );
7205            #[cfg(test)]
7206            #[allow(dead_code, unreachable_patterns)]
7207            fn _type_assertion(
7208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7209            ) {
7210                match _t {
7211                    alloy_sol_types::private::AssertTypeEq::<
7212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7213                    >(_) => {}
7214                }
7215            }
7216            #[automatically_derived]
7217            #[doc(hidden)]
7218            impl ::core::convert::From<stakerDepositSharesCall>
7219            for UnderlyingRustTuple<'_> {
7220                fn from(value: stakerDepositSharesCall) -> Self {
7221                    (value.staker, value.strategy)
7222                }
7223            }
7224            #[automatically_derived]
7225            #[doc(hidden)]
7226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7227            for stakerDepositSharesCall {
7228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7229                    Self {
7230                        staker: tuple.0,
7231                        strategy: tuple.1,
7232                    }
7233                }
7234            }
7235        }
7236        {
7237            #[doc(hidden)]
7238            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7239            #[doc(hidden)]
7240            type UnderlyingRustTuple<'a> = (
7241                alloy::sol_types::private::primitives::aliases::U256,
7242            );
7243            #[cfg(test)]
7244            #[allow(dead_code, unreachable_patterns)]
7245            fn _type_assertion(
7246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7247            ) {
7248                match _t {
7249                    alloy_sol_types::private::AssertTypeEq::<
7250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7251                    >(_) => {}
7252                }
7253            }
7254            #[automatically_derived]
7255            #[doc(hidden)]
7256            impl ::core::convert::From<stakerDepositSharesReturn>
7257            for UnderlyingRustTuple<'_> {
7258                fn from(value: stakerDepositSharesReturn) -> Self {
7259                    (value.shares,)
7260                }
7261            }
7262            #[automatically_derived]
7263            #[doc(hidden)]
7264            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7265            for stakerDepositSharesReturn {
7266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7267                    Self { shares: tuple.0 }
7268                }
7269            }
7270        }
7271        #[automatically_derived]
7272        impl alloy_sol_types::SolCall for stakerDepositSharesCall {
7273            type Parameters<'a> = (
7274                alloy::sol_types::sol_data::Address,
7275                alloy::sol_types::sol_data::Address,
7276            );
7277            type Token<'a> = <Self::Parameters<
7278                'a,
7279            > as alloy_sol_types::SolType>::Token<'a>;
7280            type Return = stakerDepositSharesReturn;
7281            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7282            type ReturnToken<'a> = <Self::ReturnTuple<
7283                'a,
7284            > as alloy_sol_types::SolType>::Token<'a>;
7285            const SIGNATURE: &'static str = "stakerDepositShares(address,address)";
7286            const SELECTOR: [u8; 4] = [254u8, 36u8, 58u8, 23u8];
7287            #[inline]
7288            fn new<'a>(
7289                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7290            ) -> Self {
7291                tuple.into()
7292            }
7293            #[inline]
7294            fn tokenize(&self) -> Self::Token<'_> {
7295                (
7296                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7297                        &self.staker,
7298                    ),
7299                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7300                        &self.strategy,
7301                    ),
7302                )
7303            }
7304            #[inline]
7305            fn abi_decode_returns(
7306                data: &[u8],
7307                validate: bool,
7308            ) -> alloy_sol_types::Result<Self::Return> {
7309                <Self::ReturnTuple<
7310                    '_,
7311                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7312                    .map(Into::into)
7313            }
7314        }
7315    };
7316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7317    /**Function with signature `stakerStrategyList(address,uint256)` and selector `0xcbc2bd62`.
7318```solidity
7319function stakerStrategyList(address staker, uint256) external view returns (address strategies);
7320```*/
7321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7322    #[derive(Clone)]
7323    pub struct stakerStrategyListCall {
7324        #[allow(missing_docs)]
7325        pub staker: alloy::sol_types::private::Address,
7326        #[allow(missing_docs)]
7327        pub _1: alloy::sol_types::private::primitives::aliases::U256,
7328    }
7329    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7330    ///Container type for the return parameters of the [`stakerStrategyList(address,uint256)`](stakerStrategyListCall) function.
7331    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7332    #[derive(Clone)]
7333    pub struct stakerStrategyListReturn {
7334        #[allow(missing_docs)]
7335        pub strategies: alloy::sol_types::private::Address,
7336    }
7337    #[allow(
7338        non_camel_case_types,
7339        non_snake_case,
7340        clippy::pub_underscore_fields,
7341        clippy::style
7342    )]
7343    const _: () = {
7344        use alloy::sol_types as alloy_sol_types;
7345        {
7346            #[doc(hidden)]
7347            type UnderlyingSolTuple<'a> = (
7348                alloy::sol_types::sol_data::Address,
7349                alloy::sol_types::sol_data::Uint<256>,
7350            );
7351            #[doc(hidden)]
7352            type UnderlyingRustTuple<'a> = (
7353                alloy::sol_types::private::Address,
7354                alloy::sol_types::private::primitives::aliases::U256,
7355            );
7356            #[cfg(test)]
7357            #[allow(dead_code, unreachable_patterns)]
7358            fn _type_assertion(
7359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7360            ) {
7361                match _t {
7362                    alloy_sol_types::private::AssertTypeEq::<
7363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7364                    >(_) => {}
7365                }
7366            }
7367            #[automatically_derived]
7368            #[doc(hidden)]
7369            impl ::core::convert::From<stakerStrategyListCall>
7370            for UnderlyingRustTuple<'_> {
7371                fn from(value: stakerStrategyListCall) -> Self {
7372                    (value.staker, value._1)
7373                }
7374            }
7375            #[automatically_derived]
7376            #[doc(hidden)]
7377            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7378            for stakerStrategyListCall {
7379                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7380                    Self {
7381                        staker: tuple.0,
7382                        _1: tuple.1,
7383                    }
7384                }
7385            }
7386        }
7387        {
7388            #[doc(hidden)]
7389            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7390            #[doc(hidden)]
7391            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7392            #[cfg(test)]
7393            #[allow(dead_code, unreachable_patterns)]
7394            fn _type_assertion(
7395                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7396            ) {
7397                match _t {
7398                    alloy_sol_types::private::AssertTypeEq::<
7399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7400                    >(_) => {}
7401                }
7402            }
7403            #[automatically_derived]
7404            #[doc(hidden)]
7405            impl ::core::convert::From<stakerStrategyListReturn>
7406            for UnderlyingRustTuple<'_> {
7407                fn from(value: stakerStrategyListReturn) -> Self {
7408                    (value.strategies,)
7409                }
7410            }
7411            #[automatically_derived]
7412            #[doc(hidden)]
7413            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7414            for stakerStrategyListReturn {
7415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7416                    Self { strategies: tuple.0 }
7417                }
7418            }
7419        }
7420        #[automatically_derived]
7421        impl alloy_sol_types::SolCall for stakerStrategyListCall {
7422            type Parameters<'a> = (
7423                alloy::sol_types::sol_data::Address,
7424                alloy::sol_types::sol_data::Uint<256>,
7425            );
7426            type Token<'a> = <Self::Parameters<
7427                'a,
7428            > as alloy_sol_types::SolType>::Token<'a>;
7429            type Return = stakerStrategyListReturn;
7430            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7431            type ReturnToken<'a> = <Self::ReturnTuple<
7432                'a,
7433            > as alloy_sol_types::SolType>::Token<'a>;
7434            const SIGNATURE: &'static str = "stakerStrategyList(address,uint256)";
7435            const SELECTOR: [u8; 4] = [203u8, 194u8, 189u8, 98u8];
7436            #[inline]
7437            fn new<'a>(
7438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7439            ) -> Self {
7440                tuple.into()
7441            }
7442            #[inline]
7443            fn tokenize(&self) -> Self::Token<'_> {
7444                (
7445                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7446                        &self.staker,
7447                    ),
7448                    <alloy::sol_types::sol_data::Uint<
7449                        256,
7450                    > as alloy_sol_types::SolType>::tokenize(&self._1),
7451                )
7452            }
7453            #[inline]
7454            fn abi_decode_returns(
7455                data: &[u8],
7456                validate: bool,
7457            ) -> alloy_sol_types::Result<Self::Return> {
7458                <Self::ReturnTuple<
7459                    '_,
7460                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7461                    .map(Into::into)
7462            }
7463        }
7464    };
7465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7466    /**Function with signature `stakerStrategyListLength(address)` and selector `0x8b8aac3c`.
7467```solidity
7468function stakerStrategyListLength(address staker) external view returns (uint256);
7469```*/
7470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7471    #[derive(Clone)]
7472    pub struct stakerStrategyListLengthCall {
7473        #[allow(missing_docs)]
7474        pub staker: alloy::sol_types::private::Address,
7475    }
7476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7477    ///Container type for the return parameters of the [`stakerStrategyListLength(address)`](stakerStrategyListLengthCall) function.
7478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7479    #[derive(Clone)]
7480    pub struct stakerStrategyListLengthReturn {
7481        #[allow(missing_docs)]
7482        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7483    }
7484    #[allow(
7485        non_camel_case_types,
7486        non_snake_case,
7487        clippy::pub_underscore_fields,
7488        clippy::style
7489    )]
7490    const _: () = {
7491        use alloy::sol_types as alloy_sol_types;
7492        {
7493            #[doc(hidden)]
7494            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7495            #[doc(hidden)]
7496            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7497            #[cfg(test)]
7498            #[allow(dead_code, unreachable_patterns)]
7499            fn _type_assertion(
7500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7501            ) {
7502                match _t {
7503                    alloy_sol_types::private::AssertTypeEq::<
7504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7505                    >(_) => {}
7506                }
7507            }
7508            #[automatically_derived]
7509            #[doc(hidden)]
7510            impl ::core::convert::From<stakerStrategyListLengthCall>
7511            for UnderlyingRustTuple<'_> {
7512                fn from(value: stakerStrategyListLengthCall) -> Self {
7513                    (value.staker,)
7514                }
7515            }
7516            #[automatically_derived]
7517            #[doc(hidden)]
7518            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7519            for stakerStrategyListLengthCall {
7520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7521                    Self { staker: tuple.0 }
7522                }
7523            }
7524        }
7525        {
7526            #[doc(hidden)]
7527            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7528            #[doc(hidden)]
7529            type UnderlyingRustTuple<'a> = (
7530                alloy::sol_types::private::primitives::aliases::U256,
7531            );
7532            #[cfg(test)]
7533            #[allow(dead_code, unreachable_patterns)]
7534            fn _type_assertion(
7535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7536            ) {
7537                match _t {
7538                    alloy_sol_types::private::AssertTypeEq::<
7539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7540                    >(_) => {}
7541                }
7542            }
7543            #[automatically_derived]
7544            #[doc(hidden)]
7545            impl ::core::convert::From<stakerStrategyListLengthReturn>
7546            for UnderlyingRustTuple<'_> {
7547                fn from(value: stakerStrategyListLengthReturn) -> Self {
7548                    (value._0,)
7549                }
7550            }
7551            #[automatically_derived]
7552            #[doc(hidden)]
7553            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7554            for stakerStrategyListLengthReturn {
7555                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7556                    Self { _0: tuple.0 }
7557                }
7558            }
7559        }
7560        #[automatically_derived]
7561        impl alloy_sol_types::SolCall for stakerStrategyListLengthCall {
7562            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7563            type Token<'a> = <Self::Parameters<
7564                'a,
7565            > as alloy_sol_types::SolType>::Token<'a>;
7566            type Return = stakerStrategyListLengthReturn;
7567            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7568            type ReturnToken<'a> = <Self::ReturnTuple<
7569                'a,
7570            > as alloy_sol_types::SolType>::Token<'a>;
7571            const SIGNATURE: &'static str = "stakerStrategyListLength(address)";
7572            const SELECTOR: [u8; 4] = [139u8, 138u8, 172u8, 60u8];
7573            #[inline]
7574            fn new<'a>(
7575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7576            ) -> Self {
7577                tuple.into()
7578            }
7579            #[inline]
7580            fn tokenize(&self) -> Self::Token<'_> {
7581                (
7582                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7583                        &self.staker,
7584                    ),
7585                )
7586            }
7587            #[inline]
7588            fn abi_decode_returns(
7589                data: &[u8],
7590                validate: bool,
7591            ) -> alloy_sol_types::Result<Self::Return> {
7592                <Self::ReturnTuple<
7593                    '_,
7594                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7595                    .map(Into::into)
7596            }
7597        }
7598    };
7599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7600    /**Function with signature `strategyIsWhitelistedForDeposit(address)` and selector `0x663c1de4`.
7601```solidity
7602function strategyIsWhitelistedForDeposit(address strategy) external view returns (bool whitelisted);
7603```*/
7604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7605    #[derive(Clone)]
7606    pub struct strategyIsWhitelistedForDepositCall {
7607        #[allow(missing_docs)]
7608        pub strategy: alloy::sol_types::private::Address,
7609    }
7610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7611    ///Container type for the return parameters of the [`strategyIsWhitelistedForDeposit(address)`](strategyIsWhitelistedForDepositCall) function.
7612    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7613    #[derive(Clone)]
7614    pub struct strategyIsWhitelistedForDepositReturn {
7615        #[allow(missing_docs)]
7616        pub whitelisted: bool,
7617    }
7618    #[allow(
7619        non_camel_case_types,
7620        non_snake_case,
7621        clippy::pub_underscore_fields,
7622        clippy::style
7623    )]
7624    const _: () = {
7625        use alloy::sol_types as alloy_sol_types;
7626        {
7627            #[doc(hidden)]
7628            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7629            #[doc(hidden)]
7630            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7631            #[cfg(test)]
7632            #[allow(dead_code, unreachable_patterns)]
7633            fn _type_assertion(
7634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7635            ) {
7636                match _t {
7637                    alloy_sol_types::private::AssertTypeEq::<
7638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7639                    >(_) => {}
7640                }
7641            }
7642            #[automatically_derived]
7643            #[doc(hidden)]
7644            impl ::core::convert::From<strategyIsWhitelistedForDepositCall>
7645            for UnderlyingRustTuple<'_> {
7646                fn from(value: strategyIsWhitelistedForDepositCall) -> Self {
7647                    (value.strategy,)
7648                }
7649            }
7650            #[automatically_derived]
7651            #[doc(hidden)]
7652            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7653            for strategyIsWhitelistedForDepositCall {
7654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7655                    Self { strategy: tuple.0 }
7656                }
7657            }
7658        }
7659        {
7660            #[doc(hidden)]
7661            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7662            #[doc(hidden)]
7663            type UnderlyingRustTuple<'a> = (bool,);
7664            #[cfg(test)]
7665            #[allow(dead_code, unreachable_patterns)]
7666            fn _type_assertion(
7667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7668            ) {
7669                match _t {
7670                    alloy_sol_types::private::AssertTypeEq::<
7671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7672                    >(_) => {}
7673                }
7674            }
7675            #[automatically_derived]
7676            #[doc(hidden)]
7677            impl ::core::convert::From<strategyIsWhitelistedForDepositReturn>
7678            for UnderlyingRustTuple<'_> {
7679                fn from(value: strategyIsWhitelistedForDepositReturn) -> Self {
7680                    (value.whitelisted,)
7681                }
7682            }
7683            #[automatically_derived]
7684            #[doc(hidden)]
7685            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7686            for strategyIsWhitelistedForDepositReturn {
7687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7688                    Self { whitelisted: tuple.0 }
7689                }
7690            }
7691        }
7692        #[automatically_derived]
7693        impl alloy_sol_types::SolCall for strategyIsWhitelistedForDepositCall {
7694            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7695            type Token<'a> = <Self::Parameters<
7696                'a,
7697            > as alloy_sol_types::SolType>::Token<'a>;
7698            type Return = strategyIsWhitelistedForDepositReturn;
7699            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7700            type ReturnToken<'a> = <Self::ReturnTuple<
7701                'a,
7702            > as alloy_sol_types::SolType>::Token<'a>;
7703            const SIGNATURE: &'static str = "strategyIsWhitelistedForDeposit(address)";
7704            const SELECTOR: [u8; 4] = [102u8, 60u8, 29u8, 228u8];
7705            #[inline]
7706            fn new<'a>(
7707                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7708            ) -> Self {
7709                tuple.into()
7710            }
7711            #[inline]
7712            fn tokenize(&self) -> Self::Token<'_> {
7713                (
7714                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7715                        &self.strategy,
7716                    ),
7717                )
7718            }
7719            #[inline]
7720            fn abi_decode_returns(
7721                data: &[u8],
7722                validate: bool,
7723            ) -> alloy_sol_types::Result<Self::Return> {
7724                <Self::ReturnTuple<
7725                    '_,
7726                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7727                    .map(Into::into)
7728            }
7729        }
7730    };
7731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7732    /**Function with signature `strategyWhitelister()` and selector `0x967fc0d2`.
7733```solidity
7734function strategyWhitelister() external view returns (address);
7735```*/
7736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7737    #[derive(Clone)]
7738    pub struct strategyWhitelisterCall {}
7739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7740    ///Container type for the return parameters of the [`strategyWhitelister()`](strategyWhitelisterCall) function.
7741    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7742    #[derive(Clone)]
7743    pub struct strategyWhitelisterReturn {
7744        #[allow(missing_docs)]
7745        pub _0: alloy::sol_types::private::Address,
7746    }
7747    #[allow(
7748        non_camel_case_types,
7749        non_snake_case,
7750        clippy::pub_underscore_fields,
7751        clippy::style
7752    )]
7753    const _: () = {
7754        use alloy::sol_types as alloy_sol_types;
7755        {
7756            #[doc(hidden)]
7757            type UnderlyingSolTuple<'a> = ();
7758            #[doc(hidden)]
7759            type UnderlyingRustTuple<'a> = ();
7760            #[cfg(test)]
7761            #[allow(dead_code, unreachable_patterns)]
7762            fn _type_assertion(
7763                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7764            ) {
7765                match _t {
7766                    alloy_sol_types::private::AssertTypeEq::<
7767                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7768                    >(_) => {}
7769                }
7770            }
7771            #[automatically_derived]
7772            #[doc(hidden)]
7773            impl ::core::convert::From<strategyWhitelisterCall>
7774            for UnderlyingRustTuple<'_> {
7775                fn from(value: strategyWhitelisterCall) -> Self {
7776                    ()
7777                }
7778            }
7779            #[automatically_derived]
7780            #[doc(hidden)]
7781            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7782            for strategyWhitelisterCall {
7783                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7784                    Self {}
7785                }
7786            }
7787        }
7788        {
7789            #[doc(hidden)]
7790            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7791            #[doc(hidden)]
7792            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7793            #[cfg(test)]
7794            #[allow(dead_code, unreachable_patterns)]
7795            fn _type_assertion(
7796                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7797            ) {
7798                match _t {
7799                    alloy_sol_types::private::AssertTypeEq::<
7800                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7801                    >(_) => {}
7802                }
7803            }
7804            #[automatically_derived]
7805            #[doc(hidden)]
7806            impl ::core::convert::From<strategyWhitelisterReturn>
7807            for UnderlyingRustTuple<'_> {
7808                fn from(value: strategyWhitelisterReturn) -> Self {
7809                    (value._0,)
7810                }
7811            }
7812            #[automatically_derived]
7813            #[doc(hidden)]
7814            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7815            for strategyWhitelisterReturn {
7816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7817                    Self { _0: tuple.0 }
7818                }
7819            }
7820        }
7821        #[automatically_derived]
7822        impl alloy_sol_types::SolCall for strategyWhitelisterCall {
7823            type Parameters<'a> = ();
7824            type Token<'a> = <Self::Parameters<
7825                'a,
7826            > as alloy_sol_types::SolType>::Token<'a>;
7827            type Return = strategyWhitelisterReturn;
7828            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7829            type ReturnToken<'a> = <Self::ReturnTuple<
7830                'a,
7831            > as alloy_sol_types::SolType>::Token<'a>;
7832            const SIGNATURE: &'static str = "strategyWhitelister()";
7833            const SELECTOR: [u8; 4] = [150u8, 127u8, 192u8, 210u8];
7834            #[inline]
7835            fn new<'a>(
7836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7837            ) -> Self {
7838                tuple.into()
7839            }
7840            #[inline]
7841            fn tokenize(&self) -> Self::Token<'_> {
7842                ()
7843            }
7844            #[inline]
7845            fn abi_decode_returns(
7846                data: &[u8],
7847                validate: bool,
7848            ) -> alloy_sol_types::Result<Self::Return> {
7849                <Self::ReturnTuple<
7850                    '_,
7851                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7852                    .map(Into::into)
7853            }
7854        }
7855    };
7856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7857    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
7858```solidity
7859function transferOwnership(address newOwner) external;
7860```*/
7861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7862    #[derive(Clone)]
7863    pub struct transferOwnershipCall {
7864        #[allow(missing_docs)]
7865        pub newOwner: alloy::sol_types::private::Address,
7866    }
7867    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
7868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7869    #[derive(Clone)]
7870    pub struct transferOwnershipReturn {}
7871    #[allow(
7872        non_camel_case_types,
7873        non_snake_case,
7874        clippy::pub_underscore_fields,
7875        clippy::style
7876    )]
7877    const _: () = {
7878        use alloy::sol_types as alloy_sol_types;
7879        {
7880            #[doc(hidden)]
7881            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7882            #[doc(hidden)]
7883            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7884            #[cfg(test)]
7885            #[allow(dead_code, unreachable_patterns)]
7886            fn _type_assertion(
7887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7888            ) {
7889                match _t {
7890                    alloy_sol_types::private::AssertTypeEq::<
7891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7892                    >(_) => {}
7893                }
7894            }
7895            #[automatically_derived]
7896            #[doc(hidden)]
7897            impl ::core::convert::From<transferOwnershipCall>
7898            for UnderlyingRustTuple<'_> {
7899                fn from(value: transferOwnershipCall) -> Self {
7900                    (value.newOwner,)
7901                }
7902            }
7903            #[automatically_derived]
7904            #[doc(hidden)]
7905            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7906            for transferOwnershipCall {
7907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7908                    Self { newOwner: tuple.0 }
7909                }
7910            }
7911        }
7912        {
7913            #[doc(hidden)]
7914            type UnderlyingSolTuple<'a> = ();
7915            #[doc(hidden)]
7916            type UnderlyingRustTuple<'a> = ();
7917            #[cfg(test)]
7918            #[allow(dead_code, unreachable_patterns)]
7919            fn _type_assertion(
7920                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7921            ) {
7922                match _t {
7923                    alloy_sol_types::private::AssertTypeEq::<
7924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7925                    >(_) => {}
7926                }
7927            }
7928            #[automatically_derived]
7929            #[doc(hidden)]
7930            impl ::core::convert::From<transferOwnershipReturn>
7931            for UnderlyingRustTuple<'_> {
7932                fn from(value: transferOwnershipReturn) -> Self {
7933                    ()
7934                }
7935            }
7936            #[automatically_derived]
7937            #[doc(hidden)]
7938            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7939            for transferOwnershipReturn {
7940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7941                    Self {}
7942                }
7943            }
7944        }
7945        #[automatically_derived]
7946        impl alloy_sol_types::SolCall for transferOwnershipCall {
7947            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7948            type Token<'a> = <Self::Parameters<
7949                'a,
7950            > as alloy_sol_types::SolType>::Token<'a>;
7951            type Return = transferOwnershipReturn;
7952            type ReturnTuple<'a> = ();
7953            type ReturnToken<'a> = <Self::ReturnTuple<
7954                'a,
7955            > as alloy_sol_types::SolType>::Token<'a>;
7956            const SIGNATURE: &'static str = "transferOwnership(address)";
7957            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
7958            #[inline]
7959            fn new<'a>(
7960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7961            ) -> Self {
7962                tuple.into()
7963            }
7964            #[inline]
7965            fn tokenize(&self) -> Self::Token<'_> {
7966                (
7967                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7968                        &self.newOwner,
7969                    ),
7970                )
7971            }
7972            #[inline]
7973            fn abi_decode_returns(
7974                data: &[u8],
7975                validate: bool,
7976            ) -> alloy_sol_types::Result<Self::Return> {
7977                <Self::ReturnTuple<
7978                    '_,
7979                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7980                    .map(Into::into)
7981            }
7982        }
7983    };
7984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7985    /**Function with signature `unpause(uint256)` and selector `0xfabc1cbc`.
7986```solidity
7987function unpause(uint256 newPausedStatus) external;
7988```*/
7989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7990    #[derive(Clone)]
7991    pub struct unpauseCall {
7992        #[allow(missing_docs)]
7993        pub newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
7994    }
7995    ///Container type for the return parameters of the [`unpause(uint256)`](unpauseCall) function.
7996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7997    #[derive(Clone)]
7998    pub struct unpauseReturn {}
7999    #[allow(
8000        non_camel_case_types,
8001        non_snake_case,
8002        clippy::pub_underscore_fields,
8003        clippy::style
8004    )]
8005    const _: () = {
8006        use alloy::sol_types as alloy_sol_types;
8007        {
8008            #[doc(hidden)]
8009            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8010            #[doc(hidden)]
8011            type UnderlyingRustTuple<'a> = (
8012                alloy::sol_types::private::primitives::aliases::U256,
8013            );
8014            #[cfg(test)]
8015            #[allow(dead_code, unreachable_patterns)]
8016            fn _type_assertion(
8017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8018            ) {
8019                match _t {
8020                    alloy_sol_types::private::AssertTypeEq::<
8021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8022                    >(_) => {}
8023                }
8024            }
8025            #[automatically_derived]
8026            #[doc(hidden)]
8027            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
8028                fn from(value: unpauseCall) -> Self {
8029                    (value.newPausedStatus,)
8030                }
8031            }
8032            #[automatically_derived]
8033            #[doc(hidden)]
8034            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
8035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8036                    Self { newPausedStatus: tuple.0 }
8037                }
8038            }
8039        }
8040        {
8041            #[doc(hidden)]
8042            type UnderlyingSolTuple<'a> = ();
8043            #[doc(hidden)]
8044            type UnderlyingRustTuple<'a> = ();
8045            #[cfg(test)]
8046            #[allow(dead_code, unreachable_patterns)]
8047            fn _type_assertion(
8048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8049            ) {
8050                match _t {
8051                    alloy_sol_types::private::AssertTypeEq::<
8052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8053                    >(_) => {}
8054                }
8055            }
8056            #[automatically_derived]
8057            #[doc(hidden)]
8058            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
8059                fn from(value: unpauseReturn) -> Self {
8060                    ()
8061                }
8062            }
8063            #[automatically_derived]
8064            #[doc(hidden)]
8065            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
8066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8067                    Self {}
8068                }
8069            }
8070        }
8071        #[automatically_derived]
8072        impl alloy_sol_types::SolCall for unpauseCall {
8073            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8074            type Token<'a> = <Self::Parameters<
8075                'a,
8076            > as alloy_sol_types::SolType>::Token<'a>;
8077            type Return = unpauseReturn;
8078            type ReturnTuple<'a> = ();
8079            type ReturnToken<'a> = <Self::ReturnTuple<
8080                'a,
8081            > as alloy_sol_types::SolType>::Token<'a>;
8082            const SIGNATURE: &'static str = "unpause(uint256)";
8083            const SELECTOR: [u8; 4] = [250u8, 188u8, 28u8, 188u8];
8084            #[inline]
8085            fn new<'a>(
8086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8087            ) -> Self {
8088                tuple.into()
8089            }
8090            #[inline]
8091            fn tokenize(&self) -> Self::Token<'_> {
8092                (
8093                    <alloy::sol_types::sol_data::Uint<
8094                        256,
8095                    > as alloy_sol_types::SolType>::tokenize(&self.newPausedStatus),
8096                )
8097            }
8098            #[inline]
8099            fn abi_decode_returns(
8100                data: &[u8],
8101                validate: bool,
8102            ) -> alloy_sol_types::Result<Self::Return> {
8103                <Self::ReturnTuple<
8104                    '_,
8105                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8106                    .map(Into::into)
8107            }
8108        }
8109    };
8110    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8111    /**Function with signature `version()` and selector `0x54fd4d50`.
8112```solidity
8113function version() external view returns (string memory);
8114```*/
8115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8116    #[derive(Clone)]
8117    pub struct versionCall {}
8118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8119    ///Container type for the return parameters of the [`version()`](versionCall) function.
8120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8121    #[derive(Clone)]
8122    pub struct versionReturn {
8123        #[allow(missing_docs)]
8124        pub _0: alloy::sol_types::private::String,
8125    }
8126    #[allow(
8127        non_camel_case_types,
8128        non_snake_case,
8129        clippy::pub_underscore_fields,
8130        clippy::style
8131    )]
8132    const _: () = {
8133        use alloy::sol_types as alloy_sol_types;
8134        {
8135            #[doc(hidden)]
8136            type UnderlyingSolTuple<'a> = ();
8137            #[doc(hidden)]
8138            type UnderlyingRustTuple<'a> = ();
8139            #[cfg(test)]
8140            #[allow(dead_code, unreachable_patterns)]
8141            fn _type_assertion(
8142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8143            ) {
8144                match _t {
8145                    alloy_sol_types::private::AssertTypeEq::<
8146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8147                    >(_) => {}
8148                }
8149            }
8150            #[automatically_derived]
8151            #[doc(hidden)]
8152            impl ::core::convert::From<versionCall> for UnderlyingRustTuple<'_> {
8153                fn from(value: versionCall) -> Self {
8154                    ()
8155                }
8156            }
8157            #[automatically_derived]
8158            #[doc(hidden)]
8159            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionCall {
8160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8161                    Self {}
8162                }
8163            }
8164        }
8165        {
8166            #[doc(hidden)]
8167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8168            #[doc(hidden)]
8169            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8170            #[cfg(test)]
8171            #[allow(dead_code, unreachable_patterns)]
8172            fn _type_assertion(
8173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8174            ) {
8175                match _t {
8176                    alloy_sol_types::private::AssertTypeEq::<
8177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8178                    >(_) => {}
8179                }
8180            }
8181            #[automatically_derived]
8182            #[doc(hidden)]
8183            impl ::core::convert::From<versionReturn> for UnderlyingRustTuple<'_> {
8184                fn from(value: versionReturn) -> Self {
8185                    (value._0,)
8186                }
8187            }
8188            #[automatically_derived]
8189            #[doc(hidden)]
8190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for versionReturn {
8191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8192                    Self { _0: tuple.0 }
8193                }
8194            }
8195        }
8196        #[automatically_derived]
8197        impl alloy_sol_types::SolCall for versionCall {
8198            type Parameters<'a> = ();
8199            type Token<'a> = <Self::Parameters<
8200                'a,
8201            > as alloy_sol_types::SolType>::Token<'a>;
8202            type Return = versionReturn;
8203            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8204            type ReturnToken<'a> = <Self::ReturnTuple<
8205                'a,
8206            > as alloy_sol_types::SolType>::Token<'a>;
8207            const SIGNATURE: &'static str = "version()";
8208            const SELECTOR: [u8; 4] = [84u8, 253u8, 77u8, 80u8];
8209            #[inline]
8210            fn new<'a>(
8211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8212            ) -> Self {
8213                tuple.into()
8214            }
8215            #[inline]
8216            fn tokenize(&self) -> Self::Token<'_> {
8217                ()
8218            }
8219            #[inline]
8220            fn abi_decode_returns(
8221                data: &[u8],
8222                validate: bool,
8223            ) -> alloy_sol_types::Result<Self::Return> {
8224                <Self::ReturnTuple<
8225                    '_,
8226                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8227                    .map(Into::into)
8228            }
8229        }
8230    };
8231    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8232    /**Function with signature `withdrawSharesAsTokens(address,address,address,uint256)` and selector `0x2eae418c`.
8233```solidity
8234function withdrawSharesAsTokens(address staker, address strategy, address token, uint256 shares) external;
8235```*/
8236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8237    #[derive(Clone)]
8238    pub struct withdrawSharesAsTokensCall {
8239        #[allow(missing_docs)]
8240        pub staker: alloy::sol_types::private::Address,
8241        #[allow(missing_docs)]
8242        pub strategy: alloy::sol_types::private::Address,
8243        #[allow(missing_docs)]
8244        pub token: alloy::sol_types::private::Address,
8245        #[allow(missing_docs)]
8246        pub shares: alloy::sol_types::private::primitives::aliases::U256,
8247    }
8248    ///Container type for the return parameters of the [`withdrawSharesAsTokens(address,address,address,uint256)`](withdrawSharesAsTokensCall) function.
8249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8250    #[derive(Clone)]
8251    pub struct withdrawSharesAsTokensReturn {}
8252    #[allow(
8253        non_camel_case_types,
8254        non_snake_case,
8255        clippy::pub_underscore_fields,
8256        clippy::style
8257    )]
8258    const _: () = {
8259        use alloy::sol_types as alloy_sol_types;
8260        {
8261            #[doc(hidden)]
8262            type UnderlyingSolTuple<'a> = (
8263                alloy::sol_types::sol_data::Address,
8264                alloy::sol_types::sol_data::Address,
8265                alloy::sol_types::sol_data::Address,
8266                alloy::sol_types::sol_data::Uint<256>,
8267            );
8268            #[doc(hidden)]
8269            type UnderlyingRustTuple<'a> = (
8270                alloy::sol_types::private::Address,
8271                alloy::sol_types::private::Address,
8272                alloy::sol_types::private::Address,
8273                alloy::sol_types::private::primitives::aliases::U256,
8274            );
8275            #[cfg(test)]
8276            #[allow(dead_code, unreachable_patterns)]
8277            fn _type_assertion(
8278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8279            ) {
8280                match _t {
8281                    alloy_sol_types::private::AssertTypeEq::<
8282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8283                    >(_) => {}
8284                }
8285            }
8286            #[automatically_derived]
8287            #[doc(hidden)]
8288            impl ::core::convert::From<withdrawSharesAsTokensCall>
8289            for UnderlyingRustTuple<'_> {
8290                fn from(value: withdrawSharesAsTokensCall) -> Self {
8291                    (value.staker, value.strategy, value.token, value.shares)
8292                }
8293            }
8294            #[automatically_derived]
8295            #[doc(hidden)]
8296            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8297            for withdrawSharesAsTokensCall {
8298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8299                    Self {
8300                        staker: tuple.0,
8301                        strategy: tuple.1,
8302                        token: tuple.2,
8303                        shares: tuple.3,
8304                    }
8305                }
8306            }
8307        }
8308        {
8309            #[doc(hidden)]
8310            type UnderlyingSolTuple<'a> = ();
8311            #[doc(hidden)]
8312            type UnderlyingRustTuple<'a> = ();
8313            #[cfg(test)]
8314            #[allow(dead_code, unreachable_patterns)]
8315            fn _type_assertion(
8316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8317            ) {
8318                match _t {
8319                    alloy_sol_types::private::AssertTypeEq::<
8320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8321                    >(_) => {}
8322                }
8323            }
8324            #[automatically_derived]
8325            #[doc(hidden)]
8326            impl ::core::convert::From<withdrawSharesAsTokensReturn>
8327            for UnderlyingRustTuple<'_> {
8328                fn from(value: withdrawSharesAsTokensReturn) -> Self {
8329                    ()
8330                }
8331            }
8332            #[automatically_derived]
8333            #[doc(hidden)]
8334            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8335            for withdrawSharesAsTokensReturn {
8336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8337                    Self {}
8338                }
8339            }
8340        }
8341        #[automatically_derived]
8342        impl alloy_sol_types::SolCall for withdrawSharesAsTokensCall {
8343            type Parameters<'a> = (
8344                alloy::sol_types::sol_data::Address,
8345                alloy::sol_types::sol_data::Address,
8346                alloy::sol_types::sol_data::Address,
8347                alloy::sol_types::sol_data::Uint<256>,
8348            );
8349            type Token<'a> = <Self::Parameters<
8350                'a,
8351            > as alloy_sol_types::SolType>::Token<'a>;
8352            type Return = withdrawSharesAsTokensReturn;
8353            type ReturnTuple<'a> = ();
8354            type ReturnToken<'a> = <Self::ReturnTuple<
8355                'a,
8356            > as alloy_sol_types::SolType>::Token<'a>;
8357            const SIGNATURE: &'static str = "withdrawSharesAsTokens(address,address,address,uint256)";
8358            const SELECTOR: [u8; 4] = [46u8, 174u8, 65u8, 140u8];
8359            #[inline]
8360            fn new<'a>(
8361                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8362            ) -> Self {
8363                tuple.into()
8364            }
8365            #[inline]
8366            fn tokenize(&self) -> Self::Token<'_> {
8367                (
8368                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8369                        &self.staker,
8370                    ),
8371                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8372                        &self.strategy,
8373                    ),
8374                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8375                        &self.token,
8376                    ),
8377                    <alloy::sol_types::sol_data::Uint<
8378                        256,
8379                    > as alloy_sol_types::SolType>::tokenize(&self.shares),
8380                )
8381            }
8382            #[inline]
8383            fn abi_decode_returns(
8384                data: &[u8],
8385                validate: bool,
8386            ) -> alloy_sol_types::Result<Self::Return> {
8387                <Self::ReturnTuple<
8388                    '_,
8389                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8390                    .map(Into::into)
8391            }
8392        }
8393    };
8394    ///Container for all the [`StrategyManager`](self) function calls.
8395    #[derive()]
8396    pub enum StrategyManagerCalls {
8397        #[allow(missing_docs)]
8398        DEFAULT_BURN_ADDRESS(DEFAULT_BURN_ADDRESSCall),
8399        #[allow(missing_docs)]
8400        DEPOSIT_TYPEHASH(DEPOSIT_TYPEHASHCall),
8401        #[allow(missing_docs)]
8402        addShares(addSharesCall),
8403        #[allow(missing_docs)]
8404        addStrategiesToDepositWhitelist(addStrategiesToDepositWhitelistCall),
8405        #[allow(missing_docs)]
8406        burnShares(burnSharesCall),
8407        #[allow(missing_docs)]
8408        calculateStrategyDepositDigestHash(calculateStrategyDepositDigestHashCall),
8409        #[allow(missing_docs)]
8410        delegation(delegationCall),
8411        #[allow(missing_docs)]
8412        depositIntoStrategy(depositIntoStrategyCall),
8413        #[allow(missing_docs)]
8414        depositIntoStrategyWithSignature(depositIntoStrategyWithSignatureCall),
8415        #[allow(missing_docs)]
8416        domainSeparator(domainSeparatorCall),
8417        #[allow(missing_docs)]
8418        getBurnableShares(getBurnableSharesCall),
8419        #[allow(missing_docs)]
8420        getDeposits(getDepositsCall),
8421        #[allow(missing_docs)]
8422        getStakerStrategyList(getStakerStrategyListCall),
8423        #[allow(missing_docs)]
8424        getStrategiesWithBurnableShares(getStrategiesWithBurnableSharesCall),
8425        #[allow(missing_docs)]
8426        increaseBurnableShares(increaseBurnableSharesCall),
8427        #[allow(missing_docs)]
8428        initialize(initializeCall),
8429        #[allow(missing_docs)]
8430        nonces(noncesCall),
8431        #[allow(missing_docs)]
8432        owner(ownerCall),
8433        #[allow(missing_docs)]
8434        pause(pauseCall),
8435        #[allow(missing_docs)]
8436        pauseAll(pauseAllCall),
8437        #[allow(missing_docs)]
8438        paused_0(paused_0Call),
8439        #[allow(missing_docs)]
8440        paused_1(paused_1Call),
8441        #[allow(missing_docs)]
8442        pauserRegistry(pauserRegistryCall),
8443        #[allow(missing_docs)]
8444        removeDepositShares(removeDepositSharesCall),
8445        #[allow(missing_docs)]
8446        removeStrategiesFromDepositWhitelist(removeStrategiesFromDepositWhitelistCall),
8447        #[allow(missing_docs)]
8448        renounceOwnership(renounceOwnershipCall),
8449        #[allow(missing_docs)]
8450        setStrategyWhitelister(setStrategyWhitelisterCall),
8451        #[allow(missing_docs)]
8452        stakerDepositShares(stakerDepositSharesCall),
8453        #[allow(missing_docs)]
8454        stakerStrategyList(stakerStrategyListCall),
8455        #[allow(missing_docs)]
8456        stakerStrategyListLength(stakerStrategyListLengthCall),
8457        #[allow(missing_docs)]
8458        strategyIsWhitelistedForDeposit(strategyIsWhitelistedForDepositCall),
8459        #[allow(missing_docs)]
8460        strategyWhitelister(strategyWhitelisterCall),
8461        #[allow(missing_docs)]
8462        transferOwnership(transferOwnershipCall),
8463        #[allow(missing_docs)]
8464        unpause(unpauseCall),
8465        #[allow(missing_docs)]
8466        version(versionCall),
8467        #[allow(missing_docs)]
8468        withdrawSharesAsTokens(withdrawSharesAsTokensCall),
8469    }
8470    #[automatically_derived]
8471    impl StrategyManagerCalls {
8472        /// All the selectors of this enum.
8473        ///
8474        /// Note that the selectors might not be in the same order as the variants.
8475        /// No guarantees are made about the order of the selectors.
8476        ///
8477        /// Prefer using `SolInterface` methods instead.
8478        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8479            [19u8, 100u8, 57u8, 221u8],
8480            [23u8, 148u8, 187u8, 60u8],
8481            [46u8, 174u8, 65u8, 140u8],
8482            [50u8, 232u8, 154u8, 206u8],
8483            [54u8, 168u8, 197u8, 0u8],
8484            [72u8, 130u8, 94u8, 148u8],
8485            [75u8, 109u8, 93u8, 110u8],
8486            [80u8, 255u8, 114u8, 37u8],
8487            [84u8, 253u8, 77u8, 80u8],
8488            [89u8, 92u8, 106u8, 103u8],
8489            [90u8, 200u8, 106u8, 183u8],
8490            [92u8, 151u8, 90u8, 187u8],
8491            [93u8, 224u8, 143u8, 242u8],
8492            [102u8, 60u8, 29u8, 228u8],
8493            [113u8, 80u8, 24u8, 166u8],
8494            [114u8, 74u8, 244u8, 35u8],
8495            [126u8, 206u8, 190u8, 0u8],
8496            [136u8, 111u8, 17u8, 149u8],
8497            [139u8, 138u8, 172u8, 60u8],
8498            [141u8, 165u8, 203u8, 91u8],
8499            [148u8, 246u8, 73u8, 221u8],
8500            [150u8, 127u8, 192u8, 210u8],
8501            [154u8, 192u8, 29u8, 97u8],
8502            [181u8, 216u8, 181u8, 184u8],
8503            [198u8, 101u8, 103u8, 2u8],
8504            [203u8, 194u8, 189u8, 98u8],
8505            [222u8, 68u8, 172u8, 182u8],
8506            [222u8, 190u8, 30u8, 171u8],
8507            [223u8, 92u8, 247u8, 35u8],
8508            [231u8, 160u8, 80u8, 170u8],
8509            [242u8, 253u8, 227u8, 139u8],
8510            [243u8, 180u8, 160u8, 0u8],
8511            [246u8, 152u8, 218u8, 37u8],
8512            [250u8, 188u8, 28u8, 188u8],
8513            [253u8, 152u8, 4u8, 35u8],
8514            [254u8, 36u8, 58u8, 23u8],
8515        ];
8516    }
8517    #[automatically_derived]
8518    impl alloy_sol_types::SolInterface for StrategyManagerCalls {
8519        const NAME: &'static str = "StrategyManagerCalls";
8520        const MIN_DATA_LENGTH: usize = 0usize;
8521        const COUNT: usize = 36usize;
8522        #[inline]
8523        fn selector(&self) -> [u8; 4] {
8524            match self {
8525                Self::DEFAULT_BURN_ADDRESS(_) => {
8526                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::SELECTOR
8527                }
8528                Self::DEPOSIT_TYPEHASH(_) => {
8529                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::SELECTOR
8530                }
8531                Self::addShares(_) => {
8532                    <addSharesCall as alloy_sol_types::SolCall>::SELECTOR
8533                }
8534                Self::addStrategiesToDepositWhitelist(_) => {
8535                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
8536                }
8537                Self::burnShares(_) => {
8538                    <burnSharesCall as alloy_sol_types::SolCall>::SELECTOR
8539                }
8540                Self::calculateStrategyDepositDigestHash(_) => {
8541                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::SELECTOR
8542                }
8543                Self::delegation(_) => {
8544                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
8545                }
8546                Self::depositIntoStrategy(_) => {
8547                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::SELECTOR
8548                }
8549                Self::depositIntoStrategyWithSignature(_) => {
8550                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::SELECTOR
8551                }
8552                Self::domainSeparator(_) => {
8553                    <domainSeparatorCall as alloy_sol_types::SolCall>::SELECTOR
8554                }
8555                Self::getBurnableShares(_) => {
8556                    <getBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8557                }
8558                Self::getDeposits(_) => {
8559                    <getDepositsCall as alloy_sol_types::SolCall>::SELECTOR
8560                }
8561                Self::getStakerStrategyList(_) => {
8562                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
8563                }
8564                Self::getStrategiesWithBurnableShares(_) => {
8565                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8566                }
8567                Self::increaseBurnableShares(_) => {
8568                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::SELECTOR
8569                }
8570                Self::initialize(_) => {
8571                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
8572                }
8573                Self::nonces(_) => <noncesCall as alloy_sol_types::SolCall>::SELECTOR,
8574                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
8575                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
8576                Self::pauseAll(_) => <pauseAllCall as alloy_sol_types::SolCall>::SELECTOR,
8577                Self::paused_0(_) => <paused_0Call as alloy_sol_types::SolCall>::SELECTOR,
8578                Self::paused_1(_) => <paused_1Call as alloy_sol_types::SolCall>::SELECTOR,
8579                Self::pauserRegistry(_) => {
8580                    <pauserRegistryCall as alloy_sol_types::SolCall>::SELECTOR
8581                }
8582                Self::removeDepositShares(_) => {
8583                    <removeDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
8584                }
8585                Self::removeStrategiesFromDepositWhitelist(_) => {
8586                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::SELECTOR
8587                }
8588                Self::renounceOwnership(_) => {
8589                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8590                }
8591                Self::setStrategyWhitelister(_) => {
8592                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
8593                }
8594                Self::stakerDepositShares(_) => {
8595                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::SELECTOR
8596                }
8597                Self::stakerStrategyList(_) => {
8598                    <stakerStrategyListCall as alloy_sol_types::SolCall>::SELECTOR
8599                }
8600                Self::stakerStrategyListLength(_) => {
8601                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::SELECTOR
8602                }
8603                Self::strategyIsWhitelistedForDeposit(_) => {
8604                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::SELECTOR
8605                }
8606                Self::strategyWhitelister(_) => {
8607                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::SELECTOR
8608                }
8609                Self::transferOwnership(_) => {
8610                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
8611                }
8612                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
8613                Self::version(_) => <versionCall as alloy_sol_types::SolCall>::SELECTOR,
8614                Self::withdrawSharesAsTokens(_) => {
8615                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::SELECTOR
8616                }
8617            }
8618        }
8619        #[inline]
8620        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8621            Self::SELECTORS.get(i).copied()
8622        }
8623        #[inline]
8624        fn valid_selector(selector: [u8; 4]) -> bool {
8625            Self::SELECTORS.binary_search(&selector).is_ok()
8626        }
8627        #[inline]
8628        #[allow(non_snake_case)]
8629        fn abi_decode_raw(
8630            selector: [u8; 4],
8631            data: &[u8],
8632            validate: bool,
8633        ) -> alloy_sol_types::Result<Self> {
8634            static DECODE_SHIMS: &[fn(
8635                &[u8],
8636                bool,
8637            ) -> alloy_sol_types::Result<StrategyManagerCalls>] = &[
8638                {
8639                    fn pause(
8640                        data: &[u8],
8641                        validate: bool,
8642                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8643                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
8644                                data,
8645                                validate,
8646                            )
8647                            .map(StrategyManagerCalls::pause)
8648                    }
8649                    pause
8650                },
8651                {
8652                    fn initialize(
8653                        data: &[u8],
8654                        validate: bool,
8655                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8656                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
8657                                data,
8658                                validate,
8659                            )
8660                            .map(StrategyManagerCalls::initialize)
8661                    }
8662                    initialize
8663                },
8664                {
8665                    fn withdrawSharesAsTokens(
8666                        data: &[u8],
8667                        validate: bool,
8668                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8669                        <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_decode_raw(
8670                                data,
8671                                validate,
8672                            )
8673                            .map(StrategyManagerCalls::withdrawSharesAsTokens)
8674                    }
8675                    withdrawSharesAsTokens
8676                },
8677                {
8678                    fn depositIntoStrategyWithSignature(
8679                        data: &[u8],
8680                        validate: bool,
8681                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8682                        <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_decode_raw(
8683                                data,
8684                                validate,
8685                            )
8686                            .map(StrategyManagerCalls::depositIntoStrategyWithSignature)
8687                    }
8688                    depositIntoStrategyWithSignature
8689                },
8690                {
8691                    fn getStrategiesWithBurnableShares(
8692                        data: &[u8],
8693                        validate: bool,
8694                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8695                        <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8696                                data,
8697                                validate,
8698                            )
8699                            .map(StrategyManagerCalls::getStrategiesWithBurnableShares)
8700                    }
8701                    getStrategiesWithBurnableShares
8702                },
8703                {
8704                    fn DEPOSIT_TYPEHASH(
8705                        data: &[u8],
8706                        validate: bool,
8707                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8708                        <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_decode_raw(
8709                                data,
8710                                validate,
8711                            )
8712                            .map(StrategyManagerCalls::DEPOSIT_TYPEHASH)
8713                    }
8714                    DEPOSIT_TYPEHASH
8715                },
8716                {
8717                    fn burnShares(
8718                        data: &[u8],
8719                        validate: bool,
8720                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8721                        <burnSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8722                                data,
8723                                validate,
8724                            )
8725                            .map(StrategyManagerCalls::burnShares)
8726                    }
8727                    burnShares
8728                },
8729                {
8730                    fn addShares(
8731                        data: &[u8],
8732                        validate: bool,
8733                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8734                        <addSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8735                                data,
8736                                validate,
8737                            )
8738                            .map(StrategyManagerCalls::addShares)
8739                    }
8740                    addShares
8741                },
8742                {
8743                    fn version(
8744                        data: &[u8],
8745                        validate: bool,
8746                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8747                        <versionCall as alloy_sol_types::SolCall>::abi_decode_raw(
8748                                data,
8749                                validate,
8750                            )
8751                            .map(StrategyManagerCalls::version)
8752                    }
8753                    version
8754                },
8755                {
8756                    fn pauseAll(
8757                        data: &[u8],
8758                        validate: bool,
8759                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8760                        <pauseAllCall as alloy_sol_types::SolCall>::abi_decode_raw(
8761                                data,
8762                                validate,
8763                            )
8764                            .map(StrategyManagerCalls::pauseAll)
8765                    }
8766                    pauseAll
8767                },
8768                {
8769                    fn paused_0(
8770                        data: &[u8],
8771                        validate: bool,
8772                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8773                        <paused_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
8774                                data,
8775                                validate,
8776                            )
8777                            .map(StrategyManagerCalls::paused_0)
8778                    }
8779                    paused_0
8780                },
8781                {
8782                    fn paused_1(
8783                        data: &[u8],
8784                        validate: bool,
8785                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8786                        <paused_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
8787                                data,
8788                                validate,
8789                            )
8790                            .map(StrategyManagerCalls::paused_1)
8791                    }
8792                    paused_1
8793                },
8794                {
8795                    fn addStrategiesToDepositWhitelist(
8796                        data: &[u8],
8797                        validate: bool,
8798                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8799                        <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
8800                                data,
8801                                validate,
8802                            )
8803                            .map(StrategyManagerCalls::addStrategiesToDepositWhitelist)
8804                    }
8805                    addStrategiesToDepositWhitelist
8806                },
8807                {
8808                    fn strategyIsWhitelistedForDeposit(
8809                        data: &[u8],
8810                        validate: bool,
8811                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8812                        <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_decode_raw(
8813                                data,
8814                                validate,
8815                            )
8816                            .map(StrategyManagerCalls::strategyIsWhitelistedForDeposit)
8817                    }
8818                    strategyIsWhitelistedForDeposit
8819                },
8820                {
8821                    fn renounceOwnership(
8822                        data: &[u8],
8823                        validate: bool,
8824                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8825                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
8826                                data,
8827                                validate,
8828                            )
8829                            .map(StrategyManagerCalls::renounceOwnership)
8830                    }
8831                    renounceOwnership
8832                },
8833                {
8834                    fn removeDepositShares(
8835                        data: &[u8],
8836                        validate: bool,
8837                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8838                        <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8839                                data,
8840                                validate,
8841                            )
8842                            .map(StrategyManagerCalls::removeDepositShares)
8843                    }
8844                    removeDepositShares
8845                },
8846                {
8847                    fn nonces(
8848                        data: &[u8],
8849                        validate: bool,
8850                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8851                        <noncesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8852                                data,
8853                                validate,
8854                            )
8855                            .map(StrategyManagerCalls::nonces)
8856                    }
8857                    nonces
8858                },
8859                {
8860                    fn pauserRegistry(
8861                        data: &[u8],
8862                        validate: bool,
8863                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8864                        <pauserRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(
8865                                data,
8866                                validate,
8867                            )
8868                            .map(StrategyManagerCalls::pauserRegistry)
8869                    }
8870                    pauserRegistry
8871                },
8872                {
8873                    fn stakerStrategyListLength(
8874                        data: &[u8],
8875                        validate: bool,
8876                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8877                        <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
8878                                data,
8879                                validate,
8880                            )
8881                            .map(StrategyManagerCalls::stakerStrategyListLength)
8882                    }
8883                    stakerStrategyListLength
8884                },
8885                {
8886                    fn owner(
8887                        data: &[u8],
8888                        validate: bool,
8889                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8890                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
8891                                data,
8892                                validate,
8893                            )
8894                            .map(StrategyManagerCalls::owner)
8895                    }
8896                    owner
8897                },
8898                {
8899                    fn getDeposits(
8900                        data: &[u8],
8901                        validate: bool,
8902                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8903                        <getDepositsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8904                                data,
8905                                validate,
8906                            )
8907                            .map(StrategyManagerCalls::getDeposits)
8908                    }
8909                    getDeposits
8910                },
8911                {
8912                    fn strategyWhitelister(
8913                        data: &[u8],
8914                        validate: bool,
8915                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8916                        <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(
8917                                data,
8918                                validate,
8919                            )
8920                            .map(StrategyManagerCalls::strategyWhitelister)
8921                    }
8922                    strategyWhitelister
8923                },
8924                {
8925                    fn calculateStrategyDepositDigestHash(
8926                        data: &[u8],
8927                        validate: bool,
8928                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8929                        <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
8930                                data,
8931                                validate,
8932                            )
8933                            .map(
8934                                StrategyManagerCalls::calculateStrategyDepositDigestHash,
8935                            )
8936                    }
8937                    calculateStrategyDepositDigestHash
8938                },
8939                {
8940                    fn removeStrategiesFromDepositWhitelist(
8941                        data: &[u8],
8942                        validate: bool,
8943                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8944                        <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_decode_raw(
8945                                data,
8946                                validate,
8947                            )
8948                            .map(
8949                                StrategyManagerCalls::removeStrategiesFromDepositWhitelist,
8950                            )
8951                    }
8952                    removeStrategiesFromDepositWhitelist
8953                },
8954                {
8955                    fn setStrategyWhitelister(
8956                        data: &[u8],
8957                        validate: bool,
8958                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8959                        <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_decode_raw(
8960                                data,
8961                                validate,
8962                            )
8963                            .map(StrategyManagerCalls::setStrategyWhitelister)
8964                    }
8965                    setStrategyWhitelister
8966                },
8967                {
8968                    fn stakerStrategyList(
8969                        data: &[u8],
8970                        validate: bool,
8971                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8972                        <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(
8973                                data,
8974                                validate,
8975                            )
8976                            .map(StrategyManagerCalls::stakerStrategyList)
8977                    }
8978                    stakerStrategyList
8979                },
8980                {
8981                    fn getStakerStrategyList(
8982                        data: &[u8],
8983                        validate: bool,
8984                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8985                        <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_decode_raw(
8986                                data,
8987                                validate,
8988                            )
8989                            .map(StrategyManagerCalls::getStakerStrategyList)
8990                    }
8991                    getStakerStrategyList
8992                },
8993                {
8994                    fn increaseBurnableShares(
8995                        data: &[u8],
8996                        validate: bool,
8997                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
8998                        <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
8999                                data,
9000                                validate,
9001                            )
9002                            .map(StrategyManagerCalls::increaseBurnableShares)
9003                    }
9004                    increaseBurnableShares
9005                },
9006                {
9007                    fn delegation(
9008                        data: &[u8],
9009                        validate: bool,
9010                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9011                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9012                                data,
9013                                validate,
9014                            )
9015                            .map(StrategyManagerCalls::delegation)
9016                    }
9017                    delegation
9018                },
9019                {
9020                    fn depositIntoStrategy(
9021                        data: &[u8],
9022                        validate: bool,
9023                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9024                        <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_decode_raw(
9025                                data,
9026                                validate,
9027                            )
9028                            .map(StrategyManagerCalls::depositIntoStrategy)
9029                    }
9030                    depositIntoStrategy
9031                },
9032                {
9033                    fn transferOwnership(
9034                        data: &[u8],
9035                        validate: bool,
9036                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9037                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9038                                data,
9039                                validate,
9040                            )
9041                            .map(StrategyManagerCalls::transferOwnership)
9042                    }
9043                    transferOwnership
9044                },
9045                {
9046                    fn DEFAULT_BURN_ADDRESS(
9047                        data: &[u8],
9048                        validate: bool,
9049                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9050                        <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_decode_raw(
9051                                data,
9052                                validate,
9053                            )
9054                            .map(StrategyManagerCalls::DEFAULT_BURN_ADDRESS)
9055                    }
9056                    DEFAULT_BURN_ADDRESS
9057                },
9058                {
9059                    fn domainSeparator(
9060                        data: &[u8],
9061                        validate: bool,
9062                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9063                        <domainSeparatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9064                                data,
9065                                validate,
9066                            )
9067                            .map(StrategyManagerCalls::domainSeparator)
9068                    }
9069                    domainSeparator
9070                },
9071                {
9072                    fn unpause(
9073                        data: &[u8],
9074                        validate: bool,
9075                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9076                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(
9077                                data,
9078                                validate,
9079                            )
9080                            .map(StrategyManagerCalls::unpause)
9081                    }
9082                    unpause
9083                },
9084                {
9085                    fn getBurnableShares(
9086                        data: &[u8],
9087                        validate: bool,
9088                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9089                        <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9090                                data,
9091                                validate,
9092                            )
9093                            .map(StrategyManagerCalls::getBurnableShares)
9094                    }
9095                    getBurnableShares
9096                },
9097                {
9098                    fn stakerDepositShares(
9099                        data: &[u8],
9100                        validate: bool,
9101                    ) -> alloy_sol_types::Result<StrategyManagerCalls> {
9102                        <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9103                                data,
9104                                validate,
9105                            )
9106                            .map(StrategyManagerCalls::stakerDepositShares)
9107                    }
9108                    stakerDepositShares
9109                },
9110            ];
9111            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9112                return Err(
9113                    alloy_sol_types::Error::unknown_selector(
9114                        <Self as alloy_sol_types::SolInterface>::NAME,
9115                        selector,
9116                    ),
9117                );
9118            };
9119            DECODE_SHIMS[idx](data, validate)
9120        }
9121        #[inline]
9122        fn abi_encoded_size(&self) -> usize {
9123            match self {
9124                Self::DEFAULT_BURN_ADDRESS(inner) => {
9125                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encoded_size(
9126                        inner,
9127                    )
9128                }
9129                Self::DEPOSIT_TYPEHASH(inner) => {
9130                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encoded_size(
9131                        inner,
9132                    )
9133                }
9134                Self::addShares(inner) => {
9135                    <addSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9136                }
9137                Self::addStrategiesToDepositWhitelist(inner) => {
9138                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
9139                        inner,
9140                    )
9141                }
9142                Self::burnShares(inner) => {
9143                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9144                }
9145                Self::calculateStrategyDepositDigestHash(inner) => {
9146                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
9147                        inner,
9148                    )
9149                }
9150                Self::delegation(inner) => {
9151                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9152                }
9153                Self::depositIntoStrategy(inner) => {
9154                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encoded_size(
9155                        inner,
9156                    )
9157                }
9158                Self::depositIntoStrategyWithSignature(inner) => {
9159                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encoded_size(
9160                        inner,
9161                    )
9162                }
9163                Self::domainSeparator(inner) => {
9164                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
9165                        inner,
9166                    )
9167                }
9168                Self::getBurnableShares(inner) => {
9169                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9170                        inner,
9171                    )
9172                }
9173                Self::getDeposits(inner) => {
9174                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9175                        inner,
9176                    )
9177                }
9178                Self::getStakerStrategyList(inner) => {
9179                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
9180                        inner,
9181                    )
9182                }
9183                Self::getStrategiesWithBurnableShares(inner) => {
9184                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9185                        inner,
9186                    )
9187                }
9188                Self::increaseBurnableShares(inner) => {
9189                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9190                        inner,
9191                    )
9192                }
9193                Self::initialize(inner) => {
9194                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9195                }
9196                Self::nonces(inner) => {
9197                    <noncesCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9198                }
9199                Self::owner(inner) => {
9200                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9201                }
9202                Self::pause(inner) => {
9203                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9204                }
9205                Self::pauseAll(inner) => {
9206                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9207                }
9208                Self::paused_0(inner) => {
9209                    <paused_0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9210                }
9211                Self::paused_1(inner) => {
9212                    <paused_1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9213                }
9214                Self::pauserRegistry(inner) => {
9215                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
9216                        inner,
9217                    )
9218                }
9219                Self::removeDepositShares(inner) => {
9220                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9221                        inner,
9222                    )
9223                }
9224                Self::removeStrategiesFromDepositWhitelist(inner) => {
9225                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encoded_size(
9226                        inner,
9227                    )
9228                }
9229                Self::renounceOwnership(inner) => {
9230                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9231                        inner,
9232                    )
9233                }
9234                Self::setStrategyWhitelister(inner) => {
9235                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
9236                        inner,
9237                    )
9238                }
9239                Self::stakerDepositShares(inner) => {
9240                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encoded_size(
9241                        inner,
9242                    )
9243                }
9244                Self::stakerStrategyList(inner) => {
9245                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encoded_size(
9246                        inner,
9247                    )
9248                }
9249                Self::stakerStrategyListLength(inner) => {
9250                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
9251                        inner,
9252                    )
9253                }
9254                Self::strategyIsWhitelistedForDeposit(inner) => {
9255                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encoded_size(
9256                        inner,
9257                    )
9258                }
9259                Self::strategyWhitelister(inner) => {
9260                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encoded_size(
9261                        inner,
9262                    )
9263                }
9264                Self::transferOwnership(inner) => {
9265                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9266                        inner,
9267                    )
9268                }
9269                Self::unpause(inner) => {
9270                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9271                }
9272                Self::version(inner) => {
9273                    <versionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9274                }
9275                Self::withdrawSharesAsTokens(inner) => {
9276                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encoded_size(
9277                        inner,
9278                    )
9279                }
9280            }
9281        }
9282        #[inline]
9283        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9284            match self {
9285                Self::DEFAULT_BURN_ADDRESS(inner) => {
9286                    <DEFAULT_BURN_ADDRESSCall as alloy_sol_types::SolCall>::abi_encode_raw(
9287                        inner,
9288                        out,
9289                    )
9290                }
9291                Self::DEPOSIT_TYPEHASH(inner) => {
9292                    <DEPOSIT_TYPEHASHCall as alloy_sol_types::SolCall>::abi_encode_raw(
9293                        inner,
9294                        out,
9295                    )
9296                }
9297                Self::addShares(inner) => {
9298                    <addSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9299                        inner,
9300                        out,
9301                    )
9302                }
9303                Self::addStrategiesToDepositWhitelist(inner) => {
9304                    <addStrategiesToDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
9305                        inner,
9306                        out,
9307                    )
9308                }
9309                Self::burnShares(inner) => {
9310                    <burnSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9311                        inner,
9312                        out,
9313                    )
9314                }
9315                Self::calculateStrategyDepositDigestHash(inner) => {
9316                    <calculateStrategyDepositDigestHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
9317                        inner,
9318                        out,
9319                    )
9320                }
9321                Self::delegation(inner) => {
9322                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9323                        inner,
9324                        out,
9325                    )
9326                }
9327                Self::depositIntoStrategy(inner) => {
9328                    <depositIntoStrategyCall as alloy_sol_types::SolCall>::abi_encode_raw(
9329                        inner,
9330                        out,
9331                    )
9332                }
9333                Self::depositIntoStrategyWithSignature(inner) => {
9334                    <depositIntoStrategyWithSignatureCall as alloy_sol_types::SolCall>::abi_encode_raw(
9335                        inner,
9336                        out,
9337                    )
9338                }
9339                Self::domainSeparator(inner) => {
9340                    <domainSeparatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
9341                        inner,
9342                        out,
9343                    )
9344                }
9345                Self::getBurnableShares(inner) => {
9346                    <getBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9347                        inner,
9348                        out,
9349                    )
9350                }
9351                Self::getDeposits(inner) => {
9352                    <getDepositsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9353                        inner,
9354                        out,
9355                    )
9356                }
9357                Self::getStakerStrategyList(inner) => {
9358                    <getStakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
9359                        inner,
9360                        out,
9361                    )
9362                }
9363                Self::getStrategiesWithBurnableShares(inner) => {
9364                    <getStrategiesWithBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9365                        inner,
9366                        out,
9367                    )
9368                }
9369                Self::increaseBurnableShares(inner) => {
9370                    <increaseBurnableSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9371                        inner,
9372                        out,
9373                    )
9374                }
9375                Self::initialize(inner) => {
9376                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9377                        inner,
9378                        out,
9379                    )
9380                }
9381                Self::nonces(inner) => {
9382                    <noncesCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9383                }
9384                Self::owner(inner) => {
9385                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9386                }
9387                Self::pause(inner) => {
9388                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9389                }
9390                Self::pauseAll(inner) => {
9391                    <pauseAllCall as alloy_sol_types::SolCall>::abi_encode_raw(
9392                        inner,
9393                        out,
9394                    )
9395                }
9396                Self::paused_0(inner) => {
9397                    <paused_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
9398                        inner,
9399                        out,
9400                    )
9401                }
9402                Self::paused_1(inner) => {
9403                    <paused_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
9404                        inner,
9405                        out,
9406                    )
9407                }
9408                Self::pauserRegistry(inner) => {
9409                    <pauserRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
9410                        inner,
9411                        out,
9412                    )
9413                }
9414                Self::removeDepositShares(inner) => {
9415                    <removeDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9416                        inner,
9417                        out,
9418                    )
9419                }
9420                Self::removeStrategiesFromDepositWhitelist(inner) => {
9421                    <removeStrategiesFromDepositWhitelistCall as alloy_sol_types::SolCall>::abi_encode_raw(
9422                        inner,
9423                        out,
9424                    )
9425                }
9426                Self::renounceOwnership(inner) => {
9427                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9428                        inner,
9429                        out,
9430                    )
9431                }
9432                Self::setStrategyWhitelister(inner) => {
9433                    <setStrategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
9434                        inner,
9435                        out,
9436                    )
9437                }
9438                Self::stakerDepositShares(inner) => {
9439                    <stakerDepositSharesCall as alloy_sol_types::SolCall>::abi_encode_raw(
9440                        inner,
9441                        out,
9442                    )
9443                }
9444                Self::stakerStrategyList(inner) => {
9445                    <stakerStrategyListCall as alloy_sol_types::SolCall>::abi_encode_raw(
9446                        inner,
9447                        out,
9448                    )
9449                }
9450                Self::stakerStrategyListLength(inner) => {
9451                    <stakerStrategyListLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
9452                        inner,
9453                        out,
9454                    )
9455                }
9456                Self::strategyIsWhitelistedForDeposit(inner) => {
9457                    <strategyIsWhitelistedForDepositCall as alloy_sol_types::SolCall>::abi_encode_raw(
9458                        inner,
9459                        out,
9460                    )
9461                }
9462                Self::strategyWhitelister(inner) => {
9463                    <strategyWhitelisterCall as alloy_sol_types::SolCall>::abi_encode_raw(
9464                        inner,
9465                        out,
9466                    )
9467                }
9468                Self::transferOwnership(inner) => {
9469                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
9470                        inner,
9471                        out,
9472                    )
9473                }
9474                Self::unpause(inner) => {
9475                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9476                }
9477                Self::version(inner) => {
9478                    <versionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9479                }
9480                Self::withdrawSharesAsTokens(inner) => {
9481                    <withdrawSharesAsTokensCall as alloy_sol_types::SolCall>::abi_encode_raw(
9482                        inner,
9483                        out,
9484                    )
9485                }
9486            }
9487        }
9488    }
9489    ///Container for all the [`StrategyManager`](self) custom errors.
9490    #[derive(Debug, PartialEq, Eq, Hash)]
9491    pub enum StrategyManagerErrors {
9492        #[allow(missing_docs)]
9493        CurrentlyPaused(CurrentlyPaused),
9494        #[allow(missing_docs)]
9495        InputAddressZero(InputAddressZero),
9496        #[allow(missing_docs)]
9497        InvalidNewPausedStatus(InvalidNewPausedStatus),
9498        #[allow(missing_docs)]
9499        InvalidShortString(InvalidShortString),
9500        #[allow(missing_docs)]
9501        InvalidSignature(InvalidSignature),
9502        #[allow(missing_docs)]
9503        MaxStrategiesExceeded(MaxStrategiesExceeded),
9504        #[allow(missing_docs)]
9505        OnlyDelegationManager(OnlyDelegationManager),
9506        #[allow(missing_docs)]
9507        OnlyPauser(OnlyPauser),
9508        #[allow(missing_docs)]
9509        OnlyStrategyWhitelister(OnlyStrategyWhitelister),
9510        #[allow(missing_docs)]
9511        OnlyUnpauser(OnlyUnpauser),
9512        #[allow(missing_docs)]
9513        SharesAmountTooHigh(SharesAmountTooHigh),
9514        #[allow(missing_docs)]
9515        SharesAmountZero(SharesAmountZero),
9516        #[allow(missing_docs)]
9517        SignatureExpired(SignatureExpired),
9518        #[allow(missing_docs)]
9519        StakerAddressZero(StakerAddressZero),
9520        #[allow(missing_docs)]
9521        StrategyNotFound(StrategyNotFound),
9522        #[allow(missing_docs)]
9523        StrategyNotWhitelisted(StrategyNotWhitelisted),
9524        #[allow(missing_docs)]
9525        StringTooLong(StringTooLong),
9526    }
9527    #[automatically_derived]
9528    impl StrategyManagerErrors {
9529        /// All the selectors of this enum.
9530        ///
9531        /// Note that the selectors might not be in the same order as the variants.
9532        /// No guarantees are made about the order of the selectors.
9533        ///
9534        /// Prefer using `SolInterface` methods instead.
9535        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9536            [8u8, 25u8, 189u8, 205u8],
9537            [13u8, 10u8, 33u8, 200u8],
9538            [22u8, 242u8, 204u8, 201u8],
9539            [48u8, 90u8, 39u8, 169u8],
9540            [75u8, 24u8, 177u8, 147u8],
9541            [91u8, 226u8, 180u8, 130u8],
9542            [93u8, 251u8, 44u8, 162u8],
9543            [115u8, 99u8, 33u8, 118u8],
9544            [117u8, 223u8, 81u8, 220u8],
9545            [121u8, 72u8, 33u8, 255u8],
9546            [130u8, 232u8, 255u8, 228u8],
9547            [132u8, 10u8, 72u8, 213u8],
9548            [132u8, 12u8, 54u8, 74u8],
9549            [139u8, 170u8, 87u8, 159u8],
9550            [179u8, 81u8, 43u8, 12u8],
9551            [198u8, 29u8, 202u8, 93u8],
9552            [247u8, 57u8, 88u8, 155u8],
9553        ];
9554    }
9555    #[automatically_derived]
9556    impl alloy_sol_types::SolInterface for StrategyManagerErrors {
9557        const NAME: &'static str = "StrategyManagerErrors";
9558        const MIN_DATA_LENGTH: usize = 0usize;
9559        const COUNT: usize = 17usize;
9560        #[inline]
9561        fn selector(&self) -> [u8; 4] {
9562            match self {
9563                Self::CurrentlyPaused(_) => {
9564                    <CurrentlyPaused as alloy_sol_types::SolError>::SELECTOR
9565                }
9566                Self::InputAddressZero(_) => {
9567                    <InputAddressZero as alloy_sol_types::SolError>::SELECTOR
9568                }
9569                Self::InvalidNewPausedStatus(_) => {
9570                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::SELECTOR
9571                }
9572                Self::InvalidShortString(_) => {
9573                    <InvalidShortString as alloy_sol_types::SolError>::SELECTOR
9574                }
9575                Self::InvalidSignature(_) => {
9576                    <InvalidSignature as alloy_sol_types::SolError>::SELECTOR
9577                }
9578                Self::MaxStrategiesExceeded(_) => {
9579                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::SELECTOR
9580                }
9581                Self::OnlyDelegationManager(_) => {
9582                    <OnlyDelegationManager as alloy_sol_types::SolError>::SELECTOR
9583                }
9584                Self::OnlyPauser(_) => {
9585                    <OnlyPauser as alloy_sol_types::SolError>::SELECTOR
9586                }
9587                Self::OnlyStrategyWhitelister(_) => {
9588                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::SELECTOR
9589                }
9590                Self::OnlyUnpauser(_) => {
9591                    <OnlyUnpauser as alloy_sol_types::SolError>::SELECTOR
9592                }
9593                Self::SharesAmountTooHigh(_) => {
9594                    <SharesAmountTooHigh as alloy_sol_types::SolError>::SELECTOR
9595                }
9596                Self::SharesAmountZero(_) => {
9597                    <SharesAmountZero as alloy_sol_types::SolError>::SELECTOR
9598                }
9599                Self::SignatureExpired(_) => {
9600                    <SignatureExpired as alloy_sol_types::SolError>::SELECTOR
9601                }
9602                Self::StakerAddressZero(_) => {
9603                    <StakerAddressZero as alloy_sol_types::SolError>::SELECTOR
9604                }
9605                Self::StrategyNotFound(_) => {
9606                    <StrategyNotFound as alloy_sol_types::SolError>::SELECTOR
9607                }
9608                Self::StrategyNotWhitelisted(_) => {
9609                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::SELECTOR
9610                }
9611                Self::StringTooLong(_) => {
9612                    <StringTooLong as alloy_sol_types::SolError>::SELECTOR
9613                }
9614            }
9615        }
9616        #[inline]
9617        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9618            Self::SELECTORS.get(i).copied()
9619        }
9620        #[inline]
9621        fn valid_selector(selector: [u8; 4]) -> bool {
9622            Self::SELECTORS.binary_search(&selector).is_ok()
9623        }
9624        #[inline]
9625        #[allow(non_snake_case)]
9626        fn abi_decode_raw(
9627            selector: [u8; 4],
9628            data: &[u8],
9629            validate: bool,
9630        ) -> alloy_sol_types::Result<Self> {
9631            static DECODE_SHIMS: &[fn(
9632                &[u8],
9633                bool,
9634            ) -> alloy_sol_types::Result<StrategyManagerErrors>] = &[
9635                {
9636                    fn SignatureExpired(
9637                        data: &[u8],
9638                        validate: bool,
9639                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9640                        <SignatureExpired as alloy_sol_types::SolError>::abi_decode_raw(
9641                                data,
9642                                validate,
9643                            )
9644                            .map(StrategyManagerErrors::SignatureExpired)
9645                    }
9646                    SignatureExpired
9647                },
9648                {
9649                    fn MaxStrategiesExceeded(
9650                        data: &[u8],
9651                        validate: bool,
9652                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9653                        <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_decode_raw(
9654                                data,
9655                                validate,
9656                            )
9657                            .map(StrategyManagerErrors::MaxStrategiesExceeded)
9658                    }
9659                    MaxStrategiesExceeded
9660                },
9661                {
9662                    fn StakerAddressZero(
9663                        data: &[u8],
9664                        validate: bool,
9665                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9666                        <StakerAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
9667                                data,
9668                                validate,
9669                            )
9670                            .map(StrategyManagerErrors::StakerAddressZero)
9671                    }
9672                    StakerAddressZero
9673                },
9674                {
9675                    fn StringTooLong(
9676                        data: &[u8],
9677                        validate: bool,
9678                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9679                        <StringTooLong as alloy_sol_types::SolError>::abi_decode_raw(
9680                                data,
9681                                validate,
9682                            )
9683                            .map(StrategyManagerErrors::StringTooLong)
9684                    }
9685                    StringTooLong
9686                },
9687                {
9688                    fn SharesAmountTooHigh(
9689                        data: &[u8],
9690                        validate: bool,
9691                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9692                        <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_decode_raw(
9693                                data,
9694                                validate,
9695                            )
9696                            .map(StrategyManagerErrors::SharesAmountTooHigh)
9697                    }
9698                    SharesAmountTooHigh
9699                },
9700                {
9701                    fn StrategyNotFound(
9702                        data: &[u8],
9703                        validate: bool,
9704                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9705                        <StrategyNotFound as alloy_sol_types::SolError>::abi_decode_raw(
9706                                data,
9707                                validate,
9708                            )
9709                            .map(StrategyManagerErrors::StrategyNotFound)
9710                    }
9711                    StrategyNotFound
9712                },
9713                {
9714                    fn StrategyNotWhitelisted(
9715                        data: &[u8],
9716                        validate: bool,
9717                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9718                        <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_decode_raw(
9719                                data,
9720                                validate,
9721                            )
9722                            .map(StrategyManagerErrors::StrategyNotWhitelisted)
9723                    }
9724                    StrategyNotWhitelisted
9725                },
9726                {
9727                    fn InputAddressZero(
9728                        data: &[u8],
9729                        validate: bool,
9730                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9731                        <InputAddressZero as alloy_sol_types::SolError>::abi_decode_raw(
9732                                data,
9733                                validate,
9734                            )
9735                            .map(StrategyManagerErrors::InputAddressZero)
9736                    }
9737                    InputAddressZero
9738                },
9739                {
9740                    fn OnlyPauser(
9741                        data: &[u8],
9742                        validate: bool,
9743                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9744                        <OnlyPauser as alloy_sol_types::SolError>::abi_decode_raw(
9745                                data,
9746                                validate,
9747                            )
9748                            .map(StrategyManagerErrors::OnlyPauser)
9749                    }
9750                    OnlyPauser
9751                },
9752                {
9753                    fn OnlyUnpauser(
9754                        data: &[u8],
9755                        validate: bool,
9756                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9757                        <OnlyUnpauser as alloy_sol_types::SolError>::abi_decode_raw(
9758                                data,
9759                                validate,
9760                            )
9761                            .map(StrategyManagerErrors::OnlyUnpauser)
9762                    }
9763                    OnlyUnpauser
9764                },
9765                {
9766                    fn OnlyStrategyWhitelister(
9767                        data: &[u8],
9768                        validate: bool,
9769                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9770                        <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_decode_raw(
9771                                data,
9772                                validate,
9773                            )
9774                            .map(StrategyManagerErrors::OnlyStrategyWhitelister)
9775                    }
9776                    OnlyStrategyWhitelister
9777                },
9778                {
9779                    fn CurrentlyPaused(
9780                        data: &[u8],
9781                        validate: bool,
9782                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9783                        <CurrentlyPaused as alloy_sol_types::SolError>::abi_decode_raw(
9784                                data,
9785                                validate,
9786                            )
9787                            .map(StrategyManagerErrors::CurrentlyPaused)
9788                    }
9789                    CurrentlyPaused
9790                },
9791                {
9792                    fn SharesAmountZero(
9793                        data: &[u8],
9794                        validate: bool,
9795                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9796                        <SharesAmountZero as alloy_sol_types::SolError>::abi_decode_raw(
9797                                data,
9798                                validate,
9799                            )
9800                            .map(StrategyManagerErrors::SharesAmountZero)
9801                    }
9802                    SharesAmountZero
9803                },
9804                {
9805                    fn InvalidSignature(
9806                        data: &[u8],
9807                        validate: bool,
9808                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9809                        <InvalidSignature as alloy_sol_types::SolError>::abi_decode_raw(
9810                                data,
9811                                validate,
9812                            )
9813                            .map(StrategyManagerErrors::InvalidSignature)
9814                    }
9815                    InvalidSignature
9816                },
9817                {
9818                    fn InvalidShortString(
9819                        data: &[u8],
9820                        validate: bool,
9821                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9822                        <InvalidShortString as alloy_sol_types::SolError>::abi_decode_raw(
9823                                data,
9824                                validate,
9825                            )
9826                            .map(StrategyManagerErrors::InvalidShortString)
9827                    }
9828                    InvalidShortString
9829                },
9830                {
9831                    fn InvalidNewPausedStatus(
9832                        data: &[u8],
9833                        validate: bool,
9834                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9835                        <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_decode_raw(
9836                                data,
9837                                validate,
9838                            )
9839                            .map(StrategyManagerErrors::InvalidNewPausedStatus)
9840                    }
9841                    InvalidNewPausedStatus
9842                },
9843                {
9844                    fn OnlyDelegationManager(
9845                        data: &[u8],
9846                        validate: bool,
9847                    ) -> alloy_sol_types::Result<StrategyManagerErrors> {
9848                        <OnlyDelegationManager as alloy_sol_types::SolError>::abi_decode_raw(
9849                                data,
9850                                validate,
9851                            )
9852                            .map(StrategyManagerErrors::OnlyDelegationManager)
9853                    }
9854                    OnlyDelegationManager
9855                },
9856            ];
9857            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9858                return Err(
9859                    alloy_sol_types::Error::unknown_selector(
9860                        <Self as alloy_sol_types::SolInterface>::NAME,
9861                        selector,
9862                    ),
9863                );
9864            };
9865            DECODE_SHIMS[idx](data, validate)
9866        }
9867        #[inline]
9868        fn abi_encoded_size(&self) -> usize {
9869            match self {
9870                Self::CurrentlyPaused(inner) => {
9871                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encoded_size(
9872                        inner,
9873                    )
9874                }
9875                Self::InputAddressZero(inner) => {
9876                    <InputAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
9877                        inner,
9878                    )
9879                }
9880                Self::InvalidNewPausedStatus(inner) => {
9881                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encoded_size(
9882                        inner,
9883                    )
9884                }
9885                Self::InvalidShortString(inner) => {
9886                    <InvalidShortString as alloy_sol_types::SolError>::abi_encoded_size(
9887                        inner,
9888                    )
9889                }
9890                Self::InvalidSignature(inner) => {
9891                    <InvalidSignature as alloy_sol_types::SolError>::abi_encoded_size(
9892                        inner,
9893                    )
9894                }
9895                Self::MaxStrategiesExceeded(inner) => {
9896                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encoded_size(
9897                        inner,
9898                    )
9899                }
9900                Self::OnlyDelegationManager(inner) => {
9901                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encoded_size(
9902                        inner,
9903                    )
9904                }
9905                Self::OnlyPauser(inner) => {
9906                    <OnlyPauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
9907                }
9908                Self::OnlyStrategyWhitelister(inner) => {
9909                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encoded_size(
9910                        inner,
9911                    )
9912                }
9913                Self::OnlyUnpauser(inner) => {
9914                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encoded_size(inner)
9915                }
9916                Self::SharesAmountTooHigh(inner) => {
9917                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encoded_size(
9918                        inner,
9919                    )
9920                }
9921                Self::SharesAmountZero(inner) => {
9922                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encoded_size(
9923                        inner,
9924                    )
9925                }
9926                Self::SignatureExpired(inner) => {
9927                    <SignatureExpired as alloy_sol_types::SolError>::abi_encoded_size(
9928                        inner,
9929                    )
9930                }
9931                Self::StakerAddressZero(inner) => {
9932                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encoded_size(
9933                        inner,
9934                    )
9935                }
9936                Self::StrategyNotFound(inner) => {
9937                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encoded_size(
9938                        inner,
9939                    )
9940                }
9941                Self::StrategyNotWhitelisted(inner) => {
9942                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encoded_size(
9943                        inner,
9944                    )
9945                }
9946                Self::StringTooLong(inner) => {
9947                    <StringTooLong as alloy_sol_types::SolError>::abi_encoded_size(inner)
9948                }
9949            }
9950        }
9951        #[inline]
9952        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9953            match self {
9954                Self::CurrentlyPaused(inner) => {
9955                    <CurrentlyPaused as alloy_sol_types::SolError>::abi_encode_raw(
9956                        inner,
9957                        out,
9958                    )
9959                }
9960                Self::InputAddressZero(inner) => {
9961                    <InputAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
9962                        inner,
9963                        out,
9964                    )
9965                }
9966                Self::InvalidNewPausedStatus(inner) => {
9967                    <InvalidNewPausedStatus as alloy_sol_types::SolError>::abi_encode_raw(
9968                        inner,
9969                        out,
9970                    )
9971                }
9972                Self::InvalidShortString(inner) => {
9973                    <InvalidShortString as alloy_sol_types::SolError>::abi_encode_raw(
9974                        inner,
9975                        out,
9976                    )
9977                }
9978                Self::InvalidSignature(inner) => {
9979                    <InvalidSignature as alloy_sol_types::SolError>::abi_encode_raw(
9980                        inner,
9981                        out,
9982                    )
9983                }
9984                Self::MaxStrategiesExceeded(inner) => {
9985                    <MaxStrategiesExceeded as alloy_sol_types::SolError>::abi_encode_raw(
9986                        inner,
9987                        out,
9988                    )
9989                }
9990                Self::OnlyDelegationManager(inner) => {
9991                    <OnlyDelegationManager as alloy_sol_types::SolError>::abi_encode_raw(
9992                        inner,
9993                        out,
9994                    )
9995                }
9996                Self::OnlyPauser(inner) => {
9997                    <OnlyPauser as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
9998                }
9999                Self::OnlyStrategyWhitelister(inner) => {
10000                    <OnlyStrategyWhitelister as alloy_sol_types::SolError>::abi_encode_raw(
10001                        inner,
10002                        out,
10003                    )
10004                }
10005                Self::OnlyUnpauser(inner) => {
10006                    <OnlyUnpauser as alloy_sol_types::SolError>::abi_encode_raw(
10007                        inner,
10008                        out,
10009                    )
10010                }
10011                Self::SharesAmountTooHigh(inner) => {
10012                    <SharesAmountTooHigh as alloy_sol_types::SolError>::abi_encode_raw(
10013                        inner,
10014                        out,
10015                    )
10016                }
10017                Self::SharesAmountZero(inner) => {
10018                    <SharesAmountZero as alloy_sol_types::SolError>::abi_encode_raw(
10019                        inner,
10020                        out,
10021                    )
10022                }
10023                Self::SignatureExpired(inner) => {
10024                    <SignatureExpired as alloy_sol_types::SolError>::abi_encode_raw(
10025                        inner,
10026                        out,
10027                    )
10028                }
10029                Self::StakerAddressZero(inner) => {
10030                    <StakerAddressZero as alloy_sol_types::SolError>::abi_encode_raw(
10031                        inner,
10032                        out,
10033                    )
10034                }
10035                Self::StrategyNotFound(inner) => {
10036                    <StrategyNotFound as alloy_sol_types::SolError>::abi_encode_raw(
10037                        inner,
10038                        out,
10039                    )
10040                }
10041                Self::StrategyNotWhitelisted(inner) => {
10042                    <StrategyNotWhitelisted as alloy_sol_types::SolError>::abi_encode_raw(
10043                        inner,
10044                        out,
10045                    )
10046                }
10047                Self::StringTooLong(inner) => {
10048                    <StringTooLong as alloy_sol_types::SolError>::abi_encode_raw(
10049                        inner,
10050                        out,
10051                    )
10052                }
10053            }
10054        }
10055    }
10056    ///Container for all the [`StrategyManager`](self) events.
10057    #[derive(Debug, PartialEq, Eq, Hash)]
10058    pub enum StrategyManagerEvents {
10059        #[allow(missing_docs)]
10060        BurnableSharesDecreased(BurnableSharesDecreased),
10061        #[allow(missing_docs)]
10062        BurnableSharesIncreased(BurnableSharesIncreased),
10063        #[allow(missing_docs)]
10064        Deposit(Deposit),
10065        #[allow(missing_docs)]
10066        Initialized(Initialized),
10067        #[allow(missing_docs)]
10068        OwnershipTransferred(OwnershipTransferred),
10069        #[allow(missing_docs)]
10070        Paused(Paused),
10071        #[allow(missing_docs)]
10072        StrategyAddedToDepositWhitelist(StrategyAddedToDepositWhitelist),
10073        #[allow(missing_docs)]
10074        StrategyRemovedFromDepositWhitelist(StrategyRemovedFromDepositWhitelist),
10075        #[allow(missing_docs)]
10076        StrategyWhitelisterChanged(StrategyWhitelisterChanged),
10077        #[allow(missing_docs)]
10078        Unpaused(Unpaused),
10079    }
10080    #[automatically_derived]
10081    impl StrategyManagerEvents {
10082        /// All the selectors of this enum.
10083        ///
10084        /// Note that the selectors might not be in the same order as the variants.
10085        /// No guarantees are made about the order of the selectors.
10086        ///
10087        /// Prefer using `SolInterface` methods instead.
10088        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10089            [
10090                12u8, 53u8, 177u8, 125u8, 145u8, 201u8, 110u8, 178u8, 117u8, 28u8, 212u8,
10091                86u8, 225u8, 37u8, 47u8, 66u8, 163u8, 134u8, 229u8, 36u8, 239u8, 159u8,
10092                242u8, 110u8, 204u8, 153u8, 80u8, 133u8, 159u8, 220u8, 4u8, 254u8,
10093            ],
10094            [
10095                53u8, 130u8, 209u8, 130u8, 142u8, 38u8, 191u8, 86u8, 189u8, 128u8, 21u8,
10096                2u8, 188u8, 2u8, 26u8, 192u8, 188u8, 138u8, 251u8, 87u8, 200u8, 38u8,
10097                228u8, 152u8, 107u8, 69u8, 89u8, 60u8, 143u8, 173u8, 56u8, 156u8,
10098            ],
10099            [
10100                64u8, 116u8, 65u8, 59u8, 75u8, 68u8, 62u8, 78u8, 88u8, 1u8, 159u8, 40u8,
10101                85u8, 168u8, 118u8, 81u8, 19u8, 53u8, 140u8, 124u8, 114u8, 227u8, 149u8,
10102                9u8, 198u8, 175u8, 69u8, 252u8, 15u8, 91u8, 160u8, 48u8,
10103            ],
10104            [
10105                66u8, 100u8, 39u8, 94u8, 89u8, 57u8, 85u8, 255u8, 157u8, 97u8, 70u8,
10106                165u8, 26u8, 69u8, 37u8, 246u8, 221u8, 172u8, 226u8, 232u8, 29u8, 185u8,
10107                57u8, 26u8, 188u8, 201u8, 209u8, 202u8, 72u8, 4u8, 125u8, 41u8,
10108            ],
10109            [
10110                85u8, 72u8, 200u8, 55u8, 171u8, 6u8, 140u8, 245u8, 106u8, 44u8, 36u8,
10111                121u8, 223u8, 8u8, 130u8, 164u8, 146u8, 47u8, 210u8, 3u8, 237u8, 183u8,
10112                81u8, 115u8, 33u8, 131u8, 29u8, 149u8, 7u8, 140u8, 95u8, 98u8,
10113            ],
10114            [
10115                127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8,
10116                19u8, 56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8,
10117                146u8, 20u8, 96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
10118            ],
10119            [
10120                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
10121                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
10122                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10123            ],
10124            [
10125                171u8, 64u8, 163u8, 116u8, 188u8, 81u8, 222u8, 55u8, 34u8, 0u8, 168u8,
10126                188u8, 152u8, 26u8, 248u8, 201u8, 236u8, 220u8, 8u8, 223u8, 218u8, 239u8,
10127                11u8, 182u8, 224u8, 159u8, 136u8, 243u8, 198u8, 22u8, 239u8, 61u8,
10128            ],
10129            [
10130                202u8, 62u8, 2u8, 164u8, 171u8, 122u8, 211u8, 196u8, 122u8, 142u8, 54u8,
10131                229u8, 166u8, 36u8, 195u8, 1u8, 112u8, 121u8, 23u8, 38u8, 171u8, 114u8,
10132                15u8, 27u8, 171u8, 254u8, 242u8, 16u8, 70u8, 217u8, 83u8, 255u8,
10133            ],
10134            [
10135                217u8, 208u8, 130u8, 195u8, 236u8, 79u8, 58u8, 63u8, 250u8, 85u8, 195u8,
10136                36u8, 147u8, 154u8, 6u8, 64u8, 127u8, 95u8, 188u8, 184u8, 125u8, 94u8,
10137                12u8, 227u8, 185u8, 80u8, 140u8, 146u8, 200u8, 78u8, 216u8, 57u8,
10138            ],
10139        ];
10140    }
10141    #[automatically_derived]
10142    impl alloy_sol_types::SolEventInterface for StrategyManagerEvents {
10143        const NAME: &'static str = "StrategyManagerEvents";
10144        const COUNT: usize = 10usize;
10145        fn decode_raw_log(
10146            topics: &[alloy_sol_types::Word],
10147            data: &[u8],
10148            validate: bool,
10149        ) -> alloy_sol_types::Result<Self> {
10150            match topics.first().copied() {
10151                Some(
10152                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10153                ) => {
10154                    <BurnableSharesDecreased as alloy_sol_types::SolEvent>::decode_raw_log(
10155                            topics,
10156                            data,
10157                            validate,
10158                        )
10159                        .map(Self::BurnableSharesDecreased)
10160                }
10161                Some(
10162                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10163                ) => {
10164                    <BurnableSharesIncreased as alloy_sol_types::SolEvent>::decode_raw_log(
10165                            topics,
10166                            data,
10167                            validate,
10168                        )
10169                        .map(Self::BurnableSharesIncreased)
10170                }
10171                Some(<Deposit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10172                    <Deposit as alloy_sol_types::SolEvent>::decode_raw_log(
10173                            topics,
10174                            data,
10175                            validate,
10176                        )
10177                        .map(Self::Deposit)
10178                }
10179                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10180                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10181                            topics,
10182                            data,
10183                            validate,
10184                        )
10185                        .map(Self::Initialized)
10186                }
10187                Some(
10188                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10189                ) => {
10190                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10191                            topics,
10192                            data,
10193                            validate,
10194                        )
10195                        .map(Self::OwnershipTransferred)
10196                }
10197                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10198                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(
10199                            topics,
10200                            data,
10201                            validate,
10202                        )
10203                        .map(Self::Paused)
10204                }
10205                Some(
10206                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10207                ) => {
10208                    <StrategyAddedToDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
10209                            topics,
10210                            data,
10211                            validate,
10212                        )
10213                        .map(Self::StrategyAddedToDepositWhitelist)
10214                }
10215                Some(
10216                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10217                ) => {
10218                    <StrategyRemovedFromDepositWhitelist as alloy_sol_types::SolEvent>::decode_raw_log(
10219                            topics,
10220                            data,
10221                            validate,
10222                        )
10223                        .map(Self::StrategyRemovedFromDepositWhitelist)
10224                }
10225                Some(
10226                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10227                ) => {
10228                    <StrategyWhitelisterChanged as alloy_sol_types::SolEvent>::decode_raw_log(
10229                            topics,
10230                            data,
10231                            validate,
10232                        )
10233                        .map(Self::StrategyWhitelisterChanged)
10234                }
10235                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10236                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(
10237                            topics,
10238                            data,
10239                            validate,
10240                        )
10241                        .map(Self::Unpaused)
10242                }
10243                _ => {
10244                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10245                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10246                        log: alloy_sol_types::private::Box::new(
10247                            alloy_sol_types::private::LogData::new_unchecked(
10248                                topics.to_vec(),
10249                                data.to_vec().into(),
10250                            ),
10251                        ),
10252                    })
10253                }
10254            }
10255        }
10256    }
10257    #[automatically_derived]
10258    impl alloy_sol_types::private::IntoLogData for StrategyManagerEvents {
10259        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10260            match self {
10261                Self::BurnableSharesDecreased(inner) => {
10262                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10263                }
10264                Self::BurnableSharesIncreased(inner) => {
10265                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10266                }
10267                Self::Deposit(inner) => {
10268                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10269                }
10270                Self::Initialized(inner) => {
10271                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10272                }
10273                Self::OwnershipTransferred(inner) => {
10274                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10275                }
10276                Self::Paused(inner) => {
10277                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10278                }
10279                Self::StrategyAddedToDepositWhitelist(inner) => {
10280                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10281                }
10282                Self::StrategyRemovedFromDepositWhitelist(inner) => {
10283                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10284                }
10285                Self::StrategyWhitelisterChanged(inner) => {
10286                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10287                }
10288                Self::Unpaused(inner) => {
10289                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10290                }
10291            }
10292        }
10293        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10294            match self {
10295                Self::BurnableSharesDecreased(inner) => {
10296                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10297                }
10298                Self::BurnableSharesIncreased(inner) => {
10299                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10300                }
10301                Self::Deposit(inner) => {
10302                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10303                }
10304                Self::Initialized(inner) => {
10305                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10306                }
10307                Self::OwnershipTransferred(inner) => {
10308                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10309                }
10310                Self::Paused(inner) => {
10311                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10312                }
10313                Self::StrategyAddedToDepositWhitelist(inner) => {
10314                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10315                }
10316                Self::StrategyRemovedFromDepositWhitelist(inner) => {
10317                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10318                }
10319                Self::StrategyWhitelisterChanged(inner) => {
10320                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10321                }
10322                Self::Unpaused(inner) => {
10323                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10324                }
10325            }
10326        }
10327    }
10328    use alloy::contract as alloy_contract;
10329    /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
10330
10331See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
10332    #[inline]
10333    pub const fn new<
10334        T: alloy_contract::private::Transport + ::core::clone::Clone,
10335        P: alloy_contract::private::Provider<T, N>,
10336        N: alloy_contract::private::Network,
10337    >(
10338        address: alloy_sol_types::private::Address,
10339        provider: P,
10340    ) -> StrategyManagerInstance<T, P, N> {
10341        StrategyManagerInstance::<T, P, N>::new(address, provider)
10342    }
10343    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10344
10345Returns a new instance of the contract, if the deployment was successful.
10346
10347For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10348    #[inline]
10349    pub fn deploy<
10350        T: alloy_contract::private::Transport + ::core::clone::Clone,
10351        P: alloy_contract::private::Provider<T, N>,
10352        N: alloy_contract::private::Network,
10353    >(
10354        provider: P,
10355        _delegation: alloy::sol_types::private::Address,
10356        _pauserRegistry: alloy::sol_types::private::Address,
10357        _version: alloy::sol_types::private::String,
10358    ) -> impl ::core::future::Future<
10359        Output = alloy_contract::Result<StrategyManagerInstance<T, P, N>>,
10360    > {
10361        StrategyManagerInstance::<
10362            T,
10363            P,
10364            N,
10365        >::deploy(provider, _delegation, _pauserRegistry, _version)
10366    }
10367    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10368and constructor arguments, if any.
10369
10370This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10371the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10372    #[inline]
10373    pub fn deploy_builder<
10374        T: alloy_contract::private::Transport + ::core::clone::Clone,
10375        P: alloy_contract::private::Provider<T, N>,
10376        N: alloy_contract::private::Network,
10377    >(
10378        provider: P,
10379        _delegation: alloy::sol_types::private::Address,
10380        _pauserRegistry: alloy::sol_types::private::Address,
10381        _version: alloy::sol_types::private::String,
10382    ) -> alloy_contract::RawCallBuilder<T, P, N> {
10383        StrategyManagerInstance::<
10384            T,
10385            P,
10386            N,
10387        >::deploy_builder(provider, _delegation, _pauserRegistry, _version)
10388    }
10389    /**A [`StrategyManager`](self) instance.
10390
10391Contains type-safe methods for interacting with an on-chain instance of the
10392[`StrategyManager`](self) contract located at a given `address`, using a given
10393provider `P`.
10394
10395If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10396documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10397be used to deploy a new instance of the contract.
10398
10399See the [module-level documentation](self) for all the available methods.*/
10400    #[derive(Clone)]
10401    pub struct StrategyManagerInstance<T, P, N = alloy_contract::private::Ethereum> {
10402        address: alloy_sol_types::private::Address,
10403        provider: P,
10404        _network_transport: ::core::marker::PhantomData<(N, T)>,
10405    }
10406    #[automatically_derived]
10407    impl<T, P, N> ::core::fmt::Debug for StrategyManagerInstance<T, P, N> {
10408        #[inline]
10409        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10410            f.debug_tuple("StrategyManagerInstance").field(&self.address).finish()
10411        }
10412    }
10413    /// Instantiation and getters/setters.
10414    #[automatically_derived]
10415    impl<
10416        T: alloy_contract::private::Transport + ::core::clone::Clone,
10417        P: alloy_contract::private::Provider<T, N>,
10418        N: alloy_contract::private::Network,
10419    > StrategyManagerInstance<T, P, N> {
10420        /**Creates a new wrapper around an on-chain [`StrategyManager`](self) contract instance.
10421
10422See the [wrapper's documentation](`StrategyManagerInstance`) for more details.*/
10423        #[inline]
10424        pub const fn new(
10425            address: alloy_sol_types::private::Address,
10426            provider: P,
10427        ) -> Self {
10428            Self {
10429                address,
10430                provider,
10431                _network_transport: ::core::marker::PhantomData,
10432            }
10433        }
10434        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10435
10436Returns a new instance of the contract, if the deployment was successful.
10437
10438For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10439        #[inline]
10440        pub async fn deploy(
10441            provider: P,
10442            _delegation: alloy::sol_types::private::Address,
10443            _pauserRegistry: alloy::sol_types::private::Address,
10444            _version: alloy::sol_types::private::String,
10445        ) -> alloy_contract::Result<StrategyManagerInstance<T, P, N>> {
10446            let call_builder = Self::deploy_builder(
10447                provider,
10448                _delegation,
10449                _pauserRegistry,
10450                _version,
10451            );
10452            let contract_address = call_builder.deploy().await?;
10453            Ok(Self::new(contract_address, call_builder.provider))
10454        }
10455        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10456and constructor arguments, if any.
10457
10458This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10459the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10460        #[inline]
10461        pub fn deploy_builder(
10462            provider: P,
10463            _delegation: alloy::sol_types::private::Address,
10464            _pauserRegistry: alloy::sol_types::private::Address,
10465            _version: alloy::sol_types::private::String,
10466        ) -> alloy_contract::RawCallBuilder<T, P, N> {
10467            alloy_contract::RawCallBuilder::new_raw_deploy(
10468                provider,
10469                [
10470                    &BYTECODE[..],
10471                    &alloy_sol_types::SolConstructor::abi_encode(
10472                        &constructorCall {
10473                            _delegation,
10474                            _pauserRegistry,
10475                            _version,
10476                        },
10477                    )[..],
10478                ]
10479                    .concat()
10480                    .into(),
10481            )
10482        }
10483        /// Returns a reference to the address.
10484        #[inline]
10485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10486            &self.address
10487        }
10488        /// Sets the address.
10489        #[inline]
10490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10491            self.address = address;
10492        }
10493        /// Sets the address and returns `self`.
10494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10495            self.set_address(address);
10496            self
10497        }
10498        /// Returns a reference to the provider.
10499        #[inline]
10500        pub const fn provider(&self) -> &P {
10501            &self.provider
10502        }
10503    }
10504    impl<T, P: ::core::clone::Clone, N> StrategyManagerInstance<T, &P, N> {
10505        /// Clones the provider and returns a new instance with the cloned provider.
10506        #[inline]
10507        pub fn with_cloned_provider(self) -> StrategyManagerInstance<T, P, N> {
10508            StrategyManagerInstance {
10509                address: self.address,
10510                provider: ::core::clone::Clone::clone(&self.provider),
10511                _network_transport: ::core::marker::PhantomData,
10512            }
10513        }
10514    }
10515    /// Function calls.
10516    #[automatically_derived]
10517    impl<
10518        T: alloy_contract::private::Transport + ::core::clone::Clone,
10519        P: alloy_contract::private::Provider<T, N>,
10520        N: alloy_contract::private::Network,
10521    > StrategyManagerInstance<T, P, N> {
10522        /// Creates a new call builder using this contract instance's provider and address.
10523        ///
10524        /// Note that the call can be any function call, not just those defined in this
10525        /// contract. Prefer using the other methods for building type-safe contract calls.
10526        pub fn call_builder<C: alloy_sol_types::SolCall>(
10527            &self,
10528            call: &C,
10529        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
10530            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10531        }
10532        ///Creates a new call builder for the [`DEFAULT_BURN_ADDRESS`] function.
10533        pub fn DEFAULT_BURN_ADDRESS(
10534            &self,
10535        ) -> alloy_contract::SolCallBuilder<T, &P, DEFAULT_BURN_ADDRESSCall, N> {
10536            self.call_builder(&DEFAULT_BURN_ADDRESSCall {})
10537        }
10538        ///Creates a new call builder for the [`DEPOSIT_TYPEHASH`] function.
10539        pub fn DEPOSIT_TYPEHASH(
10540            &self,
10541        ) -> alloy_contract::SolCallBuilder<T, &P, DEPOSIT_TYPEHASHCall, N> {
10542            self.call_builder(&DEPOSIT_TYPEHASHCall {})
10543        }
10544        ///Creates a new call builder for the [`addShares`] function.
10545        pub fn addShares(
10546            &self,
10547            staker: alloy::sol_types::private::Address,
10548            strategy: alloy::sol_types::private::Address,
10549            shares: alloy::sol_types::private::primitives::aliases::U256,
10550        ) -> alloy_contract::SolCallBuilder<T, &P, addSharesCall, N> {
10551            self.call_builder(
10552                &addSharesCall {
10553                    staker,
10554                    strategy,
10555                    shares,
10556                },
10557            )
10558        }
10559        ///Creates a new call builder for the [`addStrategiesToDepositWhitelist`] function.
10560        pub fn addStrategiesToDepositWhitelist(
10561            &self,
10562            strategiesToWhitelist: alloy::sol_types::private::Vec<
10563                alloy::sol_types::private::Address,
10564            >,
10565        ) -> alloy_contract::SolCallBuilder<
10566            T,
10567            &P,
10568            addStrategiesToDepositWhitelistCall,
10569            N,
10570        > {
10571            self.call_builder(
10572                &addStrategiesToDepositWhitelistCall {
10573                    strategiesToWhitelist,
10574                },
10575            )
10576        }
10577        ///Creates a new call builder for the [`burnShares`] function.
10578        pub fn burnShares(
10579            &self,
10580            strategy: alloy::sol_types::private::Address,
10581        ) -> alloy_contract::SolCallBuilder<T, &P, burnSharesCall, N> {
10582            self.call_builder(&burnSharesCall { strategy })
10583        }
10584        ///Creates a new call builder for the [`calculateStrategyDepositDigestHash`] function.
10585        pub fn calculateStrategyDepositDigestHash(
10586            &self,
10587            staker: alloy::sol_types::private::Address,
10588            strategy: alloy::sol_types::private::Address,
10589            token: alloy::sol_types::private::Address,
10590            amount: alloy::sol_types::private::primitives::aliases::U256,
10591            nonce: alloy::sol_types::private::primitives::aliases::U256,
10592            expiry: alloy::sol_types::private::primitives::aliases::U256,
10593        ) -> alloy_contract::SolCallBuilder<
10594            T,
10595            &P,
10596            calculateStrategyDepositDigestHashCall,
10597            N,
10598        > {
10599            self.call_builder(
10600                &calculateStrategyDepositDigestHashCall {
10601                    staker,
10602                    strategy,
10603                    token,
10604                    amount,
10605                    nonce,
10606                    expiry,
10607                },
10608            )
10609        }
10610        ///Creates a new call builder for the [`delegation`] function.
10611        pub fn delegation(
10612            &self,
10613        ) -> alloy_contract::SolCallBuilder<T, &P, delegationCall, N> {
10614            self.call_builder(&delegationCall {})
10615        }
10616        ///Creates a new call builder for the [`depositIntoStrategy`] function.
10617        pub fn depositIntoStrategy(
10618            &self,
10619            strategy: alloy::sol_types::private::Address,
10620            token: alloy::sol_types::private::Address,
10621            amount: alloy::sol_types::private::primitives::aliases::U256,
10622        ) -> alloy_contract::SolCallBuilder<T, &P, depositIntoStrategyCall, N> {
10623            self.call_builder(
10624                &depositIntoStrategyCall {
10625                    strategy,
10626                    token,
10627                    amount,
10628                },
10629            )
10630        }
10631        ///Creates a new call builder for the [`depositIntoStrategyWithSignature`] function.
10632        pub fn depositIntoStrategyWithSignature(
10633            &self,
10634            strategy: alloy::sol_types::private::Address,
10635            token: alloy::sol_types::private::Address,
10636            amount: alloy::sol_types::private::primitives::aliases::U256,
10637            staker: alloy::sol_types::private::Address,
10638            expiry: alloy::sol_types::private::primitives::aliases::U256,
10639            signature: alloy::sol_types::private::Bytes,
10640        ) -> alloy_contract::SolCallBuilder<
10641            T,
10642            &P,
10643            depositIntoStrategyWithSignatureCall,
10644            N,
10645        > {
10646            self.call_builder(
10647                &depositIntoStrategyWithSignatureCall {
10648                    strategy,
10649                    token,
10650                    amount,
10651                    staker,
10652                    expiry,
10653                    signature,
10654                },
10655            )
10656        }
10657        ///Creates a new call builder for the [`domainSeparator`] function.
10658        pub fn domainSeparator(
10659            &self,
10660        ) -> alloy_contract::SolCallBuilder<T, &P, domainSeparatorCall, N> {
10661            self.call_builder(&domainSeparatorCall {})
10662        }
10663        ///Creates a new call builder for the [`getBurnableShares`] function.
10664        pub fn getBurnableShares(
10665            &self,
10666            strategy: alloy::sol_types::private::Address,
10667        ) -> alloy_contract::SolCallBuilder<T, &P, getBurnableSharesCall, N> {
10668            self.call_builder(&getBurnableSharesCall { strategy })
10669        }
10670        ///Creates a new call builder for the [`getDeposits`] function.
10671        pub fn getDeposits(
10672            &self,
10673            staker: alloy::sol_types::private::Address,
10674        ) -> alloy_contract::SolCallBuilder<T, &P, getDepositsCall, N> {
10675            self.call_builder(&getDepositsCall { staker })
10676        }
10677        ///Creates a new call builder for the [`getStakerStrategyList`] function.
10678        pub fn getStakerStrategyList(
10679            &self,
10680            staker: alloy::sol_types::private::Address,
10681        ) -> alloy_contract::SolCallBuilder<T, &P, getStakerStrategyListCall, N> {
10682            self.call_builder(
10683                &getStakerStrategyListCall {
10684                    staker,
10685                },
10686            )
10687        }
10688        ///Creates a new call builder for the [`getStrategiesWithBurnableShares`] function.
10689        pub fn getStrategiesWithBurnableShares(
10690            &self,
10691        ) -> alloy_contract::SolCallBuilder<
10692            T,
10693            &P,
10694            getStrategiesWithBurnableSharesCall,
10695            N,
10696        > {
10697            self.call_builder(
10698                &getStrategiesWithBurnableSharesCall {
10699                },
10700            )
10701        }
10702        ///Creates a new call builder for the [`increaseBurnableShares`] function.
10703        pub fn increaseBurnableShares(
10704            &self,
10705            strategy: alloy::sol_types::private::Address,
10706            addedSharesToBurn: alloy::sol_types::private::primitives::aliases::U256,
10707        ) -> alloy_contract::SolCallBuilder<T, &P, increaseBurnableSharesCall, N> {
10708            self.call_builder(
10709                &increaseBurnableSharesCall {
10710                    strategy,
10711                    addedSharesToBurn,
10712                },
10713            )
10714        }
10715        ///Creates a new call builder for the [`initialize`] function.
10716        pub fn initialize(
10717            &self,
10718            initialOwner: alloy::sol_types::private::Address,
10719            initialStrategyWhitelister: alloy::sol_types::private::Address,
10720            initialPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
10721        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
10722            self.call_builder(
10723                &initializeCall {
10724                    initialOwner,
10725                    initialStrategyWhitelister,
10726                    initialPausedStatus,
10727                },
10728            )
10729        }
10730        ///Creates a new call builder for the [`nonces`] function.
10731        pub fn nonces(
10732            &self,
10733            signer: alloy::sol_types::private::Address,
10734        ) -> alloy_contract::SolCallBuilder<T, &P, noncesCall, N> {
10735            self.call_builder(&noncesCall { signer })
10736        }
10737        ///Creates a new call builder for the [`owner`] function.
10738        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
10739            self.call_builder(&ownerCall {})
10740        }
10741        ///Creates a new call builder for the [`pause`] function.
10742        pub fn pause(
10743            &self,
10744            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
10745        ) -> alloy_contract::SolCallBuilder<T, &P, pauseCall, N> {
10746            self.call_builder(&pauseCall { newPausedStatus })
10747        }
10748        ///Creates a new call builder for the [`pauseAll`] function.
10749        pub fn pauseAll(
10750            &self,
10751        ) -> alloy_contract::SolCallBuilder<T, &P, pauseAllCall, N> {
10752            self.call_builder(&pauseAllCall {})
10753        }
10754        ///Creates a new call builder for the [`paused_0`] function.
10755        pub fn paused_0(
10756            &self,
10757            index: u8,
10758        ) -> alloy_contract::SolCallBuilder<T, &P, paused_0Call, N> {
10759            self.call_builder(&paused_0Call { index })
10760        }
10761        ///Creates a new call builder for the [`paused_1`] function.
10762        pub fn paused_1(
10763            &self,
10764        ) -> alloy_contract::SolCallBuilder<T, &P, paused_1Call, N> {
10765            self.call_builder(&paused_1Call {})
10766        }
10767        ///Creates a new call builder for the [`pauserRegistry`] function.
10768        pub fn pauserRegistry(
10769            &self,
10770        ) -> alloy_contract::SolCallBuilder<T, &P, pauserRegistryCall, N> {
10771            self.call_builder(&pauserRegistryCall {})
10772        }
10773        ///Creates a new call builder for the [`removeDepositShares`] function.
10774        pub fn removeDepositShares(
10775            &self,
10776            staker: alloy::sol_types::private::Address,
10777            strategy: alloy::sol_types::private::Address,
10778            depositSharesToRemove: alloy::sol_types::private::primitives::aliases::U256,
10779        ) -> alloy_contract::SolCallBuilder<T, &P, removeDepositSharesCall, N> {
10780            self.call_builder(
10781                &removeDepositSharesCall {
10782                    staker,
10783                    strategy,
10784                    depositSharesToRemove,
10785                },
10786            )
10787        }
10788        ///Creates a new call builder for the [`removeStrategiesFromDepositWhitelist`] function.
10789        pub fn removeStrategiesFromDepositWhitelist(
10790            &self,
10791            strategiesToRemoveFromWhitelist: alloy::sol_types::private::Vec<
10792                alloy::sol_types::private::Address,
10793            >,
10794        ) -> alloy_contract::SolCallBuilder<
10795            T,
10796            &P,
10797            removeStrategiesFromDepositWhitelistCall,
10798            N,
10799        > {
10800            self.call_builder(
10801                &removeStrategiesFromDepositWhitelistCall {
10802                    strategiesToRemoveFromWhitelist,
10803                },
10804            )
10805        }
10806        ///Creates a new call builder for the [`renounceOwnership`] function.
10807        pub fn renounceOwnership(
10808            &self,
10809        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
10810            self.call_builder(&renounceOwnershipCall {})
10811        }
10812        ///Creates a new call builder for the [`setStrategyWhitelister`] function.
10813        pub fn setStrategyWhitelister(
10814            &self,
10815            newStrategyWhitelister: alloy::sol_types::private::Address,
10816        ) -> alloy_contract::SolCallBuilder<T, &P, setStrategyWhitelisterCall, N> {
10817            self.call_builder(
10818                &setStrategyWhitelisterCall {
10819                    newStrategyWhitelister,
10820                },
10821            )
10822        }
10823        ///Creates a new call builder for the [`stakerDepositShares`] function.
10824        pub fn stakerDepositShares(
10825            &self,
10826            staker: alloy::sol_types::private::Address,
10827            strategy: alloy::sol_types::private::Address,
10828        ) -> alloy_contract::SolCallBuilder<T, &P, stakerDepositSharesCall, N> {
10829            self.call_builder(
10830                &stakerDepositSharesCall {
10831                    staker,
10832                    strategy,
10833                },
10834            )
10835        }
10836        ///Creates a new call builder for the [`stakerStrategyList`] function.
10837        pub fn stakerStrategyList(
10838            &self,
10839            staker: alloy::sol_types::private::Address,
10840            _1: alloy::sol_types::private::primitives::aliases::U256,
10841        ) -> alloy_contract::SolCallBuilder<T, &P, stakerStrategyListCall, N> {
10842            self.call_builder(
10843                &stakerStrategyListCall {
10844                    staker,
10845                    _1,
10846                },
10847            )
10848        }
10849        ///Creates a new call builder for the [`stakerStrategyListLength`] function.
10850        pub fn stakerStrategyListLength(
10851            &self,
10852            staker: alloy::sol_types::private::Address,
10853        ) -> alloy_contract::SolCallBuilder<T, &P, stakerStrategyListLengthCall, N> {
10854            self.call_builder(
10855                &stakerStrategyListLengthCall {
10856                    staker,
10857                },
10858            )
10859        }
10860        ///Creates a new call builder for the [`strategyIsWhitelistedForDeposit`] function.
10861        pub fn strategyIsWhitelistedForDeposit(
10862            &self,
10863            strategy: alloy::sol_types::private::Address,
10864        ) -> alloy_contract::SolCallBuilder<
10865            T,
10866            &P,
10867            strategyIsWhitelistedForDepositCall,
10868            N,
10869        > {
10870            self.call_builder(
10871                &strategyIsWhitelistedForDepositCall {
10872                    strategy,
10873                },
10874            )
10875        }
10876        ///Creates a new call builder for the [`strategyWhitelister`] function.
10877        pub fn strategyWhitelister(
10878            &self,
10879        ) -> alloy_contract::SolCallBuilder<T, &P, strategyWhitelisterCall, N> {
10880            self.call_builder(&strategyWhitelisterCall {})
10881        }
10882        ///Creates a new call builder for the [`transferOwnership`] function.
10883        pub fn transferOwnership(
10884            &self,
10885            newOwner: alloy::sol_types::private::Address,
10886        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
10887            self.call_builder(&transferOwnershipCall { newOwner })
10888        }
10889        ///Creates a new call builder for the [`unpause`] function.
10890        pub fn unpause(
10891            &self,
10892            newPausedStatus: alloy::sol_types::private::primitives::aliases::U256,
10893        ) -> alloy_contract::SolCallBuilder<T, &P, unpauseCall, N> {
10894            self.call_builder(&unpauseCall { newPausedStatus })
10895        }
10896        ///Creates a new call builder for the [`version`] function.
10897        pub fn version(&self) -> alloy_contract::SolCallBuilder<T, &P, versionCall, N> {
10898            self.call_builder(&versionCall {})
10899        }
10900        ///Creates a new call builder for the [`withdrawSharesAsTokens`] function.
10901        pub fn withdrawSharesAsTokens(
10902            &self,
10903            staker: alloy::sol_types::private::Address,
10904            strategy: alloy::sol_types::private::Address,
10905            token: alloy::sol_types::private::Address,
10906            shares: alloy::sol_types::private::primitives::aliases::U256,
10907        ) -> alloy_contract::SolCallBuilder<T, &P, withdrawSharesAsTokensCall, N> {
10908            self.call_builder(
10909                &withdrawSharesAsTokensCall {
10910                    staker,
10911                    strategy,
10912                    token,
10913                    shares,
10914                },
10915            )
10916        }
10917    }
10918    /// Event filters.
10919    #[automatically_derived]
10920    impl<
10921        T: alloy_contract::private::Transport + ::core::clone::Clone,
10922        P: alloy_contract::private::Provider<T, N>,
10923        N: alloy_contract::private::Network,
10924    > StrategyManagerInstance<T, P, N> {
10925        /// Creates a new event filter using this contract instance's provider and address.
10926        ///
10927        /// Note that the type can be any event, not just those defined in this contract.
10928        /// Prefer using the other methods for building type-safe event filters.
10929        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10930            &self,
10931        ) -> alloy_contract::Event<T, &P, E, N> {
10932            alloy_contract::Event::new_sol(&self.provider, &self.address)
10933        }
10934        ///Creates a new event filter for the [`BurnableSharesDecreased`] event.
10935        pub fn BurnableSharesDecreased_filter(
10936            &self,
10937        ) -> alloy_contract::Event<T, &P, BurnableSharesDecreased, N> {
10938            self.event_filter::<BurnableSharesDecreased>()
10939        }
10940        ///Creates a new event filter for the [`BurnableSharesIncreased`] event.
10941        pub fn BurnableSharesIncreased_filter(
10942            &self,
10943        ) -> alloy_contract::Event<T, &P, BurnableSharesIncreased, N> {
10944            self.event_filter::<BurnableSharesIncreased>()
10945        }
10946        ///Creates a new event filter for the [`Deposit`] event.
10947        pub fn Deposit_filter(&self) -> alloy_contract::Event<T, &P, Deposit, N> {
10948            self.event_filter::<Deposit>()
10949        }
10950        ///Creates a new event filter for the [`Initialized`] event.
10951        pub fn Initialized_filter(
10952            &self,
10953        ) -> alloy_contract::Event<T, &P, Initialized, N> {
10954            self.event_filter::<Initialized>()
10955        }
10956        ///Creates a new event filter for the [`OwnershipTransferred`] event.
10957        pub fn OwnershipTransferred_filter(
10958            &self,
10959        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
10960            self.event_filter::<OwnershipTransferred>()
10961        }
10962        ///Creates a new event filter for the [`Paused`] event.
10963        pub fn Paused_filter(&self) -> alloy_contract::Event<T, &P, Paused, N> {
10964            self.event_filter::<Paused>()
10965        }
10966        ///Creates a new event filter for the [`StrategyAddedToDepositWhitelist`] event.
10967        pub fn StrategyAddedToDepositWhitelist_filter(
10968            &self,
10969        ) -> alloy_contract::Event<T, &P, StrategyAddedToDepositWhitelist, N> {
10970            self.event_filter::<StrategyAddedToDepositWhitelist>()
10971        }
10972        ///Creates a new event filter for the [`StrategyRemovedFromDepositWhitelist`] event.
10973        pub fn StrategyRemovedFromDepositWhitelist_filter(
10974            &self,
10975        ) -> alloy_contract::Event<T, &P, StrategyRemovedFromDepositWhitelist, N> {
10976            self.event_filter::<StrategyRemovedFromDepositWhitelist>()
10977        }
10978        ///Creates a new event filter for the [`StrategyWhitelisterChanged`] event.
10979        pub fn StrategyWhitelisterChanged_filter(
10980            &self,
10981        ) -> alloy_contract::Event<T, &P, StrategyWhitelisterChanged, N> {
10982            self.event_filter::<StrategyWhitelisterChanged>()
10983        }
10984        ///Creates a new event filter for the [`Unpaused`] event.
10985        pub fn Unpaused_filter(&self) -> alloy_contract::Event<T, &P, Unpaused, N> {
10986            self.event_filter::<Unpaused>()
10987        }
10988    }
10989}