@ensuro/access-managed-proxy 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -166,8 +166,8 @@
166
166
  "type": "function"
167
167
  }
168
168
  ],
169
- "bytecode": "0x6080604052604051610b71380380610b71833981016040819052610022916105d9565b838381816100308282610055565b50505050610043826100b360201b60201c565b61004c8161014e565b50505050610719565b61005e826102ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100a7576100a28282610324565b505050565b6100af6103c5565b5050565b806001600160a01b03163b5f036100ed576040516361798f2f60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b805f516020610b515f395f51905f5280546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b80515f516020610b515f395f51905f52906001600160401b03811115610176576101766104f1565b60405190808252806020026020018201604052801561019f578160200160208202803683370190505b5080516101b691600184019160209091019061041d565b505f5b8251811015610272578281815181106101d4576101d46106b9565b60200260200101518260010182815481106101f1576101f16106b9565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610238576102386106b9565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016101b9565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b493826040516102a291906106cd565b60405180910390a15050565b806001600160a01b03163b5f036102e357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100e4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61033184846103e6565b905080801561035257505f3d118061035257505f846001600160a01b03163b115b156103675761035f6103f9565b9150506103bf565b801561039157604051639996b31560e01b81526001600160a01b03851660048201526024016100e4565b3d156103a45761039f610412565b6103bd565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156103e45760405163b398979f60e01b815260040160405180910390fd5b565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f20906007016008900481019282156104b6579160200282015f5b8382111561048457835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610443565b80156104b45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610484565b505b506104c29291506104c6565b5090565b5b808211156104c2575f81556001016104c7565b6001600160a01b03811681146104ee575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561052d5761052d6104f1565b604052919050565b8051610540816104da565b919050565b5f82601f830112610554575f5ffd5b81516001600160401b0381111561056d5761056d6104f1565b8060051b61057d60208201610505565b91825260208185018101929081019086841115610598575f5ffd5b6020860192505b838310156105cf5782516001600160e01b0319811681146105be575f5ffd5b82526020928301929091019061059f565b9695505050505050565b5f5f5f5f608085870312156105ec575f5ffd5b84516105f7816104da565b60208601519094506001600160401b03811115610612575f5ffd5b8501601f81018713610622575f5ffd5b80516001600160401b0381111561063b5761063b6104f1565b61064e601f8201601f1916602001610505565b818152886020838501011115610662575f5ffd5b8160208401602083015e5f6020838301015280955050505061068660408601610535565b60608601519092506001600160401b038111156106a1575f5ffd5b6106ad87828801610545565b91505092959194509250565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561070e5783516001600160e01b0319168352602093840193909201916001016106e6565b509095945050505050565b61042b806107265f395ff3fe608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610306565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f6101986102c1565b5f6101b46004823681610352565b6101bd91610379565b90505f610201826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b9050806102b35761021061015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa158015610269573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028d91906103b1565b509050806102b35760405162d1953b60e31b815233600482015260240160405180910390fd5b6102bc836102e8565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e808015610302573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103475783516001600160e01b03191683526020938401939092019160010161031f565b509095945050505050565b5f5f85851115610360575f5ffd5b8386111561036c575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156103aa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f604083850312156103c2575f5ffd5b825180151581146103d1575f5ffd5b602084015190925063ffffffff811681146103ea575f5ffd5b80915050925092905056fea2646970667358221220a53724b417b11a70a2da05697031896b3f5d2c87d33410b9e81321c4af06797364736f6c634300081e0033787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00",
170
- "deployedBytecode": "0x608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610306565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f6101986102c1565b5f6101b46004823681610352565b6101bd91610379565b90505f610201826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b9050806102b35761021061015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa158015610269573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028d91906103b1565b509050806102b35760405162d1953b60e31b815233600482015260240160405180910390fd5b6102bc836102e8565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e808015610302573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103475783516001600160e01b03191683526020938401939092019160010161031f565b509095945050505050565b5f5f85851115610360575f5ffd5b8386111561036c575f5ffd5b5050820193919092039150565b80356001600160e01b031981169060048410156103aa576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f604083850312156103c2575f5ffd5b825180151581146103d1575f5ffd5b602084015190925063ffffffff811681146103ea575f5ffd5b80915050925092905056fea2646970667358221220a53724b417b11a70a2da05697031896b3f5d2c87d33410b9e81321c4af06797364736f6c634300081e0033",
169
+ "bytecode": "0x6080604052604051610bcc380380610bcc833981016040819052610022916105d9565b838381816100308282610055565b50505050610043826100b360201b60201c565b61004c8161014e565b50505050610719565b61005e826102ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100a7576100a28282610324565b505050565b6100af6103c5565b5050565b806001600160a01b03163b5f036100ed576040516361798f2f60e11b81526001600160a01b03821660048201526024015b60405180910390fd5b805f516020610bac5f395f51905f5280546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b80515f516020610bac5f395f51905f52906001600160401b03811115610176576101766104f1565b60405190808252806020026020018201604052801561019f578160200160208202803683370190505b5080516101b691600184019160209091019061041d565b505f5b8251811015610272578281815181106101d4576101d46106b9565b60200260200101518260010182815481106101f1576101f16106b9565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610238576102386106b9565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016101b9565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b493826040516102a291906106cd565b60405180910390a15050565b806001600160a01b03163b5f036102e357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100e4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61033184846103e6565b905080801561035257505f3d118061035257505f846001600160a01b03163b115b156103675761035f6103f9565b9150506103bf565b801561039157604051639996b31560e01b81526001600160a01b03851660048201526024016100e4565b3d156103a45761039f610412565b6103bd565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156103e45760405163b398979f60e01b815260040160405180910390fd5b565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f20906007016008900481019282156104b6579160200282015f5b8382111561048457835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610443565b80156104b45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610484565b505b506104c29291506104c6565b5090565b5b808211156104c2575f81556001016104c7565b6001600160a01b03811681146104ee575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561052d5761052d6104f1565b604052919050565b8051610540816104da565b919050565b5f82601f830112610554575f5ffd5b81516001600160401b0381111561056d5761056d6104f1565b8060051b61057d60208201610505565b91825260208185018101929081019086841115610598575f5ffd5b6020860192505b838310156105cf5782516001600160e01b0319811681146105be575f5ffd5b82526020928301929091019061059f565b9695505050505050565b5f5f5f5f608085870312156105ec575f5ffd5b84516105f7816104da565b60208601519094506001600160401b03811115610612575f5ffd5b8501601f81018713610622575f5ffd5b80516001600160401b0381111561063b5761063b6104f1565b61064e601f8201601f1916602001610505565b818152886020838501011115610662575f5ffd5b8160208401602083015e5f6020838301015280955050505061068660408601610535565b60608601519092506001600160401b038111156106a1575f5ffd5b6106ad87828801610545565b91505092959194509250565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561070e5783516001600160e01b0319168352602093840193909201916001016106e6565b509095945050505050565b610486806107265f395ff3fe608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610361565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f61019861031c565b5f600436106101ca576101bc60045f36816103ad565b6101c5916103d4565b610218565b36156101f6577fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a010610218565b7fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b5b90505f61025c826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b90508061030e5761026b61015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa1580156102c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e8919061040c565b5090508061030e5760405162d1953b60e31b815233600482015260240160405180910390fd5b61031783610343565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e80801561035d573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103a25783516001600160e01b03191683526020938401939092019160010161037a565b509095945050505050565b5f5f858511156103bb575f5ffd5b838611156103c7575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610405576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f6040838503121561041d575f5ffd5b8251801515811461042c575f5ffd5b602084015190925063ffffffff81168114610445575f5ffd5b80915050925092905056fea2646970667358221220220703c58bc17c1cd0a67389ad5e2757901bf78298327186e13697caa56a8edd64736f6c634300081e0033787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00",
170
+ "deployedBytecode": "0x608060405260043610610033575f3560e01c806314416c031461003d5780633a7b7a3914610067578063bf7e214f14610093575b61003b6100a7565b005b348015610048575f5ffd5b506100516100b9565b60405161005e9190610361565b60405180910390f35b348015610072575f5ffd5b5061007b61015d565b6040516001600160a01b03909116815260200161005e565b34801561009e575f5ffd5b5061007b61018f565b6100b76100b261019d565b6101a6565b565b60607f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0060010180548060200260200160405190810160405280929190818152602001828054801561015357602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116101155790505b5050505050905090565b5f7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c005b546001600160a01b0316919050565b5f61019861015d565b905090565b5f61019861031c565b5f600436106101ca576101bc60045f36816103ad565b6101c5916103d4565b610218565b36156101f6577fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a010610218565b7fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b5b90505f61025c826001600160e01b0319165f9081527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c02602052604090205460ff1690565b90508061030e5761026b61015d565b60405163b700961360e01b81523360048201523060248201526001600160e01b0319841660448201526001600160a01b03919091169063b7009613906064016040805180830381865afa1580156102c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e8919061040c565b5090508061030e5760405162d1953b60e31b815233600482015260240160405180910390fd5b61031783610343565b505050565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610180565b365f5f375f5f365f845af43d5f5f3e80801561035d573d5ff35b3d5ffd5b602080825282518282018190525f918401906040840190835b818110156103a25783516001600160e01b03191683526020938401939092019160010161037a565b509095945050505050565b5f5f858511156103bb575f5ffd5b838611156103c7575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610405576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f6040838503121561041d575f5ffd5b8251801515811461042c575f5ffd5b602084015190925063ffffffff81168114610445575f5ffd5b80915050925092905056fea2646970667358221220220703c58bc17c1cd0a67389ad5e2757901bf78298327186e13697caa56a8edd64736f6c634300081e0033",
171
171
  "linkReferences": {},
