/* steamtinkerlaunch-row.c generated by valac 0.56.19, the Vala compiler
 * generated from steamtinkerlaunch-row.vala, do not modify */

#include <adwaita.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <glib.h>
#include <glib/gi18n-lib.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>
#include <float.h>
#include <math.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW (proton_plus_widgets_release_row_get_type ())
#define PROTON_PLUS_WIDGETS_RELEASE_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRow))
#define PROTON_PLUS_WIDGETS_RELEASE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRowClass))
#define PROTON_PLUS_WIDGETS_IS_RELEASE_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW))
#define PROTON_PLUS_WIDGETS_IS_RELEASE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW))
#define PROTON_PLUS_WIDGETS_RELEASE_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRowClass))

typedef struct _ProtonPlusWidgetsReleaseRow ProtonPlusWidgetsReleaseRow;
typedef struct _ProtonPlusWidgetsReleaseRowClass ProtonPlusWidgetsReleaseRowClass;
typedef struct _ProtonPlusWidgetsReleaseRowPrivate ProtonPlusWidgetsReleaseRowPrivate;

#define PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW (proton_plus_widgets_steam_tinker_launch_row_get_type ())
#define PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW, ProtonPlusWidgetsSteamTinkerLaunchRow))
#define PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW, ProtonPlusWidgetsSteamTinkerLaunchRowClass))
#define PROTON_PLUS_WIDGETS_IS_STEAM_TINKER_LAUNCH_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW))
#define PROTON_PLUS_WIDGETS_IS_STEAM_TINKER_LAUNCH_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW))
#define PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW, ProtonPlusWidgetsSteamTinkerLaunchRowClass))

typedef struct _ProtonPlusWidgetsSteamTinkerLaunchRow ProtonPlusWidgetsSteamTinkerLaunchRow;
typedef struct _ProtonPlusWidgetsSteamTinkerLaunchRowClass ProtonPlusWidgetsSteamTinkerLaunchRowClass;
typedef struct _ProtonPlusWidgetsSteamTinkerLaunchRowPrivate ProtonPlusWidgetsSteamTinkerLaunchRowPrivate;

#define PROTON_PLUS_MODELS_TYPE_BASE_RELEASE (proton_plus_models_base_release_get_type ())
#define PROTON_PLUS_MODELS_BASE_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseRelease))
#define PROTON_PLUS_MODELS_BASE_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseReleaseClass))
#define PROTON_PLUS_MODELS_IS_BASE_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE))
#define PROTON_PLUS_MODELS_IS_BASE_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE))
#define PROTON_PLUS_MODELS_BASE_RELEASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseReleaseClass))

typedef struct _ProtonPlusModelsBaseRelease ProtonPlusModelsBaseRelease;
typedef struct _ProtonPlusModelsBaseReleaseClass ProtonPlusModelsBaseReleaseClass;

#define PROTON_PLUS_MODELS_TYPE_RELEASE (proton_plus_models_release_get_type ())
#define PROTON_PLUS_MODELS_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsRelease))
#define PROTON_PLUS_MODELS_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsReleaseClass))
#define PROTON_PLUS_MODELS_IS_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE))
#define PROTON_PLUS_MODELS_IS_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_RELEASE))
#define PROTON_PLUS_MODELS_RELEASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsReleaseClass))

typedef struct _ProtonPlusModelsRelease ProtonPlusModelsRelease;
typedef struct _ProtonPlusModelsReleaseClass ProtonPlusModelsReleaseClass;

#define PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE (proton_plus_models_releases_update_get_type ())
#define PROTON_PLUS_MODELS_RELEASES_UPDATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE, ProtonPlusModelsReleasesUpdate))
#define PROTON_PLUS_MODELS_RELEASES_UPDATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE, ProtonPlusModelsReleasesUpdateClass))
#define PROTON_PLUS_MODELS_RELEASES_IS_UPDATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE))
#define PROTON_PLUS_MODELS_RELEASES_IS_UPDATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE))
#define PROTON_PLUS_MODELS_RELEASES_UPDATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_UPDATE, ProtonPlusModelsReleasesUpdateClass))

typedef struct _ProtonPlusModelsReleasesUpdate ProtonPlusModelsReleasesUpdate;
typedef struct _ProtonPlusModelsReleasesUpdateClass ProtonPlusModelsReleasesUpdateClass;

#define PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH (proton_plus_models_releases_steam_tinker_launch_get_type ())
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsReleasesSteamTinkerLaunch))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsReleasesSteamTinkerLaunchClass))
#define PROTON_PLUS_MODELS_RELEASES_IS_STEAM_TINKER_LAUNCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH))
#define PROTON_PLUS_MODELS_RELEASES_IS_STEAM_TINKER_LAUNCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_STEAM_TINKER_LAUNCH, ProtonPlusModelsReleasesSteamTinkerLaunchClass))

typedef struct _ProtonPlusModelsReleasesSteamTinkerLaunch ProtonPlusModelsReleasesSteamTinkerLaunch;
typedef struct _ProtonPlusModelsReleasesSteamTinkerLaunchClass ProtonPlusModelsReleasesSteamTinkerLaunchClass;
enum  {
	PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW_0_PROPERTY,
	PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW_NUM_PROPERTIES
};
static GParamSpec* proton_plus_widgets_steam_tinker_launch_row_properties[PROTON_PLUS_WIDGETS_STEAM_TINKER_LAUNCH_ROW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define PROTON_PLUS_MODELS_TYPE_RUNNER (proton_plus_models_runner_get_type ())
#define PROTON_PLUS_MODELS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunner))
#define PROTON_PLUS_MODELS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))
#define PROTON_PLUS_MODELS_IS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_IS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_RUNNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))

typedef struct _ProtonPlusModelsRunner ProtonPlusModelsRunner;
typedef struct _ProtonPlusModelsRunnerClass ProtonPlusModelsRunnerClass;

#define PROTON_PLUS_MODELS_TYPE_GROUP (proton_plus_models_group_get_type ())
#define PROTON_PLUS_MODELS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroup))
#define PROTON_PLUS_MODELS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))
#define PROTON_PLUS_MODELS_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))

typedef struct _ProtonPlusModelsGroup ProtonPlusModelsGroup;
typedef struct _ProtonPlusModelsGroupClass ProtonPlusModelsGroupClass;

#define PROTON_PLUS_MODELS_TYPE_LAUNCHER (proton_plus_models_launcher_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncher))
#define PROTON_PLUS_MODELS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))
#define PROTON_PLUS_MODELS_IS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_IS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))

typedef struct _ProtonPlusModelsLauncher ProtonPlusModelsLauncher;
typedef struct _ProtonPlusModelsLauncherClass ProtonPlusModelsLauncherClass;
typedef struct _ProtonPlusModelsLauncherPrivate ProtonPlusModelsLauncherPrivate;

#define PROTON_PLUS_MODELS_TYPE_GAME (proton_plus_models_game_get_type ())
#define PROTON_PLUS_MODELS_GAME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGame))
#define PROTON_PLUS_MODELS_GAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGameClass))
#define PROTON_PLUS_MODELS_IS_GAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_GAME))
#define PROTON_PLUS_MODELS_IS_GAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_GAME))
#define PROTON_PLUS_MODELS_GAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_GAME, ProtonPlusModelsGameClass))

typedef struct _ProtonPlusModelsGame ProtonPlusModelsGame;
typedef struct _ProtonPlusModelsGameClass ProtonPlusModelsGameClass;

#define PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER (proton_plus_models_simple_runner_get_type ())
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunner))
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunnerClass))
#define PROTON_PLUS_MODELS_IS_SIMPLE_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER))
#define PROTON_PLUS_MODELS_IS_SIMPLE_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER))
#define PROTON_PLUS_MODELS_SIMPLE_RUNNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_SIMPLE_RUNNER, ProtonPlusModelsSimpleRunnerClass))

typedef struct _ProtonPlusModelsSimpleRunner ProtonPlusModelsSimpleRunner;
typedef struct _ProtonPlusModelsSimpleRunnerClass ProtonPlusModelsSimpleRunnerClass;
typedef enum  {
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM,
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK,
	PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP
} ProtonPlusModelsLauncherInstallationTypes;

#define PROTON_PLUS_MODELS_LAUNCHER_TYPE_INSTALLATION_TYPES (proton_plus_models_launcher_installation_types_get_type ())

#define PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER (proton_plus_models_download_manager_get_type ())
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManager))
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManagerClass))
#define PROTON_PLUS_MODELS_IS_DOWNLOAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER))
#define PROTON_PLUS_MODELS_IS_DOWNLOAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER))
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManagerClass))

