Optimize imports
This commit is contained in:
parent
8d45fdff84
commit
6151f0e71e
|
@ -1,5 +1,5 @@
|
|||
import java.io.FileOutputStream
|
||||
import de.undercouch.gradle.tasks.download.Download
|
||||
import java.io.FileOutputStream
|
||||
|
||||
plugins {
|
||||
application
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import org.gradle.kotlin.dsl.extra
|
||||
|
||||
plugins {
|
||||
id("inceptum.library")
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import java.nio.file.FileSystem;
|
|||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Utils {
|
||||
public static final int CACHE_SIZE = 128;
|
||||
|
|
|
@ -5,7 +5,8 @@ import io.gitlab.jfronny.inceptum.common.Net;
|
|||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.common.model.maven.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.w3c.dom.*;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Node;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import javax.xml.parsers.*;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package io.gitlab.jfronny.inceptum.common.model.maven;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
public record DependencyNode(String name, Set<DependencyNode> dependencies) {
|
||||
@Override
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package io.gitlab.jfronny.inceptum.gtk;
|
||||
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.MicrosoftLoginDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.StringInputDialog;
|
||||
import org.gnome.gtk.*;
|
||||
import io.gitlab.jfronny.commons.StringFormatter;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.MicrosoftLoginDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.StringInputDialog;
|
||||
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
|
||||
import io.gitlab.jfronny.inceptum.launcher.api.account.MicrosoftAccount;
|
||||
import org.gnome.gtk.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
package io.gitlab.jfronny.inceptum.gtk;
|
||||
|
||||
import io.gitlab.jfronny.commons.io.JFiles;
|
||||
import io.gitlab.jfronny.inceptum.common.MetaHolder;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.MicrosoftLoginDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.ProcessStateWatcherDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.settings.launcher.LauncherSettingsWindow;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.importer.Importers;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.launch.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
|
||||
import org.gnome.gio.Menu;
|
||||
import org.gnome.gtk.*;
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.inceptum.common.MetaHolder;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.gtk.menu.MenuBuilder;
|
||||
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.AboutWindow;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.NewInstanceWindow;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.MicrosoftLoginDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.dialog.ProcessStateWatcherDialog;
|
||||
import io.gitlab.jfronny.inceptum.gtk.window.settings.launcher.LauncherSettingsWindow;
|
||||
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
|
||||
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
|
||||
import io.gitlab.jfronny.inceptum.launcher.api.account.MicrosoftAccount;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.importer.Importers;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.launch.InstanceLauncher;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.launch.LaunchType;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
|
||||
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
|
||||
import org.gnome.gtk.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class GtkMenubar {
|
||||
public static MenuBuilder newMenu;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package io.gitlab.jfronny.inceptum.gtk.control.settings;
|
||||
|
||||
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
||||
import org.gnome.adw.*;
|
||||
import org.gnome.adw.HeaderBar;
|
||||
import org.gnome.adw.*;
|
||||
import org.gnome.gobject.BindingFlags;
|
||||
import org.gnome.gtk.*;
|
||||
import org.gnome.gtk.Application;
|
||||
import org.gnome.gtk.Window;
|
||||
import org.gnome.gtk.*;
|
||||
import org.jetbrains.annotations.PropertyKey;
|
||||
|
||||
public class SettingsWindow extends Window {
|
||||
|
|
|
@ -3,18 +3,14 @@ package io.gitlab.jfronny.inceptum.gtk.menu;
|
|||
import io.gitlab.jfronny.commons.throwable.ThrowingRunnable;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
||||
import org.gnome.gio.MenuItem;
|
||||
import org.gnome.gio.*;
|
||||
import org.gnome.glib.Variant;
|
||||
import org.gnome.glib.VariantType;
|
||||
import org.gnome.gtk.*;
|
||||
import org.gnome.gtk.Application;
|
||||
import org.gnome.gtk.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package io.gitlab.jfronny.inceptum.gtk.window;
|
||||
|
||||
import io.gitlab.jfronny.inceptum.gtk.GtkMain;
|
||||
import org.gnome.gtk.AboutDialog;
|
||||
import org.gnome.gtk.License;
|
||||
import io.gitlab.jfronny.inceptum.common.BuildMetadata;
|
||||
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
|
||||
import org.gnome.gtk.AboutDialog;
|
||||
import org.gnome.gtk.License;
|
||||
|
||||
public class AboutWindow extends AboutDialog {
|
||||
public AboutWindow() {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package io.gitlab.jfronny.inceptum.gtk.window.settings.instance;
|
||||
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.gtk.GtkEnvBackend;
|
||||
import io.gitlab.jfronny.inceptum.gtk.GtkMain;
|
||||
|
|
|
@ -7,10 +7,8 @@ import io.gitlab.jfronny.inceptum.imgui.control.Tab;
|
|||
import io.gitlab.jfronny.inceptum.imgui.window.GuiUtil;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.InstanceMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class ArgumentsTab extends Tab {
|
||||
private final InstanceEditWindow window;
|
||||
|
|
|
@ -2,12 +2,10 @@ package io.gitlab.jfronny.inceptum.imgui.window.edit;
|
|||
|
||||
import imgui.ImGui;
|
||||
import imgui.type.ImString;
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
|
||||
import io.gitlab.jfronny.inceptum.imgui.control.Tab;
|
||||
import io.gitlab.jfronny.inceptum.imgui.window.GuiUtil;
|
||||
import io.gitlab.jfronny.inceptum.imgui.window.dialog.ProcessStateWatcherWindow;
|
||||
import io.gitlab.jfronny.inceptum.imgui.window.dialog.TextBoxWindow;
|
||||
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.exporter.Exporter;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.exporter.Exporters;
|
||||
|
|
|
@ -6,7 +6,8 @@ import imgui.type.ImString;
|
|||
import io.gitlab.jfronny.commons.OSUtils;
|
||||
import io.gitlab.jfronny.commons.io.JFiles;
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.inceptum.common.*;
|
||||
import io.gitlab.jfronny.inceptum.common.MetaHolder;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
|
||||
import io.gitlab.jfronny.inceptum.imgui.control.InstanceManageControls;
|
||||
import io.gitlab.jfronny.inceptum.imgui.control.Tab;
|
||||
|
|
|
@ -8,7 +8,8 @@ import io.gitlab.jfronny.commons.HttpUtils;
|
|||
import io.gitlab.jfronny.inceptum.common.Net;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.CurseforgeFile;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.CurseforgeMod;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.FingerprintMatchesResponse;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.SearchResponse;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URISyntaxException;
|
||||
|
|
|
@ -7,7 +7,7 @@ import io.gitlab.jfronny.gson.stream.JsonReader;
|
|||
import io.gitlab.jfronny.inceptum.common.Net;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.common.model.maven.ArtifactMeta;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.fabric.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricVersionLoaderInfo;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricVersionLoaderInfo.WithMeta.LauncherMeta.Libraries.Library;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser;
|
||||
|
|
|
@ -6,7 +6,8 @@ import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.mojang.J
|
|||
import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo.GC_VersionInfo;
|
||||
import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionsList.GC_VersionsList;
|
||||
import io.gitlab.jfronny.commons.OSUtils;
|
||||
import io.gitlab.jfronny.inceptum.common.*;
|
||||
import io.gitlab.jfronny.inceptum.common.MetaHolder;
|
||||
import io.gitlab.jfronny.inceptum.common.Net;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -2,12 +2,13 @@ package io.gitlab.jfronny.inceptum.launcher.api.account;
|
|||
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
|
||||
import io.gitlab.jfronny.inceptum.common.*;
|
||||
import io.gitlab.jfronny.inceptum.common.GsonPreset;
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
|
||||
import io.gitlab.jfronny.inceptum.launcher.gson.MicrosoftAccountAdapter;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.gson.MicrosoftAccountMeta;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.Profile;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
|
|
@ -9,7 +9,8 @@ import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.microsof
|
|||
import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.OauthTokenResponse.GC_OauthTokenResponse;
|
||||
import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.XboxLiveAuthResponse.GC_XboxLiveAuthResponse;
|
||||
import io.gitlab.jfronny.commons.HttpUtils;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.Entitlements;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.Profile;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.request.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.*;
|
||||
|
||||
|
|
|
@ -2,8 +2,9 @@ package io.gitlab.jfronny.inceptum.launcher.api.account;
|
|||
|
||||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.Entitlements;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.Profile;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.response.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.*;
|
||||
import net.freeutils.httpserver.HTTPServer;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ import gsoncompile.extensions.io.gitlab.jfronny.inceptum.launcher.model.mojang.R
|
|||
import io.gitlab.jfronny.gson.JsonParseException;
|
||||
import io.gitlab.jfronny.gson.compile.util.GList;
|
||||
import io.gitlab.jfronny.gson.stream.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.MinecraftArgument;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.Rules;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
|
|
@ -11,18 +11,14 @@ import io.gitlab.jfronny.inceptum.launcher.api.CurseforgeApi;
|
|||
import io.gitlab.jfronny.inceptum.launcher.api.ModrinthApi;
|
||||
import io.gitlab.jfronny.inceptum.launcher.gson.ModMetaSourcesAdapter;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.FingerprintMatchesResponse;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.source.CurseforgeModSource;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.source.ModrinthModSource;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.source.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
|
||||
@GSerializable(configure = GsonPreset.Config.class)
|
||||
public record ModMeta(
|
||||
|
|
|
@ -8,9 +8,7 @@ import io.gitlab.jfronny.inceptum.launcher.util.gitignore.IgnoringWalk;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.FileSystem;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.*;
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class Exporter<Manifest> {
|
||||
|
|
|
@ -11,7 +11,6 @@ import java.io.IOException;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
public class ModrinthExporter extends Exporter<ModrinthModpackManifest> {
|
||||
public ModrinthExporter() {
|
||||
|
|
|
@ -12,7 +12,6 @@ import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
|
|||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Set;
|
||||
|
||||
public class CurseForgeImporter extends Importer<CurseforgeModpackManifest> {
|
||||
public CurseForgeImporter() {
|
||||
|
|
|
@ -8,7 +8,6 @@ import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
|
|||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ModrinthImporter extends Importer<ModrinthModpackManifest> {
|
||||
public ModrinthImporter() {
|
||||
|
|
|
@ -6,20 +6,15 @@ import io.gitlab.jfronny.gson.JsonParseException;
|
|||
import io.gitlab.jfronny.inceptum.common.Utils;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricModJson;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.ModMeta;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.mds.noop.NoopMod;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.*;
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
public record FileScanTask(ProtoInstance instance, Path file, BiConsumer<Path, Mod> discovered, String gameVersion) implements Runnable {
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package io.gitlab.jfronny.inceptum.launcher.system.mds;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@ package io.gitlab.jfronny.inceptum.launcher.system.setup.steps;
|
|||
import io.gitlab.jfronny.inceptum.common.MetaHolder;
|
||||
import io.gitlab.jfronny.inceptum.common.Net;
|
||||
import io.gitlab.jfronny.inceptum.launcher.api.McApi;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.MojangFileDownload;
|
||||
import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.setup.SetupStepInfo;
|
||||
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@ package io.gitlab.jfronny.inceptum.wrapper;
|
|||
import gsoncompile.extensions.io.gitlab.jfronny.inceptum.common.model.inceptum.WrapperConfig.GC_WrapperConfig;
|
||||
import io.gitlab.jfronny.commons.ref.R;
|
||||
import io.gitlab.jfronny.inceptum.common.*;
|
||||
import io.gitlab.jfronny.inceptum.common.model.inceptum.*;
|
||||
import io.gitlab.jfronny.inceptum.common.model.inceptum.UpdateChannel;
|
||||
import io.gitlab.jfronny.inceptum.common.model.inceptum.UpdateMetadata;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URISyntaxException;
|
||||
|
|
Loading…
Reference in New Issue