eigenlayer_contract_deployer/bindings/core/
transparent_upgradeable_proxy.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use TransparentUpgradeableProxy::*;
3
4/**
5
6Generated by the following Solidity interface...
7```solidity
8interface TransparentUpgradeableProxy {
9    event AdminChanged(address previousAdmin, address newAdmin);
10    event BeaconUpgraded(address indexed beacon);
11    event Upgraded(address indexed implementation);
12
13    constructor(address _logic, address admin_, bytes _data) payable;
14
15    fallback() external payable;
16
17    receive() external payable;
18}
19```
20
21...which was generated by the following JSON ABI:
22```json
23[
24  {
25    "type": "constructor",
26    "inputs": [
27      {
28        "name": "_logic",
29        "type": "address",
30        "internalType": "address"
31      },
32      {
33        "name": "admin_",
34        "type": "address",
35        "internalType": "address"
36      },
37      {
38        "name": "_data",
39        "type": "bytes",
40        "internalType": "bytes"
41      }
42    ],
43    "stateMutability": "payable"
44  },
45  {
46    "type": "fallback",
47    "stateMutability": "payable"
48  },
49  {
50    "type": "receive",
51    "stateMutability": "payable"
52  },
53  {
54    "type": "event",
55    "name": "AdminChanged",
56    "inputs": [
57      {
58        "name": "previousAdmin",
59        "type": "address",
60        "indexed": false,
61        "internalType": "address"
62      },
63      {
64        "name": "newAdmin",
65        "type": "address",
66        "indexed": false,
67        "internalType": "address"
68      }
69    ],
70    "anonymous": false
71  },
72  {
73    "type": "event",
74    "name": "BeaconUpgraded",
75    "inputs": [
76      {
77        "name": "beacon",
78        "type": "address",
79        "indexed": true,
80        "internalType": "address"
81      }
82    ],
83    "anonymous": false
84  },
85  {
86    "type": "event",
87    "name": "Upgraded",
88    "inputs": [
89      {
90        "name": "implementation",
91        "type": "address",
92        "indexed": true,
93        "internalType": "address"
94      }
95    ],
96    "anonymous": false
97  }
98]
99```*/
100#[allow(
101    non_camel_case_types,
102    non_snake_case,
103    clippy::pub_underscore_fields,
104    clippy::style,
105    clippy::empty_structs_with_brackets
106)]
107pub mod TransparentUpgradeableProxy {
108    use super::*;
109    use alloy::sol_types as alloy_sol_types;
110    /// The creation / init bytecode of the contract.
111    ///
112    /// ```text
113    ///0x6080604052604051610dbd380380610dbd833981016040819052610022916103e5565b828161002f82825f610043565b5061003b90508261006e565b505050610502565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f516020610d765f395f51905f52546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610d9660279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f516020610d765f395f51905f525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f5f856001600160a01b03168560405161029191906104b5565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104d0565b80516001600160a01b03811681146103aa575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156103dd5781810151838201526020016103c5565b50505f910152565b5f5f5f606084860312156103f7575f5ffd5b61040084610394565b925061040e60208501610394565b60408501519092506001600160401b03811115610429575f5ffd5b8401601f81018613610439575f5ffd5b80516001600160401b03811115610452576104526103af565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610480576104806103af565b604052818152828201602001881015610497575f5ffd5b6104a88260208301602086016103c3565b8093505050509250925092565b5f82516104c68184602087016103c3565b9190910192915050565b602081525f82518060208401526104ee8160408501602087016103c3565b601f01601f19169190910160400192915050565b6108678061050f5f395ff3fe60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df838360405180606001604052806027815260200161080b6027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b03168560405161056691906107bd565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107d8565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5b838110156107b557818101518382015260200161079d565b50505f910152565b5f82516107ce81846020870161079b565b9190910192915050565b602081525f82518060208401526107f681604085016020870161079b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207c8e1cf553d5827cbe731410e5f5c017588ebe041ecdebfba86ce3c131ff794c64736f6c634300081b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564
114    /// ```
115    #[rustfmt::skip]
116    #[allow(clippy::all)]
117    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
118        b"`\x80`@R`@Qa\r\xBD8\x03\x80a\r\xBD\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x03\xE5V[\x82\x81a\0/\x82\x82_a\0CV[Pa\0;\x90P\x82a\0nV[PPPa\x05\x02V[a\0L\x83a\0\xDBV[_\x82Q\x11\x80a\0XWP\x80[\x15a\0iWa\0g\x83\x83a\x01\x1AV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\0\xAD_Q` a\rv_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\0\xD8\x81a\x01FV[PV[a\0\xE4\x81a\x01\xE1V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x01?\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\r\x96`'\x919a\x02uV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\xB0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[\x80_Q` a\rv_9_Q\x90_R[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02NW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01\xA7V[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\xC0V[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x02\x91\x91\x90a\x04\xB5V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x02\xC9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\xCEV[``\x91P[P\x90\x92P\x90Pa\x02\xE0\x86\x83\x83\x87a\x02\xEAV[\x96\x95PPPPPPV[``\x83\x15a\x03XW\x82Q_\x03a\x03QW`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x03QW`@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\x01\xA7V[P\x81a\x03bV[a\x03b\x83\x83a\x03jV[\x94\x93PPPPV[\x81Q\x15a\x03zW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01\xA7\x91\x90a\x04\xD0V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x03\xAAW__\xFD[\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x03\xDDW\x81\x81\x01Q\x83\x82\x01R` \x01a\x03\xC5V[PP_\x91\x01RV[___``\x84\x86\x03\x12\x15a\x03\xF7W__\xFD[a\x04\0\x84a\x03\x94V[\x92Pa\x04\x0E` \x85\x01a\x03\x94V[`@\x85\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04)W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x049W__\xFD[\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x04RWa\x04Ra\x03\xAFV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x04\x80Wa\x04\x80a\x03\xAFV[`@R\x81\x81R\x82\x82\x01` \x01\x88\x10\x15a\x04\x97W__\xFD[a\x04\xA8\x82` \x83\x01` \x86\x01a\x03\xC3V[\x80\x93PPPP\x92P\x92P\x92V[_\x82Qa\x04\xC6\x81\x84` \x87\x01a\x03\xC3V[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x04\xEE\x81`@\x85\x01` \x87\x01a\x03\xC3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[a\x08g\x80a\x05\x0F_9_\xF3\xFE`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0\x1Fa\x01hV[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01^W```\x01`\x01`\xE0\x1B\x03\x19_5\x16cd\xD3\x18\r`\xE1\x1B\x81\x01a\0YWa\0Ra\x01\x9AV[\x91Pa\x01VV[cXp\x86\xBD`\xE1\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0yWa\0Ra\x01\xEDV[c\x07\r|i`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\x99Wa\0Ra\x021V[b\x1E\xB9o`\xE6\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xB8Wa\0Ra\x02aV[c\xA3\x9F%\xE5`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xD8Wa\0Ra\x02\xA0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01\xF3[a\x01fa\x02\xB3V[V[_\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[``a\x01\xA4a\x02\xC3V[_a\x01\xB26`\x04\x81\x84a\x06hV[\x81\x01\x90a\x01\xBF\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x02\xCDV[PP`@\x80Q` \x81\x01\x90\x91R_\x81R\x90V[``_\x80a\x01\xFE6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02\x0B\x91\x90a\x06\xD7V[\x91P\x91Pa\x02\x1B\x82\x82`\x01a\x02\xCDV[`@Q\x80` \x01`@R\x80_\x81RP\x92PPP\x90V[``a\x02;a\x02\xC3V[_a\x02I6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02V\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81a\x02\xF8V[``a\x02ka\x02\xC3V[_a\x02ta\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``a\x02\xAAa\x02\xC3V[_a\x02ta\x03OV[a\x01fa\x02\xBEa\x03OV[a\x03]V[4\x15a\x01fW__\xFD[a\x02\xD6\x83a\x03{V[_\x82Q\x11\x80a\x02\xE2WP\x80[\x15a\x02\xF3Wa\x02\xF1\x83\x83a\x03\xBAV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03!a\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x03L\x81a\x03\xE6V[PV[_a\x03Xa\x04\x8FV[\x90P\x90V[6__7__6_\x84Z\xF4=__>\x80\x80\x15a\x03wW=_\xF3[=_\xFD[a\x03\x84\x81a\x04\xB6V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x03\xDF\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x05JV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x05#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04nV[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05f\x91\x90a\x07\xBDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x05\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\xA3V[``\x91P[P\x91P\x91Pa\x05\xB4\x86\x83\x83\x87a\x05\xBEV[\x96\x95PPPPPPV[``\x83\x15a\x06,W\x82Q_\x03a\x06%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x06%W`@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\x01MV[P\x81a\x066V[a\x066\x83\x83a\x06>V[\x94\x93PPPPV[\x81Q\x15a\x06NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01M\x91\x90a\x07\xD8V[__\x85\x85\x11\x15a\x06vW__\xFD[\x83\x86\x11\x15a\x06\x82W__\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xA5W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\xBAW__\xFD[a\x03\xDF\x82a\x06\x8FV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__`@\x83\x85\x03\x12\x15a\x06\xE8W__\xFD[a\x06\xF1\x83a\x06\x8FV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x0CW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x07\x1CW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x076Wa\x076a\x06\xC3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07eWa\x07ea\x06\xC3V[`@R\x81\x81R\x82\x82\x01` \x01\x87\x10\x15a\x07|W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x07\xB5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x9DV[PP_\x91\x01RV[_\x82Qa\x07\xCE\x81\x84` \x87\x01a\x07\x9BV[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x9BV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 |\x8E\x1C\xF5S\xD5\x82|\xBEs\x14\x10\xE5\xF5\xC0\x17X\x8E\xBE\x04\x1E\xCD\xEB\xFB\xA8l\xE3\xC11\xFFyLdsolcC\0\x08\x1B\x003\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03Address: low-level delegate call failed",
119    );
120    /// The runtime bytecode of the contract, as deployed on the network.
121    ///
122    /// ```text
123    ///0x60806040523661001357610011610017565b005b6100115b61001f610168565b6001600160a01b0316330361015e5760606001600160e01b03195f35166364d3180d60e11b81016100595761005261019a565b9150610156565b63587086bd60e11b6001600160e01b0319821601610079576100526101ed565b63070d7c6960e41b6001600160e01b031982160161009957610052610231565b621eb96f60e61b6001600160e01b03198216016100b857610052610261565b63a39f25e560e01b6001600160e01b03198216016100d8576100526102a0565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101666102b3565b565b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101a46102c3565b5f6101b23660048184610668565b8101906101bf91906106aa565b90506101da8160405180602001604052805f8152505f6102cd565b505060408051602081019091525f815290565b60605f806101fe3660048184610668565b81019061020b91906106d7565b9150915061021b828260016102cd565b60405180602001604052805f8152509250505090565b606061023b6102c3565b5f6102493660048184610668565b81019061025691906106aa565b90506101da816102f8565b606061026b6102c3565b5f610274610168565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102aa6102c3565b5f61027461034f565b6101666102be61034f565b61035d565b3415610166575f5ffd5b6102d68361037b565b5f825111806102e25750805b156102f3576102f183836103ba565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610321610168565b604080516001600160a01b03928316815291841660208301520160405180910390a161034c816103e6565b50565b5f61035861048f565b905090565b365f5f375f5f365f845af43d5f5f3e808015610377573d5ff35b3d5ffd5b610384816104b6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606103df838360405180606001604052806027815260200161080b6027913961054a565b9392505050565b6001600160a01b03811661044b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014d565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61018b565b6001600160a01b0381163b6105235760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014d565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61046e565b60605f5f856001600160a01b03168560405161056691906107bd565b5f60405180830381855af49150503d805f811461059e576040519150601f19603f3d011682016040523d82523d5f602084013e6105a3565b606091505b50915091506105b4868383876105be565b9695505050505050565b6060831561062c5782515f03610625576001600160a01b0385163b6106255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014d565b5081610636565b610636838361063e565b949350505050565b81511561064e5781518083602001fd5b8060405162461bcd60e51b815260040161014d91906107d8565b5f5f85851115610676575f5ffd5b83861115610682575f5ffd5b5050820193919092039150565b80356001600160a01b03811681146106a5575f5ffd5b919050565b5f602082840312156106ba575f5ffd5b6103df8261068f565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156106e8575f5ffd5b6106f18361068f565b9150602083013567ffffffffffffffff81111561070c575f5ffd5b8301601f8101851361071c575f5ffd5b803567ffffffffffffffff811115610736576107366106c3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610765576107656106c3565b60405281815282820160200187101561077c575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5b838110156107b557818101518382015260200161079d565b50505f910152565b5f82516107ce81846020870161079b565b9190910192915050565b602081525f82518060208401526107f681604085016020870161079b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207c8e1cf553d5827cbe731410e5f5c017588ebe041ecdebfba86ce3c131ff794c64736f6c634300081b0033
124    /// ```
125    #[rustfmt::skip]
126    #[allow(clippy::all)]
127    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
128        b"`\x80`@R6a\0\x13Wa\0\x11a\0\x17V[\0[a\0\x11[a\0\x1Fa\x01hV[`\x01`\x01`\xA0\x1B\x03\x163\x03a\x01^W```\x01`\x01`\xE0\x1B\x03\x19_5\x16cd\xD3\x18\r`\xE1\x1B\x81\x01a\0YWa\0Ra\x01\x9AV[\x91Pa\x01VV[cXp\x86\xBD`\xE1\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0yWa\0Ra\x01\xEDV[c\x07\r|i`\xE4\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\x99Wa\0Ra\x021V[b\x1E\xB9o`\xE6\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xB8Wa\0Ra\x02aV[c\xA3\x9F%\xE5`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x82\x16\x01a\0\xD8Wa\0Ra\x02\xA0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FTransparentUpgradeableProxy: adm`D\x82\x01R\x7Fin cannot fallback to proxy targ`d\x82\x01Ra\x19]`\xF2\x1B`\x84\x82\x01R`\xA4\x01[`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01\xF3[a\x01fa\x02\xB3V[V[_\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[T`\x01`\x01`\xA0\x1B\x03\x16\x91\x90PV[``a\x01\xA4a\x02\xC3V[_a\x01\xB26`\x04\x81\x84a\x06hV[\x81\x01\x90a\x01\xBF\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81`@Q\x80` \x01`@R\x80_\x81RP_a\x02\xCDV[PP`@\x80Q` \x81\x01\x90\x91R_\x81R\x90V[``_\x80a\x01\xFE6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02\x0B\x91\x90a\x06\xD7V[\x91P\x91Pa\x02\x1B\x82\x82`\x01a\x02\xCDV[`@Q\x80` \x01`@R\x80_\x81RP\x92PPP\x90V[``a\x02;a\x02\xC3V[_a\x02I6`\x04\x81\x84a\x06hV[\x81\x01\x90a\x02V\x91\x90a\x06\xAAV[\x90Pa\x01\xDA\x81a\x02\xF8V[``a\x02ka\x02\xC3V[_a\x02ta\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x91PP\x90V[``a\x02\xAAa\x02\xC3V[_a\x02ta\x03OV[a\x01fa\x02\xBEa\x03OV[a\x03]V[4\x15a\x01fW__\xFD[a\x02\xD6\x83a\x03{V[_\x82Q\x11\x80a\x02\xE2WP\x80[\x15a\x02\xF3Wa\x02\xF1\x83\x83a\x03\xBAV[P[PPPV[\x7F~dMyB/\x17\xC0\x1EH\x94\xB5\xF4\xF5\x88\xD31\xEB\xFA(e=B\xAE\x83-\xC5\x9E8\xC9y\x8Fa\x03!a\x01hV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x92\x83\x16\x81R\x91\x84\x16` \x83\x01R\x01`@Q\x80\x91\x03\x90\xA1a\x03L\x81a\x03\xE6V[PV[_a\x03Xa\x04\x8FV[\x90P\x90V[6__7__6_\x84Z\xF4=__>\x80\x80\x15a\x03wW=_\xF3[=_\xFD[a\x03\x84\x81a\x04\xB6V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[``a\x03\xDF\x83\x83`@Q\x80``\x01`@R\x80`'\x81R` \x01a\x08\x0B`'\x919a\x05JV[\x93\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x04KW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FERC1967: new admin is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F\xB51'hJV\x8B1s\xAE\x13\xB9\xF8\xA6\x01n$>c\xB6\xE8\xEE\x11x\xD6\xA7\x17\x85\x0B]a\x03[\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UPV[_\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x05#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`-`$\x82\x01R\x7FERC1967: new implementation is n`D\x82\x01Rl\x1B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`\x9A\x1B`d\x82\x01R`\x84\x01a\x01MV[\x80\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCa\x04nV[``__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85`@Qa\x05f\x91\x90a\x07\xBDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x05\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\xA3V[``\x91P[P\x91P\x91Pa\x05\xB4\x86\x83\x83\x87a\x05\xBEV[\x96\x95PPPPPPV[``\x83\x15a\x06,W\x82Q_\x03a\x06%W`\x01`\x01`\xA0\x1B\x03\x85\x16;a\x06%W`@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\x01MV[P\x81a\x066V[a\x066\x83\x83a\x06>V[\x94\x93PPPPV[\x81Q\x15a\x06NW\x81Q\x80\x83` \x01\xFD[\x80`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01M\x91\x90a\x07\xD8V[__\x85\x85\x11\x15a\x06vW__\xFD[\x83\x86\x11\x15a\x06\x82W__\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\xA5W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x06\xBAW__\xFD[a\x03\xDF\x82a\x06\x8FV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[__`@\x83\x85\x03\x12\x15a\x06\xE8W__\xFD[a\x06\xF1\x83a\x06\x8FV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x0CW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x07\x1CW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x076Wa\x076a\x06\xC3V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07eWa\x07ea\x06\xC3V[`@R\x81\x81R\x82\x82\x01` \x01\x87\x10\x15a\x07|W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x07\xB5W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\x9DV[PP_\x91\x01RV[_\x82Qa\x07\xCE\x81\x84` \x87\x01a\x07\x9BV[\x91\x90\x91\x01\x92\x91PPV[` \x81R_\x82Q\x80` \x84\x01Ra\x07\xF6\x81`@\x85\x01` \x87\x01a\x07\x9BV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFEAddress: low-level delegate call failed\xA2dipfsX\"\x12 |\x8E\x1C\xF5S\xD5\x82|\xBEs\x14\x10\xE5\xF5\xC0\x17X\x8E\xBE\x04\x1E\xCD\xEB\xFB\xA8l\xE3\xC11\xFFyLdsolcC\0\x08\x1B\x003",
129    );
130    #[derive(serde::Serialize, serde::Deserialize)]
131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
132    /**Event with signature `AdminChanged(address,address)` and selector `0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f`.
133```solidity
134event AdminChanged(address previousAdmin, address newAdmin);
135```*/
136    #[allow(
137        non_camel_case_types,
138        non_snake_case,
139        clippy::pub_underscore_fields,
140        clippy::style
141    )]
142    #[derive(Clone)]
143    pub struct AdminChanged {
144        #[allow(missing_docs)]
145        pub previousAdmin: alloy::sol_types::private::Address,
146        #[allow(missing_docs)]
147        pub newAdmin: alloy::sol_types::private::Address,
148    }
149    #[allow(
150        non_camel_case_types,
151        non_snake_case,
152        clippy::pub_underscore_fields,
153        clippy::style
154    )]
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::SolEvent for AdminChanged {
159            type DataTuple<'a> = (
160                alloy::sol_types::sol_data::Address,
161                alloy::sol_types::sol_data::Address,
162            );
163            type DataToken<'a> = <Self::DataTuple<
164                'a,
165            > as alloy_sol_types::SolType>::Token<'a>;
166            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
167            const SIGNATURE: &'static str = "AdminChanged(address,address)";
168            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
169                126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8,
170                181u8, 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8,
171                66u8, 174u8, 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8,
172            ]);
173            const ANONYMOUS: bool = false;
174            #[allow(unused_variables)]
175            #[inline]
176            fn new(
177                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
178                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
179            ) -> Self {
180                Self {
181                    previousAdmin: data.0,
182                    newAdmin: data.1,
183                }
184            }
185            #[inline]
186            fn check_signature(
187                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
188            ) -> alloy_sol_types::Result<()> {
189                if topics.0 != Self::SIGNATURE_HASH {
190                    return Err(
191                        alloy_sol_types::Error::invalid_event_signature_hash(
192                            Self::SIGNATURE,
193                            topics.0,
194                            Self::SIGNATURE_HASH,
195                        ),
196                    );
197                }
198                Ok(())
199            }
200            #[inline]
201            fn tokenize_body(&self) -> Self::DataToken<'_> {
202                (
203                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
204                        &self.previousAdmin,
205                    ),
206                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
207                        &self.newAdmin,
208                    ),
209                )
210            }
211            #[inline]
212            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
213                (Self::SIGNATURE_HASH.into(),)
214            }
215            #[inline]
216            fn encode_topics_raw(
217                &self,
218                out: &mut [alloy_sol_types::abi::token::WordToken],
219            ) -> alloy_sol_types::Result<()> {
220                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
221                    return Err(alloy_sol_types::Error::Overrun);
222                }
223                out[0usize] = alloy_sol_types::abi::token::WordToken(
224                    Self::SIGNATURE_HASH,
225                );
226                Ok(())
227            }
228        }
229        #[automatically_derived]
230        impl alloy_sol_types::private::IntoLogData for AdminChanged {
231            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
232                From::from(self)
233            }
234            fn into_log_data(self) -> alloy_sol_types::private::LogData {
235                From::from(&self)
236            }
237        }
238        #[automatically_derived]
239        impl From<&AdminChanged> for alloy_sol_types::private::LogData {
240            #[inline]
241            fn from(this: &AdminChanged) -> alloy_sol_types::private::LogData {
242                alloy_sol_types::SolEvent::encode_log_data(this)
243            }
244        }
245    };
246    #[derive(serde::Serialize, serde::Deserialize)]
247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
248    /**Event with signature `BeaconUpgraded(address)` and selector `0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e`.
249```solidity
250event BeaconUpgraded(address indexed beacon);
251```*/
252    #[allow(
253        non_camel_case_types,
254        non_snake_case,
255        clippy::pub_underscore_fields,
256        clippy::style
257    )]
258    #[derive(Clone)]
259    pub struct BeaconUpgraded {
260        #[allow(missing_docs)]
261        pub beacon: alloy::sol_types::private::Address,
262    }
263    #[allow(
264        non_camel_case_types,
265        non_snake_case,
266        clippy::pub_underscore_fields,
267        clippy::style
268    )]
269    const _: () = {
270        use alloy::sol_types as alloy_sol_types;
271        #[automatically_derived]
272        impl alloy_sol_types::SolEvent for BeaconUpgraded {
273            type DataTuple<'a> = ();
274            type DataToken<'a> = <Self::DataTuple<
275                'a,
276            > as alloy_sol_types::SolType>::Token<'a>;
277            type TopicList = (
278                alloy_sol_types::sol_data::FixedBytes<32>,
279                alloy::sol_types::sol_data::Address,
280            );
281            const SIGNATURE: &'static str = "BeaconUpgraded(address)";
282            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
283                28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8,
284                241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8,
285                132u8, 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8,
286            ]);
287            const ANONYMOUS: bool = false;
288            #[allow(unused_variables)]
289            #[inline]
290            fn new(
291                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
292                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
293            ) -> Self {
294                Self { beacon: topics.1 }
295            }
296            #[inline]
297            fn check_signature(
298                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
299            ) -> alloy_sol_types::Result<()> {
300                if topics.0 != Self::SIGNATURE_HASH {
301                    return Err(
302                        alloy_sol_types::Error::invalid_event_signature_hash(
303                            Self::SIGNATURE,
304                            topics.0,
305                            Self::SIGNATURE_HASH,
306                        ),
307                    );
308                }
309                Ok(())
310            }
311            #[inline]
312            fn tokenize_body(&self) -> Self::DataToken<'_> {
313                ()
314            }
315            #[inline]
316            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
317                (Self::SIGNATURE_HASH.into(), self.beacon.clone())
318            }
319            #[inline]
320            fn encode_topics_raw(
321                &self,
322                out: &mut [alloy_sol_types::abi::token::WordToken],
323            ) -> alloy_sol_types::Result<()> {
324                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
325                    return Err(alloy_sol_types::Error::Overrun);
326                }
327                out[0usize] = alloy_sol_types::abi::token::WordToken(
328                    Self::SIGNATURE_HASH,
329                );
330                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
331                    &self.beacon,
332                );
333                Ok(())
334            }
335        }
336        #[automatically_derived]
337        impl alloy_sol_types::private::IntoLogData for BeaconUpgraded {
338            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
339                From::from(self)
340            }
341            fn into_log_data(self) -> alloy_sol_types::private::LogData {
342                From::from(&self)
343            }
344        }
345        #[automatically_derived]
346        impl From<&BeaconUpgraded> for alloy_sol_types::private::LogData {
347            #[inline]
348            fn from(this: &BeaconUpgraded) -> alloy_sol_types::private::LogData {
349                alloy_sol_types::SolEvent::encode_log_data(this)
350            }
351        }
352    };
353    #[derive(serde::Serialize, serde::Deserialize)]
354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
355    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
356```solidity
357event Upgraded(address indexed implementation);
358```*/
359    #[allow(
360        non_camel_case_types,
361        non_snake_case,
362        clippy::pub_underscore_fields,
363        clippy::style
364    )]
365    #[derive(Clone)]
366    pub struct Upgraded {
367        #[allow(missing_docs)]
368        pub implementation: alloy::sol_types::private::Address,
369    }
370    #[allow(
371        non_camel_case_types,
372        non_snake_case,
373        clippy::pub_underscore_fields,
374        clippy::style
375    )]
376    const _: () = {
377        use alloy::sol_types as alloy_sol_types;
378        #[automatically_derived]
379        impl alloy_sol_types::SolEvent for Upgraded {
380            type DataTuple<'a> = ();
381            type DataToken<'a> = <Self::DataTuple<
382                'a,
383            > as alloy_sol_types::SolType>::Token<'a>;
384            type TopicList = (
385                alloy_sol_types::sol_data::FixedBytes<32>,
386                alloy::sol_types::sol_data::Address,
387            );
388            const SIGNATURE: &'static str = "Upgraded(address)";
389            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
390                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
391                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
392                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
393            ]);
394            const ANONYMOUS: bool = false;
395            #[allow(unused_variables)]
396            #[inline]
397            fn new(
398                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
399                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
400            ) -> Self {
401                Self { implementation: topics.1 }
402            }
403            #[inline]
404            fn check_signature(
405                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
406            ) -> alloy_sol_types::Result<()> {
407                if topics.0 != Self::SIGNATURE_HASH {
408                    return Err(
409                        alloy_sol_types::Error::invalid_event_signature_hash(
410                            Self::SIGNATURE,
411                            topics.0,
412                            Self::SIGNATURE_HASH,
413                        ),
414                    );
415                }
416                Ok(())
417            }
418            #[inline]
419            fn tokenize_body(&self) -> Self::DataToken<'_> {
420                ()
421            }
422            #[inline]
423            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
424                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
425            }
426            #[inline]
427            fn encode_topics_raw(
428                &self,
429                out: &mut [alloy_sol_types::abi::token::WordToken],
430            ) -> alloy_sol_types::Result<()> {
431                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
432                    return Err(alloy_sol_types::Error::Overrun);
433                }
434                out[0usize] = alloy_sol_types::abi::token::WordToken(
435                    Self::SIGNATURE_HASH,
436                );
437                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
438                    &self.implementation,
439                );
440                Ok(())
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::private::IntoLogData for Upgraded {
445            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
446                From::from(self)
447            }
448            fn into_log_data(self) -> alloy_sol_types::private::LogData {
449                From::from(&self)
450            }
451        }
452        #[automatically_derived]
453        impl From<&Upgraded> for alloy_sol_types::private::LogData {
454            #[inline]
455            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
456                alloy_sol_types::SolEvent::encode_log_data(this)
457            }
458        }
459    };
460    /**Constructor`.
461```solidity
462constructor(address _logic, address admin_, bytes _data) payable;
463```*/
464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
465    #[derive(Clone)]
466    pub struct constructorCall {
467        #[allow(missing_docs)]
468        pub _logic: alloy::sol_types::private::Address,
469        #[allow(missing_docs)]
470        pub admin_: alloy::sol_types::private::Address,
471        #[allow(missing_docs)]
472        pub _data: alloy::sol_types::private::Bytes,
473    }
474    const _: () = {
475        use alloy::sol_types as alloy_sol_types;
476        {
477            #[doc(hidden)]
478            type UnderlyingSolTuple<'a> = (
479                alloy::sol_types::sol_data::Address,
480                alloy::sol_types::sol_data::Address,
481                alloy::sol_types::sol_data::Bytes,
482            );
483            #[doc(hidden)]
484            type UnderlyingRustTuple<'a> = (
485                alloy::sol_types::private::Address,
486                alloy::sol_types::private::Address,
487                alloy::sol_types::private::Bytes,
488            );
489            #[cfg(test)]
490            #[allow(dead_code, unreachable_patterns)]
491            fn _type_assertion(
492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
493            ) {
494                match _t {
495                    alloy_sol_types::private::AssertTypeEq::<
496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
497                    >(_) => {}
498                }
499            }
500            #[automatically_derived]
501            #[doc(hidden)]
502            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
503                fn from(value: constructorCall) -> Self {
504                    (value._logic, value.admin_, value._data)
505                }
506            }
507            #[automatically_derived]
508            #[doc(hidden)]
509            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
511                    Self {
512                        _logic: tuple.0,
513                        admin_: tuple.1,
514                        _data: tuple.2,
515                    }
516                }
517            }
518        }
519        #[automatically_derived]
520        impl alloy_sol_types::SolConstructor for constructorCall {
521            type Parameters<'a> = (
522                alloy::sol_types::sol_data::Address,
523                alloy::sol_types::sol_data::Address,
524                alloy::sol_types::sol_data::Bytes,
525            );
526            type Token<'a> = <Self::Parameters<
527                'a,
528            > as alloy_sol_types::SolType>::Token<'a>;
529            #[inline]
530            fn new<'a>(
531                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
532            ) -> Self {
533                tuple.into()
534            }
535            #[inline]
536            fn tokenize(&self) -> Self::Token<'_> {
537                (
538                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
539                        &self._logic,
540                    ),
541                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
542                        &self.admin_,
543                    ),
544                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
545                        &self._data,
546                    ),
547                )
548            }
549        }
550    };
551    ///Container for all the [`TransparentUpgradeableProxy`](self) events.
552    #[derive(serde::Serialize, serde::Deserialize)]
553    #[derive(Debug, PartialEq, Eq, Hash)]
554    pub enum TransparentUpgradeableProxyEvents {
555        #[allow(missing_docs)]
556        AdminChanged(AdminChanged),
557        #[allow(missing_docs)]
558        BeaconUpgraded(BeaconUpgraded),
559        #[allow(missing_docs)]
560        Upgraded(Upgraded),
561    }
562    #[automatically_derived]
563    impl TransparentUpgradeableProxyEvents {
564        /// All the selectors of this enum.
565        ///
566        /// Note that the selectors might not be in the same order as the variants.
567        /// No guarantees are made about the order of the selectors.
568        ///
569        /// Prefer using `SolInterface` methods instead.
570        pub const SELECTORS: &'static [[u8; 32usize]] = &[
571            [
572                28u8, 243u8, 176u8, 58u8, 108u8, 241u8, 159u8, 162u8, 186u8, 186u8, 77u8,
573                241u8, 72u8, 233u8, 220u8, 171u8, 237u8, 234u8, 127u8, 138u8, 92u8, 7u8,
574                132u8, 14u8, 32u8, 126u8, 92u8, 8u8, 155u8, 233u8, 93u8, 62u8,
575            ],
576            [
577                126u8, 100u8, 77u8, 121u8, 66u8, 47u8, 23u8, 192u8, 30u8, 72u8, 148u8,
578                181u8, 244u8, 245u8, 136u8, 211u8, 49u8, 235u8, 250u8, 40u8, 101u8, 61u8,
579                66u8, 174u8, 131u8, 45u8, 197u8, 158u8, 56u8, 201u8, 121u8, 143u8,
580            ],
581            [
582                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
583                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
584                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
585            ],
586        ];
587    }
588    #[automatically_derived]
589    impl alloy_sol_types::SolEventInterface for TransparentUpgradeableProxyEvents {
590        const NAME: &'static str = "TransparentUpgradeableProxyEvents";
591        const COUNT: usize = 3usize;
592        fn decode_raw_log(
593            topics: &[alloy_sol_types::Word],
594            data: &[u8],
595        ) -> alloy_sol_types::Result<Self> {
596            match topics.first().copied() {
597                Some(<AdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
598                    <AdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
599                            topics,
600                            data,
601                        )
602                        .map(Self::AdminChanged)
603                }
604                Some(<BeaconUpgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
605                    <BeaconUpgraded as alloy_sol_types::SolEvent>::decode_raw_log(
606                            topics,
607                            data,
608                        )
609                        .map(Self::BeaconUpgraded)
610                }
611                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
612                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
613                        .map(Self::Upgraded)
614                }
615                _ => {
616                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
617                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
618                        log: alloy_sol_types::private::Box::new(
619                            alloy_sol_types::private::LogData::new_unchecked(
620                                topics.to_vec(),
621                                data.to_vec().into(),
622                            ),
623                        ),
624                    })
625                }
626            }
627        }
628    }
629    #[automatically_derived]
630    impl alloy_sol_types::private::IntoLogData for TransparentUpgradeableProxyEvents {
631        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
632            match self {
633                Self::AdminChanged(inner) => {
634                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
635                }
636                Self::BeaconUpgraded(inner) => {
637                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
638                }
639                Self::Upgraded(inner) => {
640                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
641                }
642            }
643        }
644        fn into_log_data(self) -> alloy_sol_types::private::LogData {
645            match self {
646                Self::AdminChanged(inner) => {
647                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
648                }
649                Self::BeaconUpgraded(inner) => {
650                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
651                }
652                Self::Upgraded(inner) => {
653                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
654                }
655            }
656        }
657    }
658    use alloy::contract as alloy_contract;
659    /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance.
660
661See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/
662    #[inline]
663    pub const fn new<
664        P: alloy_contract::private::Provider<N>,
665        N: alloy_contract::private::Network,
666    >(
667        address: alloy_sol_types::private::Address,
668        provider: P,
669    ) -> TransparentUpgradeableProxyInstance<P, N> {
670        TransparentUpgradeableProxyInstance::<P, N>::new(address, provider)
671    }
672    /**Deploys this contract using the given `provider` and constructor arguments, if any.
673
674Returns a new instance of the contract, if the deployment was successful.
675
676For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
677    #[inline]
678    pub fn deploy<
679        P: alloy_contract::private::Provider<N>,
680        N: alloy_contract::private::Network,
681    >(
682        provider: P,
683        _logic: alloy::sol_types::private::Address,
684        admin_: alloy::sol_types::private::Address,
685        _data: alloy::sol_types::private::Bytes,
686    ) -> impl ::core::future::Future<
687        Output = alloy_contract::Result<TransparentUpgradeableProxyInstance<P, N>>,
688    > {
689        TransparentUpgradeableProxyInstance::<
690            P,
691            N,
692        >::deploy(provider, _logic, admin_, _data)
693    }
694    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
695and constructor arguments, if any.
696
697This is a simple wrapper around creating a `RawCallBuilder` with the data set to
698the bytecode concatenated with the constructor's ABI-encoded arguments.*/
699    #[inline]
700    pub fn deploy_builder<
701        P: alloy_contract::private::Provider<N>,
702        N: alloy_contract::private::Network,
703    >(
704        provider: P,
705        _logic: alloy::sol_types::private::Address,
706        admin_: alloy::sol_types::private::Address,
707        _data: alloy::sol_types::private::Bytes,
708    ) -> alloy_contract::RawCallBuilder<P, N> {
709        TransparentUpgradeableProxyInstance::<
710            P,
711            N,
712        >::deploy_builder(provider, _logic, admin_, _data)
713    }
714    /**A [`TransparentUpgradeableProxy`](self) instance.
715
716Contains type-safe methods for interacting with an on-chain instance of the
717[`TransparentUpgradeableProxy`](self) contract located at a given `address`, using a given
718provider `P`.
719
720If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
721documentation on how to provide it), the `deploy` and `deploy_builder` methods can
722be used to deploy a new instance of the contract.
723
724See the [module-level documentation](self) for all the available methods.*/
725    #[derive(Clone)]
726    pub struct TransparentUpgradeableProxyInstance<
727        P,
728        N = alloy_contract::private::Ethereum,
729    > {
730        address: alloy_sol_types::private::Address,
731        provider: P,
732        _network: ::core::marker::PhantomData<N>,
733    }
734    #[automatically_derived]
735    impl<P, N> ::core::fmt::Debug for TransparentUpgradeableProxyInstance<P, N> {
736        #[inline]
737        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
738            f.debug_tuple("TransparentUpgradeableProxyInstance")
739                .field(&self.address)
740                .finish()
741        }
742    }
743    /// Instantiation and getters/setters.
744    #[automatically_derived]
745    impl<
746        P: alloy_contract::private::Provider<N>,
747        N: alloy_contract::private::Network,
748    > TransparentUpgradeableProxyInstance<P, N> {
749        /**Creates a new wrapper around an on-chain [`TransparentUpgradeableProxy`](self) contract instance.
750
751See the [wrapper's documentation](`TransparentUpgradeableProxyInstance`) for more details.*/
752        #[inline]
753        pub const fn new(
754            address: alloy_sol_types::private::Address,
755            provider: P,
756        ) -> Self {
757            Self {
758                address,
759                provider,
760                _network: ::core::marker::PhantomData,
761            }
762        }
763        /**Deploys this contract using the given `provider` and constructor arguments, if any.
764
765Returns a new instance of the contract, if the deployment was successful.
766
767For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
768        #[inline]
769        pub async fn deploy(
770            provider: P,
771            _logic: alloy::sol_types::private::Address,
772            admin_: alloy::sol_types::private::Address,
773            _data: alloy::sol_types::private::Bytes,
774        ) -> alloy_contract::Result<TransparentUpgradeableProxyInstance<P, N>> {
775            let call_builder = Self::deploy_builder(provider, _logic, admin_, _data);
776            let contract_address = call_builder.deploy().await?;
777            Ok(Self::new(contract_address, call_builder.provider))
778        }
779        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
780and constructor arguments, if any.
781
782This is a simple wrapper around creating a `RawCallBuilder` with the data set to
783the bytecode concatenated with the constructor's ABI-encoded arguments.*/
784        #[inline]
785        pub fn deploy_builder(
786            provider: P,
787            _logic: alloy::sol_types::private::Address,
788            admin_: alloy::sol_types::private::Address,
789            _data: alloy::sol_types::private::Bytes,
790        ) -> alloy_contract::RawCallBuilder<P, N> {
791            alloy_contract::RawCallBuilder::new_raw_deploy(
792                provider,
793                [
794                    &BYTECODE[..],
795                    &alloy_sol_types::SolConstructor::abi_encode(
796                        &constructorCall {
797                            _logic,
798                            admin_,
799                            _data,
800                        },
801                    )[..],
802                ]
803                    .concat()
804                    .into(),
805            )
806        }
807        /// Returns a reference to the address.
808        #[inline]
809        pub const fn address(&self) -> &alloy_sol_types::private::Address {
810            &self.address
811        }
812        /// Sets the address.
813        #[inline]
814        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
815            self.address = address;
816        }
817        /// Sets the address and returns `self`.
818        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
819            self.set_address(address);
820            self
821        }
822        /// Returns a reference to the provider.
823        #[inline]
824        pub const fn provider(&self) -> &P {
825            &self.provider
826        }
827    }
828    impl<P: ::core::clone::Clone, N> TransparentUpgradeableProxyInstance<&P, N> {
829        /// Clones the provider and returns a new instance with the cloned provider.
830        #[inline]
831        pub fn with_cloned_provider(self) -> TransparentUpgradeableProxyInstance<P, N> {
832            TransparentUpgradeableProxyInstance {
833                address: self.address,
834                provider: ::core::clone::Clone::clone(&self.provider),
835                _network: ::core::marker::PhantomData,
836            }
837        }
838    }
839    /// Function calls.
840    #[automatically_derived]
841    impl<
842        P: alloy_contract::private::Provider<N>,
843        N: alloy_contract::private::Network,
844    > TransparentUpgradeableProxyInstance<P, N> {
845        /// Creates a new call builder using this contract instance's provider and address.
846        ///
847        /// Note that the call can be any function call, not just those defined in this
848        /// contract. Prefer using the other methods for building type-safe contract calls.
849        pub fn call_builder<C: alloy_sol_types::SolCall>(
850            &self,
851            call: &C,
852        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
853            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
854        }
855    }
856    /// Event filters.
857    #[automatically_derived]
858    impl<
859        P: alloy_contract::private::Provider<N>,
860        N: alloy_contract::private::Network,
861    > TransparentUpgradeableProxyInstance<P, N> {
862        /// Creates a new event filter using this contract instance's provider and address.
863        ///
864        /// Note that the type can be any event, not just those defined in this contract.
865        /// Prefer using the other methods for building type-safe event filters.
866        pub fn event_filter<E: alloy_sol_types::SolEvent>(
867            &self,
868        ) -> alloy_contract::Event<&P, E, N> {
869            alloy_contract::Event::new_sol(&self.provider, &self.address)
870        }
871        ///Creates a new event filter for the [`AdminChanged`] event.
872        pub fn AdminChanged_filter(&self) -> alloy_contract::Event<&P, AdminChanged, N> {
873            self.event_filter::<AdminChanged>()
874        }
875        ///Creates a new event filter for the [`BeaconUpgraded`] event.
876        pub fn BeaconUpgraded_filter(
877            &self,
878        ) -> alloy_contract::Event<&P, BeaconUpgraded, N> {
879            self.event_filter::<BeaconUpgraded>()
880        }
881        ///Creates a new event filter for the [`Upgraded`] event.
882        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
883            self.event_filter::<Upgraded>()
884        }
885    }
886}