typedef struct _ProtonPlusModelsDownloadManager ProtonPlusModelsDownloadManager;
typedef struct _ProtonPlusModelsDownloadManagerClass ProtonPlusModelsDownloadManagerClass;

#define PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG (proton_plus_widgets_error_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialog))
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialogClass))
#define PROTON_PLUS_WIDGETS_IS_ERROR_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_ERROR_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG))
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialogClass))

typedef struct _ProtonPlusWidgetsErrorDialog ProtonPlusWidgetsErrorDialog;
typedef struct _ProtonPlusWidgetsErrorDialogClass ProtonPlusWidgetsErrorDialogClass;
#define _g_free0(var) (var = (g_free (var), NULL))

#define PROTON_PLUS_WIDGETS_TYPE_WINDOW (proton_plus_widgets_window_get_type ())
#define PROTON_PLUS_WIDGETS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindow))
#define PROTON_PLUS_WIDGETS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindowClass))
#define PROTON_PLUS_WIDGETS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW))
#define PROTON_PLUS_WIDGETS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_WINDOW))
#define PROTON_PLUS_WIDGETS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindowClass))

typedef struct _ProtonPlusWidgetsWindow ProtonPlusWidgetsWindow;
typedef struct _ProtonPlusWidgetsWindowClass ProtonPlusWidgetsWindowClass;

#define PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG (proton_plus_widgets_warning_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_WARNING_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG, ProtonPlusWidgetsWarningDialog))
#define PROTON_PLUS_WIDGETS_WARNING_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG, ProtonPlusWidgetsWarningDialogClass))
#define PROTON_PLUS_WIDGETS_IS_WARNING_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_WARNING_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG))
#define PROTON_PLUS_WIDGETS_WARNING_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_WARNING_DIALOG, ProtonPlusWidgetsWarningDialogClass))

typedef struct _ProtonPlusWidgetsWarningDialog ProtonPlusWidgetsWarningDialog;
typedef struct _ProtonPlusWidgetsWarningDialogClass ProtonPlusWidgetsWarningDialogClass;
typedef struct _ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData;
typedef struct _Block4Data Block4Data;

#define PROTON_PLUS_MODELS_TYPE_PARAMETERS (proton_plus_models_parameters_get_type ())
#define PROTON_PLUS_MODELS_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParameters))
#define PROTON_PLUS_MODELS_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParametersClass))
#define PROTON_PLUS_MODELS_IS_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS))
#define PROTON_PLUS_MODELS_IS_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_PARAMETERS))
#define PROTON_PLUS_MODELS_PARAMETERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParametersClass))

typedef struct _ProtonPlusModelsParameters ProtonPlusModelsParameters;
typedef struct _ProtonPlusModelsParametersClass ProtonPlusModelsParametersClass;

#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS (proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_get_type ())
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_STL_REMOVE_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS, ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_STL_REMOVE_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS, ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_ParametersClass))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_IS_STL_REMOVE_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_IS_STL_REMOVE_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS))
#define PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_STL_REMOVE_PARAMETERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RELEASES_STEAM_TINKER_LAUNCH_TYPE_STL_REMOVE_PARAMETERS, ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_ParametersClass))

typedef struct _ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters;
typedef struct _ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_ParametersClass ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_ParametersClass;
typedef struct _Block5Data Block5Data;

#define PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG (proton_plus_widgets_remove_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialog))
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialogClass))
#define PROTON_PLUS_WIDGETS_IS_REMOVE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_REMOVE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG))
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialogClass))

typedef struct _ProtonPlusWidgetsRemoveDialog ProtonPlusWidgetsRemoveDialog;
typedef struct _ProtonPlusWidgetsRemoveDialogClass ProtonPlusWidgetsRemoveDialogClass;
typedef enum  {
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_NOT_INSTALLED,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UPDATE_AVAILABLE,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_INSTALLING,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING
} ProtonPlusModelsBaseReleaseState;

#define PROTON_PLUS_MODELS_BASE_RELEASE_TYPE_STATE (proton_plus_models_base_release_state_get_type ())

struct _ProtonPlusWidgetsReleaseRow {
	AdwActionRow parent_instance;
	ProtonPlusWidgetsReleaseRowPrivate * priv;
	GtkButton* update_button;
	GtkButton* open_button;
	GtkButton* install_button;
	GtkButton* remove_button;
	GtkButton* info_button;
	GtkBox* input_box;
};

struct _ProtonPlusWidgetsReleaseRowClass {
	AdwActionRowClass parent_class;
	void (*update_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*open_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*install_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*remove_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*info_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
};

struct _ProtonPlusWidgetsSteamTinkerLaunchRow {
	ProtonPlusWidgetsReleaseRow parent_instance;
	ProtonPlusWidgetsSteamTinkerLaunchRowPrivate * priv;
};

struct _ProtonPlusWidgetsSteamTinkerLaunchRowClass {
	ProtonPlusWidgetsReleaseRowClass parent_class;
};

struct _ProtonPlusWidgetsSteamTinkerLaunchRowPrivate {
	ProtonPlusModelsReleasesSteamTinkerLaunch* release;
};

struct _ProtonPlusModelsLauncher {
	GObject parent_instance;
	ProtonPlusModelsLauncherPrivate * priv;
	gchar* title;
	gchar* icon_path;
	gchar* directory;
	gboolean installed;
	gboolean has_library_support;
	GList* games;
	GeeArrayList* compatibility_tools;
	ProtonPlusModelsGroup** groups;
	gint groups_length1;
	ProtonPlusModelsLauncherInstallationTypes installation_type;
};

struct _ProtonPlusModelsLauncherClass {
	GObjectClass parent_class;
	void (*load_game_library) (ProtonPlusModelsLauncher* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	gboolean (*load_game_library_finish) (ProtonPlusModelsLauncher* self, GAsyncResult* _res_);
	gint (*get_compatibility_tool_usage_count) (ProtonPlusModelsLauncher* self, const gchar* compatibility_tool_name);
};

struct _ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ProtonPlusWidgetsSteamTinkerLaunchRow* self;
	gchar* result;
	gchar* missing_dependencies;
	gchar* _tmp0_;
	gboolean yad_installed;
	gchar* yad_version_output;
	gchar* _tmp1_;
	gfloat version;
	const gchar* _tmp2_;
	gchar** _tmp3_;
	gchar** _tmp4_;
	gchar** _tmp5_;
	gint _tmp5__length1;
	const gchar* _tmp6_;
	gfloat _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gboolean _tmp10_;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	const gchar* _tmp13_;
	gchar* _tmp14_;
	const gchar* _tmp15_;
	gchar* _tmp16_;
	const gchar* _tmp17_;
	gchar* _tmp18_;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	const gchar* _tmp21_;
	gchar* _tmp22_;
	const gchar* _tmp23_;
	gchar* _tmp24_;
	const gchar* _tmp25_;
	gchar* _tmp26_;
	const gchar* _tmp27_;
	gchar* _tmp28_;
	const gchar* _tmp29_;
	gchar* _tmp30_;
};

struct _Block4Data {
	int _ref_count_;
	ProtonPlusWidgetsSteamTinkerLaunchRow* self;
	AdwAlertDialog* alert_dialog;
};

struct _Block5Data {
	int _ref_count_;
	ProtonPlusWidgetsSteamTinkerLaunchRow* self;
	ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* parameters;
	GtkCheckButton* remove_config_check;
};

static gint ProtonPlusWidgetsSteamTinkerLaunchRow_private_offset;
static gpointer proton_plus_widgets_steam_tinker_launch_row_parent_class = NULL;
VALA_EXTERN ProtonPlusWidgetsWindow* proton_plus_widgets_application_window;
VALA_EXTERN gboolean proton_plus_globals_IS_STEAM_OS;

VALA_EXTERN GType proton_plus_widgets_release_row_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsReleaseRow, g_object_unref)
VALA_EXTERN GType proton_plus_widgets_steam_tinker_launch_row_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsSteamTinkerLaunchRow, g_object_unref)
VALA_EXTERN GType proton_plus_models_base_release_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsBaseRelease, g_object_unref)
VALA_EXTERN GType proton_plus_models_release_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRelease, g_object_unref)
VALA_EXTERN GType proton_plus_models_releases_update_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsReleasesUpdate, g_object_unref)
VALA_EXTERN GType proton_plus_models_releases_steam_tinker_launch_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsReleasesSteamTinkerLaunch, g_object_unref)
VALA_EXTERN void proton_plus_widgets_release_row_update_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_install_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_remove_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_info_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_open_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN ProtonPlusWidgetsSteamTinkerLaunchRow* proton_plus_widgets_steam_tinker_launch_row_new (ProtonPlusModelsReleasesSteamTinkerLaunch* release);
VALA_EXTERN ProtonPlusWidgetsSteamTinkerLaunchRow* proton_plus_widgets_steam_tinker_launch_row_construct (GType object_type,
                                                                                              ProtonPlusModelsReleasesSteamTinkerLaunch* release);