172
172
  "deployedLinkReferences": {}
173
173
  }
@@ -127,6 +127,25 @@
127
127
  "name": "MethodCalled",
128
128
  "type": "event"
129
129
  },
130
+ {
131
+ "anonymous": false,
132
+ "inputs": [
133
+ {
134
+ "indexed": false,
135
+ "internalType": "bytes",
136
+ "name": "msgData",
137
+ "type": "bytes"
138
+ },
139
+ {
140
+ "indexed": false,
141
+ "internalType": "uint256",
142
+ "name": "value",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "name": "NonStandardMethodCalled",
147
+ "type": "event"
148
+ },
130
149
  {
131
150
  "anonymous": false,
132
151
  "inputs": [
@@ -153,6 +172,10 @@
153
172
  "name": "Upgraded",
154
173
  "type": "event"
155
174
  },
175
+ {
176
+ "stateMutability": "payable",
177
+ "type": "fallback"
178
+ },
156
179
  {
157
180
  "inputs": [],
158
181
  "name": "UPGRADE_INTERFACE_VERSION",
@@ -309,10 +332,14 @@
309
332
  ],
310
333
  "stateMutability": "view",
311
334
  "type": "function"
335
+ },
336
+ {
337
+ "stateMutability": "payable",
338
+ "type": "receive"
312
339
  }
313
340
  ],
314
- "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516110f86100f95f395f818161049f015281816104c8015261060b01526110f85ff3fe6080604052600436106100d9575f3560e01c80639ba7fcaa1161007c578063caa719a811610057578063caa719a814610206578063e68be8a91461021a578063fc7b17b91461022e578063fd07a75714610248575f5ffd5b80639ba7fcaa146101a0578063ad3cb1cc146101b5578063becf8b49146101f2575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638129fc1c1461014c5780638c01fde4146101605780638c3fce0e1461018c575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610df9565b610267565b005b3480156100fd575f5ffd5b5061010661027d565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f0610298565b348015610138575f5ffd5b506100f0610147366004610e46565b6102c6565b348015610157575f5ffd5b506100f06102d2565b34801561016b575f5ffd5b5061017f61017a366004610e68565b6103c1565b6040516101109190610ea2565b348015610197575f5ffd5b506100f06103fb565b3480156101ab575f5ffd5b506201e240610106565b3480156101c0575f5ffd5b506101e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610eb7565b3480156101fd575f5ffd5b506100f061041f565b348015610211575f5ffd5b506100f0610443565b348015610225575f5ffd5b506100f0610467565b348015610239575f5ffd5b50604051338152602001610110565b348015610253575f5ffd5b506100f0610262366004610eec565b61048b565b61026f610494565b610279828261053a565b5050565b5f610286610600565b505f5160206110a35f395f51905f5290565b6040515f5160206110835f395f51905f52906102bc906375a62cfb60e01b90610ea2565b60405180910390a1565b6102cf81610649565b50565b5f6102db6106f2565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156103025750825b90505f8267ffffffffffffffff16600114801561031e5750303b155b90508115801561032c575080155b1561034a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037457845460ff60401b1916600160401b1785555b83156103ba57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206103d2338261071c565b5f5160206110835f395f51905f52816040516103ee9190610ea2565b60405180910390a1919050565b6040515f5160206110835f395f51905f52906102bc9063461fe70760e11b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063becf8b4960e01b90610ea2565b6040515f5160206110835f395f51905f52906102bc90631954e33560e31b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063e68be8a960e01b90610ea2565b6102cf8161082f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061051a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661050e5f5160206110a35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105385760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610594575060408051601f3d908101601f1916820190925261059191810190610fac565b60015b6105c157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206110a35f395f51905f5281146105f157604051632a87526960e21b8152600481018290526024016105b8565b6105fb8383610955565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105385760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f0361067e576040516361798f2f60e11b81526001600160a01b03821660048201526024016105b8565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190610fc3565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156107d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190610fde565b50905082816108295760405162d1953b60e31b81526001600160a01b0390911660048201526024016105b8565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156108e757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108a95790505b505050505090505f5b815181101561094b575f836002015f84848151811061091157610911611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016108f0565b506105fb836109aa565b61095e82610b1e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156109a2576105fb8282610b81565b610279610c21565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff8111156109e6576109e6610d48565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b508051610a26916001840191602090910190610c77565b505f5b8251811015610ae257828181518110610a4457610a44611022565b6020026020010151826001018281548110610a6157610a61611022565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610aa857610aa8611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610a29565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610b129190611036565b60405180910390a15050565b806001600160a01b03163b5f03610b5357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105b8565b5f5160206110a35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610b8e8484610c40565b9050808015610baf57505f3d1180610baf57505f846001600160a01b03163b115b15610bc457610bbc610c53565b915050610716565b8015610bee57604051639996b31560e01b81526001600160a01b03851660048201526024016105b8565b3d15610c0157610bfc610c6c565b610c1a565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105385760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610d10579160200282015f5b83821115610cde57835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610c9d565b8015610d0e5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610cde565b505b50610d1c929150610d20565b5090565b5b80821115610d1c575f8155600101610d21565b6001600160a01b03811681146102cf575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8557610d85610d48565b604052919050565b5f82601f830112610d9c575f5ffd5b813567ffffffffffffffff811115610db657610db6610d48565b610dc9601f8201601f1916602001610d5c565b818152846020838601011115610ddd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610e0a575f5ffd5b8235610e1581610d34565b9150602083013567ffffffffffffffff811115610e30575f5ffd5b610e3c85828601610d8d565b9150509250929050565b5f60208284031215610e56575f5ffd5b8135610e6181610d34565b9392505050565b5f60208284031215610e78575f5ffd5b813567ffffffffffffffff811115610e8e575f5ffd5b610e9a84828501610d8d565b949350505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610efc575f5ffd5b813567ffffffffffffffff811115610f12575f5ffd5b8201601f81018413610f22575f5ffd5b803567ffffffffffffffff811115610f3c57610f3c610d48565b8060051b610f4c60208201610d5c565b91825260208184018101929081019087841115610f67575f5ffd5b6020850194505b83851015610fa157843592506001600160e01b031983168314610f8f575f5ffd5b82825260209485019490910190610f6e565b979650505050505050565b5f60208284031215610fbc575f5ffd5b5051919050565b5f60208284031215610fd3575f5ffd5b8151610e6181610d34565b5f5f60408385031215610fef575f5ffd5b82518015158114610ffe575f5ffd5b602084015190925063ffffffff81168114611017575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156110775783516001600160e01b03191683526020938401939092019160010161104f565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dc0bc1558ad048c33ceae0113316fb1a6758d80f3622b2f17b194c8d3ee84cf464736f6c634300081e0033",
315
- "deployedBytecode": "0x6080604052600436106100d9575f3560e01c80639ba7fcaa1161007c578063caa719a811610057578063caa719a814610206578063e68be8a91461021a578063fc7b17b91461022e578063fd07a75714610248575f5ffd5b80639ba7fcaa146101a0578063ad3cb1cc146101b5578063becf8b49146101f2575f5ffd5b80637a9e5e4b116100b75780637a9e5e4b1461012d5780638129fc1c1461014c5780638c01fde4146101605780638c3fce0e1461018c575f5ffd5b80634f1ef286146100dd57806352d1902d146100f257806375a62cfb14610119575b5f5ffd5b6100f06100eb366004610df9565b610267565b005b3480156100fd575f5ffd5b5061010661027d565b6040519081526020015b60405180910390f35b348015610124575f5ffd5b506100f0610298565b348015610138575f5ffd5b506100f0610147366004610e46565b6102c6565b348015610157575f5ffd5b506100f06102d2565b34801561016b575f5ffd5b5061017f61017a366004610e68565b6103c1565b6040516101109190610ea2565b348015610197575f5ffd5b506100f06103fb565b3480156101ab575f5ffd5b506201e240610106565b3480156101c0575f5ffd5b506101e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101109190610eb7565b3480156101fd575f5ffd5b506100f061041f565b348015610211575f5ffd5b506100f0610443565b348015610225575f5ffd5b506100f0610467565b348015610239575f5ffd5b50604051338152602001610110565b348015610253575f5ffd5b506100f0610262366004610eec565b61048b565b61026f610494565b610279828261053a565b5050565b5f610286610600565b505f5160206110a35f395f51905f5290565b6040515f5160206110835f395f51905f52906102bc906375a62cfb60e01b90610ea2565b60405180910390a1565b6102cf81610649565b50565b5f6102db6106f2565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156103025750825b90505f8267ffffffffffffffff16600114801561031e5750303b155b90508115801561032c575080155b1561034a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561037457845460ff60401b1916600160401b1785555b83156103ba57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206103d2338261071c565b5f5160206110835f395f51905f52816040516103ee9190610ea2565b60405180910390a1919050565b6040515f5160206110835f395f51905f52906102bc9063461fe70760e11b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063becf8b4960e01b90610ea2565b6040515f5160206110835f395f51905f52906102bc90631954e33560e31b90610ea2565b6040515f5160206110835f395f51905f52906102bc9063e68be8a960e01b90610ea2565b6102cf8161082f565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061051a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661050e5f5160206110a35f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156105385760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610594575060408051601f3d908101601f1916820190925261059191810190610fac565b60015b6105c157604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206110a35f395f51905f5281146105f157604051632a87526960e21b8152600481018290526024016105b8565b6105fb8383610955565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105385760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f0361067e576040516361798f2f60e11b81526001600160a01b03821660048201526024016105b8565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077d9190610fc3565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156107d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190610fde565b50905082816108295760405162d1953b60e31b81526001600160a01b0390911660048201526024016105b8565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156108e757602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116108a95790505b505050505090505f5b815181101561094b575f836002015f84848151811061091157610911611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016108f0565b506105fb836109aa565b61095e82610b1e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156109a2576105fb8282610b81565b610279610c21565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff8111156109e6576109e6610d48565b604051908082528060200260200182016040528015610a0f578160200160208202803683370190505b508051610a26916001840191602090910190610c77565b505f5b8251811015610ae257828181518110610a4457610a44611022565b6020026020010151826001018281548110610a6157610a61611022565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610aa857610aa8611022565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610a29565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610b129190611036565b60405180910390a15050565b806001600160a01b03163b5f03610b5357604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105b8565b5f5160206110a35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610b8e8484610c40565b9050808015610baf57505f3d1180610baf57505f846001600160a01b03163b115b15610bc457610bbc610c53565b915050610716565b8015610bee57604051639996b31560e01b81526001600160a01b03851660048201526024016105b8565b3d15610c0157610bfc610c6c565b610c1a565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156105385760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610d10579160200282015f5b83821115610cde57835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610c9d565b8015610d0e5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610cde565b505b50610d1c929150610d20565b5090565b5b80821115610d1c575f8155600101610d21565b6001600160a01b03811681146102cf575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d8557610d85610d48565b604052919050565b5f82601f830112610d9c575f5ffd5b813567ffffffffffffffff811115610db657610db6610d48565b610dc9601f8201601f1916602001610d5c565b818152846020838601011115610ddd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610e0a575f5ffd5b8235610e1581610d34565b9150602083013567ffffffffffffffff811115610e30575f5ffd5b610e3c85828601610d8d565b9150509250929050565b5f60208284031215610e56575f5ffd5b8135610e6181610d34565b9392505050565b5f60208284031215610e78575f5ffd5b813567ffffffffffffffff811115610e8e575f5ffd5b610e9a84828501610d8d565b949350505050565b6001600160e01b031991909116815260200190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610efc575f5ffd5b813567ffffffffffffffff811115610f12575f5ffd5b8201601f81018413610f22575f5ffd5b803567ffffffffffffffff811115610f3c57610f3c610d48565b8060051b610f4c60208201610d5c565b91825260208184018101929081019087841115610f67575f5ffd5b6020850194505b83851015610fa157843592506001600160e01b031983168314610f8f575f5ffd5b82825260209485019490910190610f6e565b979650505050505050565b5f60208284031215610fbc575f5ffd5b5051919050565b5f60208284031215610fd3575f5ffd5b8151610e6181610d34565b5f5f60408385031215610fef575f5ffd5b82518015158114610ffe575f5ffd5b602084015190925063ffffffff81168114611017575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156110775783516001600160e01b03191683526020938401939092019160010161104f565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dc0bc1558ad048c33ceae0113316fb1a6758d80f3622b2f17b194c8d3ee84cf464736f6c634300081e0033",
341
+ "bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516112376100f95f395f81816105a7015281816105d0015261071301526112375ff3fe6080604052600436106100e0575f3560e01c80639ba7fcaa1161007e578063caa719a811610058578063caa719a81461030e578063e68be8a914610322578063fc7b17b914610336578063fd07a757146103505761016e565b80639ba7fcaa146102a8578063ad3cb1cc146102bd578063becf8b49146102fa5761016e565b80637a9e5e4b116100ba5780637a9e5e4b146102355780638129fc1c146102545780638c01fde4146102685780638c3fce0e146102945761016e565b80634f1ef286146101e557806352d1902d146101fa57806375a62cfb146102215761016e565b3661016e575f5160206111c25f395f51905f527fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b6040516101219190610e3c565b60405180910390a1604080518181525f918101919091523460208201527f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee46906060015b60405180910390a1005b5f5160206111c25f395f51905f527fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a0106040516101aa9190610e3c565b60405180910390a17f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee465f363460405161016493929190610e51565b6101f86101f3366004610f4d565b61036f565b005b348015610205575f5ffd5b5061020e610385565b6040519081526020015b60405180910390f35b34801561022c575f5ffd5b506101f86103a0565b348015610240575f5ffd5b506101f861024f366004610f9a565b6103ce565b34801561025f575f5ffd5b506101f86103da565b348015610273575f5ffd5b50610287610282366004610fbc565b6104c9565b6040516102189190610e3c565b34801561029f575f5ffd5b506101f8610503565b3480156102b3575f5ffd5b506201e24061020e565b3480156102c8575f5ffd5b506102ed604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102189190610ff6565b348015610305575f5ffd5b506101f8610527565b348015610319575f5ffd5b506101f861054b565b34801561032d575f5ffd5b506101f861056f565b348015610341575f5ffd5b50604051338152602001610218565b34801561035b575f5ffd5b506101f861036a36600461102b565b610593565b61037761059c565b6103818282610642565b5050565b5f61038e610708565b505f5160206111e25f395f51905f5290565b6040515f5160206111c25f395f51905f52906103c4906375a62cfb60e01b90610e3c565b60405180910390a1565b6103d781610751565b50565b5f6103e36107fa565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561040a5750825b90505f8267ffffffffffffffff1660011480156104265750303b155b905081158015610434575080155b156104525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047c57845460ff60401b1916600160401b1785555b83156104c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206104da3382610824565b5f5160206111c25f395f51905f52816040516104f69190610e3c565b60405180910390a1919050565b6040515f5160206111c25f395f51905f52906103c49063461fe70760e11b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063becf8b4960e01b90610e3c565b6040515f5160206111c25f395f51905f52906103c490631954e33560e31b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063e68be8a960e01b90610e3c565b6103d781610937565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061062257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106165f5160206111e25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106405760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561069c575060408051601f3d908101601f19168201909252610699918101906110eb565b60015b6106c957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206111e25f395f51905f5281146106f957604051632a87526960e21b8152600481018290526024016106c0565b6107038383610a5d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106405760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f03610786576040516361798f2f60e11b81526001600160a01b03821660048201526024016106c0565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610861573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190611102565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156108e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610904919061111d565b50905082816109315760405162d1953b60e31b81526001600160a01b0390911660048201526024016106c0565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156109ef57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109b15790505b505050505090505f5b8151811015610a53575f836002015f848481518110610a1957610a19611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016109f8565b5061070383610ab2565b610a6682610c26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610aaa576107038282610c89565b610381610d29565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff811115610aee57610aee610e9c565b604051908082528060200260200182016040528015610b17578160200160208202803683370190505b508051610b2e916001840191602090910190610d7f565b505f5b8251811015610bea57828181518110610b4c57610b4c611161565b6020026020010151826001018281548110610b6957610b69611161565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610bb057610bb0611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610b31565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610c1a9190611175565b60405180910390a15050565b806001600160a01b03163b5f03610c5b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106c0565b5f5160206111e25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610c968484610d48565b9050808015610cb757505f3d1180610cb757505f846001600160a01b03163b115b15610ccc57610cc4610d5b565b91505061081e565b8015610cf657604051639996b31560e01b81526001600160a01b03851660048201526024016106c0565b3d15610d0957610d04610d74565b610d22565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156106405760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610e18579160200282015f5b83821115610de657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610da5565b8015610e165782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610de6565b505b50610e24929150610e28565b5090565b5b80821115610e24575f8155600101610e29565b6001600160e01b031991909116815260200190565b60408152826040820152828460608301375f606084830101525f6060601f19601f8601168301019050826020830152949350505050565b6001600160a01b03811681146103d7575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9c565b604052919050565b5f82601f830112610ef0575f5ffd5b813567ffffffffffffffff811115610f0a57610f0a610e9c565b610f1d601f8201601f1916602001610eb0565b818152846020838601011115610f31575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5e575f5ffd5b8235610f6981610e88565b9150602083013567ffffffffffffffff811115610f84575f5ffd5b610f9085828601610ee1565b9150509250929050565b5f60208284031215610faa575f5ffd5b8135610fb581610e88565b9392505050565b5f60208284031215610fcc575f5ffd5b813567ffffffffffffffff811115610fe2575f5ffd5b610fee84828501610ee1565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561103b575f5ffd5b813567ffffffffffffffff811115611051575f5ffd5b8201601f81018413611061575f5ffd5b803567ffffffffffffffff81111561107b5761107b610e9c565b8060051b61108b60208201610eb0565b918252602081840181019290810190878411156110a6575f5ffd5b6020850194505b838510156110e057843592506001600160e01b0319831683146110ce575f5ffd5b828252602094850194909101906110ad565b979650505050505050565b5f602082840312156110fb575f5ffd5b5051919050565b5f60208284031215611112575f5ffd5b8151610fb581610e88565b5f5f6040838503121561112e575f5ffd5b8251801515811461113d575f5ffd5b602084015190925063ffffffff81168114611156575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156111b65783516001600160e01b03191683526020938401939092019160010161118e565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200b73e3f1a7d35e03202a89b580933654c560817ea19d941dc892ce68404919b864736f6c634300081e0033",
342
+ "deployedBytecode": "0x6080604052600436106100e0575f3560e01c80639ba7fcaa1161007e578063caa719a811610058578063caa719a81461030e578063e68be8a914610322578063fc7b17b914610336578063fd07a757146103505761016e565b80639ba7fcaa146102a8578063ad3cb1cc146102bd578063becf8b49146102fa5761016e565b80637a9e5e4b116100ba5780637a9e5e4b146102355780638129fc1c146102545780638c01fde4146102685780638c3fce0e146102945761016e565b80634f1ef286146101e557806352d1902d146101fa57806375a62cfb146102215761016e565b3661016e575f5160206111c25f395f51905f527fd217fcc64ca03b17db426f651be32786de1c93adfb772d680771c96323f9d57b6040516101219190610e3c565b60405180910390a1604080518181525f918101919091523460208201527f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee46906060015b60405180910390a1005b5f5160206111c25f395f51905f527fb32cdf4d3c016cb0f079f205ad61c36b1a837fb3e95c70a94bdedfca0518a0106040516101aa9190610e3c565b60405180910390a17f7a9aeda1e081972ce583cf32c142361601c673a990ea3f1cc8594fe898feee465f363460405161016493929190610e51565b6101f86101f3366004610f4d565b61036f565b005b348015610205575f5ffd5b5061020e610385565b6040519081526020015b60405180910390f35b34801561022c575f5ffd5b506101f86103a0565b348015610240575f5ffd5b506101f861024f366004610f9a565b6103ce565b34801561025f575f5ffd5b506101f86103da565b348015610273575f5ffd5b50610287610282366004610fbc565b6104c9565b6040516102189190610e3c565b34801561029f575f5ffd5b506101f8610503565b3480156102b3575f5ffd5b506201e24061020e565b3480156102c8575f5ffd5b506102ed604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102189190610ff6565b348015610305575f5ffd5b506101f8610527565b348015610319575f5ffd5b506101f861054b565b34801561032d575f5ffd5b506101f861056f565b348015610341575f5ffd5b50604051338152602001610218565b34801561035b575f5ffd5b506101f861036a36600461102b565b610593565b61037761059c565b6103818282610642565b5050565b5f61038e610708565b505f5160206111e25f395f51905f5290565b6040515f5160206111c25f395f51905f52906103c4906375a62cfb60e01b90610e3c565b60405180910390a1565b6103d781610751565b50565b5f6103e36107fa565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561040a5750825b90505f8267ffffffffffffffff1660011480156104265750303b155b905081158015610434575080155b156104525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561047c57845460ff60401b1916600160401b1785555b83156104c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b805160208201206104da3382610824565b5f5160206111c25f395f51905f52816040516104f69190610e3c565b60405180910390a1919050565b6040515f5160206111c25f395f51905f52906103c49063461fe70760e11b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063becf8b4960e01b90610e3c565b6040515f5160206111c25f395f51905f52906103c490631954e33560e31b90610e3c565b6040515f5160206111c25f395f51905f52906103c49063e68be8a960e01b90610e3c565b6103d781610937565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061062257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106165f5160206111e25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106405760405163703e46dd60e11b815260040160405180910390fd5b565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561069c575060408051601f3d908101601f19168201909252610699918101906110eb565b60015b6106c957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206111e25f395f51905f5281146106f957604051632a87526960e21b8152600481018290526024016106c0565b6107038383610a5d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106405760405163703e46dd60e11b815260040160405180910390fd5b806001600160a01b03163b5f03610786576040516361798f2f60e11b81526001600160a01b03821660048201526024016106c0565b807f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c0080546001600160a01b0319166001600160a01b0392831617905560405190821681527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa158015610861573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108859190611102565b60405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b031985166044830152919091169063b7009613906064016040805180830381865afa1580156108e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610904919061111d565b50905082816109315760405162d1953b60e31b81526001600160a01b0390911660048201526024016106c0565b50505050565b7f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c018054604080516020808402820181019092528281527f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c00935f9391929091908301828280156109ef57602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116109b15790505b505050505090505f5b8151811015610a53575f836002015f848481518110610a1957610a19611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff19169115159190911790556001016109f8565b5061070383610ab2565b610a6682610c26565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610aaa576107038282610c89565b610381610d29565b80517f787c9d7ac910d64252bcea05acd5b7af6d59644e0451a8bb5674587555049c009067ffffffffffffffff811115610aee57610aee610e9c565b604051908082528060200260200182016040528015610b17578160200160208202803683370190505b508051610b2e916001840191602090910190610d7f565b505f5b8251811015610bea57828181518110610b4c57610b4c611161565b6020026020010151826001018281548110610b6957610b69611161565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908360e01c02179055506001826002015f858481518110610bb057610bb0611161565b6020908102919091018101516001600160e01b03191682528101919091526040015f20805460ff1916911515919091179055600101610b31565b507f3da94442c0a9daca8284d03a02aafdc638dfaae447d5d7879542573a9095b49382604051610c1a9190611175565b60405180910390a15050565b806001600160a01b03163b5f03610c5b57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106c0565b5f5160206111e25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f610c968484610d48565b9050808015610cb757505f3d1180610cb757505f846001600160a01b03163b115b15610ccc57610cc4610d5b565b91505061081e565b8015610cf657604051639996b31560e01b81526001600160a01b03851660048201526024016106c0565b3d15610d0957610d04610d74565b610d22565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b34156106405760405163b398979f60e01b815260040160405180910390fd5b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b828054828255905f5260205f2090600701600890048101928215610e18579160200282015f5b83821115610de657835183826101000a81548163ffffffff021916908360e01c02179055509260200192600401602081600301049283019260010302610da5565b8015610e165782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610de6565b505b50610e24929150610e28565b5090565b5b80821115610e24575f8155600101610e29565b6001600160e01b031991909116815260200190565b60408152826040820152828460608301375f606084830101525f6060601f19601f8601168301019050826020830152949350505050565b6001600160a01b03811681146103d7575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ed957610ed9610e9c565b604052919050565b5f82601f830112610ef0575f5ffd5b813567ffffffffffffffff811115610f0a57610f0a610e9c565b610f1d601f8201601f1916602001610eb0565b818152846020838601011115610f31575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5e575f5ffd5b8235610f6981610e88565b9150602083013567ffffffffffffffff811115610f84575f5ffd5b610f9085828601610ee1565b9150509250929050565b5f60208284031215610faa575f5ffd5b8135610fb581610e88565b9392505050565b5f60208284031215610fcc575f5ffd5b813567ffffffffffffffff811115610fe2575f5ffd5b610fee84828501610ee1565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561103b575f5ffd5b813567ffffffffffffffff811115611051575f5ffd5b8201601f81018413611061575f5ffd5b803567ffffffffffffffff81111561107b5761107b610e9c565b8060051b61108b60208201610eb0565b918252602081840181019290810190878411156110a6575f5ffd5b6020850194505b838510156110e057843592506001600160e01b0319831683146110ce575f5ffd5b828252602094850194909101906110ad565b979650505050505050565b5f602082840312156110fb575f5ffd5b5051919050565b5f60208284031215611112575f5ffd5b8151610fb581610e88565b5f5f6040838503121561112e575f5ffd5b8251801515811461113d575f5ffd5b602084015190925063ffffffff81168114611156575f5ffd5b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156111b65783516001600160e01b03191683526020938401939092019160010161118e565b50909594505050505056fe617c4c611bb184fbd3981dfb9b9f6d8419815420c7dfd77bb6de24d0d2d5147c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200b73e3f1a7d35e03202a89b580933654c560817ea19d941dc892ce68404919b864736f6c634300081e0033",
316
343
  "linkReferences": {},
317
344
  "deployedLinkReferences": {}
318
345
  }
