{ "abi": [{ "type": "constructor", "inputs": [{ "name": "_owner", "type": "address", "internalType": "address" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "addressManager", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract AddressManager" }], "stateMutability": "view" }, { "type": "function", "name": "changeProxyAdmin", "inputs": [{ "name": "_proxy", "type": "address", "internalType": "address payable" }, { "name": "_newAdmin", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "getProxyAdmin", "inputs": [{ "name": "_proxy", "type": "address", "internalType": "address payable" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "getProxyImplementation", "inputs": [{ "name": "_proxy", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "implementationName", "inputs": [{ "name": "", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "function", "name": "isUpgrading", "inputs": [], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "proxyType", "inputs": [{ "name": "", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint8", "internalType": "enum ProxyAdmin.ProxyType" }], "stateMutability": "view" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setAddress", "inputs": [{ "name": "_name", "type": "string", "internalType": "string" }, { "name": "_address", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setAddressManager", "inputs": [{ "name": "_address", "type": "address", "internalType": "contract AddressManager" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setImplementationName", "inputs": [{ "name": "_address", "type": "address", "internalType": "address" }, { "name": "_name", "type": "string", "internalType": "string" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setProxyType", "inputs": [{ "name": "_address", "type": "address", "internalType": "address" }, { "name": "_type", "type": "uint8", "internalType": "enum ProxyAdmin.ProxyType" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setUpgrading", "inputs": [{ "name": "_upgrading", "type": "bool", "internalType": "bool" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferOwnership", "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "upgrade", "inputs": [{ "name": "_proxy", "type": "address", "internalType": "address payable" }, { "name": "_implementation", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "upgradeAndCall", "inputs": [{ "name": "_proxy", "type": "address", "internalType": "address payable" }, { "name": "_implementation", "type": "address", "internalType": "address" }, { "name": "_data", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "payable" }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b5060405162001a5f38038062001a5f8339810160408190526200003491620000a1565b6200003f3362000051565b6200004a8162000051565b50620000d3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b457600080fd5b81516001600160a01b0381168114620000cc57600080fd5b9392505050565b61197c80620000e36000396000f3fe60806040526004361061010e5760003560e01c8063860f7cda116100a557806399a88ec411610074578063b794726211610059578063b794726214610329578063f2fde38b14610364578063f3b7dead1461038457600080fd5b806399a88ec4146102e95780639b2ea4bd1461030957600080fd5b8063860f7cda1461026b5780638d52d4a01461028b5780638da5cb5b146102ab5780639623609d146102d657600080fd5b80633ab76e9f116100e15780633ab76e9f146101cc5780636bd9f516146101f9578063715018a6146102365780637eff275e1461024b57600080fd5b80630652b57a1461011357806307c8f7b014610135578063204e1c7a14610155578063238181ae1461019f575b600080fd5b34801561011f57600080fd5b5061013361012e3660046111f9565b6103a4565b005b34801561014157600080fd5b50610133610150366004611216565b6103f3565b34801561016157600080fd5b506101756101703660046111f9565b610445565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ab57600080fd5b506101bf6101ba3660046111f9565b61066b565b60405161019691906112ae565b3480156101d857600080fd5b506003546101759073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020557600080fd5b506102296102143660046111f9565b60016020526000908152604090205460ff1681565b60405161019691906112f0565b34801561024257600080fd5b50610133610705565b34801561025757600080fd5b50610133610266366004611331565b610719565b34801561027757600080fd5b5061013361028636600461148c565b6108cc565b34801561029757600080fd5b506101336102a63660046114dc565b610903565b3480156102b757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610175565b6101336102e436600461150e565b610977565b3480156102f557600080fd5b50610133610304366004611331565b610b8e565b34801561031557600080fd5b50610133610324366004611584565b610e1e565b34801561033557600080fd5b5060035474010000000000000000000000000000000000000000900460ff166040519015158152602001610196565b34801561037057600080fd5b5061013361037f3660046111f9565b610eb4565b34801561039057600080fd5b5061017561039f3660046111f9565b610f6b565b6103ac6110e1565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6103fb6110e1565b6003805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610481576104816112c1565b036104fc578273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906115cb565b9392505050565b6001816002811115610510576105106112c1565b03610560578273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6002816002811115610574576105746112c1565b036105fe5760035473ffffffffffffffffffffffffffffffffffffffff8481166000908152600260205260409081902090517fbf40fac1000000000000000000000000000000000000000000000000000000008152919092169163bf40fac1916105e19190600401611635565b602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065000060448201526064015b60405180910390fd5b50919050565b60026020526000908152604090208054610684906115e8565b80601f01602080910402602001604051908101604052809291908181526020018280546106b0906115e8565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b505050505081565b61070d6110e1565b6107176000611162565b565b6107216110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff169081600281111561075d5761075d6112c1565b036107e9576040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690638f283970906024015b600060405180830381600087803b1580156107cc57600080fd5b505af11580156107e0573d6000803e3d6000fd5b50505050505050565b60018160028111156107fd576107fd6112c1565b03610856576040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906313af4035906024016107b2565b600281600281111561086a5761086a6112c1565b036105fe576003546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063f2fde38b906024016107b2565b505050565b6108d46110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090206108c78282611724565b61090b6110e1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160208190526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600281111561096e5761096e6112c1565b02179055505050565b61097f6110e1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205460ff16908160028111156109bb576109bb6112c1565b03610a81576040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690634f1ef286903490610a16908790879060040161183e565b60006040518083038185885af1158015610a34573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a7b9190810190611875565b50610b88565b610a8b8484610b8e565b60008473ffffffffffffffffffffffffffffffffffffffff163484604051610ab391906118ec565b60006040518083038185875af1925050503d8060008114610af0576040519150601f19603f3d011682016040523d82523d6000602084013e610af5565b606091505b5050905080610b86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f50726f787941646d696e3a2063616c6c20746f2070726f78792061667465722060448201527f75706772616465206661696c6564000000000000000000000000000000000000606482015260840161065c565b505b50505050565b610b966110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff1690816002811115610bd257610bd26112c1565b03610c2b576040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690633659cfe6906024016107b2565b6001816002811115610c3f57610c3f6112c1565b03610cbe576040517f9b0b0fda0000000000000000000000000000000000000000000000000000000081527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152841690639b0b0fda906044016107b2565b6002816002811115610cd257610cd26112c1565b03610e165773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208054610d07906115e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d33906115e8565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b50506003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff1693639b2ea4bd9350610dde92508591508790600401611908565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b5050505050505050565b6108c7611940565b610e266110e1565b6003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639b2ea4bd90610e7e9085908590600401611908565b600060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505050505050565b610ebc6110e1565b73ffffffffffffffffffffffffffffffffffffffff8116610f5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065c565b610f6881611162565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610fa757610fa76112c1565b03610ff7578273ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600181600281111561100b5761100b6112c1565b0361105b578273ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600281600281111561106f5761106f6112c1565b036105fe57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f6857600080fd5b60006020828403121561120b57600080fd5b81356104f5816111d7565b60006020828403121561122857600080fd5b813580151581146104f557600080fd5b60005b8381101561125357818101518382015260200161123b565b83811115610b885750506000910152565b6000815180845261127c816020860160208601611238565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f56020830184611264565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061132b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561134457600080fd5b823561134f816111d7565b9150602083013561135f816111d7565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156113e0576113e061136a565b604052919050565b600067ffffffffffffffff8211156114025761140261136a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061144161143c846113e8565b611399565b905082815283838301111561145557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261147d57600080fd5b6104f58383356020850161142e565b6000806040838503121561149f57600080fd5b82356114aa816111d7565b9150602083013567ffffffffffffffff8111156114c657600080fd5b6114d28582860161146c565b9150509250929050565b600080604083850312156114ef57600080fd5b82356114fa816111d7565b915060208301356003811061135f57600080fd5b60008060006060848603121561152357600080fd5b833561152e816111d7565b9250602084013561153e816111d7565b9150604084013567ffffffffffffffff81111561155a57600080fd5b8401601f8101861361156b57600080fd5b61157a8682356020840161142e565b9150509250925092565b6000806040838503121561159757600080fd5b823567ffffffffffffffff8111156115ae57600080fd5b6115ba8582860161146c565b925050602083013561135f816111d7565b6000602082840312156115dd57600080fd5b81516104f5816111d7565b600181811c908216806115fc57607f821691505b602082108103610665577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602080835260008454611649816115e8565b8084870152604060018084166000811461166a57600181146116a2576116d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a010195506116d0565b896000528660002060005b858110156116c85781548b82018601529083019088016116ad565b8a0184019650505b509398975050505050505050565b601f8211156108c757600081815260208120601f850160051c810160208610156117055750805b601f850160051c820191505b81811015610eac57828155600101611711565b815167ffffffffffffffff81111561173e5761173e61136a565b6117528161174c84546115e8565b846116de565b602080601f8311600181146117a5576000841561176f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610eac565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156117f2578886015182559484019460019091019084016117d3565b508582101561182e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061186d6040830184611264565b949350505050565b60006020828403121561188757600080fd5b815167ffffffffffffffff81111561189e57600080fd5b8201601f810184136118af57600080fd5b80516118bd61143c826113e8565b8181528560208385010111156118d257600080fd5b6118e3826020830160208601611238565b95945050505050565b600082516118fe818460208701611238565b9190910192915050565b60408152600061191b6040830185611264565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea164736f6c634300080f000a", "sourceMap": "1241:8036:234:-:0;;;2494:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:40;719:10:60;936:18:40;:32::i;:::-;2542:26:234::1;2561:6:::0;2542:18:::1;:26::i;:::-;2494:81:::0;1241:8036;;2433:187:40;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:40;;;-1:-1:-1;;;;;;2541:17:40;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:290:357:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:357;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:357:o;:::-;1241:8036:234;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040526004361061010e5760003560e01c8063860f7cda116100a557806399a88ec411610074578063b794726211610059578063b794726214610329578063f2fde38b14610364578063f3b7dead1461038457600080fd5b806399a88ec4146102e95780639b2ea4bd1461030957600080fd5b8063860f7cda1461026b5780638d52d4a01461028b5780638da5cb5b146102ab5780639623609d146102d657600080fd5b80633ab76e9f116100e15780633ab76e9f146101cc5780636bd9f516146101f9578063715018a6146102365780637eff275e1461024b57600080fd5b80630652b57a1461011357806307c8f7b014610135578063204e1c7a14610155578063238181ae1461019f575b600080fd5b34801561011f57600080fd5b5061013361012e3660046111f9565b6103a4565b005b34801561014157600080fd5b50610133610150366004611216565b6103f3565b34801561016157600080fd5b506101756101703660046111f9565b610445565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ab57600080fd5b506101bf6101ba3660046111f9565b61066b565b60405161019691906112ae565b3480156101d857600080fd5b506003546101759073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020557600080fd5b506102296102143660046111f9565b60016020526000908152604090205460ff1681565b60405161019691906112f0565b34801561024257600080fd5b50610133610705565b34801561025757600080fd5b50610133610266366004611331565b610719565b34801561027757600080fd5b5061013361028636600461148c565b6108cc565b34801561029757600080fd5b506101336102a63660046114dc565b610903565b3480156102b757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610175565b6101336102e436600461150e565b610977565b3480156102f557600080fd5b50610133610304366004611331565b610b8e565b34801561031557600080fd5b50610133610324366004611584565b610e1e565b34801561033557600080fd5b5060035474010000000000000000000000000000000000000000900460ff166040519015158152602001610196565b34801561037057600080fd5b5061013361037f3660046111f9565b610eb4565b34801561039057600080fd5b5061017561039f3660046111f9565b610f6b565b6103ac6110e1565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6103fb6110e1565b6003805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610481576104816112c1565b036104fc578273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906115cb565b9392505050565b6001816002811115610510576105106112c1565b03610560578273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6002816002811115610574576105746112c1565b036105fe5760035473ffffffffffffffffffffffffffffffffffffffff8481166000908152600260205260409081902090517fbf40fac1000000000000000000000000000000000000000000000000000000008152919092169163bf40fac1916105e19190600401611635565b602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065000060448201526064015b60405180910390fd5b50919050565b60026020526000908152604090208054610684906115e8565b80601f01602080910402602001604051908101604052809291908181526020018280546106b0906115e8565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b505050505081565b61070d6110e1565b6107176000611162565b565b6107216110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff169081600281111561075d5761075d6112c1565b036107e9576040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690638f283970906024015b600060405180830381600087803b1580156107cc57600080fd5b505af11580156107e0573d6000803e3d6000fd5b50505050505050565b60018160028111156107fd576107fd6112c1565b03610856576040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906313af4035906024016107b2565b600281600281111561086a5761086a6112c1565b036105fe576003546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063f2fde38b906024016107b2565b505050565b6108d46110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090206108c78282611724565b61090b6110e1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160208190526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600281111561096e5761096e6112c1565b02179055505050565b61097f6110e1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205460ff16908160028111156109bb576109bb6112c1565b03610a81576040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690634f1ef286903490610a16908790879060040161183e565b60006040518083038185885af1158015610a34573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a7b9190810190611875565b50610b88565b610a8b8484610b8e565b60008473ffffffffffffffffffffffffffffffffffffffff163484604051610ab391906118ec565b60006040518083038185875af1925050503d8060008114610af0576040519150601f19603f3d011682016040523d82523d6000602084013e610af5565b606091505b5050905080610b86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f50726f787941646d696e3a2063616c6c20746f2070726f78792061667465722060448201527f75706772616465206661696c6564000000000000000000000000000000000000606482015260840161065c565b505b50505050565b610b966110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff1690816002811115610bd257610bd26112c1565b03610c2b576040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690633659cfe6906024016107b2565b6001816002811115610c3f57610c3f6112c1565b03610cbe576040517f9b0b0fda0000000000000000000000000000000000000000000000000000000081527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152841690639b0b0fda906044016107b2565b6002816002811115610cd257610cd26112c1565b03610e165773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208054610d07906115e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d33906115e8565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b50506003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff1693639b2ea4bd9350610dde92508591508790600401611908565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b5050505050505050565b6108c7611940565b610e266110e1565b6003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639b2ea4bd90610e7e9085908590600401611908565b600060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505050505050565b610ebc6110e1565b73ffffffffffffffffffffffffffffffffffffffff8116610f5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065c565b610f6881611162565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610fa757610fa76112c1565b03610ff7578273ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600181600281111561100b5761100b6112c1565b0361105b578273ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600281600281111561106f5761106f6112c1565b036105fe57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f6857600080fd5b60006020828403121561120b57600080fd5b81356104f5816111d7565b60006020828403121561122857600080fd5b813580151581146104f557600080fd5b60005b8381101561125357818101518382015260200161123b565b83811115610b885750506000910152565b6000815180845261127c816020860160208601611238565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f56020830184611264565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061132b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561134457600080fd5b823561134f816111d7565b9150602083013561135f816111d7565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156113e0576113e061136a565b604052919050565b600067ffffffffffffffff8211156114025761140261136a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061144161143c846113e8565b611399565b905082815283838301111561145557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261147d57600080fd5b6104f58383356020850161142e565b6000806040838503121561149f57600080fd5b82356114aa816111d7565b9150602083013567ffffffffffffffff8111156114c657600080fd5b6114d28582860161146c565b9150509250929050565b600080604083850312156114ef57600080fd5b82356114fa816111d7565b915060208301356003811061135f57600080fd5b60008060006060848603121561152357600080fd5b833561152e816111d7565b9250602084013561153e816111d7565b9150604084013567ffffffffffffffff81111561155a57600080fd5b8401601f8101861361156b57600080fd5b61157a8682356020840161142e565b9150509250925092565b6000806040838503121561159757600080fd5b823567ffffffffffffffff8111156115ae57600080fd5b6115ba8582860161146c565b925050602083013561135f816111d7565b6000602082840312156115dd57600080fd5b81516104f5816111d7565b600181811c908216806115fc57607f821691505b602082108103610665577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602080835260008454611649816115e8565b8084870152604060018084166000811461166a57600181146116a2576116d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a010195506116d0565b896000528660002060005b858110156116c85781548b82018601529083019088016116ad565b8a0184019650505b509398975050505050505050565b601f8211156108c757600081815260208120601f850160051c810160208610156117055750805b601f850160051c820191505b81811015610eac57828155600101611711565b815167ffffffffffffffff81111561173e5761173e61136a565b6117528161174c84546115e8565b846116de565b602080601f8311600181146117a5576000841561176f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610eac565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156117f2578886015182559484019460019091019084016117d3565b508582101561182e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061186d6040830184611264565b949350505050565b60006020828403121561188757600080fd5b815167ffffffffffffffff81111561189e57600080fd5b8201601f810184136118af57600080fd5b80516118bd61143c826113e8565b8181528560208385010111156118d257600080fd5b6118e3826020830160208601611238565b95945050505050565b600082516118fe818460208701611238565b9190910192915050565b60408152600061191b6040830185611264565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea164736f6c634300080f000a", "sourceMap": "1241:8036:234:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3571:113;;;;;;;;;;-1:-1:-1;3571:113:234;;;;;:::i;:::-;;:::i;:::-;;4430:97;;;;;;;;;;-1:-1:-1;4430:97:234;;;;;:::i;:::-;;:::i;5236:569::-;;;;;;;;;;-1:-1:-1;5236:569:234;;;;;:::i;:::-;;:::i;:::-;;;1204:42:357;1192:55;;;1174:74;;1162:2;1147:18;5236:569:234;;;;;;;;2087:52;;;;;;;;;;-1:-1:-1;2087:52:234;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2273:36::-;;;;;;;;;;-1:-1:-1;2273:36:234;;;;;;;;1760:46;;;;;;;;;;-1:-1:-1;1760:46:234;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;1831:101:40:-;;;;;;;;;;;;;:::i;6689:531:234:-;;;;;;;;;;-1:-1:-1;6689:531:234;;;;;:::i;:::-;;:::i;3219:142::-;;;;;;;;;;-1:-1:-1;3219:142:234;;;;;:::i;:::-;;:::i;2796:120::-;;;;;;;;;;-1:-1:-1;2796:120:234;;;;;:::i;:::-;;:::i;1201:85:40:-;;;;;;;;;;-1:-1:-1;1247:7:40;1273:6;;;1201:85;;8644:631:234;;;;;;:::i;:::-;;:::i;7423:816::-;;;;;;;;;;-1:-1:-1;7423:816:234;;;;;:::i;:::-;;:::i;4126:137::-;;;;;;;;;;-1:-1:-1;4126:137:234;;;;;:::i;:::-;;:::i;4941:85::-;;;;;;;;;;-1:-1:-1;5010:9:234;;;;;;;4941:85;;7028:14:357;;7021:22;7003:41;;6991:2;6976:18;4941:85:234;6863:187:357;2081:198:40;;;;;;;;;;-1:-1:-1;2081:198:40;;;;;:::i;:::-;;:::i;5988:519:234:-;;;;;;;;;;-1:-1:-1;5988:519:234;;;;;:::i;:::-;;:::i;3571:113::-;1094:13:40;:11;:13::i;:::-;3652:14:234::1;:25:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;3571:113::o;4430:97::-;1094:13:40;:11;:13::i;:::-;4498:9:234::1;:22:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;4430:97::o;5236:569::-;5344:17;;;5307:7;5344:17;;;:9;:17;;;;;;;;5307:7;5375:5;:26;;;;;;;;:::i;:::-;;5371:428;;5444:6;5424:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5417:51;5236:569;-1:-1:-1;;;5236:569:234:o;5371:428::-;5498:20;5489:5;:29;;;;;;;;:::i;:::-;;5485:314;;5566:6;5541:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5485:314;5623:18;5614:5;:27;;;;;;;;:::i;:::-;;5610:189;;5664:14;;;5690:26;;;5664:14;5690:26;;;:18;:26;;;;;;;5664:53;;;;;:14;;;;;:25;;:53;;5690:26;5664:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5610:189;5748:40;;;;;9399:2:357;5748:40:234;;;9381:21:357;9438:2;9418:18;;;9411:30;9477:32;9457:18;;;9450:60;9527:18;;5748:40:234;;;;;;;;5610:189;5316:489;5236:569;;;:::o;2087:52::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1831:101:40:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;6689:531:234:-;1094:13:40;:11;:13::i;:::-;6805:17:234::1;::::0;::::1;6787:15;6805:17:::0;;;:9:::1;:17;::::0;;;;;::::1;;::::0;6836:5:::1;:26;;;;;;;;:::i;:::-;::::0;6832:382:::1;;6878:36;::::0;;;;:25:::1;1192:55:357::0;;;6878:36:234::1;::::0;::::1;1174:74:357::0;6878:25:234;::::1;::::0;::::1;::::0;1147:18:357;;6878:36:234::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6777:443;6689:531:::0;;:::o;6832:382::-:1;6944:20;6935:5;:29;;;;;;;;:::i;:::-;::::0;6931:283:::1;;6980:45;::::0;;;;:34:::1;1192:55:357::0;;;6980:45:234::1;::::0;::::1;1174:74:357::0;6980:34:234;::::1;::::0;::::1;::::0;1147:18:357;;6980:45:234::1;1028:226:357::0;6931:283:234::1;7055:18;7046:5;:27;;;;;;;;:::i;:::-;::::0;7042:172:::1;;7089:14;::::0;:43:::1;::::0;;;;:14:::1;1192:55:357::0;;;7089:43:234::1;::::0;::::1;1174:74:357::0;7089:14:234;;::::1;::::0;:32:::1;::::0;1147:18:357;;7089:43:234::1;1028:226:357::0;7042:172:234::1;6777:443;6689:531:::0;;:::o;3219:142::-;1094:13:40;:11;:13::i;:::-;3318:28:234::1;::::0;::::1;;::::0;;;:18:::1;:28;::::0;;;;:36:::1;3349:5:::0;3318:28;:36:::1;:::i;2796:120::-:0;1094:13:40;:11;:13::i;:::-;2882:19:234::1;::::0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;:27;;2904:5;;2882:27;;;::::1;::::0;2904:5;2882:27:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;2796:120:::0;;:::o;8644:631::-;1094:13:40;:11;:13::i;:::-;8850:17:234::1;::::0;::::1;8832:15;8850:17:::0;;;:9:::1;:17;::::0;;;;;::::1;;::::0;8881:5:::1;:26;;;;;;;;:::i;:::-;::::0;8877:392:::1;;8923:74;::::0;;;;:30:::1;::::0;::::1;::::0;::::1;::::0;8962:9:::1;::::0;8923:74:::1;::::0;8974:15;;8991:5;;8923:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;8877:392;;;9076:32;9084:6;9092:15;9076:7;:32::i;:::-;9123:12;9140:6;:11;;9160:9;9172:5;9140:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9122:56;;;9200:7;9192:66;;;::::0;::::1;::::0;;13277:2:357;9192:66:234::1;::::0;::::1;13259:21:357::0;13316:2;13296:18;;;13289:30;13355:34;13335:18;;;13328:62;13426:16;13406:18;;;13399:44;13460:19;;9192:66:234::1;13075:410:357::0;9192:66:234::1;9014:255;8877:392;8822:453;8644:631:::0;;;:::o;7423:816::-;1094:13:40;:11;:13::i;:::-;7534:17:234::1;::::0;::::1;7516:15;7534:17:::0;;;:9:::1;:17;::::0;;;;;::::1;;::::0;7565:5:::1;:26;;;;;;;;:::i;:::-;::::0;7561:672:::1;;7607:40;::::0;;;;:23:::1;1192:55:357::0;;;7607:40:234::1;::::0;::::1;1174:74:357::0;7607:23:234;::::1;::::0;::::1;::::0;1147:18:357;;7607:40:234::1;1028:226:357::0;7561:672:234::1;7677:20;7668:5;:29;;;;;;;;:::i;:::-;::::0;7664:569:::1;;7713:150;::::0;;;;1614:66:192::1;7713:150:234;::::0;::::1;13664:25:357::0;7713:36:234::1;7815:33:::0;;::::1;13705:18:357::0;;;13698:34;7713:36:234;::::1;::::0;::::1;::::0;13637:18:357;;7713:150:234::1;13490:248:357::0;7664:569:234::1;7893:18;7884:5;:27;;;;;;;;:::i;:::-;::::0;7880:353:::1;;7948:26;::::0;::::1;7927:18;7948:26:::0;;;:18:::1;:26;::::0;;;;7927:47;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;7988:14:234::1;::::0;:48:::1;::::0;;;;7927:47;;-1:-1:-1;7988:14:234::1;;::::0;:25:::1;::::0;-1:-1:-1;7988:48:234::1;::::0;-1:-1:-1;7927:47:234;;-1:-1:-1;8020:15:234;;7988:48:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7913:134;6777:443;6689:531:::0;;:::o;7880:353::-:1;8209:13;;:::i;4126:137::-:0;1094:13:40;:11;:13::i;:::-;4214:14:234::1;::::0;:42:::1;::::0;;;;:14:::1;::::0;;::::1;::::0;:25:::1;::::0;:42:::1;::::0;4240:5;;4247:8;;4214:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4126:137:::0;;:::o;2081:198:40:-;1094:13;:11;:13::i;:::-;2169:22:::1;::::0;::::1;2161:73;;;::::0;::::1;::::0;;14479:2:357;2161:73:40::1;::::0;::::1;14461:21:357::0;14518:2;14498:18;;;14491:30;14557:34;14537:18;;;14530:62;14628:8;14608:18;;;14601:36;14654:19;;2161:73:40::1;14277:402:357::0;2161:73:40::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;5988:519:234:-;6095:17;;;6058:7;6095:17;;;:9;:17;;;;;;;;6058:7;6126:5;:26;;;;;;;;:::i;:::-;;6122:379;;6195:6;6175:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6122:379;6240:20;6231:5;:29;;;;;;;;:::i;:::-;;6227:274;;6308:6;6283:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6227:274;6356:18;6347:5;:27;;;;;;;;:::i;:::-;;6343:158;;6397:14;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:130:40;1247:7;1273:6;1422:23;1273:6;719:10:60;1422:23:40;1414:68;;;;;;;14886:2:357;1414:68:40;;;14868:21:357;;;14905:18;;;14898:30;14964:34;14944:18;;;14937:62;15016:18;;1414:68:40;14684:356:357;2433:187:40;2506:16;2525:6;;;2541:17;;;;;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:170:357:-;116:42;109:5;105:54;98:5;95:65;85:93;;174:1;171;164:12;189:288;273:6;326:2;314:9;305:7;301:23;297:32;294:52;;;342:1;339;332:12;294:52;381:9;368:23;400:47;441:5;400:47;:::i;482:273::-;538:6;591:2;579:9;570:7;566:23;562:32;559:52;;;607:1;604;597:12;559:52;646:9;633:23;699:5;692:13;685:21;678:5;675:32;665:60;;721:1;718;711:12;1259:258;1331:1;1341:113;1355:6;1352:1;1349:13;1341:113;;;1431:11;;;1425:18;1412:11;;;1405:39;1377:2;1370:10;1341:113;;;1472:6;1469:1;1466:13;1463:48;;;-1:-1:-1;;1507:1:357;1489:16;;1482:27;1259:258::o;1522:317::-;1564:3;1602:5;1596:12;1629:6;1624:3;1617:19;1645:63;1701:6;1694:4;1689:3;1685:14;1678:4;1671:5;1667:16;1645:63;:::i;:::-;1753:2;1741:15;1758:66;1737:88;1728:98;;;;1828:4;1724:109;;1522:317;-1:-1:-1;;1522:317:357:o;1844:220::-;1993:2;1982:9;1975:21;1956:4;2013:45;2054:2;2043:9;2039:18;2031:6;2013:45;:::i;2325:184::-;2377:77;2374:1;2367:88;2474:4;2471:1;2464:15;2498:4;2495:1;2488:15;2514:401;2662:2;2647:18;;2695:1;2684:13;;2674:201;;2731:77;2728:1;2721:88;2832:4;2829:1;2822:15;2860:4;2857:1;2850:15;2674:201;2884:25;;;2514:401;:::o;2920:428::-;2996:6;3004;3057:2;3045:9;3036:7;3032:23;3028:32;3025:52;;;3073:1;3070;3063:12;3025:52;3112:9;3099:23;3131:47;3172:5;3131:47;:::i;:::-;3197:5;-1:-1:-1;3254:2:357;3239:18;;3226:32;3267:49;3226:32;3267:49;:::i;:::-;3335:7;3325:17;;;2920:428;;;;;:::o;3353:184::-;3405:77;3402:1;3395:88;3502:4;3499:1;3492:15;3526:4;3523:1;3516:15;3542:334;3613:2;3607:9;3669:2;3659:13;;3674:66;3655:86;3643:99;;3772:18;3757:34;;3793:22;;;3754:62;3751:88;;;3819:18;;:::i;:::-;3855:2;3848:22;3542:334;;-1:-1:-1;3542:334:357:o;3881:246::-;3930:4;3963:18;3955:6;3952:30;3949:56;;;3985:18;;:::i;:::-;-1:-1:-1;4042:2:357;4030:15;4047:66;4026:88;4116:4;4022:99;;3881:246::o;4132:338::-;4197:5;4226:53;4242:36;4271:6;4242:36;:::i;:::-;4226:53;:::i;:::-;4217:62;;4302:6;4295:5;4288:21;4342:3;4333:6;4328:3;4324:16;4321:25;4318:45;;;4359:1;4356;4349:12;4318:45;4408:6;4403:3;4396:4;4389:5;4385:16;4372:43;4462:1;4455:4;4446:6;4439:5;4435:18;4431:29;4424:40;4132:338;;;;;:::o;4475:222::-;4518:5;4571:3;4564:4;4556:6;4552:17;4548:27;4538:55;;4589:1;4586;4579:12;4538:55;4611:80;4687:3;4678:6;4665:20;4658:4;4650:6;4646:17;4611:80;:::i;4702:473::-;4780:6;4788;4841:2;4829:9;4820:7;4816:23;4812:32;4809:52;;;4857:1;4854;4847:12;4809:52;4896:9;4883:23;4915:47;4956:5;4915:47;:::i;:::-;4981:5;-1:-1:-1;5037:2:357;5022:18;;5009:32;5064:18;5053:30;;5050:50;;;5096:1;5093;5086:12;5050:50;5119;5161:7;5152:6;5141:9;5137:22;5119:50;:::i;:::-;5109:60;;;4702:473;;;;;:::o;5180:429::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5380:9;5367:23;5399:47;5440:5;5399:47;:::i;:::-;5465:5;-1:-1:-1;5522:2:357;5507:18;;5494:32;5557:1;5545:14;;5535:42;;5573:1;5570;5563:12;5614:766;5708:6;5716;5724;5777:2;5765:9;5756:7;5752:23;5748:32;5745:52;;;5793:1;5790;5783:12;5745:52;5832:9;5819:23;5851:47;5892:5;5851:47;:::i;:::-;5917:5;-1:-1:-1;5974:2:357;5959:18;;5946:32;5987:49;5946:32;5987:49;:::i;:::-;6055:7;-1:-1:-1;6113:2:357;6098:18;;6085:32;6140:18;6129:30;;6126:50;;;6172:1;6169;6162:12;6126:50;6195:22;;6248:4;6240:13;;6236:27;-1:-1:-1;6226:55:357;;6277:1;6274;6267:12;6226:55;6300:74;6366:7;6361:2;6348:16;6343:2;6339;6335:11;6300:74;:::i;:::-;6290:84;;;5614:766;;;;;:::o;6385:473::-;6463:6;6471;6524:2;6512:9;6503:7;6499:23;6495:32;6492:52;;;6540:1;6537;6530:12;6492:52;6580:9;6567:23;6613:18;6605:6;6602:30;6599:50;;;6645:1;6642;6635:12;6599:50;6668;6710:7;6701:6;6690:9;6686:22;6668:50;:::i;:::-;6658:60;;;6768:2;6757:9;6753:18;6740:32;6781:47;6822:5;6781:47;:::i;7331:267::-;7401:6;7454:2;7442:9;7433:7;7429:23;7425:32;7422:52;;;7470:1;7467;7460:12;7422:52;7502:9;7496:16;7521:47;7562:5;7521:47;:::i;7603:437::-;7682:1;7678:12;;;;7725;;;7746:61;;7800:4;7792:6;7788:17;7778:27;;7746:61;7853:2;7845:6;7842:14;7822:18;7819:38;7816:218;;7890:77;7887:1;7880:88;7991:4;7988:1;7981:15;8019:4;8016:1;8009:15;8171:1021;8280:4;8309:2;8338;8327:9;8320:21;8361:1;8394:6;8388:13;8424:36;8450:9;8424:36;:::i;:::-;8496:6;8491:2;8480:9;8476:18;8469:34;8522:2;8543:1;8575:2;8564:9;8560:18;8592:1;8587:216;;;;8817:1;8812:354;;;;8553:613;;8587:216;8650:66;8639:9;8635:82;8630:2;8619:9;8615:18;8608:110;8790:2;8778:6;8771:14;8764:22;8761:1;8757:30;8746:9;8742:46;8738:55;8731:62;;8587:216;;8812:354;8843:6;8840:1;8833:17;8891:2;8888:1;8878:16;8916:1;8930:180;8944:6;8941:1;8938:13;8930:180;;;9037:14;;9013:17;;;9009:26;;9002:50;9080:16;;;;8959:10;;8930:180;;;9134:17;;9130:26;;;-1:-1:-1;;8553:613:357;-1:-1:-1;9183:3:357;;8171:1021;-1:-1:-1;;;;;;;;8171:1021:357:o;9556:545::-;9658:2;9653:3;9650:11;9647:448;;;9694:1;9719:5;9715:2;9708:17;9764:4;9760:2;9750:19;9834:2;9822:10;9818:19;9815:1;9811:27;9805:4;9801:38;9870:4;9858:10;9855:20;9852:47;;;-1:-1:-1;9893:4:357;9852:47;9948:2;9943:3;9939:12;9936:1;9932:20;9926:4;9922:31;9912:41;;10003:82;10021:2;10014:5;10011:13;10003:82;;;10066:17;;;10047:1;10036:13;10003:82;;10337:1471;10463:3;10457:10;10490:18;10482:6;10479:30;10476:56;;;10512:18;;:::i;:::-;10541:97;10631:6;10591:38;10623:4;10617:11;10591:38;:::i;:::-;10585:4;10541:97;:::i;:::-;10693:4;;10757:2;10746:14;;10774:1;10769:782;;;;11595:1;11612:6;11609:89;;;-1:-1:-1;11664:19:357;;;11658:26;11609:89;10243:66;10234:1;10230:11;;;10226:84;10222:89;10212:100;10318:1;10314:11;;;10209:117;11711:81;;10739:1063;;10769:782;8118:1;8111:14;;;8155:4;8142:18;;10817:66;10805:79;;;10982:236;10996:7;10993:1;10990:14;10982:236;;;11085:19;;;11079:26;11064:42;;11177:27;;;;11145:1;11133:14;;;;11012:19;;10982:236;;;10986:3;11246:6;11237:7;11234:19;11231:261;;;11307:19;;;11301:26;11408:66;11390:1;11386:14;;;11402:3;11382:24;11378:97;11374:102;11359:118;11344:134;;11231:261;-1:-1:-1;;;;;11538:1:357;11522:14;;;11518:22;11505:36;;-1:-1:-1;10337:1471:357:o;11813:338::-;12000:42;11992:6;11988:55;11977:9;11970:74;12080:2;12075;12064:9;12060:18;12053:30;11951:4;12100:45;12141:2;12130:9;12126:18;12118:6;12100:45;:::i;:::-;12092:53;11813:338;-1:-1:-1;;;;11813:338:357:o;12156:635::-;12235:6;12288:2;12276:9;12267:7;12263:23;12259:32;12256:52;;;12304:1;12301;12294:12;12256:52;12337:9;12331:16;12370:18;12362:6;12359:30;12356:50;;;12402:1;12399;12392:12;12356:50;12425:22;;12478:4;12470:13;;12466:27;-1:-1:-1;12456:55:357;;12507:1;12504;12497:12;12456:55;12536:2;12530:9;12561:49;12577:32;12606:2;12577:32;:::i;12561:49::-;12633:2;12626:5;12619:17;12673:7;12668:2;12663;12659;12655:11;12651:20;12648:33;12645:53;;;12694:1;12691;12684:12;12645:53;12707:54;12758:2;12753;12746:5;12742:14;12737:2;12733;12729:11;12707:54;:::i;:::-;12780:5;12156:635;-1:-1:-1;;;;;12156:635:357:o;12796:274::-;12925:3;12963:6;12957:13;12979:53;13025:6;13020:3;13013:4;13005:6;13001:17;12979:53;:::i;:::-;13048:16;;;;;12796:274;-1:-1:-1;;12796:274:357:o;13743:340::-;13920:2;13909:9;13902:21;13883:4;13940:45;13981:2;13970:9;13966:18;13958:6;13940:45;:::i;:::-;13932:53;;14033:42;14025:6;14021:55;14016:2;14005:9;14001:18;13994:83;13743:340;;;;;:::o;14088:184::-;14140:77;14137:1;14130:88;14237:4;14234:1;14227:15;14261:4;14258:1;14251:15", "linkReferences": {} }, "methodIdentifiers": { "addressManager()": "3ab76e9f", "changeProxyAdmin(address,address)": "7eff275e", "getProxyAdmin(address)": "f3b7dead", "getProxyImplementation(address)": "204e1c7a", "implementationName(address)": "238181ae", "isUpgrading()": "b7947262", "owner()": "8da5cb5b", "proxyType(address)": "6bd9f516", "renounceOwnership()": "715018a6", "setAddress(string,address)": "9b2ea4bd", "setAddressManager(address)": "0652b57a", "setImplementationName(address,string)": "860f7cda", "setProxyType(address,uint8)": "8d52d4a0", "setUpgrading(bool)": "07c8f7b0", "transferOwnership(address)": "f2fde38b", "upgrade(address,address)": "99a88ec4", "upgradeAndCall(address,address,bytes)": "9623609d" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"contract AddressManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"changeProxyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_proxy\",\"type\":\"address\"}],\"name\":\"getProxyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proxy\",\"type\":\"address\"}],\"name\":\"getProxyImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"implementationName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUpgrading\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"proxyType\",\"outputs\":[{\"internalType\":\"enum ProxyAdmin.ProxyType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract AddressManager\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setImplementationName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"enum ProxyAdmin.ProxyType\",\"name\":\"_type\",\"type\":\"uint8\"}],\"name\":\"setProxyType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_upgrading\",\"type\":\"bool\"}],\"name\":\"setUpgrading\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"changeProxyAdmin(address,address)\":{\"params\":{\"_newAdmin\":\"Address of the new proxy admin.\",\"_proxy\":\"Address of the proxy to update.\"}},\"constructor\":{\"params\":{\"_owner\":\"Address of the initial owner of this contract.\"}},\"getProxyAdmin(address)\":{\"params\":{\"_proxy\":\"Address of the proxy to get the admin of.\"},\"returns\":{\"_0\":\"Address of the admin of the proxy.\"}},\"getProxyImplementation(address)\":{\"params\":{\"_proxy\":\"Address of the proxy to get the implementation of.\"},\"returns\":{\"_0\":\"Address of the implementation of the proxy.\"}},\"isUpgrading()\":{\"custom:legacy\":\"@notice Legacy function used to tell ChugSplashProxy contracts if an upgrade is happening.\",\"returns\":{\"_0\":\"Whether or not there is an upgrade going on. May not actually tell you whether an         upgrade is going on, since we don't currently plan to use this variable for anything         other than a legacy indicator to fix a UX bug in the ChugSplash proxy.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAddress(string,address)\":{\"custom:legacy\":\"@notice Set an address in the address manager. Since only the owner of the AddressManager         can directly modify addresses and the ProxyAdmin will own the AddressManager, this         gives the owner of the ProxyAdmin the ability to modify addresses directly.\",\"params\":{\"_address\":\"Address to attach to the given name.\",\"_name\":\"Name to set within the AddressManager.\"}},\"setAddressManager(address)\":{\"params\":{\"_address\":\"Address of the AddressManager.\"}},\"setImplementationName(address,string)\":{\"params\":{\"_address\":\"Address of the ResolvedDelegateProxy.\",\"_name\":\"Name of the implementation for the proxy.\"}},\"setProxyType(address,uint8)\":{\"params\":{\"_address\":\"Address of the proxy.\",\"_type\":\"Type of the proxy.\"}},\"setUpgrading(bool)\":{\"custom:legacy\":\"@notice Set the upgrading status for the Chugsplash proxy type.\",\"params\":{\"_upgrading\":\"Whether or not the system is upgrading.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgrade(address,address)\":{\"params\":{\"_implementation\":\"Address of the new implementation address.\",\"_proxy\":\"Address of the proxy to upgrade.\"}},\"upgradeAndCall(address,address,bytes)\":{\"params\":{\"_data\":\"Data to trigger the new implementation with.\",\"_implementation\":\"Address of the new implementation address.\",\"_proxy\":\"Address of the proxy to upgrade.\"}}},\"title\":\"ProxyAdmin\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addressManager()\":{\"notice\":\"The address of the address manager, this is required to manage the         ResolvedDelegateProxy type.\"},\"changeProxyAdmin(address,address)\":{\"notice\":\"Updates the admin of the given proxy address.\"},\"getProxyAdmin(address)\":{\"notice\":\"Returns the admin of the given proxy address.\"},\"getProxyImplementation(address)\":{\"notice\":\"Returns the implementation of the given proxy address.\"},\"implementationName(address)\":{\"notice\":\"A reverse mapping of addresses to names held in the AddressManager. This must be         manually kept up to date with changes in the AddressManager for this contract         to be able to work as an admin for the ResolvedDelegateProxy type.\"},\"proxyType(address)\":{\"notice\":\"A mapping of proxy types, used for backwards compatibility.\"},\"setAddressManager(address)\":{\"notice\":\"Set the address of the AddressManager. This is required to manage legacy         ResolvedDelegateProxy type proxy contracts.\"},\"setImplementationName(address,string)\":{\"notice\":\"Sets the implementation name for a given address. Only required for         ResolvedDelegateProxy type proxies that have an implementation name.\"},\"setProxyType(address,uint8)\":{\"notice\":\"Sets the proxy type for a given address. Only required for non-standard (legacy)         proxy types.\"},\"upgrade(address,address)\":{\"notice\":\"Changes a proxy's implementation contract.\"},\"upgradeAndCall(address,address,bytes)\":{\"notice\":\"Changes a proxy's implementation contract and delegatecalls the new implementation         with some given data. Useful for atomic upgrade-and-initialize calls.\"}},\"notice\":\"This is an auxiliary contract meant to be assigned as the admin of an ERC1967 Proxy,         based on the OpenZeppelin implementation. It has backwards compatibility logic to work         with the various types of proxies that have been deployed by Optimism in the past.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/legacy/AddressManager.sol\":{\"keccak256\":\"0x1fcb990df6473f7fa360d5924d62d39ce2ca97d45668e3901e5405cfbe598b19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d08358b60dea54dbc32e988a1bb7ea909488063eaae3c5ae28a322f125c9b34\",\"dweb:/ipfs/QmZPQwdjLh9gaamNAoTUmWwwbRKj3yHovBYfnTPnfuKvUt\"]},\"src/legacy/L1ChugSplashProxy.sol\":{\"keccak256\":\"0xdde5626645fa217ad3a37805c4c3012e4251de01df868aae73b986f5d03cdb23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a99fd0ec440c17c826465001dc88c5185dd41dc72396254fdd3cdfcc84aeae8c\",\"dweb:/ipfs/QmStHuecN89zBL8FH9SUK1TtkyYwfzMY2KkQaFJLHZLuyA\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/universal/Proxy.sol\":{\"keccak256\":\"0x4f6f02e154bbb37137bcedcc256bef1e647865c79ec694fcaf5b6968799d7ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00df4d4c6f4813c883eb33e1ec812c953840e78237fecf09c5739389c0777223\",\"dweb:/ipfs/QmQ1D5j7EwxBPtbQju55hKFQuruAwm8gnPHUTSXtDFjHUe\"]},\"src/universal/ProxyAdmin.sol\":{\"keccak256\":\"0xd15267cf5ed8c24d5a0f2099b8d470178d7ad729db52be16232eb143620b8dcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9300ee0feb16fcf6c06ee541f2496eac533256bd97f79fe2128527d2f096894\",\"dweb:/ipfs/Qme3Md8pGSnjkG94WFXUdi5UF3a47BTQgKCdGmTKcMgcRa\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.15+commit.e14f2714" }, "language": "Solidity", "output": { "abi": [{ "inputs": [{ "internalType": "address", "name": "_owner", "type": "address" }], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }], "type": "event", "name": "OwnershipTransferred", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "addressManager", "outputs": [{ "internalType": "contract AddressManager", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address payable", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_newAdmin", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "changeProxyAdmin" }, { "inputs": [{ "internalType": "address payable", "name": "_proxy", "type": "address" }], "stateMutability": "view", "type": "function", "name": "getProxyAdmin", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "_proxy", "type": "address" }], "stateMutability": "view", "type": "function", "name": "getProxyImplementation", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function", "name": "implementationName", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "isUpgrading", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "owner", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function", "name": "proxyType", "outputs": [{ "internalType": "enum ProxyAdmin.ProxyType", "name": "", "type": "uint8" }] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, { "inputs": [{ "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_address", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "setAddress" }, { "inputs": [{ "internalType": "contract AddressManager", "name": "_address", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "setAddressManager" }, { "inputs": [{ "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }], "stateMutability": "nonpayable", "type": "function", "name": "setImplementationName" }, { "inputs": [{ "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "enum ProxyAdmin.ProxyType", "name": "_type", "type": "uint8" }], "stateMutability": "nonpayable", "type": "function", "name": "setProxyType" }, { "inputs": [{ "internalType": "bool", "name": "_upgrading", "type": "bool" }], "stateMutability": "nonpayable", "type": "function", "name": "setUpgrading" }, { "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "transferOwnership" }, { "inputs": [{ "internalType": "address payable", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "upgrade" }, { "inputs": [{ "internalType": "address payable", "name": "_proxy", "type": "address" }, { "internalType": "address", "name": "_implementation", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }], "stateMutability": "payable", "type": "function", "name": "upgradeAndCall" }], "devdoc": { "kind": "dev", "methods": { "changeProxyAdmin(address,address)": { "params": { "_newAdmin": "Address of the new proxy admin.", "_proxy": "Address of the proxy to update." } }, "constructor": { "params": { "_owner": "Address of the initial owner of this contract." } }, "getProxyAdmin(address)": { "params": { "_proxy": "Address of the proxy to get the admin of." }, "returns": { "_0": "Address of the admin of the proxy." } }, "getProxyImplementation(address)": { "params": { "_proxy": "Address of the proxy to get the implementation of." }, "returns": { "_0": "Address of the implementation of the proxy." } }, "isUpgrading()": { "custom:legacy": "@notice Legacy function used to tell ChugSplashProxy contracts if an upgrade is happening.", "returns": { "_0": "Whether or not there is an upgrade going on. May not actually tell you whether an         upgrade is going on, since we don't currently plan to use this variable for anything         other than a legacy indicator to fix a UX bug in the ChugSplash proxy." } }, "owner()": { "details": "Returns the address of the current owner." }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." }, "setAddress(string,address)": { "custom:legacy": "@notice Set an address in the address manager. Since only the owner of the AddressManager         can directly modify addresses and the ProxyAdmin will own the AddressManager, this         gives the owner of the ProxyAdmin the ability to modify addresses directly.", "params": { "_address": "Address to attach to the given name.", "_name": "Name to set within the AddressManager." } }, "setAddressManager(address)": { "params": { "_address": "Address of the AddressManager." } }, "setImplementationName(address,string)": { "params": { "_address": "Address of the ResolvedDelegateProxy.", "_name": "Name of the implementation for the proxy." } }, "setProxyType(address,uint8)": { "params": { "_address": "Address of the proxy.", "_type": "Type of the proxy." } }, "setUpgrading(bool)": { "custom:legacy": "@notice Set the upgrading status for the Chugsplash proxy type.", "params": { "_upgrading": "Whether or not the system is upgrading." } }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "upgrade(address,address)": { "params": { "_implementation": "Address of the new implementation address.", "_proxy": "Address of the proxy to upgrade." } }, "upgradeAndCall(address,address,bytes)": { "params": { "_data": "Data to trigger the new implementation with.", "_implementation": "Address of the new implementation address.", "_proxy": "Address of the proxy to upgrade." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "addressManager()": { "notice": "The address of the address manager, this is required to manage the         ResolvedDelegateProxy type." }, "changeProxyAdmin(address,address)": { "notice": "Updates the admin of the given proxy address." }, "getProxyAdmin(address)": { "notice": "Returns the admin of the given proxy address." }, "getProxyImplementation(address)": { "notice": "Returns the implementation of the given proxy address." }, "implementationName(address)": { "notice": "A reverse mapping of addresses to names held in the AddressManager. This must be         manually kept up to date with changes in the AddressManager for this contract         to be able to work as an admin for the ResolvedDelegateProxy type." }, "proxyType(address)": { "notice": "A mapping of proxy types, used for backwards compatibility." }, "setAddressManager(address)": { "notice": "Set the address of the AddressManager. This is required to manage legacy         ResolvedDelegateProxy type proxy contracts." }, "setImplementationName(address,string)": { "notice": "Sets the implementation name for a given address. Only required for         ResolvedDelegateProxy type proxies that have an implementation name." }, "setProxyType(address,uint8)": { "notice": "Sets the proxy type for a given address. Only required for non-standard (legacy)         proxy types." }, "upgrade(address,address)": { "notice": "Changes a proxy's implementation contract." }, "upgradeAndCall(address,address,bytes)": { "notice": "Changes a proxy's implementation contract and delegatecalls the new implementation         with some given data. Useful for atomic upgrade-and-initialize calls." } }, "version": 1 } }, "settings": { "remappings": ["@lib-keccak/=lib/lib-keccak/contracts/lib/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@rari-capital/solmate/=lib/solmate/", "@solady-test/=lib/lib-keccak/lib/solady/test/", "@solady/=lib/solady/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/", "lib-keccak/=lib/lib-keccak/contracts/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "safe-contracts/=lib/safe-contracts/contracts/", "solady/=lib/solady/", "solmate/=lib/solmate/src/"], "optimizer": { "enabled": true, "runs": 999999 }, "metadata": { "bytecodeHash": "none" }, "compilationTarget": { "src/universal/ProxyAdmin.sol": "ProxyAdmin" }, "evmVersion": "london", "libraries": {} }, "sources": { "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", "urls": ["bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66", "urls": ["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f", "dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10", "urls": ["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487", "dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": ["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { "keccak256": "0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0", "urls": ["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929", "dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { "keccak256": "0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7", "urls": ["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689", "dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"], "license": "MIT" }, "lib/solmate/src/utils/FixedPointMathLib.sol": { "keccak256": "0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d", "urls": ["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c", "dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"], "license": "MIT" }, "src/L1/ResourceMetering.sol": { "keccak256": "0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408", "urls": ["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409", "dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"], "license": "MIT" }, "src/legacy/AddressManager.sol": { "keccak256": "0x1fcb990df6473f7fa360d5924d62d39ce2ca97d45668e3901e5405cfbe598b19", "urls": ["bzz-raw://9d08358b60dea54dbc32e988a1bb7ea909488063eaae3c5ae28a322f125c9b34", "dweb:/ipfs/QmZPQwdjLh9gaamNAoTUmWwwbRKj3yHovBYfnTPnfuKvUt"], "license": "MIT" }, "src/legacy/L1ChugSplashProxy.sol": { "keccak256": "0xdde5626645fa217ad3a37805c4c3012e4251de01df868aae73b986f5d03cdb23", "urls": ["bzz-raw://a99fd0ec440c17c826465001dc88c5185dd41dc72396254fdd3cdfcc84aeae8c", "dweb:/ipfs/QmStHuecN89zBL8FH9SUK1TtkyYwfzMY2KkQaFJLHZLuyA"], "license": "MIT" }, "src/libraries/Arithmetic.sol": { "keccak256": "0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db", "urls": ["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72", "dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"], "license": "MIT" }, "src/libraries/Burn.sol": { "keccak256": "0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010", "urls": ["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f", "dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"], "license": "MIT" }, "src/libraries/Constants.sol": { "keccak256": "0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132", "urls": ["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b", "dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"], "license": "MIT" }, "src/universal/Proxy.sol": { "keccak256": "0x4f6f02e154bbb37137bcedcc256bef1e647865c79ec694fcaf5b6968799d7ddc", "urls": ["bzz-raw://00df4d4c6f4813c883eb33e1ec812c953840e78237fecf09c5739389c0777223", "dweb:/ipfs/QmQ1D5j7EwxBPtbQju55hKFQuruAwm8gnPHUTSXtDFjHUe"], "license": "MIT" }, "src/universal/ProxyAdmin.sol": { "keccak256": "0xd15267cf5ed8c24d5a0f2099b8d470178d7ad729db52be16232eb143620b8dcf", "urls": ["bzz-raw://e9300ee0feb16fcf6c06ee541f2496eac533256bd97f79fe2128527d2f096894", "dweb:/ipfs/Qme3Md8pGSnjkG94WFXUdi5UF3a47BTQgKCdGmTKcMgcRa"], "license": "MIT" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 49330, "contract": "src/universal/ProxyAdmin.sol:ProxyAdmin", "label": "_owner", "offset": 0, "slot": "0", "type": "t_address" }, { "astId": 110483, "contract": "src/universal/ProxyAdmin.sol:ProxyAdmin", "label": "proxyType", "offset": 0, "slot": "1", "type": "t_mapping(t_address,t_enum(ProxyType)110477)" }, { "astId": 110488, "contract": "src/universal/ProxyAdmin.sol:ProxyAdmin", "label": "implementationName", "offset": 0, "slot": "2", "type": "t_mapping(t_address,t_string_storage)" }, { "astId": 110492, "contract": "src/universal/ProxyAdmin.sol:ProxyAdmin", "label": "addressManager", "offset": 0, "slot": "3", "type": "t_contract(AddressManager)102008" }, { "astId": 110495, "contract": "src/universal/ProxyAdmin.sol:ProxyAdmin", "label": "upgrading", "offset": 20, "slot": "3", "type": "t_bool" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_contract(AddressManager)102008": { "encoding": "inplace", "label": "contract AddressManager", "numberOfBytes": "20" }, "t_enum(ProxyType)110477": { "encoding": "inplace", "label": "enum ProxyAdmin.ProxyType", "numberOfBytes": "1" }, "t_mapping(t_address,t_enum(ProxyType)110477)": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => enum ProxyAdmin.ProxyType)", "numberOfBytes": "32", "value": "t_enum(ProxyType)110477" }, "t_mapping(t_address,t_string_storage)": { "encoding": "mapping", "key": "t_address", "label": "mapping(address => string)", "numberOfBytes": "32", "value": "t_string_storage" }, "t_string_storage": { "encoding": "bytes", "label": "string", "numberOfBytes": "32" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "addressManager()": { "notice": "The address of the address manager, this is required to manage the         ResolvedDelegateProxy type." }, "changeProxyAdmin(address,address)": { "notice": "Updates the admin of the given proxy address." }, "getProxyAdmin(address)": { "notice": "Returns the admin of the given proxy address." }, "getProxyImplementation(address)": { "notice": "Returns the implementation of the given proxy address." }, "implementationName(address)": { "notice": "A reverse mapping of addresses to names held in the AddressManager. This must be         manually kept up to date with changes in the AddressManager for this contract         to be able to work as an admin for the ResolvedDelegateProxy type." }, "proxyType(address)": { "notice": "A mapping of proxy types, used for backwards compatibility." }, "setAddressManager(address)": { "notice": "Set the address of the AddressManager. This is required to manage legacy         ResolvedDelegateProxy type proxy contracts." }, "setImplementationName(address,string)": { "notice": "Sets the implementation name for a given address. Only required for         ResolvedDelegateProxy type proxies that have an implementation name." }, "setProxyType(address,uint8)": { "notice": "Sets the proxy type for a given address. Only required for non-standard (legacy)         proxy types." }, "upgrade(address,address)": { "notice": "Changes a proxy's implementation contract." }, "upgradeAndCall(address,address,bytes)": { "notice": "Changes a proxy's implementation contract and delegatecalls the new implementation         with some given data. Useful for atomic upgrade-and-initialize calls." } }, "notice": "This is an auxiliary contract meant to be assigned as the admin of an ERC1967 Proxy,         based on the OpenZeppelin implementation. It has backwards compatibility logic to work         with the various types of proxies that have been deployed by Optimism in the past." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "changeProxyAdmin(address,address)": { "params": { "_newAdmin": "Address of the new proxy admin.", "_proxy": "Address of the proxy to update." } }, "constructor": { "params": { "_owner": "Address of the initial owner of this contract." } }, "getProxyAdmin(address)": { "params": { "_proxy": "Address of the proxy to get the admin of." }, "returns": { "_0": "Address of the admin of the proxy." } }, "getProxyImplementation(address)": { "params": { "_proxy": "Address of the proxy to get the implementation of." }, "returns": { "_0": "Address of the implementation of the proxy." } }, "isUpgrading()": { "returns": { "_0": "Whether or not there is an upgrade going on. May not actually tell you whether an         upgrade is going on, since we don't currently plan to use this variable for anything         other than a legacy indicator to fix a UX bug in the ChugSplash proxy." } }, "owner()": { "details": "Returns the address of the current owner." }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." }, "setAddress(string,address)": { "params": { "_address": "Address to attach to the given name.", "_name": "Name to set within the AddressManager." } }, "setAddressManager(address)": { "params": { "_address": "Address of the AddressManager." } }, "setImplementationName(address,string)": { "params": { "_address": "Address of the ResolvedDelegateProxy.", "_name": "Name of the implementation for the proxy." } }, "setProxyType(address,uint8)": { "params": { "_address": "Address of the proxy.", "_type": "Type of the proxy." } }, "setUpgrading(bool)": { "params": { "_upgrading": "Whether or not the system is upgrading." } }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "upgrade(address,address)": { "params": { "_implementation": "Address of the new implementation address.", "_proxy": "Address of the proxy to upgrade." } }, "upgradeAndCall(address,address,bytes)": { "params": { "_data": "Data to trigger the new implementation with.", "_implementation": "Address of the new implementation address.", "_proxy": "Address of the proxy to upgrade." } } }, "title": "ProxyAdmin" }, "ast": { "absolutePath": "src/universal/ProxyAdmin.sol", "id": 110910, "exportedSymbols": { "AddressManager": [102008], "Constants": [103096], "IStaticERC1967Proxy": [110458], "IStaticL1ChugSplashProxy": [110470], "L1ChugSplashProxy": [102516], "Ownable": [49435], "Proxy": [110434], "ProxyAdmin": [110909] }, "nodeType": "SourceUnit", "src": "32:9246:234", "nodes": [{ "id": 110436, "nodeType": "PragmaDirective", "src": "32:23:234", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 110438, "nodeType": "ImportDirective", "src": "57:69:234", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", "file": "@openzeppelin/contracts/access/Ownable.sol", "nameLocation": "-1:-1:-1", "scope": 110910, "sourceUnit": 49436, "symbolAliases": [{ "foreign": { "id": 110437, "name": "Ownable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49435, "src": "66:7:234", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 110440, "nodeType": "ImportDirective", "src": "127:48:234", "nodes": [], "absolutePath": "src/universal/Proxy.sol", "file": "src/universal/Proxy.sol", "nameLocation": "-1:-1:-1", "scope": 110910, "sourceUnit": 110435, "symbolAliases": [{ "foreign": { "id": 110439, "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110434, "src": "136:5:234", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 110442, "nodeType": "ImportDirective", "src": "176:63:234", "nodes": [], "absolutePath": "src/legacy/AddressManager.sol", "file": "src/legacy/AddressManager.sol", "nameLocation": "-1:-1:-1", "scope": 110910, "sourceUnit": 102009, "symbolAliases": [{ "foreign": { "id": 110441, "name": "AddressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102008, "src": "185:14:234", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 110444, "nodeType": "ImportDirective", "src": "240:69:234", "nodes": [], "absolutePath": "src/legacy/L1ChugSplashProxy.sol", "file": "src/legacy/L1ChugSplashProxy.sol", "nameLocation": "-1:-1:-1", "scope": 110910, "sourceUnit": 102517, "symbolAliases": [{ "foreign": { "id": 110443, "name": "L1ChugSplashProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102516, "src": "249:17:234", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 110446, "nodeType": "ImportDirective", "src": "310:56:234", "nodes": [], "absolutePath": "src/libraries/Constants.sol", "file": "src/libraries/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 110910, "sourceUnit": 103097, "symbolAliases": [{ "foreign": { "id": 110445, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "319:9:234", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 110458, "nodeType": "ContractDefinition", "src": "483:151:234", "nodes": [{ "id": 110452, "nodeType": "FunctionDefinition", "src": "519:58:234", "nodes": [], "functionSelector": "5c60da1b", "implemented": false, "kind": "function", "modifiers": [], "name": "implementation", "nameLocation": "528:14:234", "parameters": { "id": 110448, "nodeType": "ParameterList", "parameters": [], "src": "542:2:234" }, "returnParameters": { "id": 110451, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110450, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110452, "src": "568:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110449, "name": "address", "nodeType": "ElementaryTypeName", "src": "568:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "567:9:234" }, "scope": 110458, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 110457, "nodeType": "FunctionDefinition", "src": "583:49:234", "nodes": [], "functionSelector": "f851a440", "implemented": false, "kind": "function", "modifiers": [], "name": "admin", "nameLocation": "592:5:234", "parameters": { "id": 110453, "nodeType": "ParameterList", "parameters": [], "src": "597:2:234" }, "returnParameters": { "id": 110456, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110455, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110457, "src": "623:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110454, "name": "address", "nodeType": "ElementaryTypeName", "src": "623:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "622:9:234" }, "scope": 110458, "stateMutability": "view", "virtual": false, "visibility": "external" }], "abstract": false, "baseContracts": [], "canonicalName": "IStaticERC1967Proxy", "contractDependencies": [], "contractKind": "interface", "documentation": { "id": 110447, "nodeType": "StructuredDocumentation", "src": "368:115:234", "text": "@title IStaticERC1967Proxy\n @notice IStaticERC1967Proxy is a static version of the ERC1967 proxy interface." }, "fullyImplemented": false, "linearizedBaseContracts": [110458], "name": "IStaticERC1967Proxy", "nameLocation": "493:19:234", "scope": 110910, "usedErrors": [] }, { "id": 110470, "nodeType": "ContractDefinition", "src": "764:162:234", "nodes": [{ "id": 110464, "nodeType": "FunctionDefinition", "src": "805:61:234", "nodes": [], "functionSelector": "aaf10f42", "implemented": false, "kind": "function", "modifiers": [], "name": "getImplementation", "nameLocation": "814:17:234", "parameters": { "id": 110460, "nodeType": "ParameterList", "parameters": [], "src": "831:2:234" }, "returnParameters": { "id": 110463, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110462, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110464, "src": "857:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110461, "name": "address", "nodeType": "ElementaryTypeName", "src": "857:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "856:9:234" }, "scope": 110470, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 110469, "nodeType": "FunctionDefinition", "src": "872:52:234", "nodes": [], "functionSelector": "893d20e8", "implemented": false, "kind": "function", "modifiers": [], "name": "getOwner", "nameLocation": "881:8:234", "parameters": { "id": 110465, "nodeType": "ParameterList", "parameters": [], "src": "889:2:234" }, "returnParameters": { "id": 110468, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110467, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110469, "src": "915:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110466, "name": "address", "nodeType": "ElementaryTypeName", "src": "915:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "914:9:234" }, "scope": 110470, "stateMutability": "view", "virtual": false, "visibility": "external" }], "abstract": false, "baseContracts": [], "canonicalName": "IStaticL1ChugSplashProxy", "contractDependencies": [], "contractKind": "interface", "documentation": { "id": 110459, "nodeType": "StructuredDocumentation", "src": "636:128:234", "text": "@title IStaticL1ChugSplashProxy\n @notice IStaticL1ChugSplashProxy is a static version of the ChugSplash proxy interface." }, "fullyImplemented": false, "linearizedBaseContracts": [110470], "name": "IStaticL1ChugSplashProxy", "nameLocation": "774:24:234", "scope": 110910, "usedErrors": [] }, { "id": 110909, "nodeType": "ContractDefinition", "src": "1241:8036:234", "nodes": [{ "id": 110477, "nodeType": "EnumDefinition", "src": "1602:76:234", "nodes": [], "canonicalName": "ProxyAdmin.ProxyType", "members": [{ "id": 110474, "name": "ERC1967", "nameLocation": "1627:7:234", "nodeType": "EnumValue", "src": "1627:7:234" }, { "id": 110475, "name": "CHUGSPLASH", "nameLocation": "1644:10:234", "nodeType": "EnumValue", "src": "1644:10:234" }, { "id": 110476, "name": "RESOLVED", "nameLocation": "1664:8:234", "nodeType": "EnumValue", "src": "1664:8:234" }], "name": "ProxyType", "nameLocation": "1607:9:234" }, { "id": 110483, "nodeType": "VariableDeclaration", "src": "1760:46:234", "nodes": [], "constant": false, "documentation": { "id": 110478, "nodeType": "StructuredDocumentation", "src": "1684:71:234", "text": "@notice A mapping of proxy types, used for backwards compatibility." }, "functionSelector": "6bd9f516", "mutability": "mutable", "name": "proxyType", "nameLocation": "1797:9:234", "scope": 110909, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" }, "typeName": { "id": 110482, "keyType": { "id": 110479, "name": "address", "nodeType": "ElementaryTypeName", "src": "1768:7:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1760:29:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" }, "valueType": { "id": 110481, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110480, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "1779:9:234" }, "referencedDeclaration": 110477, "src": "1779:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } } }, "visibility": "public" }, { "id": 110488, "nodeType": "VariableDeclaration", "src": "2087:52:234", "nodes": [], "constant": false, "documentation": { "id": 110484, "nodeType": "StructuredDocumentation", "src": "1813:269:234", "text": "@notice A reverse mapping of addresses to names held in the AddressManager. This must be\n         manually kept up to date with changes in the AddressManager for this contract\n         to be able to work as an admin for the ResolvedDelegateProxy type." }, "functionSelector": "238181ae", "mutability": "mutable", "name": "implementationName", "nameLocation": "2121:18:234", "scope": 110909, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$", "typeString": "mapping(address => string)" }, "typeName": { "id": 110487, "keyType": { "id": 110485, "name": "address", "nodeType": "ElementaryTypeName", "src": "2095:7:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "2087:26:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$", "typeString": "mapping(address => string)" }, "valueType": { "id": 110486, "name": "string", "nodeType": "ElementaryTypeName", "src": "2106:6:234", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } } }, "visibility": "public" }, { "id": 110492, "nodeType": "VariableDeclaration", "src": "2273:36:234", "nodes": [], "constant": false, "documentation": { "id": 110489, "nodeType": "StructuredDocumentation", "src": "2146:122:234", "text": "@notice The address of the address manager, this is required to manage the\n         ResolvedDelegateProxy type." }, "functionSelector": "3ab76e9f", "mutability": "mutable", "name": "addressManager", "nameLocation": "2295:14:234", "scope": 110909, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" }, "typeName": { "id": 110491, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110490, "name": "AddressManager", "nodeType": "IdentifierPath", "referencedDeclaration": 102008, "src": "2273:14:234" }, "referencedDeclaration": 102008, "src": "2273:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "visibility": "public" }, { "id": 110495, "nodeType": "VariableDeclaration", "src": "2395:23:234", "nodes": [], "constant": false, "documentation": { "id": 110493, "nodeType": "StructuredDocumentation", "src": "2316:74:234", "text": "@notice A legacy upgrading indicator used by the old Chugsplash Proxy." }, "mutability": "mutable", "name": "upgrading", "nameLocation": "2409:9:234", "scope": 110909, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 110494, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2395:4:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "id": 110508, "nodeType": "FunctionDefinition", "src": "2494:81:234", "nodes": [], "body": { "id": 110507, "nodeType": "Block", "src": "2532:43:234", "nodes": [], "statements": [{ "expression": { "arguments": [{ "id": 110504, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110498, "src": "2561:6:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 110503, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49434, "src": "2542:18:234", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 110505, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2542:26:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110506, "nodeType": "ExpressionStatement", "src": "2542:26:234" }] }, "documentation": { "id": 110496, "nodeType": "StructuredDocumentation", "src": "2425:64:234", "text": "@param _owner Address of the initial owner of this contract." }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [], "id": 110501, "kind": "baseConstructorSpecifier", "modifierName": { "id": 110500, "name": "Ownable", "nodeType": "IdentifierPath", "referencedDeclaration": 49435, "src": "2522:7:234" }, "nodeType": "ModifierInvocation", "src": "2522:9:234" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 110499, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110498, "mutability": "mutable", "name": "_owner", "nameLocation": "2514:6:234", "nodeType": "VariableDeclaration", "scope": 110508, "src": "2506:14:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110497, "name": "address", "nodeType": "ElementaryTypeName", "src": "2506:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "2505:16:234" }, "returnParameters": { "id": 110502, "nodeType": "ParameterList", "parameters": [], "src": "2532:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 110526, "nodeType": "FunctionDefinition", "src": "2796:120:234", "nodes": [], "body": { "id": 110525, "nodeType": "Block", "src": "2872:44:234", "nodes": [], "statements": [{ "expression": { "id": 110523, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 110519, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "2882:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110521, "indexExpression": { "id": 110520, "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110511, "src": "2892:8:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2882:19:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 110522, "name": "_type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110514, "src": "2904:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "2882:27:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "id": 110524, "nodeType": "ExpressionStatement", "src": "2882:27:234" }] }, "documentation": { "id": 110509, "nodeType": "StructuredDocumentation", "src": "2581:210:234", "text": "@notice Sets the proxy type for a given address. Only required for non-standard (legacy)\n         proxy types.\n @param _address Address of the proxy.\n @param _type    Type of the proxy." }, "functionSelector": "8d52d4a0", "implemented": true, "kind": "function", "modifiers": [{ "id": 110517, "kind": "modifierInvocation", "modifierName": { "id": 110516, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "2862:9:234" }, "nodeType": "ModifierInvocation", "src": "2862:9:234" }], "name": "setProxyType", "nameLocation": "2805:12:234", "parameters": { "id": 110515, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110511, "mutability": "mutable", "name": "_address", "nameLocation": "2826:8:234", "nodeType": "VariableDeclaration", "scope": 110526, "src": "2818:16:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110510, "name": "address", "nodeType": "ElementaryTypeName", "src": "2818:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 110514, "mutability": "mutable", "name": "_type", "nameLocation": "2846:5:234", "nodeType": "VariableDeclaration", "scope": 110526, "src": "2836:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110513, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110512, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "2836:9:234" }, "referencedDeclaration": 110477, "src": "2836:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "src": "2817:35:234" }, "returnParameters": { "id": 110518, "nodeType": "ParameterList", "parameters": [], "src": "2872:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110543, "nodeType": "FunctionDefinition", "src": "3219:142:234", "nodes": [], "body": { "id": 110542, "nodeType": "Block", "src": "3308:53:234", "nodes": [], "statements": [{ "expression": { "id": 110540, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 110536, "name": "implementationName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110488, "src": "3318:18:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$", "typeString": "mapping(address => string storage ref)" } }, "id": 110538, "indexExpression": { "id": 110537, "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110529, "src": "3337:8:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3318:28:234", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 110539, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110531, "src": "3349:5:234", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "3318:36:234", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 110541, "nodeType": "ExpressionStatement", "src": "3318:36:234" }] }, "documentation": { "id": 110527, "nodeType": "StructuredDocumentation", "src": "2922:292:234", "text": "@notice Sets the implementation name for a given address. Only required for\n         ResolvedDelegateProxy type proxies that have an implementation name.\n @param _address Address of the ResolvedDelegateProxy.\n @param _name    Name of the implementation for the proxy." }, "functionSelector": "860f7cda", "implemented": true, "kind": "function", "modifiers": [{ "id": 110534, "kind": "modifierInvocation", "modifierName": { "id": 110533, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "3298:9:234" }, "nodeType": "ModifierInvocation", "src": "3298:9:234" }], "name": "setImplementationName", "nameLocation": "3228:21:234", "parameters": { "id": 110532, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110529, "mutability": "mutable", "name": "_address", "nameLocation": "3258:8:234", "nodeType": "VariableDeclaration", "scope": 110543, "src": "3250:16:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110528, "name": "address", "nodeType": "ElementaryTypeName", "src": "3250:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 110531, "mutability": "mutable", "name": "_name", "nameLocation": "3282:5:234", "nodeType": "VariableDeclaration", "scope": 110543, "src": "3268:19:234", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 110530, "name": "string", "nodeType": "ElementaryTypeName", "src": "3268:6:234", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }], "src": "3249:39:234" }, "returnParameters": { "id": 110535, "nodeType": "ParameterList", "parameters": [], "src": "3308:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110557, "nodeType": "FunctionDefinition", "src": "3571:113:234", "nodes": [], "body": { "id": 110556, "nodeType": "Block", "src": "3642:42:234", "nodes": [], "statements": [{ "expression": { "id": 110554, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 110552, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "3652:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 110553, "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110547, "src": "3669:8:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "src": "3652:25:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110555, "nodeType": "ExpressionStatement", "src": "3652:25:234" }] }, "documentation": { "id": 110544, "nodeType": "StructuredDocumentation", "src": "3367:199:234", "text": "@notice Set the address of the AddressManager. This is required to manage legacy\n         ResolvedDelegateProxy type proxy contracts.\n @param _address Address of the AddressManager." }, "functionSelector": "0652b57a", "implemented": true, "kind": "function", "modifiers": [{ "id": 110550, "kind": "modifierInvocation", "modifierName": { "id": 110549, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "3632:9:234" }, "nodeType": "ModifierInvocation", "src": "3632:9:234" }], "name": "setAddressManager", "nameLocation": "3580:17:234", "parameters": { "id": 110548, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110547, "mutability": "mutable", "name": "_address", "nameLocation": "3613:8:234", "nodeType": "VariableDeclaration", "scope": 110557, "src": "3598:23:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" }, "typeName": { "id": 110546, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110545, "name": "AddressManager", "nodeType": "IdentifierPath", "referencedDeclaration": 102008, "src": "3598:14:234" }, "referencedDeclaration": 102008, "src": "3598:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "visibility": "internal" }], "src": "3597:25:234" }, "returnParameters": { "id": 110551, "nodeType": "ParameterList", "parameters": [], "src": "3642:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110575, "nodeType": "FunctionDefinition", "src": "4126:137:234", "nodes": [], "body": { "id": 110574, "nodeType": "Block", "src": "4204:59:234", "nodes": [], "statements": [{ "expression": { "arguments": [{ "id": 110570, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110560, "src": "4240:5:234", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "id": 110571, "name": "_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110562, "src": "4247:8:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "id": 110567, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "4214:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setAddress", "nodeType": "MemberAccess", "referencedDeclaration": 101976, "src": "4214:25:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) external" } }, "id": 110572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4214:42:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110573, "nodeType": "ExpressionStatement", "src": "4214:42:234" }] }, "documentation": { "id": 110558, "nodeType": "StructuredDocumentation", "src": "3690:431:234", "text": "@custom:legacy\n @notice Set an address in the address manager. Since only the owner of the AddressManager\n         can directly modify addresses and the ProxyAdmin will own the AddressManager, this\n         gives the owner of the ProxyAdmin the ability to modify addresses directly.\n @param _name    Name to set within the AddressManager.\n @param _address Address to attach to the given name." }, "functionSelector": "9b2ea4bd", "implemented": true, "kind": "function", "modifiers": [{ "id": 110565, "kind": "modifierInvocation", "modifierName": { "id": 110564, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "4194:9:234" }, "nodeType": "ModifierInvocation", "src": "4194:9:234" }], "name": "setAddress", "nameLocation": "4135:10:234", "parameters": { "id": 110563, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110560, "mutability": "mutable", "name": "_name", "nameLocation": "4160:5:234", "nodeType": "VariableDeclaration", "scope": 110575, "src": "4146:19:234", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 110559, "name": "string", "nodeType": "ElementaryTypeName", "src": "4146:6:234", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 110562, "mutability": "mutable", "name": "_address", "nameLocation": "4175:8:234", "nodeType": "VariableDeclaration", "scope": 110575, "src": "4167:16:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110561, "name": "address", "nodeType": "ElementaryTypeName", "src": "4167:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "4145:39:234" }, "returnParameters": { "id": 110566, "nodeType": "ParameterList", "parameters": [], "src": "4204:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110588, "nodeType": "FunctionDefinition", "src": "4430:97:234", "nodes": [], "body": { "id": 110587, "nodeType": "Block", "src": "4488:39:234", "nodes": [], "statements": [{ "expression": { "id": 110585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 110583, "name": "upgrading", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110495, "src": "4498:9:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 110584, "name": "_upgrading", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110578, "src": "4510:10:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "4498:22:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 110586, "nodeType": "ExpressionStatement", "src": "4498:22:234" }] }, "documentation": { "id": 110576, "nodeType": "StructuredDocumentation", "src": "4269:156:234", "text": "@custom:legacy\n @notice Set the upgrading status for the Chugsplash proxy type.\n @param _upgrading Whether or not the system is upgrading." }, "functionSelector": "07c8f7b0", "implemented": true, "kind": "function", "modifiers": [{ "id": 110581, "kind": "modifierInvocation", "modifierName": { "id": 110580, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "4478:9:234" }, "nodeType": "ModifierInvocation", "src": "4478:9:234" }], "name": "setUpgrading", "nameLocation": "4439:12:234", "parameters": { "id": 110579, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110578, "mutability": "mutable", "name": "_upgrading", "nameLocation": "4457:10:234", "nodeType": "VariableDeclaration", "scope": 110588, "src": "4452:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 110577, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4452:4:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "4451:17:234" }, "returnParameters": { "id": 110582, "nodeType": "ParameterList", "parameters": [], "src": "4488:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110597, "nodeType": "FunctionDefinition", "src": "4941:85:234", "nodes": [], "body": { "id": 110596, "nodeType": "Block", "src": "4993:33:234", "nodes": [], "statements": [{ "expression": { "id": 110594, "name": "upgrading", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110495, "src": "5010:9:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 110593, "id": 110595, "nodeType": "Return", "src": "5003:16:234" }] }, "documentation": { "id": 110589, "nodeType": "StructuredDocumentation", "src": "4533:403:234", "text": "@custom:legacy\n @notice Legacy function used to tell ChugSplashProxy contracts if an upgrade is happening.\n @return Whether or not there is an upgrade going on. May not actually tell you whether an\n         upgrade is going on, since we don't currently plan to use this variable for anything\n         other than a legacy indicator to fix a UX bug in the ChugSplash proxy." }, "functionSelector": "b7947262", "implemented": true, "kind": "function", "modifiers": [], "name": "isUpgrading", "nameLocation": "4950:11:234", "parameters": { "id": 110590, "nodeType": "ParameterList", "parameters": [], "src": "4961:2:234" }, "returnParameters": { "id": 110593, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110592, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110597, "src": "4987:4:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 110591, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4987:4:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "4986:6:234" }, "scope": 110909, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 110655, "nodeType": "FunctionDefinition", "src": "5236:569:234", "nodes": [], "body": { "id": 110654, "nodeType": "Block", "src": "5316:489:234", "nodes": [], "statements": [{ "assignments": [110607], "declarations": [{ "constant": false, "id": 110607, "mutability": "mutable", "name": "ptype", "nameLocation": "5336:5:234", "nodeType": "VariableDeclaration", "scope": 110654, "src": "5326:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110606, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110605, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "5326:9:234" }, "referencedDeclaration": 110477, "src": "5326:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "id": 110611, "initialValue": { "baseExpression": { "id": 110608, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "5344:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110610, "indexExpression": { "id": 110609, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110600, "src": "5354:6:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5344:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "VariableDeclarationStatement", "src": "5326:35:234" }, { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110612, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110607, "src": "5375:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110613, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "5384:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110614, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ERC1967", "nodeType": "MemberAccess", "referencedDeclaration": 110474, "src": "5384:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "5375:26:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110623, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110607, "src": "5489:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110624, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "5498:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110625, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CHUGSPLASH", "nodeType": "MemberAccess", "referencedDeclaration": 110475, "src": "5498:20:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "5489:29:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110634, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110607, "src": "5614:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110635, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "5623:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110636, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "RESOLVED", "nodeType": "MemberAccess", "referencedDeclaration": 110476, "src": "5623:18:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "5614:27:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 110650, "nodeType": "Block", "src": "5734:65:234", "statements": [{ "expression": { "arguments": [{ "hexValue": "50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065", "id": 110647, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5755:32:234", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }, "value": "ProxyAdmin: unknown proxy type" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }], "id": 110646, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "5748:6:234", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 110648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5748:40:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110649, "nodeType": "ExpressionStatement", "src": "5748:40:234" }] }, "id": 110651, "nodeType": "IfStatement", "src": "5610:189:234", "trueBody": { "id": 110645, "nodeType": "Block", "src": "5643:85:234", "statements": [{ "expression": { "arguments": [{ "baseExpression": { "id": 110640, "name": "implementationName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110488, "src": "5690:18:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$", "typeString": "mapping(address => string storage ref)" } }, "id": 110642, "indexExpression": { "id": 110641, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110600, "src": "5709:6:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5690:26:234", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_string_storage", "typeString": "string storage ref" }], "expression": { "id": 110638, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "5664:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110639, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getAddress", "nodeType": "MemberAccess", "referencedDeclaration": 101991, "src": "5664:25:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_address_$", "typeString": "function (string memory) view external returns (address)" } }, "id": 110643, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5664:53:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110604, "id": 110644, "nodeType": "Return", "src": "5657:60:234" }] } }, "id": 110652, "nodeType": "IfStatement", "src": "5485:314:234", "trueBody": { "id": 110633, "nodeType": "Block", "src": "5520:84:234", "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [{ "id": 110628, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110600, "src": "5566:6:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 110627, "name": "IStaticL1ChugSplashProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110470, "src": "5541:24:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IStaticL1ChugSplashProxy_$110470_$", "typeString": "type(contract IStaticL1ChugSplashProxy)" } }, "id": 110629, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5541:32:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IStaticL1ChugSplashProxy_$110470", "typeString": "contract IStaticL1ChugSplashProxy" } }, "id": 110630, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getImplementation", "nodeType": "MemberAccess", "referencedDeclaration": 110464, "src": "5541:50:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 110631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5541:52:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110604, "id": 110632, "nodeType": "Return", "src": "5534:59:234" }] } }, "id": 110653, "nodeType": "IfStatement", "src": "5371:428:234", "trueBody": { "id": 110622, "nodeType": "Block", "src": "5403:76:234", "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [{ "id": 110617, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110600, "src": "5444:6:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 110616, "name": "IStaticERC1967Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110458, "src": "5424:19:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IStaticERC1967Proxy_$110458_$", "typeString": "type(contract IStaticERC1967Proxy)" } }, "id": 110618, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5424:27:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IStaticERC1967Proxy_$110458", "typeString": "contract IStaticERC1967Proxy" } }, "id": 110619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "implementation", "nodeType": "MemberAccess", "referencedDeclaration": 110452, "src": "5424:42:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 110620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5424:44:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110604, "id": 110621, "nodeType": "Return", "src": "5417:51:234" }] } }] }, "documentation": { "id": 110598, "nodeType": "StructuredDocumentation", "src": "5032:199:234", "text": "@notice Returns the implementation of the given proxy address.\n @param _proxy Address of the proxy to get the implementation of.\n @return Address of the implementation of the proxy." }, "functionSelector": "204e1c7a", "implemented": true, "kind": "function", "modifiers": [], "name": "getProxyImplementation", "nameLocation": "5245:22:234", "parameters": { "id": 110601, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110600, "mutability": "mutable", "name": "_proxy", "nameLocation": "5276:6:234", "nodeType": "VariableDeclaration", "scope": 110655, "src": "5268:14:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110599, "name": "address", "nodeType": "ElementaryTypeName", "src": "5268:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "5267:16:234" }, "returnParameters": { "id": 110604, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110603, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110655, "src": "5307:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110602, "name": "address", "nodeType": "ElementaryTypeName", "src": "5307:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "5306:9:234" }, "scope": 110909, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 110710, "nodeType": "FunctionDefinition", "src": "5988:519:234", "nodes": [], "body": { "id": 110709, "nodeType": "Block", "src": "6067:440:234", "nodes": [], "statements": [{ "assignments": [110665], "declarations": [{ "constant": false, "id": 110665, "mutability": "mutable", "name": "ptype", "nameLocation": "6087:5:234", "nodeType": "VariableDeclaration", "scope": 110709, "src": "6077:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110664, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110663, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "6077:9:234" }, "referencedDeclaration": 110477, "src": "6077:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "id": 110669, "initialValue": { "baseExpression": { "id": 110666, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "6095:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110668, "indexExpression": { "id": 110667, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110658, "src": "6105:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6095:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "VariableDeclarationStatement", "src": "6077:35:234" }, { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110670, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110665, "src": "6126:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110671, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "6135:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110672, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ERC1967", "nodeType": "MemberAccess", "referencedDeclaration": 110474, "src": "6135:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "6126:26:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110684, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110681, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110665, "src": "6231:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110682, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "6240:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110683, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CHUGSPLASH", "nodeType": "MemberAccess", "referencedDeclaration": 110475, "src": "6240:20:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "6231:29:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110692, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110665, "src": "6347:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110693, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "6356:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110694, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "RESOLVED", "nodeType": "MemberAccess", "referencedDeclaration": 110476, "src": "6356:18:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "6347:27:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 110705, "nodeType": "Block", "src": "6436:65:234", "statements": [{ "expression": { "arguments": [{ "hexValue": "50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065", "id": 110702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6457:32:234", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }, "value": "ProxyAdmin: unknown proxy type" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }], "id": 110701, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "6450:6:234", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 110703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6450:40:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110704, "nodeType": "ExpressionStatement", "src": "6450:40:234" }] }, "id": 110706, "nodeType": "IfStatement", "src": "6343:158:234", "trueBody": { "id": 110700, "nodeType": "Block", "src": "6376:54:234", "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 110696, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "6397:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110697, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "owner", "nodeType": "MemberAccess", "referencedDeclaration": 49363, "src": "6397:20:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 110698, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6397:22:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110662, "id": 110699, "nodeType": "Return", "src": "6390:29:234" }] } }, "id": 110707, "nodeType": "IfStatement", "src": "6227:274:234", "trueBody": { "id": 110691, "nodeType": "Block", "src": "6262:75:234", "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [{ "id": 110686, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110658, "src": "6308:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110685, "name": "IStaticL1ChugSplashProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110470, "src": "6283:24:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IStaticL1ChugSplashProxy_$110470_$", "typeString": "type(contract IStaticL1ChugSplashProxy)" } }, "id": 110687, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6283:32:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IStaticL1ChugSplashProxy_$110470", "typeString": "contract IStaticL1ChugSplashProxy" } }, "id": 110688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getOwner", "nodeType": "MemberAccess", "referencedDeclaration": 110469, "src": "6283:41:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 110689, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6283:43:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110662, "id": 110690, "nodeType": "Return", "src": "6276:50:234" }] } }, "id": 110708, "nodeType": "IfStatement", "src": "6122:379:234", "trueBody": { "id": 110680, "nodeType": "Block", "src": "6154:67:234", "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "arguments": [{ "id": 110675, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110658, "src": "6195:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110674, "name": "IStaticERC1967Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110458, "src": "6175:19:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IStaticERC1967Proxy_$110458_$", "typeString": "type(contract IStaticERC1967Proxy)" } }, "id": 110676, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6175:27:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IStaticERC1967Proxy_$110458", "typeString": "contract IStaticERC1967Proxy" } }, "id": 110677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "admin", "nodeType": "MemberAccess", "referencedDeclaration": 110457, "src": "6175:33:234", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 110678, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6175:35:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 110662, "id": 110679, "nodeType": "Return", "src": "6168:42:234" }] } }] }, "documentation": { "id": 110656, "nodeType": "StructuredDocumentation", "src": "5811:172:234", "text": "@notice Returns the admin of the given proxy address.\n @param _proxy Address of the proxy to get the admin of.\n @return Address of the admin of the proxy." }, "functionSelector": "f3b7dead", "implemented": true, "kind": "function", "modifiers": [], "name": "getProxyAdmin", "nameLocation": "5997:13:234", "parameters": { "id": 110659, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110658, "mutability": "mutable", "name": "_proxy", "nameLocation": "6027:6:234", "nodeType": "VariableDeclaration", "scope": 110710, "src": "6011:22:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 110657, "name": "address", "nodeType": "ElementaryTypeName", "src": "6011:15:234", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "visibility": "internal" }], "src": "6010:24:234" }, "returnParameters": { "id": 110662, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110661, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 110710, "src": "6058:7:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110660, "name": "address", "nodeType": "ElementaryTypeName", "src": "6058:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "6057:9:234" }, "scope": 110909, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 110771, "nodeType": "FunctionDefinition", "src": "6689:531:234", "nodes": [], "body": { "id": 110770, "nodeType": "Block", "src": "6777:443:234", "nodes": [], "statements": [{ "assignments": [110722], "declarations": [{ "constant": false, "id": 110722, "mutability": "mutable", "name": "ptype", "nameLocation": "6797:5:234", "nodeType": "VariableDeclaration", "scope": 110770, "src": "6787:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110721, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110720, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "6787:9:234" }, "referencedDeclaration": 110477, "src": "6787:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "id": 110726, "initialValue": { "baseExpression": { "id": 110723, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "6805:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110725, "indexExpression": { "id": 110724, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110713, "src": "6815:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6805:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "VariableDeclarationStatement", "src": "6787:35:234" }, { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110730, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110727, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110722, "src": "6836:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110728, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "6845:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110729, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ERC1967", "nodeType": "MemberAccess", "referencedDeclaration": 110474, "src": "6845:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "6836:26:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110739, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110722, "src": "6935:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110740, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "6944:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110741, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CHUGSPLASH", "nodeType": "MemberAccess", "referencedDeclaration": 110475, "src": "6944:20:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "6935:29:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110754, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110751, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110722, "src": "7046:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110752, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "7055:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110753, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "RESOLVED", "nodeType": "MemberAccess", "referencedDeclaration": 110476, "src": "7055:18:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "7046:27:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 110766, "nodeType": "Block", "src": "7149:65:234", "statements": [{ "expression": { "arguments": [{ "hexValue": "50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065", "id": 110763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7170:32:234", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }, "value": "ProxyAdmin: unknown proxy type" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_stringliteral_0d595a635c8f2d148646b25cd19d12c4c97462aeb17388cbeb2bf405cffe65f2", "typeString": "literal_string \"ProxyAdmin: unknown proxy type\"" }], "id": 110762, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "7163:6:234", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 110764, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7163:40:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110765, "nodeType": "ExpressionStatement", "src": "7163:40:234" }] }, "id": 110767, "nodeType": "IfStatement", "src": "7042:172:234", "trueBody": { "id": 110761, "nodeType": "Block", "src": "7075:68:234", "statements": [{ "expression": { "arguments": [{ "id": 110758, "name": "_newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110715, "src": "7122:9:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "id": 110755, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "7089:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferOwnership", "nodeType": "MemberAccess", "referencedDeclaration": 49414, "src": "7089:32:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, "id": 110759, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7089:43:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110760, "nodeType": "ExpressionStatement", "src": "7089:43:234" }] } }, "id": 110768, "nodeType": "IfStatement", "src": "6931:283:234", "trueBody": { "id": 110750, "nodeType": "Block", "src": "6966:70:234", "statements": [{ "expression": { "arguments": [{ "id": 110747, "name": "_newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110715, "src": "7015:9:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "arguments": [{ "id": 110744, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110713, "src": "6998:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110743, "name": "L1ChugSplashProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102516, "src": "6980:17:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_L1ChugSplashProxy_$102516_$", "typeString": "type(contract L1ChugSplashProxy)" } }, "id": 110745, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6980:25:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_L1ChugSplashProxy_$102516", "typeString": "contract L1ChugSplashProxy" } }, "id": 110746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setOwner", "nodeType": "MemberAccess", "referencedDeclaration": 102391, "src": "6980:34:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, "id": 110748, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6980:45:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110749, "nodeType": "ExpressionStatement", "src": "6980:45:234" }] } }, "id": 110769, "nodeType": "IfStatement", "src": "6832:382:234", "trueBody": { "id": 110738, "nodeType": "Block", "src": "6864:61:234", "statements": [{ "expression": { "arguments": [{ "id": 110735, "name": "_newAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110715, "src": "6904:9:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "arguments": [{ "id": 110732, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110713, "src": "6884:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110731, "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110434, "src": "6878:5:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Proxy_$110434_$", "typeString": "type(contract Proxy)" } }, "id": 110733, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6878:13:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$110434", "typeString": "contract Proxy" } }, "id": 110734, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "changeAdmin", "nodeType": "MemberAccess", "referencedDeclaration": 110312, "src": "6878:25:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, "id": 110736, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6878:36:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110737, "nodeType": "ExpressionStatement", "src": "6878:36:234" }] } }] }, "documentation": { "id": 110711, "nodeType": "StructuredDocumentation", "src": "6513:171:234", "text": "@notice Updates the admin of the given proxy address.\n @param _proxy    Address of the proxy to update.\n @param _newAdmin Address of the new proxy admin." }, "functionSelector": "7eff275e", "implemented": true, "kind": "function", "modifiers": [{ "id": 110718, "kind": "modifierInvocation", "modifierName": { "id": 110717, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "6767:9:234" }, "nodeType": "ModifierInvocation", "src": "6767:9:234" }], "name": "changeProxyAdmin", "nameLocation": "6698:16:234", "parameters": { "id": 110716, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110713, "mutability": "mutable", "name": "_proxy", "nameLocation": "6731:6:234", "nodeType": "VariableDeclaration", "scope": 110771, "src": "6715:22:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 110712, "name": "address", "nodeType": "ElementaryTypeName", "src": "6715:15:234", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "visibility": "internal" }, { "constant": false, "id": 110715, "mutability": "mutable", "name": "_newAdmin", "nameLocation": "6747:9:234", "nodeType": "VariableDeclaration", "scope": 110771, "src": "6739:17:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110714, "name": "address", "nodeType": "ElementaryTypeName", "src": "6739:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "6714:43:234" }, "returnParameters": { "id": 110719, "nodeType": "ParameterList", "parameters": [], "src": "6777:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 110850, "nodeType": "FunctionDefinition", "src": "7423:816:234", "nodes": [], "body": { "id": 110849, "nodeType": "Block", "src": "7506:733:234", "nodes": [], "statements": [{ "assignments": [110783], "declarations": [{ "constant": false, "id": 110783, "mutability": "mutable", "name": "ptype", "nameLocation": "7526:5:234", "nodeType": "VariableDeclaration", "scope": 110849, "src": "7516:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110782, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110781, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "7516:9:234" }, "referencedDeclaration": 110477, "src": "7516:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "id": 110787, "initialValue": { "baseExpression": { "id": 110784, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "7534:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110786, "indexExpression": { "id": 110785, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110774, "src": "7544:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7534:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "VariableDeclarationStatement", "src": "7516:35:234" }, { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110791, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110788, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110783, "src": "7565:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110789, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "7574:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110790, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ERC1967", "nodeType": "MemberAccess", "referencedDeclaration": 110474, "src": "7574:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "7565:26:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110800, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110783, "src": "7668:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110801, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "7677:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110802, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "CHUGSPLASH", "nodeType": "MemberAccess", "referencedDeclaration": 110475, "src": "7677:20:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "7668:29:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110826, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110823, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110783, "src": "7884:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110824, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "7893:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110825, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "RESOLVED", "nodeType": "MemberAccess", "referencedDeclaration": 110476, "src": "7893:18:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "7884:27:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 110845, "nodeType": "Block", "src": "8053:180:234", "statements": [{ "expression": { "arguments": [{ "hexValue": "66616c7365", "id": 110842, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "8216:5:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }], "id": 110841, "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -3, "src": "8209:6:234", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 110843, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8209:13:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110844, "nodeType": "ExpressionStatement", "src": "8209:13:234" }] }, "id": 110846, "nodeType": "IfStatement", "src": "7880:353:234", "trueBody": { "id": 110840, "nodeType": "Block", "src": "7913:134:234", "statements": [{ "assignments": [110828], "declarations": [{ "constant": false, "id": 110828, "mutability": "mutable", "name": "name", "nameLocation": "7941:4:234", "nodeType": "VariableDeclaration", "scope": 110840, "src": "7927:18:234", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 110827, "name": "string", "nodeType": "ElementaryTypeName", "src": "7927:6:234", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }], "id": 110832, "initialValue": { "baseExpression": { "id": 110829, "name": "implementationName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110488, "src": "7948:18:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$", "typeString": "mapping(address => string storage ref)" } }, "id": 110831, "indexExpression": { "id": 110830, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110774, "src": "7967:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7948:26:234", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "7927:47:234" }, { "expression": { "arguments": [{ "id": 110836, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110828, "src": "8014:4:234", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, { "id": 110837, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110776, "src": "8020:15:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" }, { "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "id": 110833, "name": "addressManager", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110492, "src": "7988:14:234", "typeDescriptions": { "typeIdentifier": "t_contract$_AddressManager_$102008", "typeString": "contract AddressManager" } }, "id": 110835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setAddress", "nodeType": "MemberAccess", "referencedDeclaration": 101976, "src": "7988:25:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_address_$returns$__$", "typeString": "function (string memory,address) external" } }, "id": 110838, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7988:48:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110839, "nodeType": "ExpressionStatement", "src": "7988:48:234" }] } }, "id": 110847, "nodeType": "IfStatement", "src": "7664:569:234", "trueBody": { "id": 110822, "nodeType": "Block", "src": "7699:175:234", "statements": [{ "expression": { "arguments": [{ "expression": { "id": 110808, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "7767:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$103096_$", "typeString": "type(library Constants)" } }, "id": 110809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "PROXY_IMPLEMENTATION_ADDRESS", "nodeType": "MemberAccess", "referencedDeclaration": 103062, "src": "7767:38:234", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "arguments": [{ "arguments": [{ "arguments": [{ "id": 110816, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110776, "src": "7831:15:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 110815, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7823:7:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint160_$", "typeString": "type(uint160)" }, "typeName": { "id": 110814, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "7823:7:234", "typeDescriptions": {} } }, "id": 110817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7823:24:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint160", "typeString": "uint160" }], "id": 110813, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7815:7:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 110812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7815:7:234", "typeDescriptions": {} } }, "id": 110818, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7815:33:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 110811, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7807:7:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 110810, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7807:7:234", "typeDescriptions": {} } }, "id": 110819, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7807:42:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }], "expression": { "arguments": [{ "id": 110805, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110774, "src": "7731:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110804, "name": "L1ChugSplashProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102516, "src": "7713:17:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_L1ChugSplashProxy_$102516_$", "typeString": "type(contract L1ChugSplashProxy)" } }, "id": 110806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7713:25:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_L1ChugSplashProxy_$102516", "typeString": "contract L1ChugSplashProxy" } }, "id": 110807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setStorage", "nodeType": "MemberAccess", "referencedDeclaration": 102378, "src": "7713:36:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32) external" } }, "id": 110820, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7713:150:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110821, "nodeType": "ExpressionStatement", "src": "7713:150:234" }] } }, "id": 110848, "nodeType": "IfStatement", "src": "7561:672:234", "trueBody": { "id": 110799, "nodeType": "Block", "src": "7593:65:234", "statements": [{ "expression": { "arguments": [{ "id": 110796, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110776, "src": "7631:15:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "arguments": [{ "id": 110793, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110774, "src": "7613:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110792, "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110434, "src": "7607:5:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Proxy_$110434_$", "typeString": "type(contract Proxy)" } }, "id": 110794, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7607:13:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$110434", "typeString": "contract Proxy" } }, "id": 110795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "upgradeTo", "nodeType": "MemberAccess", "referencedDeclaration": 110266, "src": "7607:23:234", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$", "typeString": "function (address) external" } }, "id": 110797, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7607:40:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110798, "nodeType": "ExpressionStatement", "src": "7607:40:234" }] } }] }, "documentation": { "id": 110772, "nodeType": "StructuredDocumentation", "src": "7226:192:234", "text": "@notice Changes a proxy's implementation contract.\n @param _proxy          Address of the proxy to upgrade.\n @param _implementation Address of the new implementation address." }, "functionSelector": "99a88ec4", "implemented": true, "kind": "function", "modifiers": [{ "id": 110779, "kind": "modifierInvocation", "modifierName": { "id": 110778, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "7496:9:234" }, "nodeType": "ModifierInvocation", "src": "7496:9:234" }], "name": "upgrade", "nameLocation": "7432:7:234", "parameters": { "id": 110777, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110774, "mutability": "mutable", "name": "_proxy", "nameLocation": "7456:6:234", "nodeType": "VariableDeclaration", "scope": 110850, "src": "7440:22:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 110773, "name": "address", "nodeType": "ElementaryTypeName", "src": "7440:15:234", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "visibility": "internal" }, { "constant": false, "id": 110776, "mutability": "mutable", "name": "_implementation", "nameLocation": "7472:15:234", "nodeType": "VariableDeclaration", "scope": 110850, "src": "7464:23:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110775, "name": "address", "nodeType": "ElementaryTypeName", "src": "7464:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "7439:49:234" }, "returnParameters": { "id": 110780, "nodeType": "ParameterList", "parameters": [], "src": "7506:0:234" }, "scope": 110909, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 110908, "nodeType": "FunctionDefinition", "src": "8644:631:234", "nodes": [], "body": { "id": 110907, "nodeType": "Block", "src": "8822:453:234", "nodes": [], "statements": [{ "assignments": [110864], "declarations": [{ "constant": false, "id": 110864, "mutability": "mutable", "name": "ptype", "nameLocation": "8842:5:234", "nodeType": "VariableDeclaration", "scope": 110907, "src": "8832:15:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "typeName": { "id": 110863, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 110862, "name": "ProxyType", "nodeType": "IdentifierPath", "referencedDeclaration": 110477, "src": "8832:9:234" }, "referencedDeclaration": 110477, "src": "8832:9:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "visibility": "internal" }], "id": 110868, "initialValue": { "baseExpression": { "id": 110865, "name": "proxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110483, "src": "8850:9:234", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ProxyType_$110477_$", "typeString": "mapping(address => enum ProxyAdmin.ProxyType)" } }, "id": 110867, "indexExpression": { "id": 110866, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110853, "src": "8860:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "8850:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "VariableDeclarationStatement", "src": "8832:35:234" }, { "condition": { "commonType": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" }, "id": 110872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 110869, "name": "ptype", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110864, "src": "8881:5:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 110870, "name": "ProxyType", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110477, "src": "8890:9:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ProxyType_$110477_$", "typeString": "type(enum ProxyAdmin.ProxyType)" } }, "id": 110871, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "ERC1967", "nodeType": "MemberAccess", "referencedDeclaration": 110474, "src": "8890:17:234", "typeDescriptions": { "typeIdentifier": "t_enum$_ProxyType_$110477", "typeString": "enum ProxyAdmin.ProxyType" } }, "src": "8881:26:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 110905, "nodeType": "Block", "src": "9014:255:234", "statements": [{ "expression": { "arguments": [{ "id": 110886, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110853, "src": "9084:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "id": 110887, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110855, "src": "9092:15:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }], "id": 110885, "name": "upgrade", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110850, "src": "9076:7:234", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_address_$returns$__$", "typeString": "function (address payable,address)" } }, "id": 110888, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9076:32:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110889, "nodeType": "ExpressionStatement", "src": "9076:32:234" }, { "assignments": [110891, null], "declarations": [{ "constant": false, "id": 110891, "mutability": "mutable", "name": "success", "nameLocation": "9128:7:234", "nodeType": "VariableDeclaration", "scope": 110905, "src": "9123:12:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 110890, "name": "bool", "nodeType": "ElementaryTypeName", "src": "9123:4:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, null], "id": 110899, "initialValue": { "arguments": [{ "id": 110897, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110857, "src": "9172:5:234", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "id": 110892, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110853, "src": "9140:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 110893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "call", "nodeType": "MemberAccess", "src": "9140:11:234", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, "id": 110896, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{ "expression": { "id": 110894, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9160:3:234", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 110895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "9160:9:234", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "src": "9140:31:234", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, "id": 110898, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9140:38:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", "src": "9122:56:234" }, { "expression": { "arguments": [{ "id": 110901, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110891, "src": "9200:7:234", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "50726f787941646d696e3a2063616c6c20746f2070726f78792061667465722075706772616465206661696c6564", "id": 110902, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9209:48:234", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9dbbe4927f0b34687229d178ecf6fef1e21d5f949373ef3cb14376a90927e2f4", "typeString": "literal_string \"ProxyAdmin: call to proxy after upgrade failed\"" }, "value": "ProxyAdmin: call to proxy after upgrade failed" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_9dbbe4927f0b34687229d178ecf6fef1e21d5f949373ef3cb14376a90927e2f4", "typeString": "literal_string \"ProxyAdmin: call to proxy after upgrade failed\"" }], "id": 110900, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9192:7:234", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 110903, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9192:66:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 110904, "nodeType": "ExpressionStatement", "src": "9192:66:234" }] }, "id": 110906, "nodeType": "IfStatement", "src": "8877:392:234", "trueBody": { "id": 110884, "nodeType": "Block", "src": "8909:99:234", "statements": [{ "expression": { "arguments": [{ "id": 110880, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110855, "src": "8974:15:234", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 110881, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110857, "src": "8991:5:234", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "arguments": [{ "id": 110874, "name": "_proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110853, "src": "8929:6:234", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 110873, "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 110434, "src": "8923:5:234", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Proxy_$110434_$", "typeString": "type(contract Proxy)" } }, "id": 110875, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8923:13:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$110434", "typeString": "contract Proxy" } }, "id": 110876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "upgradeToAndCall", "nodeType": "MemberAccess", "referencedDeclaration": 110299, "src": "8923:30:234", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (address,bytes memory) payable external returns (bytes memory)" } }, "id": 110879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{ "expression": { "id": 110877, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8962:3:234", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 110878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "8962:9:234", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "src": "8923:50:234", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$value", "typeString": "function (address,bytes memory) payable external returns (bytes memory)" } }, "id": 110882, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8923:74:234", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 110883, "nodeType": "ExpressionStatement", "src": "8923:74:234" }] } }] }, "documentation": { "id": 110851, "nodeType": "StructuredDocumentation", "src": "8245:394:234", "text": "@notice Changes a proxy's implementation contract and delegatecalls the new implementation\n         with some given data. Useful for atomic upgrade-and-initialize calls.\n @param _proxy          Address of the proxy to upgrade.\n @param _implementation Address of the new implementation address.\n @param _data           Data to trigger the new implementation with." }, "functionSelector": "9623609d", "implemented": true, "kind": "function", "modifiers": [{ "id": 110860, "kind": "modifierInvocation", "modifierName": { "id": 110859, "name": "onlyOwner", "nodeType": "IdentifierPath", "referencedDeclaration": 49354, "src": "8808:9:234" }, "nodeType": "ModifierInvocation", "src": "8808:9:234" }], "name": "upgradeAndCall", "nameLocation": "8653:14:234", "parameters": { "id": 110858, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 110853, "mutability": "mutable", "name": "_proxy", "nameLocation": "8693:6:234", "nodeType": "VariableDeclaration", "scope": 110908, "src": "8677:22:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 110852, "name": "address", "nodeType": "ElementaryTypeName", "src": "8677:15:234", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "visibility": "internal" }, { "constant": false, "id": 110855, "mutability": "mutable", "name": "_implementation", "nameLocation": "8717:15:234", "nodeType": "VariableDeclaration", "scope": 110908, "src": "8709:23:234", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 110854, "name": "address", "nodeType": "ElementaryTypeName", "src": "8709:7:234", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 110857, "mutability": "mutable", "name": "_data", "nameLocation": "8755:5:234", "nodeType": "VariableDeclaration", "scope": 110908, "src": "8742:18:234", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 110856, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8742:5:234", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "8667:99:234" }, "returnParameters": { "id": 110861, "nodeType": "ParameterList", "parameters": [], "src": "8822:0:234" }, "scope": 110909, "stateMutability": "payable", "virtual": false, "visibility": "external" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 110472, "name": "Ownable", "nodeType": "IdentifierPath", "referencedDeclaration": 49435, "src": "1264:7:234" }, "id": 110473, "nodeType": "InheritanceSpecifier", "src": "1264:7:234" }], "canonicalName": "ProxyAdmin", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 110471, "nodeType": "StructuredDocumentation", "src": "928:313:234", "text": "@title ProxyAdmin\n @notice This is an auxiliary contract meant to be assigned as the admin of an ERC1967 Proxy,\n         based on the OpenZeppelin implementation. It has backwards compatibility logic to work\n         with the various types of proxies that have been deployed by Optimism in the past." }, "fullyImplemented": true, "linearizedBaseContracts": [110909, 49435, 53291], "name": "ProxyAdmin", "nameLocation": "1250:10:234", "scope": 110910, "usedErrors": [] }], "license": "MIT" }, "id": 234 }