VALA_EXTERN ProtonPlusWidgetsReleaseRow* proton_plus_widgets_release_row_construct (GType object_type);
VALA_EXTERN GType proton_plus_models_runner_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunner, g_object_unref)
VALA_EXTERN ProtonPlusModelsRunner* proton_plus_models_base_release_get_runner (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN GType proton_plus_models_group_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsGroup, g_object_unref)
VALA_EXTERN ProtonPlusModelsGroup* proton_plus_models_runner_get_group (ProtonPlusModelsRunner* self);
VALA_EXTERN GType proton_plus_models_launcher_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncher, g_object_unref)
VALA_EXTERN ProtonPlusModelsLauncher* proton_plus_models_group_get_launcher (ProtonPlusModelsGroup* self);
VALA_EXTERN GType proton_plus_models_game_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsGame, g_object_unref)
VALA_EXTERN GType proton_plus_models_simple_runner_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsSimpleRunner, g_object_unref)
VALA_EXTERN GType proton_plus_models_launcher_installation_types_get_type (void) G_GNUC_CONST ;
static void proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self);
static void _proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed_g_object_notify (GObject* _sender,
                                                                                                   GParamSpec* pspec,
                                                                                                   gpointer self);
static void proton_plus_widgets_steam_tinker_launch_row_release_state_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self);
static void _proton_plus_widgets_steam_tinker_launch_row_release_state_changed_g_object_notify (GObject* _sender,
                                                                                         GParamSpec* pspec,
                                                                                         gpointer self);
VALA_EXTERN GType proton_plus_models_download_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsDownloadManager, g_object_unref)
VALA_EXTERN ProtonPlusModelsDownloadManager* proton_plus_models_download_manager_get_instance (void);
static void proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                                             ProtonPlusModelsBaseRelease* added_release);
static void _proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_added (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                                 ProtonPlusModelsBaseRelease* release,
                                                                                                                                 gpointer self);
static void _proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_removed (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                                   ProtonPlusModelsBaseRelease* release,
                                                                                                                                   gpointer self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_download_url (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_title (ProtonPlusModelsBaseRelease* self);
static void proton_plus_widgets_steam_tinker_launch_row_real_update_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN void proton_plus_models_releases_update_update (ProtonPlusModelsReleasesUpdate* self,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_releases_update_update_finish (ProtonPlusModelsReleasesUpdate* self,
                                                           GAsyncResult* _res_);
static void __lambda29_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                  GObject* obj,
                  GAsyncResult* res);
VALA_EXTERN gboolean proton_plus_models_base_release_get_canceled (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN GType proton_plus_widgets_error_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsErrorDialog, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsErrorDialog* proton_plus_widgets_error_dialog_new (const gchar* heading,
                                                                    const gchar* body);
VALA_EXTERN ProtonPlusWidgetsErrorDialog* proton_plus_widgets_error_dialog_construct (GType object_type,
                                                                          const gchar* heading,
                                                                          const gchar* body);
VALA_EXTERN GType proton_plus_widgets_window_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsWindow, g_object_unref)
static void ___lambda29__gasync_ready_callback (GObject* source_object,
                                         GAsyncResult* res,
                                         gpointer self);
VALA_EXTERN void proton_plus_widgets_window_show_downloads_page (ProtonPlusWidgetsWindow* self);
static void proton_plus_widgets_steam_tinker_launch_row_real_install_button_clicked (ProtonPlusWidgetsReleaseRow* base);
static void proton_plus_widgets_steam_tinker_launch_row_dependency_check (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                                   GAsyncReadyCallback _callback_,
                                                                   gpointer _user_data_);
static gchar* proton_plus_widgets_steam_tinker_launch_row_dependency_check_finish (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                                            GAsyncResult* _res_);
static void ___lambda30_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                   GObject* obj,
                   GAsyncResult* res);
VALA_EXTERN GType proton_plus_widgets_warning_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsWarningDialog, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsWarningDialog* proton_plus_widgets_warning_dialog_new (const gchar* heading,
                                                                        const gchar* body);
VALA_EXTERN ProtonPlusWidgetsWarningDialog* proton_plus_widgets_warning_dialog_construct (GType object_type,
                                                                              const gchar* heading,
                                                                              const gchar* body);
static void proton_plus_widgets_steam_tinker_launch_row_external_install_check (ProtonPlusWidgetsSteamTinkerLaunchRow* self);
static void ____lambda30__gasync_ready_callback (GObject* source_object,
                                          GAsyncResult* res,
                                          gpointer self);
static void proton_plus_widgets_steam_tinker_launch_row_dependency_check_data_free (gpointer _data);
static gboolean proton_plus_widgets_steam_tinker_launch_row_dependency_check_co (ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_);
VALA_EXTERN void proton_plus_utils_system_check_dependency (const gchar* name,
                                                GAsyncReadyCallback _callback_,
                                                gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_utils_system_check_dependency_finish (GAsyncResult* _res_);
static void proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready (GObject* source_object,
                                                                         GAsyncResult* _res_,
                                                                         gpointer _user_data_);
VALA_EXTERN void proton_plus_utils_system_run_command (const gchar* command,
                                           GAsyncReadyCallback _callback_,
                                           gpointer _user_data_);
VALA_EXTERN gchar* proton_plus_utils_system_run_command_finish (GAsyncResult* _res_);
VALA_EXTERN gboolean proton_plus_models_releases_steam_tinker_launch_detect_external_locations (ProtonPlusModelsReleasesSteamTinkerLaunch* self);
static Block4Data* block4_data_ref (Block4Data* _data4_);
static void block4_data_unref (void * _userdata_);
static void ___lambda31_ (Block4Data* _data4_,
                   GObject* obj,
                   GAsyncResult* res);
static void proton_plus_widgets_steam_tinker_launch_row_start_install (ProtonPlusWidgetsSteamTinkerLaunchRow* self);
static void ____lambda31__gasync_ready_callback (GObject* source_object,
                                          GAsyncResult* res,
                                          gpointer self);
VALA_EXTERN void proton_plus_models_base_release_install (ProtonPlusModelsBaseRelease* self,
                                              GAsyncReadyCallback _callback_,
                                              gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_base_release_install_finish (ProtonPlusModelsBaseRelease* self,
                                                         GAsyncResult* _res_);
static void __lambda32_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                  GObject* obj,
                  GAsyncResult* res);
static void ___lambda32__gasync_ready_callback (GObject* source_object,
                                         GAsyncResult* res,
                                         gpointer self);
static void proton_plus_widgets_steam_tinker_launch_row_real_remove_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN GType proton_plus_models_parameters_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsParameters, g_object_unref)
VALA_EXTERN GType proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters, g_object_unref)
static Block5Data* block5_data_ref (Block5Data* _data5_);
static void block5_data_unref (void * _userdata_);
VALA_EXTERN ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_new (void);
VALA_EXTERN ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_construct (GType object_type);
VALA_EXTERN void proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_set_delete_config (ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* self,
                                                                                              gboolean value);
VALA_EXTERN void proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_set_user_request (ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* self,
                                                                                             gboolean value);
static void __lambda33_ (Block5Data* _data5_);
static void ___lambda33__gtk_check_button_activate (GtkCheckButton* _sender,
                                             gpointer self);
VALA_EXTERN GType proton_plus_widgets_remove_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsRemoveDialog, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsRemoveDialog* proton_plus_widgets_remove_dialog_new (ProtonPlusModelsBaseRelease* release,
                                                                      ProtonPlusModelsParameters* parameters);
VALA_EXTERN ProtonPlusWidgetsRemoveDialog* proton_plus_widgets_remove_dialog_construct (GType object_type,
                                                                            ProtonPlusModelsBaseRelease* release,
                                                                            ProtonPlusModelsParameters* parameters);