@@ -23,6 +23,9 @@ import {IAccessManagedProxy} from "./interfaces/IAccessManagedProxy.sol";
23
23
  * @author Ensuro
24
24
  */
25
25
  abstract contract AccessManagedProxyBase is ERC1967Proxy, IAccessManagedProxy {
26
+ bytes4 internal constant RECEIVE_SELECTOR = bytes4(keccak256("receive"));
27
+ bytes4 internal constant FALLBACK_SELECTOR = bytes4(keccak256("fallback"));
28
+
26
29
  /**
27
30
  * @notice Constructor of the proxy, defining the implementation and the access manager
28
31
  * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation` and
@@ -54,7 +57,9 @@ abstract contract AccessManagedProxyBase is ERC1967Proxy, IAccessManagedProxy {
54
57
  * This function does not return to its internal call site, it will return directly to the external caller.
55
58
  */
56
59
  function _delegate(address implementation) internal virtual override {
57
- bytes4 selector = bytes4(msg.data[0:4]);
60
+ bytes4 selector = msg.data.length < 4
61
+ ? (msg.data.length == 0 ? RECEIVE_SELECTOR : FALLBACK_SELECTOR)
62
+ : bytes4(msg.data[0:4]);
58
63
  bool immediate = _skipAC(selector); // reuse immediate variable both for skipped methods and canCall result
59
64
  if (!immediate) {
60
65
  (immediate, ) = ACCESS_MANAGER().canCall(msg.sender, address(this), selector);
@@ -14,6 +14,7 @@ import {AMPUtils} from "../AMPUtils.sol";
14
14
  */
15
15
  contract DummyImplementation is UUPSUpgradeable, Initializable {
16
16
  event MethodCalled(bytes4 selector);
17
+ event NonStandardMethodCalled(bytes msgData, uint256 value);
17
18
 
18
19
  /// @custom:oz-upgrades-unsafe-allow constructor
19
20
  constructor() {
@@ -67,4 +68,14 @@ contract DummyImplementation is UUPSUpgradeable, Initializable {
67
68
  AMPUtils.checkCanCall(msg.sender, selector);
68
69
  emit MethodCalled(selector);
69
70
  }
71
+
72
+ receive() external payable {
73
+ emit MethodCalled(bytes4(keccak256("receive")));
74
+ emit NonStandardMethodCalled("", msg.value);
75
+ }
76
+
77
+ fallback() external payable {
78
+ emit MethodCalled(bytes4(keccak256("fallback")));
79
+ emit NonStandardMethodCalled(msg.data, msg.value);
80
+ }
70
81
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ensuro/access-managed-proxy",
3
3
  "description": "Variant of ERC-1967 proxy with built-in access control using OZ 5.x AccessManager",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "files": [
6
6
  "**/*.sol",
7
7
  "/build",