From 864983cd863f97387987da707dbf18d7946f5e3e Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Fri, 18 Sep 2026 04:26:46 +0000 Subject: [PATCH] runtime: publish SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1 --- ...ISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.json | 38 +++++++++++++++++++ ...MISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.txt | 36 ++++++++++++++++++ runtime/latest.json | 22 +++++------ runtime/latest.txt | 26 ++++++------- 4 files changed, 97 insertions(+), 25 deletions(-) create mode 100644 runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.json create mode 100644 runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.txt diff --git a/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.json b/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.json new file mode 100644 index 00000000..645ea7a9 --- /dev/null +++ b/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "gram-support-permission-registry-rca-boolfix", + "started_at_utc": "2026-09-18T04:26:42Z", + "finished_at_utc": "2026-09-18T04:26:45Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "6991c6807b4dc54b75ca6a74d620d1e68656f1ea8f3c2574d67f92db41e023d1", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": false, + "result_contract_valid": true, + "result_contract_status": null, + "result_contract_error": null, + "command_rc": 0, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382", + "sanitized_output_sha256": "481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "GRAM515R2R1R1_SAFE_REPORT={\"classification\":{\"changes_made\":false,\"db_probe_7of7\":true,\"permission_defs_9_7of7\":true,\"send_attempts\":0,\"site_count_7\":true,\"staff_cache_missing_gramSupport_7of7\":true},\"core_source_scans\":[{\"core_scan\":[{\"line\":9,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"class PermissionRebuild extends AbstractRebuildJob\"},{\"line\":43,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"'SELECT permission_combination_id\"},{\"line\":44,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"FROM xf_permission_combination\"},{\"line\":45,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"WHERE permission_combination_id > ?\"},{\"line\":46,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"ORDER BY permission_combination_id',\"},{\"line\":54,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');\"},{\"line\":86,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"$combinationId = $combination->permission_combination_id;\"},{\"line\":93,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id' => $combinationId,\"},{\"line\":102,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id = ? AND content_type = ?',\"},{\"line\":70,\"path\":\"src/XF/Permission/Builder.php\",\"text\":\"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();\"},{\"line\":26,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"public function rebuildAdminPermissionCache()\"},{\"line\":31,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id\"},{\"line\":32,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"FROM xf_admin_permission_entry AS admin_permission_entry\"},{\"line\":34,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)\"},{\"line\":90,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"if ($combination->permission_combination_id != $user->permission_combination_id)\"},{\"line\":92,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\"},{\"line\":106,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":108,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":121,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\"},{\"line\":132,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$preRegActionCondition = \\\"AND p.permission_combination_id <> \\\" . $db->quote($preRegCombination);\"},{\"line\":136,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"SELECT p.permission_combination_id\"},{\"line\":137,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"FROM xf_permission_combination AS p\"},{\"line\":138,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up\"},{\"line\":139,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"ON (p.permission_combination_id = up.permission_combination_id)\"},{\"line\":140,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"WHERE up.permission_combination_id IS NULL\"},{\"line\":142,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"AND p.permission_combination_id <> 1\"},{\"line\":147,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';\"},{\"line\":149,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination', $combinationCondition);\"},{\"line\":150,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination_user_group', $combinationCondition);\"},{\"line\":161,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');\"},{\"line\":165,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination', [\"},{\"line\":166,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":172,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination_user_group', [\"},{\"line\":174,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":16,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);\"},{\"line\":28,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);\"},{\"line\":33,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"public function getGlobalPermissionEntriesGrouped(array $limits = [])\"},{\"line\":53,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry\"},{\"line\":109,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":184,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":193,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry');\"},{\"line\":198,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');\"},{\"line\":12,\"path\":\"src/XF/Repository/PermissionRepository.php\",\"text\":\"public function getGlobalPermissionListData()\"},{\"line\":76,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":82,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":99,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":104,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":107,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"protected function rebuildAdminPermissionCache()\"},{\"line\":111,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"\\\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)\"},{\"line\":113,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$repo->rebuildAdminPermissionCache();\"},{\"line\":6,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"use XF\\\\Job\\\\PermissionRebuild;\"},{\"line\":115,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":121,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":149,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":154,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":164,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"\\\\XF::runOnce('xfPermissionRebuild', function ()\"},{\"line\":166,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":16,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"class PermissionCacheContent extends Entity implements Proxyable\"},{\"line\":20,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'] === null\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"\\\\XF::app()->permissionCache()->setContentPerms(\"},{\"line\":38,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":48,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->shortName = 'XF:PermissionCacheContent';\"},{\"line\":49,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];\"},{\"line\":51,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":12,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* @property int|null $permission_combination_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"if ($values['permission_combination_id'] === null)\"},{\"line\":36,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"\\\\XF::app()->permissionCache()->setGlobalPerms(\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":58,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => $this->permission_combination_id,\"},{\"line\":64,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":65,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":66,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":70,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);\"},{\"line\":86,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":87,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":88,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":94,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->table = 'xf_permission_combination';\"},{\"line\":96,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->primaryKey = 'permission_combination_id';\"},{\"line\":98,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":116,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":21,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->table = 'xf_permission_combination_user_group';\"},{\"line\":23,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];\"},{\"line\":26,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":39,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->table = 'xf_permission_entry';\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->table = 'xf_permission_entry_content';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":137,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"$structure->table = 'xf_permission_interface_group';\"},{\"line\":142,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'required' => 'please_enter_valid_permission_interface_group_id',\"},{\"line\":143,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'unique' => 'permission_interface_group_ids_must_be_unique',\"},{\"line\":52,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id_\"},{\"line\":85,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":361,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return \\\\XF::permissionCache()->getPermissionSet($this->permission_combination_id);\"},{\"line\":370,\"path\":\"src/XF/Entity/User.php\",\"text\":\"? $this->getValue('permission_combination_id')\"},{\"line\":1268,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return $this->PermissionSet->hasGlobalPermission($group, $permission);\"},{\"line\":1285,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"line\":1289,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"line\":1367,\"path\":\"src/XF/Entity/User.php\",\"text\":\"public function rebuildPermissionCombination()\"},{\"line\":1681,\"path\":\"src/XF/Entity/User.php\",\"text\":\"$this->rebuildPermissionCombination();\"},{\"line\":1684,\"path\":\"src/XF/Entity/User.php\",\"text\":\"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))\"},{\"line\":2341,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],\"},{\"line\":2392,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => false,\"},{\"line\":2427,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'conditions' => 'permission_combination_id',\"}],\"slug\":\"codevipe\"},{\"core_scan\":[{\"line\":9,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"class PermissionRebuild extends AbstractRebuildJob\"},{\"line\":43,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"'SELECT permission_combination_id\"},{\"line\":44,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"FROM xf_permission_combination\"},{\"line\":45,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"WHERE permission_combination_id > ?\"},{\"line\":46,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"ORDER BY permission_combination_id',\"},{\"line\":54,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');\"},{\"line\":86,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"$combinationId = $combination->permission_combination_id;\"},{\"line\":93,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id' => $combinationId,\"},{\"line\":102,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id = ? AND content_type = ?',\"},{\"line\":70,\"path\":\"src/XF/Permission/Builder.php\",\"text\":\"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();\"},{\"line\":26,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"public function rebuildAdminPermissionCache()\"},{\"line\":31,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id\"},{\"line\":32,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"FROM xf_admin_permission_entry AS admin_permission_entry\"},{\"line\":34,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)\"},{\"line\":90,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"if ($combination->permission_combination_id != $user->permission_combination_id)\"},{\"line\":92,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\"},{\"line\":106,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":108,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":121,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\"},{\"line\":132,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$preRegActionCondition = \\\"AND p.permission_combination_id <> \\\" . $db->quote($preRegCombination);\"},{\"line\":136,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"SELECT p.permission_combination_id\"},{\"line\":137,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"FROM xf_permission_combination AS p\"},{\"line\":138,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up\"},{\"line\":139,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"ON (p.permission_combination_id = up.permission_combination_id)\"},{\"line\":140,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"WHERE up.permission_combination_id IS NULL\"},{\"line\":142,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"AND p.permission_combination_id <> 1\"},{\"line\":147,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';\"},{\"line\":149,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination', $combinationCondition);\"},{\"line\":150,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination_user_group', $combinationCondition);\"},{\"line\":161,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');\"},{\"line\":165,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination', [\"},{\"line\":166,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":172,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination_user_group', [\"},{\"line\":174,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":16,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);\"},{\"line\":28,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);\"},{\"line\":33,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"public function getGlobalPermissionEntriesGrouped(array $limits = [])\"},{\"line\":53,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry\"},{\"line\":109,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":184,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":193,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry');\"},{\"line\":198,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');\"},{\"line\":12,\"path\":\"src/XF/Repository/PermissionRepository.php\",\"text\":\"public function getGlobalPermissionListData()\"},{\"line\":76,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":82,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":99,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":104,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":107,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"protected function rebuildAdminPermissionCache()\"},{\"line\":111,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"\\\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)\"},{\"line\":113,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$repo->rebuildAdminPermissionCache();\"},{\"line\":6,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"use XF\\\\Job\\\\PermissionRebuild;\"},{\"line\":115,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":121,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":149,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":154,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":164,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"\\\\XF::runOnce('xfPermissionRebuild', function ()\"},{\"line\":166,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":16,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"class PermissionCacheContent extends Entity implements Proxyable\"},{\"line\":20,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'] === null\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"\\\\XF::app()->permissionCache()->setContentPerms(\"},{\"line\":38,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":48,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->shortName = 'XF:PermissionCacheContent';\"},{\"line\":49,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];\"},{\"line\":51,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":12,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* @property int|null $permission_combination_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"if ($values['permission_combination_id'] === null)\"},{\"line\":36,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"\\\\XF::app()->permissionCache()->setGlobalPerms(\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":58,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => $this->permission_combination_id,\"},{\"line\":64,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":65,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":66,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":70,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);\"},{\"line\":86,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":87,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":88,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":94,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->table = 'xf_permission_combination';\"},{\"line\":96,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->primaryKey = 'permission_combination_id';\"},{\"line\":98,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":116,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":21,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->table = 'xf_permission_combination_user_group';\"},{\"line\":23,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];\"},{\"line\":26,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":39,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->table = 'xf_permission_entry';\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->table = 'xf_permission_entry_content';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":137,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"$structure->table = 'xf_permission_interface_group';\"},{\"line\":142,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'required' => 'please_enter_valid_permission_interface_group_id',\"},{\"line\":143,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'unique' => 'permission_interface_group_ids_must_be_unique',\"},{\"line\":52,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id_\"},{\"line\":85,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":361,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return \\\\XF::permissionCache()->getPermissionSet($this->permission_combination_id);\"},{\"line\":370,\"path\":\"src/XF/Entity/User.php\",\"text\":\"? $this->getValue('permission_combination_id')\"},{\"line\":1268,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return $this->PermissionSet->hasGlobalPermission($group, $permission);\"},{\"line\":1285,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"line\":1289,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"line\":1367,\"path\":\"src/XF/Entity/User.php\",\"text\":\"public function rebuildPermissionCombination()\"},{\"line\":1681,\"path\":\"src/XF/Entity/User.php\",\"text\":\"$this->rebuildPermissionCombination();\"},{\"line\":1684,\"path\":\"src/XF/Entity/User.php\",\"text\":\"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))\"},{\"line\":2341,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],\"},{\"line\":2392,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => false,\"},{\"line\":2427,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'conditions' => 'permission_combination_id',\"}],\"slug\":\"newfi\"}],\"interface_group_state\":[{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"codevipe\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"dsmods\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"gamevipe\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"hkmods\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"kingofwolk\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"zakrutim\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"newfi\"}],\"registry_and_combination_state\":[{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"codevipe\",\"staff\":[{\"cache_bytes\":2517,\"cache_has_gramSupport\":false,\"cache_sha256\":\"2986831367f0ac442e19b5955044a0327a800f20c46155584d148666c9a9aec1\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"dsmods\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"gamevipe\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"hkmods\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"75cde1920175751989c915647ce0b7c9bc43f3455ef4ccd0fac85bdeeb65a0b1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"kingofwolk\",\"staff\":[{\"cache_bytes\":2530,\"cache_has_gramSupport\":false,\"cache_sha256\":\"5ba76aaa2def782deeec5b54d24d723cc2d5c501da7574c6735039dcb5539855\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"zakrutim\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":227,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"04905462a275923fe321e4f49e860d2d70a60188687599b99064df8ef2627cfb\",\"top_level_keys\":[\"Gram/Support\",\"Newfi/Dogs\",\"Newfi/Events\",\"Newfi/Portal\",\"Workers2/PostboxPolicy\",\"XF\",\"XFMG\",\"XFRM\"]}],\"slug\":\"newfi\",\"staff\":[{\"cache_bytes\":4767,\"cache_has_gramSupport\":false,\"cache_sha256\":\"0e802df20b9d1147107c110d976767409217a7f5cd2bef66a89b8b7cb4547a47\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]}],\"schema_version\":1,\"scope\":\"READ_ONLY_GRAM_SUPPORT_PERMISSION_REGISTRY_AND_BUILDER_RCA\",\"site_count\":7,\"transport\":{\"vm160\":{\"guest_stderr_present\":false,\"inner_rc\":0,\"ok\":true,\"transport_rc\":0,\"transport_stderr_bytes\":0,\"transport_stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"vm210\":{\"guest_stderr_present\":false,\"inner_rc\":0,\"ok\":true,\"transport_rc\":0,\"transport_stderr_bytes\":0,\"transport_stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"}}}\nGRAM515R2R1R1_DECISION=PASS_PERMISSION_REGISTRY_RCA_EVIDENCE_CAPTURED\nGRAM515R2R1R1_NEXT_GATE=REVIEW_EXACT_UPSTREAM_CACHE_OR_METADATA_FIX\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" +} diff --git a/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.txt b/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.txt new file mode 100644 index 00000000..af41675e --- /dev/null +++ b/runtime/history/SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1.txt @@ -0,0 +1,36 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=gram-support-permission-registry-rca-boolfix +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=6991c6807b4dc54b75ca6a74d620d1e68656f1ea8f3c2574d67f92db41e023d1 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=false +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=0 +CHANGES_MADE=false +ROLLBACK_STARTED=false +ROLLBACK_RESTORED=null +MUTATION_OUTCOME=NO_MUTATION +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382 +SANITIZED_OUTPUT_SHA256=481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382 +OUTPUT_BEGIN +GRAM515R2R1R1_SAFE_REPORT={"classification":{"changes_made":false,"db_probe_7of7":true,"permission_defs_9_7of7":true,"send_attempts":0,"site_count_7":true,"staff_cache_missing_gramSupport_7of7":true},"core_source_scans":[{"core_scan":[{"line":9,"path":"src/XF/Job/PermissionRebuild.php","text":"class PermissionRebuild extends AbstractRebuildJob"},{"line":43,"path":"src/XF/Job/PermissionRebuild.php","text":"'SELECT permission_combination_id"},{"line":44,"path":"src/XF/Job/PermissionRebuild.php","text":"FROM xf_permission_combination"},{"line":45,"path":"src/XF/Job/PermissionRebuild.php","text":"WHERE permission_combination_id > ?"},{"line":46,"path":"src/XF/Job/PermissionRebuild.php","text":"ORDER BY permission_combination_id',"},{"line":54,"path":"src/XF/Job/PermissionRebuild.php","text":"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');"},{"line":86,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"$combinationId = $combination->permission_combination_id;"},{"line":93,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id' => $combinationId,"},{"line":102,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id = ? AND content_type = ?',"},{"line":70,"path":"src/XF/Permission/Builder.php","text":"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();"},{"line":26,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"public function rebuildAdminPermissionCache()"},{"line":31,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id"},{"line":32,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"FROM xf_admin_permission_entry AS admin_permission_entry"},{"line":34,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)"},{"line":90,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"if ($combination->permission_combination_id != $user->permission_combination_id)"},{"line":92,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);"},{"line":106,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":108,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":121,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];"},{"line":132,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$preRegActionCondition = \"AND p.permission_combination_id <> \" . $db->quote($preRegCombination);"},{"line":136,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"SELECT p.permission_combination_id"},{"line":137,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"FROM xf_permission_combination AS p"},{"line":138,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up"},{"line":139,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"ON (p.permission_combination_id = up.permission_combination_id)"},{"line":140,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"WHERE up.permission_combination_id IS NULL"},{"line":142,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"AND p.permission_combination_id <> 1"},{"line":147,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';"},{"line":149,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination', $combinationCondition);"},{"line":150,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination_user_group', $combinationCondition);"},{"line":161,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');"},{"line":165,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination', ["},{"line":166,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":172,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination_user_group', ["},{"line":174,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":16,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);"},{"line":28,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);"},{"line":33,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"public function getGlobalPermissionEntriesGrouped(array $limits = [])"},{"line":53,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry"},{"line":109,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":184,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":193,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry');"},{"line":198,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');"},{"line":12,"path":"src/XF/Repository/PermissionRepository.php","text":"public function getGlobalPermissionListData()"},{"line":76,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":82,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":99,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":104,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":107,"path":"src/XF/Entity/AdminPermission.php","text":"protected function rebuildAdminPermissionCache()"},{"line":111,"path":"src/XF/Entity/AdminPermission.php","text":"\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)"},{"line":113,"path":"src/XF/Entity/AdminPermission.php","text":"$repo->rebuildAdminPermissionCache();"},{"line":6,"path":"src/XF/Entity/Permission.php","text":"use XF\\Job\\PermissionRebuild;"},{"line":115,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":121,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":149,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":154,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":164,"path":"src/XF/Entity/Permission.php","text":"\\XF::runOnce('xfPermissionRebuild', function ()"},{"line":166,"path":"src/XF/Entity/Permission.php","text":"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);"},{"line":11,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* @property int $permission_combination_id"},{"line":16,"path":"src/XF/Entity/PermissionCacheContent.php","text":"class PermissionCacheContent extends Entity implements Proxyable"},{"line":20,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* permission_combination_id: int|null,"},{"line":29,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'] === null"},{"line":37,"path":"src/XF/Entity/PermissionCacheContent.php","text":"\\XF::app()->permissionCache()->setContentPerms("},{"line":38,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'],"},{"line":48,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->shortName = 'XF:PermissionCacheContent';"},{"line":49,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];"},{"line":51,"path":"src/XF/Entity/PermissionCacheContent.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":12,"path":"src/XF/Entity/PermissionCombination.php","text":"* @property int|null $permission_combination_id"},{"line":25,"path":"src/XF/Entity/PermissionCombination.php","text":"* permission_combination_id: int|null,"},{"line":31,"path":"src/XF/Entity/PermissionCombination.php","text":"if ($values['permission_combination_id'] === null)"},{"line":36,"path":"src/XF/Entity/PermissionCombination.php","text":"\\XF::app()->permissionCache()->setGlobalPerms("},{"line":37,"path":"src/XF/Entity/PermissionCombination.php","text":"$values['permission_combination_id'],"},{"line":58,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => $this->permission_combination_id,"},{"line":64,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":65,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":66,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":70,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);"},{"line":86,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":87,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":88,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":94,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->table = 'xf_permission_combination';"},{"line":96,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->primaryKey = 'permission_combination_id';"},{"line":98,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":116,"path":"src/XF/Entity/PermissionCombination.php","text":"'conditions' => 'permission_combination_id',"},{"line":11,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"* @property int $permission_combination_id"},{"line":21,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->table = 'xf_permission_combination_user_group';"},{"line":23,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];"},{"line":26,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":39,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'conditions' => 'permission_combination_id',"},{"line":10,"path":"src/XF/Entity/PermissionEntry.php","text":"* @property int|null $permission_entry_id"},{"line":25,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->table = 'xf_permission_entry';"},{"line":27,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":29,"path":"src/XF/Entity/PermissionEntry.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":10,"path":"src/XF/Entity/PermissionEntryContent.php","text":"* @property int|null $permission_entry_id"},{"line":27,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->table = 'xf_permission_entry_content';"},{"line":29,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":31,"path":"src/XF/Entity/PermissionEntryContent.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":137,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"$structure->table = 'xf_permission_interface_group';"},{"line":142,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'required' => 'please_enter_valid_permission_interface_group_id',"},{"line":143,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'unique' => 'permission_interface_group_ids_must_be_unique',"},{"line":52,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id_"},{"line":85,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id"},{"line":361,"path":"src/XF/Entity/User.php","text":"return \\XF::permissionCache()->getPermissionSet($this->permission_combination_id);"},{"line":370,"path":"src/XF/Entity/User.php","text":"? $this->getValue('permission_combination_id')"},{"line":1268,"path":"src/XF/Entity/User.php","text":"return $this->PermissionSet->hasGlobalPermission($group, $permission);"},{"line":1285,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"line":1289,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"line":1367,"path":"src/XF/Entity/User.php","text":"public function rebuildPermissionCombination()"},{"line":1681,"path":"src/XF/Entity/User.php","text":"$this->rebuildPermissionCombination();"},{"line":1684,"path":"src/XF/Entity/User.php","text":"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))"},{"line":2341,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],"},{"line":2392,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => false,"},{"line":2427,"path":"src/XF/Entity/User.php","text":"'conditions' => 'permission_combination_id',"}],"slug":"codevipe"},{"core_scan":[{"line":9,"path":"src/XF/Job/PermissionRebuild.php","text":"class PermissionRebuild extends AbstractRebuildJob"},{"line":43,"path":"src/XF/Job/PermissionRebuild.php","text":"'SELECT permission_combination_id"},{"line":44,"path":"src/XF/Job/PermissionRebuild.php","text":"FROM xf_permission_combination"},{"line":45,"path":"src/XF/Job/PermissionRebuild.php","text":"WHERE permission_combination_id > ?"},{"line":46,"path":"src/XF/Job/PermissionRebuild.php","text":"ORDER BY permission_combination_id',"},{"line":54,"path":"src/XF/Job/PermissionRebuild.php","text":"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');"},{"line":86,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"$combinationId = $combination->permission_combination_id;"},{"line":93,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id' => $combinationId,"},{"line":102,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id = ? AND content_type = ?',"},{"line":70,"path":"src/XF/Permission/Builder.php","text":"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();"},{"line":26,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"public function rebuildAdminPermissionCache()"},{"line":31,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id"},{"line":32,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"FROM xf_admin_permission_entry AS admin_permission_entry"},{"line":34,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)"},{"line":90,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"if ($combination->permission_combination_id != $user->permission_combination_id)"},{"line":92,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);"},{"line":106,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":108,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":121,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];"},{"line":132,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$preRegActionCondition = \"AND p.permission_combination_id <> \" . $db->quote($preRegCombination);"},{"line":136,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"SELECT p.permission_combination_id"},{"line":137,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"FROM xf_permission_combination AS p"},{"line":138,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up"},{"line":139,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"ON (p.permission_combination_id = up.permission_combination_id)"},{"line":140,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"WHERE up.permission_combination_id IS NULL"},{"line":142,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"AND p.permission_combination_id <> 1"},{"line":147,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';"},{"line":149,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination', $combinationCondition);"},{"line":150,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination_user_group', $combinationCondition);"},{"line":161,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');"},{"line":165,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination', ["},{"line":166,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":172,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination_user_group', ["},{"line":174,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":16,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);"},{"line":28,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);"},{"line":33,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"public function getGlobalPermissionEntriesGrouped(array $limits = [])"},{"line":53,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry"},{"line":109,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":184,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":193,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry');"},{"line":198,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');"},{"line":12,"path":"src/XF/Repository/PermissionRepository.php","text":"public function getGlobalPermissionListData()"},{"line":76,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":82,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":99,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":104,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":107,"path":"src/XF/Entity/AdminPermission.php","text":"protected function rebuildAdminPermissionCache()"},{"line":111,"path":"src/XF/Entity/AdminPermission.php","text":"\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)"},{"line":113,"path":"src/XF/Entity/AdminPermission.php","text":"$repo->rebuildAdminPermissionCache();"},{"line":6,"path":"src/XF/Entity/Permission.php","text":"use XF\\Job\\PermissionRebuild;"},{"line":115,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":121,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":149,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":154,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":164,"path":"src/XF/Entity/Permission.php","text":"\\XF::runOnce('xfPermissionRebuild', function ()"},{"line":166,"path":"src/XF/Entity/Permission.php","text":"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);"},{"line":11,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* @property int $permission_combination_id"},{"line":16,"path":"src/XF/Entity/PermissionCacheContent.php","text":"class PermissionCacheContent extends Entity implements Proxyable"},{"line":20,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* permission_combination_id: int|null,"},{"line":29,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'] === null"},{"line":37,"path":"src/XF/Entity/PermissionCacheContent.php","text":"\\XF::app()->permissionCache()->setContentPerms("},{"line":38,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'],"},{"line":48,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->shortName = 'XF:PermissionCacheContent';"},{"line":49,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];"},{"line":51,"path":"src/XF/Entity/PermissionCacheContent.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":12,"path":"src/XF/Entity/PermissionCombination.php","text":"* @property int|null $permission_combination_id"},{"line":25,"path":"src/XF/Entity/PermissionCombination.php","text":"* permission_combination_id: int|null,"},{"line":31,"path":"src/XF/Entity/PermissionCombination.php","text":"if ($values['permission_combination_id'] === null)"},{"line":36,"path":"src/XF/Entity/PermissionCombination.php","text":"\\XF::app()->permissionCache()->setGlobalPerms("},{"line":37,"path":"src/XF/Entity/PermissionCombination.php","text":"$values['permission_combination_id'],"},{"line":58,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => $this->permission_combination_id,"},{"line":64,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":65,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":66,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":70,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);"},{"line":86,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":87,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":88,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":94,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->table = 'xf_permission_combination';"},{"line":96,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->primaryKey = 'permission_combination_id';"},{"line":98,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":116,"path":"src/XF/Entity/PermissionCombination.php","text":"'conditions' => 'permission_combination_id',"},{"line":11,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"* @property int $permission_combination_id"},{"line":21,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->table = 'xf_permission_combination_user_group';"},{"line":23,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];"},{"line":26,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":39,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'conditions' => 'permission_combination_id',"},{"line":10,"path":"src/XF/Entity/PermissionEntry.php","text":"* @property int|null $permission_entry_id"},{"line":25,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->table = 'xf_permission_entry';"},{"line":27,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":29,"path":"src/XF/Entity/PermissionEntry.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":10,"path":"src/XF/Entity/PermissionEntryContent.php","text":"* @property int|null $permission_entry_id"},{"line":27,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->table = 'xf_permission_entry_content';"},{"line":29,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":31,"path":"src/XF/Entity/PermissionEntryContent.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":137,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"$structure->table = 'xf_permission_interface_group';"},{"line":142,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'required' => 'please_enter_valid_permission_interface_group_id',"},{"line":143,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'unique' => 'permission_interface_group_ids_must_be_unique',"},{"line":52,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id_"},{"line":85,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id"},{"line":361,"path":"src/XF/Entity/User.php","text":"return \\XF::permissionCache()->getPermissionSet($this->permission_combination_id);"},{"line":370,"path":"src/XF/Entity/User.php","text":"? $this->getValue('permission_combination_id')"},{"line":1268,"path":"src/XF/Entity/User.php","text":"return $this->PermissionSet->hasGlobalPermission($group, $permission);"},{"line":1285,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"line":1289,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"line":1367,"path":"src/XF/Entity/User.php","text":"public function rebuildPermissionCombination()"},{"line":1681,"path":"src/XF/Entity/User.php","text":"$this->rebuildPermissionCombination();"},{"line":1684,"path":"src/XF/Entity/User.php","text":"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))"},{"line":2341,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],"},{"line":2392,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => false,"},{"line":2427,"path":"src/XF/Entity/User.php","text":"'conditions' => 'permission_combination_id',"}],"slug":"newfi"}],"interface_group_state":[{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"codevipe"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"dsmods"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"gamevipe"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"hkmods"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"kingofwolk"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"zakrutim"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"newfi"}],"registry_and_combination_state":[{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"codevipe","staff":[{"cache_bytes":2517,"cache_has_gramSupport":false,"cache_sha256":"2986831367f0ac442e19b5955044a0327a800f20c46155584d148666c9a9aec1","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"dsmods","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"gamevipe","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"hkmods","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"75cde1920175751989c915647ce0b7c9bc43f3455ef4ccd0fac85bdeeb65a0b1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"kingofwolk","staff":[{"cache_bytes":2530,"cache_has_gramSupport":false,"cache_sha256":"5ba76aaa2def782deeec5b54d24d723cc2d5c501da7574c6735039dcb5539855","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"zakrutim","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":227,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"04905462a275923fe321e4f49e860d2d70a60188687599b99064df8ef2627cfb","top_level_keys":["Gram/Support","Newfi/Dogs","Newfi/Events","Newfi/Portal","Workers2/PostboxPolicy","XF","XFMG","XFRM"]}],"slug":"newfi","staff":[{"cache_bytes":4767,"cache_has_gramSupport":false,"cache_sha256":"0e802df20b9d1147107c110d976767409217a7f5cd2bef66a89b8b7cb4547a47","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]}],"schema_version":1,"scope":"READ_ONLY_GRAM_SUPPORT_PERMISSION_REGISTRY_AND_BUILDER_RCA","site_count":7,"transport":{"vm160":{"guest_stderr_present":false,"inner_rc":0,"ok":true,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"vm210":{"guest_stderr_present":false,"inner_rc":0,"ok":true,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}}} +GRAM515R2R1R1_DECISION=PASS_PERMISSION_REGISTRY_RCA_EVIDENCE_CAPTURED +GRAM515R2R1R1_NEXT_GATE=REVIEW_EXACT_UPSTREAM_CACHE_OR_METADATA_FIX +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 433aef57..645ea7a9 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-515R2R1", - "status": "FAIL", - "rc": 1, + "command_id": "SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1", + "status": "OK", + "rc": 0, "host": "pve01", "mode": "read-only", - "component": "gram-support-permission-registry-rca", - "started_at_utc": "2026-09-18T04:24:44Z", - "finished_at_utc": "2026-09-18T04:24:44Z", + "component": "gram-support-permission-registry-rca-boolfix", + "started_at_utc": "2026-09-18T04:26:42Z", + "finished_at_utc": "2026-09-18T04:26:45Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "325172ba0d369dcfaf99973ef6c61e5f8558b496d7f47e4e766fa44ed64f23ce", + "command_sha256": "6991c6807b4dc54b75ca6a74d620d1e68656f1ea8f3c2574d67f92db41e023d1", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -21,7 +21,7 @@ "result_contract_valid": true, "result_contract_status": null, "result_contract_error": null, - "command_rc": 1, + "command_rc": 0, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "5b5ba6c89c2b4c6be181ed7bde5c7ff8cbad27cdf16f43bc479ed3e4cd373ee5", - "sanitized_output_sha256": "5b5ba6c89c2b4c6be181ed7bde5c7ff8cbad27cdf16f43bc479ed3e4cd373ee5", + "raw_evidence_sha256": "481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382", + "sanitized_output_sha256": "481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "Traceback (most recent call last):\n File \"\", line 1, in \n import base64;exec(compile(base64.b64decode(\"aW1wb3J0IG9zLHN5cyxqc29uLHN1YnByb2Nlc3MsaGFzaGxpYixiYXNlNjQKQ0lEPSdTVVBQT1JULTI2MDkxOC1HUkFNLVNVUFBPUlQtUEVSTUlTU0lPTi1SRUdJU1RSWS1SQ0EtNTE1UjJSMScKU0lURVM9W3sic2x1ZyI6ImNvZGV2aXBlIiwidm1pZCI6MTYwLCJob3N0IjoicHZlMDIiLCJwdWJsaWMiOiIvdmFyL3d3dy9mb3J1bXMvY29kZXZpcGUvcHVibGljIiwic2Nhbl9jb3JlIjp0cnVlfSx7InNsdWciOiJkc21vZHMiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9kc21vZHMvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoiZ2FtZXZpcGUiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9nYW1ldmlwZS9wdWJsaWMiLCJzY2FuX2NvcmUiOmZhbHNlfSx7InNsdWciOiJoa21vZHMiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9oa21vZHMvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoia2luZ29md29sayIsInZtaWQiOjE2MCwiaG9zdCI6InB2ZTAyIiwicHVibGljIjoiL3Zhci93d3cvZm9ydW1zL2tpbmdvZndvbGsvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoiemFrcnV0aW0iLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy96YWtydXRpbS9wdWJsaWMiLCJzY2FuX2NvcmUiOmZhbHNlfSx7InNsdWciOiJuZXdmaSIsInZtaWQiOjIxMCwiaG9zdCI6InB2ZTAxIiwicHVibGljIjoiL3Zhci93d3cvZm9ydW1zL25ld2ZpL3B1YmxpYyIsInNjYW5fY29yZSI6dHJ1ZX1dCkdVRVNUPWJhc2U2NC5iNjRkZWNvZGUoJ0NtbHRjRzl5ZENCdmN5eHplWE1zYW5OdmJpeHpkV0p3Y205alpYTnpMSFJsYlhCbWFXeGxMR2hoYzJoc2FXSXNjbVVLWm5KdmJTQndZWFJvYkdsaUlHbHRjRzl5ZENCUVlYUm9DZ3B5WlhFOWFuTnZiaTVzYjJGa2N5aHplWE11YzNSa2FXNHVjbVZoWkNncEtRcHphWFJsY3oxeVpYRmJJbk5wZEdWeklsMEtjR2h3WDJOdlpHVTlKencvY0dod1hHNGtjbTl2ZEQwa1lYSm5kbHN4WFQ4L1hDZGNKenRjYmlSemJIVm5QU1JoY21kMld6SmRQejljSjF3bk8xeHVKRzkxZEQxYlhDZHpiSFZuWENjOVBpUnpiSFZuTEZ3bmIydGNKejArWm1Gc2MyVXNYQ2RsY25KdmNsd25QVDV1ZFd4c1hUdGNibHh1Wm5WdVkzUnBiMjRnWm1GcGJGOXZkWFFvSmlSdmRYUXNKRzBzSkhKalBUTXBYRzU3WEc0Z0lDQWdKRzkxZEZ0Y0oyVnljbTl5WENkZFBTUnRPMXh1SUNBZ0lHVmphRzhnYW5OdmJsOWxibU52WkdVb0pHOTFkQ3hLVTA5T1gxVk9SVk5EUVZCRlJGOVRURUZUU0VWVGZFcFRUMDVmVlU1RlUwTkJVRVZFWDFWT1NVTlBSRVVwTzF4dUlDQWdJR1Y0YVhRb0pISmpLVHRjYm4xY2JtWjFibU4wYVc5dUlITmhabVZmZFc1elpYSW9KSFlwWEc1N1hHNGdJQ0FnSkhnOVFIVnVjMlZ5YVdGc2FYcGxLQ1IyS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5mWVhKeVlYa29KSGdwUHlSNE9tNTFiR3c3WEc1OVhHNW1kVzVqZEdsdmJpQmhjbkpoZVY5clpYbHpYM052Y25SbFpDZ2tZU2xjYm50Y2JpQWdJQ0JwWmlnaGFYTmZZWEp5WVhrb0pHRXBLU0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdKR3M5WVhKeVlYbGZiV0Z3S0Z3bmMzUnlkbUZzWENjc1lYSnlZWGxmYTJWNWN5Z2tZU2twTzF4dUlDQWdJSE52Y25Rb0pHc3NVMDlTVkY5VFZGSkpUa2NwTzF4dUlDQWdJSEpsZEhWeWJpQWthenRjYm4xY2JseHVhV1lvSkhKdmIzUTlQVDFjSjF3bmZId2hhWE5mWm1sc1pTZ2tjbTl2ZEM1Y0p5OXpjbU12V0VZdWNHaHdYQ2NwS1NCbVlXbHNYMjkxZENna2IzVjBMRnduVWs5UFZGOUpUbFpCVEVsRVhDY3BPMXh1WEc1MGNubGNibnRjYmlBZ0lDQnlaWEYxYVhKbElDUnliMjkwTGx3bkwzTnlZeTlZUmk1d2FIQmNKenRjYmlBZ0lDQmNYRmhHT2pwemRHRnlkQ2drY205dmRDazdYRzRnSUNBZ0pHRndjRDFjWEZoR09qcHpaWFIxY0VGd2NDaGNKMWhHWEZ4RGJHbGNYRUZ3Y0Z3bktUdGNiaUFnSUNBa1pHSTlYRnhZUmpvNlpHSW9LVHRjYmx4dUlDQWdJQ1J2ZFhSYlhDZGhaR1J2Ymx3blhUMGtaR0l0UG1abGRHTm9VbTkzS0NKVFJVeEZRMVFnWVdOMGFYWmxMSFpsY25OcGIyNWZhV1FnUmxKUFRTQjRabDloWkdSdmJpQlhTRVZTUlNCaFpHUnZibDlwWkQxY0owZHlZVzB2VTNWd2NHOXlkRnduSWlrN1hHNWNiaUFnSUNBa2IzVjBXMXduY0dWeWJXbHpjMmx2Ymw5eWIzZHpYQ2RkUFNSa1lpMCtabVYwWTJoQmJHd29JbHh1SUNBZ0lDQWdVMFZNUlVOVUlIQmxjbTFwYzNOcGIyNWZhV1FzY0dWeWJXbHpjMmx2Ymw5bmNtOTFjRjlwWkN4d1pYSnRhWE56YVc5dVgzUjVjR1VzYVc1MFpYSm1ZV05sWDJkeWIzVndYMmxrTEdSbGNHVnVaRjl3WlhKdGFYTnphVzl1WDJsa0xHUnBjM0JzWVhsZmIzSmtaWElzWVdSa2IyNWZhV1JjYmlBZ0lDQWdJRVpTVDAwZ2VHWmZjR1Z5YldsemMybHZibHh1SUNBZ0lDQWdWMGhGVWtVZ2NHVnliV2x6YzJsdmJsOW5jbTkxY0Y5cFpEMWNKMmR5WVcxVGRYQndiM0owWENkY2JpQWdJQ0FnSUU5U1JFVlNJRUpaSUhCbGNtMXBjM05wYjI1ZmFXUmNiaUFnSUNBaUtUdGNibHh1SUNBZ0lDUnZkWFJiWENkd1pYSnRhWE56YVc5dVgyVnVkSEo1WDJOdmRXNTBjMXduWFQwa1pHSXRQbVpsZEdOb1FXeHNLQ0pjYmlBZ0lDQWdJRk5GVEVWRFZDQjFjMlZ5WDJkeWIzVndYMmxrTEhWelpYSmZhV1FzUTA5VlRsUW9LaWtnUVZNZ2NtOTNYMk52ZFc1MExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUZOVlRTaHdaWEp0YVhOemFXOXVYM1poYkhWbFBWd25ZV3hzYjNkY0p5a2dRVk1nWVd4c2IzZGZZMjkxYm5Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnVTFWTktIQmxjbTFwYzNOcGIyNWZkbUZzZFdVOVhDZHVaWFpsY2x3bktTQkJVeUJ1WlhabGNsOWpiM1Z1ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0JUVlUwb2NHVnliV2x6YzJsdmJsOTJZV3gxWlQxY0oyUmxibmxjSnlrZ1FWTWdaR1Z1ZVY5amIzVnVkRnh1SUNBZ0lDQWdSbEpQVFNCNFpsOXdaWEp0YVhOemFXOXVYMlZ1ZEhKNVhHNGdJQ0FnSUNCWFNFVlNSU0J3WlhKdGFYTnphVzl1WDJkeWIzVndYMmxrUFZ3blozSmhiVk4xY0hCdmNuUmNKMXh1SUNBZ0lDQWdSMUpQVlZBZ1Fsa2dkWE5sY2w5bmNtOTFjRjlwWkN4MWMyVnlYMmxrWEc0Z0lDQWdJQ0JQVWtSRlVpQkNXU0IxYzJWeVgybGtMSFZ6WlhKZlozSnZkWEJmYVdSY2JpQWdJQ0FpS1R0Y2JseHVJQ0FnSUNSMFlXSnNaWE05SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQlRSVXhGUTFRZ1ZFRkNURVZmVGtGTlJWeHVJQ0FnSUNBZ1JsSlBUU0JwYm1admNtMWhkR2x2Ymw5elkyaGxiV0V1VkVGQ1RFVlRYRzRnSUNBZ0lDQlhTRVZTUlNCVVFVSk1SVjlUUTBoRlRVRTlSRUZVUVVKQlUwVW9LU0JCVGtRZ1ZFRkNURVZmVGtGTlJTQk1TVXRGSUZ3bmVHWmZjR1Z5YldsemMybHZiaVZjSjF4dUlDQWdJQ0FnVDFKRVJWSWdRbGtnVkVGQ1RFVmZUa0ZOUlZ4dUlDQWdJQ0lwTzF4dUlDQWdJQ1J2ZFhSYlhDZHdaWEp0YVhOemFXOXVYM1JoWW14bGMxd25YVDFoY25KaGVWOXRZWEFvWm00b0pISXBQVDRvYzNSeWFXNW5LU1J5VzF3blZFRkNURVZmVGtGTlJWd25YU3drZEdGaWJHVnpLVHRjYmx4dUlDQWdJR2xtS0dsdVgyRnljbUY1S0Z3bmVHWmZjR1Z5YldsemMybHZibDlwYm5SbGNtWmhZMlZmWjNKdmRYQmNKeXdrYjNWMFcxd25jR1Z5YldsemMybHZibDkwWVdKc1pYTmNKMTBzZEhKMVpTa3BYRzRnSUNBZ2UxeHVJQ0FnSUNBZ0lDQWtiM1YwVzF3bmFXNTBaWEptWVdObFgyZHliM1Z3WDNKdmQzTmNKMTA5SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQWdJQ0FnVTBWTVJVTlVJQ29nUmxKUFRTQjRabDl3WlhKdGFYTnphVzl1WDJsdWRHVnlabUZqWlY5bmNtOTFjRnh1SUNBZ0lDQWdJQ0FnSUZkSVJWSkZJR2x1ZEdWeVptRmpaVjluY205MWNGOXBaRDFjSjJkeVlXMVRkWEJ3YjNKMFhDZGNiaUFnSUNBZ0lDQWdJaWs3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnSkc5MWRGdGNKMmx1ZEdWeVptRmpaVjluY205MWNGOXliM2R6WENkZFBWdGRPMXh1WEc0Z0lDQWdKSE4wWVdabVBTUmtZaTArWm1WMFkyaEJiR3dvSWx4dUlDQWdJQ0FnVTBWTVJVTlVJSFZ6WlhKZmFXUXNkWE5sY2w5bmNtOTFjRjlwWkN4elpXTnZibVJoY25sZlozSnZkWEJmYVdSekxHbHpYMkZrYldsdUxHbHpYMjF2WkdWeVlYUnZjaXh3WlhKdGFYTnphVzl1WDJOdmJXSnBibUYwYVc5dVgybGtYRzRnSUNBZ0lDQkdVazlOSUhobVgzVnpaWEpjYmlBZ0lDQWdJRmRJUlZKRklHbHpYMkZrYldsdVBURWdUMUlnYVhOZmJXOWtaWEpoZEc5eVBURmNiaUFnSUNBZ0lFOVNSRVZTSUVKWklIVnpaWEpmYVdSY2JpQWdJQ0FpS1R0Y2JpQWdJQ0FrYjNWMFcxd25jM1JoWm1aY0oxMDlXMTA3WEc0Z0lDQWdabTl5WldGamFDZ2tjM1JoWm1ZZ1lYTWdKSFVwWEc0Z0lDQWdlMXh1SUNBZ0lDQWdJQ0FrWTI5dFltODlKR1JpTFQ1bVpYUmphRkp2ZHlnaVhHNGdJQ0FnSUNBZ0lDQWdVMFZNUlVOVUlIQmxjbTFwYzNOcGIyNWZZMjl0WW1sdVlYUnBiMjVmYVdRc2RYTmxjbDlwWkN4MWMyVnlYMmR5YjNWd1gyeHBjM1FzWTJGamFHVmZkbUZzZFdWY2JpQWdJQ0FnSUNBZ0lDQkdVazlOSUhobVgzQmxjbTFwYzNOcGIyNWZZMjl0WW1sdVlYUnBiMjVjYmlBZ0lDQWdJQ0FnSUNCWFNFVlNSU0J3WlhKdGFYTnphVzl1WDJOdmJXSnBibUYwYVc5dVgybGtQVDljYmlBZ0lDQWdJQ0FnSWl3a2RWdGNKM0JsY20xcGMzTnBiMjVmWTI5dFltbHVZWFJwYjI1ZmFXUmNKMTBwTzF4dUlDQWdJQ0FnSUNBa1kyRmphR1U5SkdOdmJXSnZQM05oWm1WZmRXNXpaWElvS0hOMGNtbHVaeWtrWTI5dFltOWJYQ2RqWVdOb1pWOTJZV3gxWlZ3blhTazZiblZzYkR0Y2JpQWdJQ0FnSUNBZ0pHOTFkRnRjSjNOMFlXWm1YQ2RkVzEwOVcxeHVJQ0FnSUNBZ0lDQWdJRnduZFhObGNsOXBaRjl6YUdFeU5UWmNKejArYUdGemFDaGNKM05vWVRJMU5sd25MQ2h6ZEhKcGJtY3BKSFZiWENkMWMyVnlYMmxrWENkZEtTeGNiaUFnSUNBZ0lDQWdJQ0JjSjNCeWFXMWhjbmxmWjNKdmRYQmZhV1JjSnowK0tHbHVkQ2trZFZ0Y0ozVnpaWEpmWjNKdmRYQmZhV1JjSjEwc1hHNGdJQ0FnSUNBZ0lDQWdYQ2R6WldOdmJtUmhjbmxmWjNKdmRYQmZhV1J6WENjOVBpaHpkSEpwYm1jcEpIVmJYQ2R6WldOdmJtUmhjbmxmWjNKdmRYQmZhV1J6WENkZExGeHVJQ0FnSUNBZ0lDQWdJRnduYVhOZllXUnRhVzVjSnowK0tHSnZiMndwSkhWYlhDZHBjMTloWkcxcGJsd25YU3hjYmlBZ0lDQWdJQ0FnSUNCY0oybHpYMjF2WkdWeVlYUnZjbHduUFQ0b1ltOXZiQ2trZFZ0Y0oybHpYMjF2WkdWeVlYUnZjbHduWFN4Y2JpQWdJQ0FnSUNBZ0lDQmNKM0JsY20xcGMzTnBiMjVmWTI5dFltbHVZWFJwYjI1ZmFXUmZjMmhoTWpVMlhDYzlQbWhoYzJnb1hDZHphR0V5TlRaY0p5d29jM1J5YVc1bktTUjFXMXduY0dWeWJXbHpjMmx2Ymw5amIyMWlhVzVoZEdsdmJsOXBaRnduWFNrc1hHNGdJQ0FnSUNBZ0lDQWdYQ2RqYjIxaWIxOTFjMlZ5WDJsa1gzTm9ZVEkxTmx3blBUNGtZMjl0WW04L2FHRnphQ2hjSjNOb1lUSTFObHduTENoemRISnBibWNwSkdOdmJXSnZXMXduZFhObGNsOXBaRnduWFNrNmJuVnNiQ3hjYmlBZ0lDQWdJQ0FnSUNCY0oyTnZiV0p2WDNWelpYSmZaM0p2ZFhCZmJHbHpkRnduUFQ0a1kyOXRZbTgvS0hOMGNtbHVaeWtrWTI5dFltOWJYQ2QxYzJWeVgyZHliM1Z3WDJ4cGMzUmNKMTA2Ym5Wc2JDeGNiaUFnSUNBZ0lDQWdJQ0JjSjJOaFkyaGxYMko1ZEdWelhDYzlQaVJqYjIxaWJ6OXpkSEpzWlc0b0tITjBjbWx1Wnlra1kyOXRZbTliWENkallXTm9aVjkyWVd4MVpWd25YU2s2TUN4Y2JpQWdJQ0FnSUNBZ0lDQmNKMk5oWTJobFgzTm9ZVEkxTmx3blBUNGtZMjl0WW04L2FHRnphQ2hjSjNOb1lUSTFObHduTENoemRISnBibWNwSkdOdmJXSnZXMXduWTJGamFHVmZkbUZzZFdWY0oxMHBPbTUxYkd3c1hHNGdJQ0FnSUNBZ0lDQWdYQ2RqWVdOb1pWOTBiM0JmYkdWMlpXeGZhMlY1YzF3blBUNWhjbkpoZVY5clpYbHpYM052Y25SbFpDZ2tZMkZqYUdVcExGeHVJQ0FnSUNBZ0lDQWdJRnduWTJGamFHVmZhR0Z6WDJkeVlXMVRkWEJ3YjNKMFhDYzlQbWx6WDJGeWNtRjVLQ1JqWVdOb1pTa21KbWx6YzJWMEtDUmpZV05vWlZ0Y0oyZHlZVzFUZFhCd2IzSjBYQ2RkS1NZbWFYTmZZWEp5WVhrb0pHTmhZMmhsVzF3blozSmhiVk4xY0hCdmNuUmNKMTBwTEZ4dUlDQWdJQ0FnSUNBZ0lGd25aM0poYlZOMWNIQnZjblJmWTJGamFHVmNKejArYVhOZllYSnlZWGtvSkdOaFkyaGxLU1ltYVhOelpYUW9KR05oWTJobFcxd25aM0poYlZOMWNIQnZjblJjSjEwcEppWnBjMTloY25KaGVTZ2tZMkZqYUdWYlhDZG5jbUZ0VTNWd2NHOXlkRnduWFNrL0pHTmhZMmhsVzF3blozSmhiVk4xY0hCdmNuUmNKMTA2Ym5Wc2JGeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUnlaV2RwYzNSeWVWSnZkM005SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQlRSVXhGUTFRZ1pHRjBZVjlyWlhrc1pHRjBZVjkyWVd4MVpWeHVJQ0FnSUNBZ1JsSlBUU0I0Wmw5a1lYUmhYM0psWjJsemRISjVYRzRnSUNBZ0lDQlhTRVZTUlNCa1lYUmhYMnRsZVNCTVNVdEZJRnduSlhCbGNtMXBjM05wYjI0bFhDZGNiaUFnSUNBZ0lDQWdJRTlTSUdSaGRHRmZhMlY1SUV4SlMwVWdYQ2NsVUdWeWJXbHpjMmx2YmlWY0oxeHVJQ0FnSUNBZ0lDQWdUMUlnWkdGMFlWOXJaWGtnU1U0Z0tGd25ZV04wYVhabFFXUmtUMjV6WENjc1hDZGhaR1JQYm5OY0p5bGNiaUFnSUNBZ0lFOVNSRVZTSUVKWklHUmhkR0ZmYTJWNVhHNGdJQ0FnSWlrN1hHNGdJQ0FnSkc5MWRGdGNKM0psWjJsemRISjVYQ2RkUFZ0ZE8xeHVJQ0FnSUdadmNtVmhZMmdvSkhKbFoybHpkSEo1VW05M2N5QmhjeUFrY2lsY2JpQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNSMllXdzlLSE4wY21sdVp5a2tjbHRjSjJSaGRHRmZkbUZzZFdWY0oxMDdYRzRnSUNBZ0lDQWdJQ1JoY25JOWMyRm1aVjkxYm5ObGNpZ2tkbUZzS1R0Y2JpQWdJQ0FnSUNBZ0pHOTFkRnRjSjNKbFoybHpkSEo1WENkZFcxMDlXMXh1SUNBZ0lDQWdJQ0FnSUZ3bmEyVjVYQ2M5UGloemRISnBibWNwSkhKYlhDZGtZWFJoWDJ0bGVWd25YU3hjYmlBZ0lDQWdJQ0FnSUNCY0oySjVkR1Z6WENjOVBuTjBjbXhsYmlna2RtRnNLU3hjYmlBZ0lDQWdJQ0FnSUNCY0ozTm9ZVEkxTmx3blBUNW9ZWE5vS0Z3bmMyaGhNalUyWENjc0pIWmhiQ2tzWEc0Z0lDQWdJQ0FnSUNBZ1hDZGpiMjUwWVdsdWMxOW5jbUZ0VTNWd2NHOXlkRnduUFQ0b2MzUnljRzl6S0NSMllXd3NYQ2RuY21GdFUzVndjRzl5ZEZ3bktTRTlQV1poYkhObEtTeGNiaUFnSUNBZ0lDQWdJQ0JjSjJOdmJuUmhhVzV6WDBkeVlXMVRkWEJ3YjNKMFhDYzlQaWh6ZEhKd2IzTW9KSFpoYkN4Y0owZHlZVzB2VTNWd2NHOXlkRnduS1NFOVBXWmhiSE5sS1N4Y2JpQWdJQ0FnSUNBZ0lDQmNKM1J2Y0Y5c1pYWmxiRjlyWlhselhDYzlQbUZ5Y21GNVgzTnNhV05sS0dGeWNtRjVYMnRsZVhOZmMyOXlkR1ZrS0NSaGNuSXBMREFzTVRBd0tWeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUmhaR1J2YmtScGNqMGtjbTl2ZEM1Y0p5OXpjbU12WVdSa2IyNXpMMGR5WVcwdlUzVndjRzl5ZEM5ZlpHRjBZVnduTzF4dUlDQWdJQ1J2ZFhSYlhDZGhaR1J2Ymw5d1pYSnRhWE56YVc5dVgyUmhkR0ZmWm1sc1pYTmNKMTA5VzEwN1hHNGdJQ0FnWm05eVpXRmphQ2hiWENkd1pYSnRhWE56YVc5dWN5NTRiV3hjSnl4Y0ozQmxjbTFwYzNOcGIyNWZhVzUwWlhKbVlXTmxYMmR5YjNWd2N5NTRiV3hjSjEwZ1lYTWdKR1lwWEc0Z0lDQWdlMXh1SUNBZ0lDQWdJQ0FrY0Qwa1lXUmtiMjVFYVhJdVhDY3ZYQ2N1SkdZN1hHNGdJQ0FnSUNBZ0lDUnZkWFJiWENkaFpHUnZibDl3WlhKdGFYTnphVzl1WDJSaGRHRmZabWxzWlhOY0oxMWJKR1pkUFZ0Y2JpQWdJQ0FnSUNBZ0lDQmNKM0J5WlhObGJuUmNKejArYVhOZlptbHNaU2drY0Nrc1hHNGdJQ0FnSUNBZ0lDQWdYQ2RpZVhSbGMxd25QVDVwYzE5bWFXeGxLQ1J3S1Q5bWFXeGxjMmw2WlNna2NDazZNQ3hjYmlBZ0lDQWdJQ0FnSUNCY0ozTm9ZVEkxTmx3blBUNXBjMTltYVd4bEtDUndLVDlvWVhOb1gyWnBiR1VvWENkemFHRXlOVFpjSnl3a2NDazZiblZzYkN4Y2JpQWdJQ0FnSUNBZ0lDQmNKMk52Ym5SaGFXNXpYMmR5WVcxVGRYQndiM0owWENjOVBtbHpYMlpwYkdVb0pIQXBQeWh6ZEhKd2IzTW9LSE4wY21sdVp5bG1hV3hsWDJkbGRGOWpiMjUwWlc1MGN5Z2tjQ2tzWENkbmNtRnRVM1Z3Y0c5eWRGd25LU0U5UFdaaGJITmxLVHBtWVd4elpWeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUnZkWFJiWENkdmExd25YVDEwY25WbE8xeHVJQ0FnSUdWamFHOGdhbk52Ymw5bGJtTnZaR1VvSkc5MWRDeEtVMDlPWDFWT1JWTkRRVkJGUkY5VFRFRlRTRVZUZkVwVFQwNWZWVTVGVTBOQlVFVkVYMVZPU1VOUFJFVXBPMXh1SUNBZ0lHVjRhWFFvTUNrN1hHNTlYRzVqWVhSamFDaFVhSEp2ZDJGaWJHVWdKR1VwWEc1N1hHNGdJQ0FnWm1GcGJGOXZkWFFvSkc5MWRDeGNKMFZZUTBWUVZFbFBUbDljSnk1d2NtVm5YM0psY0d4aFkyVW9YQ2N2VzE1QkxWcGhMWG93TFRsZlhTOWNKeXhjSjE5Y0p5eG5aWFJmWTJ4aGMzTW9KR1VwS1NrN1hHNTlYRzRuQ2dwa1pXWWdjMmhoS0dJcE9pQnlaWFIxY200Z2FHRnphR3hwWWk1emFHRXlOVFlvWWlrdWFHVjRaR2xuWlhOMEtDa0tDbVJsWmlCeWRXNG9ZWEpuZGl4MGFXMWxiM1YwUFRFeU1DazZDaUFnSUNCMGNuazZDaUFnSUNBZ0lDQWdjRDF6ZFdKd2NtOWpaWE56TG5KMWJpaGhjbWQyTEhOMFpHOTFkRDF6ZFdKd2NtOWpaWE56TGxCSlVFVXNjM1JrWlhKeVBYTjFZbkJ5YjJObGMzTXVVRWxRUlN4MGFXMWxiM1YwUFhScGJXVnZkWFFzWTJobFkyczlSbUZzYzJVcENpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhBdWNtVjBkWEp1WTI5a1pTeHdMbk4wWkc5MWRDeHdMbk4wWkdWeWNnb2dJQ0FnWlhoalpYQjBJSE4xWW5CeWIyTmxjM011VkdsdFpXOTFkRVY0Y0dseVpXUTZDaUFnSUNBZ0lDQWdjbVYwZFhKdUlERXlOQ3hpSWlJc1lpSlVTVTFGVDFWVUlnb0taR1ZtSUhOdmRYSmpaVjl6WTJGdUtISnZiM1FwT2dvZ0lDQWdkR0Z5WjJWMGN6MWJDaUFnSUNBZ0lDQWdVR0YwYUNoeWIyOTBLUzhpYzNKakwxaEdMMHB2WWk5UVpYSnRhWE56YVc5dVVtVmlkV2xzWkM1d2FIQWlMQW9nSUNBZ0lDQWdJRkJoZEdnb2NtOXZkQ2t2SW5OeVl5OVlSaTlRWlhKdGFYTnphVzl1SWl3S0lDQWdJQ0FnSUNCUVlYUm9LSEp2YjNRcEx5SnpjbU12V0VZdlVtVndiM05wZEc5eWVTSXNDaUFnSUNBZ0lDQWdVR0YwYUNoeWIyOTBLUzhpYzNKakwxaEdMMFZ1ZEdsMGVTSXNDaUFnSUNCZENpQWdJQ0J3WVhSelBYSmxMbU52YlhCcGJHVW9jaUlvVUdWeWJXbHpjMmx2YmxKbFluVnBiR1I4Y0dWeWJXbHpjMmx2Ymw5amIyMWlhVzVoZEdsdmJueHdaWEp0YVhOemFXOXVRMkZqYUdWOGNHVnliV2x6YzJsdmJpQmpZV05vWlh4aWRXbHNaRkJsY20xcGMzTnBiMjU4Y21WaWRXbHNaRkJsY20xcGMzTnBiMjU4WjJ4dlltRnNVR1Z5YldsemMybHZibnh3WlhKdGFYTnphVzl1WDJWdWRISjVmSEJsY20xcGMzTnBiMjVmYVc1MFpYSm1ZV05sWDJkeWIzVndmR1JoZEdGU1pXZHBjM1J5ZVh4eVpXZHBjM1J5ZVNraUxISmxMa2twQ2lBZ0lDQnliM2R6UFZ0ZENpQWdJQ0JtYVd4bGN6MWJYUW9nSUNBZ1ptOXlJSFFnYVc0Z2RHRnlaMlYwY3pvS0lDQWdJQ0FnSUNCcFppQjBMbWx6WDJacGJHVW9LVG9LSUNBZ0lDQWdJQ0FnSUNBZ1ptbHNaWE11WVhCd1pXNWtLSFFwQ2lBZ0lDQWdJQ0FnWld4cFppQjBMbWx6WDJScGNpZ3BPZ29nSUNBZ0lDQWdJQ0FnSUNCbWIzSWdjQ0JwYmlCemIzSjBaV1FvZEM1eVoyeHZZaWdpS2k1d2FIQWlLU2s2Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjNjOWMzUnlLSEFwTG14dmQyVnlLQ2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNKd1pYSnRhWE56YVc5dUlpQnBiaUJzYjNjZ2IzSWdJblZ6WlhJdWNHaHdJaUJwYmlCc2IzYzZDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1sc1pYTXVZWEJ3Wlc1a0tIQXBDaUFnSUNCelpXVnVQWE5sZENncENpQWdJQ0JtYjNJZ2NDQnBiaUJtYVd4bGN6b0tJQ0FnSUNBZ0lDQnpjRDF6ZEhJb2NDa0tJQ0FnSUNBZ0lDQnBaaUJ6Y0NCcGJpQnpaV1Z1T2lCamIyNTBhVzUxWlFvZ0lDQWdJQ0FnSUhObFpXNHVZV1JrS0hOd0tRb2dJQ0FnSUNBZ0lIUnllVG9LSUNBZ0lDQWdJQ0FnSUNBZ2JHbHVaWE05Y0M1eVpXRmtYM1JsZUhRb0luVjBaaTA0SWl4bGNuSnZjbk05SW5KbGNHeGhZMlVpS1M1emNHeHBkR3hwYm1WektDa0tJQ0FnSUNBZ0lDQmxlR05sY0hRZ1JYaGpaWEIwYVc5dU9nb2dJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaUW9nSUNBZ0lDQWdJR1p2Y2lCcExHeHBibVVnYVc0Z1pXNTFiV1Z5WVhSbEtHeHBibVZ6TERFcE9nb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlCd1lYUnpMbk5sWVhKamFDaHNhVzVsS1RvS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNGREMGlJQ0l1YW05cGJpaHNhVzVsTG5OMGNtbHdLQ2t1YzNCc2FYUW9LU2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUd4bGJpaDBlSFFwUGpNMk1Eb2dkSGgwUFhSNGRGczZNell3WFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY205M2N5NWhjSEJsYm1Rb2V5SndZWFJvSWpwemRISW9jQzV5Wld4aGRHbDJaVjkwYnloeWIyOTBLU2tzSW14cGJtVWlPbWtzSW5SbGVIUWlPblI0ZEgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQnNaVzRvY205M2N5aytQVEkyTURvZ2NtVjBkWEp1SUhKdmQzTUtJQ0FnSUhKbGRIVnliaUJ5YjNkekNncG1aQ3h3WVhSb1BYUmxiWEJtYVd4bExtMXJjM1JsYlhBb2NISmxabWw0UFNKbmNtRnROVEUxY2pKeU1TMGlMSE4xWm1acGVEMGlMbkJvY0NJcE95QnZjeTVqYkc5elpTaG1aQ2tLVUdGMGFDaHdZWFJvS1M1M2NtbDBaVjkwWlhoMEtIQm9jRjlqYjJSbExHVnVZMjlrYVc1blBTSjFkR1l0T0NJcE95QnZjeTVqYUcxdlpDaHdZWFJvTERCdk5qQXdLUXB5YjNkelBWdGRDblJ5ZVRvS0lDQWdJR1p2Y2lCeklHbHVJSE5wZEdWek9nb2dJQ0FnSUNBZ0lIQTljM1ZpY0hKdlkyVnpjeTV5ZFc0b0NpQWdJQ0FnSUNBZ0lDQWdJRnNpTDNWemNpOWlhVzR2Y0dod0lpd2lMV1FpTENKa2FYTndiR0Y1WDJWeWNtOXljejB3SWl4d1lYUm9MSE5iSW5CMVlteHBZeUpkTEhOYkluTnNkV2NpWFYwc0NpQWdJQ0FnSUNBZ0lDQWdJSE4wWkc5MWREMXpkV0p3Y205alpYTnpMbEJKVUVVc2MzUmtaWEp5UFhOMVluQnliMk5sYzNNdVVFbFFSU3gwYVcxbGIzVjBQVEV5TUN4amFHVmphejFHWVd4elpRb2dJQ0FnSUNBZ0lDa0tJQ0FnSUNBZ0lDQnliM2M5ZXlKemJIVm5JanB6V3lKemJIVm5JbDBzSW5KaklqcHdMbkpsZEhWeWJtTnZaR1VzSW5OMFpHVnljbDl6YUdFeU5UWWlPbk5vWVNod0xuTjBaR1Z5Y2lrc0luTjBaR1Z5Y2w5aWVYUmxjeUk2YkdWdUtIQXVjM1JrWlhKeUtYMEtJQ0FnSUNBZ0lDQjBjbms2SUhKdmQxc2laR0lpWFQxcWMyOXVMbXh2WVdSektIQXVjM1JrYjNWMExtUmxZMjlrWlNnaWRYUm1MVGdpTENKemRISnBZM1FpS1NrS0lDQWdJQ0FnSUNCbGVHTmxjSFFnUlhoalpYQjBhVzl1SUdGeklHVTZDaUFnSUNBZ0lDQWdJQ0FnSUhKdmQxc2ljR0Z5YzJWZlpYSnliM0lpWFQxMGVYQmxLR1VwTGw5ZmJtRnRaVjlmTzNKdmQxc2ljM1JrYjNWMFgzTm9ZVEkxTmlKZFBYTm9ZU2h3TG5OMFpHOTFkQ2tLSUNBZ0lDQWdJQ0JwWmlCekxtZGxkQ2dpYzJOaGJsOWpiM0psSWlrNkNpQWdJQ0FnSUNBZ0lDQWdJSEp2ZDFzaVkyOXlaVjl6WTJGdUlsMDljMjkxY21ObFgzTmpZVzRvYzFzaWNIVmliR2xqSWwwcENpQWdJQ0FnSUNBZ2NtOTNjeTVoY0hCbGJtUW9jbTkzS1FwbWFXNWhiR3g1T2dvZ0lDQWdkSEo1T2lCdmN5NTFibXhwYm1zb2NHRjBhQ2tLSUNBZ0lHVjRZMlZ3ZENCRmVHTmxjSFJwYjI0NklIQmhjM01LY0hKcGJuUW9hbk52Ymk1a2RXMXdjeWg3SW5KdmQzTWlPbkp2ZDNOOUxHVnVjM1Z5WlY5aGMyTnBhVDFVY25WbExITnZjblJmYTJWNWN6MVVjblZsTEhObGNHRnlZWFJ2Y25NOUtDSXNJaXdpT2lJcEtTa0snKQoKZGVmIHNoYShiKTogcmV0dXJuIGhhc2hsaWIuc2hhMjU2KGIpLmhleGRpZ2VzdCgpCmRlZiBydW4oYXJndixzdGRpbj1iIiIsdGltZW91dD0yMjApOgogICAgdHJ5OgogICAgICAgIHA9c3VicHJvY2Vzcy5ydW4oYXJndixpbnB1dD1zdGRpbixzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0LGNoZWNrPUZhbHNlLGVudj17Kipvcy5lbnZpcm9uLCJMQ19BTEwiOiJDIn0pCiAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSxwLnN0ZG91dCxwLnN0ZGVycgogICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6IHJldHVybiAxMjQsYiIiLGIiVElNRU9VVCIKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmV0dXJuIDEyNSxiIiIsdHlwZShlKS5fX25hbWVfXy5lbmNvZGUoKQpkZWYgcGFyc2VfcWdhKHJjLG91dCxlcnIpOgogICAgej17InRyYW5zcG9ydF9yYyI6cmMsInRyYW5zcG9ydF9zdGRlcnJfc2hhMjU2IjpzaGEoZXJyKSwidHJhbnNwb3J0X3N0ZGVycl9ieXRlcyI6bGVuKGVycil9CiAgICBpZiByYyE9MDogelsib2siXT1GYWxzZTsgcmV0dXJuIHoKICAgIHRyeTogZG9jPWpzb24ubG9hZHMob3V0LmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogelsib2siXT1GYWxzZTt6WyJlcnJvciJdPSJRR0FfSlNPTl8iK3R5cGUoZSkuX19uYW1lX187cmV0dXJuIHoKICAgIGlmIGRvYy5nZXQoIm91dC10cnVuY2F0ZWQiKSBvciBkb2MuZ2V0KCJlcnItdHJ1bmNhdGVkIik6IHpbIm9rIl09RmFsc2U7elsiZXJyb3IiXT0iUUdBX1RSVU5DQVRFRCI7cmV0dXJuIHoKICAgIHpbImlubmVyX3JjIl09ZG9jLmdldCgiZXhpdGNvZGUiKTt6WyJndWVzdF9zdGRlcnJfcHJlc2VudCJdPWJvb2woZG9jLmdldCgiZXJyLWRhdGEiKSkKICAgIHRyeToKICAgICAgICB6WyJyZXBvcnQiXT1qc29uLmxvYWRzKGRvYy5nZXQoIm91dC1kYXRhIiwiIikpO3pbIm9rIl09KGRvYy5nZXQoImV4aXRjb2RlIik9PTApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6IHpbIm9rIl09RmFsc2U7elsiZXJyb3IiXT0iR1VFU1RfSlNPTl8iK3R5cGUoZSkuX19uYW1lX18KICAgIHJldHVybiB6CmRlZiBwYXlsb2FkKHNzKToKICAgIGQ9anNvbi5kdW1wcyh7InNpdGVzIjpzc30sc2VwYXJhdG9ycz0oIiwiLCI6IikpCiAgICByZXR1cm4gKCJpbXBvcnQgYmFzZTY0LHN5cyxpbztzeXMuc3RkaW49aW8uU3RyaW5nSU8oIityZXByKGQpKyIpO2V4ZWMoY29tcGlsZShiYXNlNjQuYjY0ZGVjb2RlKCIrcmVwcihiYXNlNjQuYjY0ZW5jb2RlKEdVRVNUKS5kZWNvZGUoKSkrIiksJzxnPicsJ2V4ZWMnKSkiKS5lbmNvZGUoKQpkZWYgcWdhX3B2ZTAyKHNzKToKICAgIGd1YXJkPSd0ZXN0ICIkKGlkIC11KTokKGhvc3RuYW1lIC1zKSIgPSAwOnB2ZTAyIHx8IGV4aXQgNzI7IGV4ZWMgL3Vzci9zYmluL3FtIGd1ZXN0IGV4ZWMgMTYwIC0tc3luY2hyb25vdXMgMSAtLXRpbWVvdXQgMTkwIC0tcGFzcy1zdGRpbiAxIC0tIC91c3IvYmluL3B5dGhvbjMgLUkgLUIgLScKICAgIHJjLG91dCxlcnI9cnVuKFsiL3Vzci9iaW4vc3NoIiwiLVQiLCItbyIsIkJhdGNoTW9kZT15ZXMiLCItbyIsIlN0cmljdEhvc3RLZXlDaGVja2luZz15ZXMiLCItbyIsIkNvbm5lY3RUaW1lb3V0PTgiLCJyb290QHB2ZTAyIixndWFyZF0scGF5bG9hZChzcyksMjE1KQogICAgcmV0dXJuIHBhcnNlX3FnYShyYyxvdXQsZXJyKQpkZWYgcWdhX2xvY2FsKHNzKToKICAgIHJjLG91dCxlcnI9cnVuKFsiL3Vzci9zYmluL3FtIiwiZ3Vlc3QiLCJleGVjIiwiMjEwIiwiLS1zeW5jaHJvbm91cyIsIjEiLCItLXRpbWVvdXQiLCIxOTAiLCItLXBhc3Mtc3RkaW4iLCIxIiwiLS0iLCIvdXNyL2Jpbi9weXRob24zIiwiLUkiLCItQiIsIi0iXSxwYXlsb2FkKHNzKSwyMTUpCiAgICByZXR1cm4gcGFyc2VfcWdhKHJjLG91dCxlcnIpCgppZiBvcy5nZXRldWlkKCkhPTAgb3Igb3MudW5hbWUoKS5ub2RlbmFtZS5zcGxpdCgiLiIpWzBdIT0icHZlMDEiOgogICAgcHJpbnQoIkdSQU01MTVSMlIxX0RFQ0lTSU9OPUZBSUxfRVhQRUNURURfUk9PVF9QVkUwMSIpCiAgICBwcmludCgiSE9NRUxBQl9SRVNVTFRfQ09OVFJBQ1Q9Iitqc29uLmR1bXBzKHsidmVyc2lvbiI6MSwiY29tbWFuZF9pZCI6Q0lELCJzdGF0dXMiOiJGQUlMIiwiY2hhbmdlc19tYWRlIjpGYWxzZSwicm9sbGJhY2tfc3RhcnRlZCI6RmFsc2UsInJvbGxiYWNrX3Jlc3RvcmVkIjpOb25lfSxzZXBhcmF0b3JzPSgiLCIsIjoiKSkpCiAgICByYWlzZSBTeXN0ZW1FeGl0KDMpCgphPXFnYV9wdmUwMihbeCBmb3IgeCBpbiBTSVRFUyBpZiB4WyJ2bWlkIl09PTE2MF0pCmI9cWdhX2xvY2FsKFt4IGZvciB4IGluIFNJVEVTIGlmIHhbInZtaWQiXT09MjEwXSkKcm93cz1bXQpmb3IgcGFydCBpbiAoYSxiKToKICAgIGlmIHBhcnQuZ2V0KCJvayIpIGFuZCBpc2luc3RhbmNlKHBhcnQuZ2V0KCJyZXBvcnQiKSxkaWN0KTogcm93cy5leHRlbmQocGFydFsicmVwb3J0Il0uZ2V0KCJyb3dzIikgb3IgW10pCgpzaXRlNz0obGVuKHJvd3MpPT03KQpkYjc9c2l0ZTcgYW5kIGFsbCh4LmdldCgicmMiKT09MCBhbmQgKHguZ2V0KCJkYiIpIG9yIHt9KS5nZXQoIm9rIikgaXMgVHJ1ZSBmb3IgeCBpbiByb3dzKQphbGxfcGVybTk9ZGI3IGFuZCBhbGwobGVuKCh4WyJkYiJdLmdldCgicGVybWlzc2lvbl9yb3dzIikgb3IgW10pKT09OSBmb3IgeCBpbiByb3dzKQphbGxfY29tYm9fbm9fZ3JhbT1kYjcgYW5kIGFsbChhbGwobm90IHMuZ2V0KCJjYWNoZV9oYXNfZ3JhbVN1cHBvcnQiKSBmb3IgcyBpbiAoeFsiZGIiXS5nZXQoInN0YWZmIikgb3IgW10pKSBmb3IgeCBpbiByb3dzKQppZmFjZV9zdGF0ZT1beyJzbHVnIjp4LmdldCgic2x1ZyIpLCJyb3dzIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgiaW50ZXJmYWNlX2dyb3VwX3Jvd3MiKSBvciBbXX0gZm9yIHggaW4gcm93c10KcmVnaXN0cnk9W3sic2x1ZyI6eC5nZXQoInNsdWciKSwicmVnaXN0cnkiOih4LmdldCgiZGIiKSBvciB7fSkuZ2V0KCJyZWdpc3RyeSIpIG9yIFtdLCJwZXJtaXNzaW9uX3RhYmxlcyI6KHguZ2V0KCJkYiIpIG9yIHt9KS5nZXQoInBlcm1pc3Npb25fdGFibGVzIikgb3IgW10sInN0YWZmIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgic3RhZmYiKSBvciBbXSwiYWRkb25fcGVybWlzc2lvbl9kYXRhX2ZpbGVzIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgiYWRkb25fcGVybWlzc2lvbl9kYXRhX2ZpbGVzIikgb3Ige319IGZvciB4IGluIHJvd3NdCmNvcmVfc2NhbnM9W3sic2x1ZyI6eC5nZXQoInNsdWciKSwiY29yZV9zY2FuIjp4LmdldCgiY29yZV9zY2FuIikgb3IgW119IGZvciB4IGluIHJvd3MgaWYgeC5nZXQoImNvcmVfc2NhbiIpIGlzIG5vdCBOb25lXQoKcmVwb3J0PXsKICJzY2hlbWFfdmVyc2lvbiI6MSwKICJzY29wZSI6IlJFQURfT05MWV9HUkFNX1NVUFBPUlRfUEVSTUlTU0lPTl9SRUdJU1RSWV9BTkRfQlVJTERFUl9SQ0EiLAogInNpdGVfY291bnQiOmxlbihyb3dzKSwKICJjbGFzc2lmaWNhdGlvbiI6ewogICAic2l0ZV9jb3VudF83IjpzaXRlNywKICAgImRiX3Byb2JlXzdvZjciOmRiNywKICAgInBlcm1pc3Npb25fZGVmc185XzdvZjciOmFsbF9wZXJtOSwKICAgInN0YWZmX2NhY2hlX21pc3NpbmdfZ3JhbVN1cHBvcnRfN29mNyI6YWxsX2NvbWJvX25vX2dyYW0sCiAgICJjaGFuZ2VzX21hZGUiOkZhbHNlLAogICAic2VuZF9hdHRlbXB0cyI6MAogfSwKICJpbnRlcmZhY2VfZ3JvdXBfc3RhdGUiOmlmYWNlX3N0YXRlLAogInJlZ2lzdHJ5X2FuZF9jb21iaW5hdGlvbl9zdGF0ZSI6cmVnaXN0cnksCiAiY29yZV9zb3VyY2Vfc2NhbnMiOmNvcmVfc2NhbnMsCiAidHJhbnNwb3J0Ijp7InZtMTYwIjp7azp2IGZvciBrLHYgaW4gYS5pdGVtcygpIGlmIGshPSJyZXBvcnQifSwidm0yMTAiOntrOnYgZm9yIGssdiBpbiBiLml0ZW1zKCkgaWYgayE9InJlcG9ydCJ9fQp9CnByaW50KCJHUkFNNTE1UjJSMV9TQUZFX1JFUE9SVD0iK2pzb24uZHVtcHMocmVwb3J0LGVuc3VyZV9hc2NpaT1UcnVlLHNvcnRfa2V5cz1UcnVlLHNlcGFyYXRvcnM9KCIsIiwiOiIpKSkKaWYgc2l0ZTcgYW5kIGRiNzoKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ERUNJU0lPTj1QQVNTX1BFUk1JU1NJT05fUkVHSVNUUllfUkNBX0VWSURFTkNFX0NBUFRVUkVEIikKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ORVhUX0dBVEU9UkVWSUVXX0VYQUNUX1VQU1RSRUFNX0NBQ0hFX09SX01FVEFEQVRBX0ZJWCIpCiAgICBzdD0iT0siO3JjPTAKZWxzZToKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ERUNJU0lPTj1IT0xEX1BFUk1JU1NJT05fUkVHSVNUUllfUkNBX0lOQ09NUExFVEUiKQogICAgcHJpbnQoIkdSQU01MTVSMlIxX05FWFRfR0FURT1TVE9QX05PX01VVEFUSU9OIikKICAgIHN0PSJGQUlMIjtyYz0zCnByaW50KCJIT01FTEFCX1JFU1VMVF9DT05UUkFDVD0iK2pzb24uZHVtcHMoeyJ2ZXJzaW9uIjoxLCJjb21tYW5kX2lkIjpDSUQsInN0YXR1cyI6c3QsImNoYW5nZXNfbWFkZSI6RmFsc2UsInJvbGxiYWNrX3N0YXJ0ZWQiOkZhbHNlLCJyb2xsYmFja19yZXN0b3JlZCI6Tm9uZX0sc2VwYXJhdG9ycz0oIiwiLCI6IikpKQpyYWlzZSBTeXN0ZW1FeGl0KHJjKQo=\"),\"\",\"exec\"))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"\", line 3, in \nNameError: name 'true' is not defined. Did you mean: 'True'?\n" + "output": "GRAM515R2R1R1_SAFE_REPORT={\"classification\":{\"changes_made\":false,\"db_probe_7of7\":true,\"permission_defs_9_7of7\":true,\"send_attempts\":0,\"site_count_7\":true,\"staff_cache_missing_gramSupport_7of7\":true},\"core_source_scans\":[{\"core_scan\":[{\"line\":9,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"class PermissionRebuild extends AbstractRebuildJob\"},{\"line\":43,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"'SELECT permission_combination_id\"},{\"line\":44,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"FROM xf_permission_combination\"},{\"line\":45,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"WHERE permission_combination_id > ?\"},{\"line\":46,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"ORDER BY permission_combination_id',\"},{\"line\":54,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');\"},{\"line\":86,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"$combinationId = $combination->permission_combination_id;\"},{\"line\":93,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id' => $combinationId,\"},{\"line\":102,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id = ? AND content_type = ?',\"},{\"line\":70,\"path\":\"src/XF/Permission/Builder.php\",\"text\":\"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();\"},{\"line\":26,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"public function rebuildAdminPermissionCache()\"},{\"line\":31,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id\"},{\"line\":32,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"FROM xf_admin_permission_entry AS admin_permission_entry\"},{\"line\":34,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)\"},{\"line\":90,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"if ($combination->permission_combination_id != $user->permission_combination_id)\"},{\"line\":92,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\"},{\"line\":106,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":108,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":121,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\"},{\"line\":132,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$preRegActionCondition = \\\"AND p.permission_combination_id <> \\\" . $db->quote($preRegCombination);\"},{\"line\":136,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"SELECT p.permission_combination_id\"},{\"line\":137,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"FROM xf_permission_combination AS p\"},{\"line\":138,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up\"},{\"line\":139,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"ON (p.permission_combination_id = up.permission_combination_id)\"},{\"line\":140,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"WHERE up.permission_combination_id IS NULL\"},{\"line\":142,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"AND p.permission_combination_id <> 1\"},{\"line\":147,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';\"},{\"line\":149,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination', $combinationCondition);\"},{\"line\":150,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination_user_group', $combinationCondition);\"},{\"line\":161,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');\"},{\"line\":165,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination', [\"},{\"line\":166,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":172,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination_user_group', [\"},{\"line\":174,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":16,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);\"},{\"line\":28,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);\"},{\"line\":33,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"public function getGlobalPermissionEntriesGrouped(array $limits = [])\"},{\"line\":53,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry\"},{\"line\":109,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":184,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":193,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry');\"},{\"line\":198,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');\"},{\"line\":12,\"path\":\"src/XF/Repository/PermissionRepository.php\",\"text\":\"public function getGlobalPermissionListData()\"},{\"line\":76,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":82,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":99,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":104,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":107,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"protected function rebuildAdminPermissionCache()\"},{\"line\":111,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"\\\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)\"},{\"line\":113,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$repo->rebuildAdminPermissionCache();\"},{\"line\":6,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"use XF\\\\Job\\\\PermissionRebuild;\"},{\"line\":115,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":121,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":149,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":154,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":164,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"\\\\XF::runOnce('xfPermissionRebuild', function ()\"},{\"line\":166,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":16,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"class PermissionCacheContent extends Entity implements Proxyable\"},{\"line\":20,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'] === null\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"\\\\XF::app()->permissionCache()->setContentPerms(\"},{\"line\":38,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":48,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->shortName = 'XF:PermissionCacheContent';\"},{\"line\":49,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];\"},{\"line\":51,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":12,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* @property int|null $permission_combination_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"if ($values['permission_combination_id'] === null)\"},{\"line\":36,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"\\\\XF::app()->permissionCache()->setGlobalPerms(\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":58,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => $this->permission_combination_id,\"},{\"line\":64,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":65,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":66,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":70,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);\"},{\"line\":86,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":87,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":88,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":94,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->table = 'xf_permission_combination';\"},{\"line\":96,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->primaryKey = 'permission_combination_id';\"},{\"line\":98,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":116,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":21,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->table = 'xf_permission_combination_user_group';\"},{\"line\":23,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];\"},{\"line\":26,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":39,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->table = 'xf_permission_entry';\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->table = 'xf_permission_entry_content';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":137,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"$structure->table = 'xf_permission_interface_group';\"},{\"line\":142,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'required' => 'please_enter_valid_permission_interface_group_id',\"},{\"line\":143,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'unique' => 'permission_interface_group_ids_must_be_unique',\"},{\"line\":52,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id_\"},{\"line\":85,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":361,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return \\\\XF::permissionCache()->getPermissionSet($this->permission_combination_id);\"},{\"line\":370,\"path\":\"src/XF/Entity/User.php\",\"text\":\"? $this->getValue('permission_combination_id')\"},{\"line\":1268,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return $this->PermissionSet->hasGlobalPermission($group, $permission);\"},{\"line\":1285,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"line\":1289,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"line\":1367,\"path\":\"src/XF/Entity/User.php\",\"text\":\"public function rebuildPermissionCombination()\"},{\"line\":1681,\"path\":\"src/XF/Entity/User.php\",\"text\":\"$this->rebuildPermissionCombination();\"},{\"line\":1684,\"path\":\"src/XF/Entity/User.php\",\"text\":\"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))\"},{\"line\":2341,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],\"},{\"line\":2392,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => false,\"},{\"line\":2427,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'conditions' => 'permission_combination_id',\"}],\"slug\":\"codevipe\"},{\"core_scan\":[{\"line\":9,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"class PermissionRebuild extends AbstractRebuildJob\"},{\"line\":43,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"'SELECT permission_combination_id\"},{\"line\":44,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"FROM xf_permission_combination\"},{\"line\":45,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"WHERE permission_combination_id > ?\"},{\"line\":46,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"ORDER BY permission_combination_id',\"},{\"line\":54,\"path\":\"src/XF/Job/PermissionRebuild.php\",\"text\":\"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');\"},{\"line\":86,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"$combinationId = $combination->permission_combination_id;\"},{\"line\":93,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id' => $combinationId,\"},{\"line\":102,\"path\":\"src/XF/Permission/AbstractContentPermissions.php\",\"text\":\"'permission_combination_id = ? AND content_type = ?',\"},{\"line\":70,\"path\":\"src/XF/Permission/Builder.php\",\"text\":\"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();\"},{\"line\":26,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"public function rebuildAdminPermissionCache()\"},{\"line\":31,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id\"},{\"line\":32,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"FROM xf_admin_permission_entry AS admin_permission_entry\"},{\"line\":34,\"path\":\"src/XF/Repository/AdminPermissionRepository.php\",\"text\":\"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)\"},{\"line\":90,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"if ($combination->permission_combination_id != $user->permission_combination_id)\"},{\"line\":92,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);\"},{\"line\":106,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":108,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)\"},{\"line\":121,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];\"},{\"line\":132,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$preRegActionCondition = \\\"AND p.permission_combination_id <> \\\" . $db->quote($preRegCombination);\"},{\"line\":136,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"SELECT p.permission_combination_id\"},{\"line\":137,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"FROM xf_permission_combination AS p\"},{\"line\":138,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up\"},{\"line\":139,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"ON (p.permission_combination_id = up.permission_combination_id)\"},{\"line\":140,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"WHERE up.permission_combination_id IS NULL\"},{\"line\":142,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"AND p.permission_combination_id <> 1\"},{\"line\":147,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';\"},{\"line\":149,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination', $combinationCondition);\"},{\"line\":150,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->delete('xf_permission_combination_user_group', $combinationCondition);\"},{\"line\":161,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');\"},{\"line\":165,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination', [\"},{\"line\":166,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":172,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"$db->insert('xf_permission_combination_user_group', [\"},{\"line\":174,\"path\":\"src/XF/Repository/PermissionCombinationRepository.php\",\"text\":\"'permission_combination_id' => 1,\"},{\"line\":16,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);\"},{\"line\":28,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);\"},{\"line\":33,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"public function getGlobalPermissionEntriesGrouped(array $limits = [])\"},{\"line\":53,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry\"},{\"line\":109,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":184,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"FROM xf_permission_entry_content\"},{\"line\":193,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry');\"},{\"line\":198,\"path\":\"src/XF/Repository/PermissionEntryRepository.php\",\"text\":\"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');\"},{\"line\":12,\"path\":\"src/XF/Repository/PermissionRepository.php\",\"text\":\"public function getGlobalPermissionListData()\"},{\"line\":76,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":82,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":99,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"'xf_admin_permission_entry',\"},{\"line\":104,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$this->rebuildAdminPermissionCache();\"},{\"line\":107,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"protected function rebuildAdminPermissionCache()\"},{\"line\":111,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"\\\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)\"},{\"line\":113,\"path\":\"src/XF/Entity/AdminPermission.php\",\"text\":\"$repo->rebuildAdminPermissionCache();\"},{\"line\":6,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"use XF\\\\Job\\\\PermissionRebuild;\"},{\"line\":115,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":121,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":149,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry',\"},{\"line\":154,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"'xf_permission_entry_content',\"},{\"line\":164,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"\\\\XF::runOnce('xfPermissionRebuild', function ()\"},{\"line\":166,\"path\":\"src/XF/Entity/Permission.php\",\"text\":\"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":16,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"class PermissionCacheContent extends Entity implements Proxyable\"},{\"line\":20,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'] === null\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"\\\\XF::app()->permissionCache()->setContentPerms(\"},{\"line\":38,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":48,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->shortName = 'XF:PermissionCacheContent';\"},{\"line\":49,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];\"},{\"line\":51,\"path\":\"src/XF/Entity/PermissionCacheContent.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":12,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* @property int|null $permission_combination_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"* permission_combination_id: int|null,\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"if ($values['permission_combination_id'] === null)\"},{\"line\":36,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"\\\\XF::app()->permissionCache()->setGlobalPerms(\"},{\"line\":37,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$values['permission_combination_id'],\"},{\"line\":58,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => $this->permission_combination_id,\"},{\"line\":64,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":65,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":66,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":70,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);\"},{\"line\":86,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'xf_permission_combination_user_group',\"},{\"line\":87,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id = ?',\"},{\"line\":88,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$this->permission_combination_id\"},{\"line\":94,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->table = 'xf_permission_combination';\"},{\"line\":96,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"$structure->primaryKey = 'permission_combination_id';\"},{\"line\":98,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":116,\"path\":\"src/XF/Entity/PermissionCombination.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":11,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":21,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->table = 'xf_permission_combination_user_group';\"},{\"line\":23,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];\"},{\"line\":26,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'required' => true],\"},{\"line\":39,\"path\":\"src/XF/Entity/PermissionCombinationUserGroup.php\",\"text\":\"'conditions' => 'permission_combination_id',\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":25,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->table = 'xf_permission_entry';\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntry.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":10,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"* @property int|null $permission_entry_id\"},{\"line\":27,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->table = 'xf_permission_entry_content';\"},{\"line\":29,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"$structure->primaryKey = 'permission_entry_id';\"},{\"line\":31,\"path\":\"src/XF/Entity/PermissionEntryContent.php\",\"text\":\"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],\"},{\"line\":137,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"$structure->table = 'xf_permission_interface_group';\"},{\"line\":142,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'required' => 'please_enter_valid_permission_interface_group_id',\"},{\"line\":143,\"path\":\"src/XF/Entity/PermissionInterfaceGroup.php\",\"text\":\"'unique' => 'permission_interface_group_ids_must_be_unique',\"},{\"line\":52,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id_\"},{\"line\":85,\"path\":\"src/XF/Entity/User.php\",\"text\":\"* @property int $permission_combination_id\"},{\"line\":361,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return \\\\XF::permissionCache()->getPermissionSet($this->permission_combination_id);\"},{\"line\":370,\"path\":\"src/XF/Entity/User.php\",\"text\":\"? $this->getValue('permission_combination_id')\"},{\"line\":1268,\"path\":\"src/XF/Entity/User.php\",\"text\":\"return $this->PermissionSet->hasGlobalPermission($group, $permission);\"},{\"line\":1285,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);\"},{\"line\":1289,\"path\":\"src/XF/Entity/User.php\",\"text\":\"\\\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');\"},{\"line\":1367,\"path\":\"src/XF/Entity/User.php\",\"text\":\"public function rebuildPermissionCombination()\"},{\"line\":1681,\"path\":\"src/XF/Entity/User.php\",\"text\":\"$this->rebuildPermissionCombination();\"},{\"line\":1684,\"path\":\"src/XF/Entity/User.php\",\"text\":\"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))\"},{\"line\":2341,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],\"},{\"line\":2392,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'permission_combination_id' => false,\"},{\"line\":2427,\"path\":\"src/XF/Entity/User.php\",\"text\":\"'conditions' => 'permission_combination_id',\"}],\"slug\":\"newfi\"}],\"interface_group_state\":[{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"codevipe\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"dsmods\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"gamevipe\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"hkmods\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"kingofwolk\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"zakrutim\"},{\"rows\":[{\"addon_id\":\"Gram/Support\",\"display_order\":1000,\"interface_group_id\":\"gramSupport\",\"is_moderator\":0}],\"slug\":\"newfi\"}],\"registry_and_combination_state\":[{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"codevipe\",\"staff\":[{\"cache_bytes\":2517,\"cache_has_gramSupport\":false,\"cache_sha256\":\"2986831367f0ac442e19b5955044a0327a800f20c46155584d148666c9a9aec1\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"dsmods\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"gamevipe\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"hkmods\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"75cde1920175751989c915647ce0b7c9bc43f3455ef4ccd0fac85bdeeb65a0b1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"kingofwolk\",\"staff\":[{\"cache_bytes\":2530,\"cache_has_gramSupport\":false,\"cache_sha256\":\"5ba76aaa2def782deeec5b54d24d723cc2d5c501da7574c6735039dcb5539855\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":95,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1\",\"top_level_keys\":[\"Gram/Support\",\"Workers2/PostboxPolicy\",\"XF\"]}],\"slug\":\"zakrutim\",\"staff\":[{\"cache_bytes\":2526,\"cache_has_gramSupport\":false,\"cache_sha256\":\"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]},{\"addon_permission_data_files\":{\"permission_interface_groups.xml\":{\"bytes\":192,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad\"},\"permissions.xml\":{\"bytes\":1432,\"contains_gramSupport\":true,\"present\":true,\"sha256\":\"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee\"}},\"permission_tables\":[\"xf_permission\",\"xf_permission_cache_content\",\"xf_permission_combination\",\"xf_permission_combination_user_group\",\"xf_permission_entry\",\"xf_permission_entry_content\",\"xf_permission_interface_group\"],\"registry\":[{\"bytes\":227,\"contains_GramSupport\":true,\"contains_gramSupport\":false,\"key\":\"addOns\",\"sha256\":\"04905462a275923fe321e4f49e860d2d70a60188687599b99064df8ef2627cfb\",\"top_level_keys\":[\"Gram/Support\",\"Newfi/Dogs\",\"Newfi/Events\",\"Newfi/Portal\",\"Workers2/PostboxPolicy\",\"XF\",\"XFMG\",\"XFRM\"]}],\"slug\":\"newfi\",\"staff\":[{\"cache_bytes\":4767,\"cache_has_gramSupport\":false,\"cache_sha256\":\"0e802df20b9d1147107c110d976767409217a7f5cd2bef66a89b8b7cb4547a47\",\"cache_top_level_keys\":[],\"combo_user_group_list\":\"2,3,4\",\"combo_user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\",\"gramSupport_cache\":null,\"is_admin\":true,\"is_moderator\":true,\"permission_combination_id_sha256\":\"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683\",\"primary_group_id\":2,\"secondary_group_ids\":\"3,4\",\"user_id_sha256\":\"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b\"}]}],\"schema_version\":1,\"scope\":\"READ_ONLY_GRAM_SUPPORT_PERMISSION_REGISTRY_AND_BUILDER_RCA\",\"site_count\":7,\"transport\":{\"vm160\":{\"guest_stderr_present\":false,\"inner_rc\":0,\"ok\":true,\"transport_rc\":0,\"transport_stderr_bytes\":0,\"transport_stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"},\"vm210\":{\"guest_stderr_present\":false,\"inner_rc\":0,\"ok\":true,\"transport_rc\":0,\"transport_stderr_bytes\":0,\"transport_stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"}}}\nGRAM515R2R1R1_DECISION=PASS_PERMISSION_REGISTRY_RCA_EVIDENCE_CAPTURED\nGRAM515R2R1R1_NEXT_GATE=REVIEW_EXACT_UPSTREAM_CACHE_OR_METADATA_FIX\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 93075a94..af41675e 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-515R2R1 -STATUS=FAIL -RC=1 +COMMAND_ID=SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1 +STATUS=OK +RC=0 HOST=pve01 MODE=read-only -COMPONENT=gram-support-permission-registry-rca +COMPONENT=gram-support-permission-registry-rca-boolfix REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=325172ba0d369dcfaf99973ef6c61e5f8558b496d7f47e4e766fa44ed64f23ce +COMMAND_SHA256=6991c6807b4dc54b75ca6a74d620d1e68656f1ea8f3c2574d67f92db41e023d1 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGE_DECLARED=false RESULT_CONTRACT_VALID=true RESULT_CONTRACT_STATUS=NOT_APPLICABLE RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=1 +COMMAND_RC=0 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,15 +24,13 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=5b5ba6c89c2b4c6be181ed7bde5c7ff8cbad27cdf16f43bc479ed3e4cd373ee5 -SANITIZED_OUTPUT_SHA256=5b5ba6c89c2b4c6be181ed7bde5c7ff8cbad27cdf16f43bc479ed3e4cd373ee5 +RAW_EVIDENCE_SHA256=481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382 +SANITIZED_OUTPUT_SHA256=481a4f5e8ba00730fd118882be842fecb9587e540050fc75c2e972a6394bc382 OUTPUT_BEGIN -Traceback (most recent call last): - File "", line 1, in - import base64;exec(compile(base64.b64decode("aW1wb3J0IG9zLHN5cyxqc29uLHN1YnByb2Nlc3MsaGFzaGxpYixiYXNlNjQKQ0lEPSdTVVBQT1JULTI2MDkxOC1HUkFNLVNVUFBPUlQtUEVSTUlTU0lPTi1SRUdJU1RSWS1SQ0EtNTE1UjJSMScKU0lURVM9W3sic2x1ZyI6ImNvZGV2aXBlIiwidm1pZCI6MTYwLCJob3N0IjoicHZlMDIiLCJwdWJsaWMiOiIvdmFyL3d3dy9mb3J1bXMvY29kZXZpcGUvcHVibGljIiwic2Nhbl9jb3JlIjp0cnVlfSx7InNsdWciOiJkc21vZHMiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9kc21vZHMvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoiZ2FtZXZpcGUiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9nYW1ldmlwZS9wdWJsaWMiLCJzY2FuX2NvcmUiOmZhbHNlfSx7InNsdWciOiJoa21vZHMiLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy9oa21vZHMvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoia2luZ29md29sayIsInZtaWQiOjE2MCwiaG9zdCI6InB2ZTAyIiwicHVibGljIjoiL3Zhci93d3cvZm9ydW1zL2tpbmdvZndvbGsvcHVibGljIiwic2Nhbl9jb3JlIjpmYWxzZX0seyJzbHVnIjoiemFrcnV0aW0iLCJ2bWlkIjoxNjAsImhvc3QiOiJwdmUwMiIsInB1YmxpYyI6Ii92YXIvd3d3L2ZvcnVtcy96YWtydXRpbS9wdWJsaWMiLCJzY2FuX2NvcmUiOmZhbHNlfSx7InNsdWciOiJuZXdmaSIsInZtaWQiOjIxMCwiaG9zdCI6InB2ZTAxIiwicHVibGljIjoiL3Zhci93d3cvZm9ydW1zL25ld2ZpL3B1YmxpYyIsInNjYW5fY29yZSI6dHJ1ZX1dCkdVRVNUPWJhc2U2NC5iNjRkZWNvZGUoJ0NtbHRjRzl5ZENCdmN5eHplWE1zYW5OdmJpeHpkV0p3Y205alpYTnpMSFJsYlhCbWFXeGxMR2hoYzJoc2FXSXNjbVVLWm5KdmJTQndZWFJvYkdsaUlHbHRjRzl5ZENCUVlYUm9DZ3B5WlhFOWFuTnZiaTVzYjJGa2N5aHplWE11YzNSa2FXNHVjbVZoWkNncEtRcHphWFJsY3oxeVpYRmJJbk5wZEdWeklsMEtjR2h3WDJOdlpHVTlKencvY0dod1hHNGtjbTl2ZEQwa1lYSm5kbHN4WFQ4L1hDZGNKenRjYmlSemJIVm5QU1JoY21kMld6SmRQejljSjF3bk8xeHVKRzkxZEQxYlhDZHpiSFZuWENjOVBpUnpiSFZuTEZ3bmIydGNKejArWm1Gc2MyVXNYQ2RsY25KdmNsd25QVDV1ZFd4c1hUdGNibHh1Wm5WdVkzUnBiMjRnWm1GcGJGOXZkWFFvSmlSdmRYUXNKRzBzSkhKalBUTXBYRzU3WEc0Z0lDQWdKRzkxZEZ0Y0oyVnljbTl5WENkZFBTUnRPMXh1SUNBZ0lHVmphRzhnYW5OdmJsOWxibU52WkdVb0pHOTFkQ3hLVTA5T1gxVk9SVk5EUVZCRlJGOVRURUZUU0VWVGZFcFRUMDVmVlU1RlUwTkJVRVZFWDFWT1NVTlBSRVVwTzF4dUlDQWdJR1Y0YVhRb0pISmpLVHRjYm4xY2JtWjFibU4wYVc5dUlITmhabVZmZFc1elpYSW9KSFlwWEc1N1hHNGdJQ0FnSkhnOVFIVnVjMlZ5YVdGc2FYcGxLQ1IyS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5mWVhKeVlYa29KSGdwUHlSNE9tNTFiR3c3WEc1OVhHNW1kVzVqZEdsdmJpQmhjbkpoZVY5clpYbHpYM052Y25SbFpDZ2tZU2xjYm50Y2JpQWdJQ0JwWmlnaGFYTmZZWEp5WVhrb0pHRXBLU0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdKR3M5WVhKeVlYbGZiV0Z3S0Z3bmMzUnlkbUZzWENjc1lYSnlZWGxmYTJWNWN5Z2tZU2twTzF4dUlDQWdJSE52Y25Rb0pHc3NVMDlTVkY5VFZGSkpUa2NwTzF4dUlDQWdJSEpsZEhWeWJpQWthenRjYm4xY2JseHVhV1lvSkhKdmIzUTlQVDFjSjF3bmZId2hhWE5mWm1sc1pTZ2tjbTl2ZEM1Y0p5OXpjbU12V0VZdWNHaHdYQ2NwS1NCbVlXbHNYMjkxZENna2IzVjBMRnduVWs5UFZGOUpUbFpCVEVsRVhDY3BPMXh1WEc1MGNubGNibnRjYmlBZ0lDQnlaWEYxYVhKbElDUnliMjkwTGx3bkwzTnlZeTlZUmk1d2FIQmNKenRjYmlBZ0lDQmNYRmhHT2pwemRHRnlkQ2drY205dmRDazdYRzRnSUNBZ0pHRndjRDFjWEZoR09qcHpaWFIxY0VGd2NDaGNKMWhHWEZ4RGJHbGNYRUZ3Y0Z3bktUdGNiaUFnSUNBa1pHSTlYRnhZUmpvNlpHSW9LVHRjYmx4dUlDQWdJQ1J2ZFhSYlhDZGhaR1J2Ymx3blhUMGtaR0l0UG1abGRHTm9VbTkzS0NKVFJVeEZRMVFnWVdOMGFYWmxMSFpsY25OcGIyNWZhV1FnUmxKUFRTQjRabDloWkdSdmJpQlhTRVZTUlNCaFpHUnZibDlwWkQxY0owZHlZVzB2VTNWd2NHOXlkRnduSWlrN1hHNWNiaUFnSUNBa2IzVjBXMXduY0dWeWJXbHpjMmx2Ymw5eWIzZHpYQ2RkUFNSa1lpMCtabVYwWTJoQmJHd29JbHh1SUNBZ0lDQWdVMFZNUlVOVUlIQmxjbTFwYzNOcGIyNWZhV1FzY0dWeWJXbHpjMmx2Ymw5bmNtOTFjRjlwWkN4d1pYSnRhWE56YVc5dVgzUjVjR1VzYVc1MFpYSm1ZV05sWDJkeWIzVndYMmxrTEdSbGNHVnVaRjl3WlhKdGFYTnphVzl1WDJsa0xHUnBjM0JzWVhsZmIzSmtaWElzWVdSa2IyNWZhV1JjYmlBZ0lDQWdJRVpTVDAwZ2VHWmZjR1Z5YldsemMybHZibHh1SUNBZ0lDQWdWMGhGVWtVZ2NHVnliV2x6YzJsdmJsOW5jbTkxY0Y5cFpEMWNKMmR5WVcxVGRYQndiM0owWENkY2JpQWdJQ0FnSUU5U1JFVlNJRUpaSUhCbGNtMXBjM05wYjI1ZmFXUmNiaUFnSUNBaUtUdGNibHh1SUNBZ0lDUnZkWFJiWENkd1pYSnRhWE56YVc5dVgyVnVkSEo1WDJOdmRXNTBjMXduWFQwa1pHSXRQbVpsZEdOb1FXeHNLQ0pjYmlBZ0lDQWdJRk5GVEVWRFZDQjFjMlZ5WDJkeWIzVndYMmxrTEhWelpYSmZhV1FzUTA5VlRsUW9LaWtnUVZNZ2NtOTNYMk52ZFc1MExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUZOVlRTaHdaWEp0YVhOemFXOXVYM1poYkhWbFBWd25ZV3hzYjNkY0p5a2dRVk1nWVd4c2IzZGZZMjkxYm5Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnVTFWTktIQmxjbTFwYzNOcGIyNWZkbUZzZFdVOVhDZHVaWFpsY2x3bktTQkJVeUJ1WlhabGNsOWpiM1Z1ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0JUVlUwb2NHVnliV2x6YzJsdmJsOTJZV3gxWlQxY0oyUmxibmxjSnlrZ1FWTWdaR1Z1ZVY5amIzVnVkRnh1SUNBZ0lDQWdSbEpQVFNCNFpsOXdaWEp0YVhOemFXOXVYMlZ1ZEhKNVhHNGdJQ0FnSUNCWFNFVlNSU0J3WlhKdGFYTnphVzl1WDJkeWIzVndYMmxrUFZ3blozSmhiVk4xY0hCdmNuUmNKMXh1SUNBZ0lDQWdSMUpQVlZBZ1Fsa2dkWE5sY2w5bmNtOTFjRjlwWkN4MWMyVnlYMmxrWEc0Z0lDQWdJQ0JQVWtSRlVpQkNXU0IxYzJWeVgybGtMSFZ6WlhKZlozSnZkWEJmYVdSY2JpQWdJQ0FpS1R0Y2JseHVJQ0FnSUNSMFlXSnNaWE05SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQlRSVXhGUTFRZ1ZFRkNURVZmVGtGTlJWeHVJQ0FnSUNBZ1JsSlBUU0JwYm1admNtMWhkR2x2Ymw5elkyaGxiV0V1VkVGQ1RFVlRYRzRnSUNBZ0lDQlhTRVZTUlNCVVFVSk1SVjlUUTBoRlRVRTlSRUZVUVVKQlUwVW9LU0JCVGtRZ1ZFRkNURVZmVGtGTlJTQk1TVXRGSUZ3bmVHWmZjR1Z5YldsemMybHZiaVZjSjF4dUlDQWdJQ0FnVDFKRVJWSWdRbGtnVkVGQ1RFVmZUa0ZOUlZ4dUlDQWdJQ0lwTzF4dUlDQWdJQ1J2ZFhSYlhDZHdaWEp0YVhOemFXOXVYM1JoWW14bGMxd25YVDFoY25KaGVWOXRZWEFvWm00b0pISXBQVDRvYzNSeWFXNW5LU1J5VzF3blZFRkNURVZmVGtGTlJWd25YU3drZEdGaWJHVnpLVHRjYmx4dUlDQWdJR2xtS0dsdVgyRnljbUY1S0Z3bmVHWmZjR1Z5YldsemMybHZibDlwYm5SbGNtWmhZMlZmWjNKdmRYQmNKeXdrYjNWMFcxd25jR1Z5YldsemMybHZibDkwWVdKc1pYTmNKMTBzZEhKMVpTa3BYRzRnSUNBZ2UxeHVJQ0FnSUNBZ0lDQWtiM1YwVzF3bmFXNTBaWEptWVdObFgyZHliM1Z3WDNKdmQzTmNKMTA5SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQWdJQ0FnVTBWTVJVTlVJQ29nUmxKUFRTQjRabDl3WlhKdGFYTnphVzl1WDJsdWRHVnlabUZqWlY5bmNtOTFjRnh1SUNBZ0lDQWdJQ0FnSUZkSVJWSkZJR2x1ZEdWeVptRmpaVjluY205MWNGOXBaRDFjSjJkeVlXMVRkWEJ3YjNKMFhDZGNiaUFnSUNBZ0lDQWdJaWs3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnSkc5MWRGdGNKMmx1ZEdWeVptRmpaVjluY205MWNGOXliM2R6WENkZFBWdGRPMXh1WEc0Z0lDQWdKSE4wWVdabVBTUmtZaTArWm1WMFkyaEJiR3dvSWx4dUlDQWdJQ0FnVTBWTVJVTlVJSFZ6WlhKZmFXUXNkWE5sY2w5bmNtOTFjRjlwWkN4elpXTnZibVJoY25sZlozSnZkWEJmYVdSekxHbHpYMkZrYldsdUxHbHpYMjF2WkdWeVlYUnZjaXh3WlhKdGFYTnphVzl1WDJOdmJXSnBibUYwYVc5dVgybGtYRzRnSUNBZ0lDQkdVazlOSUhobVgzVnpaWEpjYmlBZ0lDQWdJRmRJUlZKRklHbHpYMkZrYldsdVBURWdUMUlnYVhOZmJXOWtaWEpoZEc5eVBURmNiaUFnSUNBZ0lFOVNSRVZTSUVKWklIVnpaWEpmYVdSY2JpQWdJQ0FpS1R0Y2JpQWdJQ0FrYjNWMFcxd25jM1JoWm1aY0oxMDlXMTA3WEc0Z0lDQWdabTl5WldGamFDZ2tjM1JoWm1ZZ1lYTWdKSFVwWEc0Z0lDQWdlMXh1SUNBZ0lDQWdJQ0FrWTI5dFltODlKR1JpTFQ1bVpYUmphRkp2ZHlnaVhHNGdJQ0FnSUNBZ0lDQWdVMFZNUlVOVUlIQmxjbTFwYzNOcGIyNWZZMjl0WW1sdVlYUnBiMjVmYVdRc2RYTmxjbDlwWkN4MWMyVnlYMmR5YjNWd1gyeHBjM1FzWTJGamFHVmZkbUZzZFdWY2JpQWdJQ0FnSUNBZ0lDQkdVazlOSUhobVgzQmxjbTFwYzNOcGIyNWZZMjl0WW1sdVlYUnBiMjVjYmlBZ0lDQWdJQ0FnSUNCWFNFVlNSU0J3WlhKdGFYTnphVzl1WDJOdmJXSnBibUYwYVc5dVgybGtQVDljYmlBZ0lDQWdJQ0FnSWl3a2RWdGNKM0JsY20xcGMzTnBiMjVmWTI5dFltbHVZWFJwYjI1ZmFXUmNKMTBwTzF4dUlDQWdJQ0FnSUNBa1kyRmphR1U5SkdOdmJXSnZQM05oWm1WZmRXNXpaWElvS0hOMGNtbHVaeWtrWTI5dFltOWJYQ2RqWVdOb1pWOTJZV3gxWlZ3blhTazZiblZzYkR0Y2JpQWdJQ0FnSUNBZ0pHOTFkRnRjSjNOMFlXWm1YQ2RkVzEwOVcxeHVJQ0FnSUNBZ0lDQWdJRnduZFhObGNsOXBaRjl6YUdFeU5UWmNKejArYUdGemFDaGNKM05vWVRJMU5sd25MQ2h6ZEhKcGJtY3BKSFZiWENkMWMyVnlYMmxrWENkZEtTeGNiaUFnSUNBZ0lDQWdJQ0JjSjNCeWFXMWhjbmxmWjNKdmRYQmZhV1JjSnowK0tHbHVkQ2trZFZ0Y0ozVnpaWEpmWjNKdmRYQmZhV1JjSjEwc1hHNGdJQ0FnSUNBZ0lDQWdYQ2R6WldOdmJtUmhjbmxmWjNKdmRYQmZhV1J6WENjOVBpaHpkSEpwYm1jcEpIVmJYQ2R6WldOdmJtUmhjbmxmWjNKdmRYQmZhV1J6WENkZExGeHVJQ0FnSUNBZ0lDQWdJRnduYVhOZllXUnRhVzVjSnowK0tHSnZiMndwSkhWYlhDZHBjMTloWkcxcGJsd25YU3hjYmlBZ0lDQWdJQ0FnSUNCY0oybHpYMjF2WkdWeVlYUnZjbHduUFQ0b1ltOXZiQ2trZFZ0Y0oybHpYMjF2WkdWeVlYUnZjbHduWFN4Y2JpQWdJQ0FnSUNBZ0lDQmNKM0JsY20xcGMzTnBiMjVmWTI5dFltbHVZWFJwYjI1ZmFXUmZjMmhoTWpVMlhDYzlQbWhoYzJnb1hDZHphR0V5TlRaY0p5d29jM1J5YVc1bktTUjFXMXduY0dWeWJXbHpjMmx2Ymw5amIyMWlhVzVoZEdsdmJsOXBaRnduWFNrc1hHNGdJQ0FnSUNBZ0lDQWdYQ2RqYjIxaWIxOTFjMlZ5WDJsa1gzTm9ZVEkxTmx3blBUNGtZMjl0WW04L2FHRnphQ2hjSjNOb1lUSTFObHduTENoemRISnBibWNwSkdOdmJXSnZXMXduZFhObGNsOXBaRnduWFNrNmJuVnNiQ3hjYmlBZ0lDQWdJQ0FnSUNCY0oyTnZiV0p2WDNWelpYSmZaM0p2ZFhCZmJHbHpkRnduUFQ0a1kyOXRZbTgvS0hOMGNtbHVaeWtrWTI5dFltOWJYQ2QxYzJWeVgyZHliM1Z3WDJ4cGMzUmNKMTA2Ym5Wc2JDeGNiaUFnSUNBZ0lDQWdJQ0JjSjJOaFkyaGxYMko1ZEdWelhDYzlQaVJqYjIxaWJ6OXpkSEpzWlc0b0tITjBjbWx1Wnlra1kyOXRZbTliWENkallXTm9aVjkyWVd4MVpWd25YU2s2TUN4Y2JpQWdJQ0FnSUNBZ0lDQmNKMk5oWTJobFgzTm9ZVEkxTmx3blBUNGtZMjl0WW04L2FHRnphQ2hjSjNOb1lUSTFObHduTENoemRISnBibWNwSkdOdmJXSnZXMXduWTJGamFHVmZkbUZzZFdWY0oxMHBPbTUxYkd3c1hHNGdJQ0FnSUNBZ0lDQWdYQ2RqWVdOb1pWOTBiM0JmYkdWMlpXeGZhMlY1YzF3blBUNWhjbkpoZVY5clpYbHpYM052Y25SbFpDZ2tZMkZqYUdVcExGeHVJQ0FnSUNBZ0lDQWdJRnduWTJGamFHVmZhR0Z6WDJkeVlXMVRkWEJ3YjNKMFhDYzlQbWx6WDJGeWNtRjVLQ1JqWVdOb1pTa21KbWx6YzJWMEtDUmpZV05vWlZ0Y0oyZHlZVzFUZFhCd2IzSjBYQ2RkS1NZbWFYTmZZWEp5WVhrb0pHTmhZMmhsVzF3blozSmhiVk4xY0hCdmNuUmNKMTBwTEZ4dUlDQWdJQ0FnSUNBZ0lGd25aM0poYlZOMWNIQnZjblJmWTJGamFHVmNKejArYVhOZllYSnlZWGtvSkdOaFkyaGxLU1ltYVhOelpYUW9KR05oWTJobFcxd25aM0poYlZOMWNIQnZjblJjSjEwcEppWnBjMTloY25KaGVTZ2tZMkZqYUdWYlhDZG5jbUZ0VTNWd2NHOXlkRnduWFNrL0pHTmhZMmhsVzF3blozSmhiVk4xY0hCdmNuUmNKMTA2Ym5Wc2JGeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUnlaV2RwYzNSeWVWSnZkM005SkdSaUxUNW1aWFJqYUVGc2JDZ2lYRzRnSUNBZ0lDQlRSVXhGUTFRZ1pHRjBZVjlyWlhrc1pHRjBZVjkyWVd4MVpWeHVJQ0FnSUNBZ1JsSlBUU0I0Wmw5a1lYUmhYM0psWjJsemRISjVYRzRnSUNBZ0lDQlhTRVZTUlNCa1lYUmhYMnRsZVNCTVNVdEZJRnduSlhCbGNtMXBjM05wYjI0bFhDZGNiaUFnSUNBZ0lDQWdJRTlTSUdSaGRHRmZhMlY1SUV4SlMwVWdYQ2NsVUdWeWJXbHpjMmx2YmlWY0oxeHVJQ0FnSUNBZ0lDQWdUMUlnWkdGMFlWOXJaWGtnU1U0Z0tGd25ZV04wYVhabFFXUmtUMjV6WENjc1hDZGhaR1JQYm5OY0p5bGNiaUFnSUNBZ0lFOVNSRVZTSUVKWklHUmhkR0ZmYTJWNVhHNGdJQ0FnSWlrN1hHNGdJQ0FnSkc5MWRGdGNKM0psWjJsemRISjVYQ2RkUFZ0ZE8xeHVJQ0FnSUdadmNtVmhZMmdvSkhKbFoybHpkSEo1VW05M2N5QmhjeUFrY2lsY2JpQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNSMllXdzlLSE4wY21sdVp5a2tjbHRjSjJSaGRHRmZkbUZzZFdWY0oxMDdYRzRnSUNBZ0lDQWdJQ1JoY25JOWMyRm1aVjkxYm5ObGNpZ2tkbUZzS1R0Y2JpQWdJQ0FnSUNBZ0pHOTFkRnRjSjNKbFoybHpkSEo1WENkZFcxMDlXMXh1SUNBZ0lDQWdJQ0FnSUZ3bmEyVjVYQ2M5UGloemRISnBibWNwSkhKYlhDZGtZWFJoWDJ0bGVWd25YU3hjYmlBZ0lDQWdJQ0FnSUNCY0oySjVkR1Z6WENjOVBuTjBjbXhsYmlna2RtRnNLU3hjYmlBZ0lDQWdJQ0FnSUNCY0ozTm9ZVEkxTmx3blBUNW9ZWE5vS0Z3bmMyaGhNalUyWENjc0pIWmhiQ2tzWEc0Z0lDQWdJQ0FnSUNBZ1hDZGpiMjUwWVdsdWMxOW5jbUZ0VTNWd2NHOXlkRnduUFQ0b2MzUnljRzl6S0NSMllXd3NYQ2RuY21GdFUzVndjRzl5ZEZ3bktTRTlQV1poYkhObEtTeGNiaUFnSUNBZ0lDQWdJQ0JjSjJOdmJuUmhhVzV6WDBkeVlXMVRkWEJ3YjNKMFhDYzlQaWh6ZEhKd2IzTW9KSFpoYkN4Y0owZHlZVzB2VTNWd2NHOXlkRnduS1NFOVBXWmhiSE5sS1N4Y2JpQWdJQ0FnSUNBZ0lDQmNKM1J2Y0Y5c1pYWmxiRjlyWlhselhDYzlQbUZ5Y21GNVgzTnNhV05sS0dGeWNtRjVYMnRsZVhOZmMyOXlkR1ZrS0NSaGNuSXBMREFzTVRBd0tWeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUmhaR1J2YmtScGNqMGtjbTl2ZEM1Y0p5OXpjbU12WVdSa2IyNXpMMGR5WVcwdlUzVndjRzl5ZEM5ZlpHRjBZVnduTzF4dUlDQWdJQ1J2ZFhSYlhDZGhaR1J2Ymw5d1pYSnRhWE56YVc5dVgyUmhkR0ZmWm1sc1pYTmNKMTA5VzEwN1hHNGdJQ0FnWm05eVpXRmphQ2hiWENkd1pYSnRhWE56YVc5dWN5NTRiV3hjSnl4Y0ozQmxjbTFwYzNOcGIyNWZhVzUwWlhKbVlXTmxYMmR5YjNWd2N5NTRiV3hjSjEwZ1lYTWdKR1lwWEc0Z0lDQWdlMXh1SUNBZ0lDQWdJQ0FrY0Qwa1lXUmtiMjVFYVhJdVhDY3ZYQ2N1SkdZN1hHNGdJQ0FnSUNBZ0lDUnZkWFJiWENkaFpHUnZibDl3WlhKdGFYTnphVzl1WDJSaGRHRmZabWxzWlhOY0oxMWJKR1pkUFZ0Y2JpQWdJQ0FnSUNBZ0lDQmNKM0J5WlhObGJuUmNKejArYVhOZlptbHNaU2drY0Nrc1hHNGdJQ0FnSUNBZ0lDQWdYQ2RpZVhSbGMxd25QVDVwYzE5bWFXeGxLQ1J3S1Q5bWFXeGxjMmw2WlNna2NDazZNQ3hjYmlBZ0lDQWdJQ0FnSUNCY0ozTm9ZVEkxTmx3blBUNXBjMTltYVd4bEtDUndLVDlvWVhOb1gyWnBiR1VvWENkemFHRXlOVFpjSnl3a2NDazZiblZzYkN4Y2JpQWdJQ0FnSUNBZ0lDQmNKMk52Ym5SaGFXNXpYMmR5WVcxVGRYQndiM0owWENjOVBtbHpYMlpwYkdVb0pIQXBQeWh6ZEhKd2IzTW9LSE4wY21sdVp5bG1hV3hsWDJkbGRGOWpiMjUwWlc1MGN5Z2tjQ2tzWENkbmNtRnRVM1Z3Y0c5eWRGd25LU0U5UFdaaGJITmxLVHBtWVd4elpWeHVJQ0FnSUNBZ0lDQmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDUnZkWFJiWENkdmExd25YVDEwY25WbE8xeHVJQ0FnSUdWamFHOGdhbk52Ymw5bGJtTnZaR1VvSkc5MWRDeEtVMDlPWDFWT1JWTkRRVkJGUkY5VFRFRlRTRVZUZkVwVFQwNWZWVTVGVTBOQlVFVkVYMVZPU1VOUFJFVXBPMXh1SUNBZ0lHVjRhWFFvTUNrN1hHNTlYRzVqWVhSamFDaFVhSEp2ZDJGaWJHVWdKR1VwWEc1N1hHNGdJQ0FnWm1GcGJGOXZkWFFvSkc5MWRDeGNKMFZZUTBWUVZFbFBUbDljSnk1d2NtVm5YM0psY0d4aFkyVW9YQ2N2VzE1QkxWcGhMWG93TFRsZlhTOWNKeXhjSjE5Y0p5eG5aWFJmWTJ4aGMzTW9KR1VwS1NrN1hHNTlYRzRuQ2dwa1pXWWdjMmhoS0dJcE9pQnlaWFIxY200Z2FHRnphR3hwWWk1emFHRXlOVFlvWWlrdWFHVjRaR2xuWlhOMEtDa0tDbVJsWmlCeWRXNG9ZWEpuZGl4MGFXMWxiM1YwUFRFeU1DazZDaUFnSUNCMGNuazZDaUFnSUNBZ0lDQWdjRDF6ZFdKd2NtOWpaWE56TG5KMWJpaGhjbWQyTEhOMFpHOTFkRDF6ZFdKd2NtOWpaWE56TGxCSlVFVXNjM1JrWlhKeVBYTjFZbkJ5YjJObGMzTXVVRWxRUlN4MGFXMWxiM1YwUFhScGJXVnZkWFFzWTJobFkyczlSbUZzYzJVcENpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhBdWNtVjBkWEp1WTI5a1pTeHdMbk4wWkc5MWRDeHdMbk4wWkdWeWNnb2dJQ0FnWlhoalpYQjBJSE4xWW5CeWIyTmxjM011VkdsdFpXOTFkRVY0Y0dseVpXUTZDaUFnSUNBZ0lDQWdjbVYwZFhKdUlERXlOQ3hpSWlJc1lpSlVTVTFGVDFWVUlnb0taR1ZtSUhOdmRYSmpaVjl6WTJGdUtISnZiM1FwT2dvZ0lDQWdkR0Z5WjJWMGN6MWJDaUFnSUNBZ0lDQWdVR0YwYUNoeWIyOTBLUzhpYzNKakwxaEdMMHB2WWk5UVpYSnRhWE56YVc5dVVtVmlkV2xzWkM1d2FIQWlMQW9nSUNBZ0lDQWdJRkJoZEdnb2NtOXZkQ2t2SW5OeVl5OVlSaTlRWlhKdGFYTnphVzl1SWl3S0lDQWdJQ0FnSUNCUVlYUm9LSEp2YjNRcEx5SnpjbU12V0VZdlVtVndiM05wZEc5eWVTSXNDaUFnSUNBZ0lDQWdVR0YwYUNoeWIyOTBLUzhpYzNKakwxaEdMMFZ1ZEdsMGVTSXNDaUFnSUNCZENpQWdJQ0J3WVhSelBYSmxMbU52YlhCcGJHVW9jaUlvVUdWeWJXbHpjMmx2YmxKbFluVnBiR1I4Y0dWeWJXbHpjMmx2Ymw5amIyMWlhVzVoZEdsdmJueHdaWEp0YVhOemFXOXVRMkZqYUdWOGNHVnliV2x6YzJsdmJpQmpZV05vWlh4aWRXbHNaRkJsY20xcGMzTnBiMjU4Y21WaWRXbHNaRkJsY20xcGMzTnBiMjU4WjJ4dlltRnNVR1Z5YldsemMybHZibnh3WlhKdGFYTnphVzl1WDJWdWRISjVmSEJsY20xcGMzTnBiMjVmYVc1MFpYSm1ZV05sWDJkeWIzVndmR1JoZEdGU1pXZHBjM1J5ZVh4eVpXZHBjM1J5ZVNraUxISmxMa2twQ2lBZ0lDQnliM2R6UFZ0ZENpQWdJQ0JtYVd4bGN6MWJYUW9nSUNBZ1ptOXlJSFFnYVc0Z2RHRnlaMlYwY3pvS0lDQWdJQ0FnSUNCcFppQjBMbWx6WDJacGJHVW9LVG9LSUNBZ0lDQWdJQ0FnSUNBZ1ptbHNaWE11WVhCd1pXNWtLSFFwQ2lBZ0lDQWdJQ0FnWld4cFppQjBMbWx6WDJScGNpZ3BPZ29nSUNBZ0lDQWdJQ0FnSUNCbWIzSWdjQ0JwYmlCemIzSjBaV1FvZEM1eVoyeHZZaWdpS2k1d2FIQWlLU2s2Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjNjOWMzUnlLSEFwTG14dmQyVnlLQ2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNKd1pYSnRhWE56YVc5dUlpQnBiaUJzYjNjZ2IzSWdJblZ6WlhJdWNHaHdJaUJwYmlCc2IzYzZDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1sc1pYTXVZWEJ3Wlc1a0tIQXBDaUFnSUNCelpXVnVQWE5sZENncENpQWdJQ0JtYjNJZ2NDQnBiaUJtYVd4bGN6b0tJQ0FnSUNBZ0lDQnpjRDF6ZEhJb2NDa0tJQ0FnSUNBZ0lDQnBaaUJ6Y0NCcGJpQnpaV1Z1T2lCamIyNTBhVzUxWlFvZ0lDQWdJQ0FnSUhObFpXNHVZV1JrS0hOd0tRb2dJQ0FnSUNBZ0lIUnllVG9LSUNBZ0lDQWdJQ0FnSUNBZ2JHbHVaWE05Y0M1eVpXRmtYM1JsZUhRb0luVjBaaTA0SWl4bGNuSnZjbk05SW5KbGNHeGhZMlVpS1M1emNHeHBkR3hwYm1WektDa0tJQ0FnSUNBZ0lDQmxlR05sY0hRZ1JYaGpaWEIwYVc5dU9nb2dJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaUW9nSUNBZ0lDQWdJR1p2Y2lCcExHeHBibVVnYVc0Z1pXNTFiV1Z5WVhSbEtHeHBibVZ6TERFcE9nb2dJQ0FnSUNBZ0lDQWdJQ0JwWmlCd1lYUnpMbk5sWVhKamFDaHNhVzVsS1RvS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNGREMGlJQ0l1YW05cGJpaHNhVzVsTG5OMGNtbHdLQ2t1YzNCc2FYUW9LU2tLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUd4bGJpaDBlSFFwUGpNMk1Eb2dkSGgwUFhSNGRGczZNell3WFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY205M2N5NWhjSEJsYm1Rb2V5SndZWFJvSWpwemRISW9jQzV5Wld4aGRHbDJaVjkwYnloeWIyOTBLU2tzSW14cGJtVWlPbWtzSW5SbGVIUWlPblI0ZEgwcENpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQnNaVzRvY205M2N5aytQVEkyTURvZ2NtVjBkWEp1SUhKdmQzTUtJQ0FnSUhKbGRIVnliaUJ5YjNkekNncG1aQ3h3WVhSb1BYUmxiWEJtYVd4bExtMXJjM1JsYlhBb2NISmxabWw0UFNKbmNtRnROVEUxY2pKeU1TMGlMSE4xWm1acGVEMGlMbkJvY0NJcE95QnZjeTVqYkc5elpTaG1aQ2tLVUdGMGFDaHdZWFJvS1M1M2NtbDBaVjkwWlhoMEtIQm9jRjlqYjJSbExHVnVZMjlrYVc1blBTSjFkR1l0T0NJcE95QnZjeTVqYUcxdlpDaHdZWFJvTERCdk5qQXdLUXB5YjNkelBWdGRDblJ5ZVRvS0lDQWdJR1p2Y2lCeklHbHVJSE5wZEdWek9nb2dJQ0FnSUNBZ0lIQTljM1ZpY0hKdlkyVnpjeTV5ZFc0b0NpQWdJQ0FnSUNBZ0lDQWdJRnNpTDNWemNpOWlhVzR2Y0dod0lpd2lMV1FpTENKa2FYTndiR0Y1WDJWeWNtOXljejB3SWl4d1lYUm9MSE5iSW5CMVlteHBZeUpkTEhOYkluTnNkV2NpWFYwc0NpQWdJQ0FnSUNBZ0lDQWdJSE4wWkc5MWREMXpkV0p3Y205alpYTnpMbEJKVUVVc2MzUmtaWEp5UFhOMVluQnliMk5sYzNNdVVFbFFSU3gwYVcxbGIzVjBQVEV5TUN4amFHVmphejFHWVd4elpRb2dJQ0FnSUNBZ0lDa0tJQ0FnSUNBZ0lDQnliM2M5ZXlKemJIVm5JanB6V3lKemJIVm5JbDBzSW5KaklqcHdMbkpsZEhWeWJtTnZaR1VzSW5OMFpHVnljbDl6YUdFeU5UWWlPbk5vWVNod0xuTjBaR1Z5Y2lrc0luTjBaR1Z5Y2w5aWVYUmxjeUk2YkdWdUtIQXVjM1JrWlhKeUtYMEtJQ0FnSUNBZ0lDQjBjbms2SUhKdmQxc2laR0lpWFQxcWMyOXVMbXh2WVdSektIQXVjM1JrYjNWMExtUmxZMjlrWlNnaWRYUm1MVGdpTENKemRISnBZM1FpS1NrS0lDQWdJQ0FnSUNCbGVHTmxjSFFnUlhoalpYQjBhVzl1SUdGeklHVTZDaUFnSUNBZ0lDQWdJQ0FnSUhKdmQxc2ljR0Z5YzJWZlpYSnliM0lpWFQxMGVYQmxLR1VwTGw5ZmJtRnRaVjlmTzNKdmQxc2ljM1JrYjNWMFgzTm9ZVEkxTmlKZFBYTm9ZU2h3TG5OMFpHOTFkQ2tLSUNBZ0lDQWdJQ0JwWmlCekxtZGxkQ2dpYzJOaGJsOWpiM0psSWlrNkNpQWdJQ0FnSUNBZ0lDQWdJSEp2ZDFzaVkyOXlaVjl6WTJGdUlsMDljMjkxY21ObFgzTmpZVzRvYzFzaWNIVmliR2xqSWwwcENpQWdJQ0FnSUNBZ2NtOTNjeTVoY0hCbGJtUW9jbTkzS1FwbWFXNWhiR3g1T2dvZ0lDQWdkSEo1T2lCdmN5NTFibXhwYm1zb2NHRjBhQ2tLSUNBZ0lHVjRZMlZ3ZENCRmVHTmxjSFJwYjI0NklIQmhjM01LY0hKcGJuUW9hbk52Ymk1a2RXMXdjeWg3SW5KdmQzTWlPbkp2ZDNOOUxHVnVjM1Z5WlY5aGMyTnBhVDFVY25WbExITnZjblJmYTJWNWN6MVVjblZsTEhObGNHRnlZWFJ2Y25NOUtDSXNJaXdpT2lJcEtTa0snKQoKZGVmIHNoYShiKTogcmV0dXJuIGhhc2hsaWIuc2hhMjU2KGIpLmhleGRpZ2VzdCgpCmRlZiBydW4oYXJndixzdGRpbj1iIiIsdGltZW91dD0yMjApOgogICAgdHJ5OgogICAgICAgIHA9c3VicHJvY2Vzcy5ydW4oYXJndixpbnB1dD1zdGRpbixzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0LGNoZWNrPUZhbHNlLGVudj17Kipvcy5lbnZpcm9uLCJMQ19BTEwiOiJDIn0pCiAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSxwLnN0ZG91dCxwLnN0ZGVycgogICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6IHJldHVybiAxMjQsYiIiLGIiVElNRU9VVCIKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmV0dXJuIDEyNSxiIiIsdHlwZShlKS5fX25hbWVfXy5lbmNvZGUoKQpkZWYgcGFyc2VfcWdhKHJjLG91dCxlcnIpOgogICAgej17InRyYW5zcG9ydF9yYyI6cmMsInRyYW5zcG9ydF9zdGRlcnJfc2hhMjU2IjpzaGEoZXJyKSwidHJhbnNwb3J0X3N0ZGVycl9ieXRlcyI6bGVuKGVycil9CiAgICBpZiByYyE9MDogelsib2siXT1GYWxzZTsgcmV0dXJuIHoKICAgIHRyeTogZG9jPWpzb24ubG9hZHMob3V0LmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogelsib2siXT1GYWxzZTt6WyJlcnJvciJdPSJRR0FfSlNPTl8iK3R5cGUoZSkuX19uYW1lX187cmV0dXJuIHoKICAgIGlmIGRvYy5nZXQoIm91dC10cnVuY2F0ZWQiKSBvciBkb2MuZ2V0KCJlcnItdHJ1bmNhdGVkIik6IHpbIm9rIl09RmFsc2U7elsiZXJyb3IiXT0iUUdBX1RSVU5DQVRFRCI7cmV0dXJuIHoKICAgIHpbImlubmVyX3JjIl09ZG9jLmdldCgiZXhpdGNvZGUiKTt6WyJndWVzdF9zdGRlcnJfcHJlc2VudCJdPWJvb2woZG9jLmdldCgiZXJyLWRhdGEiKSkKICAgIHRyeToKICAgICAgICB6WyJyZXBvcnQiXT1qc29uLmxvYWRzKGRvYy5nZXQoIm91dC1kYXRhIiwiIikpO3pbIm9rIl09KGRvYy5nZXQoImV4aXRjb2RlIik9PTApCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6IHpbIm9rIl09RmFsc2U7elsiZXJyb3IiXT0iR1VFU1RfSlNPTl8iK3R5cGUoZSkuX19uYW1lX18KICAgIHJldHVybiB6CmRlZiBwYXlsb2FkKHNzKToKICAgIGQ9anNvbi5kdW1wcyh7InNpdGVzIjpzc30sc2VwYXJhdG9ycz0oIiwiLCI6IikpCiAgICByZXR1cm4gKCJpbXBvcnQgYmFzZTY0LHN5cyxpbztzeXMuc3RkaW49aW8uU3RyaW5nSU8oIityZXByKGQpKyIpO2V4ZWMoY29tcGlsZShiYXNlNjQuYjY0ZGVjb2RlKCIrcmVwcihiYXNlNjQuYjY0ZW5jb2RlKEdVRVNUKS5kZWNvZGUoKSkrIiksJzxnPicsJ2V4ZWMnKSkiKS5lbmNvZGUoKQpkZWYgcWdhX3B2ZTAyKHNzKToKICAgIGd1YXJkPSd0ZXN0ICIkKGlkIC11KTokKGhvc3RuYW1lIC1zKSIgPSAwOnB2ZTAyIHx8IGV4aXQgNzI7IGV4ZWMgL3Vzci9zYmluL3FtIGd1ZXN0IGV4ZWMgMTYwIC0tc3luY2hyb25vdXMgMSAtLXRpbWVvdXQgMTkwIC0tcGFzcy1zdGRpbiAxIC0tIC91c3IvYmluL3B5dGhvbjMgLUkgLUIgLScKICAgIHJjLG91dCxlcnI9cnVuKFsiL3Vzci9iaW4vc3NoIiwiLVQiLCItbyIsIkJhdGNoTW9kZT15ZXMiLCItbyIsIlN0cmljdEhvc3RLZXlDaGVja2luZz15ZXMiLCItbyIsIkNvbm5lY3RUaW1lb3V0PTgiLCJyb290QHB2ZTAyIixndWFyZF0scGF5bG9hZChzcyksMjE1KQogICAgcmV0dXJuIHBhcnNlX3FnYShyYyxvdXQsZXJyKQpkZWYgcWdhX2xvY2FsKHNzKToKICAgIHJjLG91dCxlcnI9cnVuKFsiL3Vzci9zYmluL3FtIiwiZ3Vlc3QiLCJleGVjIiwiMjEwIiwiLS1zeW5jaHJvbm91cyIsIjEiLCItLXRpbWVvdXQiLCIxOTAiLCItLXBhc3Mtc3RkaW4iLCIxIiwiLS0iLCIvdXNyL2Jpbi9weXRob24zIiwiLUkiLCItQiIsIi0iXSxwYXlsb2FkKHNzKSwyMTUpCiAgICByZXR1cm4gcGFyc2VfcWdhKHJjLG91dCxlcnIpCgppZiBvcy5nZXRldWlkKCkhPTAgb3Igb3MudW5hbWUoKS5ub2RlbmFtZS5zcGxpdCgiLiIpWzBdIT0icHZlMDEiOgogICAgcHJpbnQoIkdSQU01MTVSMlIxX0RFQ0lTSU9OPUZBSUxfRVhQRUNURURfUk9PVF9QVkUwMSIpCiAgICBwcmludCgiSE9NRUxBQl9SRVNVTFRfQ09OVFJBQ1Q9Iitqc29uLmR1bXBzKHsidmVyc2lvbiI6MSwiY29tbWFuZF9pZCI6Q0lELCJzdGF0dXMiOiJGQUlMIiwiY2hhbmdlc19tYWRlIjpGYWxzZSwicm9sbGJhY2tfc3RhcnRlZCI6RmFsc2UsInJvbGxiYWNrX3Jlc3RvcmVkIjpOb25lfSxzZXBhcmF0b3JzPSgiLCIsIjoiKSkpCiAgICByYWlzZSBTeXN0ZW1FeGl0KDMpCgphPXFnYV9wdmUwMihbeCBmb3IgeCBpbiBTSVRFUyBpZiB4WyJ2bWlkIl09PTE2MF0pCmI9cWdhX2xvY2FsKFt4IGZvciB4IGluIFNJVEVTIGlmIHhbInZtaWQiXT09MjEwXSkKcm93cz1bXQpmb3IgcGFydCBpbiAoYSxiKToKICAgIGlmIHBhcnQuZ2V0KCJvayIpIGFuZCBpc2luc3RhbmNlKHBhcnQuZ2V0KCJyZXBvcnQiKSxkaWN0KTogcm93cy5leHRlbmQocGFydFsicmVwb3J0Il0uZ2V0KCJyb3dzIikgb3IgW10pCgpzaXRlNz0obGVuKHJvd3MpPT03KQpkYjc9c2l0ZTcgYW5kIGFsbCh4LmdldCgicmMiKT09MCBhbmQgKHguZ2V0KCJkYiIpIG9yIHt9KS5nZXQoIm9rIikgaXMgVHJ1ZSBmb3IgeCBpbiByb3dzKQphbGxfcGVybTk9ZGI3IGFuZCBhbGwobGVuKCh4WyJkYiJdLmdldCgicGVybWlzc2lvbl9yb3dzIikgb3IgW10pKT09OSBmb3IgeCBpbiByb3dzKQphbGxfY29tYm9fbm9fZ3JhbT1kYjcgYW5kIGFsbChhbGwobm90IHMuZ2V0KCJjYWNoZV9oYXNfZ3JhbVN1cHBvcnQiKSBmb3IgcyBpbiAoeFsiZGIiXS5nZXQoInN0YWZmIikgb3IgW10pKSBmb3IgeCBpbiByb3dzKQppZmFjZV9zdGF0ZT1beyJzbHVnIjp4LmdldCgic2x1ZyIpLCJyb3dzIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgiaW50ZXJmYWNlX2dyb3VwX3Jvd3MiKSBvciBbXX0gZm9yIHggaW4gcm93c10KcmVnaXN0cnk9W3sic2x1ZyI6eC5nZXQoInNsdWciKSwicmVnaXN0cnkiOih4LmdldCgiZGIiKSBvciB7fSkuZ2V0KCJyZWdpc3RyeSIpIG9yIFtdLCJwZXJtaXNzaW9uX3RhYmxlcyI6KHguZ2V0KCJkYiIpIG9yIHt9KS5nZXQoInBlcm1pc3Npb25fdGFibGVzIikgb3IgW10sInN0YWZmIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgic3RhZmYiKSBvciBbXSwiYWRkb25fcGVybWlzc2lvbl9kYXRhX2ZpbGVzIjooeC5nZXQoImRiIikgb3Ige30pLmdldCgiYWRkb25fcGVybWlzc2lvbl9kYXRhX2ZpbGVzIikgb3Ige319IGZvciB4IGluIHJvd3NdCmNvcmVfc2NhbnM9W3sic2x1ZyI6eC5nZXQoInNsdWciKSwiY29yZV9zY2FuIjp4LmdldCgiY29yZV9zY2FuIikgb3IgW119IGZvciB4IGluIHJvd3MgaWYgeC5nZXQoImNvcmVfc2NhbiIpIGlzIG5vdCBOb25lXQoKcmVwb3J0PXsKICJzY2hlbWFfdmVyc2lvbiI6MSwKICJzY29wZSI6IlJFQURfT05MWV9HUkFNX1NVUFBPUlRfUEVSTUlTU0lPTl9SRUdJU1RSWV9BTkRfQlVJTERFUl9SQ0EiLAogInNpdGVfY291bnQiOmxlbihyb3dzKSwKICJjbGFzc2lmaWNhdGlvbiI6ewogICAic2l0ZV9jb3VudF83IjpzaXRlNywKICAgImRiX3Byb2JlXzdvZjciOmRiNywKICAgInBlcm1pc3Npb25fZGVmc185XzdvZjciOmFsbF9wZXJtOSwKICAgInN0YWZmX2NhY2hlX21pc3NpbmdfZ3JhbVN1cHBvcnRfN29mNyI6YWxsX2NvbWJvX25vX2dyYW0sCiAgICJjaGFuZ2VzX21hZGUiOkZhbHNlLAogICAic2VuZF9hdHRlbXB0cyI6MAogfSwKICJpbnRlcmZhY2VfZ3JvdXBfc3RhdGUiOmlmYWNlX3N0YXRlLAogInJlZ2lzdHJ5X2FuZF9jb21iaW5hdGlvbl9zdGF0ZSI6cmVnaXN0cnksCiAiY29yZV9zb3VyY2Vfc2NhbnMiOmNvcmVfc2NhbnMsCiAidHJhbnNwb3J0Ijp7InZtMTYwIjp7azp2IGZvciBrLHYgaW4gYS5pdGVtcygpIGlmIGshPSJyZXBvcnQifSwidm0yMTAiOntrOnYgZm9yIGssdiBpbiBiLml0ZW1zKCkgaWYgayE9InJlcG9ydCJ9fQp9CnByaW50KCJHUkFNNTE1UjJSMV9TQUZFX1JFUE9SVD0iK2pzb24uZHVtcHMocmVwb3J0LGVuc3VyZV9hc2NpaT1UcnVlLHNvcnRfa2V5cz1UcnVlLHNlcGFyYXRvcnM9KCIsIiwiOiIpKSkKaWYgc2l0ZTcgYW5kIGRiNzoKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ERUNJU0lPTj1QQVNTX1BFUk1JU1NJT05fUkVHSVNUUllfUkNBX0VWSURFTkNFX0NBUFRVUkVEIikKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ORVhUX0dBVEU9UkVWSUVXX0VYQUNUX1VQU1RSRUFNX0NBQ0hFX09SX01FVEFEQVRBX0ZJWCIpCiAgICBzdD0iT0siO3JjPTAKZWxzZToKICAgIHByaW50KCJHUkFNNTE1UjJSMV9ERUNJU0lPTj1IT0xEX1BFUk1JU1NJT05fUkVHSVNUUllfUkNBX0lOQ09NUExFVEUiKQogICAgcHJpbnQoIkdSQU01MTVSMlIxX05FWFRfR0FURT1TVE9QX05PX01VVEFUSU9OIikKICAgIHN0PSJGQUlMIjtyYz0zCnByaW50KCJIT01FTEFCX1JFU1VMVF9DT05UUkFDVD0iK2pzb24uZHVtcHMoeyJ2ZXJzaW9uIjoxLCJjb21tYW5kX2lkIjpDSUQsInN0YXR1cyI6c3QsImNoYW5nZXNfbWFkZSI6RmFsc2UsInJvbGxiYWNrX3N0YXJ0ZWQiOkZhbHNlLCJyb2xsYmFja19yZXN0b3JlZCI6Tm9uZX0sc2VwYXJhdG9ycz0oIiwiLCI6IikpKQpyYWlzZSBTeXN0ZW1FeGl0KHJjKQo="),"","exec")) - ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 3, in -NameError: name 'true' is not defined. Did you mean: 'True'? +GRAM515R2R1R1_SAFE_REPORT={"classification":{"changes_made":false,"db_probe_7of7":true,"permission_defs_9_7of7":true,"send_attempts":0,"site_count_7":true,"staff_cache_missing_gramSupport_7of7":true},"core_source_scans":[{"core_scan":[{"line":9,"path":"src/XF/Job/PermissionRebuild.php","text":"class PermissionRebuild extends AbstractRebuildJob"},{"line":43,"path":"src/XF/Job/PermissionRebuild.php","text":"'SELECT permission_combination_id"},{"line":44,"path":"src/XF/Job/PermissionRebuild.php","text":"FROM xf_permission_combination"},{"line":45,"path":"src/XF/Job/PermissionRebuild.php","text":"WHERE permission_combination_id > ?"},{"line":46,"path":"src/XF/Job/PermissionRebuild.php","text":"ORDER BY permission_combination_id',"},{"line":54,"path":"src/XF/Job/PermissionRebuild.php","text":"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');"},{"line":86,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"$combinationId = $combination->permission_combination_id;"},{"line":93,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id' => $combinationId,"},{"line":102,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id = ? AND content_type = ?',"},{"line":70,"path":"src/XF/Permission/Builder.php","text":"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();"},{"line":26,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"public function rebuildAdminPermissionCache()"},{"line":31,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id"},{"line":32,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"FROM xf_admin_permission_entry AS admin_permission_entry"},{"line":34,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)"},{"line":90,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"if ($combination->permission_combination_id != $user->permission_combination_id)"},{"line":92,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);"},{"line":106,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":108,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":121,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];"},{"line":132,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$preRegActionCondition = \"AND p.permission_combination_id <> \" . $db->quote($preRegCombination);"},{"line":136,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"SELECT p.permission_combination_id"},{"line":137,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"FROM xf_permission_combination AS p"},{"line":138,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up"},{"line":139,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"ON (p.permission_combination_id = up.permission_combination_id)"},{"line":140,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"WHERE up.permission_combination_id IS NULL"},{"line":142,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"AND p.permission_combination_id <> 1"},{"line":147,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';"},{"line":149,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination', $combinationCondition);"},{"line":150,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination_user_group', $combinationCondition);"},{"line":161,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');"},{"line":165,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination', ["},{"line":166,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":172,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination_user_group', ["},{"line":174,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":16,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);"},{"line":28,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);"},{"line":33,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"public function getGlobalPermissionEntriesGrouped(array $limits = [])"},{"line":53,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry"},{"line":109,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":184,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":193,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry');"},{"line":198,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');"},{"line":12,"path":"src/XF/Repository/PermissionRepository.php","text":"public function getGlobalPermissionListData()"},{"line":76,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":82,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":99,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":104,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":107,"path":"src/XF/Entity/AdminPermission.php","text":"protected function rebuildAdminPermissionCache()"},{"line":111,"path":"src/XF/Entity/AdminPermission.php","text":"\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)"},{"line":113,"path":"src/XF/Entity/AdminPermission.php","text":"$repo->rebuildAdminPermissionCache();"},{"line":6,"path":"src/XF/Entity/Permission.php","text":"use XF\\Job\\PermissionRebuild;"},{"line":115,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":121,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":149,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":154,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":164,"path":"src/XF/Entity/Permission.php","text":"\\XF::runOnce('xfPermissionRebuild', function ()"},{"line":166,"path":"src/XF/Entity/Permission.php","text":"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);"},{"line":11,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* @property int $permission_combination_id"},{"line":16,"path":"src/XF/Entity/PermissionCacheContent.php","text":"class PermissionCacheContent extends Entity implements Proxyable"},{"line":20,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* permission_combination_id: int|null,"},{"line":29,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'] === null"},{"line":37,"path":"src/XF/Entity/PermissionCacheContent.php","text":"\\XF::app()->permissionCache()->setContentPerms("},{"line":38,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'],"},{"line":48,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->shortName = 'XF:PermissionCacheContent';"},{"line":49,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];"},{"line":51,"path":"src/XF/Entity/PermissionCacheContent.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":12,"path":"src/XF/Entity/PermissionCombination.php","text":"* @property int|null $permission_combination_id"},{"line":25,"path":"src/XF/Entity/PermissionCombination.php","text":"* permission_combination_id: int|null,"},{"line":31,"path":"src/XF/Entity/PermissionCombination.php","text":"if ($values['permission_combination_id'] === null)"},{"line":36,"path":"src/XF/Entity/PermissionCombination.php","text":"\\XF::app()->permissionCache()->setGlobalPerms("},{"line":37,"path":"src/XF/Entity/PermissionCombination.php","text":"$values['permission_combination_id'],"},{"line":58,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => $this->permission_combination_id,"},{"line":64,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":65,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":66,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":70,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);"},{"line":86,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":87,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":88,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":94,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->table = 'xf_permission_combination';"},{"line":96,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->primaryKey = 'permission_combination_id';"},{"line":98,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":116,"path":"src/XF/Entity/PermissionCombination.php","text":"'conditions' => 'permission_combination_id',"},{"line":11,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"* @property int $permission_combination_id"},{"line":21,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->table = 'xf_permission_combination_user_group';"},{"line":23,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];"},{"line":26,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":39,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'conditions' => 'permission_combination_id',"},{"line":10,"path":"src/XF/Entity/PermissionEntry.php","text":"* @property int|null $permission_entry_id"},{"line":25,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->table = 'xf_permission_entry';"},{"line":27,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":29,"path":"src/XF/Entity/PermissionEntry.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":10,"path":"src/XF/Entity/PermissionEntryContent.php","text":"* @property int|null $permission_entry_id"},{"line":27,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->table = 'xf_permission_entry_content';"},{"line":29,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":31,"path":"src/XF/Entity/PermissionEntryContent.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":137,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"$structure->table = 'xf_permission_interface_group';"},{"line":142,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'required' => 'please_enter_valid_permission_interface_group_id',"},{"line":143,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'unique' => 'permission_interface_group_ids_must_be_unique',"},{"line":52,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id_"},{"line":85,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id"},{"line":361,"path":"src/XF/Entity/User.php","text":"return \\XF::permissionCache()->getPermissionSet($this->permission_combination_id);"},{"line":370,"path":"src/XF/Entity/User.php","text":"? $this->getValue('permission_combination_id')"},{"line":1268,"path":"src/XF/Entity/User.php","text":"return $this->PermissionSet->hasGlobalPermission($group, $permission);"},{"line":1285,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"line":1289,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"line":1367,"path":"src/XF/Entity/User.php","text":"public function rebuildPermissionCombination()"},{"line":1681,"path":"src/XF/Entity/User.php","text":"$this->rebuildPermissionCombination();"},{"line":1684,"path":"src/XF/Entity/User.php","text":"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))"},{"line":2341,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],"},{"line":2392,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => false,"},{"line":2427,"path":"src/XF/Entity/User.php","text":"'conditions' => 'permission_combination_id',"}],"slug":"codevipe"},{"core_scan":[{"line":9,"path":"src/XF/Job/PermissionRebuild.php","text":"class PermissionRebuild extends AbstractRebuildJob"},{"line":43,"path":"src/XF/Job/PermissionRebuild.php","text":"'SELECT permission_combination_id"},{"line":44,"path":"src/XF/Job/PermissionRebuild.php","text":"FROM xf_permission_combination"},{"line":45,"path":"src/XF/Job/PermissionRebuild.php","text":"WHERE permission_combination_id > ?"},{"line":46,"path":"src/XF/Job/PermissionRebuild.php","text":"ORDER BY permission_combination_id',"},{"line":54,"path":"src/XF/Job/PermissionRebuild.php","text":"$this->app->jobManager()->cancelUniqueJob('permissionRebuild');"},{"line":86,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"$combinationId = $combination->permission_combination_id;"},{"line":93,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id' => $combinationId,"},{"line":102,"path":"src/XF/Permission/AbstractContentPermissions.php","text":"'permission_combination_id = ? AND content_type = ?',"},{"line":70,"path":"src/XF/Permission/Builder.php","text":"$entries = $entryRepo->getGlobalPermissionEntriesGrouped();"},{"line":26,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"public function rebuildAdminPermissionCache()"},{"line":31,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"SELECT admin_permission_entry.user_id, admin_permission_entry.admin_permission_id"},{"line":32,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"FROM xf_admin_permission_entry AS admin_permission_entry"},{"line":34,"path":"src/XF/Repository/AdminPermissionRepository.php","text":"(admin_permission.admin_permission_id = admin_permission_entry.admin_permission_id)"},{"line":90,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"if ($combination->permission_combination_id != $user->permission_combination_id)"},{"line":92,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$user->fastUpdate('permission_combination_id', $combination->permission_combination_id);"},{"line":106,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":108,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"(SELECT 1 FROM xf_permission_entry_content WHERE user_group_id = 0 AND user_id = ? LIMIT 1)"},{"line":121,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"return [$groupCombination->permission_combination_id, $groupCombination->PermissionCombination];"},{"line":132,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$preRegActionCondition = \"AND p.permission_combination_id <> \" . $db->quote($preRegCombination);"},{"line":136,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"SELECT p.permission_combination_id"},{"line":137,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"FROM xf_permission_combination AS p"},{"line":138,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"LEFT JOIN (SELECT DISTINCT u.permission_combination_id FROM xf_user AS u) AS up"},{"line":139,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"ON (p.permission_combination_id = up.permission_combination_id)"},{"line":140,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"WHERE up.permission_combination_id IS NULL"},{"line":142,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"AND p.permission_combination_id <> 1"},{"line":147,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$combinationCondition = 'permission_combination_id IN (' . $db->quote($combinationIds) . ')';"},{"line":149,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination', $combinationCondition);"},{"line":150,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->delete('xf_permission_combination_user_group', $combinationCondition);"},{"line":161,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$guestCombination = $db->fetchRow('SELECT * FROM xf_permission_combination WHERE permission_combination_id = 1');"},{"line":165,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination', ["},{"line":166,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":172,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"$db->insert('xf_permission_combination_user_group', ["},{"line":174,"path":"src/XF/Repository/PermissionCombinationRepository.php","text":"'permission_combination_id' => 1,"},{"line":16,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_group_id' => $userGroupId]);"},{"line":28,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$entries = $this->getGlobalPermissionEntriesGrouped(['user_id' => $userId]);"},{"line":33,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"public function getGlobalPermissionEntriesGrouped(array $limits = [])"},{"line":53,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry"},{"line":109,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":184,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"FROM xf_permission_entry_content"},{"line":193,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry');"},{"line":198,"path":"src/XF/Repository/PermissionEntryRepository.php","text":"$this->deleteOrphanedPermissionEntries('xf_permission_entry_content');"},{"line":12,"path":"src/XF/Repository/PermissionRepository.php","text":"public function getGlobalPermissionListData()"},{"line":76,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":82,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":99,"path":"src/XF/Entity/AdminPermission.php","text":"'xf_admin_permission_entry',"},{"line":104,"path":"src/XF/Entity/AdminPermission.php","text":"$this->rebuildAdminPermissionCache();"},{"line":107,"path":"src/XF/Entity/AdminPermission.php","text":"protected function rebuildAdminPermissionCache()"},{"line":111,"path":"src/XF/Entity/AdminPermission.php","text":"\\XF::runOnce('adminPermissionCacheRebuild', function () use ($repo)"},{"line":113,"path":"src/XF/Entity/AdminPermission.php","text":"$repo->rebuildAdminPermissionCache();"},{"line":6,"path":"src/XF/Entity/Permission.php","text":"use XF\\Job\\PermissionRebuild;"},{"line":115,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":121,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":149,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry',"},{"line":154,"path":"src/XF/Entity/Permission.php","text":"'xf_permission_entry_content',"},{"line":164,"path":"src/XF/Entity/Permission.php","text":"\\XF::runOnce('xfPermissionRebuild', function ()"},{"line":166,"path":"src/XF/Entity/Permission.php","text":"$this->app()->jobManager()->enqueueUnique('permissionRebuild', PermissionRebuild::class);"},{"line":11,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* @property int $permission_combination_id"},{"line":16,"path":"src/XF/Entity/PermissionCacheContent.php","text":"class PermissionCacheContent extends Entity implements Proxyable"},{"line":20,"path":"src/XF/Entity/PermissionCacheContent.php","text":"* permission_combination_id: int|null,"},{"line":29,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'] === null"},{"line":37,"path":"src/XF/Entity/PermissionCacheContent.php","text":"\\XF::app()->permissionCache()->setContentPerms("},{"line":38,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$values['permission_combination_id'],"},{"line":48,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->shortName = 'XF:PermissionCacheContent';"},{"line":49,"path":"src/XF/Entity/PermissionCacheContent.php","text":"$structure->primaryKey = ['permission_combination_id', 'content_type', 'content_id'];"},{"line":51,"path":"src/XF/Entity/PermissionCacheContent.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":12,"path":"src/XF/Entity/PermissionCombination.php","text":"* @property int|null $permission_combination_id"},{"line":25,"path":"src/XF/Entity/PermissionCombination.php","text":"* permission_combination_id: int|null,"},{"line":31,"path":"src/XF/Entity/PermissionCombination.php","text":"if ($values['permission_combination_id'] === null)"},{"line":36,"path":"src/XF/Entity/PermissionCombination.php","text":"\\XF::app()->permissionCache()->setGlobalPerms("},{"line":37,"path":"src/XF/Entity/PermissionCombination.php","text":"$values['permission_combination_id'],"},{"line":58,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => $this->permission_combination_id,"},{"line":64,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":65,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":66,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":70,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->db()->insertBulk('xf_permission_combination_user_group', $groups);"},{"line":86,"path":"src/XF/Entity/PermissionCombination.php","text":"'xf_permission_combination_user_group',"},{"line":87,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id = ?',"},{"line":88,"path":"src/XF/Entity/PermissionCombination.php","text":"$this->permission_combination_id"},{"line":94,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->table = 'xf_permission_combination';"},{"line":96,"path":"src/XF/Entity/PermissionCombination.php","text":"$structure->primaryKey = 'permission_combination_id';"},{"line":98,"path":"src/XF/Entity/PermissionCombination.php","text":"'permission_combination_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":116,"path":"src/XF/Entity/PermissionCombination.php","text":"'conditions' => 'permission_combination_id',"},{"line":11,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"* @property int $permission_combination_id"},{"line":21,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->table = 'xf_permission_combination_user_group';"},{"line":23,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"$structure->primaryKey = ['user_group_id', 'permission_combination_id'];"},{"line":26,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'permission_combination_id' => ['type' => self::UINT, 'required' => true],"},{"line":39,"path":"src/XF/Entity/PermissionCombinationUserGroup.php","text":"'conditions' => 'permission_combination_id',"},{"line":10,"path":"src/XF/Entity/PermissionEntry.php","text":"* @property int|null $permission_entry_id"},{"line":25,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->table = 'xf_permission_entry';"},{"line":27,"path":"src/XF/Entity/PermissionEntry.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":29,"path":"src/XF/Entity/PermissionEntry.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":10,"path":"src/XF/Entity/PermissionEntryContent.php","text":"* @property int|null $permission_entry_id"},{"line":27,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->table = 'xf_permission_entry_content';"},{"line":29,"path":"src/XF/Entity/PermissionEntryContent.php","text":"$structure->primaryKey = 'permission_entry_id';"},{"line":31,"path":"src/XF/Entity/PermissionEntryContent.php","text":"'permission_entry_id' => ['type' => self::UINT, 'autoIncrement' => true, 'nullable' => true],"},{"line":137,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"$structure->table = 'xf_permission_interface_group';"},{"line":142,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'required' => 'please_enter_valid_permission_interface_group_id',"},{"line":143,"path":"src/XF/Entity/PermissionInterfaceGroup.php","text":"'unique' => 'permission_interface_group_ids_must_be_unique',"},{"line":52,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id_"},{"line":85,"path":"src/XF/Entity/User.php","text":"* @property int $permission_combination_id"},{"line":361,"path":"src/XF/Entity/User.php","text":"return \\XF::permissionCache()->getPermissionSet($this->permission_combination_id);"},{"line":370,"path":"src/XF/Entity/User.php","text":"? $this->getValue('permission_combination_id')"},{"line":1268,"path":"src/XF/Entity/User.php","text":"return $this->PermissionSet->hasGlobalPermission($group, $permission);"},{"line":1285,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheContentPermsByIds($this->permission_combination_id, 'node', $nodeIds);"},{"line":1289,"path":"src/XF/Entity/User.php","text":"\\XF::permissionCache()->cacheAllContentPerms($this->permission_combination_id, 'node');"},{"line":1367,"path":"src/XF/Entity/User.php","text":"public function rebuildPermissionCombination()"},{"line":1681,"path":"src/XF/Entity/User.php","text":"$this->rebuildPermissionCombination();"},{"line":1684,"path":"src/XF/Entity/User.php","text":"if ($this->isChanged(['user_group_id', 'secondary_group_ids', 'permission_combination_id', 'user_state']))"},{"line":2341,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => ['type' => self::UINT, 'default' => 0, 'changeLog' => false],"},{"line":2392,"path":"src/XF/Entity/User.php","text":"'permission_combination_id' => false,"},{"line":2427,"path":"src/XF/Entity/User.php","text":"'conditions' => 'permission_combination_id',"}],"slug":"newfi"}],"interface_group_state":[{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"codevipe"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"dsmods"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"gamevipe"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"hkmods"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"kingofwolk"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"zakrutim"},{"rows":[{"addon_id":"Gram/Support","display_order":1000,"interface_group_id":"gramSupport","is_moderator":0}],"slug":"newfi"}],"registry_and_combination_state":[{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"codevipe","staff":[{"cache_bytes":2517,"cache_has_gramSupport":false,"cache_sha256":"2986831367f0ac442e19b5955044a0327a800f20c46155584d148666c9a9aec1","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"dsmods","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"gamevipe","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"hkmods","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"75cde1920175751989c915647ce0b7c9bc43f3455ef4ccd0fac85bdeeb65a0b1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"kingofwolk","staff":[{"cache_bytes":2530,"cache_has_gramSupport":false,"cache_sha256":"5ba76aaa2def782deeec5b54d24d723cc2d5c501da7574c6735039dcb5539855","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":95,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"eedf40269890cee3c36c869cb7000a6e5302529ad410f10cf14d5a05f9fd2ef1","top_level_keys":["Gram/Support","Workers2/PostboxPolicy","XF"]}],"slug":"zakrutim","staff":[{"cache_bytes":2526,"cache_has_gramSupport":false,"cache_sha256":"4212b0b60852d1382cde8cc09d26d9bda8d5f8bf24d10d4be58aa4e16e531565","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]},{"addon_permission_data_files":{"permission_interface_groups.xml":{"bytes":192,"contains_gramSupport":true,"present":true,"sha256":"f54be0d872f43813e0f57d75a73420da70d37091f408d3cbdf9e943d4f67c1ad"},"permissions.xml":{"bytes":1432,"contains_gramSupport":true,"present":true,"sha256":"c0cf9d60702b670355f3f0928e0afde20a5c7becf065536c3487289211a4bbee"}},"permission_tables":["xf_permission","xf_permission_cache_content","xf_permission_combination","xf_permission_combination_user_group","xf_permission_entry","xf_permission_entry_content","xf_permission_interface_group"],"registry":[{"bytes":227,"contains_GramSupport":true,"contains_gramSupport":false,"key":"addOns","sha256":"04905462a275923fe321e4f49e860d2d70a60188687599b99064df8ef2627cfb","top_level_keys":["Gram/Support","Newfi/Dogs","Newfi/Events","Newfi/Portal","Workers2/PostboxPolicy","XF","XFMG","XFRM"]}],"slug":"newfi","staff":[{"cache_bytes":4767,"cache_has_gramSupport":false,"cache_sha256":"0e802df20b9d1147107c110d976767409217a7f5cd2bef66a89b8b7cb4547a47","cache_top_level_keys":[],"combo_user_group_list":"2,3,4","combo_user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b","gramSupport_cache":null,"is_admin":true,"is_moderator":true,"permission_combination_id_sha256":"e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683","primary_group_id":2,"secondary_group_ids":"3,4","user_id_sha256":"6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"}]}],"schema_version":1,"scope":"READ_ONLY_GRAM_SUPPORT_PERMISSION_REGISTRY_AND_BUILDER_RCA","site_count":7,"transport":{"vm160":{"guest_stderr_present":false,"inner_rc":0,"ok":true,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"vm210":{"guest_stderr_present":false,"inner_rc":0,"ok":true,"transport_rc":0,"transport_stderr_bytes":0,"transport_stderr_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}}} +GRAM515R2R1R1_DECISION=PASS_PERMISSION_REGISTRY_RCA_EVIDENCE_CAPTURED +GRAM515R2R1R1_NEXT_GATE=REVIEW_EXACT_UPSTREAM_CACHE_OR_METADATA_FIX +HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260918-GRAM-SUPPORT-PERMISSION-REGISTRY-RCA-BOOLFIX-515R2R1R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null} OUTPUT_END CHAT_OUTPUT_END