static void proton_plus_widgets_steam_tinker_launch_row_real_info_button_clicked (ProtonPlusWidgetsReleaseRow* base);
static void proton_plus_widgets_steam_tinker_launch_row_real_open_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN void proton_plus_utils_system_open_uri (const gchar* uri);
VALA_EXTERN const gchar* proton_plus_models_releases_steam_tinker_launch_get_base_location (ProtonPlusModelsReleasesSteamTinkerLaunch* self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_displayed_title (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN void proton_plus_widgets_release_row_only_show (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN GType proton_plus_models_base_release_state_get_type (void) G_GNUC_CONST ;
VALA_EXTERN ProtonPlusModelsBaseReleaseState proton_plus_models_base_release_get_state (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN gboolean proton_plus_models_download_manager_is_downloading (ProtonPlusModelsDownloadManager* self,
                                                             ProtonPlusModelsBaseRelease* release);
static void proton_plus_widgets_steam_tinker_launch_row_finalize (GObject * obj);
static GType proton_plus_widgets_steam_tinker_launch_row_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);
static gssize _vala_array_length (gpointer array);

static inline gpointer
proton_plus_widgets_steam_tinker_launch_row_get_instance_private (ProtonPlusWidgetsSteamTinkerLaunchRow* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusWidgetsSteamTinkerLaunchRow_private_offset);
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
_proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed_g_object_notify (GObject* _sender,
                                                                                              GParamSpec* pspec,
                                                                                              gpointer self)
{
	proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self);
}

static void
_proton_plus_widgets_steam_tinker_launch_row_release_state_changed_g_object_notify (GObject* _sender,
                                                                                    GParamSpec* pspec,
                                                                                    gpointer self)
{
	proton_plus_widgets_steam_tinker_launch_row_release_state_changed ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self);
}

static void
_proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_added (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                            ProtonPlusModelsBaseRelease* release,
                                                                                                                            gpointer self)
{
	proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self, release);
}

static void
_proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_removed (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                              ProtonPlusModelsBaseRelease* release,
                                                                                                                              gpointer self)
{
	proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self, release);
}

ProtonPlusWidgetsSteamTinkerLaunchRow*
proton_plus_widgets_steam_tinker_launch_row_construct (GType object_type,
                                                       ProtonPlusModelsReleasesSteamTinkerLaunch* release)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self = NULL;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	GtkButton* _tmp1_;
	ProtonPlusModelsRunner* _tmp2_;
	ProtonPlusModelsRunner* _tmp3_;
	ProtonPlusModelsGroup* _tmp4_;
	ProtonPlusModelsGroup* _tmp5_;
	ProtonPlusModelsLauncher* _tmp6_;
	ProtonPlusModelsLauncher* _tmp7_;
	ProtonPlusModelsDownloadManager* _tmp16_;
	ProtonPlusModelsDownloadManager* _tmp17_;
	ProtonPlusModelsDownloadManager* _tmp18_;
	ProtonPlusModelsDownloadManager* _tmp19_;
	g_return_val_if_fail (release != NULL, NULL);
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) proton_plus_widgets_release_row_construct (object_type);
	_tmp0_ = _g_object_ref0 (release);
	_g_object_unref0 (self->priv->release);
	self->priv->release = _tmp0_;
	_tmp1_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
	gtk_widget_set_tooltip_text ((GtkWidget*) _tmp1_, _ ("Update to the latest version"));
	_tmp2_ = proton_plus_models_base_release_get_runner ((ProtonPlusModelsBaseRelease*) release);
	_tmp3_ = _tmp2_;
	_tmp4_ = proton_plus_models_runner_get_group (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = proton_plus_models_group_get_launcher (_tmp5_);
	_tmp7_ = _tmp6_;
	if (_tmp7_->installation_type != PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SYSTEM) {
		GtkBox* _tmp8_;
		GtkButton* _tmp9_;
		GtkBox* _tmp10_;
		GtkButton* _tmp11_;
		GtkBox* _tmp12_;
		GtkButton* _tmp13_;
		_tmp8_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp9_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		gtk_box_remove (_tmp8_, (GtkWidget*) _tmp9_);
		_tmp10_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp11_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		gtk_box_remove (_tmp10_, (GtkWidget*) _tmp11_);
		_tmp12_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp13_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_box_remove (_tmp12_, (GtkWidget*) _tmp13_);
	} else {
		GtkBox* _tmp14_;
		GtkButton* _tmp15_;
		_tmp14_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp15_ = ((ProtonPlusWidgetsReleaseRow*) self)->info_button;
		gtk_box_remove (_tmp14_, (GtkWidget*) _tmp15_);
	}
	g_signal_connect_object ((GObject*) release, "notify::displayed-title", (GCallback) _proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed_g_object_notify, self, 0);
	proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed (self);
	g_signal_connect_object ((GObject*) release, "notify::state", (GCallback) _proton_plus_widgets_steam_tinker_launch_row_release_state_changed_g_object_notify, self, 0);
	proton_plus_widgets_steam_tinker_launch_row_release_state_changed (self);
	_tmp16_ = proton_plus_models_download_manager_get_instance ();
	_tmp17_ = _tmp16_;
	g_signal_connect_object (_tmp17_, "download-added", (GCallback) _proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_added, self, 0);
	_tmp18_ = proton_plus_models_download_manager_get_instance ();
	_tmp19_ = _tmp18_;
	g_signal_connect_object (_tmp19_, "download-removed", (GCallback) _proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed_proton_plus_models_download_manager_download_removed, self, 0);
	return self;
}

ProtonPlusWidgetsSteamTinkerLaunchRow*
proton_plus_widgets_steam_tinker_launch_row_new (ProtonPlusModelsReleasesSteamTinkerLaunch* release)
{
	return proton_plus_widgets_steam_tinker_launch_row_construct (PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW, release);
}

static void
proton_plus_widgets_steam_tinker_launch_row_on_download_status_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                                        ProtonPlusModelsBaseRelease* added_release)
{
	gboolean _tmp0_ = FALSE;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (added_release != NULL);
	_tmp1_ = proton_plus_models_base_release_get_download_url (added_release);
	_tmp2_ = _tmp1_;
	_tmp3_ = self->priv->release;
	_tmp4_ = proton_plus_models_base_release_get_download_url ((ProtonPlusModelsBaseRelease*) _tmp3_);
	_tmp5_ = _tmp4_;
	if (g_strcmp0 (_tmp2_, _tmp5_) == 0) {
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp8_;
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		_tmp6_ = proton_plus_models_base_release_get_title (added_release);
		_tmp7_ = _tmp6_;
		_tmp8_ = self->priv->release;
		_tmp9_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp0_ = g_strcmp0 (_tmp7_, _tmp10_) == 0;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		proton_plus_widgets_steam_tinker_launch_row_release_state_changed (self);
	}
}

static void
__lambda29_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
             GObject* obj,
             GAsyncResult* res)
{
	gboolean success = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	gboolean _tmp1_ = FALSE;
	g_return_if_fail (res != NULL);
	_tmp0_ = self->priv->release;
	success = proton_plus_models_releases_update_update_finish ((ProtonPlusModelsReleasesUpdate*) _tmp0_, res);
	if (!success) {
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp2_;
		gboolean _tmp3_;
		gboolean _tmp4_;
		_tmp2_ = self->priv->release;
		_tmp3_ = proton_plus_models_base_release_get_canceled ((ProtonPlusModelsBaseRelease*) _tmp2_);
		_tmp4_ = _tmp3_;
		_tmp1_ = !_tmp4_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		ProtonPlusWidgetsErrorDialog* dialog = NULL;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp5_;
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		ProtonPlusWidgetsErrorDialog* _tmp10_;
		ProtonPlusWidgetsErrorDialog* _tmp11_;
		ProtonPlusWidgetsErrorDialog* _tmp12_;
		ProtonPlusWidgetsWindow* _tmp13_;
		_tmp5_ = self->priv->release;
		_tmp6_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = g_strdup_printf (_ ("Couldn't update %s"), _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = proton_plus_widgets_error_dialog_new (_tmp9_, _ ("Please report this issue on GitHub."));
		g_object_ref_sink (_tmp10_);
		_tmp11_ = _tmp10_;
		_g_free0 (_tmp9_);
		dialog = _tmp11_;
		_tmp12_ = dialog;
		_tmp13_ = proton_plus_widgets_application_window;
		adw_dialog_present ((AdwDialog*) _tmp12_, (GtkWidget*) _tmp13_);
		_g_object_unref0 (dialog);
	}
}

static void
___lambda29__gasync_ready_callback (GObject* source_object,
                                    GAsyncResult* res,
                                    gpointer self)
{
	__lambda29_ ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self, source_object, res);
	g_object_unref (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_real_update_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	ProtonPlusWidgetsWindow* _tmp1_;
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) base;
	_tmp0_ = self->priv->release;
	proton_plus_models_releases_update_update ((ProtonPlusModelsReleasesUpdate*) _tmp0_, ___lambda29__gasync_ready_callback, g_object_ref (self));
	_tmp1_ = proton_plus_widgets_application_window;
	proton_plus_widgets_window_show_downloads_page (_tmp1_);
}

