gitextract_5ho1xmu5/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.yml │ └── workflows/ │ ├── brew-cask-auto-bump.yml │ ├── publish.yml │ └── winget.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DONATE.md ├── LICENSE ├── README.md ├── REST-API.yml ├── android/ │ └── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── filetypes.txt │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── android/ │ │ ├── ABDMApp.kt │ │ ├── action/ │ │ │ └── Actions.kt │ │ ├── di/ │ │ │ └── Di.kt │ │ ├── pages/ │ │ │ ├── about/ │ │ │ │ └── AboutPage.kt │ │ │ ├── add/ │ │ │ │ ├── AddDownloadActivity.kt │ │ │ │ ├── multiple/ │ │ │ │ │ ├── AddMultiDownloadActivity.kt │ │ │ │ │ ├── AddMultiDownloadList.kt │ │ │ │ │ ├── AddMultiItemPage.kt │ │ │ │ │ └── AndroidAddMultiDownloadComponent.kt │ │ │ │ ├── shared/ │ │ │ │ │ ├── CategorySelect.kt │ │ │ │ │ ├── ExtraConfig.kt │ │ │ │ │ ├── LocationTextField.kt │ │ │ │ │ └── SelectQueue.kt │ │ │ │ └── single/ │ │ │ │ ├── AddSingleDownloadActivity.kt │ │ │ │ ├── AddSingleDownloadPage.kt │ │ │ │ └── AndroidAddSingleDownloadComponent.kt │ │ │ ├── batchdownload/ │ │ │ │ ├── AndroidBatchDownloadComponent.kt │ │ │ │ └── BatchDownloadPage.kt │ │ │ ├── browser/ │ │ │ │ ├── BrowserActivity.kt │ │ │ │ ├── BrowserComponent.kt │ │ │ │ ├── BrowserUi.kt │ │ │ │ ├── DownloadInterceptor.kt │ │ │ │ ├── SearchEngines.kt │ │ │ │ ├── WebView.kt │ │ │ │ ├── WebViewHolder.kt │ │ │ │ └── bookmark/ │ │ │ │ ├── Bookmarks.kt │ │ │ │ └── EditBookmark.kt │ │ │ ├── category/ │ │ │ │ ├── CategorySheet.kt │ │ │ │ └── NewCategory.kt │ │ │ ├── checksum/ │ │ │ │ ├── AndroidFileChecksumComponent.kt │ │ │ │ └── FileChecksumPage.kt │ │ │ ├── crashreport/ │ │ │ │ ├── CrashReportActivity.kt │ │ │ │ ├── ErrorUi.kt │ │ │ │ └── ThrowableData.kt │ │ │ ├── credits/ │ │ │ │ ├── thirdpartylibraries/ │ │ │ │ │ ├── ExternalLibsPage.kt │ │ │ │ │ └── LibraryDialog.kt │ │ │ │ └── translators/ │ │ │ │ └── TranslatorsPage.kt │ │ │ ├── directorypicker/ │ │ │ │ ├── ComposeExtension.kt │ │ │ │ ├── DirectoryPickerActivity.kt │ │ │ │ └── DirectoryPickerPage.kt │ │ │ ├── editdownload/ │ │ │ │ ├── AndroidEditDownloadComponent.kt │ │ │ │ └── EditDownload.kt │ │ │ ├── enterurl/ │ │ │ │ ├── AndroidEnterNewURLComponent.kt │ │ │ │ └── EnterURLPage.kt │ │ │ ├── home/ │ │ │ │ ├── AndroidDownloadActions.kt │ │ │ │ ├── BottomNavigation.kt │ │ │ │ ├── DownloadList.kt │ │ │ │ ├── FilterStatusIndicator.kt │ │ │ │ ├── HomeComponent.kt │ │ │ │ ├── HomePage.kt │ │ │ │ ├── HomePageStateToPersist.kt │ │ │ │ ├── Prompts.kt │ │ │ │ ├── RenderAddMenu.kt │ │ │ │ ├── RenderDownloadItem.kt │ │ │ │ ├── RenderMainMenu.kt │ │ │ │ ├── RenderStatusFilterMenu.kt │ │ │ │ ├── SelectedQueueItemsOption.kt │ │ │ │ ├── Selection.kt │ │ │ │ ├── SimplePager.kt │ │ │ │ └── sections/ │ │ │ │ ├── Categories.kt │ │ │ │ ├── queues/ │ │ │ │ │ └── Queues.kt │ │ │ │ └── sort/ │ │ │ │ ├── DownloadSortBy.kt │ │ │ │ └── RenderSortMenu.kt │ │ │ ├── newqueue/ │ │ │ │ └── NewQueue.kt │ │ │ ├── onboarding/ │ │ │ │ ├── StartUpPageTemplate.kt │ │ │ │ ├── initialsetup/ │ │ │ │ │ ├── InitialSetupComponent.kt │ │ │ │ │ └── InitialSetupPage.kt │ │ │ │ └── permissions/ │ │ │ │ ├── ABDMPermissions.kt │ │ │ │ ├── AppPermission.kt │ │ │ │ ├── BatteryOptimizationUtil.kt │ │ │ │ ├── CustomPermissions.kt │ │ │ │ ├── PermissionComponent.kt │ │ │ │ ├── PermissionManager.kt │ │ │ │ ├── PermissionsPage.kt │ │ │ │ └── StoragePermissionUtil.kt │ │ │ ├── perhostsettings/ │ │ │ │ ├── AndroidPerHostSettingsComponent.kt │ │ │ │ └── PerHostSettingsPage.kt │ │ │ ├── queue/ │ │ │ │ ├── QueueConfigurationComponent.kt │ │ │ │ └── QueuesSheet.kt │ │ │ ├── settings/ │ │ │ │ ├── AndroidSettings.kt │ │ │ │ ├── AndroidSettingsComponent.kt │ │ │ │ └── SettingsPage.kt │ │ │ ├── singledownload/ │ │ │ │ ├── CompletedDownloadPage.kt │ │ │ │ ├── DesktopSingleDownloadPageComponent.kt │ │ │ │ ├── ProgressDownloadPage.kt │ │ │ │ ├── ShowDownloadDialogs.kt │ │ │ │ └── SingleDownloadPageActivity.kt │ │ │ └── updater/ │ │ │ ├── NewUpdatePage.kt │ │ │ └── UpdaterDialog.kt │ │ ├── receiver/ │ │ │ └── StartOnBootBroadcastReceiver.kt │ │ ├── repository/ │ │ │ └── AppRepository.kt │ │ ├── service/ │ │ │ ├── DownloadSystemService.kt │ │ │ └── KeepAliveServiceReason.kt │ │ ├── storage/ │ │ │ ├── AndroidExtraDownloadItemSettings.kt │ │ │ ├── AndroidExtraQueueSettings.kt │ │ │ ├── AndroidOnBoardingStorage.kt │ │ │ ├── AppSettingsStorage.kt │ │ │ ├── BrowserBookmarksStorage.kt │ │ │ └── HomePageStorage.kt │ │ ├── ui/ │ │ │ ├── ABDownloadManagerApplicationContent.kt │ │ │ ├── MainActivity.kt │ │ │ ├── MainComponent.kt │ │ │ ├── MainContent.kt │ │ │ ├── SelectionControls.kt │ │ │ ├── SheetUI.kt │ │ │ ├── configurable/ │ │ │ │ ├── AndroidConfigurableUtils.kt │ │ │ │ ├── ConfigurableSheet.kt │ │ │ │ ├── SheetInput.kt │ │ │ │ ├── SheetSpinner.kt │ │ │ │ ├── android/ │ │ │ │ │ ├── AndroidConfigurableRenderers.kt │ │ │ │ │ ├── item/ │ │ │ │ │ │ └── PermissionConfigurable.kt │ │ │ │ │ └── renderer/ │ │ │ │ │ └── PermissionConfigurableRenderer.kt │ │ │ │ └── comon/ │ │ │ │ ├── CommonConfigurableRenderersForAndroid.kt │ │ │ │ ├── ConfigurableRenderersForAndroid.kt │ │ │ │ └── renderer/ │ │ │ │ ├── BooleanConfigurableRenderer.kt │ │ │ │ ├── DayOfWeekConfigurableRenderer.kt │ │ │ │ ├── EnumConfigurableRenderer.kt │ │ │ │ ├── FileChecksumConfigurableRenderer.kt │ │ │ │ ├── FloatConfigurableRenderer.kt │ │ │ │ ├── FolderConfigurableRenderer.kt │ │ │ │ ├── IntConfigurableRenderer.kt │ │ │ │ ├── LongConfigurableRenderer.kt │ │ │ │ ├── NavigatableConfigurableRenderer.kt │ │ │ │ ├── ProxyConfigurableRenderer.kt │ │ │ │ ├── SpeedLimitConfigurableRenderer.kt │ │ │ │ ├── StringConfigurableRenderer.kt │ │ │ │ ├── ThemeConfigurableRenderer.kt │ │ │ │ └── TimeConfigurableRenderer.kt │ │ │ ├── menu/ │ │ │ │ ├── Menu.kt │ │ │ │ ├── RenderMenuInSheet.kt │ │ │ │ ├── RenderMenuInSinglePage.kt │ │ │ │ └── StackedMenu.kt │ │ │ ├── myCombinedClickable.kt │ │ │ ├── page/ │ │ │ │ ├── PageUI.kt │ │ │ │ └── PageUtils.kt │ │ │ └── widget/ │ │ │ └── ComposeWebView.kt │ │ └── util/ │ │ ├── ABDMAppManager.kt │ │ ├── ABDMServiceNotificationManager.kt │ │ ├── AndroidConstants.kt │ │ ├── AndroidDefinedPaths.kt │ │ ├── AndroidDownloadItemOpener.kt │ │ ├── AndroidGlobalExceptionHandler.kt │ │ ├── AndroidIntentUtils.kt │ │ ├── AndroidUi.kt │ │ ├── AppInfo.kt │ │ ├── ApplicationBackgroundTracker.kt │ │ ├── HeadlessComposeRuntime.kt │ │ ├── activity/ │ │ │ ├── ABDMActivity.kt │ │ │ ├── ActivityActions.kt │ │ │ ├── RetainedComponentContainer.kt │ │ │ └── SerializableExtra.kt │ │ ├── compose/ │ │ │ ├── ObserveUiVisibility.kt │ │ │ └── useBack.kt │ │ ├── notification/ │ │ │ └── playNotificationSoundIfAllowed.kt │ │ └── pagemanager/ │ │ ├── BrowserPageManager.kt │ │ └── PermissionsPageManager.kt │ └── res/ │ ├── drawable/ │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_launcher_monochrome.xml │ │ └── ic_monochrome.xml │ ├── mipmap-anydpi-v26/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── values/ │ │ ├── strings.xml │ │ └── theme.xml │ └── xml/ │ └── provider_paths.xml ├── build.gradle.kts ├── buildSrc/ │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ ├── Plugins.kt │ ├── buildlogic/ │ │ ├── CiDirs.kt │ │ ├── CiUtils.kt │ │ ├── HashUtils.kt │ │ └── versioning/ │ │ └── VersionUtil.kt │ └── myPlugins/ │ ├── composeAndroid.gradle.kts │ ├── composeBase.gradle.kts │ ├── composeDesktop.gradle.kts │ ├── kotlin.gradle.kts │ ├── kotlinAndroid.gradle.kts │ ├── kotlinMultiplatform.gradle.kts │ └── proguardDesktop.gradle.kts ├── compositeBuilds/ │ ├── plugins/ │ │ ├── common-android/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── kotlin/ │ │ │ │ └── ir/ │ │ │ │ └── amirab/ │ │ │ │ └── plugin/ │ │ │ │ └── common_android/ │ │ │ │ └── task/ │ │ │ │ ├── EnableFileTypesGeneratorForManifest.kt │ │ │ │ ├── FileTypesIntentFilterGenerator.kt │ │ │ │ └── SignApkTask.kt │ │ │ └── resources/ │ │ │ └── ir/ │ │ │ └── amirab/ │ │ │ └── plugin/ │ │ │ └── common_android/ │ │ │ └── AndroidManifest.xml.hbs │ │ ├── git-version-plugin/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── kotlin/ │ │ │ └── ir/ │ │ │ └── amirab/ │ │ │ └── git_version/ │ │ │ ├── GitVersionPlugin.kt │ │ │ └── core/ │ │ │ ├── CiReferenceProvider.kt │ │ │ ├── GitStatus.kt │ │ │ ├── SemanticVersionSelector.kt │ │ │ ├── TagSelector.kt │ │ │ ├── Utils.kt │ │ │ └── extension.kt │ │ ├── installer-plugin/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── kotlin/ │ │ │ └── ir/ │ │ │ └── amirab/ │ │ │ └── installer/ │ │ │ ├── InstallerPlugin.kt │ │ │ ├── InstallerTargetFormat.kt │ │ │ ├── extensiion/ │ │ │ │ └── InstallerPluginExtension.kt │ │ │ ├── tasks/ │ │ │ │ ├── macos/ │ │ │ │ │ └── CreateDmgTask.kt │ │ │ │ └── windows/ │ │ │ │ └── NsisTask.kt │ │ │ └── utils/ │ │ │ └── Contants.kt │ │ └── settings.gradle.kts │ └── shared/ │ ├── README.md │ ├── build.gradle.kts │ ├── platform/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── util/ │ │ └── platform/ │ │ ├── Arch.kt │ │ └── Platform.kt │ └── settings.gradle.kts ├── crowdin.yml ├── desktop/ │ ├── app/ │ │ ├── build.gradle.kts │ │ ├── gradle.properties │ │ ├── icons/ │ │ │ └── icon.icns │ │ ├── proguard/ │ │ │ ├── decompose.pro │ │ │ ├── main.pro │ │ │ └── okhttp.pro │ │ ├── resources/ │ │ │ ├── common/ │ │ │ │ └── app.properties │ │ │ └── installer/ │ │ │ └── nsis-script-template.nsi │ │ └── src/ │ │ └── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── abdownloadmanager/ │ │ │ └── desktop/ │ │ │ ├── App.kt │ │ │ ├── AppArguments.kt │ │ │ ├── AppComponent.kt │ │ │ ├── SingleInstanceServerInitializer.kt │ │ │ ├── actions/ │ │ │ │ ├── DesktopActionFactories.kt │ │ │ │ ├── dev.kt │ │ │ │ ├── main.kt │ │ │ │ └── onevennts/ │ │ │ │ ├── CleanExtraSettingsOnDownloadFinish.kt │ │ │ │ ├── getOnDownloadCompletionAction.kt │ │ │ │ └── getOnQueueEventActions.kt │ │ │ ├── di/ │ │ │ │ └── Di.kt │ │ │ ├── integration/ │ │ │ │ └── IntegrationHandlerImp.kt │ │ │ ├── pages/ │ │ │ │ ├── about/ │ │ │ │ │ ├── AboutDialog.kt │ │ │ │ │ └── AboutPage.kt │ │ │ │ ├── addDownload/ │ │ │ │ │ ├── ShowAddDownloadDialogs.kt │ │ │ │ │ ├── multiple/ │ │ │ │ │ │ ├── AddMultiItemPage.kt │ │ │ │ │ │ ├── AddMultiItemTable.kt │ │ │ │ │ │ └── DesktopAddMultiDownloadComponent.kt │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── CategorySelect.kt │ │ │ │ │ │ ├── DialogDropDown.kt │ │ │ │ │ │ ├── ExtraConfig.kt │ │ │ │ │ │ ├── LocationTextField.kt │ │ │ │ │ │ └── SelectQueue.kt │ │ │ │ │ └── single/ │ │ │ │ │ ├── AddDownloadPage.kt │ │ │ │ │ └── DesktopAddSingleDownloadComponent.kt │ │ │ │ ├── batchdownload/ │ │ │ │ │ ├── BatchDownloadWindow.kt │ │ │ │ │ ├── BatchDownnload.kt │ │ │ │ │ └── DesktopBatchDownloadComponent.kt │ │ │ │ ├── category/ │ │ │ │ │ ├── DesktopCategoryDialogManager.kt │ │ │ │ │ ├── NewCategoryPage.kt │ │ │ │ │ └── ShowCategoryDialogs.kt │ │ │ │ ├── checksum/ │ │ │ │ │ ├── DesktopFileChecksumComponent.kt │ │ │ │ │ ├── FileChecksumPage.kt │ │ │ │ │ └── FileChecksumWindow.kt │ │ │ │ ├── confirmexit/ │ │ │ │ │ └── ConfirmExit.kt │ │ │ │ ├── credits/ │ │ │ │ │ └── translators/ │ │ │ │ │ ├── TranslatorsPage.kt │ │ │ │ │ ├── TranslatorsTable.kt │ │ │ │ │ └── TranslatorsWindow.kt │ │ │ │ ├── editdownload/ │ │ │ │ │ ├── DesktopEditDownloadComponent.kt │ │ │ │ │ └── EditDownload.kt │ │ │ │ ├── enterurl/ │ │ │ │ │ ├── DesktopEnterNewURLComponent.kt │ │ │ │ │ ├── EnterNewDownloadWindow.kt │ │ │ │ │ └── EnterNewURLPage.kt │ │ │ │ ├── extenallibs/ │ │ │ │ │ ├── ExternalLibsPage.kt │ │ │ │ │ ├── ExternalLibsWindow.kt │ │ │ │ │ ├── LibraryDialog.kt │ │ │ │ │ └── OpenSourceLibraryTable.kt │ │ │ │ ├── home/ │ │ │ │ │ ├── Actions.kt │ │ │ │ │ ├── DesktopDownloadActions.kt │ │ │ │ │ ├── DownloadItemListDataFlavor.kt │ │ │ │ │ ├── HomeComponent.kt │ │ │ │ │ ├── HomePage.kt │ │ │ │ │ ├── HomePersistedState.kt │ │ │ │ │ ├── HomeWindow.kt │ │ │ │ │ ├── dropDownloadItemsHere.kt │ │ │ │ │ └── sections/ │ │ │ │ │ ├── DownloadList.kt │ │ │ │ │ ├── Filters.kt │ │ │ │ │ ├── TableDownloadItem.kt │ │ │ │ │ ├── category/ │ │ │ │ │ │ └── Categories.kt │ │ │ │ │ └── queue/ │ │ │ │ │ └── Queues.kt │ │ │ │ ├── newQueue/ │ │ │ │ │ ├── NewQueueDialog.kt │ │ │ │ │ └── NewQueuePage.kt │ │ │ │ ├── perhostsettings/ │ │ │ │ │ ├── DesktopPerHostSettingsComponent.kt │ │ │ │ │ ├── PerHostSettingsPage.kt │ │ │ │ │ └── PerHostSettingsWindow.kt │ │ │ │ ├── poweractionalert/ │ │ │ │ │ ├── PowerActionAlertWindow.kt │ │ │ │ │ └── PowerActionComponent.kt │ │ │ │ ├── queue/ │ │ │ │ │ ├── QueueInfoComponent.kt │ │ │ │ │ ├── QueueWindow.kt │ │ │ │ │ ├── QueuesComponent.kt │ │ │ │ │ └── QueuesPage.kt │ │ │ │ ├── settings/ │ │ │ │ │ ├── DesktopSettings.kt │ │ │ │ │ ├── DesktopSettingsComponent.kt │ │ │ │ │ ├── FontManager.kt │ │ │ │ │ ├── SettingPageStateToPersist.kt │ │ │ │ │ ├── SettingWindow.kt │ │ │ │ │ └── SettingsPage.kt │ │ │ │ ├── singleDownloadPage/ │ │ │ │ │ ├── CompletedDownloadPage.kt │ │ │ │ │ ├── DesktopSingleDownloadPageComponent.kt │ │ │ │ │ ├── ProgressDownloadPage.kt │ │ │ │ │ ├── ShowDownloadDialogs.kt │ │ │ │ │ └── SingleDownloadPageStateToPersist.kt │ │ │ │ └── updater/ │ │ │ │ ├── NewUpdatePage.kt │ │ │ │ └── UpdaterDialog.kt │ │ │ ├── repository/ │ │ │ │ └── AppRepository.kt │ │ │ ├── storage/ │ │ │ │ ├── AppSettingsStorage.kt │ │ │ │ ├── DesktopDefinedPaths.kt │ │ │ │ ├── DesktopExtraDownloadItemSettings.kt │ │ │ │ ├── DesktopExtraQueueSettings.kt │ │ │ │ └── PageStatesStorage.kt │ │ │ ├── ui/ │ │ │ │ ├── Ui.kt │ │ │ │ ├── configurable/ │ │ │ │ │ ├── DesktopConfigurableRendererUtils.kt │ │ │ │ │ ├── comon/ │ │ │ │ │ │ ├── CommonConfigurableRenderersForDesktop.kt │ │ │ │ │ │ └── renderer/ │ │ │ │ │ │ ├── BooleanConfigurableRenderer.kt │ │ │ │ │ │ ├── DayOfWeekConfigurableRenderer.kt │ │ │ │ │ │ ├── EnumConfigurableRenderer.kt │ │ │ │ │ │ ├── FileChecksumConfigurableRenderer.kt │ │ │ │ │ │ ├── FloatConfigurableRenderer.kt │ │ │ │ │ │ ├── FolderConfigurableRenderer.kt │ │ │ │ │ │ ├── IntConfigurableRenderer.kt │ │ │ │ │ │ ├── LongConfigurableRenderer.kt │ │ │ │ │ │ ├── PerHostSettingsConfigurableRenderer.kt │ │ │ │ │ │ ├── ProxyConfigurableRenderer.kt │ │ │ │ │ │ ├── SpeedLimitConfigurableRenderer.kt │ │ │ │ │ │ ├── StringConfigurableRenderer.kt │ │ │ │ │ │ ├── ThemeConfigurableRenderer.kt │ │ │ │ │ │ └── TimeConfigurableRenderer.kt │ │ │ │ │ └── platform/ │ │ │ │ │ ├── DesktopConfigurableRenderers.kt │ │ │ │ │ ├── item/ │ │ │ │ │ │ └── FontConfigurable.kt │ │ │ │ │ └── renderer/ │ │ │ │ │ └── FontConfigurableRenderer.kt │ │ │ │ ├── error/ │ │ │ │ │ └── ErrorUi.kt │ │ │ │ ├── util/ │ │ │ │ │ └── FilePickerUtils.kt │ │ │ │ └── widget/ │ │ │ │ ├── ConfirmDialog.kt │ │ │ │ ├── MessageDialogModel.kt │ │ │ │ └── Tray.kt │ │ │ └── utils/ │ │ │ ├── AppInfo.kt │ │ │ ├── AppProperties.kt │ │ │ ├── DebugboardUtils.kt │ │ │ ├── DesktopEntryCreator.kt │ │ │ ├── DesktopShortcutManager.kt │ │ │ ├── GlobalAppExceptionHandler.kt │ │ │ ├── IntegrationUtil.kt │ │ │ ├── KeepAwakeManager.kt │ │ │ ├── OSFileIconProvider.kt │ │ │ ├── PortableUtil.kt │ │ │ ├── native_messaging/ │ │ │ │ ├── NativeMessaging.kt │ │ │ │ └── NativeMessagingManifestApplier.kt │ │ │ ├── proxy/ │ │ │ │ ├── AutoConfigurableProxyProviderForDesktop.kt │ │ │ │ ├── DesktopSystemProxySelectorProvider.kt │ │ │ │ └── ProxyCachingConfig.kt │ │ │ ├── renderapi/ │ │ │ │ └── RenderApi.kt │ │ │ └── singleInstance/ │ │ │ ├── Comunication.kt │ │ │ ├── MutableSingleInstanceServerHandler.kt │ │ │ ├── SingleAppInstanceLocker.kt │ │ │ ├── SingleInstanceServer.kt │ │ │ ├── SingleInstanceServerHandler.kt │ │ │ └── SingleInstanceUtil.kt │ │ └── resources/ │ │ └── configs/ │ │ └── app_default.properties │ ├── app-utils/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── desktop/ │ │ └── window/ │ │ ├── BrowserUtil.kt │ │ ├── custom/ │ │ │ ├── CustomWindow.kt │ │ │ ├── DropDownTooltip.kt │ │ │ ├── OptionsDialog.kt │ │ │ ├── titlebar/ │ │ │ │ ├── SystemButtonPositionProvider.kt │ │ │ │ ├── TitleBar.kt │ │ │ │ ├── TitleBarShared.kt │ │ │ │ ├── linux/ │ │ │ │ │ ├── LinuxSystemButtonsProvider.kt │ │ │ │ │ ├── LinuxTitleBar.kt │ │ │ │ │ └── SystemButtons.Linux.kt │ │ │ │ ├── mac/ │ │ │ │ │ ├── MacTitleBar.kt │ │ │ │ │ └── SystemButtons.MacOS.kt │ │ │ │ └── windows/ │ │ │ │ ├── SystemButtons.Windows.kt │ │ │ │ └── WindowsTitleBar.kt │ │ │ └── utils.kt │ │ └── moveSafe.kt │ ├── mac_utils/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── util/ │ │ └── desktop/ │ │ └── mac/ │ │ └── event/ │ │ └── MacEventHandler.kt │ └── shared/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── util/ │ └── desktop/ │ ├── DesktopUtils.kt │ ├── GlobalKeyboardModifiers.kt │ ├── OsUtils.kt │ ├── PlatformAppActivator.kt │ ├── PlatformDockToggler.kt │ ├── WindowsRegistry.kt │ ├── activator/ │ │ └── mac/ │ │ └── MacAppActivator.kt │ ├── dock/ │ │ └── mac/ │ │ └── MacDockToggler.kt │ ├── keepawake/ │ │ ├── KeepAwake.kt │ │ ├── MacKeepAwake.kt │ │ └── WindowsKeepAwake.kt │ ├── poweraction/ │ │ ├── PowerAction.kt │ │ ├── PowerActionConfig.kt │ │ ├── PowerActionLinux.kt │ │ ├── PowerActionMac.kt │ │ └── PowerActionWindows.kt │ ├── screen/ │ │ └── DesktopScreen.kt │ └── utils/ │ ├── linux/ │ │ └── LinuxUtils.kt │ ├── mac/ │ │ ├── FoundationLibrary.kt │ │ └── MacOSUtils.kt │ └── windows/ │ └── WindowsUtils.kt ├── downloader/ │ ├── core/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── androidMain/ │ │ │ └── kotlin/ │ │ │ └── ir/ │ │ │ └── amirab/ │ │ │ └── downloader/ │ │ │ └── utils/ │ │ │ └── SparseFile.android.kt │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── ir/ │ │ │ └── amirab/ │ │ │ └── downloader/ │ │ │ ├── DownloadManager.kt │ │ │ ├── DownloadManagerMinimalControl.kt │ │ │ ├── DownloadSettings.kt │ │ │ ├── Downloader.kt │ │ │ ├── DownloaderRegistry.kt │ │ │ ├── NewDownloadItemProps.kt │ │ │ ├── anntation/ │ │ │ │ └── Markers.kt │ │ │ ├── connection/ │ │ │ │ ├── Connection.kt │ │ │ │ ├── HttpDownloaderClient.kt │ │ │ │ ├── IResponseInfo.kt │ │ │ │ ├── OkHttpHttpDownloaderClient.kt │ │ │ │ ├── UserAgent.kt │ │ │ │ ├── UserAgentProvider.kt │ │ │ │ ├── proxy/ │ │ │ │ │ ├── AutoConfigurableProxyProvider.kt │ │ │ │ │ ├── Proxy.kt │ │ │ │ │ ├── ProxyStrategy.kt │ │ │ │ │ ├── ProxyStrategyProvider.kt │ │ │ │ │ ├── ProxyType.kt │ │ │ │ │ └── SystemProxySelectorProvider.kt │ │ │ │ └── response/ │ │ │ │ ├── HttpResponseInfo.kt │ │ │ │ └── headers/ │ │ │ │ ├── RangeHeaderExtractor.kt │ │ │ │ └── fileNameExtractor.kt │ │ │ ├── db/ │ │ │ │ ├── DownloadListFileStorage.kt │ │ │ │ ├── DownloadQueuePersistedDataAccess.kt │ │ │ │ ├── IDownloadListDb.kt │ │ │ │ ├── IDownloadPartListDb.kt │ │ │ │ ├── MemoryDownloadListDB.kt │ │ │ │ ├── MemoryDownloadPartStatesDB.kt │ │ │ │ ├── PartListFileStorage.kt │ │ │ │ ├── QueueFileStorage.kt │ │ │ │ └── TransactionalFileSaver.kt │ │ │ ├── destination/ │ │ │ │ ├── DestWriter.kt │ │ │ │ ├── DownloadDestination.kt │ │ │ │ ├── IncompleteFileUtil.kt │ │ │ │ ├── SegmentedDownloadDestination.kt │ │ │ │ └── SimpleDownloadDestination.kt │ │ │ ├── downloaditem/ │ │ │ │ ├── DownloadItemContext.kt │ │ │ │ ├── DownloadJob.kt │ │ │ │ ├── DownloadJobExtraConfig.kt │ │ │ │ ├── DownloadJobStatus.kt │ │ │ │ ├── DownloadStatus.kt │ │ │ │ ├── IDownloadCredentials.kt │ │ │ │ ├── IDownloadItem.kt │ │ │ │ ├── contexts/ │ │ │ │ │ └── DefaultContexts.kt │ │ │ │ ├── hls/ │ │ │ │ │ ├── HLSDownloadCredentials.kt │ │ │ │ │ ├── HLSDownloadItem.kt │ │ │ │ │ ├── HLSDownloadJob.kt │ │ │ │ │ ├── HLSDownloadJobExtraConfig.kt │ │ │ │ │ ├── HLSDownloader.kt │ │ │ │ │ ├── HLSPartDownloader.kt │ │ │ │ │ ├── HLSResponseInfo.kt │ │ │ │ │ └── IHLSCredentials.kt │ │ │ │ └── http/ │ │ │ │ ├── HttpDownloadCredentials.kt │ │ │ │ ├── HttpDownloadItem.kt │ │ │ │ ├── HttpDownloadJob.kt │ │ │ │ ├── HttpDownloader.kt │ │ │ │ └── IHttpBasedDownloadCredentials.kt │ │ │ ├── exception/ │ │ │ │ ├── DownloadNotSuccessFullException.kt │ │ │ │ ├── DownloadValidationException.kt │ │ │ │ ├── FileChangedException.kt │ │ │ │ ├── NoSpaceInStorageException.kt │ │ │ │ ├── PartTooManyErrorException.kt │ │ │ │ ├── PrepareDestinationFailedException.kt │ │ │ │ ├── ServerPartIsNotTheSameAsWeExpectException.kt │ │ │ │ ├── ServerResumeSupportChangeException.kt │ │ │ │ └── TooManyErrorException.kt │ │ │ ├── part/ │ │ │ │ ├── DownloadPart.kt │ │ │ │ ├── HttpPartDownloader.kt │ │ │ │ ├── MediaSegment.kt │ │ │ │ ├── PartDownloadStatus.kt │ │ │ │ ├── PartDownloader.kt │ │ │ │ ├── PartSplitSupport.kt │ │ │ │ ├── Parts.kt │ │ │ │ └── RangedPart.kt │ │ │ ├── queue/ │ │ │ │ ├── DownloadQueue.kt │ │ │ │ ├── ManualDownloadQueue.kt │ │ │ │ ├── QueueEvent.kt │ │ │ │ ├── QueueManager.kt │ │ │ │ └── ScheduleTimes.kt │ │ │ └── utils/ │ │ │ ├── CallAwait.kt │ │ │ ├── CollectionUtils.kt │ │ │ ├── DuplicateFilter.kt │ │ │ ├── EmptyFileCreator.kt │ │ │ ├── ExceptionUtils.kt │ │ │ ├── FileNameUtil.kt │ │ │ ├── FlowUtils.kt │ │ │ ├── IDistStat.kt │ │ │ ├── LockList.kt │ │ │ ├── Logger.kt │ │ │ ├── NumUtil.kt │ │ │ ├── OnDuplicateStrategy.kt │ │ │ ├── SparseFile.kt │ │ │ ├── SplitToRange.kt │ │ │ └── TimeUtils.kt │ │ └── desktopMain/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── downloader/ │ │ └── utils/ │ │ └── SparseFile.desktop.kt │ └── monitor/ │ ├── build.gradle.kts │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── downloader/ │ └── monitor/ │ ├── CompletedDownloadItemState.kt │ ├── DownloadItemStateFactory.kt │ ├── DownloadMonitor.kt │ ├── DownloadStateUtil.kt │ ├── IDownloadItemState.kt │ ├── IDownloadMonitor.kt │ ├── ProcessingDownloadItemState.kt │ └── UiPart.kt ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── integration/ │ └── server/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── integration/ │ │ ├── ApiQueueModel.kt │ │ ├── DownloadCredentialsFromIntegration.kt │ │ ├── Integration.kt │ │ ├── IntegrationHandler.kt │ │ ├── MyRequestAndResponse.kt │ │ ├── MyServer.kt │ │ ├── MySunHttpServer.kt │ │ ├── NewDownloadTask.kt │ │ └── http4k/ │ │ └── MyHttp4KServer.kt │ └── resources/ │ ├── logback.xml │ └── rules.pro ├── scripts/ │ ├── install.sh │ └── uninstall.sh ├── settings.gradle.kts └── shared/ ├── app/ │ ├── build.gradle.kts │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── shared/ │ │ ├── ui/ │ │ │ ├── modifier/ │ │ │ │ └── PointerHoverIcon.android.kt │ │ │ ├── theme/ │ │ │ │ └── PlatformThemeDefinitions.android.kt │ │ │ └── widget/ │ │ │ ├── Tooltip.android.kt │ │ │ └── menu/ │ │ │ └── custom/ │ │ │ ├── Option.android.kt │ │ │ └── WithContextMenu.android.kt │ │ └── util/ │ │ ├── ClipboardUtil.android.kt │ │ ├── DesktopDiskStat.android.kt │ │ ├── PlatformThemeDetector.android.kt │ │ ├── downloadlocation/ │ │ │ └── PlatformDownloadLocationProvider.android.kt │ │ └── ui/ │ │ └── widget/ │ │ └── MPBackHandler.android.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── shared/ │ │ ├── action/ │ │ │ ├── CommonActionFactories.kt │ │ │ └── DevActionFactories.kt │ │ ├── downloaderinui/ │ │ │ ├── BasicDownloadItem.kt │ │ │ ├── CredentialAndItemMapper.kt │ │ │ ├── DownloadSize.kt │ │ │ ├── DownloadUiChecker.kt │ │ │ ├── DownloaderInUi.kt │ │ │ ├── DownloaderInUiRegistry.kt │ │ │ ├── LinkChecker.kt │ │ │ ├── LinkCheckerFactory.kt │ │ │ ├── add/ │ │ │ │ ├── AddDownloadChecker.kt │ │ │ │ ├── CanAddResult.kt │ │ │ │ ├── NewDownloadInputs.kt │ │ │ │ └── NewDownloadInputsFactory.kt │ │ │ ├── edit/ │ │ │ │ ├── CanEditDownloadResult.kt │ │ │ │ ├── CanEditWarnings.kt │ │ │ │ ├── DownloadConflictDetector.kt │ │ │ │ ├── EditDownloadCheckerFactory.kt │ │ │ │ ├── EditDownloadInputs.kt │ │ │ │ └── EditDownloadInputsFactory.kt │ │ │ ├── hls/ │ │ │ │ ├── HLSDownloaderInUi.kt │ │ │ │ ├── HLSLinkChecker.kt │ │ │ │ ├── HlsItemToCredentialMapper.kt │ │ │ │ ├── UiProcessingItemForHSLFactory.kt │ │ │ │ ├── add/ │ │ │ │ │ ├── HLSDownloadUIChecker.kt │ │ │ │ │ └── HLSNewDownloadInputs.kt │ │ │ │ └── edit/ │ │ │ │ ├── HLSEditDownloadChecker.kt │ │ │ │ └── HLSEditDownloadInputs.kt │ │ │ └── http/ │ │ │ ├── HttpCredentialsToItemMapper.kt │ │ │ ├── HttpDownloaderInUi.kt │ │ │ ├── add/ │ │ │ │ ├── HttpDownloadUiChecker.kt │ │ │ │ ├── HttpLinkChecker.kt │ │ │ │ └── HttpNewDownloadInputs.kt │ │ │ ├── applyHostSettingsToExtraConfig.kt │ │ │ └── edit/ │ │ │ ├── HttpEditDownloadChecker.kt │ │ │ └── HttpEditDownloadInputs.kt │ │ ├── pagemanager/ │ │ │ ├── AboutPageManager.kt │ │ │ ├── AddDownloadDialogManager.kt │ │ │ ├── BatchDownloadPageManager.kt │ │ │ ├── CategoryDialogManager.kt │ │ │ ├── DownloadDialogManager.kt │ │ │ ├── EditDownloadDialogManager.kt │ │ │ ├── EnterNewURLDialogManager.kt │ │ │ ├── ExitApplicationRequestManager.kt │ │ │ ├── FileChecksumDialogManager.kt │ │ │ ├── NotificationSender.kt │ │ │ ├── OpenSourceLibrariesPageManager.kt │ │ │ ├── PerHostSettingsPageManager.kt │ │ │ ├── QueuePageManager.kt │ │ │ ├── SettingsPageManager.kt │ │ │ └── TranslatorsPageManager.kt │ │ ├── pages/ │ │ │ ├── adddownload/ │ │ │ │ ├── AddDownloadComponent.kt │ │ │ │ ├── AddDownloadConfig.kt │ │ │ │ ├── AddDownloadCredentialsInUiProps.kt │ │ │ │ ├── ImportOptions.kt │ │ │ │ ├── multiple/ │ │ │ │ │ ├── BaseAddMultiDownloadComponent.kt │ │ │ │ │ └── OnRequestAdd.kt │ │ │ │ └── single/ │ │ │ │ └── BaseAddSingleDownloadComponent.kt │ │ │ ├── batchdownload/ │ │ │ │ └── BaseBatchDownloadComponent.kt │ │ │ ├── category/ │ │ │ │ └── CategoryComponent.kt │ │ │ ├── checksum/ │ │ │ │ └── BaseFileChecksumComponent.kt │ │ │ ├── credits/ │ │ │ │ └── translators/ │ │ │ │ └── LanguageTranslationInfo.kt │ │ │ ├── editdownload/ │ │ │ │ └── BaseEditDownloadComponent.kt │ │ │ ├── enterurl/ │ │ │ │ ├── BaseEnterNewURLComponent.kt │ │ │ │ └── DownloaderSelection.kt │ │ │ ├── home/ │ │ │ │ ├── AbstractDownloadActions.kt │ │ │ │ ├── BaseHomeComponent.kt │ │ │ │ ├── CategoryActions.kt │ │ │ │ ├── FilterState.kt │ │ │ │ ├── PromptStates.kt │ │ │ │ ├── category/ │ │ │ │ │ ├── DefinedStatusCategories.kt │ │ │ │ │ ├── DownloadStatusCategoryFilter.kt │ │ │ │ │ └── DownloadStatusCategoryFilterByList.kt │ │ │ │ └── queue/ │ │ │ │ └── QueueActions.kt │ │ │ ├── perhostsettings/ │ │ │ │ └── PerHostSettingsComponent.kt │ │ │ └── updater/ │ │ │ ├── RenderUpdateNotifications.kt │ │ │ └── UpdateComponent.kt │ │ ├── repository/ │ │ │ └── BaseAppRepository.kt │ │ ├── settings/ │ │ │ ├── BaseSettingsComponent.kt │ │ │ └── CommonSettings.kt │ │ ├── singledownloadpage/ │ │ │ ├── BaseSingleDownloadComponent.kt │ │ │ ├── DownloadStatusStringSource.kt │ │ │ └── SingleDownloadPagePropertyItem.kt │ │ ├── storage/ │ │ │ ├── BaseAppSettingsStorage.kt │ │ │ ├── ExtraDownloadSettingsStorage.kt │ │ │ ├── ExtraQueueSettingsStorage.kt │ │ │ ├── IExtraDownloadSettingsStorage.kt │ │ │ ├── IExtraQueueSettingsStorage.kt │ │ │ ├── ILastSavedLocationsStorage.kt │ │ │ ├── PerHostSettingsDatastoreStorage.kt │ │ │ ├── ProxyDatastoreStorage.kt │ │ │ ├── SupportedSizeUnits.kt │ │ │ └── impl/ │ │ │ └── LastSavedLocationStorage.kt │ │ ├── ui/ │ │ │ ├── Bootstrap.kt │ │ │ ├── configurable/ │ │ │ │ ├── BaseEnumConfigurable.kt │ │ │ │ ├── BaseLongConfigurable.kt │ │ │ │ ├── CommonConfigurableRenderers.kt │ │ │ │ ├── Configurable.kt │ │ │ │ ├── ConfigurableGroup.kt │ │ │ │ ├── ConfigurableRendererRegistry.kt │ │ │ │ ├── RenderConfigurable.kt │ │ │ │ ├── RenderConfigurableGroup.kt │ │ │ │ ├── Shared.kt │ │ │ │ └── item/ │ │ │ │ ├── BooleanConfigurable.kt │ │ │ │ ├── DayOfWeekConfigurable.kt │ │ │ │ ├── EnumConfigurable.kt │ │ │ │ ├── FileChecksumConfigurable.kt │ │ │ │ ├── FloatConfigurable.kt │ │ │ │ ├── FolderConfigurable.kt │ │ │ │ ├── IntConfigurable.kt │ │ │ │ ├── LongConfigurable.kt │ │ │ │ ├── NavigatableConfigurable.kt │ │ │ │ ├── ProxyConfigurable.kt │ │ │ │ ├── SpeedLimitConfigurable.kt │ │ │ │ ├── StringConfigurable.kt │ │ │ │ ├── ThemeConfigurable.kt │ │ │ │ └── TimeConfigurable.kt │ │ │ ├── modifier/ │ │ │ │ └── PointerHoverIcon.kt │ │ │ ├── theme/ │ │ │ │ ├── ABDownloaderTheme.kt │ │ │ │ ├── DefaultThemes.kt │ │ │ │ ├── Markdown.kt │ │ │ │ ├── PlatformThemeDefinitions.kt │ │ │ │ ├── ThemeManager.kt │ │ │ │ └── ThemeSettingsStorage.kt │ │ │ └── widget/ │ │ │ ├── ActionButton.kt │ │ │ ├── ActionContainer.kt │ │ │ ├── AddUrlButton.kt │ │ │ ├── CheckBox.kt │ │ │ ├── DashedBorder.kt │ │ │ ├── ExpandableItem.kt │ │ │ ├── Handle.kt │ │ │ ├── Help.kt │ │ │ ├── IconPick.kt │ │ │ ├── Language.kt │ │ │ ├── LinkText.kt │ │ │ ├── LoadingIndicator.kt │ │ │ ├── MainActionButton.kt │ │ │ ├── MessageDialogType.kt │ │ │ ├── Multiselect.kt │ │ │ ├── MyIconButton.kt │ │ │ ├── MyTextField.kt │ │ │ ├── MyTextFieldWithIcons.kt │ │ │ ├── NavigateableItem.kt │ │ │ ├── Notification.kt │ │ │ ├── NumberTextField.kt │ │ │ ├── Popup.kt │ │ │ ├── RadioButton.kt │ │ │ ├── Switch.kt │ │ │ ├── Tabs.kt │ │ │ ├── Text.kt │ │ │ ├── Tooltip.kt │ │ │ ├── menu/ │ │ │ │ └── custom/ │ │ │ │ ├── DropDown.kt │ │ │ │ ├── MenuColumn.kt │ │ │ │ ├── Option.kt │ │ │ │ ├── SiblingMenuPositionProvider.kt │ │ │ │ ├── SubMenu.kt │ │ │ │ └── WithContextMenu.kt │ │ │ └── sort/ │ │ │ ├── ComparatorProvider.kt │ │ │ ├── Sort.kt │ │ │ ├── SortIndicatorMode.kt │ │ │ └── sorted.kt │ │ ├── updater/ │ │ │ └── UpdateDownloaderViaDownloadSystem.kt │ │ └── util/ │ │ ├── AppHostNameVerifier.kt │ │ ├── AppSSLFactoryProvider.kt │ │ ├── AppVersion.kt │ │ ├── AutoStartManager.kt │ │ ├── BaseComponent.kt │ │ ├── BaseConstants.kt │ │ ├── BaseSettings.kt │ │ ├── BottomSheet.kt │ │ ├── BrowserIntegrationModel.kt │ │ ├── ClipboardUtil.kt │ │ ├── ColorUtils.kt │ │ ├── ContainsShortcuts.kt │ │ ├── CoroutineUtils.kt │ │ ├── DefinedPaths.kt │ │ ├── DesktopDiskStat.kt │ │ ├── DownloadFoldersRegistry.kt │ │ ├── DownloadItemOpener.kt │ │ ├── DownloadSystem.kt │ │ ├── DurationUtil.kt │ │ ├── ExceptionToString.kt │ │ ├── FileIconProvider.kt │ │ ├── FilenameFixer.kt │ │ ├── HashUtil.kt │ │ ├── IPUtils.kt │ │ ├── InstanceCheckUtils.kt │ │ ├── LimitationsInUI.kt │ │ ├── Platform.kt │ │ ├── PlatformKeyStroke.kt │ │ ├── PlatformThemeDetector.kt │ │ ├── PopUpContainer.kt │ │ ├── RememberDotLoading.kt │ │ ├── Responsive.kt │ │ ├── SharedConstants.kt │ │ ├── ShortcutManager.kt │ │ ├── ShouldValidate.kt │ │ ├── SizeAndSpeedUnitProvider.kt │ │ ├── SizeUtil.kt │ │ ├── StateUtils.kt │ │ ├── StringUtils.kt │ │ ├── SystemDownloadLocationProvider.kt │ │ ├── TimeUtil.kt │ │ ├── UiConstants.kt │ │ ├── UserAgentProviderFromSettings.kt │ │ ├── ValueUtils.kt │ │ ├── appinfo/ │ │ │ └── PreviousVersion.kt │ │ ├── autoremove/ │ │ │ └── RemovedDownloadsFromDiskTracker.kt │ │ ├── category/ │ │ │ ├── Category.kt │ │ │ ├── CategoryFileStorage.kt │ │ │ ├── CategoryItem.kt │ │ │ ├── CategoryManager.kt │ │ │ ├── CategoryManagerExtensions.kt │ │ │ ├── CategorySelectionMode.kt │ │ │ ├── CategoryStorage.kt │ │ │ ├── DefaultCategories.kt │ │ │ ├── DownloadManagerCategoryItemProvider.kt │ │ │ ├── ICategoryItemProvider.kt │ │ │ └── InMemoryCategoryStorage.kt │ │ ├── downloadlocation/ │ │ │ └── PlatformDownloadLocationProvider.kt │ │ ├── extractors/ │ │ │ ├── Extractor.kt │ │ │ └── linkextractor/ │ │ │ ├── DownloadCredentialExtractor.kt │ │ │ ├── DownloadCredentialsFromCurl.kt │ │ │ └── URLExtractors.kt │ │ ├── mvi/ │ │ │ ├── ContainsEffects.kt │ │ │ ├── ContainsScreenState.kt │ │ │ └── EventHandler.kt │ │ ├── ondownloadcompletion/ │ │ │ ├── OnDownloadCompletionAction.kt │ │ │ ├── OnDownloadCompletionActionProvider.kt │ │ │ └── OnDownloadCompletionActionRunner.kt │ │ ├── onqueuecompletion/ │ │ │ ├── OnQueueCompletionActionProvider.kt │ │ │ ├── OnQueueEventAction.kt │ │ │ └── OnQueueEventActionRunner.kt │ │ ├── perhostsettings/ │ │ │ ├── PerHostSettingsItem.kt │ │ │ ├── PerHostSettingsManager.kt │ │ │ └── PerHostSettingsStorage.kt │ │ ├── proxy/ │ │ │ ├── IProxyStorage.kt │ │ │ ├── Proxy.kt │ │ │ └── ProxyManager.kt │ │ └── ui/ │ │ ├── BaseMyColors.kt │ │ ├── IMyIcons.kt │ │ ├── LocalIsDebugMode.kt │ │ ├── LocalProviders.kt │ │ ├── LocalTitleBarDirection.kt │ │ ├── MyColors.kt │ │ ├── ScrollbableContent.kt │ │ ├── Scrollbar.kt │ │ ├── icon/ │ │ │ └── MyIcons.kt │ │ ├── theme/ │ │ │ ├── ISystemThemeDetector.kt │ │ │ ├── MaterialRipple.kt │ │ │ ├── MyShapes.kt │ │ │ └── Sizing.kt │ │ └── widget/ │ │ ├── Icon.kt │ │ ├── MPBackHandler.kt │ │ ├── ScreenSurface.kt │ │ └── ScrolFade.kt │ └── desktopMain/ │ └── kotlin/ │ └── com/ │ └── abdownloadmanager/ │ └── shared/ │ ├── ui/ │ │ ├── modifier/ │ │ │ └── PointerHoverIcon.desktop.kt │ │ ├── theme/ │ │ │ ├── MyContextMenuRepresentation.kt │ │ │ └── PlatformThemeDefinitions.desktop.kt │ │ ├── util/ │ │ │ └── LocalWindow.desktop.kt │ │ └── widget/ │ │ ├── Tooltip.desktop.kt │ │ ├── menu/ │ │ │ ├── custom/ │ │ │ │ ├── MenuBar.kt │ │ │ │ ├── Option.desktop.kt │ │ │ │ └── WithContextMenu.desktop.kt │ │ │ └── native/ │ │ │ └── NativeMenuBar.kt │ │ └── table/ │ │ └── customtable/ │ │ ├── CellPadding.kt │ │ ├── Table.kt │ │ ├── TableUtils.kt │ │ └── styled/ │ │ └── MyStyledHeader.kt │ └── util/ │ ├── ClipboardUtil.desktop.kt │ ├── DesktopDiskStat.desktop.kt │ ├── PlatformThemeDetector.desktop.kt │ ├── downloadlocation/ │ │ ├── DesktopDownloadLocationProvider.kt │ │ ├── LinuxDownloadLocationProvider.kt │ │ ├── MacDownloadLocationProvider.kt │ │ ├── PlatformDownloadLocationProvider.desktop.kt │ │ └── WindowsDownloadLocationProvider.kt │ └── ui/ │ └── widget/ │ └── MPBackHandler.desktop.kt ├── auto-start/ │ ├── build.gradle.kts │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── util/ │ │ └── startup/ │ │ ├── AndroidStartupManager.kt │ │ └── Startup.android.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── util/ │ │ └── startup/ │ │ ├── AbstractStartupManager.kt │ │ └── Startup.kt │ └── desktopMain/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── util/ │ └── startup/ │ ├── AbstractDesktopStartupManager.kt │ ├── HeadlessStartupDesktop.kt │ ├── MacOSStartupDesktop.kt │ ├── Startup.kt │ ├── UnixXDGStartupDesktop.kt │ ├── Utils.kt │ └── WindowsStartupDesktop.kt ├── compose-utils/ │ ├── build.gradle.kts │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── util/ │ └── compose/ │ ├── Helpers.kt │ ├── IIconResolver.kt │ ├── IconSource.kt │ ├── StringSource.kt │ ├── action/ │ │ ├── AnAction.kt │ │ ├── Extensions.kt │ │ ├── MenuDsl.kt │ │ └── MenuItem.kt │ ├── contants/ │ │ └── Constants.kt │ ├── layout/ │ │ └── RelativeAlignment.kt │ ├── localizationmanager/ │ │ ├── ILanguageNameProvider.kt │ │ ├── LanguageManager.kt │ │ ├── LanguageSourceProvider.kt │ │ ├── LanguageStorage.kt │ │ ├── LocalLanguageManager.kt │ │ ├── MyLocale.kt │ │ └── StringVariableReplacer.kt │ ├── modifiers/ │ │ ├── AutoMirror.kt │ │ └── Clickables.kt │ └── resources/ │ └── Resources.kt ├── config/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── util/ │ └── config/ │ ├── Config.kt │ ├── ConfigKeyWithPrimitiveType.kt │ ├── ConfigToJson.kt │ ├── JsonMapper.kt │ ├── NestedCreator.kt │ ├── datastore/ │ │ ├── KotlinSerializationDataStore.kt │ │ └── MapConfigDataStore.kt │ └── extensions.kt ├── nanohttp4k/ │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── util/ │ │ └── http4k/ │ │ └── NanoHttpServer.kt │ └── resources/ │ └── rules.pro ├── resources/ │ ├── build.gradle.kts │ ├── contracts/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── ir/ │ │ └── amirab/ │ │ └── resources/ │ │ └── contracts/ │ │ ├── MyLanguageResource.kt │ │ └── MyStringResource.kt │ └── src/ │ └── commonMain/ │ ├── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── resources/ │ │ ├── ABDMLanguageResources.kt │ │ └── icons/ │ │ ├── ABDMIcons.kt │ │ ├── AddLink.kt │ │ ├── Alphabet.kt │ │ ├── AppIcon.kt │ │ ├── Back.kt │ │ ├── BrowserGoogleChrome.kt │ │ ├── BrowserMicrosoftEdge.kt │ │ ├── BrowserMozillaFirefox.kt │ │ ├── BrowserOpera.kt │ │ ├── Check.kt │ │ ├── Clear.kt │ │ ├── Clipboard.kt │ │ ├── Clock.kt │ │ ├── Colors.kt │ │ ├── Copy.kt │ │ ├── Data.kt │ │ ├── Delete.kt │ │ ├── Down.kt │ │ ├── DownSpeed.kt │ │ ├── DragAndDrop.kt │ │ ├── Earth.kt │ │ ├── Edit.kt │ │ ├── Exit.kt │ │ ├── ExternalLink.kt │ │ ├── Fast.kt │ │ ├── File.kt │ │ ├── FileApplication.kt │ │ ├── FileDocument.kt │ │ ├── FileMusic.kt │ │ ├── FilePicture.kt │ │ ├── FileUnknown.kt │ │ ├── FileVideo.kt │ │ ├── FileZip.kt │ │ ├── Flag.kt │ │ ├── Folder.kt │ │ ├── FolderFinished.kt │ │ ├── FolderUnfinished.kt │ │ ├── Grip.kt │ │ ├── Group.kt │ │ ├── Hearth.kt │ │ ├── Info.kt │ │ ├── Language.kt │ │ ├── List.kt │ │ ├── Lock.kt │ │ ├── Menu.kt │ │ ├── Minus.kt │ │ ├── Network.kt │ │ ├── Next.kt │ │ ├── OpenSource.kt │ │ ├── Pause.kt │ │ ├── Permission.kt │ │ ├── Plus.kt │ │ ├── QuestionMark.kt │ │ ├── Queue.kt │ │ ├── QueueStart.kt │ │ ├── QueueStop.kt │ │ ├── Refresh.kt │ │ ├── Resume.kt │ │ ├── Scheduler.kt │ │ ├── Search.kt │ │ ├── SelectAll.kt │ │ ├── SelectInside.kt │ │ ├── SelectInvert.kt │ │ ├── Settings.kt │ │ ├── Share.kt │ │ ├── Sort123.kt │ │ ├── Sort321.kt │ │ ├── Speaker.kt │ │ ├── SpeedLimiter.kt │ │ ├── Stop.kt │ │ ├── StopAll.kt │ │ ├── Telegram.kt │ │ ├── Theme.kt │ │ ├── Undo.kt │ │ ├── Up.kt │ │ ├── VerticalDirection.kt │ │ ├── WindowClose.kt │ │ ├── WindowFloating.kt │ │ ├── WindowMaximize.kt │ │ └── WindowMinimize.kt │ └── resources/ │ └── com/ │ └── abdownloadmanager/ │ └── resources/ │ ├── credits/ │ │ └── translators.json │ └── locales/ │ ├── ar_SA.properties │ ├── bn_BD.properties │ ├── bqi_IR.properties │ ├── ckb_IR.properties │ ├── de_DE.properties │ ├── en_US.properties │ ├── es_ES.properties │ ├── fa_IR.properties │ ├── fi_FI.properties │ ├── fr_FR.properties │ ├── hu_HU.properties │ ├── id_ID.properties │ ├── it_IT.properties │ ├── ja_JP.properties │ ├── ka_GE.properties │ ├── ko_KR.properties │ ├── lt_LT.properties │ ├── pl_PL.properties │ ├── pt_BR.properties │ ├── ru_RU.properties │ ├── sq_AL.properties │ ├── th_TH.properties │ ├── tr_TR.properties │ ├── uk_UA.properties │ ├── vi_VN.properties │ ├── zh_CN.properties │ └── zh_TW.properties ├── updater/ │ ├── build.gradle.kts │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ ├── AndroidDirectLinkUpdateApplier.kt │ │ └── ApkInstaller.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ ├── ArtifactUtil.kt │ │ ├── UpdateDownloadLocationProvider.kt │ │ ├── UpdateManager.kt │ │ ├── github/ │ │ │ └── githubapi.kt │ │ ├── updateapplier/ │ │ │ ├── BaseUpdateApplier.kt │ │ │ ├── UpdateApplier.kt │ │ │ ├── UpdateDownloader.kt │ │ │ └── UpdateInstaller.kt │ │ └── updatechecker/ │ │ ├── DummyUpdateChecker.kt │ │ ├── GithubUpdateChecker.kt │ │ ├── UpdateChecker.kt │ │ └── UpdateInfo.kt │ └── desktopMain/ │ ├── kotlin/ │ │ └── com/ │ │ └── abdownloadmanager/ │ │ └── updateapplier/ │ │ ├── DesktopDirectLinkUpdateApplier.kt │ │ ├── UpdateInstallerByWindowsExecutable.kt │ │ └── UpdateInstallerFromArchiveFile.kt │ └── resources/ │ └── com/ │ └── abdownloadmanager/ │ └── updater/ │ ├── updater_linux.sh │ ├── updater_macos.sh │ └── updater_windows.bat └── utils/ ├── build.gradle.kts └── src/ ├── androidMain/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ └── util/ │ ├── openUrl.android.kt │ └── osfileutil/ │ ├── AndroidFileUtil.kt │ └── FileUtils.android.kt ├── commonMain/ │ └── kotlin/ │ └── ir/ │ └── amirab/ │ ├── SelectionUtil.kt │ └── util/ │ ├── AppVersionTracker.kt │ ├── CallAwait.kt │ ├── CollectionUtils.kt │ ├── Exec.kt │ ├── FileExtensions.kt │ ├── FileNameValidator.kt │ ├── FilenameDecoder.kt │ ├── GuardedEntry.kt │ ├── HttpUrlUtils.kt │ ├── IfThen.kt │ ├── NullCheck.kt │ ├── OkioUtils.kt │ ├── PathValidator.kt │ ├── StringUtil.kt │ ├── ValueHolder.kt │ ├── coroutines/ │ │ ├── CombineFlows.kt │ │ ├── CoroutineUtils.kt │ │ └── debounce.kt │ ├── datasize/ │ │ ├── BaseSize.kt │ │ ├── CommonSizeConvertConfigs.kt │ │ ├── CommonSizeUnits.kt │ │ ├── ConvertSizeConfig.kt │ │ ├── SizeConverter.kt │ │ ├── SizeFactors.kt │ │ ├── SizeUnit.kt │ │ ├── SizeWithUnit.kt │ │ └── extensions.kt │ ├── enumValueOrNull.kt │ ├── flow/ │ │ ├── FlowOperators.kt │ │ ├── FlowUtils.kt │ │ └── StateFlowUtil.kt │ ├── lock.kt │ ├── openUrl.kt │ └── osfileutil/ │ ├── FileUtils.kt │ └── FileUtilsBase.kt └── desktopMain/ └── kotlin/ └── ir/ └── amirab/ └── util/ ├── openUrl.desktop.kt └── osfileutil/ ├── DesktopFileUtils.kt ├── FileUtils.desktop.kt ├── JVMFileUtils.kt ├── LinuxFileUtils.kt ├── MacOsFileUtils.kt └── WindowsFileUtils.kt