gitextract_hwpkyjj1/ ├── .erb/ │ ├── configs/ │ │ ├── .eslintrc │ │ ├── webpack.config.base.ts │ │ ├── webpack.config.eslint.ts │ │ ├── webpack.config.main.dev.ts │ │ ├── webpack.config.main.prod.ts │ │ ├── webpack.config.preload.dev.ts │ │ ├── webpack.config.renderer.dev.dll.ts │ │ ├── webpack.config.renderer.dev.ts │ │ ├── webpack.config.renderer.prod.ts │ │ └── webpack.paths.ts │ ├── mocks/ │ │ └── fileMock.js │ └── scripts/ │ ├── .eslintrc │ ├── check-build-exists.ts │ ├── check-native-dep.js │ ├── check-node-env.js │ ├── check-port-in-use.js │ ├── clean.js │ ├── delete-source-maps.js │ ├── electron-rebuild.js │ ├── link-modules.ts │ └── notarize.js ├── .eslintrc.js ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ └── node.js.yml ├── .gitignore ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── assets/ │ ├── assets.d.ts │ └── entitlements.mac.plist ├── docs/ │ ├── CONTRIBUTING.md │ ├── Colors.md │ ├── FilterAudio.md │ ├── Localisation.md │ ├── LocateLogDirectory.md │ ├── SettingsReference.md │ ├── design.excalidraw │ └── example-obs-config/ │ ├── Output.json │ └── Video.json ├── eslint.config.mjs ├── installer.nsh ├── package.json ├── postcss.config.js ├── release/ │ └── app/ │ └── package.json ├── src/ │ ├── __tests__/ │ │ ├── activitys/ │ │ │ ├── ArenaMatch.test.ts │ │ │ ├── Battleground.test.ts │ │ │ ├── ChallengeModeDungeon.test.ts │ │ │ ├── RaidEncounter.test.ts │ │ │ └── SoloShuffle.test.ts │ │ ├── localisation/ │ │ │ └── Translate.test.ts │ │ └── parser/ │ │ └── Basic.test.ts │ ├── activitys/ │ │ ├── Activity.ts │ │ ├── ArenaMatch.ts │ │ ├── Battleground.ts │ │ ├── ChallengeModeDungeon.ts │ │ ├── Manual.ts │ │ ├── RaidEncounter.ts │ │ └── SoloShuffle.ts │ ├── config/ │ │ ├── ConfigService.ts │ │ └── configSchema.ts │ ├── localisation/ │ │ ├── chineseSimplified.ts │ │ ├── english.ts │ │ ├── german.ts │ │ ├── korean.ts │ │ ├── phrases.ts │ │ └── translations.ts │ ├── main/ │ │ ├── AppUpdater.ts │ │ ├── Combatant.ts │ │ ├── Manager.ts │ │ ├── Recorder.ts │ │ ├── VideoProcessQueue.ts │ │ ├── constants.ts │ │ ├── keystone.ts │ │ ├── main.ts │ │ ├── menu.ts │ │ ├── obsEnums.ts │ │ ├── preload.ts │ │ ├── types.ts │ │ └── util.ts │ ├── parsing/ │ │ ├── ClassicLogHandler.ts │ │ ├── CombatLogWatcher.ts │ │ ├── EraLogHandler.ts │ │ ├── LogHandler.ts │ │ ├── LogLine.ts │ │ ├── RetailLogHandler.ts │ │ └── logutils.ts │ ├── renderer/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── AudioSourceControls.tsx │ │ ├── BattlegroundInfo.tsx │ │ ├── BulkTransferDialog.tsx │ │ ├── CategoryPage.tsx │ │ ├── ChatOverlayControls.tsx │ │ ├── CloudSettings.tsx │ │ ├── ConfirmChatNamePrompt.tsx │ │ ├── CrashStatus.tsx │ │ ├── DateRangePicker.tsx │ │ ├── DeleteDialog.tsx │ │ ├── DiscordButton.tsx │ │ ├── FlavourSettings.tsx │ │ ├── GeneralSettings.tsx │ │ ├── KillVideoDialog.tsx │ │ ├── KillVideoProgress.tsx │ │ ├── KillVideoSourceTimeline.tsx │ │ ├── Layout.tsx │ │ ├── LocaleSettings.tsx │ │ ├── LogButton.tsx │ │ ├── ManualSettings.tsx │ │ ├── MicrophoneStatus.tsx │ │ ├── MultiPovPlaybackToggles.tsx │ │ ├── PVESettings.tsx │ │ ├── PVPSettings.tsx │ │ ├── PatreonButton.tsx │ │ ├── RaidComp.tsx │ │ ├── RecorderPreview.tsx │ │ ├── RendererTitleBar.tsx │ │ ├── SavingStatus.tsx │ │ ├── SceneEditor.tsx │ │ ├── SearchBar.tsx │ │ ├── SettingsPage.tsx │ │ ├── SideMenu.tsx │ │ ├── SnackBar.tsx │ │ ├── StorageFilterToggle.tsx │ │ ├── TagDialog.tsx │ │ ├── TestButton.tsx │ │ ├── VideoBaseControls.tsx │ │ ├── VideoChat.tsx │ │ ├── VideoCorrelator.ts │ │ ├── VideoFilter.ts │ │ ├── VideoMarkerToggles.tsx │ │ ├── VideoPlayer.tsx │ │ ├── VideoSourceControls.tsx │ │ ├── VideoTag.ts │ │ ├── WindowsSettings.tsx │ │ ├── components/ │ │ │ ├── Badge/ │ │ │ │ └── Badge.tsx │ │ │ ├── Button/ │ │ │ │ └── Button.tsx │ │ │ ├── Command/ │ │ │ │ └── Command.tsx │ │ │ ├── Dialog/ │ │ │ │ └── Dialog.tsx │ │ │ ├── DrawingOverlay/ │ │ │ │ ├── DrawingOverlay.css │ │ │ │ └── DrawingOverlay.tsx │ │ │ ├── HoverCard/ │ │ │ │ └── HoverCard.tsx │ │ │ ├── Input/ │ │ │ │ └── Input.tsx │ │ │ ├── Label/ │ │ │ │ └── Label.tsx │ │ │ ├── Menu/ │ │ │ │ ├── Item.tsx │ │ │ │ ├── Menu.tsx │ │ │ │ └── index.tsx │ │ │ ├── MultiSelect/ │ │ │ │ └── MultiSelect.tsx │ │ │ ├── Popover/ │ │ │ │ └── Popover.tsx │ │ │ ├── Progress/ │ │ │ │ └── Progress.tsx │ │ │ ├── ScrollArea/ │ │ │ │ └── ScrollArea.tsx │ │ │ ├── Select/ │ │ │ │ └── Select.tsx │ │ │ ├── Separator/ │ │ │ │ └── Separator.tsx │ │ │ ├── Slider/ │ │ │ │ └── Slider.tsx │ │ │ ├── StatusLight/ │ │ │ │ └── StatusLight.tsx │ │ │ ├── Switch/ │ │ │ │ └── Switch.tsx │ │ │ ├── Tables/ │ │ │ │ ├── Cells.tsx │ │ │ │ ├── Headers.tsx │ │ │ │ ├── Sorting.ts │ │ │ │ ├── TableData.tsx │ │ │ │ └── VideoSelectionTable.tsx │ │ │ ├── Tabs/ │ │ │ │ └── Tabs.tsx │ │ │ ├── TextArea/ │ │ │ │ └── textarea.tsx │ │ │ ├── TextBanner/ │ │ │ │ └── TextBanner.tsx │ │ │ ├── Toast/ │ │ │ │ ├── Toast.tsx │ │ │ │ ├── Toaster.tsx │ │ │ │ └── useToast.ts │ │ │ ├── Toggle/ │ │ │ │ └── Toggle.tsx │ │ │ ├── ToggleGroup/ │ │ │ │ └── ToggleGroup.tsx │ │ │ ├── Tooltip/ │ │ │ │ └── Tooltip.tsx │ │ │ ├── Viewpoints/ │ │ │ │ └── ViewpointSelection.tsx │ │ │ └── utils/ │ │ │ └── index.ts │ │ ├── containers/ │ │ │ ├── ApplicationStatusCard/ │ │ │ │ ├── ApplicationStatusCard.tsx │ │ │ │ ├── CloudStatus.tsx │ │ │ │ ├── CloudStatusCard.tsx │ │ │ │ ├── ErrorReporter.tsx │ │ │ │ ├── MicStatus.tsx │ │ │ │ └── Status.tsx │ │ │ └── UpdateNotifier/ │ │ │ └── UpdateNotifier.tsx │ │ ├── images.ts │ │ ├── index.ejs │ │ ├── index.tsx │ │ ├── preload.d.ts │ │ ├── rendererutils.ts │ │ ├── sounds.ts │ │ └── useSettings.ts │ ├── storage/ │ │ ├── CloudClient.ts │ │ ├── DiskClient.ts │ │ ├── DiskSizeMonitor.ts │ │ └── StorageClient.ts │ ├── types/ │ │ ├── KeyTypesUIOHook.ts │ │ ├── VideoCategory.ts │ │ └── api.ts │ └── utils/ │ ├── AsyncQueue.ts │ ├── AuthError.ts │ ├── Poller.ts │ ├── RetryableConfigError.ts │ ├── TestConfigService.ts │ ├── configUtils.ts │ ├── testButtonData.ts │ └── testButtonUtils.ts ├── tailwind.config.js ├── tests/ │ ├── README.md │ ├── logs/ │ │ ├── classic/ │ │ │ ├── battleground.txt │ │ │ ├── mop_challenge_mode.txt │ │ │ ├── raid.txt │ │ │ ├── rated_2v2.txt │ │ │ ├── rated_2v2_double.txt │ │ │ ├── rated_2v2_extra_units.txt │ │ │ ├── rated_2v2_feign_death.txt │ │ │ ├── rated_3v3.txt │ │ │ ├── rated_3v3_force_stop.txt │ │ │ └── rated_5v5.txt │ │ ├── era/ │ │ │ └── raid.txt │ │ └── retail/ │ │ ├── mythic_plus.txt │ │ ├── mythic_plus_ditch_into_raid.txt │ │ ├── mythic_plus_drop_go.txt │ │ ├── mythic_plus_no_boss.txt │ │ ├── mythic_plus_repair.txt │ │ ├── raid_reset.txt │ │ ├── raid_unknown_encounter.txt │ │ ├── raid_wipe.txt │ │ ├── rated_2v2.txt │ │ ├── rated_2v2_afk_out.txt │ │ ├── rated_3v3.txt │ │ ├── rated_battleground.txt │ │ ├── rated_solo_shuffle.txt │ │ ├── skirmish.txt │ │ ├── wargame_3v3.txt │ │ └── zone_changes.txt │ └── src/ │ ├── classic/ │ │ ├── battleground.py │ │ ├── mop_challenge_mode.py │ │ ├── raid.py │ │ ├── rated_2v2.py │ │ ├── rated_2v2_double.py │ │ ├── rated_2v2_extra_units.py │ │ ├── rated_2v2_feign_death.py │ │ ├── rated_3v3.py │ │ ├── rated_3v3_force_stop.py │ │ └── rated_5v5.py │ ├── era/ │ │ └── raid.py │ ├── retail/ │ │ ├── mythic_plus.py │ │ ├── mythic_plus_ditch_into_raid.py │ │ ├── mythic_plus_drop_go.py │ │ ├── mythic_plus_no_boss.py │ │ ├── mythic_plus_repair.py │ │ ├── raid_reset.py │ │ ├── raid_unknown_encounter.py │ │ ├── raid_wipe.py │ │ ├── rated_2v2.py │ │ ├── rated_2v2_afk_out.py │ │ ├── rated_3v3.py │ │ ├── rated_battleground.py │ │ ├── rated_solo_shuffle.py │ │ ├── skirmish.py │ │ ├── wargame_3v3.py │ │ └── zone_changes.py │ └── test.py └── tsconfig.json