static void
___lambda30_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
              GObject* obj,
              GAsyncResult* res)
{
	gchar* missing_dependencies = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	g_return_if_fail (res != NULL);
	_tmp0_ = proton_plus_widgets_steam_tinker_launch_row_dependency_check_finish (self, res);
	missing_dependencies = _tmp0_;
	_tmp1_ = missing_dependencies;
	if (g_strcmp0 (_tmp1_, "") != 0) {
		ProtonPlusWidgetsWarningDialog* alert_dialog = NULL;
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		gchar* _tmp5_;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		gchar* _tmp8_;
		ProtonPlusWidgetsWarningDialog* _tmp9_;
		ProtonPlusWidgetsWarningDialog* _tmp10_;
		ProtonPlusWidgetsWarningDialog* _tmp11_;
		ProtonPlusWidgetsWindow* _tmp12_;
		_tmp2_ = adw_preferences_row_get_title ((AdwPreferencesRow*) self);
		_tmp3_ = _tmp2_;
		_tmp4_ = g_strdup_printf (_ ("You are missing the following dependencies for %s:"), _tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = missing_dependencies;
		_tmp7_ = g_strdup_printf ("%s\n\n%s\n%s", _tmp5_, _tmp6_, _ ("Installation will be canceled."));
		_tmp8_ = _tmp7_;
		_tmp9_ = proton_plus_widgets_warning_dialog_new (_ ("Warning"), _tmp8_);
		g_object_ref_sink (_tmp9_);
		_tmp10_ = _tmp9_;
		_g_free0 (_tmp8_);
		_g_free0 (_tmp5_);
		alert_dialog = _tmp10_;
		_tmp11_ = alert_dialog;
		_tmp12_ = proton_plus_widgets_application_window;
		adw_dialog_present ((AdwDialog*) _tmp11_, (GtkWidget*) _tmp12_);
		_g_object_unref0 (alert_dialog);
		_g_free0 (missing_dependencies);
		return;
	} else {
		proton_plus_widgets_steam_tinker_launch_row_external_install_check (self);
	}
	_g_free0 (missing_dependencies);
}

static void
____lambda30__gasync_ready_callback (GObject* source_object,
                                     GAsyncResult* res,
                                     gpointer self)
{
	___lambda30_ ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self, source_object, res);
	g_object_unref (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_real_install_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) base;
	if (!proton_plus_globals_IS_STEAM_OS) {
		proton_plus_widgets_steam_tinker_launch_row_dependency_check (self, ____lambda30__gasync_ready_callback, g_object_ref (self));
	} else {
		proton_plus_widgets_steam_tinker_launch_row_external_install_check (self);
	}
}

static void
proton_plus_widgets_steam_tinker_launch_row_dependency_check_data_free (gpointer _data)
{
	ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_;
	_data_ = _data;
	_g_free0 (_data_->result);
	_g_object_unref0 (_data_->self);
	g_slice_free (ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData, _data_);
}

