747 lines
103 KiB
JSON
747 lines
103 KiB
JSON
{
|
|
"address": "0x763f5c2E59f997A6cC48Bf1228aBf61325244702",
|
|
"abi": [
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"internalType": "address",
|
|
"name": "previousAdmin",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"indexed": false,
|
|
"internalType": "address",
|
|
"name": "newAdmin",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "AdminChanged",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": true,
|
|
"internalType": "address",
|
|
"name": "beacon",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "BeaconUpgraded",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"internalType": "uint8",
|
|
"name": "version",
|
|
"type": "uint8"
|
|
}
|
|
],
|
|
"name": "Initialized",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": true,
|
|
"internalType": "address",
|
|
"name": "previousOwner",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"indexed": true,
|
|
"internalType": "address",
|
|
"name": "newOwner",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "OwnershipTransferred",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"indexed": false,
|
|
"internalType": "address",
|
|
"name": "delegate",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "SetDelegate",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "id",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "bool",
|
|
"name": "active",
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "vaultAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "string",
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"indexed": false,
|
|
"internalType": "struct BaalAndVaultSummoner.Vault",
|
|
"name": "vault",
|
|
"type": "tuple"
|
|
}
|
|
],
|
|
"name": "SetVault",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": true,
|
|
"internalType": "address",
|
|
"name": "implementation",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "Upgraded",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"internalType": "address",
|
|
"name": "summoner",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "setSummoner",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "_baalSummoner",
|
|
"outputs": [
|
|
{
|
|
"internalType": "contract IBaalSummoner",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "id",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "deactivateVaultAsDao",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "delegates",
|
|
"outputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "initialize",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "owner",
|
|
"outputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "proxiableUUID",
|
|
"outputs": [
|
|
{
|
|
"internalType": "bytes32",
|
|
"name": "",
|
|
"type": "bytes32"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "renounceOwnership",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "delegate",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "setDelegate",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "vaultAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "string",
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "setNewVault",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "baalSummoner",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "setSummonerAddr",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "id",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "bool",
|
|
"name": "active",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"name": "setVault",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "bytes",
|
|
"name": "initializationParams",
|
|
"type": "bytes"
|
|
},
|
|
{
|
|
"internalType": "bytes[]",
|
|
"name": "initializationActions",
|
|
"type": "bytes[]"
|
|
},
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "saltNonce",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "bytes32",
|
|
"name": "referrer",
|
|
"type": "bytes32"
|
|
},
|
|
{
|
|
"internalType": "string",
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "summonBaalAndVault",
|
|
"outputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "_daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "_vaultAddress",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "string",
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "summonVault",
|
|
"outputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "_vaultAddress",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "newOwner",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "transferOwnership",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "newImplementation",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "upgradeTo",
|
|
"outputs": [],
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "newImplementation",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "bytes",
|
|
"name": "data",
|
|
"type": "bytes"
|
|
}
|
|
],
|
|
"name": "upgradeToAndCall",
|
|
"outputs": [],
|
|
"stateMutability": "payable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "vaultIdx",
|
|
"outputs": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "",
|
|
"type": "uint256"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "",
|
|
"type": "uint256"
|
|
}
|
|
],
|
|
"name": "vaults",
|
|
"outputs": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "id",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "bool",
|
|
"name": "active",
|
|
"type": "bool"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "daoAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "vaultAddress",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "string",
|
|
"name": "name",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"transactionHash": "0x2cce33aadf476374be498982568b514bf7048dce9222be3b2b0c7135ac6f359c",
|
|
"receipt": {
|
|
"to": null,
|
|
"from": "0x7C510aBf45c10a9aB949ef69ccBba5d77312d814",
|
|
"contractAddress": "0x763f5c2E59f997A6cC48Bf1228aBf61325244702",
|
|
"transactionIndex": 1,
|
|
"gasUsed": "1561244",
|
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"blockHash": "0x87c94a70ac75a14f4a19bfd4b8ea85c296db428077e109c9ed21ab4c4af66291",
|
|
"transactionHash": "0x2cce33aadf476374be498982568b514bf7048dce9222be3b2b0c7135ac6f359c",
|
|
"logs": [],
|
|
"blockNumber": 7428948,
|
|
"cumulativeGasUsed": "1608157",
|
|
"status": 1,
|
|
"byzantium": true
|
|
},
|
|
"args": [],
|
|
"numDeployments": 1,
|
|
"solcInputHash": "d833871936d16a85338aeeebf4887b62",
|
|
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"SetDelegate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct BaalAndVaultSummoner.Vault\",\"name\":\"vault\",\"type\":\"tuple\"}],\"name\":\"SetVault\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"summoner\",\"type\":\"address\"}],\"name\":\"setSummoner\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_baalSummoner\",\"outputs\":[{\"internalType\":\"contract IBaalSummoner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"}],\"name\":\"deactivateVaultAsDao\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setNewVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"baalSummoner\",\"type\":\"address\"}],\"name\":\"setSummonerAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"name\":\"setVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"initializationParams\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"initializationActions\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"saltNonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"referrer\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"summonBaalAndVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_daoAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_vaultAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"summonVault\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_vaultAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultIdx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"vaults\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"daoAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deactivateVaultAsDao(uint256,address)\":{\"notice\":\"A DAO can set a Vault as inactive \"},\"setDelegate(address,address)\":{\"notice\":\"Allow a Dao to set a delegate that can manage vault enteries \"},\"setNewVault(address,address,string)\":{\"notice\":\"set a new Vault as active on existing dao (owner only) \"},\"setVault(uint256,bool)\":{\"notice\":\"set a Vault as active or not on existing dao (owner only) \"},\"summonBaalAndVault(bytes,bytes[],uint256,bytes32,string)\":{\"notice\":\"Summon a new baal and add a Vault \"},\"summonVault(address,string)\":{\"notice\":\"create and add a Vault(Safe) to an existing DAO \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/higherOrderFactories/BaalAndVaultSummoner.sol\":\"BaalAndVaultSummoner\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n function __Ownable_init() internal onlyInitializing {\\n __Ownable_init_unchained();\\n }\\n\\n function __Ownable_init_unchained() internal onlyInitializing {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822ProxiableUpgradeable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x77c89f893e403efc6929ba842b7ccf6534d4ffe03afe31670b4a528c0ad78c0f\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeaconUpgradeable.sol\\\";\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\nimport \\\"../../utils/StorageSlotUpgradeable.sol\\\";\\nimport \\\"../utils/Initializable.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967UpgradeUpgradeable is Initializable {\\n function __ERC1967Upgrade_init() internal onlyInitializing {\\n }\\n\\n function __ERC1967Upgrade_init_unchained() internal onlyInitializing {\\n }\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(AddressUpgradeable.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlotUpgradeable.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n _functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlotUpgradeable.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822ProxiableUpgradeable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\\"ERC1967Upgrade: unsupported proxiableUUID\\\");\\n } catch {\\n revert(\\\"ERC1967Upgrade: new implementation is not UUPS\\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlotUpgradeable.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(AddressUpgradeable.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n AddressUpgradeable.isContract(IBeaconUpgradeable(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlotUpgradeable.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n _functionDelegateCall(IBeaconUpgradeable(newBeacon).implementation(), data);\\n }\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function _functionDelegateCall(address target, bytes memory data) private returns (bytes memory) {\\n require(AddressUpgradeable.isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return AddressUpgradeable.verifyCallResult(success, returndata, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x315887e846f1e5f8d8fa535a229d318bb9290aaa69485117f1ee8a9a6b3be823\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeaconUpgradeable {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x24b86ac8c005b8c654fbf6ac34a5a4f61580d7273541e83e013e89d66fbf0908\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (proxy/utils/Initializable.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../../utils/AddressUpgradeable.sol\\\";\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\\n * reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in\\n * case an upgrade adds a module that needs to be initialized.\\n *\\n * For example:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * contract MyToken is ERC20Upgradeable {\\n * function initialize() initializer public {\\n * __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");\\n * }\\n * }\\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\\n * function initializeV2() reinitializer(2) public {\\n * __ERC20Permit_init(\\\"MyToken\\\");\\n * }\\n * }\\n * ```\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n *\\n * [CAUTION]\\n * ====\\n * Avoid leaving a contract uninitialized.\\n *\\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\\n *\\n * [.hljs-theme-light.nopadding]\\n * ```\\n * /// @custom:oz-upgrades-unsafe-allow constructor\\n * constructor() {\\n * _disableInitializers();\\n * }\\n * ```\\n * ====\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n * @custom:oz-retyped-from bool\\n */\\n uint8 private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Triggered when the contract has been initialized or reinitialized.\\n */\\n event Initialized(uint8 version);\\n\\n /**\\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\\n * `onlyInitializing` functions can be used to initialize parent contracts.\\n *\\n * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\\n * constructor.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier initializer() {\\n bool isTopLevelCall = !_initializing;\\n require(\\n (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\\n \\\"Initializable: contract is already initialized\\\"\\n );\\n _initialized = 1;\\n if (isTopLevelCall) {\\n _initializing = true;\\n }\\n _;\\n if (isTopLevelCall) {\\n _initializing = false;\\n emit Initialized(1);\\n }\\n }\\n\\n /**\\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\\n * used to initialize parent contracts.\\n *\\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\\n * are added through upgrades and that require initialization.\\n *\\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\\n * cannot be nested. If one is invoked in the context of another, execution will revert.\\n *\\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\\n * a contract, executing them in the right order is up to the developer or operator.\\n *\\n * WARNING: setting the version to 255 will prevent any future reinitialization.\\n *\\n * Emits an {Initialized} event.\\n */\\n modifier reinitializer(uint8 version) {\\n require(!_initializing && _initialized < version, \\\"Initializable: contract is already initialized\\\");\\n _initialized = version;\\n _initializing = true;\\n _;\\n _initializing = false;\\n emit Initialized(version);\\n }\\n\\n /**\\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\\n */\\n modifier onlyInitializing() {\\n require(_initializing, \\\"Initializable: contract is not initializing\\\");\\n _;\\n }\\n\\n /**\\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\\n * through proxies.\\n *\\n * Emits an {Initialized} event the first time it is successfully executed.\\n */\\n function _disableInitializers() internal virtual {\\n require(!_initializing, \\\"Initializable: contract is initializing\\\");\\n if (_initialized < type(uint8).max) {\\n _initialized = type(uint8).max;\\n emit Initialized(type(uint8).max);\\n }\\n }\\n\\n /**\\n * @dev Internal function that returns the initialized version. Returns `_initialized`\\n */\\n function _getInitializedVersion() internal view returns (uint8) {\\n return _initialized;\\n }\\n\\n /**\\n * @dev Internal function that returns the initialized version. Returns `_initializing`\\n */\\n function _isInitializing() internal view returns (bool) {\\n return _initializing;\\n }\\n}\\n\",\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../interfaces/draft-IERC1822Upgradeable.sol\\\";\\nimport \\\"../ERC1967/ERC1967UpgradeUpgradeable.sol\\\";\\nimport \\\"./Initializable.sol\\\";\\n\\n/**\\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\\n *\\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\\n * `UUPSUpgradeable` with a custom implementation of upgrades.\\n *\\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\\n *\\n * _Available since v4.1._\\n */\\nabstract contract UUPSUpgradeable is Initializable, IERC1822ProxiableUpgradeable, ERC1967UpgradeUpgradeable {\\n function __UUPSUpgradeable_init() internal onlyInitializing {\\n }\\n\\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\\n }\\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable state-variable-assignment\\n address private immutable __self = address(this);\\n\\n /**\\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\\n * fail.\\n */\\n modifier onlyProxy() {\\n require(address(this) != __self, \\\"Function must be called through delegatecall\\\");\\n require(_getImplementation() == __self, \\\"Function must be called through active proxy\\\");\\n _;\\n }\\n\\n /**\\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\\n * callable on the implementing contract but not through proxies.\\n */\\n modifier notDelegated() {\\n require(address(this) == __self, \\\"UUPSUpgradeable: must not be called through delegatecall\\\");\\n _;\\n }\\n\\n /**\\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\\n */\\n function proxiableUUID() external view virtual override notDelegated returns (bytes32) {\\n return _IMPLEMENTATION_SLOT;\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function upgradeTo(address newImplementation) external virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, new bytes(0), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\\n * encoded in `data`.\\n *\\n * Calls {_authorizeUpgrade}.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function upgradeToAndCall(address newImplementation, bytes memory data) external payable virtual onlyProxy {\\n _authorizeUpgrade(newImplementation);\\n _upgradeToAndCallUUPS(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\\n * {upgradeTo} and {upgradeToAndCall}.\\n *\\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\\n *\\n * ```solidity\\n * function _authorizeUpgrade(address) internal override onlyOwner {}\\n * ```\\n */\\n function _authorizeUpgrade(address newImplementation) internal virtual;\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x7967d130887c4b40666cd88f8744691d4527039a1b2a38aa0de41481ef646778\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary AddressUpgradeable {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal onlyInitializing {\\n }\\n\\n function __Context_init_unchained() internal onlyInitializing {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n\\n /**\\n * @dev This empty reserved space is put in place to allow future versions to add new\\n * variables without shifting down storage in the inheritance chain.\\n * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\\n */\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlotUpgradeable {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n /// @solidity memory-safe-assembly\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x09864aea84f01e39313375b5610c73a3c1c68abbdc51e5ccdd25ff977fdadf9a\",\"license\":\"MIT\"},\"contracts/higherOrderFactories/BaalAndVaultSummoner.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.8.7;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\n\\nimport \\\"../interfaces/IBaalSummoner.sol\\\";\\n\\n/*\\nSummon new 'non-ragequitable' treasury Safe (Vaults). (sidecar?)\\nCan summon a dao with a new Vault.\\nCan summon a new vault for a dao after initial dao setup.\\nActs as a register and the owner of the contract or DAO can deactivate\\nregister is primarily a helper for UIs\\nOwner of the contract can add new vaults, and set current vaults\\nContract is upgradable and should be owned by a DAO\\n*/\\ncontract BaalAndVaultSummoner is Initializable, OwnableUpgradeable, UUPSUpgradeable {\\n\\n IBaalSummoner public _baalSummoner;\\n uint256 public vaultIdx;\\n\\n struct Vault{\\n uint256 id;\\n bool active;\\n address daoAddress;\\n address vaultAddress;\\n string name;\\n }\\n mapping(uint256 => Vault) public vaults;\\n mapping(address => address) public delegates;\\n\\n event SetVault(\\n Vault vault\\n );\\n\\n event SetDelegate(\\n address daoAddress,\\n address delegate\\n );\\n\\n event setSummoner(\\n address summoner\\n );\\n\\n function initialize() initializer public {\\n __Ownable_init();\\n __UUPSUpgradeable_init();\\n vaultIdx = 0;\\n }\\n\\n function setSummonerAddr(\\n address baalSummoner\\n ) public onlyOwner {\\n require(baalSummoner != address(0), \\\"zero address\\\");\\n _baalSummoner = IBaalSummoner(baalSummoner);\\n emit setSummoner(baalSummoner);\\n }\\n\\n /** Summon a new baal and add a Vault */\\n function summonBaalAndVault(\\n bytes calldata initializationParams,\\n bytes[] calldata initializationActions,\\n uint256 saltNonce,\\n bytes32 referrer,\\n string memory name\\n ) external returns (address _daoAddress, address _vaultAddress) {\\n _daoAddress = _baalSummoner.summonBaalFromReferrer(\\n initializationParams,\\n initializationActions,\\n saltNonce,\\n referrer\\n );\\n _vaultAddress = summonVault(_daoAddress, name);\\n }\\n\\n /** create and add a Vault(Safe) to an existing DAO */\\n function summonVault(\\n address daoAddress,\\n string memory name\\n ) public returns (address _vaultAddress) {\\n _vaultAddress = _baalSummoner.deployAndSetupSafe(\\n daoAddress\\n );\\n _setNewVault(name, daoAddress, _vaultAddress);\\n }\\n\\n /** set a Vault as active or not on existing dao (owner only) */\\n // Admin functions to help maintain the registry.\\n function setVault(\\n uint256 id,\\n bool active\\n ) public onlyOwner\\n {\\n _setVault(id, active);\\n }\\n\\n /** set a new Vault as active on existing dao (owner only) */\\n // Admin functions to help maintain the registry.\\n function setNewVault(\\n address daoAddress, \\n address vaultAddress,\\n string memory name\\n ) public onlyOwner\\n {\\n _setNewVault(name, daoAddress, vaultAddress);\\n }\\n\\n /** \\n A DAO can set a Vault as inactive \\n */\\n function deactivateVaultAsDao(\\n uint256 id,\\n address daoAddress\\n ) external\\n {\\n require(msg.sender == daoAddress || msg.sender == delegates[daoAddress], \\\"not DAO or delegate\\\");\\n require(vaults[id].daoAddress == daoAddress && vaults[id].active,\\\"!not active DAO vault\\\");\\n _setVault(id, false);\\n }\\n\\n /** Allow a Dao to set a delegate that can manage vault enteries */\\n function setDelegate(\\n address daoAddress,\\n address delegate\\n ) external\\n {\\n require(msg.sender == daoAddress, \\\"!DAO\\\");\\n delegates[daoAddress] = delegate;\\n emit SetDelegate(daoAddress, delegate);\\n }\\n\\n\\n function _setVault(\\n uint256 id, \\n bool active\\n ) internal \\n {\\n vaults[id].active = active;\\n emit SetVault(vaults[id]);\\n }\\n\\n function _setNewVault(\\n string memory name,\\n address daoAddress, \\n address vaultAddress\\n ) internal \\n {\\n vaultIdx += 1;\\n vaults[vaultIdx] = Vault(vaultIdx, true, daoAddress, vaultAddress, name);\\n emit SetVault(vaults[vaultIdx]);\\n }\\n\\n function _authorizeUpgrade(address newImplementation)\\n internal\\n onlyOwner\\n override\\n {}\\n}\\n\",\"keccak256\":\"0x5519dacfb28e1a8ec59e4653d8d85f18a2ecf32a9ec00627d4575c94c2c27553\",\"license\":\"MIT\"},\"contracts/interfaces/IBaalSummoner.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.7;\\n\\ninterface IBaalSummoner {\\n event AdminChanged(address previousAdmin, address newAdmin);\\n event BeaconUpgraded(address indexed beacon);\\n event DaoReferral(bytes32 referrer, address daoAddress);\\n event DeployBaalSafe(address baalSafe, address moduleAddr);\\n event DeployBaalTokens(address lootToken, address sharesToken);\\n event Initialized(uint8 version);\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n event SetAddrsVersion(uint256 version);\\n event SummonBaal(\\n address indexed baal,\\n address indexed loot,\\n address indexed shares,\\n address safe,\\n address forwarder,\\n uint256 existingAddrs\\n );\\n event Upgraded(address indexed implementation);\\n\\n function setAddrs(\\n address _template,\\n address _gnosisSingleton,\\n address _gnosisFallbackLibrary,\\n address _gnosisMultisendLibrary,\\n address _gnosisSafeProxyFactory,\\n address _moduleProxyFactory,\\n address _lootSingleton,\\n address _sharesSingleton\\n ) external;\\n\\n function initialize() external;\\n\\n function transferOwnership(address newOwner) external;\\n function upgradeTo(address newImplementation) external;\\n function upgradeToAndCall(address newImplementation, bytes memory data) external payable;\\n function renounceOwnership() external;\\n\\n function summonBaal(bytes memory initializationParams, bytes[] memory initializationActions, uint256 _saltNonce)\\n external\\n returns (address);\\n function summonBaalFromReferrer(\\n bytes memory initializationParams,\\n bytes[] memory initializationActions,\\n uint256 _saltNonce,\\n bytes32 referrer\\n ) external payable returns (address);\\n\\n function deployAndSetupSafe(address _moduleAddr) external returns (address);\\n function deployTokens(string memory _name, string memory _symbol)\\n external\\n returns (address lootToken, address sharesToken);\\n\\n function encodeMultisend(bytes[] memory _calls, address _target)\\n external\\n pure\\n returns (bytes memory encodedMultisend);\\n function addrsVersion() external view returns (uint256);\\n function gnosisFallbackLibrary() external view returns (address);\\n function gnosisMultisendLibrary() external view returns (address);\\n function gnosisSingleton() external view returns (address);\\n function lootSingleton() external view returns (address);\\n function sharesSingleton() external view returns (address);\\n function owner() external view returns (address);\\n function proxiableUUID() external view returns (bytes32);\\n function template() external view returns (address);\\n}\\n\",\"keccak256\":\"0xc5eb34a9c49792956ed8574ce0fae742c3ea655101a890965caf7e7983e1be79\",\"license\":\"MIT\"}},\"version\":1}",
|
|
"bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c611b4c6100526000396000818161049f015281816104df0152818161057f015281816105bf015261064e0152611b4c6000f3fe6080604052600436106101095760003560e01c80638129fc1c11610095578063ac06a9a911610064578063ac06a9a9146102f2578063b395f08614610312578063bb6decc814610332578063bedfb8d414610352578063f2fde38b1461036857600080fd5b80638129fc1c1461024e5780638c64ea4a146102635780638da5cb5b14610294578063a156d863146102b257600080fd5b806352d1902d116100dc57806352d1902d146101a0578063587cde1e146101c35780635c873849146101f9578063619dd5d414610219578063715018a61461023957600080fd5b8063133afcc01461010e57806314b630f9146101305780633659cfe61461016d5780634f1ef2861461018d575b600080fd5b34801561011a57600080fd5b5061012e610129366004611678565b610388565b005b34801561013c57600080fd5b5060c954610150906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017957600080fd5b5061012e6101883660046113f5565b610494565b61012e61019b3660046114ca565b610574565b3480156101ac57600080fd5b506101b5610641565b604051908152602001610164565b3480156101cf57600080fd5b506101506101de3660046113f5565b60cc602052600090815260409020546001600160a01b031681565b34801561020557600080fd5b5061012e61021436600461142f565b6106f4565b34801561022557600080fd5b5061012e61023436600461169d565b6107a1565b34801561024557600080fd5b5061012e6107b3565b34801561025a57600080fd5b5061012e6107c7565b34801561026f57600080fd5b5061028361027e36600461165f565b6108e5565b6040516101649594939291906119d2565b3480156102a057600080fd5b506033546001600160a01b0316610150565b3480156102be57600080fd5b506102d26102cd36600461158d565b6109b0565b604080516001600160a01b03938416815292909116602083015201610164565b3480156102fe57600080fd5b5061015061030d36600461152e565b610a5b565b34801561031e57600080fd5b5061012e61032d366004611468565b610aee565b34801561033e57600080fd5b5061012e61034d3660046113f5565b610b06565b34801561035e57600080fd5b506101b560ca5481565b34801561037457600080fd5b5061012e6103833660046113f5565b610ba1565b336001600160a01b03821614806103b857506001600160a01b03818116600090815260cc60205260409020541633145b6103ff5760405162461bcd60e51b81526020600482015260136024820152726e6f742044414f206f722064656c656761746560681b60448201526064015b60405180910390fd5b600082815260cb60205260409020600101546001600160a01b03828116610100909204161480156104415750600082815260cb602052604090206001015460ff165b6104855760405162461bcd60e51b8152602060048201526015602482015274085b9bdd081858dd1a5d9948111053c81d985d5b1d605a1b60448201526064016103f6565b610490826000610c17565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156104dd5760405162461bcd60e51b81526004016103f690611806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610526600080516020611ad0833981519152546001600160a01b031690565b6001600160a01b03161461054c5760405162461bcd60e51b81526004016103f690611852565b61055581610c64565b6040805160008082526020820190925261057191839190610c6c565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105bd5760405162461bcd60e51b81526004016103f690611806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610606600080516020611ad0833981519152546001600160a01b031690565b6001600160a01b03161461062c5760405162461bcd60e51b81526004016103f690611852565b61063582610c64565b61049082826001610c6c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106e15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f6565b50600080516020611ad083398151915290565b336001600160a01b038316146107355760405162461bcd60e51b81526004016103f6906020808252600490820152632144414f60e01b604082015260600190565b6001600160a01b03828116600081815260cc602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527fbeebfeebc9d1af8057ca45af36b2171fea34cb5b251e394f0bc5fcabde119d7f91015b60405180910390a15050565b6107a9610de6565b6104908282610c17565b6107bb610de6565b6107c56000610e40565b565b600054610100900460ff16158080156107e75750600054600160ff909116105b806108015750303b158015610801575060005460ff166001145b6108645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f6565b6000805460ff191660011790558015610887576000805461ff0019166101001790555b61088f610e92565b610897610ec1565b600060ca558015610571576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60cb602052600090815260409020805460018201546002830154600384018054939460ff8416946101009094046001600160a01b039081169493169290919061092d90611a69565b80601f016020809104026020016040519081016040528092919081815260200182805461095990611a69565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905085565b60c95460405163209f369560e01b815260009182916001600160a01b039091169063209f3695906109ef908c908c908c908c908c908c90600401611738565b602060405180830381600087803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190611412565b9150610a4d8284610a5b565b905097509795505050505050565b60c954604051633e2108c760e21b81526001600160a01b038481166004830152600092169063f884231c90602401602060405180830381600087803b158015610aa357600080fd5b505af1158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190611412565b9050610ae8828483610ee8565b92915050565b610af6610de6565b610b01818484610ee8565b505050565b610b0e610de6565b6001600160a01b038116610b535760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b60448201526064016103f6565b60c980546001600160a01b0319166001600160a01b0383169081179091556040519081527ff471c7a7115723e1d5e0a3b924bec97596831b94082a24d73c8c3210c6cb3b06906020016108da565b610ba9610de6565b6001600160a01b038116610c0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f6565b61057181610e40565b600082815260cb60205260409081902060018101805460ff191684151517905590517f70720885c820c73facaa75bc2669991b591d9fd2a1e2507a4a9a8022f9336f7891610795916118e9565b610571610de6565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c9f57610b0183611005565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd857600080fd5b505afa925050508015610d08575060408051601f3d908101601f19168201909252610d0591810190611574565b60015b610d6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103f6565b600080516020611ad08339815191528114610dda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103f6565b50610b018383836110a1565b6033546001600160a01b031633146107c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610eb95760405162461bcd60e51b81526004016103f69061189e565b6107c56110cc565b600054610100900460ff166107c55760405162461bcd60e51b81526004016103f69061189e565b600160ca6000828254610efb9190611a17565b90915550506040805160a08101825260ca54808252600160208084018281526001600160a01b0388811686880190815288821660608801908152608088018c8152600097885260cb865298909620875181559251948301805491516001600160a81b0319909216951515610100600160a81b03191695909517610100918316919091021790935592516002840180546001600160a01b03191691909316179091559251805192939192610fb4926003850192019061127a565b505060ca54600090815260cb60205260409081902090517f70720885c820c73facaa75bc2669991b591d9fd2a1e2507a4a9a8022f9336f789250610ff891906118e9565b60405180910390a1505050565b6001600160a01b0381163b6110725760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103f6565b600080516020611ad083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6110aa836110fc565b6000825111806110b75750805b15610b01576110c6838361113c565b50505050565b600054610100900460ff166110f35760405162461bcd60e51b81526004016103f69061189e565b6107c533610e40565b61110581611005565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6111a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103f6565b600080846001600160a01b0316846040516111bf919061171c565b600060405180830381855af49150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b50915091506112278282604051806060016040528060278152602001611af060279139611230565b95945050505050565b6060831561123f575081611249565b6112498383611250565b9392505050565b8151156112605781518083602001fd5b8060405162461bcd60e51b81526004016103f691906117f3565b82805461128690611a69565b90600052602060002090601f0160209004810192826112a857600085556112ee565b82601f106112c157805160ff19168380011785556112ee565b828001600101855582156112ee579182015b828111156112ee5782518255916020019190600101906112d3565b506112fa9291506112fe565b5090565b5b808211156112fa57600081556001016112ff565b600067ffffffffffffffff8084111561132e5761132e611aa4565b604051601f8501601f19908116603f0116810190828211818310171561135657611356611aa4565b8160405280935085815286868601111561136f57600080fd5b858560208301376000602087830101525050509392505050565b60008083601f84011261139b57600080fd5b50813567ffffffffffffffff8111156113b357600080fd5b6020830191508360208260051b85010111156113ce57600080fd5b9250929050565b600082601f8301126113e657600080fd5b61124983833560208501611313565b60006020828403121561140757600080fd5b813561124981611aba565b60006020828403121561142457600080fd5b815161124981611aba565b6000806040838503121561144257600080fd5b823561144d81611aba565b9150602083013561145d81611aba565b809150509250929050565b60008060006060848603121561147d57600080fd5b833561148881611aba565b9250602084013561149881611aba565b9150604084013567ffffffffffffffff8111156114b457600080fd5b6114c0868287016113d5565b9150509250925092565b600080604083850312156114dd57600080fd5b82356114e881611aba565b9150602083013567ffffffffffffffff81111561150457600080fd5b8301601f8101851361151557600080fd5b61152485823560208401611313565b9150509250929050565b6000806040838503121561154157600080fd5b823561154c81611aba565b9150602083013567ffffffffffffffff81111561156857600080fd5b611524858286016113d5565b60006020828403121561158657600080fd5b5051919050565b600080600080600080600060a0888a0312156115a857600080fd5b873567ffffffffffffffff808211156115c057600080fd5b818a0191508a601f8301126115d457600080fd5b8135818111156115e357600080fd5b8b60208285010111156115f557600080fd5b60209283019950975090890135908082111561161057600080fd5b61161c8b838c01611389565b909750955060408a0135945060608a0135935060808a013591508082111561164357600080fd5b506116508a828b016113d5565b91505092959891949750929550565b60006020828403121561167157600080fd5b5035919050565b6000806040838503121561168b57600080fd5b82359150602083013561145d81611aba565b600080604083850312156116b057600080fd5b823591506020830135801515811461145d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452611708816020860160208601611a3d565b601f01601f19169290920160200192915050565b6000825161172e818460208701611a3d565b9190910192915050565b60808152600061174c60808301888a6116c7565b602083820381850152818783528183019050818860051b8401018960005b8a8110156117d957858303601f190184528135368d9003601e1901811261179057600080fd5b8c01803567ffffffffffffffff8111156117a957600080fd5b8036038e13156117b857600080fd5b6117c585828985016116c7565b95870195945050509084019060010161176a565b505060408601979097525050505060600152949350505050565b60208152600061124960208301846116f0565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825282548282015260018084015460ff81161515604085015260081c6001600160a01b039081166060850152600285015416608084015260a080840152600384018054600093929190849080841c8185168061194957607f821691505b86821081141561196757634e487b7160e01b84526022600452602484fd5b60c0890182905260e089018180156119865760018114611997576119c2565b60ff198516825288820195506119c2565b60008781526020902060005b858110156119bc57815484820152908901908a016119a3565b83019650505b50939a9950505050505050505050565b85815284151560208201526001600160a01b0384811660408301528316606082015260a060808201819052600090611a0c908301846116f0565b979650505050505050565b60008219821115611a3857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015611a58578181015183820152602001611a40565b838111156110c65750506000910152565b600181811c90821680611a7d57607f821691505b60208210811415611a9e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461057157600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201a147e58c05b20357cb3919a570b985d63b405a5c57197b71f94854fda882a9a64736f6c63430008070033",
|
|
"deployedBytecode": "0x6080604052600436106101095760003560e01c80638129fc1c11610095578063ac06a9a911610064578063ac06a9a9146102f2578063b395f08614610312578063bb6decc814610332578063bedfb8d414610352578063f2fde38b1461036857600080fd5b80638129fc1c1461024e5780638c64ea4a146102635780638da5cb5b14610294578063a156d863146102b257600080fd5b806352d1902d116100dc57806352d1902d146101a0578063587cde1e146101c35780635c873849146101f9578063619dd5d414610219578063715018a61461023957600080fd5b8063133afcc01461010e57806314b630f9146101305780633659cfe61461016d5780634f1ef2861461018d575b600080fd5b34801561011a57600080fd5b5061012e610129366004611678565b610388565b005b34801561013c57600080fd5b5060c954610150906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017957600080fd5b5061012e6101883660046113f5565b610494565b61012e61019b3660046114ca565b610574565b3480156101ac57600080fd5b506101b5610641565b604051908152602001610164565b3480156101cf57600080fd5b506101506101de3660046113f5565b60cc602052600090815260409020546001600160a01b031681565b34801561020557600080fd5b5061012e61021436600461142f565b6106f4565b34801561022557600080fd5b5061012e61023436600461169d565b6107a1565b34801561024557600080fd5b5061012e6107b3565b34801561025a57600080fd5b5061012e6107c7565b34801561026f57600080fd5b5061028361027e36600461165f565b6108e5565b6040516101649594939291906119d2565b3480156102a057600080fd5b506033546001600160a01b0316610150565b3480156102be57600080fd5b506102d26102cd36600461158d565b6109b0565b604080516001600160a01b03938416815292909116602083015201610164565b3480156102fe57600080fd5b5061015061030d36600461152e565b610a5b565b34801561031e57600080fd5b5061012e61032d366004611468565b610aee565b34801561033e57600080fd5b5061012e61034d3660046113f5565b610b06565b34801561035e57600080fd5b506101b560ca5481565b34801561037457600080fd5b5061012e6103833660046113f5565b610ba1565b336001600160a01b03821614806103b857506001600160a01b03818116600090815260cc60205260409020541633145b6103ff5760405162461bcd60e51b81526020600482015260136024820152726e6f742044414f206f722064656c656761746560681b60448201526064015b60405180910390fd5b600082815260cb60205260409020600101546001600160a01b03828116610100909204161480156104415750600082815260cb602052604090206001015460ff165b6104855760405162461bcd60e51b8152602060048201526015602482015274085b9bdd081858dd1a5d9948111053c81d985d5b1d605a1b60448201526064016103f6565b610490826000610c17565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156104dd5760405162461bcd60e51b81526004016103f690611806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610526600080516020611ad0833981519152546001600160a01b031690565b6001600160a01b03161461054c5760405162461bcd60e51b81526004016103f690611852565b61055581610c64565b6040805160008082526020820190925261057191839190610c6c565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105bd5760405162461bcd60e51b81526004016103f690611806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610606600080516020611ad0833981519152546001600160a01b031690565b6001600160a01b03161461062c5760405162461bcd60e51b81526004016103f690611852565b61063582610c64565b61049082826001610c6c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106e15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103f6565b50600080516020611ad083398151915290565b336001600160a01b038316146107355760405162461bcd60e51b81526004016103f6906020808252600490820152632144414f60e01b604082015260600190565b6001600160a01b03828116600081815260cc602090815260409182902080546001600160a01b031916948616948517905581519283528201929092527fbeebfeebc9d1af8057ca45af36b2171fea34cb5b251e394f0bc5fcabde119d7f91015b60405180910390a15050565b6107a9610de6565b6104908282610c17565b6107bb610de6565b6107c56000610e40565b565b600054610100900460ff16158080156107e75750600054600160ff909116105b806108015750303b158015610801575060005460ff166001145b6108645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f6565b6000805460ff191660011790558015610887576000805461ff0019166101001790555b61088f610e92565b610897610ec1565b600060ca558015610571576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60cb602052600090815260409020805460018201546002830154600384018054939460ff8416946101009094046001600160a01b039081169493169290919061092d90611a69565b80601f016020809104026020016040519081016040528092919081815260200182805461095990611a69565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b5050505050905085565b60c95460405163209f369560e01b815260009182916001600160a01b039091169063209f3695906109ef908c908c908c908c908c908c90600401611738565b602060405180830381600087803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a419190611412565b9150610a4d8284610a5b565b905097509795505050505050565b60c954604051633e2108c760e21b81526001600160a01b038481166004830152600092169063f884231c90602401602060405180830381600087803b158015610aa357600080fd5b505af1158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190611412565b9050610ae8828483610ee8565b92915050565b610af6610de6565b610b01818484610ee8565b505050565b610b0e610de6565b6001600160a01b038116610b535760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b60448201526064016103f6565b60c980546001600160a01b0319166001600160a01b0383169081179091556040519081527ff471c7a7115723e1d5e0a3b924bec97596831b94082a24d73c8c3210c6cb3b06906020016108da565b610ba9610de6565b6001600160a01b038116610c0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f6565b61057181610e40565b600082815260cb60205260409081902060018101805460ff191684151517905590517f70720885c820c73facaa75bc2669991b591d9fd2a1e2507a4a9a8022f9336f7891610795916118e9565b610571610de6565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c9f57610b0183611005565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd857600080fd5b505afa925050508015610d08575060408051601f3d908101601f19168201909252610d0591810190611574565b60015b610d6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103f6565b600080516020611ad08339815191528114610dda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103f6565b50610b018383836110a1565b6033546001600160a01b031633146107c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610eb95760405162461bcd60e51b81526004016103f69061189e565b6107c56110cc565b600054610100900460ff166107c55760405162461bcd60e51b81526004016103f69061189e565b600160ca6000828254610efb9190611a17565b90915550506040805160a08101825260ca54808252600160208084018281526001600160a01b0388811686880190815288821660608801908152608088018c8152600097885260cb865298909620875181559251948301805491516001600160a81b0319909216951515610100600160a81b03191695909517610100918316919091021790935592516002840180546001600160a01b03191691909316179091559251805192939192610fb4926003850192019061127a565b505060ca54600090815260cb60205260409081902090517f70720885c820c73facaa75bc2669991b591d9fd2a1e2507a4a9a8022f9336f789250610ff891906118e9565b60405180910390a1505050565b6001600160a01b0381163b6110725760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103f6565b600080516020611ad083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6110aa836110fc565b6000825111806110b75750805b15610b01576110c6838361113c565b50505050565b600054610100900460ff166110f35760405162461bcd60e51b81526004016103f69061189e565b6107c533610e40565b61110581611005565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6111a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103f6565b600080846001600160a01b0316846040516111bf919061171c565b600060405180830381855af49150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b50915091506112278282604051806060016040528060278152602001611af060279139611230565b95945050505050565b6060831561123f575081611249565b6112498383611250565b9392505050565b8151156112605781518083602001fd5b8060405162461bcd60e51b81526004016103f691906117f3565b82805461128690611a69565b90600052602060002090601f0160209004810192826112a857600085556112ee565b82601f106112c157805160ff19168380011785556112ee565b828001600101855582156112ee579182015b828111156112ee5782518255916020019190600101906112d3565b506112fa9291506112fe565b5090565b5b808211156112fa57600081556001016112ff565b600067ffffffffffffffff8084111561132e5761132e611aa4565b604051601f8501601f19908116603f0116810190828211818310171561135657611356611aa4565b8160405280935085815286868601111561136f57600080fd5b858560208301376000602087830101525050509392505050565b60008083601f84011261139b57600080fd5b50813567ffffffffffffffff8111156113b357600080fd5b6020830191508360208260051b85010111156113ce57600080fd5b9250929050565b600082601f8301126113e657600080fd5b61124983833560208501611313565b60006020828403121561140757600080fd5b813561124981611aba565b60006020828403121561142457600080fd5b815161124981611aba565b6000806040838503121561144257600080fd5b823561144d81611aba565b9150602083013561145d81611aba565b809150509250929050565b60008060006060848603121561147d57600080fd5b833561148881611aba565b9250602084013561149881611aba565b9150604084013567ffffffffffffffff8111156114b457600080fd5b6114c0868287016113d5565b9150509250925092565b600080604083850312156114dd57600080fd5b82356114e881611aba565b9150602083013567ffffffffffffffff81111561150457600080fd5b8301601f8101851361151557600080fd5b61152485823560208401611313565b9150509250929050565b6000806040838503121561154157600080fd5b823561154c81611aba565b9150602083013567ffffffffffffffff81111561156857600080fd5b611524858286016113d5565b60006020828403121561158657600080fd5b5051919050565b600080600080600080600060a0888a0312156115a857600080fd5b873567ffffffffffffffff808211156115c057600080fd5b818a0191508a601f8301126115d457600080fd5b8135818111156115e357600080fd5b8b60208285010111156115f557600080fd5b60209283019950975090890135908082111561161057600080fd5b61161c8b838c01611389565b909750955060408a0135945060608a0135935060808a013591508082111561164357600080fd5b506116508a828b016113d5565b91505092959891949750929550565b60006020828403121561167157600080fd5b5035919050565b6000806040838503121561168b57600080fd5b82359150602083013561145d81611aba565b600080604083850312156116b057600080fd5b823591506020830135801515811461145d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452611708816020860160208601611a3d565b601f01601f19169290920160200192915050565b6000825161172e818460208701611a3d565b9190910192915050565b60808152600061174c60808301888a6116c7565b602083820381850152818783528183019050818860051b8401018960005b8a8110156117d957858303601f190184528135368d9003601e1901811261179057600080fd5b8c01803567ffffffffffffffff8111156117a957600080fd5b8036038e13156117b857600080fd5b6117c585828985016116c7565b95870195945050509084019060010161176a565b505060408601979097525050505060600152949350505050565b60208152600061124960208301846116f0565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602080825282548282015260018084015460ff81161515604085015260081c6001600160a01b039081166060850152600285015416608084015260a080840152600384018054600093929190849080841c8185168061194957607f821691505b86821081141561196757634e487b7160e01b84526022600452602484fd5b60c0890182905260e089018180156119865760018114611997576119c2565b60ff198516825288820195506119c2565b60008781526020902060005b858110156119bc57815484820152908901908a016119a3565b83019650505b50939a9950505050505050505050565b85815284151560208201526001600160a01b0384811660408301528316606082015260a060808201819052600090611a0c908301846116f0565b979650505050505050565b60008219821115611a3857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015611a58578181015183820152602001611a40565b838111156110c65750506000910152565b600181811c90821680611a7d57607f821691505b60208210811415611a9e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461057157600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201a147e58c05b20357cb3919a570b985d63b405a5c57197b71f94854fda882a9a64736f6c63430008070033",
|
|
"devdoc": {
|
|
"kind": "dev",
|
|
"methods": {
|
|
"owner()": {
|
|
"details": "Returns the address of the current owner."
|
|
},
|
|
"proxiableUUID()": {
|
|
"details": "Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
|
|
},
|
|
"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."
|
|
},
|
|
"transferOwnership(address)": {
|
|
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
|
|
},
|
|
"upgradeTo(address)": {
|
|
"details": "Upgrade the implementation of the proxy to `newImplementation`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
|
|
},
|
|
"upgradeToAndCall(address,bytes)": {
|
|
"details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
|
|
}
|
|
},
|
|
"version": 1
|
|
},
|
|
"userdoc": {
|
|
"kind": "user",
|
|
"methods": {
|
|
"deactivateVaultAsDao(uint256,address)": {
|
|
"notice": "A DAO can set a Vault as inactive "
|
|
},
|
|
"setDelegate(address,address)": {
|
|
"notice": "Allow a Dao to set a delegate that can manage vault enteries "
|
|
},
|
|
"setNewVault(address,address,string)": {
|
|
"notice": "set a new Vault as active on existing dao (owner only) "
|
|
},
|
|
"setVault(uint256,bool)": {
|
|
"notice": "set a Vault as active or not on existing dao (owner only) "
|
|
},
|
|
"summonBaalAndVault(bytes,bytes[],uint256,bytes32,string)": {
|
|
"notice": "Summon a new baal and add a Vault "
|
|
},
|
|
"summonVault(address,string)": {
|
|
"notice": "create and add a Vault(Safe) to an existing DAO "
|
|
}
|
|
},
|
|
"version": 1
|
|
},
|
|
"storageLayout": {
|
|
"storage": [
|
|
{
|
|
"astId": 4454,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "_initialized",
|
|
"offset": 0,
|
|
"slot": "0",
|
|
"type": "t_uint8"
|
|
},
|
|
{
|
|
"astId": 4457,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "_initializing",
|
|
"offset": 1,
|
|
"slot": "0",
|
|
"type": "t_bool"
|
|
},
|
|
{
|
|
"astId": 6723,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "__gap",
|
|
"offset": 0,
|
|
"slot": "1",
|
|
"type": "t_array(t_uint256)50_storage"
|
|
},
|
|
{
|
|
"astId": 3937,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "_owner",
|
|
"offset": 0,
|
|
"slot": "51",
|
|
"type": "t_address"
|
|
},
|
|
{
|
|
"astId": 4057,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "__gap",
|
|
"offset": 0,
|
|
"slot": "52",
|
|
"type": "t_array(t_uint256)49_storage"
|
|
},
|
|
{
|
|
"astId": 4436,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "__gap",
|
|
"offset": 0,
|
|
"slot": "101",
|
|
"type": "t_array(t_uint256)50_storage"
|
|
},
|
|
{
|
|
"astId": 4751,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "__gap",
|
|
"offset": 0,
|
|
"slot": "151",
|
|
"type": "t_array(t_uint256)50_storage"
|
|
},
|
|
{
|
|
"astId": 13477,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "_baalSummoner",
|
|
"offset": 0,
|
|
"slot": "201",
|
|
"type": "t_contract(IBaalSummoner)14323"
|
|
},
|
|
{
|
|
"astId": 13479,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "vaultIdx",
|
|
"offset": 0,
|
|
"slot": "202",
|
|
"type": "t_uint256"
|
|
},
|
|
{
|
|
"astId": 13495,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "vaults",
|
|
"offset": 0,
|
|
"slot": "203",
|
|
"type": "t_mapping(t_uint256,t_struct(Vault)13490_storage)"
|
|
},
|
|
{
|
|
"astId": 13499,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "delegates",
|
|
"offset": 0,
|
|
"slot": "204",
|
|
"type": "t_mapping(t_address,t_address)"
|
|
}
|
|
],
|
|
"types": {
|
|
"t_address": {
|
|
"encoding": "inplace",
|
|
"label": "address",
|
|
"numberOfBytes": "20"
|
|
},
|
|
"t_array(t_uint256)49_storage": {
|
|
"base": "t_uint256",
|
|
"encoding": "inplace",
|
|
"label": "uint256[49]",
|
|
"numberOfBytes": "1568"
|
|
},
|
|
"t_array(t_uint256)50_storage": {
|
|
"base": "t_uint256",
|
|
"encoding": "inplace",
|
|
"label": "uint256[50]",
|
|
"numberOfBytes": "1600"
|
|
},
|
|
"t_bool": {
|
|
"encoding": "inplace",
|
|
"label": "bool",
|
|
"numberOfBytes": "1"
|
|
},
|
|
"t_contract(IBaalSummoner)14323": {
|
|
"encoding": "inplace",
|
|
"label": "contract IBaalSummoner",
|
|
"numberOfBytes": "20"
|
|
},
|
|
"t_mapping(t_address,t_address)": {
|
|
"encoding": "mapping",
|
|
"key": "t_address",
|
|
"label": "mapping(address => address)",
|
|
"numberOfBytes": "32",
|
|
"value": "t_address"
|
|
},
|
|
"t_mapping(t_uint256,t_struct(Vault)13490_storage)": {
|
|
"encoding": "mapping",
|
|
"key": "t_uint256",
|
|
"label": "mapping(uint256 => struct BaalAndVaultSummoner.Vault)",
|
|
"numberOfBytes": "32",
|
|
"value": "t_struct(Vault)13490_storage"
|
|
},
|
|
"t_string_storage": {
|
|
"encoding": "bytes",
|
|
"label": "string",
|
|
"numberOfBytes": "32"
|
|
},
|
|
"t_struct(Vault)13490_storage": {
|
|
"encoding": "inplace",
|
|
"label": "struct BaalAndVaultSummoner.Vault",
|
|
"members": [
|
|
{
|
|
"astId": 13481,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "id",
|
|
"offset": 0,
|
|
"slot": "0",
|
|
"type": "t_uint256"
|
|
},
|
|
{
|
|
"astId": 13483,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "active",
|
|
"offset": 0,
|
|
"slot": "1",
|
|
"type": "t_bool"
|
|
},
|
|
{
|
|
"astId": 13485,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "daoAddress",
|
|
"offset": 1,
|
|
"slot": "1",
|
|
"type": "t_address"
|
|
},
|
|
{
|
|
"astId": 13487,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "vaultAddress",
|
|
"offset": 0,
|
|
"slot": "2",
|
|
"type": "t_address"
|
|
},
|
|
{
|
|
"astId": 13489,
|
|
"contract": "contracts/higherOrderFactories/BaalAndVaultSummoner.sol:BaalAndVaultSummoner",
|
|
"label": "name",
|
|
"offset": 0,
|
|
"slot": "3",
|
|
"type": "t_string_storage"
|
|
}
|
|
],
|
|
"numberOfBytes": "128"
|
|
},
|
|
"t_uint256": {
|
|
"encoding": "inplace",
|
|
"label": "uint256",
|
|
"numberOfBytes": "32"
|
|
},
|
|
"t_uint8": {
|
|
"encoding": "inplace",
|
|
"label": "uint8",
|
|
"numberOfBytes": "1"
|
|
}
|
|
}
|
|
}
|
|
} |