UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

1,477 lines 118 kB
{ "_format": "hh-sol-artifact-1", "contractName": "PermissionManager", "sourceName": "contracts/DAO/PermissionManager.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "role", "type": "string" }, { "indexed": false, "internalType": "string", "name": "resource", "type": "string" }, { "indexed": false, "internalType": "string[]", "name": "permissionsToAdd", "type": "string[]" }, { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "AddedPermissions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "who", "type": "address" }, { "indexed": false, "internalType": "string[]", "name": "groupsToAddTo", "type": "string[]" } ], "name": "AddedToGroups", "type": "event" }, { "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": "string", "name": "groupTo", "type": "string" }, { "indexed": false, "internalType": "string[]", "name": "rolesToGrant", "type": "string[]" } ], "name": "GrantedGroupRoles", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "string[]", "name": "rolesToGrant", "type": "string[]" } ], "name": "GrantedRoles", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "address", "name": "linkedMemberStorage", "type": "address" } ], "name": "LinkedStorageToVetoGroup", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "who", "type": "address" }, { "indexed": false, "internalType": "string[]", "name": "groupsToRemoveFrom", "type": "string[]" } ], "name": "RemovedFromGroups", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "role", "type": "string" }, { "indexed": false, "internalType": "string", "name": "resource", "type": "string" }, { "indexed": false, "internalType": "string[]", "name": "permissionsToRemove", "type": "string[]" }, { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } ], "name": "RemovedPermissions", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "groupFrom", "type": "string" }, { "indexed": false, "internalType": "string[]", "name": "rolesToRevoke", "type": "string[]" } ], "name": "RevokedGroupRoles", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "string[]", "name": "rolesToRevoke", "type": "string[]" } ], "name": "RevokedRoles", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "defaultGroupEnabled", "type": "bool" } ], "name": "ToggledDefaultGroup", "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": "target", "type": "address" }, { "indexed": false, "internalType": "address", "name": "linkedMemberStorage", "type": "address" } ], "name": "VetoGroupAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "target", "type": "address" } ], "name": "VetoGroupRemoved", "type": "event" }, { "inputs": [], "name": "ALL_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ALL_RESOURCE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CREATE_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DELETE_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MASTER_ROLE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMISSION_MANAGER_RESOURCE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RBAC_RESOURCE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "READ_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPDATE_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract DAORegistry", "name": "daoRegistry_", "type": "address" }, { "internalType": "address", "name": "master_", "type": "address" }, { "internalType": "string", "name": "resource_", "type": "string" } ], "name": "__PermissionManager_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" }, { "internalType": "string[]", "name": "groups_", "type": "string[]" } ], "name": "addMemberToGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "role_", "type": "string" }, { "components": [ { "internalType": "string", "name": "resource", "type": "string" }, { "internalType": "string[]", "name": "permissions", "type": "string[]" } ], "internalType": "struct IRBAC.ResourceWithPermissions[]", "name": "permissionsToAdd_", "type": "tuple[]" }, { "internalType": "bool", "name": "allowed_", "type": "bool" } ], "name": "addPermissionsToRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who_", "type": "address" }, { "internalType": "string[]", "name": "groupsToAddTo_", "type": "string[]" } ], "name": "addUserToGroups", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" }, { "internalType": "contract DAOMemberStorage", "name": "linkedMemberStorage_", "type": "address" } ], "name": "addVetoGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "contract DAOMemberStorage", "name": "linkedMemberStorage", "type": "address" } ], "internalType": "struct IPermissionManager.VetoGroup[]", "name": "vetoGroups_", "type": "tuple[]" } ], "name": "addVetoGroups", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "string", "name": "permission_", "type": "string" } ], "name": "checkPermission", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "moduleName_", "type": "string" } ], "name": "confExternalModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "moduleName", "type": "string" }, { "internalType": "address", "name": "moduleAddress", "type": "address" }, { "internalType": "string", "name": "connectorRoleName", "type": "string" }, { "internalType": "enum ModuleAdditionType", "name": "moduleType", "type": "uint8" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "bytes", "name": "value", "type": "bytes" }, { "internalType": "enum ParameterType", "name": "solidityType", "type": "uint8" } ], "internalType": "struct Parameter[]", "name": "constitutionParameters", "type": "tuple[]" }, { "internalType": "string", "name": "votingName", "type": "string" }, { "components": [ { "components": [ { "internalType": "string", "name": "votingSituationName", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "votingPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "vetoPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "proposalExecutionPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "requiredQuorum", "type": "uint256" }, { "internalType": "uint256", "name": "requiredMajority", "type": "uint256" }, { "internalType": "uint256", "name": "requiredVetoQuorum", "type": "uint256" }, { "internalType": "uint256", "name": "votingType", "type": "uint256" }, { "internalType": "string", "name": "votingTarget", "type": "string" }, { "internalType": "uint256", "name": "votingMinAmount", "type": "uint256" } ], "internalType": "struct IDAOVoting.DAOVotingValues", "name": "votingValues", "type": "tuple" } ], "internalType": "struct IDAOVoting.InitialSituation", "name": "initialSituation", "type": "tuple" }, { "internalType": "string", "name": "externalLink", "type": "string" } ], "internalType": "struct IDAOVoting.ExtendedSituation", "name": "situation", "type": "tuple" }, { "internalType": "address", "name": "vetoGroupSource", "type": "address" }, { "internalType": "bytes", "name": "initCallData", "type": "bytes" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "internalType": "struct DAOModuleContractorParameters", "name": "daoModuleParams_", "type": "tuple" } ], "name": "deployModuleViaFactory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "panelName", "type": "string" }, { "internalType": "address", "name": "votingToken", "type": "address" }, { "components": [ { "components": [ { "internalType": "string", "name": "votingSituationName", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "votingPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "vetoPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "proposalExecutionPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "requiredQuorum", "type": "uint256" }, { "internalType": "uint256", "name": "requiredMajority", "type": "uint256" }, { "internalType": "uint256", "name": "requiredVetoQuorum", "type": "uint256" }, { "internalType": "uint256", "name": "votingType", "type": "uint256" }, { "internalType": "string", "name": "votingTarget", "type": "string" }, { "internalType": "uint256", "name": "votingMinAmount", "type": "uint256" } ], "internalType": "struct IDAOVoting.DAOVotingValues", "name": "votingValues", "type": "tuple" } ], "internalType": "struct IDAOVoting.InitialSituation", "name": "initialSituation", "type": "tuple" }, { "internalType": "string", "name": "externalLink", "type": "string" } ], "internalType": "struct IDAOVoting.ExtendedSituation[]", "name": "situations", "type": "tuple[]" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "bytes", "name": "value", "type": "bytes" }, { "internalType": "enum ParameterType", "name": "solidityType", "type": "uint8" } ], "internalType": "struct Parameter[]", "name": "initialParameters", "type": "tuple[]" }, { "internalType": "address[]", "name": "initialMembers", "type": "address[]" } ], "internalType": "struct DAOPanelConstructorParameters", "name": "daoPanelParams_", "type": "tuple" } ], "name": "deployPanelViaFactory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getDAORegistry", "outputs": [ { "internalType": "contract DAORegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultGroupEnabled", "outputs": [ { "internalType": "bool", "name": "defaultGroupEnabled_", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExistingVetoGroupTargets", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "group_", "type": "string" } ], "name": "getGroupRoles", "outputs": [ { "internalType": "string[]", "name": "roles_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getResource", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "role_", "type": "string" } ], "name": "getRolePermissions", "outputs": [ { "components": [ { "internalType": "string", "name": "resource", "type": "string" }, { "internalType": "string[]", "name": "permissions", "type": "string[]" } ], "internalType": "struct IRBAC.ResourceWithPermissions[]", "name": "allowed_", "type": "tuple[]" }, { "components": [ { "internalType": "string", "name": "resource", "type": "string" }, { "internalType": "string[]", "name": "permissions", "type": "string[]" } ], "internalType": "struct IRBAC.ResourceWithPermissions[]", "name": "disallowed_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who_", "type": "address" } ], "name": "getUserGroups", "outputs": [ { "internalType": "string[]", "name": "groups_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who_", "type": "address" } ], "name": "getUserRoles", "outputs": [ { "internalType": "string[]", "name": "roles_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "getVetoGroupInfo", "outputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "contract DAOMemberStorage", "name": "linkedMemberStorage", "type": "address" } ], "internalType": "struct IPermissionManager.VetoGroup", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "getVetoGroupMembers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "getVetoMembersCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "groupTo_", "type": "string" }, { "internalType": "string[]", "name": "rolesToGrant_", "type": "string[]" } ], "name": "grantGroupRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "string[]", "name": "rolesToGrant_", "type": "string[]" } ], "name": "grantRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who_", "type": "address" }, { "internalType": "string", "name": "resource_", "type": "string" }, { "internalType": "string", "name": "permission_", "type": "string" } ], "name": "hasPermission", "outputs": [ { "internalType": "bool", "name": "isAllowed_", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" }, { "internalType": "address", "name": "member_", "type": "address" } ], "name": "isUserInVetoGroup", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "isVetoGroupExists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" }, { "internalType": "contract DAOMemberStorage", "name": "linkedMemberStorage_", "type": "address" } ], "name": "linkStorageToVetoGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" }, { "internalType": "string[]", "name": "groups_", "type": "string[]" } ], "name": "removeMemberFromGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "role_", "type": "string" }, { "components": [ { "internalType": "string", "name": "resource", "type": "string" }, { "internalType": "string[]", "name": "permissions", "type": "string[]" } ], "internalType": "struct IRBAC.ResourceWithPermissions[]", "name": "permissionsToRemove_", "type": "tuple[]" }, { "internalType": "bool", "name": "allowed_", "type": "bool" } ], "name": "removePermissionsFromRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who_", "type": "address" }, { "internalType": "string[]", "name": "groupsToRemoveFrom_", "type": "string[]" } ], "name": "removeUserFromGroups", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "removeVetoGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "groupFrom_", "type": "string" }, { "internalType": "string[]", "name": "rolesToRevoke_", "type": "string[]" } ], "name": "revokeGroupRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "string[]", "name": "rolesToRevoke_", "type": "string[]" } ], "name": "revokeRoles", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract DAORegistry", "name": "daoRegistry_", "type": "address" } ], "name": "setDAORegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleDefaultGroup", "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": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a080604052346100315730608052615080908161003782396080518181816113d9015281816118db01526119a50152f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80622f5bc01461033c57806301ffc9a71461033757806303bc0b3e146103325780630423b79f1461032d57806306a36aee146103285780630b441407146103235780630c69c28a1461031e5780630ead6f1e146103195780630fe908ec14610314578063141c98951461030f57806315ddcefc1461030a57806321a9ec211461030557806330cae1681461030057806331dbd475146102835780633659cfe6146102fb57806337ff630d146102f65780633da04e4a146102f15780634a9e12c51461024c5780634e63adc1146102ec5780634f0d84e3146102e75780634f1ef286146102e2578063524e62b2146102dd57806352d1902d146102d857806354fd4d50146102d35780635c60da1b146102ce5780636cb6f26c146102c9578063733352b3146102c457806375e025e7146102bf5780637951c6da146102ba5780637cb9cdfa146102b557806381c5492b146102b05780638412ccd8146102ab5780638e5cc2b7146102a657806396b5f936146102a15780639a9aa8d41461029c578063a4fc6c2314610297578063ac9650d814610292578063b3e657fb1461028d578063b832a5a214610288578063bb65dc8314610283578063d41de1271461027e578063d8ad4e1c14610279578063dc22486314610274578063e136fea51461026f578063e876a9541461026a578063ec183fc614610265578063ee2f6ce514610260578063f1c7d41b1461025b578063fc981a3614610256578063fcddfd4a146102515763ff846fb91461024c57600080fd5b6116fe565b612640565b612618565b6125bf565b612589565b6123f0565b6122d2565b6122ad565b612291565b61221e565b6121c0565b611393565b6121a4565b612166565b6120df565b612059565b612030565b611f74565b611f5b565b611f32565b611ea3565b611d55565b611cf3565b611bcf565b611bb3565b611ad3565b611a9d565b611a57565b611992565b611963565b611897565b611869565b611727565b6116a5565b611607565b6113af565b6110e0565b610f6c565b610f2e565b610e9d565b610e7b565b610d94565b610ca1565b61099c565b610908565b610871565b6107e9565b610726565b6105f5565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761037257604052565b610341565b606081019081106001600160401b0382111761037257604052565b6001600160401b03811161037257604052565b90601f801991011681019081106001600160401b0382111761037257604052565b6040519061012082018281106001600160401b0382111761037257604052565b6040519060a082018281106001600160401b0382111761037257604052565b6040519061014082018281106001600160401b0382111761037257604052565b6001600160401b03811161037257601f01601f191660200190565b81601f820112156104875780359061045782610425565b9261046560405194856103a5565b8284526020838301011161048757816000926020809301838601378301015290565b600080fd5b602060031982011261048757600435906001600160401b038211610487576104b691600401610440565b90565b60005b8381106104cc5750506000910152565b81810151838201526020016104bc565b906020916104f5815180928185528580860191016104b9565b601f01601f1916010190565b9080825190818152602080910160059082808560051b8701019601946000926000935b86851061053657505050505050505090565b909192939495969786601f19808684030187528a518261055f60408351908088528701906104dc565b91015193838183039101528351808252838201918480838a1b83010196019387905b8382106105a457505050505050806001929a019501950193969594929190610524565b919395806105bf898588600196989a9c03018a528a516104dc565b9801960192018c9594929391610581565b90916105e76104b693604084526040840190610501565b916020818403910152610501565b34610487576106033661048c565b61061f61060f82612669565b6001600052602052604060002090565b61063a61062b83612669565b60008052602052604060002090565b9061065361062b61064d61060f8661268f565b9461268f565b9061065e8154612727565b916106698454612727565b9060005b84518110156106c1578061068360019286613d4b565b61068d828861279d565b51526106ac6106a7896106a0848a61279d565b5151612701565b613d58565b60206106b8838961279d565b5101520161066d565b5091509260005b845181101561071057806106de60019284613d4b565b6106e8828861279d565b51526106fb6106a7856106a0848a61279d565b6020610707838961279d565b510152016106c8565b505050610722604051928392836105d0565b0390f35b346104875760203660031901126104875760043563ffffffff60e01b81168091036104875761072290634efd6d0960e01b81149081156107bc575b81156107ab575b811561079a575b8115610789575b5060405190151581529081906020820190565b6301ffc9a760e01b14905038610776565b6363c8929f60e01b8114915061076f565b630cbef19360e41b81149150610768565b63139c0b2360e31b81149150610761565b600091031261048757565b9060206104b69281815201906104dc565b346104875760003660031901126104875761072260405161080981610357565b60048152631491505160e21b60208201526040519182916020835260208301906104dc565b6001600160a01b0381160361048757565b359061084a8261082e565b565b6040906003190112610487576004356108648161082e565b906024356104b68161082e565b34610487576108986108823661084c565b9061089361088e6127b6565b613dad565b613ea8565b005b90808251908181526020809101926020808460051b8301019501936000915b8483106108c95750505050505090565b90919293949584806108e7600193601f198682030187528a516104dc565b98019301930191949392906108b9565b9060206104b692818152019061089a565b3461048757602080600319360112610487576004356109268161082e565b6001600160a01b031660009081526003602052604090208054610948816109bc565b9161095660405193846103a5565b81835260208301906000526020600020936000915b838310610980576040518061072287826108f7565b600182819261098e896112f0565b81520196019201919461096b565b346104875760003660031901126104875760206004541515604051908152f35b6001600160401b0381116103725760051b60200190565b91909160408082850312610487578051916109ed83610357565b829481356001600160401b039081811161048757830193808584031261048757805190610a1982610357565b85358381116104875784610a2e918801610440565b8252602095868101359084821161048757016101208186031261048757610a536103c6565b918135835287820135888401528082013590830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e08101358481116104875785610aa8918301610440565b60e083015261010080910135908201528582015285528383013590811161048757610ad39201610440565b910152565b81601f8201121561048757803591602091610af2846109bc565b93610b0060405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610b2b5750505050505090565b82356001600160401b038111610487578691610b4c848480948901016109d3565b815201920191610b1b565b9080601f8301121561048757813591602091610b72846109bc565b93604091610b8360405196876103a5565b818652848087019260051b8501019381851161048757858101925b858410610baf575050505050505090565b6001600160401b0390843582811161048757830160609081601f19828803011261048757875193610bdf85610377565b8a82013581811161048757878c610bf892850101610440565b85528882013590811161048757868b610c1392840101610440565b8a850152013590600682101561048757828993928885940152815201930192610b9e565b9080601f83011215610487576020908235610c51816109bc565b93610c5f60405195866103a5565b81855260208086019260051b82010192831161048757602001905b828210610c88575050505090565b8380918335610c968161082e565b815201910190610c7a565b3461048757600319602036820112610487576004908135906001600160401b03908183116104875760a090833603011261048757610cdd6103e6565b918084013582811161048757610cf890853691840101610440565b8352610d066024820161083f565b6020840152604481013582811161048757610d2690853691840101610ad8565b6040840152606481013582811161048757610d4690853691840101610b57565b606084015260848101359182116104875761089893610d689236920101610c37565b6080820152612802565b60405190610d7f82610357565b600682526555504441544560d01b6020830152565b3461048757600036600319011261048757610722610db0610d72565b6040519182916020835260208301906104dc565b81601f8201121561048757803591602091610dde846109bc565b93610dec60405195866103a5565b808552838086019160051b8301019280841161048757848301915b848310610e175750505050505090565b82356001600160401b038111610487578691610e3884848094890101610440565b815201920191610e07565b90604060031983011261048757600435610e5c8161082e565b91602435906001600160401b038211610487576104b691600401610dc4565b3461048757610898610e8c36610e43565b90610e9861088e612b59565b61422b565b34610487576020366003190112610487576000600435610ebc8161082e565b60405163bb65dc8360e01b8152916001600160a01b03918390600490829085165afa918215610f2957602092610efa91600091610f06575b506126b5565b54161515604051908152f35b610f2391503d806000833e610f1b81836103a5565b810190612bca565b38610ef4565b612b4d565b34610487576040366003190112610487576020610f62600435610f508161082e565b60243590610f5d8261082e565b612c04565b6040519015158152f35b3461048757610f7a3661084c565b610fa7604051610f8981610357565b600c81526b05550444154455f47524f55560a41b6020820152613dad565b610fb08161431f565b60405163bb65dc8360e01b81526001600160a01b0391906000816004818787165afa938415610f295761105b83600161103b7f2ab590f0b59257764cf60af701cdaf4e4cc93be619db3d27af2f1f969c919c8e9861107d96600091611082575b506110368961102e611021846126b5565b546001600160a01b031690565b161515612cd2565b6126b5565b0180546001600160a01b0319166001600160a01b03909216919091179055565b604080516001600160a01b039283168152949093161660208401528291820190565b0390a1005b61109791503d806000833e610f1b81836103a5565b38611010565b906040600319830112610487576001600160401b0360043581811161048757836110c991600401610440565b92602435918211610487576104b691600401610dc4565b34610487577f9ba35c12cc0b45bae6e2f4fd0085b072dfa11802727a4dca990ad11a960ab31661110f3661109d565b906111af61111b611b8a565b611123612182565b6111aa60426111338385336132c4565b92604051948591680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b82017f207065726d697373696f6e20666f72207265736f757263652000000000000000602982015261119b82518093602087850191016104b9565b010360228101855201836103a5565b612d6a565b6111bb82511515612d9a565b6111cd826111c8836126db565b614aa4565b61107d60405192839283614435565b634e487b7160e01b600052600060045260246000fd5b90600182811c92168015611222575b602083101461120c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611201565b6040519060008260075491611240836111f2565b808352926020906001908181169081156112cc575060011461126b575b505061084a925003836103a5565b91509260076000527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688936000925b8284106112b4575061084a945050508101602001388061125d565b85548885018301529485019487945092810192611299565b9150506020925061084a94915060ff191682840152151560051b820101388061125d565b90604051918260008254611303816111f2565b908184526020946001916001811690816000146113715750600114611332575b50505061084a925003836103a5565b600090815285812095935091905b81831061135957505061084a9350820101388080611323565b85548884018501529485019487945091830191611340565b9250505061084a94925060ff191682840152151560051b820101388080611323565b3461048757600036600319011261048757610722610db061122c565b34610487576020366003190112610487576004356113cc8161082e565b6001600160a01b0361141e7f0000000000000000000000000000000000000000000000000000000000000000821661140630821415612de6565b82600080516020615054833981519152541614612e47565b6004602082600b541660405192838092633441847f60e21b82525afa908115610f29576000916114b9575b50163303611463576108989061145d612ea8565b90614516565b60405162461bcd60e51b815260206004820152602860248201527f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f206044820152673ab833b930b2329760c11b6064820152608490fd5b6114db915060203d6020116114e1575b6114d381836103a5565b810190613aab565b38611449565b503d6114c9565b8015150361048757565b6044359061084a826114e8565b906060600319830112610487576001600160401b03600435818111610487578361152b91600401610440565b926024918235908082116104875782602383011215610487578160040135611552816109bc565b94604061156260405197886103a5565b82875260209582602089019460051b8701019581871161048757838101945b87861061159a57505050505050505050906104b66114f2565b853587811161048757820190846023198386030112610487578451906115bf82610357565b868301358981116104875785886115d892860101610440565b8252604483013591898311610487576115f886898e969587960101610dc4565b83820152815201950194611581565b3461048757611615366114ff565b611620929192611b8a565b9061166b61162c612144565b926116388482336132c4565b6111aa60426040518094602098680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b60005b8451811015610898578061169f836116886001948961279d565b515186611695858b61279d565b510151908861479c565b0161166e565b34610487576020366003190112610487576107226116cd6004356116c88161082e565b612f30565b60405191829160208352602083019061089a565b604051906116ee82610357565b60018252601560f91b6020830152565b3461048757600036600319011261048757610722610db06116e1565b3590600482101561048757565b3461048757600319602036820112610487576004908135906001600160401b03908183116104875761014090833603011261048757611764610405565b91808401358281116104875761177f90853691840101610440565b835261178d6024820161083f565b60208401526044810135828111610487576117ad90853691840101610440565b60408401526117be6064820161171a565b60608401526084810135828111610487576117de90853691840101610b57565b608084015260a4810135828111610487576117fe90853691840101610440565b60a084015260c48101358281116104875761181e908536918401016109d3565b60c084015261182f60e4820161083f565b60e08401526101048101359182116104875761185661012492610898953691840101610440565b6101008401520135610120820152612fa4565b346104875761089861187a36610e43565b9061188661111b611b8a565b61189282511515613132565b6141e9565b6040366003190112610487576004356118af8161082e565b6024356001600160401b038111610487576118ce903690600401610440565b6001600160a01b036119087f0000000000000000000000000000000000000000000000000000000000000000821661140630821415612de6565b6004602082600b541660405192838092633441847f60e21b82525afa908115610f2957600091611944575b5016330361146357610898916145ea565b61195d915060203d6020116114e1576114d381836103a5565b38611933565b3461048757602036600319011261048757602061198a6004356119858161082e565b6131f5565b604051908152f35b34610487576000366003190112610487577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036119ec576040516000805160206150548339815191528152602090f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b3461048757600036600319011261048757610722604051611a7781610357565b6005815264312e342e3160d81b60208201526040519182916020835260208301906104dc565b3461048757600036600319011261048757600080516020615054833981519152546040516001600160a01b039091168152602090f35b34610487576020366003190112610487576000600435611af28161082e565b816020604051611b0181610357565b828152015260405163bb65dc8360e01b8152916001600160a01b03918390600490829085165afa918215610f295761072292611b4491600091610f0657506126b5565b90600160405192611b5484610357565b828154168452015416602082015260405191829182919091602060408201938160018060a01b0391828151168552015116910152565b60405190611b9782610357565b600d82526c524241435f5245534f5552434560981b6020830152565b3461048757600036600319011261048757610722610db0611b8a565b3461048757611bdd366114ff565b9190611be7611b8a565b90611bf0612182565b92611c36611bff8585336132c4565b936040946111aa6042604051809460209a680292120a19d103737960bd1b60208401526111608151809260206029870191016104b9565b60005b825181101561089857807f27f963dfdedb973db8acb94be0be26fbd4c55498bc54cfd0733b9da9c0ab8296611c706001938661279d565b515187611c7d848861279d565b51015190611c9f8a611c8e88612669565b901515600052602052604060002090565b81611cb6611cb0