static void
proton_plus_widgets_steam_tinker_launch_row_dependency_check (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                              GAsyncReadyCallback _callback_,
                                                              gpointer _user_data_)
{
	ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_;
	ProtonPlusWidgetsSteamTinkerLaunchRow* _tmp0_;
	g_return_if_fail (self != NULL);
	_data_ = g_slice_new0 (ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, proton_plus_widgets_steam_tinker_launch_row_dependency_check_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	proton_plus_widgets_steam_tinker_launch_row_dependency_check_co (_data_);
}

static gchar*
proton_plus_widgets_steam_tinker_launch_row_dependency_check_finish (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
                                                                     GAsyncResult* _res_)
{
	gchar* result;
	ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
	result = _data_->result;
	_data_->result = NULL;
	return result;
}

static void
proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready (GObject* source_object,
                                                                    GAsyncResult* _res_,
                                                                    gpointer _user_data_)
{
	ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	proton_plus_widgets_steam_tinker_launch_row_dependency_check_co (_data_);
}

static gfloat
float_parse (const gchar* str)
{
	gfloat result;
	g_return_val_if_fail (str != NULL, -1.0F);
	result = strtof (str, NULL);
	return result;
}

static gboolean
proton_plus_widgets_steam_tinker_launch_row_dependency_check_co (ProtonPlusWidgetsSteamTinkerLaunchRowDependencyCheckData* _data_)
{
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		case 2:
		goto _state_2;
		case 3:
		goto _state_3;
		case 4:
		goto _state_4;
		case 5:
		goto _state_5;
		case 6:
		goto _state_6;
		case 7:
		goto _state_7;
		case 8:
		goto _state_8;
		case 9:
		goto _state_9;
		case 10:
		goto _state_10;
		case 11:
		goto _state_11;
		case 12:
		goto _state_12;
		case 13:
		goto _state_13;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_tmp0_ = g_strdup ("");
	_data_->missing_dependencies = _data_->_tmp0_;
	_data_->yad_installed = FALSE;
	_data_->_state_ = 1;
	proton_plus_utils_system_check_dependency ("yad", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_1:
	if (proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_state_ = 2;
		proton_plus_utils_system_run_command ("yad --version", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
		return FALSE;
		_state_2:
		_data_->_tmp1_ = proton_plus_utils_system_run_command_finish (_data_->_res_);
		_data_->yad_version_output = _data_->_tmp1_;
		_data_->_tmp2_ = _data_->yad_version_output;
		_data_->_tmp4_ = _data_->_tmp3_ = g_strsplit (_data_->_tmp2_, " ", 0);
		_data_->_tmp5_ = _data_->_tmp4_;
		_data_->_tmp5__length1 = _vala_array_length (_data_->_tmp3_);
		_data_->_tmp6_ = _data_->_tmp5_[0];
		_data_->_tmp7_ = float_parse (_data_->_tmp6_);
		_data_->_tmp5_ = (_vala_array_free (_data_->_tmp5_, _data_->_tmp5__length1, (GDestroyNotify) g_free), NULL);
		_data_->version = _data_->_tmp7_;
		_data_->yad_installed = ((gdouble) _data_->version) >= 7.2;
		_g_free0 (_data_->yad_version_output);
	}
	if (!_data_->yad_installed) {
		_data_->_tmp8_ = _data_->missing_dependencies;
		_data_->_tmp9_ = g_strconcat (_data_->_tmp8_, "yad >= 7.2\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp9_;
	}
	_data_->_state_ = 3;
	proton_plus_utils_system_check_dependency ("awk", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_3:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_state_ = 4;
		proton_plus_utils_system_check_dependency ("gawk", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
		return FALSE;
		_state_4:
		_data_->_tmp10_ = !proton_plus_utils_system_check_dependency_finish (_data_->_res_);
	} else {
		_data_->_tmp10_ = FALSE;
	}
	if (_data_->_tmp10_) {
		_data_->_tmp11_ = _data_->missing_dependencies;
		_data_->_tmp12_ = g_strconcat (_data_->_tmp11_, "awk/gawk\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp12_;
	}
	_data_->_state_ = 5;
	proton_plus_utils_system_check_dependency ("git", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_5:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp13_ = _data_->missing_dependencies;
		_data_->_tmp14_ = g_strconcat (_data_->_tmp13_, "git\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp14_;
	}
	_data_->_state_ = 6;
	proton_plus_utils_system_check_dependency ("pgrep", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_6:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp15_ = _data_->missing_dependencies;
		_data_->_tmp16_ = g_strconcat (_data_->_tmp15_, "pgrep\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp16_;
	}
	_data_->_state_ = 7;
	proton_plus_utils_system_check_dependency ("unzip", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_7:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp17_ = _data_->missing_dependencies;
		_data_->_tmp18_ = g_strconcat (_data_->_tmp17_, "unzip\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp18_;
	}
	_data_->_state_ = 8;
	proton_plus_utils_system_check_dependency ("wget", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_8:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp19_ = _data_->missing_dependencies;
		_data_->_tmp20_ = g_strconcat (_data_->_tmp19_, "wget\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp20_;
	}
	_data_->_state_ = 9;
	proton_plus_utils_system_check_dependency ("xdotool", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_9:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp21_ = _data_->missing_dependencies;
		_data_->_tmp22_ = g_strconcat (_data_->_tmp21_, "xdotool\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp22_;
	}
	_data_->_state_ = 10;
	proton_plus_utils_system_check_dependency ("xprop", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_10:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp23_ = _data_->missing_dependencies;
		_data_->_tmp24_ = g_strconcat (_data_->_tmp23_, "xprop\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp24_;
	}
	_data_->_state_ = 11;
	proton_plus_utils_system_check_dependency ("xrandr", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_11:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp25_ = _data_->missing_dependencies;
		_data_->_tmp26_ = g_strconcat (_data_->_tmp25_, "xrandr\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp26_;
	}
	_data_->_state_ = 12;
	proton_plus_utils_system_check_dependency ("xxd", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_12:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp27_ = _data_->missing_dependencies;
		_data_->_tmp28_ = g_strconcat (_data_->_tmp27_, "xxd\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp28_;
	}
	_data_->_state_ = 13;
	proton_plus_utils_system_check_dependency ("xwininfo", proton_plus_widgets_steam_tinker_launch_row_dependency_check_ready, _data_);
	return FALSE;
	_state_13:
	if (!proton_plus_utils_system_check_dependency_finish (_data_->_res_)) {
		_data_->_tmp29_ = _data_->missing_dependencies;
		_data_->_tmp30_ = g_strconcat (_data_->_tmp29_, "xwininfo\n", NULL);
		_g_free0 (_data_->missing_dependencies);
		_data_->missing_dependencies = _data_->_tmp30_;
	}
	_data_->result = _data_->missing_dependencies;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (!g_task_get_completed (_data_->_async_result)) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}

static Block4Data*
block4_data_ref (Block4Data* _data4_)
{
	g_atomic_int_inc (&_data4_->_ref_count_);
	return _data4_;
}

static void
block4_data_unref (void * _userdata_)
{
	Block4Data* _data4_;
	_data4_ = (Block4Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
		ProtonPlusWidgetsSteamTinkerLaunchRow* self;
		self = _data4_->self;
		_g_object_unref0 (_data4_->alert_dialog);
		_g_object_unref0 (self);
		g_slice_free (Block4Data, _data4_);
	}
}

static void
___lambda31_ (Block4Data* _data4_,
              GObject* obj,
              GAsyncResult* res)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow* self;
	gchar* response = NULL;
	AdwAlertDialog* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	self = _data4_->self;
	g_return_if_fail (res != NULL);
	_tmp0_ = _data4_->alert_dialog;
	_tmp1_ = adw_alert_dialog_choose_finish (_tmp0_, res);
	_tmp2_ = g_strdup (_tmp1_);
	response = _tmp2_;
	_tmp3_ = response;
	if (g_strcmp0 (_tmp3_, "yes") == 0) {
		proton_plus_widgets_steam_tinker_launch_row_start_install (self);
	}
	_g_free0 (response);
}

static void
____lambda31__gasync_ready_callback (GObject* source_object,
                                     GAsyncResult* res,
                                     gpointer self)
{
	___lambda31_ (self, source_object, res);
	block4_data_unref (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_external_install_check (ProtonPlusWidgetsSteamTinkerLaunchRow* self)
{
	gboolean has_external_install = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->release;
	has_external_install = proton_plus_models_releases_steam_tinker_launch_detect_external_locations (_tmp0_);
	if (has_external_install) {
		Block4Data* _data4_;
		const gchar* _tmp1_;
		const gchar* _tmp2_;
		gchar** _tmp3_;
		gchar** _tmp4_;
		gchar** _tmp5_;
		gint _tmp5__length1;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		AdwAlertDialog* _tmp11_;
		AdwAlertDialog* _tmp12_;
		AdwAlertDialog* _tmp13_;
		AdwAlertDialog* _tmp14_;
		AdwAlertDialog* _tmp15_;
		AdwAlertDialog* _tmp16_;
		AdwAlertDialog* _tmp17_;
		ProtonPlusWidgetsWindow* _tmp18_;
		_data4_ = g_slice_new0 (Block4Data);
		_data4_->_ref_count_ = 1;
		_data4_->self = g_object_ref (self);
		_tmp1_ = adw_preferences_row_get_title ((AdwPreferencesRow*) self);
		_tmp2_ = _tmp1_;
		_tmp4_ = _tmp3_ = g_strsplit (_tmp2_, " ", 0);
		_tmp5_ = _tmp4_;
		_tmp5__length1 = _vala_array_length (_tmp3_);
		_tmp6_ = _tmp5_[0];
		_tmp7_ = g_strdup_printf (_ ("It looks like you currently have another version of %s which was not i" \
"nstalled by ProtonPlus."), _tmp6_);
		_tmp8_ = _tmp7_;
		_tmp9_ = g_strdup_printf ("%s\n\n%s", _tmp8_, _ ("Do you want to reinstall it with ProtonPlus?"));
		_tmp10_ = _tmp9_;
		_tmp11_ = (AdwAlertDialog*) adw_alert_dialog_new (_ ("Warning"), _tmp10_);
		g_object_ref_sink (_tmp11_);
		_tmp12_ = _tmp11_;
		_g_free0 (_tmp10_);
		_g_free0 (_tmp8_);
		_tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
		_data4_->alert_dialog = _tmp12_;
		_tmp13_ = _data4_->alert_dialog;
		adw_alert_dialog_add_response (_tmp13_, "no", _ ("No"));
		_tmp14_ = _data4_->alert_dialog;
		adw_alert_dialog_add_response (_tmp14_, "yes", _ ("Yes"));
		_tmp15_ = _data4_->alert_dialog;
		adw_alert_dialog_set_response_appearance (_tmp15_, "no", ADW_RESPONSE_DEFAULT);
		_tmp16_ = _data4_->alert_dialog;
		adw_alert_dialog_set_response_appearance (_tmp16_, "yes", ADW_RESPONSE_DESTRUCTIVE);
		_tmp17_ = _data4_->alert_dialog;
		_tmp18_ = proton_plus_widgets_application_window;
		adw_alert_dialog_choose (_tmp17_, (GtkWidget*) _tmp18_, NULL, ____lambda31__gasync_ready_callback, block4_data_ref (_data4_));
		block4_data_unref (_data4_);
		_data4_ = NULL;
	} else {
		proton_plus_widgets_steam_tinker_launch_row_start_install (self);
	}
}

static void
__lambda32_ (ProtonPlusWidgetsSteamTinkerLaunchRow* self,
             GObject* obj,
             GAsyncResult* res)
{
	gboolean success = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	gboolean _tmp1_ = FALSE;
	g_return_if_fail (res != NULL);
	_tmp0_ = self->priv->release;
	success = proton_plus_models_base_release_install_finish ((ProtonPlusModelsBaseRelease*) _tmp0_, res);
	if (!success) {
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp2_;
		gboolean _tmp3_;
		gboolean _tmp4_;
		_tmp2_ = self->priv->release;
		_tmp3_ = proton_plus_models_base_release_get_canceled ((ProtonPlusModelsBaseRelease*) _tmp2_);
		_tmp4_ = _tmp3_;
		_tmp1_ = !_tmp4_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		ProtonPlusWidgetsErrorDialog* dialog = NULL;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp5_;
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		ProtonPlusWidgetsErrorDialog* _tmp10_;
		ProtonPlusWidgetsErrorDialog* _tmp11_;
		ProtonPlusWidgetsErrorDialog* _tmp12_;
		ProtonPlusWidgetsWindow* _tmp13_;
		_tmp5_ = self->priv->release;
		_tmp6_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = g_strdup_printf (_ ("Couldn't install %s"), _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = proton_plus_widgets_error_dialog_new (_tmp9_, _ ("Please report this issue on GitHub."));
		g_object_ref_sink (_tmp10_);
		_tmp11_ = _tmp10_;
		_g_free0 (_tmp9_);
		dialog = _tmp11_;
		_tmp12_ = dialog;
		_tmp13_ = proton_plus_widgets_application_window;
		adw_dialog_present ((AdwDialog*) _tmp12_, (GtkWidget*) _tmp13_);
		_g_object_unref0 (dialog);
	}
}

static void
___lambda32__gasync_ready_callback (GObject* source_object,
                                    GAsyncResult* res,
                                    gpointer self)
{
	__lambda32_ ((ProtonPlusWidgetsSteamTinkerLaunchRow*) self, source_object, res);
	g_object_unref (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_start_install (ProtonPlusWidgetsSteamTinkerLaunchRow* self)
{
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	ProtonPlusWidgetsWindow* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->release;
	proton_plus_models_base_release_install ((ProtonPlusModelsBaseRelease*) _tmp0_, ___lambda32__gasync_ready_callback, g_object_ref (self));
	_tmp1_ = proton_plus_widgets_application_window;
	proton_plus_widgets_window_show_downloads_page (_tmp1_);
}

static Block5Data*
block5_data_ref (Block5Data* _data5_)
{
	g_atomic_int_inc (&_data5_->_ref_count_);
	return _data5_;
}

static void
block5_data_unref (void * _userdata_)
{
	Block5Data* _data5_;
	_data5_ = (Block5Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) {
		ProtonPlusWidgetsSteamTinkerLaunchRow* self;
		self = _data5_->self;
		_g_object_unref0 (_data5_->remove_config_check);
		_g_object_unref0 (_data5_->parameters);
		_g_object_unref0 (self);
		g_slice_free (Block5Data, _data5_);
	}
}

static void
__lambda33_ (Block5Data* _data5_)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow* self;
	self = _data5_->self;
	proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_set_delete_config (_data5_->parameters, gtk_check_button_get_active (_data5_->remove_config_check));
}

static void
___lambda33__gtk_check_button_activate (GtkCheckButton* _sender,
                                        gpointer self)
{
	__lambda33_ (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_real_remove_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	Block5Data* _data5_;
	ProtonPlusModelsReleasesSteamTinkerLaunchSTL_Remove_Parameters* _tmp0_;
	GtkCheckButton* _tmp1_;
	ProtonPlusWidgetsRemoveDialog* remove_dialog = NULL;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp2_;
	ProtonPlusWidgetsRemoveDialog* _tmp3_;
	ProtonPlusWidgetsWindow* _tmp4_;
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) base;
	_data5_ = g_slice_new0 (Block5Data);
	_data5_->_ref_count_ = 1;
	_data5_->self = g_object_ref (self);
	_tmp0_ = proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_new ();
	_data5_->parameters = _tmp0_;
	proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_set_delete_config (_data5_->parameters, FALSE);
	proton_plus_models_releases_steam_tinker_launch_stl_remove_parameters_set_user_request (_data5_->parameters, TRUE);
	_tmp1_ = (GtkCheckButton*) gtk_check_button_new_with_label (_ ("Check this to also delete your configuration files."));
	g_object_ref_sink (_tmp1_);
	_data5_->remove_config_check = _tmp1_;
	g_signal_connect_data (_data5_->remove_config_check, "activate", (GCallback) ___lambda33__gtk_check_button_activate, block5_data_ref (_data5_), (GClosureNotify) block5_data_unref, 0);
	_tmp2_ = self->priv->release;
	_tmp3_ = proton_plus_widgets_remove_dialog_new ((ProtonPlusModelsBaseRelease*) _tmp2_, (ProtonPlusModelsParameters*) _data5_->parameters);
	g_object_ref_sink (_tmp3_);
	remove_dialog = _tmp3_;
	adw_alert_dialog_set_extra_child ((AdwAlertDialog*) remove_dialog, (GtkWidget*) _data5_->remove_config_check);
	_tmp4_ = proton_plus_widgets_application_window;
	adw_dialog_present ((AdwDialog*) remove_dialog, (GtkWidget*) _tmp4_);
	_g_object_unref0 (remove_dialog);
	block5_data_unref (_data5_);
	_data5_ = NULL;
}

static void
proton_plus_widgets_steam_tinker_launch_row_real_info_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	AdwAlertDialog* alert_dialog = NULL;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	ProtonPlusModelsRunner* _tmp1_;
	ProtonPlusModelsRunner* _tmp2_;
	ProtonPlusModelsGroup* _tmp3_;
	ProtonPlusModelsGroup* _tmp4_;
	ProtonPlusModelsLauncher* _tmp5_;
	ProtonPlusModelsLauncher* _tmp6_;
	AdwAlertDialog* _tmp23_;
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) base;
	alert_dialog = NULL;
	_tmp0_ = self->priv->release;
	_tmp1_ = proton_plus_models_base_release_get_runner ((ProtonPlusModelsBaseRelease*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = proton_plus_models_runner_get_group (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = proton_plus_models_group_get_launcher (_tmp4_);
	_tmp6_ = _tmp5_;
	switch (_tmp6_->installation_type) {
		case PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_FLATPAK:
		{
			GtkLabel* command_label = NULL;
			GtkLabel* _tmp7_;
			GtkLabel* _tmp8_;
			ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp9_;
			const gchar* _tmp10_;
			const gchar* _tmp11_;
			gchar* _tmp12_;
			gchar* _tmp13_;
			ProtonPlusWidgetsWarningDialog* _tmp14_;
			AdwAlertDialog* _tmp15_;
			GtkLabel* _tmp16_;
			_tmp7_ = (GtkLabel*) gtk_label_new ("flatpak install com.valvesoftware.Steam.Utility.steamtinkerlaunch");
			g_object_ref_sink (_tmp7_);
			command_label = _tmp7_;
			_tmp8_ = command_label;
			gtk_label_set_selectable (_tmp8_, TRUE);
			_tmp9_ = self->priv->release;
			_tmp10_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp9_);
			_tmp11_ = _tmp10_;
			_tmp12_ = g_strdup_printf (_ ("To install %s for the %s, please run the following command:"), _tmp11_, "Steam Flatpak");
			_tmp13_ = _tmp12_;
			_tmp14_ = proton_plus_widgets_warning_dialog_new (_ ("Warning"), _tmp13_);
			g_object_ref_sink (_tmp14_);
			_g_object_unref0 (alert_dialog);
			alert_dialog = (AdwAlertDialog*) _tmp14_;
			_g_free0 (_tmp13_);
			_tmp15_ = alert_dialog;
			_tmp16_ = command_label;
			adw_alert_dialog_set_extra_child (_tmp15_, (GtkWidget*) _tmp16_);
			_g_object_unref0 (command_label);
			break;
		}
		case PROTON_PLUS_MODELS_LAUNCHER_INSTALLATION_TYPES_SNAP:
		{
			ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp17_;
			const gchar* _tmp18_;
			const gchar* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			ProtonPlusWidgetsWarningDialog* _tmp22_;
			_tmp17_ = self->priv->release;
			_tmp18_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp17_);
			_tmp19_ = _tmp18_;
			_tmp20_ = g_strdup_printf (_ ("There's currently no known way for us to install %s for the %s."), _tmp19_, "Steam Snap");
			_tmp21_ = _tmp20_;
			_tmp22_ = proton_plus_widgets_warning_dialog_new (_ ("Warning"), _tmp21_);
			g_object_ref_sink (_tmp22_);
			_g_object_unref0 (alert_dialog);
			alert_dialog = (AdwAlertDialog*) _tmp22_;
			_g_free0 (_tmp21_);
			break;
		}
		default:
		{
			break;
		}
	}
	_tmp23_ = alert_dialog;
	if (_tmp23_ != NULL) {
		AdwAlertDialog* _tmp24_;
		ProtonPlusWidgetsWindow* _tmp25_;
		_tmp24_ = alert_dialog;
		_tmp25_ = proton_plus_widgets_application_window;
		adw_dialog_present ((AdwDialog*) _tmp24_, (GtkWidget*) _tmp25_);
	}
	_g_object_unref0 (alert_dialog);
}

static void
proton_plus_widgets_steam_tinker_launch_row_real_open_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	self = (ProtonPlusWidgetsSteamTinkerLaunchRow*) base;
	_tmp0_ = self->priv->release;
	_tmp1_ = proton_plus_models_releases_steam_tinker_launch_get_base_location (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("file://%s", _tmp2_);
	_tmp4_ = _tmp3_;
	proton_plus_utils_system_open_uri (_tmp4_);
	_g_free0 (_tmp4_);
}

static void
proton_plus_widgets_steam_tinker_launch_row_release_displayed_title_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self)
{
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->release;
	_tmp1_ = proton_plus_models_base_release_get_displayed_title ((ProtonPlusModelsBaseRelease*) _tmp0_);
	_tmp2_ = _tmp1_;
	adw_preferences_row_set_title ((AdwPreferencesRow*) self, _tmp2_);
	proton_plus_widgets_release_row_only_show ((ProtonPlusWidgetsReleaseRow*) self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_release_state_changed (ProtonPlusWidgetsSteamTinkerLaunchRow* self)
{
	gboolean _tmp0_ = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp1_;
	ProtonPlusModelsBaseReleaseState _tmp2_;
	ProtonPlusModelsBaseReleaseState _tmp3_;
	gboolean installed = FALSE;
	gboolean updated = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp7_;
	ProtonPlusModelsBaseReleaseState _tmp8_;
	ProtonPlusModelsBaseReleaseState _tmp9_;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp12_;
	ProtonPlusModelsBaseReleaseState _tmp13_;
	ProtonPlusModelsBaseReleaseState _tmp14_;
	gboolean busy = FALSE;
	GtkButton* _tmp21_;
	GtkButton* _tmp22_;
	gboolean _tmp23_ = FALSE;
	GtkButton* _tmp24_;
	GtkButton* _tmp25_;
	GtkButton* _tmp26_;
	GtkButton* _tmp27_;
	GtkButton* _tmp28_;
	GtkButton* _tmp29_;
	g_return_if_fail (self != NULL);
	_tmp1_ = self->priv->release;
	_tmp2_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE) {
		_tmp0_ = TRUE;
	} else {
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp4_;
		ProtonPlusModelsBaseReleaseState _tmp5_;
		ProtonPlusModelsBaseReleaseState _tmp6_;
		_tmp4_ = self->priv->release;
		_tmp5_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = _tmp6_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UPDATE_AVAILABLE;
	}
	installed = _tmp0_;
	_tmp7_ = self->priv->release;
	_tmp8_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp7_);
	_tmp9_ = _tmp8_;
	updated = _tmp9_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE;
	_tmp12_ = self->priv->release;
	_tmp13_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp12_);
	_tmp14_ = _tmp13_;
	if (_tmp14_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_INSTALLING) {
		_tmp11_ = TRUE;
	} else {
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp15_;
		ProtonPlusModelsBaseReleaseState _tmp16_;
		ProtonPlusModelsBaseReleaseState _tmp17_;
		_tmp15_ = self->priv->release;
		_tmp16_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp11_ = _tmp17_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING;
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp18_;
		ProtonPlusModelsBaseReleaseState _tmp19_;
		ProtonPlusModelsBaseReleaseState _tmp20_;
		_tmp18_ = self->priv->release;
		_tmp19_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp10_ = _tmp20_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING;
	}
	busy = _tmp10_;
	_tmp21_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp21_, !installed);
	_tmp22_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp22_, installed);
	if (installed) {
		_tmp23_ = !updated;
	} else {
		_tmp23_ = FALSE;
	}
	_tmp24_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp24_, _tmp23_);
	_tmp25_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp25_, installed);
	_tmp26_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp26_, !busy);
	_tmp27_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp27_, !busy);
	_tmp28_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp28_, !busy);
	_tmp29_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp29_, !busy);
	if (busy) {
		gchar* tooltip_text = NULL;
		gchar* _tmp30_;
		ProtonPlusModelsDownloadManager* _tmp31_;
		ProtonPlusModelsDownloadManager* _tmp32_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp33_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp35_;
		ProtonPlusModelsBaseReleaseState _tmp36_;
		ProtonPlusModelsBaseReleaseState _tmp37_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp39_;
		ProtonPlusModelsBaseReleaseState _tmp40_;
		ProtonPlusModelsBaseReleaseState _tmp41_;
		GtkButton* _tmp43_;
		const gchar* _tmp44_;
		GtkButton* _tmp45_;
		const gchar* _tmp46_;
		GtkButton* _tmp47_;
		const gchar* _tmp48_;
		GtkButton* _tmp49_;
		const gchar* _tmp50_;
		_tmp30_ = g_strdup (_ ("This tool is currently being installed"));
		tooltip_text = _tmp30_;
		_tmp31_ = proton_plus_models_download_manager_get_instance ();
		_tmp32_ = _tmp31_;
		_tmp33_ = self->priv->release;
		if (proton_plus_models_download_manager_is_downloading (_tmp32_, (ProtonPlusModelsBaseRelease*) _tmp33_)) {
			gchar* _tmp34_;
			_tmp34_ = g_strdup (_ ("This tool is currently being downloaded"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp34_;
		}
		_tmp35_ = self->priv->release;
		_tmp36_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp35_);
		_tmp37_ = _tmp36_;
		if (_tmp37_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING) {
			gchar* _tmp38_;
			_tmp38_ = g_strdup (_ ("This tool is currently being removed"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp38_;
		}
		_tmp39_ = self->priv->release;
		_tmp40_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp39_);
		_tmp41_ = _tmp40_;
		if (_tmp41_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING) {
			gchar* _tmp42_;
			_tmp42_ = g_strdup (_ ("This tool is currently being updated"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp42_;
		}
		_tmp43_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		_tmp44_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp43_, _tmp44_);
		_tmp45_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		_tmp46_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp45_, _tmp46_);
		_tmp47_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		_tmp48_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp47_, _tmp48_);
		_tmp49_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
		_tmp50_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp49_, _tmp50_);
		_g_free0 (tooltip_text);
	} else {
		GtkButton* _tmp51_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp52_;
		const gchar* _tmp53_;
		const gchar* _tmp54_;
		gchar* _tmp55_;
		gchar* _tmp56_;
		GtkButton* _tmp57_;
		ProtonPlusModelsReleasesSteamTinkerLaunch* _tmp58_;
		const gchar* _tmp59_;
		const gchar* _tmp60_;
		gchar* _tmp61_;
		gchar* _tmp62_;
		GtkButton* _tmp63_;
		GtkButton* _tmp64_;
		_tmp51_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		_tmp52_ = self->priv->release;
		_tmp53_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp52_);
		_tmp54_ = _tmp53_;
		_tmp55_ = g_strdup_printf (_ ("Install %s"), _tmp54_);
		_tmp56_ = _tmp55_;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp51_, _tmp56_);
		_g_free0 (_tmp56_);
		_tmp57_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		_tmp58_ = self->priv->release;
		_tmp59_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = g_strdup_printf (_ ("Delete %s"), _tmp60_);
		_tmp62_ = _tmp61_;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp57_, _tmp62_);
		_g_free0 (_tmp62_);
		_tmp63_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp63_, _ ("Update to the latest version"));
		_tmp64_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp64_, _ ("Open runner directory"));
	}
}

static void
proton_plus_widgets_steam_tinker_launch_row_class_init (ProtonPlusWidgetsSteamTinkerLaunchRowClass * klass,
                                                        gpointer klass_data)
{
	proton_plus_widgets_steam_tinker_launch_row_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusWidgetsSteamTinkerLaunchRow_private_offset);
	((ProtonPlusWidgetsReleaseRowClass *) klass)->update_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_steam_tinker_launch_row_real_update_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->install_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_steam_tinker_launch_row_real_install_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->remove_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_steam_tinker_launch_row_real_remove_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->info_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_steam_tinker_launch_row_real_info_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->open_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_steam_tinker_launch_row_real_open_button_clicked;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_widgets_steam_tinker_launch_row_finalize;
}

static void
proton_plus_widgets_steam_tinker_launch_row_instance_init (ProtonPlusWidgetsSteamTinkerLaunchRow * self,
                                                           gpointer klass)
{
	self->priv = proton_plus_widgets_steam_tinker_launch_row_get_instance_private (self);
}

static void
proton_plus_widgets_steam_tinker_launch_row_finalize (GObject * obj)
{
	ProtonPlusWidgetsSteamTinkerLaunchRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_WIDGETS_TYPE_STEAM_TINKER_LAUNCH_ROW, ProtonPlusWidgetsSteamTinkerLaunchRow);
	_g_object_unref0 (self->priv->release);
	G_OBJECT_CLASS (proton_plus_widgets_steam_tinker_launch_row_parent_class)->finalize (obj);
}

static GType
proton_plus_widgets_steam_tinker_launch_row_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusWidgetsSteamTinkerLaunchRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_widgets_steam_tinker_launch_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusWidgetsSteamTinkerLaunchRow), 0, (GInstanceInitFunc) proton_plus_widgets_steam_tinker_launch_row_instance_init, NULL };
	GType proton_plus_widgets_steam_tinker_launch_row_type_id;
	proton_plus_widgets_steam_tinker_launch_row_type_id = g_type_register_static (PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, "ProtonPlusWidgetsSteamTinkerLaunchRow", &g_define_type_info, 0);
	ProtonPlusWidgetsSteamTinkerLaunchRow_private_offset = g_type_add_instance_private (proton_plus_widgets_steam_tinker_launch_row_type_id, sizeof (ProtonPlusWidgetsSteamTinkerLaunchRowPrivate));
	return proton_plus_widgets_steam_tinker_launch_row_type_id;
}

GType
proton_plus_widgets_steam_tinker_launch_row_get_type (void)
{
	static volatile gsize proton_plus_widgets_steam_tinker_launch_row_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_widgets_steam_tinker_launch_row_type_id__once)) {
		GType proton_plus_widgets_steam_tinker_launch_row_type_id;
		proton_plus_widgets_steam_tinker_launch_row_type_id = proton_plus_widgets_steam_tinker_launch_row_get_type_once ();
		g_once_init_leave (&proton_plus_widgets_steam_tinker_launch_row_type_id__once, proton_plus_widgets_steam_tinker_launch_row_type_id);
	}
	return proton_plus_widgets_steam_tinker_launch_row_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

static gssize
_vala_array_length (gpointer array)
{
	gssize length;
	length = 0;
	if (array) {
		while (((gpointer*) array)[length]) {
			length++;
		}
	}
	return length;
}

