diff --git a/javadoc/allclasses-index.html b/javadoc/allclasses-index.html
new file mode 100644
index 0000000..9761ef9
--- /dev/null
+++ b/javadoc/allclasses-index.html
@@ -0,0 +1,271 @@
+
+
+
+
+All Classes and Interfaces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
All Classes and Interfaces Interfaces Classes Enum Classes Record Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Class qui représente les Block de chaque Sudoku,
+ Un Block étant un ensemble de cellule avec une contrainte de block qui lui
+ ait associé.
+
+
+
+
+
+
Représente une case d'un, ou plusieurs, sudoku qui à comme valeur un index de symbole.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Enumération utilisée afin de simplifier l'affichage en graphique.
+
+
+
+
+
+
Représente les coordonnées d'une Cell.
+
+
+
+
Contrainte de diagonale
+
+
+
+
Les difficultés d'un Sudoku,
+ représente le nombre de cases à enlever, en proportion, à un Sudoku.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Interface de base pour la déclaration d'une contrainte
+ Elle est en théorie assez générique pour implémenter n'importe quelle
+ contrainte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Class : MultiDoku
+ Brief : Représente une grille de Multidoku.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une pile, qui réprésente les états d'un MultiDoku,
+ utile pour les Solvers.
+
+
+
+
Class de test non utilisé
+
+
+
+
Class : Sudoku
+ Brief : Représent un Sudoku
+
+
+
+
+
+
+
+
+
+
+
+
Classe permettant d'effectuer des opérations sur les sudokus afin de les
+ charger/sauvegarder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/allpackages-index.html b/javadoc/allpackages-index.html
new file mode 100644
index 0000000..e82ba79
--- /dev/null
+++ b/javadoc/allpackages-index.html
@@ -0,0 +1,94 @@
+
+
+
+
+All Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/common/ConsumerSignal.html b/javadoc/common/ConsumerSignal.html
new file mode 100644
index 0000000..4670e3e
--- /dev/null
+++ b/javadoc/common/ConsumerSignal.html
@@ -0,0 +1,190 @@
+
+
+
+
+ConsumerSignal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ConsumerSignal<T>
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ConsumerSignal
+public ConsumerSignal ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+clear
+public void clear ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/common/Signal.html b/javadoc/common/Signal.html
new file mode 100644
index 0000000..5f82fef
--- /dev/null
+++ b/javadoc/common/Signal.html
@@ -0,0 +1,190 @@
+
+
+
+
+Signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Signal
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Signal
+public Signal ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+clear
+public void clear ()
+
+
+
+
+emit
+public void emit ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/common/package-summary.html b/javadoc/common/package-summary.html
new file mode 100644
index 0000000..4566825
--- /dev/null
+++ b/javadoc/common/package-summary.html
@@ -0,0 +1,93 @@
+
+
+
+
+common
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package common
+
+
+
+
+
+
diff --git a/javadoc/common/package-tree.html b/javadoc/common/package-tree.html
new file mode 100644
index 0000000..f84488a
--- /dev/null
+++ b/javadoc/common/package-tree.html
@@ -0,0 +1,72 @@
+
+
+
+
+common Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html
new file mode 100644
index 0000000..cd9aa70
--- /dev/null
+++ b/javadoc/constant-values.html
@@ -0,0 +1,97 @@
+
+
+
+
+Constant Field Values
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+sudoku.io.*
+
+
+
+
+
+
+
+
+
+
"\u001b[34m"
+
+
+
"\u001b[36m"
+
+
+
"\u001b[32m"
+
+
+
"\u001b[35m"
+
+
+
"\u001b[31m"
+
+
+
"\u001b[0m"
+
+
+
"\u001b[33m"
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/copy.svg b/javadoc/copy.svg
new file mode 100644
index 0000000..d435f6c
--- /dev/null
+++ b/javadoc/copy.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
diff --git a/javadoc/element-list b/javadoc/element-list
new file mode 100644
index 0000000..8c4824d
--- /dev/null
+++ b/javadoc/element-list
@@ -0,0 +1,16 @@
+common
+game
+gui
+gui.constants
+gui.menu
+gui.widget
+network
+network.client
+network.protocol
+network.protocol.packets
+network.server
+sudoku
+sudoku.constraint
+sudoku.io
+sudoku.solver
+sudoku.structure
diff --git a/javadoc/game/Game.GameState.html b/javadoc/game/Game.GameState.html
new file mode 100644
index 0000000..095bf4f
--- /dev/null
+++ b/javadoc/game/Game.GameState.html
@@ -0,0 +1,235 @@
+
+
+
+
+Game.GameState
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/game/Game.html b/javadoc/game/Game.html
new file mode 100644
index 0000000..a2cfd7f
--- /dev/null
+++ b/javadoc/game/Game.html
@@ -0,0 +1,292 @@
+
+
+
+
+Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Game
+
extends Object
+
+
+
+
+
+
+Nested Class Summary
+Nested Classes
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
+
+
+
long
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getPlayerById
+public Player getPlayerById (int id)
+
+
+
+
+addPlayer
+public void addPlayer (Player player)
+
+
+
+
+setPlayerRemainingCells
+public void setPlayerRemainingCells (Player player,
+ int newScore)
+
+
+
+
+removePlayer
+public void removePlayer (int id)
+
+
+
+
+
+
+
+
+
+
+stopGame
+public void stopGame ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+getGameDuration
+public long getGameDuration ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/game/Player.html b/javadoc/game/Player.html
new file mode 100644
index 0000000..6b14944
--- /dev/null
+++ b/javadoc/game/Player.html
@@ -0,0 +1,205 @@
+
+
+
+
+Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
int
+
+
+
+
+
+
int
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Player
+public Player (int id,
+ String pseudo)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getRemainingCells
+public int getRemainingCells ()
+
+
+
+
+
+
+
+getId
+public int getId ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/game/package-summary.html b/javadoc/game/package-summary.html
new file mode 100644
index 0000000..b68c426
--- /dev/null
+++ b/javadoc/game/package-summary.html
@@ -0,0 +1,97 @@
+
+
+
+
+game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package game
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/game/package-tree.html b/javadoc/game/package-tree.html
new file mode 100644
index 0000000..39c1e5f
--- /dev/null
+++ b/javadoc/game/package-tree.html
@@ -0,0 +1,86 @@
+
+
+
+
+game Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/gui/AssetManager.html b/javadoc/gui/AssetManager.html
new file mode 100644
index 0000000..29f5ebe
--- /dev/null
+++ b/javadoc/gui/AssetManager.html
@@ -0,0 +1,172 @@
+
+
+
+
+AssetManager
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class AssetManager
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
static byte[]
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+AssetManager
+public AssetManager ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getResource
+public static byte[] getResource (String name)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/ColorGenerator.Color.html b/javadoc/gui/ColorGenerator.Color.html
new file mode 100644
index 0000000..18826e6
--- /dev/null
+++ b/javadoc/gui/ColorGenerator.Color.html
@@ -0,0 +1,200 @@
+
+
+
+
+ColorGenerator.Color
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
float
+
+
+
float
+
+
+
float
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
Color (float r,
+ float g,
+ float b)
+
+
+
+
+
+
+
+Method Summary
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Color
+public Color (float r,
+ float g,
+ float b)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/ColorGenerator.html b/javadoc/gui/ColorGenerator.html
new file mode 100644
index 0000000..a4e2925
--- /dev/null
+++ b/javadoc/gui/ColorGenerator.html
@@ -0,0 +1,225 @@
+
+
+
+
+ColorGenerator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ColorGenerator
+
extends Object
+
+
+
+
+
+
+Nested Class Summary
+Nested Classes
+
+
+
+
+
static class
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
static float
+
+
+
Helper method that converts hue to rgb
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ColorGenerator
+public ColorGenerator ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+
+
+
+
+
+
+hueToRgb
+public static float hueToRgb (float p,
+ float q,
+ float t)
+Helper method that converts hue to rgb
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/Main.html b/javadoc/gui/Main.html
new file mode 100644
index 0000000..9163669
--- /dev/null
+++ b/javadoc/gui/Main.html
@@ -0,0 +1,256 @@
+
+
+
+
+Main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Main
+extends imgui.app.Application
+
+
+
+
+
+
+Field Summary
+
+
Fields inherited from class imgui.app.Window
+colorBg, handle, imGuiGl3, imGuiGlfw
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
protected void
+
+
+
protected void
+
+
+
protected void
+
+
+
static void
+
+
+
protected void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class imgui.app.Application
+launch, postRun
+
+
Methods inherited from class imgui.app.Window
+dispose, disposeImGui, endFrame, getColorBg, getHandle, init, initWindow, postProcess, preProcess, run, runFrame, startFrame
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+disposeWindow
+protected void disposeWindow ()
+
+Overrides:
+disposeWindow in class imgui.app.Window
+
+
+
+
+
+initImGui
+protected void initImGui (imgui.app.Configuration config)
+
+Overrides:
+initImGui in class imgui.app.Window
+
+
+
+
+
+preRun
+protected void preRun ()
+
+Overrides:
+preRun in class imgui.app.Application
+
+
+
+
+
+process
+public void process ()
+
+Specified by:
+process in class imgui.app.Window
+
+
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/RenderableMultidoku.html b/javadoc/gui/RenderableMultidoku.html
new file mode 100644
index 0000000..a4903bc
--- /dev/null
+++ b/javadoc/gui/RenderableMultidoku.html
@@ -0,0 +1,201 @@
+
+
+
+
+RenderableMultidoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class RenderableMultidoku
+
extends Object
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
int
+
+
+
int
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getWidth
+public int getWidth ()
+
+
+
+
+getHeight
+public int getHeight ()
+
+
+
+
+
+
+
+getCell
+public Cell getCell (int x,
+ int y)
+
+
+
+
+getCell
+public Cell getCell (int index)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/Fonts.html b/javadoc/gui/constants/Fonts.html
new file mode 100644
index 0000000..ab4881f
--- /dev/null
+++ b/javadoc/gui/constants/Fonts.html
@@ -0,0 +1,246 @@
+
+
+
+
+Fonts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Fonts
+
extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
static imgui.ImFont
+
+
+
static imgui.ImFont
+
+
+
static imgui.ImFont
+
+
+
static imgui.ImFont
+
+
+
static imgui.ImFont
+
+
+
static imgui.ImFont
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+ARIAL
+public static imgui.ImFont ARIAL
+
+
+
+
+ARIAL_BOLD
+public static imgui.ImFont ARIAL_BOLD
+
+
+
+
+CHERI
+public static imgui.ImFont CHERI
+
+
+
+
+COMIC
+public static imgui.ImFont COMIC
+
+
+
+
+INFECTED
+public static imgui.ImFont INFECTED
+
+
+
+
+EMOJIS
+public static imgui.ImFont EMOJIS
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+createFonts
+public static void createFonts ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/Images.html b/javadoc/gui/constants/Images.html
new file mode 100644
index 0000000..f378c8b
--- /dev/null
+++ b/javadoc/gui/constants/Images.html
@@ -0,0 +1,201 @@
+
+
+
+
+Images
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Images
+
extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+BACKGROUND
+public static int BACKGROUND
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Images
+public Images ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+reloadImages
+public static void reloadImages ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/Options.html b/javadoc/gui/constants/Options.html
new file mode 100644
index 0000000..91d7386
--- /dev/null
+++ b/javadoc/gui/constants/Options.html
@@ -0,0 +1,192 @@
+
+
+
+
+Options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Options
+
extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
static float
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+
+
+
+BackgroundSpeed
+public static float BackgroundSpeed
+
+
+
+
+BackgroundPath
+public static String BackgroundPath
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Options
+public Options ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/SudokuType.html b/javadoc/gui/constants/SudokuType.html
new file mode 100644
index 0000000..e72a655
--- /dev/null
+++ b/javadoc/gui/constants/SudokuType.html
@@ -0,0 +1,309 @@
+
+
+
+
+SudokuType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
int
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+MultidokuXRectangle
+public static final SudokuType MultidokuXRectangle
+
+
+
+
+MultiDokuPlusSquare
+public static final SudokuType MultiDokuPlusSquare
+
+
+
+
+MultidokuPlusRectangle
+public static final SudokuType MultidokuPlusRectangle
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+getDisplayName
+public String getDisplayName ()
+
+
+
+
+
+
+
+getMakerParamCount
+public int getMakerParamCount ()
+
+
+
+
+getTypeNames
+public static String [] getTypeNames ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/Symbols.html b/javadoc/gui/constants/Symbols.html
new file mode 100644
index 0000000..23cdbb3
--- /dev/null
+++ b/javadoc/gui/constants/Symbols.html
@@ -0,0 +1,274 @@
+
+
+
+
+Symbols
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+Numbers
+public static final Symbols Numbers
+
+
+
+
+Letters
+public static final Symbols Letters
+
+
+
+
+Russian
+public static final Symbols Russian
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+getDisplayName
+public String getDisplayName ()
+
+
+
+
+
+
+
+getSymbolsNames
+public static String [] getSymbolsNames ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/package-summary.html b/javadoc/gui/constants/package-summary.html
new file mode 100644
index 0000000..186b98b
--- /dev/null
+++ b/javadoc/gui/constants/package-summary.html
@@ -0,0 +1,116 @@
+
+
+
+
+gui.constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package gui.constants
+
+
+
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/constants/package-tree.html b/javadoc/gui/constants/package-tree.html
new file mode 100644
index 0000000..71df876
--- /dev/null
+++ b/javadoc/gui/constants/package-tree.html
@@ -0,0 +1,88 @@
+
+
+
+
+gui.constants Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/BaseView.html b/javadoc/gui/menu/BaseView.html
new file mode 100644
index 0000000..7babdaa
--- /dev/null
+++ b/javadoc/gui/menu/BaseView.html
@@ -0,0 +1,241 @@
+
+
+
+
+BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Abstract Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
abstract void
+
+
+
protected void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public abstract void render ()
+
+
+
+
+cleanResources
+public void cleanResources ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/ConnexionStatusView.html b/javadoc/gui/menu/ConnexionStatusView.html
new file mode 100644
index 0000000..967d019
--- /dev/null
+++ b/javadoc/gui/menu/ConnexionStatusView.html
@@ -0,0 +1,275 @@
+
+
+
+
+ConnexionStatusView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ConnexionStatusView
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+onConnect
+public void onConnect ()
+
+
+
+
+onDisconnect
+public void onDisconnect ()
+
+
+
+
+onLeave
+public void onLeave ()
+
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/EndGameView.html b/javadoc/gui/menu/EndGameView.html
new file mode 100644
index 0000000..68ba9ef
--- /dev/null
+++ b/javadoc/gui/menu/EndGameView.html
@@ -0,0 +1,194 @@
+
+
+
+
+EndGameView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class EndGameView
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/MainMenu.html b/javadoc/gui/menu/MainMenu.html
new file mode 100644
index 0000000..02028bd
--- /dev/null
+++ b/javadoc/gui/menu/MainMenu.html
@@ -0,0 +1,190 @@
+
+
+
+
+MainMenu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/MultiMenu.html b/javadoc/gui/menu/MultiMenu.html
new file mode 100644
index 0000000..51a2537
--- /dev/null
+++ b/javadoc/gui/menu/MultiMenu.html
@@ -0,0 +1,190 @@
+
+
+
+
+MultiMenu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class MultiMenu
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/MultiPlayerDokuView.html b/javadoc/gui/menu/MultiPlayerDokuView.html
new file mode 100644
index 0000000..0e23fe0
--- /dev/null
+++ b/javadoc/gui/menu/MultiPlayerDokuView.html
@@ -0,0 +1,203 @@
+
+
+
+
+MultiPlayerDokuView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class MultiPlayerDokuView
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+onDisconnect
+public void onDisconnect ()
+
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/MultiPlayerView.html b/javadoc/gui/menu/MultiPlayerView.html
new file mode 100644
index 0000000..df3be2c
--- /dev/null
+++ b/javadoc/gui/menu/MultiPlayerView.html
@@ -0,0 +1,238 @@
+
+
+
+
+MultiPlayerView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class MultiPlayerView
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+onDisconnect
+public void onDisconnect ()
+
+
+
+
+renderGameStatus
+public void renderGameStatus ()
+
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/OptionsMenu.html b/javadoc/gui/menu/OptionsMenu.html
new file mode 100644
index 0000000..92310e4
--- /dev/null
+++ b/javadoc/gui/menu/OptionsMenu.html
@@ -0,0 +1,190 @@
+
+
+
+
+OptionsMenu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class OptionsMenu
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/SoloMenu.html b/javadoc/gui/menu/SoloMenu.html
new file mode 100644
index 0000000..7c38a2b
--- /dev/null
+++ b/javadoc/gui/menu/SoloMenu.html
@@ -0,0 +1,203 @@
+
+
+
+
+SoloMenu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/StateMachine.html b/javadoc/gui/menu/StateMachine.html
new file mode 100644
index 0000000..ea103f9
--- /dev/null
+++ b/javadoc/gui/menu/StateMachine.html
@@ -0,0 +1,208 @@
+
+
+
+
+StateMachine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class StateMachine
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+StateMachine
+public StateMachine ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+clear
+public void clear ()
+
+
+
+
+
+
+
+
+
+
+popState
+public void popState ()
+
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/SudokuView.html b/javadoc/gui/menu/SudokuView.html
new file mode 100644
index 0000000..fe1fbc9
--- /dev/null
+++ b/javadoc/gui/menu/SudokuView.html
@@ -0,0 +1,205 @@
+
+
+
+
+SudokuView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuView
+
extends BaseView
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+Specified by:
+render in class BaseView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/package-summary.html b/javadoc/gui/menu/package-summary.html
new file mode 100644
index 0000000..b1a1cd9
--- /dev/null
+++ b/javadoc/gui/menu/package-summary.html
@@ -0,0 +1,126 @@
+
+
+
+
+gui.menu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package gui.menu
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/menu/package-tree.html b/javadoc/gui/menu/package-tree.html
new file mode 100644
index 0000000..3346234
--- /dev/null
+++ b/javadoc/gui/menu/package-tree.html
@@ -0,0 +1,84 @@
+
+
+
+
+gui.menu Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/gui/package-summary.html b/javadoc/gui/package-summary.html
new file mode 100644
index 0000000..2f38609
--- /dev/null
+++ b/javadoc/gui/package-summary.html
@@ -0,0 +1,114 @@
+
+
+
+
+gui
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package gui
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/package-tree.html b/javadoc/gui/package-tree.html
new file mode 100644
index 0000000..90a8a70
--- /dev/null
+++ b/javadoc/gui/package-tree.html
@@ -0,0 +1,83 @@
+
+
+
+
+gui Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/AnimatedBackground.html b/javadoc/gui/widget/AnimatedBackground.html
new file mode 100644
index 0000000..0e3d899
--- /dev/null
+++ b/javadoc/gui/widget/AnimatedBackground.html
@@ -0,0 +1,172 @@
+
+
+
+
+AnimatedBackground
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class AnimatedBackground
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+AnimatedBackground
+public AnimatedBackground ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/LeaderboardRenderer.html b/javadoc/gui/widget/LeaderboardRenderer.html
new file mode 100644
index 0000000..e20891b
--- /dev/null
+++ b/javadoc/gui/widget/LeaderboardRenderer.html
@@ -0,0 +1,174 @@
+
+
+
+
+LeaderboardRenderer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class LeaderboardRenderer
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LeaderboardRenderer
+public LeaderboardRenderer (Game game,
+ Player player)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/MultiPlayerCompleteProgress.html b/javadoc/gui/widget/MultiPlayerCompleteProgress.html
new file mode 100644
index 0000000..1a7d02f
--- /dev/null
+++ b/javadoc/gui/widget/MultiPlayerCompleteProgress.html
@@ -0,0 +1,172 @@
+
+
+
+
+MultiPlayerCompleteProgress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class MultiPlayerCompleteProgress
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+MultiPlayerCompleteProgress
+public MultiPlayerCompleteProgress (Game game)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/SmoothProgressBar.html b/javadoc/gui/widget/SmoothProgressBar.html
new file mode 100644
index 0000000..91567d9
--- /dev/null
+++ b/javadoc/gui/widget/SmoothProgressBar.html
@@ -0,0 +1,185 @@
+
+
+
+
+SmoothProgressBar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SmoothProgressBar
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SmoothProgressBar
+public SmoothProgressBar ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render (String label,
+ imgui.ImVec2 size,
+ float progress)
+
+
+
+
+render
+public void render (float progress)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/SudokuRenderer.html b/javadoc/gui/widget/SudokuRenderer.html
new file mode 100644
index 0000000..66ca6c5
--- /dev/null
+++ b/javadoc/gui/widget/SudokuRenderer.html
@@ -0,0 +1,210 @@
+
+
+
+
+SudokuRenderer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuRenderer
+
extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/SudokuSelector.html b/javadoc/gui/widget/SudokuSelector.html
new file mode 100644
index 0000000..599d012
--- /dev/null
+++ b/javadoc/gui/widget/SudokuSelector.html
@@ -0,0 +1,221 @@
+
+
+
+
+SudokuSelector
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuSelector
+
extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SudokuSelector
+public SudokuSelector (boolean canGenEmptyGrid,
+ String confirmMessage)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+renderFileDialog
+public void renderFileDialog ()
+
+
+
+
+render
+public void render ()
+
+
+
+
+clean
+public void clean ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/TimerRenderer.html b/javadoc/gui/widget/TimerRenderer.html
new file mode 100644
index 0000000..5c1209a
--- /dev/null
+++ b/javadoc/gui/widget/TimerRenderer.html
@@ -0,0 +1,174 @@
+
+
+
+
+TimerRenderer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class TimerRenderer
+
extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+TimerRenderer
+public TimerRenderer (Instant startTime,
+ long duration)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+render
+public void render ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/package-summary.html b/javadoc/gui/widget/package-summary.html
new file mode 100644
index 0000000..6e3add7
--- /dev/null
+++ b/javadoc/gui/widget/package-summary.html
@@ -0,0 +1,118 @@
+
+
+
+
+gui.widget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package gui.widget
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/gui/widget/package-tree.html b/javadoc/gui/widget/package-tree.html
new file mode 100644
index 0000000..a074876
--- /dev/null
+++ b/javadoc/gui/widget/package-tree.html
@@ -0,0 +1,77 @@
+
+
+
+
+gui.widget Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html
new file mode 100644
index 0000000..5acc48f
--- /dev/null
+++ b/javadoc/help-doc.html
@@ -0,0 +1,193 @@
+
+
+
+
+API Help
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+JavaDoc Help
+
+
+
+
Navigation
+Starting from the
Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The
Index and Search box allow you to navigate to specific declarations and summary pages, including:
All Packages ,
All Classes and Interfaces
+
+Search
+You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
+
+"j.l.obj" matches "java.lang.Object"
+"InpStr" matches "java.io.InputStream"
+"math exact long" matches "java.lang.Math.absExact(long)"
+
+Refer to the Javadoc Search Specification for a full description of search features.
+
+
+
+
+
Kinds of Pages
+The following sections describe the different kinds of pages in this collection.
+
+Overview
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+Package
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
+
+Interfaces
+Classes
+Enum Classes
+Exception Classes
+Annotation Interfaces
+
+
+
+Class or Interface
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
+
+Class Inheritance Diagram
+Direct Subclasses
+All Known Subinterfaces
+All Known Implementing Classes
+Class or Interface Declaration
+Class or Interface Description
+
+
+
+Nested Class Summary
+Enum Constant Summary
+Field Summary
+Property Summary
+Constructor Summary
+Method Summary
+Required Element Summary
+Optional Element Summary
+
+
+
+Enum Constant Details
+Field Details
+Property Details
+Constructor Details
+Method Details
+Element Details
+
+Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
+The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Other Files
+Packages and modules may contain pages with additional information related to the declarations nearby.
+
+
+Tree (Class Hierarchy)
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.
+
+When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
+When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
+
+
+
+
+
+All Packages
+The All Packages page contains an alphabetic index of all packages contained in the documentation.
+
+
+All Classes and Interfaces
+The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/index-files/index-1.html b/javadoc/index-files/index-1.html
new file mode 100644
index 0000000..ef53a36
--- /dev/null
+++ b/javadoc/index-files/index-1.html
@@ -0,0 +1,128 @@
+
+
+
+
+A-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-10.html b/javadoc/index-files/index-10.html
new file mode 100644
index 0000000..6470e10
--- /dev/null
+++ b/javadoc/index-files/index-10.html
@@ -0,0 +1,71 @@
+
+
+
+
+K-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-11.html b/javadoc/index-files/index-11.html
new file mode 100644
index 0000000..c9e46cb
--- /dev/null
+++ b/javadoc/index-files/index-11.html
@@ -0,0 +1,87 @@
+
+
+
+
+L-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-12.html b/javadoc/index-files/index-12.html
new file mode 100644
index 0000000..4720e80
--- /dev/null
+++ b/javadoc/index-files/index-12.html
@@ -0,0 +1,114 @@
+
+
+
+
+M-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-13.html b/javadoc/index-files/index-13.html
new file mode 100644
index 0000000..d097b81
--- /dev/null
+++ b/javadoc/index-files/index-13.html
@@ -0,0 +1,88 @@
+
+
+
+
+N-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-14.html b/javadoc/index-files/index-14.html
new file mode 100644
index 0000000..bb6b729
--- /dev/null
+++ b/javadoc/index-files/index-14.html
@@ -0,0 +1,99 @@
+
+
+
+
+O-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-15.html b/javadoc/index-files/index-15.html
new file mode 100644
index 0000000..145375f
--- /dev/null
+++ b/javadoc/index-files/index-15.html
@@ -0,0 +1,115 @@
+
+
+
+
+P-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+P
+
+Packet - Class in network.protocol
+
+Packet() - Constructor for class network.protocol.Packet
+
+Packets - Enum Class in network.protocol
+
+PacketVisitor - Interface in network.protocol
+
+Player - Class in game
+
+Player(int, String) - Constructor for class game.Player
+
+PlayerJoin - Enum constant in enum class network.protocol.Packets
+
+PlayerJoinPacket - Class in network.protocol.packets
+
+PlayerJoinPacket(Player) - Constructor for class network.protocol.packets.PlayerJoinPacket
+
+PlayerLeave - Enum constant in enum class network.protocol.Packets
+
+PlayerLeavePacket - Class in network.protocol.packets
+
+PlayerLeavePacket(int) - Constructor for class network.protocol.packets.PlayerLeavePacket
+
+popAndGetState() - Method in class sudoku.structure.StateManager
+
+popState() - Method in class gui.menu.StateMachine
+
+popState() - Method in class sudoku.structure.StateManager
+
+preRun() - Method in class gui.Main
+
+printMultiDoku(RenderableMultidoku, Symbols, int, int) - Static method in class sudoku.io.SudokuPrinter
+
+printMultiDoku(RenderableMultidoku, List<String>, int, int) - Static method in class sudoku.io.SudokuPrinter
+
+printMultiDoku(MultiDoku, int, int, Symbols) - Static method in class sudoku.io.SudokuPrinter
+
+printMultiDokuWithIndex(RenderableMultidoku, List<String>, int, int) - Static method in class sudoku.io.SudokuPrinter
+
+printMultiDokuWithIndex(MultiDoku, int, int, Symbols) - Static method in class sudoku.io.SudokuPrinter
+
+printRectangleSudoku(Sudoku, int, int, Symbols) - Static method in class sudoku.io.SudokuPrinter
+
+printRectangleSudoku(Sudoku, int, int, List<String>) - Static method in class sudoku.io.SudokuPrinter
+
+printRectangleSudokuWithIndex(Sudoku, int, int, List<String>) - Static method in class sudoku.io.SudokuPrinter
+
+process() - Method in class gui.Main
+
+pushState() - Method in class sudoku.structure.StateManager
+
+pushState(BaseView) - Method in class gui.menu.StateMachine
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+
+
+
+
diff --git a/javadoc/index-files/index-16.html b/javadoc/index-files/index-16.html
new file mode 100644
index 0000000..fdf3244
--- /dev/null
+++ b/javadoc/index-files/index-16.html
@@ -0,0 +1,131 @@
+
+
+
+
+R-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-17.html b/javadoc/index-files/index-17.html
new file mode 100644
index 0000000..59f422a
--- /dev/null
+++ b/javadoc/index-files/index-17.html
@@ -0,0 +1,266 @@
+
+
+
+
+S-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+S
+
+saveMultiDoku(MultiDoku) - Static method in class sudoku.io.SudokuSerializer
+
+Save a serialized MultiDoku in a JSON file.
+
+saveMultiDoku(MultiDoku, int) - Static method in class sudoku.io.SudokuSerializer
+
+sendCellChange(Cell) - Method in class network.client.Client
+
+sendPacket(Packet) - Method in class network.Connexion
+
+serializeSudoku(MultiDoku) - Static method in class sudoku.io.SudokuSerializer
+
+Convertit un sudoku en object JSON
+
+Server - Class in network.server
+
+Server(short) - Constructor for class network.server.Server
+
+ServerAcceptThread - Class in network.server
+
+ServerAcceptThread(Server) - Constructor for class network.server.ServerAcceptThread
+
+ServerConnexion - Class in network.server
+
+ServerConnexion(Socket, Server) - Constructor for class network.server.ServerConnexion
+
+ServerLogicThread - Class in network.server
+
+ServerLogicThread(Server) - Constructor for class network.server.ServerLogicThread
+
+setBlock(Block) - Method in class sudoku.structure.Cell
+
+setBlockWidth(int) - Method in class sudoku.structure.Sudoku
+
+setCellsSymbol(List<Integer>) - Method in class sudoku.structure.Sudoku
+
+Place les symboles d'index contenus dans values dans les cases du Sudoku.
+
+setCellSymbol(int, int, int) - Method in class sudoku.structure.Sudoku
+
+Place le symbole d'index value dans la Cell de coordonnées précisées.
+
+setFilledCellsImmutable() - Method in class sudoku.structure.MultiDoku
+
+Change les Cells de ce MultiDoku avec des symboles, en Cells immuables.
+
+setImmutable() - Method in class sudoku.structure.Cell
+
+Rend la Cell immuable.
+
+setImmutableCellsSymbol(List<Integer>) - Method in class sudoku.structure.Sudoku
+
+Place les symboles d'index contenus dans values dans les cases du Sudoku et
+ rend ces cases immuables.
+
+setPlayerRemainingCells(Player, int) - Method in class game.Game
+
+setSudoku(MultiDoku) - Method in class network.server.ServerConnexion
+
+setSymbolIndex(int) - Method in class sudoku.structure.Cell
+
+setX(int) - Method in class sudoku.structure.Coordinate
+
+setY(int) - Method in class sudoku.structure.Coordinate
+
+Signal - Class in common
+
+Signal() - Constructor for class common.Signal
+
+SmoothProgressBar - Class in gui.widget
+
+SmoothProgressBar() - Constructor for class gui.widget.SmoothProgressBar
+
+SoloMenu - Class in gui.menu
+
+SoloMenu(StateMachine) - Constructor for class gui.menu.SoloMenu
+
+solve(MultiDoku) - Method in interface sudoku.solver.Solver
+
+solve(MultiDoku, List<SolverStep>) - Method in class sudoku.solver.BacktrackingSolver
+
+Résout le MultiDoku passé en paramètre, avec backtracking.
+
+solve(MultiDoku, List<SolverStep>) - Method in class sudoku.solver.HumanSolver
+
+Résout le MultiDoku passé en paramètre, avec règles de déduction.
+
+solve(MultiDoku, List<SolverStep>) - Method in class sudoku.solver.MixedSolver
+
+Résout le MultiDoku passé en paramètre, avec règles de déduction et
+ backtracking.
+
+solve(MultiDoku, List<SolverStep>) - Method in class sudoku.solver.RandomSolver
+
+Résout, si possible, le multidoku passé en paramètre
+ en testant toutes les possibilités, de manière aléatoire, avec un algorithme
+ de backtracking.
+
+solve(MultiDoku, List<SolverStep>) - Method in interface sudoku.solver.Solver
+
+solve(MultiDoku, List<SolverStep>) - Method in class sudoku.solver.StupidSolver
+
+Solver - Interface in sudoku.solver
+
+SolverStep - Class in sudoku.solver
+
+SolverStep(Cell) - Constructor for class sudoku.solver.SolverStep
+
+Square - Enum constant in enum class gui.constants.SudokuType
+
+startGame(MultiDoku, long) - Method in class network.server.Server
+
+startGame(MultiDoku, Instant, long) - Method in class game.Game
+
+StartGame - Enum constant in enum class network.protocol.Packets
+
+StartGamePacket - Class in network.protocol.packets
+
+StartGamePacket(String, Instant, long) - Constructor for class network.protocol.packets.StartGamePacket
+
+stateMachine - Variable in class gui.menu.BaseView
+
+StateMachine - Class in gui.menu
+
+StateMachine() - Constructor for class gui.menu.StateMachine
+
+StateManager - Class in sudoku.structure
+
+Une pile, qui réprésente les états d'un MultiDoku,
+ utile pour les Solvers.
+
+StateManager(MultiDoku) - Constructor for class sudoku.structure.StateManager
+
+stop() - Method in class network.client.Client
+
+stop() - Method in class network.server.Server
+
+stopGame() - Method in class game.Game
+
+stopGame() - Method in class network.server.Server
+
+StupidSolver - Class in sudoku.solver
+
+Class de test non utilisé
+
+StupidSolver() - Constructor for class sudoku.solver.StupidSolver
+
+sub(Coordinate) - Method in class sudoku.structure.Coordinate
+
+Soustrait la Coordiante donnée à celle-ci.
+
+sudoku - package sudoku
+
+Sudoku - Class in sudoku.structure
+
+Class : Sudoku
+ Brief : Représent un Sudoku
+
+Sudoku(List<Cell>, List<Block>, List<IConstraint>) - Constructor for class sudoku.structure.Sudoku
+
+sudoku.constraint - package sudoku.constraint
+
+sudoku.io - package sudoku.io
+
+sudoku.solver - package sudoku.solver
+
+sudoku.structure - package sudoku.structure
+
+SudokuFactory - Class in sudoku.structure
+
+SudokuFactory() - Constructor for class sudoku.structure.SudokuFactory
+
+SudokuPrinter - Class in sudoku.io
+
+SudokuPrinter() - Constructor for class sudoku.io.SudokuPrinter
+
+SudokuRenderer - Class in gui.widget
+
+SudokuRenderer(MultiDoku) - Constructor for class gui.widget.SudokuRenderer
+
+SudokuSelector - Class in gui.widget
+
+SudokuSelector(boolean, String) - Constructor for class gui.widget.SudokuSelector
+
+SudokuSerializer - Class in sudoku.io
+
+Classe permettant d'effectuer des opérations sur les sudokus afin de les
+ charger/sauvegarder
+
+SudokuSerializer() - Constructor for class sudoku.io.SudokuSerializer
+
+SudokuSerializerTest - Class in sudoku
+
+SudokuSerializerTest() - Constructor for class sudoku.SudokuSerializerTest
+
+SudokuType - Enum Class in gui.constants
+
+SudokuView - Class in gui.menu
+
+SudokuView(StateMachine, MultiDoku) - Constructor for class gui.menu.SudokuView
+
+Symboles - Static variable in class gui.constants.Options
+
+Symbols - Enum Class in gui.constants
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+
+
+
+
diff --git a/javadoc/index-files/index-18.html b/javadoc/index-files/index-18.html
new file mode 100644
index 0000000..ea2ecce
--- /dev/null
+++ b/javadoc/index-files/index-18.html
@@ -0,0 +1,89 @@
+
+
+
+
+T-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-19.html b/javadoc/index-files/index-19.html
new file mode 100644
index 0000000..8384c10
--- /dev/null
+++ b/javadoc/index-files/index-19.html
@@ -0,0 +1,73 @@
+
+
+
+
+U-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-2.html b/javadoc/index-files/index-2.html
new file mode 100644
index 0000000..0afe072
--- /dev/null
+++ b/javadoc/index-files/index-2.html
@@ -0,0 +1,101 @@
+
+
+
+
+B-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-20.html b/javadoc/index-files/index-20.html
new file mode 100644
index 0000000..22edfb5
--- /dev/null
+++ b/javadoc/index-files/index-20.html
@@ -0,0 +1,183 @@
+
+
+
+
+V-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-21.html b/javadoc/index-files/index-21.html
new file mode 100644
index 0000000..39c87cd
--- /dev/null
+++ b/javadoc/index-files/index-21.html
@@ -0,0 +1,68 @@
+
+
+
+
+W-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-3.html b/javadoc/index-files/index-3.html
new file mode 100644
index 0000000..441f123
--- /dev/null
+++ b/javadoc/index-files/index-3.html
@@ -0,0 +1,286 @@
+
+
+
+
+C-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+C
+
+canBePlaced(int, int, int) - Method in class sudoku.structure.Sudoku
+
+Teste si on peut placer la value dans la Cell aux coordonnées x, y d'après
+ les contraintes du Sudoku.
+
+canBePlaced(Sudoku, int, int, int) - Method in class sudoku.constraint.BlockConstraint
+
+canBePlaced(Sudoku, int, int, int) - Method in class sudoku.constraint.ColumnConstraint
+
+canBePlaced(Sudoku, int, int, int) - Method in class sudoku.constraint.DiagonalConstraint
+
+canBePlaced(Sudoku, int, int, int) - Method in interface sudoku.constraint.IConstraint
+
+canBePlaced(Sudoku, int, int, int) - Method in class sudoku.constraint.LineConstraint
+
+cancel() - Method in class network.ConnexionThread
+
+cancel() - Method in class network.server.ServerAcceptThread
+
+cancel() - Method in class network.server.ServerLogicThread
+
+canHaveValue(int) - Method in class sudoku.structure.Cell
+
+Vérifie si la Cell peut prendre ce symbole par rapport aux contraintes de ses Sudokus.
+
+cell() - Method in record class sudoku.solver.HintHelper.Hint
+
+Returns the value of the cell record component.
+
+Cell - Class in sudoku.structure
+
+Représente une case d'un, ou plusieurs, sudoku qui à comme valeur un index de symbole.
+
+Cell() - Constructor for class sudoku.structure.Cell
+
+Cell(int) - Constructor for class sudoku.structure.Cell
+
+Cell(int, boolean) - Constructor for class sudoku.structure.Cell
+
+ChangeCell - Enum constant in enum class network.protocol.Packets
+
+ChangeCellPacket - Class in network.protocol.packets
+
+ChangeCellPacket(int, int, int) - Constructor for class network.protocol.packets.ChangeCellPacket
+
+CHERI - Static variable in class gui.constants.Fonts
+
+clean() - Method in class gui.widget.SudokuSelector
+
+cleanResources() - Method in class gui.menu.BaseView
+
+cleanResources() - Method in class gui.menu.ConnexionStatusView
+
+cleanResources() - Method in class gui.menu.MultiPlayerView
+
+cleanResources() - Method in class gui.menu.SoloMenu
+
+clear() - Method in class common.ConsumerSignal
+
+clear() - Method in class common.Signal
+
+clear() - Method in class gui.menu.StateMachine
+
+clearCurrentSymbol() - Method in class sudoku.structure.Cell
+
+Vide la Cell.
+
+clearMutableCells() - Method in class sudoku.structure.MultiDoku
+
+Vide les Cells modifiable.
+
+Client - Class in network.client
+
+Client(String, String, short) - Constructor for class network.client.Client
+
+ClientConnexion - Class in network.client
+
+ClientConnexion(String, short, Client) - Constructor for class network.client.ClientConnexion
+
+clone() - Method in class sudoku.structure.MultiDoku
+
+close() - Method in class network.client.ClientConnexion
+
+close() - Method in class network.Connexion
+
+close() - Method in class network.server.ServerConnexion
+
+closeMenu() - Method in class gui.menu.BaseView
+
+closeMenu() - Method in class gui.menu.ConnexionStatusView
+
+closeMenu() - Method in class gui.menu.MultiPlayerView
+
+closeMenu() - Method in class gui.menu.SudokuView
+
+closeMenu(int) - Method in class gui.menu.BaseView
+
+Color(float, float, float) - Constructor for class gui.ColorGenerator.Color
+
+ColorGenerator - Class in gui
+
+ColorGenerator() - Constructor for class gui.ColorGenerator
+
+ColorGenerator.Color - Class in gui
+
+Column - Enum constant in enum class sudoku.constraint.Constraint
+
+ColumnConstraint - Class in sudoku.constraint
+
+Contrainte de colonne
+
+ColumnConstraint() - Constructor for class sudoku.constraint.ColumnConstraint
+
+COMIC - Static variable in class gui.constants.Fonts
+
+common - package common
+
+configure(Configuration) - Method in class gui.Main
+
+connect(Runnable) - Method in class common.Signal
+
+connect(Consumer<T>) - Method in class common.ConsumerSignal
+
+ConnectionInfo - Enum constant in enum class network.protocol.Packets
+
+Connexion - Class in network
+
+Connexion(Socket) - Constructor for class network.Connexion
+
+ConnexionInfoPacket - Class in network.protocol.packets
+
+ConnexionInfoPacket(int) - Constructor for class network.protocol.packets.ConnexionInfoPacket
+
+ConnexionStatusView - Class in gui.menu
+
+ConnexionStatusView(StateMachine, String, short) - Constructor for class gui.menu.ConnexionStatusView
+
+ConnexionStatusView(StateMachine, String, String, short) - Constructor for class gui.menu.ConnexionStatusView
+
+ConnexionThread - Class in network
+
+ConnexionThread(Connexion) - Constructor for class network.ConnexionThread
+
+ConsoleInterface - Class in sudoku.io
+
+ConsoleInterface() - Constructor for class sudoku.io.ConsoleInterface
+
+Constraint - Enum Class in sudoku.constraint
+
+Enumération utilisée afin de simplifier l'affichage en graphique.
+
+ConsumerSignal<T> - Class in common
+
+ConsumerSignal() - Constructor for class common.ConsumerSignal
+
+containsSymbol(int) - Method in class sudoku.structure.Block
+
+Cherche si le Block contient déjà un symbole donné.
+
+Coordinate - Class in sudoku.structure
+
+Représente les coordonnées d'une Cell.
+
+Coordinate(int, int) - Constructor for class sudoku.structure.Coordinate
+
+countSolution(MultiDoku) - Method in interface sudoku.solver.Solver
+
+Compte le nombre de solutions possibles au MultiDoku passé en paramètres.
+
+createBasicEmptyRandomBlockDoku(int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Crée un Sudoku vide avec les Blocks aléatoires.
+
+createBasicEmptyRectangleDoku(int, int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku vide dont les Blocks sont de taille widthBlock par
+ heightBlock.
+
+createBasicEmptySquareDoku(int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku vide dont les Blocks sont carrés de longueur size.
+
+createBasicPlusShapedMultidoku(int, int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku de Blocks rectangulaires de forme +, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+createBasicPlusShapedMultidoku(int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku de Blocks carrés de forme +, de taille size composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+createBasicXShapedMultidoku(int, int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku de Blocks rectangulaires de forme X, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+createBasicXShapedMultidoku(int, List<IConstraint>) - Static method in class sudoku.structure.SudokuFactory
+
+Créée un MultiDoku de Blocks carrés de taille size composé de cinq Sudokus,
+ dont un central qui partage chacun de ses Blockss d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+createDoku(List<IConstraint>, int...) - Method in enum class gui.constants.SudokuType
+
+createFonts() - Static method in class gui.constants.Fonts
+
+
+A B C D E F G H I K L M N O P R S T U V W All Classes and Interfaces | All Packages | Constant Field Values | Serialized Form
+
+
+
+
diff --git a/javadoc/index-files/index-4.html b/javadoc/index-files/index-4.html
new file mode 100644
index 0000000..828334e
--- /dev/null
+++ b/javadoc/index-files/index-4.html
@@ -0,0 +1,94 @@
+
+
+
+
+D-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-5.html b/javadoc/index-files/index-5.html
new file mode 100644
index 0000000..b62a5e4
--- /dev/null
+++ b/javadoc/index-files/index-5.html
@@ -0,0 +1,91 @@
+
+
+
+
+E-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-6.html b/javadoc/index-files/index-6.html
new file mode 100644
index 0000000..4f65763
--- /dev/null
+++ b/javadoc/index-files/index-6.html
@@ -0,0 +1,83 @@
+
+
+
+
+F-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-7.html b/javadoc/index-files/index-7.html
new file mode 100644
index 0000000..3ce109e
--- /dev/null
+++ b/javadoc/index-files/index-7.html
@@ -0,0 +1,267 @@
+
+
+
+
+G-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-8.html b/javadoc/index-files/index-8.html
new file mode 100644
index 0000000..bd0a4f9
--- /dev/null
+++ b/javadoc/index-files/index-8.html
@@ -0,0 +1,89 @@
+
+
+
+
+H-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index-files/index-9.html b/javadoc/index-files/index-9.html
new file mode 100644
index 0000000..2b43fae
--- /dev/null
+++ b/javadoc/index-files/index-9.html
@@ -0,0 +1,102 @@
+
+
+
+
+I-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/javadoc/index.html b/javadoc/index.html
new file mode 100644
index 0000000..6b70d18
--- /dev/null
+++ b/javadoc/index.html
@@ -0,0 +1,93 @@
+
+
+
+
+Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/legal/COPYRIGHT b/javadoc/legal/COPYRIGHT
new file mode 100644
index 0000000..945e19c
--- /dev/null
+++ b/javadoc/legal/COPYRIGHT
@@ -0,0 +1,69 @@
+Copyright © 1993, 2018, Oracle and/or its affiliates.
+All rights reserved.
+
+This software and related documentation are provided under a
+license agreement containing restrictions on use and
+disclosure and are protected by intellectual property laws.
+Except as expressly permitted in your license agreement or
+allowed by law, you may not use, copy, reproduce, translate,
+broadcast, modify, license, transmit, distribute, exhibit,
+perform, publish, or display any part, in any form, or by
+any means. Reverse engineering, disassembly, or
+decompilation of this software, unless required by law for
+interoperability, is prohibited.
+
+The information contained herein is subject to change
+without notice and is not warranted to be error-free. If you
+find any errors, please report them to us in writing.
+
+If this is software or related documentation that is
+delivered to the U.S. Government or anyone licensing it on
+behalf of the U.S. Government, the following notice is
+applicable:
+
+U.S. GOVERNMENT END USERS: Oracle programs, including any
+operating system, integrated software, any programs
+installed on the hardware, and/or documentation, delivered
+to U.S. Government end users are "commercial computer
+software" pursuant to the applicable Federal Acquisition
+Regulation and agency-specific supplemental regulations. As
+such, use, duplication, disclosure, modification, and
+adaptation of the programs, including any operating system,
+integrated software, any programs installed on the hardware,
+and/or documentation, shall be subject to license terms and
+license restrictions applicable to the programs. No other
+rights are granted to the U.S. Government.
+
+This software or hardware is developed for general use in a
+variety of information management applications. It is not
+developed or intended for use in any inherently dangerous
+applications, including applications that may create a risk
+of personal injury. If you use this software or hardware in
+dangerous applications, then you shall be responsible to
+take all appropriate fail-safe, backup, redundancy, and
+other measures to ensure its safe use. Oracle Corporation
+and its affiliates disclaim any liability for any damages
+caused by use of this software or hardware in dangerous
+applications.
+
+Oracle and Java are registered trademarks of Oracle and/or
+its affiliates. Other names may be trademarks of their
+respective owners.
+
+Intel and Intel Xeon are trademarks or registered trademarks
+of Intel Corporation. All SPARC trademarks are used under
+license and are trademarks or registered trademarks of SPARC
+International, Inc. AMD, Opteron, the AMD logo, and the AMD
+Opteron logo are trademarks or registered trademarks of
+Advanced Micro Devices. UNIX is a registered trademark of
+The Open Group.
+
+This software or hardware and documentation may provide
+access to or information on content, products, and services
+from third parties. Oracle Corporation and its affiliates
+are not responsible for and expressly disclaim all
+warranties of any kind with respect to third-party content,
+products, and services. Oracle Corporation and its
+affiliates will not be responsible for any loss, costs, or
+damages incurred due to your access to or use of third-party
+content, products, or services.
diff --git a/javadoc/legal/LICENSE b/javadoc/legal/LICENSE
new file mode 100644
index 0000000..ee860d3
--- /dev/null
+++ b/javadoc/legal/LICENSE
@@ -0,0 +1,118 @@
+Your use of this Program is governed by the No-Fee Terms and Conditions set
+forth below, unless you have received this Program (alone or as part of another
+Oracle product) under an Oracle license agreement (including but not limited to
+the Oracle Master Agreement), in which case your use of this Program is governed
+solely by such license agreement with Oracle.
+
+Oracle No-Fee Terms and Conditions (NFTC)
+
+Definitions
+
+"Oracle" refers to Oracle America, Inc. "You" and "Your" refers to (a) a company
+or organization (each an "Entity") accessing the Programs, if use of the
+Programs will be on behalf of such Entity; or (b) an individual accessing the
+Programs, if use of the Programs will not be on behalf of an Entity.
+"Program(s)" refers to Oracle software provided by Oracle pursuant to the
+following terms and any updates, error corrections, and/or Program Documentation
+provided by Oracle. "Program Documentation" refers to Program user manuals and
+Program installation manuals, if any. If available, Program Documentation may be
+delivered with the Programs and/or may be accessed from
+www.oracle.com/documentation. "Separate Terms" refers to separate license terms
+that are specified in the Program Documentation, readmes or notice files and
+that apply to Separately Licensed Technology. "Separately Licensed Technology"
+refers to Oracle or third party technology that is licensed under Separate Terms
+and not under the terms of this license.
+
+Separately Licensed Technology
+
+Oracle may provide certain notices to You in Program Documentation, readmes or
+notice files in connection with Oracle or third party technology provided as or
+with the Programs. If specified in the Program Documentation, readmes or notice
+files, such technology will be licensed to You under Separate Terms. Your rights
+to use Separately Licensed Technology under Separate Terms are not restricted in
+any way by the terms herein. For clarity, notwithstanding the existence of a
+notice, third party technology that is not Separately Licensed Technology shall
+be deemed part of the Programs licensed to You under the terms of this license.
+
+Source Code for Open Source Software
+
+For software that You receive from Oracle in binary form that is licensed under
+an open source license that gives You the right to receive the source code for
+that binary, You can obtain a copy of the applicable source code from
+https://oss.oracle.com/sources/ or http://www.oracle.com/goto/opensourcecode. If
+the source code for such software was not provided to You with the binary, You
+can also receive a copy of the source code on physical media by submitting a
+written request pursuant to the instructions in the "Written Offer for Source
+Code" section of the latter website.
+
+-------------------------------------------------------------------------------
+
+The following license terms apply to those Programs that are not provided to You
+under Separate Terms.
+
+License Rights and Restrictions
+
+Oracle grants to You, as a recipient of this Program, subject to the conditions
+stated herein, a nonexclusive, nontransferable, limited license to:
+
+(a) internally use the unmodified Programs for the purposes of developing,
+testing, prototyping and demonstrating your applications, and running the
+Program for Your own personal use or internal business operations; and
+
+(b) redistribute the unmodified Program and Program Documentation, under the
+terms of this License, provided that You do not charge Your licensees any fees
+associated with such distribution or use of the Program, including, without
+limitation, fees for products that include or are bundled with a copy of the
+Program or for services that involve the use of the distributed Program.
+
+You may make copies of the Programs to the extent reasonably necessary for
+exercising the license rights granted herein and for backup purposes. You are
+granted the right to use the Programs to provide third party training in the use
+of the Programs and associated Separately Licensed Technology only if there is
+express authorization of such use by Oracle on the Program's download page or in
+the Program Documentation.
+
+Your license is contingent on compliance with the following conditions:
+
+- You do not remove markings or notices of either Oracle's or a licensor's
+ proprietary rights from the Programs or Program Documentation;
+
+- You comply with all U.S. and applicable export control and economic sanctions
+ laws and regulations that govern Your use of the Programs (including technical
+ data);
+
+- You do not cause or permit reverse engineering, disassembly or decompilation
+ of the Programs (except as allowed by law) by You nor allow an associated
+ party to do so.
+
+For clarity, any source code that may be included in the distribution with the
+Programs is provided solely for reference purposes and may not be modified,
+unless such source code is under Separate Terms permitting modification.
+
+Ownership
+
+Oracle or its licensors retain all ownership and intellectual property rights to
+the Programs.
+
+Information Collection
+
+The Programs' installation and/or auto-update processes, if any, may transmit a
+limited amount of data to Oracle or its service provider about those processes
+to help Oracle understand and optimize them. Oracle does not associate the data
+with personally identifiable information. Refer to Oracle's Privacy Policy at
+www.oracle.com/privacy.
+
+Disclaimer of Warranties; Limitation of Liability
+
+THE PROGRAMS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ORACLE FURTHER
+DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY
+IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+NONINFRINGEMENT.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL ORACLE BE LIABLE TO YOU FOR
+DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
diff --git a/javadoc/legal/jquery.md b/javadoc/legal/jquery.md
new file mode 100644
index 0000000..d468b31
--- /dev/null
+++ b/javadoc/legal/jquery.md
@@ -0,0 +1,72 @@
+## jQuery v3.6.1
+
+### jQuery License
+```
+jQuery v 3.6.1
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************
+
+The jQuery JavaScript Library v3.6.1 also includes Sizzle.js
+
+Sizzle.js includes the following license:
+
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/sizzle
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+*********************
+
+```
diff --git a/javadoc/legal/jqueryUI.md b/javadoc/legal/jqueryUI.md
new file mode 100644
index 0000000..8bda9d7
--- /dev/null
+++ b/javadoc/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.13.2
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/javadoc/link.svg b/javadoc/link.svg
new file mode 100644
index 0000000..dadef51
--- /dev/null
+++ b/javadoc/link.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
diff --git a/javadoc/member-search-index.js b/javadoc/member-search-index.js
new file mode 100644
index 0000000..5274bc0
--- /dev/null
+++ b/javadoc/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"network.protocol","c":"Packet","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"ChangeCellPacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"ConnexionInfoPacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"DisconnectPacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"EndGamePacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"KeepAlivePacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"LoginPacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"PlayerJoinPacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"PlayerLeavePacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"StartGamePacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"network.protocol.packets","c":"UpdatePlayerScorePacket","l":"accept(PacketVisitor)","u":"accept(network.protocol.PacketVisitor)"},{"p":"sudoku.structure","c":"Coordinate","l":"add(Coordinate)","u":"add(sudoku.structure.Coordinate)"},{"p":"sudoku.structure","c":"Block","l":"addCell(Cell)","u":"addCell(sudoku.structure.Cell)"},{"p":"game","c":"Game","l":"addPlayer(Player)","u":"addPlayer(game.Player)"},{"p":"network.client","c":"Client","l":"addPlayer(Player)","u":"addPlayer(game.Player)"},{"p":"network.server","c":"Server","l":"addPlayer(String)","u":"addPlayer(java.lang.String)"},{"p":"sudoku.solver","c":"Solver","l":"addStep(Cell, List)","u":"addStep(sudoku.structure.Cell,java.util.List)"},{"p":"gui.widget","c":"AnimatedBackground","l":"AnimatedBackground()","u":"%3Cinit%3E()"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_BLUE"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_CYAN"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_GREEN"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_PURPLE"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_RED"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_RESET"},{"p":"sudoku.io","c":"SudokuPrinter","l":"ANSI_YELLOW"},{"p":"gui.constants","c":"Fonts","l":"ARIAL"},{"p":"gui.constants","c":"Fonts","l":"ARIAL_BOLD"},{"p":"gui","c":"AssetManager","l":"AssetManager()","u":"%3Cinit%3E()"},{"p":"gui","c":"ColorGenerator.Color","l":"b"},{"p":"gui.constants","c":"Images","l":"BACKGROUND"},{"p":"gui.constants","c":"Options","l":"BackgroundPath"},{"p":"gui.constants","c":"Options","l":"BackgroundSpeed"},{"p":"sudoku.solver","c":"BacktrackingSolver","l":"BacktrackingSolver()","u":"%3Cinit%3E()"},{"p":"gui.menu","c":"BaseView","l":"BaseView(StateMachine)","u":"%3Cinit%3E(gui.menu.StateMachine)"},{"p":"sudoku.constraint","c":"Constraint","l":"Block"},{"p":"sudoku.structure","c":"Block","l":"Block()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"Block","l":"Block(List)","u":"%3Cinit%3E(java.util.List)"},{"p":"sudoku.constraint","c":"BlockConstraint","l":"BlockConstraint()","u":"%3Cinit%3E()"},{"p":"network.server","c":"Server","l":"broadcastPacket(Packet)","u":"broadcastPacket(network.protocol.Packet)"},{"p":"sudoku.structure","c":"Sudoku","l":"canBePlaced(int, int, int)","u":"canBePlaced(int,int,int)"},{"p":"sudoku.constraint","c":"BlockConstraint","l":"canBePlaced(Sudoku, int, int, int)","u":"canBePlaced(sudoku.structure.Sudoku,int,int,int)"},{"p":"sudoku.constraint","c":"ColumnConstraint","l":"canBePlaced(Sudoku, int, int, int)","u":"canBePlaced(sudoku.structure.Sudoku,int,int,int)"},{"p":"sudoku.constraint","c":"DiagonalConstraint","l":"canBePlaced(Sudoku, int, int, int)","u":"canBePlaced(sudoku.structure.Sudoku,int,int,int)"},{"p":"sudoku.constraint","c":"IConstraint","l":"canBePlaced(Sudoku, int, int, int)","u":"canBePlaced(sudoku.structure.Sudoku,int,int,int)"},{"p":"sudoku.constraint","c":"LineConstraint","l":"canBePlaced(Sudoku, int, int, int)","u":"canBePlaced(sudoku.structure.Sudoku,int,int,int)"},{"p":"network","c":"ConnexionThread","l":"cancel()"},{"p":"network.server","c":"ServerAcceptThread","l":"cancel()"},{"p":"network.server","c":"ServerLogicThread","l":"cancel()"},{"p":"sudoku.structure","c":"Cell","l":"canHaveValue(int)"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"cell()"},{"p":"sudoku.structure","c":"Cell","l":"Cell()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"Cell","l":"Cell(int)","u":"%3Cinit%3E(int)"},{"p":"sudoku.structure","c":"Cell","l":"Cell(int, boolean)","u":"%3Cinit%3E(int,boolean)"},{"p":"network.protocol","c":"Packets","l":"ChangeCell"},{"p":"network.protocol.packets","c":"ChangeCellPacket","l":"ChangeCellPacket(int, int, int)","u":"%3Cinit%3E(int,int,int)"},{"p":"gui.constants","c":"Fonts","l":"CHERI"},{"p":"gui.widget","c":"SudokuSelector","l":"clean()"},{"p":"gui.menu","c":"BaseView","l":"cleanResources()"},{"p":"gui.menu","c":"ConnexionStatusView","l":"cleanResources()"},{"p":"gui.menu","c":"MultiPlayerView","l":"cleanResources()"},{"p":"gui.menu","c":"SoloMenu","l":"cleanResources()"},{"p":"common","c":"ConsumerSignal","l":"clear()"},{"p":"common","c":"Signal","l":"clear()"},{"p":"gui.menu","c":"StateMachine","l":"clear()"},{"p":"sudoku.structure","c":"Cell","l":"clearCurrentSymbol()"},{"p":"sudoku.structure","c":"MultiDoku","l":"clearMutableCells()"},{"p":"network.client","c":"Client","l":"Client(String, String, short)","u":"%3Cinit%3E(java.lang.String,java.lang.String,short)"},{"p":"network.client","c":"ClientConnexion","l":"ClientConnexion(String, short, Client)","u":"%3Cinit%3E(java.lang.String,short,network.client.Client)"},{"p":"sudoku.structure","c":"MultiDoku","l":"clone()"},{"p":"network.client","c":"ClientConnexion","l":"close()"},{"p":"network","c":"Connexion","l":"close()"},{"p":"network.server","c":"ServerConnexion","l":"close()"},{"p":"gui.menu","c":"BaseView","l":"closeMenu()"},{"p":"gui.menu","c":"ConnexionStatusView","l":"closeMenu()"},{"p":"gui.menu","c":"MultiPlayerView","l":"closeMenu()"},{"p":"gui.menu","c":"SudokuView","l":"closeMenu()"},{"p":"gui.menu","c":"BaseView","l":"closeMenu(int)"},{"p":"gui","c":"ColorGenerator.Color","l":"Color(float, float, float)","u":"%3Cinit%3E(float,float,float)"},{"p":"gui","c":"ColorGenerator","l":"ColorGenerator()","u":"%3Cinit%3E()"},{"p":"sudoku.constraint","c":"Constraint","l":"Column"},{"p":"sudoku.constraint","c":"ColumnConstraint","l":"ColumnConstraint()","u":"%3Cinit%3E()"},{"p":"gui.constants","c":"Fonts","l":"COMIC"},{"p":"gui","c":"Main","l":"configure(Configuration)","u":"configure(imgui.app.Configuration)"},{"p":"common","c":"ConsumerSignal","l":"connect(Consumer)","u":"connect(java.util.function.Consumer)"},{"p":"common","c":"Signal","l":"connect(Runnable)","u":"connect(java.lang.Runnable)"},{"p":"network.protocol","c":"Packets","l":"ConnectionInfo"},{"p":"network","c":"Connexion","l":"Connexion(Socket)","u":"%3Cinit%3E(java.net.Socket)"},{"p":"network.protocol.packets","c":"ConnexionInfoPacket","l":"ConnexionInfoPacket(int)","u":"%3Cinit%3E(int)"},{"p":"gui.menu","c":"ConnexionStatusView","l":"ConnexionStatusView(StateMachine, String, short)","u":"%3Cinit%3E(gui.menu.StateMachine,java.lang.String,short)"},{"p":"gui.menu","c":"ConnexionStatusView","l":"ConnexionStatusView(StateMachine, String, String, short)","u":"%3Cinit%3E(gui.menu.StateMachine,java.lang.String,java.lang.String,short)"},{"p":"network","c":"ConnexionThread","l":"ConnexionThread(Connexion)","u":"%3Cinit%3E(network.Connexion)"},{"p":"sudoku.io","c":"ConsoleInterface","l":"ConsoleInterface()","u":"%3Cinit%3E()"},{"p":"common","c":"ConsumerSignal","l":"ConsumerSignal()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"Block","l":"containsSymbol(int)"},{"p":"sudoku.structure","c":"Coordinate","l":"Coordinate(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"sudoku.solver","c":"Solver","l":"countSolution(MultiDoku)","u":"countSolution(sudoku.structure.MultiDoku)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicEmptyRandomBlockDoku(int, List)","u":"createBasicEmptyRandomBlockDoku(int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicEmptyRectangleDoku(int, int, List)","u":"createBasicEmptyRectangleDoku(int,int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicEmptySquareDoku(int, List)","u":"createBasicEmptySquareDoku(int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicPlusShapedMultidoku(int, int, List)","u":"createBasicPlusShapedMultidoku(int,int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicPlusShapedMultidoku(int, List)","u":"createBasicPlusShapedMultidoku(int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicXShapedMultidoku(int, int, List)","u":"createBasicXShapedMultidoku(int,int,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"createBasicXShapedMultidoku(int, List)","u":"createBasicXShapedMultidoku(int,java.util.List)"},{"p":"gui.constants","c":"SudokuType","l":"createDoku(List, int...)","u":"createDoku(java.util.List,int...)"},{"p":"gui.constants","c":"Fonts","l":"createFonts()"},{"p":"sudoku.structure","c":"SudokuFactory","l":"DEFAULT_CONSTRAINTS"},{"p":"sudoku.io","c":"SudokuSerializer","l":"deserializeSudoku(JSONObject)","u":"deserializeSudoku(org.json.JSONObject)"},{"p":"sudoku.io","c":"SudokuSerializer","l":"deserializeSudoku(String)","u":"deserializeSudoku(java.lang.String)"},{"p":"sudoku.constraint","c":"Constraint","l":"Diagonal"},{"p":"sudoku.constraint","c":"DiagonalConstraint","l":"DiagonalConstraint()","u":"%3Cinit%3E()"},{"p":"network.protocol","c":"Packets","l":"Disconnect"},{"p":"network.protocol.packets","c":"DisconnectPacket","l":"DisconnectPacket(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"gui","c":"Main","l":"disposeWindow()"},{"p":"sudoku.structure","c":"Difficulty","l":"Easy"},{"p":"common","c":"Signal","l":"emit()"},{"p":"common","c":"ConsumerSignal","l":"emit(T)"},{"p":"gui.constants","c":"Symbols","l":"Emojis"},{"p":"gui.constants","c":"Fonts","l":"EMOJIS"},{"p":"sudoku.structure","c":"Cell","l":"empty()"},{"p":"network.protocol","c":"Packets","l":"EndGame"},{"p":"network.protocol.packets","c":"EndGamePacket","l":"EndGamePacket()","u":"%3Cinit%3E()"},{"p":"gui.menu","c":"EndGameView","l":"EndGameView(StateMachine, MultiDoku, Player)","u":"%3Cinit%3E(gui.menu.StateMachine,sudoku.structure.MultiDoku,game.Player)"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"sudoku.structure","c":"MultiDoku","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"fillDoku(MultiDoku, Difficulty)","u":"fillDoku(sudoku.structure.MultiDoku,sudoku.structure.Difficulty)"},{"p":"sudoku","c":"Main","l":"filledTest()"},{"p":"gui.constants","c":"Fonts","l":"Fonts()","u":"%3Cinit%3E()"},{"p":"network.client","c":"Client","l":"forceDisconnect()"},{"p":"sudoku.structure","c":"SudokuFactory","l":"fromConstraints(List)","u":"fromConstraints(java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"fromfile(String)","u":"fromfile(java.lang.String)"},{"p":"gui","c":"RenderableMultidoku","l":"fromMultidoku(MultiDoku)","u":"fromMultidoku(sudoku.structure.MultiDoku)"},{"p":"gui","c":"ColorGenerator.Color","l":"g"},{"p":"game","c":"Game","l":"Game()","u":"%3Cinit%3E()"},{"p":"game","c":"Game.GameState","l":"GameGoing"},{"p":"game","c":"Game.GameState","l":"GameNotStarted"},{"p":"sudoku.structure","c":"Cell","l":"getBlock()"},{"p":"gui","c":"RenderableMultidoku","l":"getBlocks()"},{"p":"sudoku.structure","c":"Sudoku","l":"getBlocks()"},{"p":"sudoku.structure","c":"Sudoku","l":"getBlockWidth()"},{"p":"sudoku.solver","c":"SolverStep","l":"getCell()"},{"p":"gui","c":"RenderableMultidoku","l":"getCell(int)"},{"p":"sudoku.structure","c":"Sudoku","l":"getCell(int)"},{"p":"gui","c":"RenderableMultidoku","l":"getCell(int, int)","u":"getCell(int,int)"},{"p":"sudoku.structure","c":"Sudoku","l":"getCell(int, int)","u":"getCell(int,int)"},{"p":"network.protocol.packets","c":"ChangeCellPacket","l":"getCellIndex()"},{"p":"sudoku.structure","c":"Block","l":"getCells()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getCells()"},{"p":"sudoku.structure","c":"Sudoku","l":"getCells()"},{"p":"network.protocol.packets","c":"UpdatePlayerScorePacket","l":"getCellsLeft()"},{"p":"network.protocol.packets","c":"ConnexionInfoPacket","l":"getConnectionId()"},{"p":"sudoku.constraint","c":"Constraint","l":"getConstraint()"},{"p":"sudoku.structure","c":"Sudoku","l":"getConstraints()"},{"p":"sudoku.structure","c":"Difficulty","l":"getDifficultyNames()"},{"p":"network.client","c":"Client","l":"getDisconnectReason()"},{"p":"gui.constants","c":"SudokuType","l":"getDisplayName()"},{"p":"gui.constants","c":"Symbols","l":"getDisplayName()"},{"p":"sudoku.constraint","c":"Constraint","l":"getDisplayName()"},{"p":"sudoku.structure","c":"Difficulty","l":"getDisplayName()"},{"p":"game","c":"Game","l":"getDoku()"},{"p":"gui","c":"RenderableMultidoku","l":"getDoku()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getEmptyCells()"},{"p":"sudoku.structure","c":"Difficulty","l":"getFactor()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getFilledCells()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getFirstEmptyCell()"},{"p":"sudoku.structure","c":"Sudoku","l":"getFirstEmptyCell()"},{"p":"network.client","c":"Client","l":"getGame()"},{"p":"network.server","c":"Server","l":"getGame()"},{"p":"game","c":"Game","l":"getGameDuration()"},{"p":"network.protocol.packets","c":"StartGamePacket","l":"getGameDuration()"},{"p":"game","c":"Game","l":"getGameState()"},{"p":"sudoku","c":"Main","l":"getGreeting()"},{"p":"gui","c":"RenderableMultidoku","l":"getHeight()"},{"p":"sudoku.solver","c":"HintHelper","l":"getHint(MultiDoku, Solver)","u":"getHint(sudoku.structure.MultiDoku,sudoku.solver.Solver)"},{"p":"game","c":"Player","l":"getId()"},{"p":"network.protocol.packets","c":"StartGamePacket","l":"getInstant()"},{"p":"network.protocol.packets","c":"KeepAlivePacket","l":"getKeepAliveId()"},{"p":"game","c":"Game","l":"getLeaderboard()"},{"p":"gui.constants","c":"SudokuType","l":"getMakerParamCount()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getNbCells()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getNbSubGrids()"},{"p":"network.protocol.packets","c":"ChangeCellPacket","l":"getNewValue()"},{"p":"sudoku.solver","c":"SolverStep","l":"getNewValue()"},{"p":"network.client","c":"Client","l":"getPlayer()"},{"p":"network.protocol.packets","c":"PlayerJoinPacket","l":"getPlayer()"},{"p":"network.protocol.packets","c":"PlayerLeavePacket","l":"getPlayer()"},{"p":"game","c":"Game","l":"getPlayerById(int)"},{"p":"network.protocol.packets","c":"UpdatePlayerScorePacket","l":"getPlayerId()"},{"p":"game","c":"Game","l":"getPlayers()"},{"p":"sudoku.structure","c":"Cell","l":"getPossibleSymbols()"},{"p":"game","c":"Player","l":"getPseudo()"},{"p":"network.protocol.packets","c":"LoginPacket","l":"getPseudo()"},{"p":"network.protocol.packets","c":"DisconnectPacket","l":"getReason()"},{"p":"game","c":"Player","l":"getRemainingCells()"},{"p":"gui","c":"AssetManager","l":"getResource(String)","u":"getResource(java.lang.String)"},{"p":"sudoku.io","c":"SudokuSerializer","l":"getSavedMultiDoku(int)"},{"p":"network.protocol.packets","c":"StartGamePacket","l":"getSerializedSudoku()"},{"p":"sudoku.structure","c":"Sudoku","l":"getSize()"},{"p":"game","c":"Game","l":"getStartTime()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getStateManager()"},{"p":"sudoku.structure","c":"MultiDoku","l":"getSubGrid(int)"},{"p":"sudoku.structure","c":"MultiDoku","l":"getSubGrids()"},{"p":"network.protocol.packets","c":"ChangeCellPacket","l":"getSudokuIndex()"},{"p":"sudoku.structure","c":"Block","l":"getSudokus()"},{"p":"sudoku.structure","c":"Cell","l":"getSymbolIndex()"},{"p":"gui.constants","c":"Symbols","l":"getSymbols()"},{"p":"gui.constants","c":"Symbols","l":"getSymbolsNames()"},{"p":"gui.constants","c":"SudokuType","l":"getTypeNames()"},{"p":"gui","c":"RenderableMultidoku","l":"getWidth()"},{"p":"sudoku.structure","c":"Coordinate","l":"getX()"},{"p":"sudoku.structure","c":"Coordinate","l":"getY()"},{"p":"gui","c":"ColorGenerator","l":"greatPalette(int)"},{"p":"gui","c":"ColorGenerator","l":"greatScheme(int)"},{"p":"sudoku.structure","c":"Difficulty","l":"Hard"},{"p":"sudoku.structure","c":"Sudoku","l":"hasConstraint(Constraint)","u":"hasConstraint(sudoku.constraint.Constraint)"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"hashCode()"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"Hint(Cell, int)","u":"%3Cinit%3E(sudoku.structure.Cell,int)"},{"p":"sudoku.solver","c":"HintHelper","l":"HintHelper()","u":"%3Cinit%3E()"},{"p":"gui","c":"ColorGenerator","l":"hslToRgb(float, float, float)","u":"hslToRgb(float,float,float)"},{"p":"gui","c":"ColorGenerator","l":"hueToRgb(float, float, float)","u":"hueToRgb(float,float,float)"},{"p":"sudoku.solver","c":"HumanSolver","l":"HumanSolver()","u":"%3Cinit%3E()"},{"p":"gui.constants","c":"Images","l":"Images()","u":"%3Cinit%3E()"},{"p":"gui.constants","c":"Fonts","l":"INFECTED"},{"p":"gui","c":"Main","l":"initImGui(Configuration)","u":"initImGui(imgui.app.Configuration)"},{"p":"network","c":"Connexion","l":"isClosed()"},{"p":"sudoku.structure","c":"Cell","l":"isEmpty()"},{"p":"sudoku.structure","c":"Cell","l":"isMutable()"},{"p":"sudoku.structure","c":"MultiDoku","l":"isSolved()"},{"p":"sudoku.structure","c":"Sudoku","l":"isSolved()"},{"p":"sudoku.structure","c":"Sudoku","l":"isValidCoords(int)"},{"p":"sudoku.structure","c":"Sudoku","l":"isValidCoords(int, int)","u":"isValidCoords(int,int)"},{"p":"network.protocol","c":"Packets","l":"KeepAlive"},{"p":"network.server","c":"KeepAliveHandler","l":"KeepAliveHandler(ServerConnexion)","u":"%3Cinit%3E(network.server.ServerConnexion)"},{"p":"network.protocol.packets","c":"KeepAlivePacket","l":"KeepAlivePacket(long)","u":"%3Cinit%3E(long)"},{"p":"gui.widget","c":"LeaderboardRenderer","l":"LeaderboardRenderer(Game, Player)","u":"%3Cinit%3E(game.Game,game.Player)"},{"p":"gui.constants","c":"Symbols","l":"Letters"},{"p":"sudoku.constraint","c":"Constraint","l":"Line"},{"p":"sudoku.constraint","c":"LineConstraint","l":"LineConstraint()","u":"%3Cinit%3E()"},{"p":"sudoku.solver","c":"Solver","l":"logger"},{"p":"network.protocol","c":"Packets","l":"Login"},{"p":"network.client","c":"Client","l":"login(String)","u":"login(java.lang.String)"},{"p":"network.protocol.packets","c":"LoginPacket","l":"LoginPacket(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"gui","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"sudoku","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"gui","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"sudoku","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"gui.menu","c":"MainMenu","l":"MainMenu(StateMachine)","u":"%3Cinit%3E(gui.menu.StateMachine)"},{"p":"sudoku.structure","c":"Difficulty","l":"Medium"},{"p":"sudoku.solver","c":"MixedSolver","l":"MixedSolver()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"MultiDoku","l":"MultiDoku(List)","u":"%3Cinit%3E(java.util.List)"},{"p":"gui.constants","c":"SudokuType","l":"MultidokuPlusRectangle"},{"p":"gui.constants","c":"SudokuType","l":"MultiDokuPlusSquare"},{"p":"gui.constants","c":"SudokuType","l":"MultidokuXRectangle"},{"p":"gui.constants","c":"SudokuType","l":"MultiDokuXSquare"},{"p":"gui.menu","c":"MultiMenu","l":"MultiMenu(StateMachine)","u":"%3Cinit%3E(gui.menu.StateMachine)"},{"p":"gui.widget","c":"MultiPlayerCompleteProgress","l":"MultiPlayerCompleteProgress(Game)","u":"%3Cinit%3E(game.Game)"},{"p":"gui.menu","c":"MultiPlayerDokuView","l":"MultiPlayerDokuView(StateMachine, Client, Server)","u":"%3Cinit%3E(gui.menu.StateMachine,network.client.Client,network.server.Server)"},{"p":"gui.menu","c":"MultiPlayerView","l":"MultiPlayerView(StateMachine, Client, Server)","u":"%3Cinit%3E(gui.menu.StateMachine,network.client.Client,network.server.Server)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"newDokuFromFilledOne(MultiDoku, int, Solver)","u":"newDokuFromFilledOne(sudoku.structure.MultiDoku,int,sudoku.solver.Solver)"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"newValue()"},{"p":"sudoku.structure","c":"Cell","l":"NOSYMBOL"},{"p":"network.server","c":"ServerConnexion","l":"nukeConnection()"},{"p":"gui.constants","c":"Symbols","l":"Numbers"},{"p":"gui.widget","c":"SudokuRenderer","l":"onCellChange"},{"p":"network.client","c":"Client","l":"onClosed"},{"p":"network.client","c":"Client","l":"onConnect"},{"p":"gui.menu","c":"ConnexionStatusView","l":"onConnect()"},{"p":"network.client","c":"Client","l":"onDisconnect"},{"p":"gui.menu","c":"ConnexionStatusView","l":"onDisconnect()"},{"p":"gui.menu","c":"MultiPlayerDokuView","l":"onDisconnect()"},{"p":"gui.menu","c":"MultiPlayerView","l":"onDisconnect()"},{"p":"network.client","c":"Client","l":"onGameEnd"},{"p":"network.client","c":"Client","l":"onGameStarted"},{"p":"gui.menu","c":"ConnexionStatusView","l":"onLeave()"},{"p":"gui.widget","c":"SudokuRenderer","l":"onResolve"},{"p":"gui.widget","c":"SudokuSelector","l":"onSelect"},{"p":"gui.constants","c":"Options","l":"Options()","u":"%3Cinit%3E()"},{"p":"gui.menu","c":"OptionsMenu","l":"OptionsMenu(StateMachine)","u":"%3Cinit%3E(gui.menu.StateMachine)"},{"p":"gui.menu","c":"StateMachine","l":"overrideState(BaseView)","u":"overrideState(gui.menu.BaseView)"},{"p":"sudoku","c":"Main","l":"overwriteTest(int)"},{"p":"network.protocol","c":"Packet","l":"Packet()","u":"%3Cinit%3E()"},{"p":"game","c":"Player","l":"Player(int, String)","u":"%3Cinit%3E(int,java.lang.String)"},{"p":"network.protocol","c":"Packets","l":"PlayerJoin"},{"p":"network.protocol.packets","c":"PlayerJoinPacket","l":"PlayerJoinPacket(Player)","u":"%3Cinit%3E(game.Player)"},{"p":"network.protocol","c":"Packets","l":"PlayerLeave"},{"p":"network.protocol.packets","c":"PlayerLeavePacket","l":"PlayerLeavePacket(int)","u":"%3Cinit%3E(int)"},{"p":"sudoku.structure","c":"StateManager","l":"popAndGetState()"},{"p":"gui.menu","c":"StateMachine","l":"popState()"},{"p":"sudoku.structure","c":"StateManager","l":"popState()"},{"p":"gui","c":"Main","l":"preRun()"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printMultiDoku(MultiDoku, int, int, Symbols)","u":"printMultiDoku(sudoku.structure.MultiDoku,int,int,gui.constants.Symbols)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printMultiDoku(RenderableMultidoku, List, int, int)","u":"printMultiDoku(gui.RenderableMultidoku,java.util.List,int,int)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printMultiDoku(RenderableMultidoku, Symbols, int, int)","u":"printMultiDoku(gui.RenderableMultidoku,gui.constants.Symbols,int,int)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printMultiDokuWithIndex(MultiDoku, int, int, Symbols)","u":"printMultiDokuWithIndex(sudoku.structure.MultiDoku,int,int,gui.constants.Symbols)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printMultiDokuWithIndex(RenderableMultidoku, List, int, int)","u":"printMultiDokuWithIndex(gui.RenderableMultidoku,java.util.List,int,int)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printRectangleSudoku(Sudoku, int, int, List)","u":"printRectangleSudoku(sudoku.structure.Sudoku,int,int,java.util.List)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printRectangleSudoku(Sudoku, int, int, Symbols)","u":"printRectangleSudoku(sudoku.structure.Sudoku,int,int,gui.constants.Symbols)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"printRectangleSudokuWithIndex(Sudoku, int, int, List)","u":"printRectangleSudokuWithIndex(sudoku.structure.Sudoku,int,int,java.util.List)"},{"p":"gui","c":"Main","l":"process()"},{"p":"sudoku.structure","c":"StateManager","l":"pushState()"},{"p":"gui.menu","c":"StateMachine","l":"pushState(BaseView)","u":"pushState(gui.menu.BaseView)"},{"p":"gui","c":"ColorGenerator.Color","l":"r"},{"p":"gui.constants","c":"SudokuType","l":"RandomBloc"},{"p":"sudoku.solver","c":"RandomSolver","l":"RandomSolver()","u":"%3Cinit%3E()"},{"p":"network.server","c":"KeepAliveHandler","l":"recievedKeepAlive(long)"},{"p":"gui.constants","c":"SudokuType","l":"Rectangle"},{"p":"gui.constants","c":"Images","l":"reloadImages()"},{"p":"game","c":"Game","l":"removePlayer(int)"},{"p":"gui.menu","c":"BaseView","l":"render()"},{"p":"gui.menu","c":"ConnexionStatusView","l":"render()"},{"p":"gui.menu","c":"EndGameView","l":"render()"},{"p":"gui.menu","c":"MainMenu","l":"render()"},{"p":"gui.menu","c":"MultiMenu","l":"render()"},{"p":"gui.menu","c":"MultiPlayerDokuView","l":"render()"},{"p":"gui.menu","c":"MultiPlayerView","l":"render()"},{"p":"gui.menu","c":"OptionsMenu","l":"render()"},{"p":"gui.menu","c":"SoloMenu","l":"render()"},{"p":"gui.menu","c":"StateMachine","l":"render()"},{"p":"gui.menu","c":"SudokuView","l":"render()"},{"p":"gui.widget","c":"AnimatedBackground","l":"render()"},{"p":"gui.widget","c":"LeaderboardRenderer","l":"render()"},{"p":"gui.widget","c":"MultiPlayerCompleteProgress","l":"render()"},{"p":"gui.widget","c":"SudokuRenderer","l":"render()"},{"p":"gui.widget","c":"SudokuSelector","l":"render()"},{"p":"gui.widget","c":"TimerRenderer","l":"render()"},{"p":"gui.widget","c":"SmoothProgressBar","l":"render(float)"},{"p":"gui.widget","c":"SmoothProgressBar","l":"render(String, ImVec2, float)","u":"render(java.lang.String,imgui.ImVec2,float)"},{"p":"gui.widget","c":"SudokuSelector","l":"renderFileDialog()"},{"p":"gui.menu","c":"MultiPlayerView","l":"renderGameStatus()"},{"p":"gui.menu","c":"BaseView","l":"renderReturnButton()"},{"p":"network","c":"ConnexionThread","l":"run()"},{"p":"network.server","c":"ServerAcceptThread","l":"run()"},{"p":"network.server","c":"ServerLogicThread","l":"run()"},{"p":"gui.constants","c":"Symbols","l":"Russian"},{"p":"sudoku.io","c":"SudokuSerializer","l":"saveMultiDoku(MultiDoku)","u":"saveMultiDoku(sudoku.structure.MultiDoku)"},{"p":"sudoku.io","c":"SudokuSerializer","l":"saveMultiDoku(MultiDoku, int)","u":"saveMultiDoku(sudoku.structure.MultiDoku,int)"},{"p":"network.client","c":"Client","l":"sendCellChange(Cell)","u":"sendCellChange(sudoku.structure.Cell)"},{"p":"network","c":"Connexion","l":"sendPacket(Packet)","u":"sendPacket(network.protocol.Packet)"},{"p":"sudoku.io","c":"SudokuSerializer","l":"serializeSudoku(MultiDoku)","u":"serializeSudoku(sudoku.structure.MultiDoku)"},{"p":"network.server","c":"Server","l":"Server(short)","u":"%3Cinit%3E(short)"},{"p":"network.server","c":"ServerAcceptThread","l":"ServerAcceptThread(Server)","u":"%3Cinit%3E(network.server.Server)"},{"p":"network.server","c":"ServerConnexion","l":"ServerConnexion(Socket, Server)","u":"%3Cinit%3E(java.net.Socket,network.server.Server)"},{"p":"network.server","c":"ServerLogicThread","l":"ServerLogicThread(Server)","u":"%3Cinit%3E(network.server.Server)"},{"p":"sudoku.structure","c":"Cell","l":"setBlock(Block)","u":"setBlock(sudoku.structure.Block)"},{"p":"sudoku.structure","c":"Sudoku","l":"setBlockWidth(int)"},{"p":"sudoku.structure","c":"Sudoku","l":"setCellsSymbol(List)","u":"setCellsSymbol(java.util.List)"},{"p":"sudoku.structure","c":"Sudoku","l":"setCellSymbol(int, int, int)","u":"setCellSymbol(int,int,int)"},{"p":"sudoku.structure","c":"MultiDoku","l":"setFilledCellsImmutable()"},{"p":"sudoku.structure","c":"Cell","l":"setImmutable()"},{"p":"sudoku.structure","c":"Sudoku","l":"setImmutableCellsSymbol(List)","u":"setImmutableCellsSymbol(java.util.List)"},{"p":"game","c":"Game","l":"setPlayerRemainingCells(Player, int)","u":"setPlayerRemainingCells(game.Player,int)"},{"p":"network.server","c":"ServerConnexion","l":"setSudoku(MultiDoku)","u":"setSudoku(sudoku.structure.MultiDoku)"},{"p":"sudoku.structure","c":"Cell","l":"setSymbolIndex(int)"},{"p":"sudoku.structure","c":"Coordinate","l":"setX(int)"},{"p":"sudoku.structure","c":"Coordinate","l":"setY(int)"},{"p":"common","c":"Signal","l":"Signal()","u":"%3Cinit%3E()"},{"p":"gui.widget","c":"SmoothProgressBar","l":"SmoothProgressBar()","u":"%3Cinit%3E()"},{"p":"gui.menu","c":"SoloMenu","l":"SoloMenu(StateMachine)","u":"%3Cinit%3E(gui.menu.StateMachine)"},{"p":"sudoku.solver","c":"Solver","l":"solve(MultiDoku)","u":"solve(sudoku.structure.MultiDoku)"},{"p":"sudoku.solver","c":"BacktrackingSolver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"HumanSolver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"MixedSolver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"RandomSolver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"Solver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"StupidSolver","l":"solve(MultiDoku, List)","u":"solve(sudoku.structure.MultiDoku,java.util.List)"},{"p":"sudoku.solver","c":"SolverStep","l":"SolverStep(Cell)","u":"%3Cinit%3E(sudoku.structure.Cell)"},{"p":"gui.constants","c":"SudokuType","l":"Square"},{"p":"network.protocol","c":"Packets","l":"StartGame"},{"p":"game","c":"Game","l":"startGame(MultiDoku, Instant, long)","u":"startGame(sudoku.structure.MultiDoku,java.time.Instant,long)"},{"p":"network.server","c":"Server","l":"startGame(MultiDoku, long)","u":"startGame(sudoku.structure.MultiDoku,long)"},{"p":"network.protocol.packets","c":"StartGamePacket","l":"StartGamePacket(String, Instant, long)","u":"%3Cinit%3E(java.lang.String,java.time.Instant,long)"},{"p":"gui.menu","c":"BaseView","l":"stateMachine"},{"p":"gui.menu","c":"StateMachine","l":"StateMachine()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"StateManager","l":"StateManager(MultiDoku)","u":"%3Cinit%3E(sudoku.structure.MultiDoku)"},{"p":"network.client","c":"Client","l":"stop()"},{"p":"network.server","c":"Server","l":"stop()"},{"p":"game","c":"Game","l":"stopGame()"},{"p":"network.server","c":"Server","l":"stopGame()"},{"p":"sudoku.solver","c":"StupidSolver","l":"StupidSolver()","u":"%3Cinit%3E()"},{"p":"sudoku.structure","c":"Coordinate","l":"sub(Coordinate)","u":"sub(sudoku.structure.Coordinate)"},{"p":"sudoku.structure","c":"Sudoku","l":"Sudoku(List, List, List)","u":"%3Cinit%3E(java.util.List,java.util.List,java.util.List)"},{"p":"sudoku.structure","c":"SudokuFactory","l":"SudokuFactory()","u":"%3Cinit%3E()"},{"p":"sudoku.io","c":"SudokuPrinter","l":"SudokuPrinter()","u":"%3Cinit%3E()"},{"p":"gui.widget","c":"SudokuRenderer","l":"SudokuRenderer(MultiDoku)","u":"%3Cinit%3E(sudoku.structure.MultiDoku)"},{"p":"gui.widget","c":"SudokuSelector","l":"SudokuSelector(boolean, String)","u":"%3Cinit%3E(boolean,java.lang.String)"},{"p":"sudoku.io","c":"SudokuSerializer","l":"SudokuSerializer()","u":"%3Cinit%3E()"},{"p":"sudoku","c":"SudokuSerializerTest","l":"SudokuSerializerTest()","u":"%3Cinit%3E()"},{"p":"gui.menu","c":"SudokuView","l":"SudokuView(StateMachine, MultiDoku)","u":"%3Cinit%3E(gui.menu.StateMachine,sudoku.structure.MultiDoku)"},{"p":"gui.constants","c":"Options","l":"Symboles"},{"p":"gui.widget","c":"TimerRenderer","l":"TimerRenderer(Instant, long)","u":"%3Cinit%3E(java.time.Instant,long)"},{"p":"sudoku.structure","c":"Sudoku","l":"toCoords(int)"},{"p":"sudoku.structure","c":"Sudoku","l":"toIndex(int, int)","u":"toIndex(int,int)"},{"p":"sudoku.solver","c":"HintHelper.Hint","l":"toString()"},{"p":"sudoku.structure","c":"MultiDoku","l":"toString()"},{"p":"sudoku.structure","c":"Sudoku","l":"toString()"},{"p":"sudoku.io","c":"SudokuPrinter","l":"toStringRectangleSudoku(Sudoku, int, int, List)","u":"toStringRectangleSudoku(sudoku.structure.Sudoku,int,int,java.util.List)"},{"p":"sudoku.io","c":"SudokuPrinter","l":"toStringRectangleSudoku(Sudoku, int, int, Symbols)","u":"toStringRectangleSudoku(sudoku.structure.Sudoku,int,int,gui.constants.Symbols)"},{"p":"sudoku.structure","c":"Cell","l":"trySetValue(int)"},{"p":"network.server","c":"KeepAliveHandler","l":"update()"},{"p":"network.server","c":"Server","l":"update()"},{"p":"network.server","c":"ServerConnexion","l":"update()"},{"p":"network.protocol","c":"Packets","l":"UpdatePlayerScore"},{"p":"network.protocol.packets","c":"UpdatePlayerScorePacket","l":"UpdatePlayerScorePacket(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"game","c":"Game.GameState","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"gui.constants","c":"SudokuType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"gui.constants","c":"Symbols","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"network.protocol","c":"Packets","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"sudoku.constraint","c":"Constraint","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"sudoku.structure","c":"Difficulty","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"game","c":"Game.GameState","l":"values()"},{"p":"gui.constants","c":"SudokuType","l":"values()"},{"p":"gui.constants","c":"Symbols","l":"values()"},{"p":"network.protocol","c":"Packets","l":"values()"},{"p":"sudoku.constraint","c":"Constraint","l":"values()"},{"p":"sudoku.structure","c":"Difficulty","l":"values()"},{"p":"sudoku.structure","c":"Difficulty","l":"VeryEasy"},{"p":"sudoku.structure","c":"Difficulty","l":"VeryHard"},{"p":"network.protocol","c":"PacketVisitor","l":"visit(Packet)","u":"visit(network.protocol.Packet)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(ChangeCellPacket)","u":"visitPacket(network.protocol.packets.ChangeCellPacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(ChangeCellPacket)","u":"visitPacket(network.protocol.packets.ChangeCellPacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(ChangeCellPacket)","u":"visitPacket(network.protocol.packets.ChangeCellPacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(ConnexionInfoPacket)","u":"visitPacket(network.protocol.packets.ConnexionInfoPacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(ConnexionInfoPacket)","u":"visitPacket(network.protocol.packets.ConnexionInfoPacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(ConnexionInfoPacket)","u":"visitPacket(network.protocol.packets.ConnexionInfoPacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(DisconnectPacket)","u":"visitPacket(network.protocol.packets.DisconnectPacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(DisconnectPacket)","u":"visitPacket(network.protocol.packets.DisconnectPacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(DisconnectPacket)","u":"visitPacket(network.protocol.packets.DisconnectPacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(EndGamePacket)","u":"visitPacket(network.protocol.packets.EndGamePacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(EndGamePacket)","u":"visitPacket(network.protocol.packets.EndGamePacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(EndGamePacket)","u":"visitPacket(network.protocol.packets.EndGamePacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(KeepAlivePacket)","u":"visitPacket(network.protocol.packets.KeepAlivePacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(KeepAlivePacket)","u":"visitPacket(network.protocol.packets.KeepAlivePacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(KeepAlivePacket)","u":"visitPacket(network.protocol.packets.KeepAlivePacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(LoginPacket)","u":"visitPacket(network.protocol.packets.LoginPacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(LoginPacket)","u":"visitPacket(network.protocol.packets.LoginPacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(LoginPacket)","u":"visitPacket(network.protocol.packets.LoginPacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(PlayerJoinPacket)","u":"visitPacket(network.protocol.packets.PlayerJoinPacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(PlayerJoinPacket)","u":"visitPacket(network.protocol.packets.PlayerJoinPacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(PlayerJoinPacket)","u":"visitPacket(network.protocol.packets.PlayerJoinPacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(PlayerLeavePacket)","u":"visitPacket(network.protocol.packets.PlayerLeavePacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(PlayerLeavePacket)","u":"visitPacket(network.protocol.packets.PlayerLeavePacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(PlayerLeavePacket)","u":"visitPacket(network.protocol.packets.PlayerLeavePacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(StartGamePacket)","u":"visitPacket(network.protocol.packets.StartGamePacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(StartGamePacket)","u":"visitPacket(network.protocol.packets.StartGamePacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(StartGamePacket)","u":"visitPacket(network.protocol.packets.StartGamePacket)"},{"p":"network.client","c":"ClientConnexion","l":"visitPacket(UpdatePlayerScorePacket)","u":"visitPacket(network.protocol.packets.UpdatePlayerScorePacket)"},{"p":"network.protocol","c":"PacketVisitor","l":"visitPacket(UpdatePlayerScorePacket)","u":"visitPacket(network.protocol.packets.UpdatePlayerScorePacket)"},{"p":"network.server","c":"ServerConnexion","l":"visitPacket(UpdatePlayerScorePacket)","u":"visitPacket(network.protocol.packets.UpdatePlayerScorePacket)"},{"p":"sudoku","c":"Main","l":"voidTest()"},{"p":"sudoku.io","c":"ConsoleInterface","l":"welcome()"}];updateSearchResults();
\ No newline at end of file
diff --git a/javadoc/module-search-index.js b/javadoc/module-search-index.js
new file mode 100644
index 0000000..0d59754
--- /dev/null
+++ b/javadoc/module-search-index.js
@@ -0,0 +1 @@
+moduleSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/javadoc/network/Connexion.html b/javadoc/network/Connexion.html
new file mode 100644
index 0000000..70d3369
--- /dev/null
+++ b/javadoc/network/Connexion.html
@@ -0,0 +1,207 @@
+
+
+
+
+Connexion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ boolean
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+ Methods inherited from interface network.protocol.PacketVisitor
+ visit , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket , visitPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+isClosed
+public boolean isClosed ()
+
+
+
+
+sendPacket
+public void sendPacket (Packet packet)
+
+
+
+
+close
+public void close ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/ConnexionThread.html b/javadoc/network/ConnexionThread.html
new file mode 100644
index 0000000..f165f07
--- /dev/null
+++ b/javadoc/network/ConnexionThread.html
@@ -0,0 +1,219 @@
+
+
+
+
+ConnexionThread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Runnable
+
+
+public class ConnexionThread
+ extends Thread
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Thread
+ activeCount , checkAccess , clone , countStackFrames , currentThread , dumpStack , enumerate , getAllStackTraces , getContextClassLoader , getDefaultUncaughtExceptionHandler , getId , getName , getPriority , getStackTrace , getState , getThreadGroup , getUncaughtExceptionHandler , holdsLock , interrupt , interrupted , isAlive , isDaemon , isInterrupted , isVirtual , join , join , join , join , ofPlatform , ofVirtual , onSpinWait , resume , setContextClassLoader , setDaemon , setDefaultUncaughtExceptionHandler , setName , setPriority , setUncaughtExceptionHandler , sleep , sleep , sleep , start , startVirtualThread , stop , suspend , threadId , toString , yield
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+run
+public void run ()
+
+Specified by:
+run in interface Runnable
+Overrides:
+run in class Thread
+
+
+
+
+
+cancel
+public void cancel ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/client/Client.html b/javadoc/network/client/Client.html
new file mode 100644
index 0000000..edce01d
--- /dev/null
+++ b/javadoc/network/client/Client.html
@@ -0,0 +1,311 @@
+
+
+
+
+Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Client
+ extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+
+
+
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+
+
+
+onDisconnect
+public final Signal onDisconnect
+
+
+
+
+
+
+
+onGameStarted
+public final Signal onGameStarted
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+login
+public void login (String pseudo)
+
+
+
+
+stop
+public void stop ()
+
+
+
+
+addPlayer
+public void addPlayer (Player player)
+
+
+
+
+
+
+
+getDisconnectReason
+public String getDisconnectReason ()
+
+
+
+
+forceDisconnect
+public void forceDisconnect ()
+
+
+
+
+sendCellChange
+public void sendCellChange (Cell cell)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/client/ClientConnexion.html b/javadoc/network/client/ClientConnexion.html
new file mode 100644
index 0000000..49a0c50
--- /dev/null
+++ b/javadoc/network/client/ClientConnexion.html
@@ -0,0 +1,289 @@
+
+
+
+
+ClientConnexion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+close
+public void close ()
+
+Overrides:
+close in class Connexion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/client/package-summary.html b/javadoc/network/client/package-summary.html
new file mode 100644
index 0000000..f4398ad
--- /dev/null
+++ b/javadoc/network/client/package-summary.html
@@ -0,0 +1,108 @@
+
+
+
+
+network.client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package network.client
+
+
+
+
+
+
diff --git a/javadoc/network/client/package-tree.html b/javadoc/network/client/package-tree.html
new file mode 100644
index 0000000..bafb4a4
--- /dev/null
+++ b/javadoc/network/client/package-tree.html
@@ -0,0 +1,76 @@
+
+
+
+
+network.client Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/network/package-summary.html b/javadoc/network/package-summary.html
new file mode 100644
index 0000000..6f50e52
--- /dev/null
+++ b/javadoc/network/package-summary.html
@@ -0,0 +1,108 @@
+
+
+
+
+network
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package network
+
+
+
+
+
+
diff --git a/javadoc/network/package-tree.html b/javadoc/network/package-tree.html
new file mode 100644
index 0000000..8db10dc
--- /dev/null
+++ b/javadoc/network/package-tree.html
@@ -0,0 +1,76 @@
+
+
+
+
+network Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/Packet.html b/javadoc/network/protocol/Packet.html
new file mode 100644
index 0000000..9369faa
--- /dev/null
+++ b/javadoc/network/protocol/Packet.html
@@ -0,0 +1,189 @@
+
+
+
+
+Packet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Abstract Methods
+
+
+
+
+
+ abstract void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Packet
+public Packet ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/PacketVisitor.html b/javadoc/network/protocol/PacketVisitor.html
new file mode 100644
index 0000000..d1a16fd
--- /dev/null
+++ b/javadoc/network/protocol/PacketVisitor.html
@@ -0,0 +1,232 @@
+
+
+
+
+PacketVisitor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Abstract Methods Default Methods
+
+
+
+
+
+ default void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+visit
+default void visit (Packet packet)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/Packets.html b/javadoc/network/protocol/Packets.html
new file mode 100644
index 0000000..c4fbc34
--- /dev/null
+++ b/javadoc/network/protocol/Packets.html
@@ -0,0 +1,295 @@
+
+
+
+
+Packets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Returns the enum constant of this class with the specified name.
+
+
+
+
+ Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+ Methods inherited from class java.lang.Enum
+ clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+ConnectionInfo
+public static final Packets ConnectionInfo
+
+
+
+
+KeepAlive
+public static final Packets KeepAlive
+
+
+
+
+Disconnect
+public static final Packets Disconnect
+
+
+
+
+
+
+
+PlayerJoin
+public static final Packets PlayerJoin
+
+
+
+
+PlayerLeave
+public static final Packets PlayerLeave
+
+
+
+
+StartGame
+public static final Packets StartGame
+
+
+
+
+ChangeCell
+public static final Packets ChangeCell
+
+
+
+
+EndGame
+public static final Packets EndGame
+
+
+
+
+UpdatePlayerScore
+public static final Packets UpdatePlayerScore
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/package-summary.html b/javadoc/network/protocol/package-summary.html
new file mode 100644
index 0000000..07844e3
--- /dev/null
+++ b/javadoc/network/protocol/package-summary.html
@@ -0,0 +1,114 @@
+
+
+
+
+network.protocol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package network.protocol
+
+
+
+
+
+
+
+ All Classes and Interfaces Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/package-tree.html b/javadoc/network/protocol/package-tree.html
new file mode 100644
index 0000000..15e4ca8
--- /dev/null
+++ b/javadoc/network/protocol/package-tree.html
@@ -0,0 +1,91 @@
+
+
+
+
+network.protocol Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/ChangeCellPacket.html b/javadoc/network/protocol/packets/ChangeCellPacket.html
new file mode 100644
index 0000000..b3bdff8
--- /dev/null
+++ b/javadoc/network/protocol/packets/ChangeCellPacket.html
@@ -0,0 +1,221 @@
+
+
+
+
+ChangeCellPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class ChangeCellPacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ int
+
+
+ int
+
+
+ int
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ChangeCellPacket
+public ChangeCellPacket (int sudokuIndex,
+ int cellIndex,
+ int newValue)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getSudokuIndex
+public int getSudokuIndex ()
+
+
+
+
+getCellIndex
+public int getCellIndex ()
+
+
+
+
+getNewValue
+public int getNewValue ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/ConnexionInfoPacket.html b/javadoc/network/protocol/packets/ConnexionInfoPacket.html
new file mode 100644
index 0000000..34afa0f
--- /dev/null
+++ b/javadoc/network/protocol/packets/ConnexionInfoPacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+ConnexionInfoPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class ConnexionInfoPacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ int
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ConnexionInfoPacket
+public ConnexionInfoPacket (int connectionId)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getConnectionId
+public int getConnectionId ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/DisconnectPacket.html b/javadoc/network/protocol/packets/DisconnectPacket.html
new file mode 100644
index 0000000..28979b4
--- /dev/null
+++ b/javadoc/network/protocol/packets/DisconnectPacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+DisconnectPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class DisconnectPacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+DisconnectPacket
+public DisconnectPacket (String reason)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/EndGamePacket.html b/javadoc/network/protocol/packets/EndGamePacket.html
new file mode 100644
index 0000000..7a65d94
--- /dev/null
+++ b/javadoc/network/protocol/packets/EndGamePacket.html
@@ -0,0 +1,190 @@
+
+
+
+
+EndGamePacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class EndGamePacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+EndGamePacket
+public EndGamePacket ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/KeepAlivePacket.html b/javadoc/network/protocol/packets/KeepAlivePacket.html
new file mode 100644
index 0000000..d9a42d7
--- /dev/null
+++ b/javadoc/network/protocol/packets/KeepAlivePacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+KeepAlivePacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class KeepAlivePacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ long
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+KeepAlivePacket
+public KeepAlivePacket (long keepAliveId)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getKeepAliveId
+public long getKeepAliveId ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/LoginPacket.html b/javadoc/network/protocol/packets/LoginPacket.html
new file mode 100644
index 0000000..65eb7a4
--- /dev/null
+++ b/javadoc/network/protocol/packets/LoginPacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+LoginPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class LoginPacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LoginPacket
+public LoginPacket (String pseudo)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/PlayerJoinPacket.html b/javadoc/network/protocol/packets/PlayerJoinPacket.html
new file mode 100644
index 0000000..d96c95b
--- /dev/null
+++ b/javadoc/network/protocol/packets/PlayerJoinPacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+PlayerJoinPacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class PlayerJoinPacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PlayerJoinPacket
+public PlayerJoinPacket (Player player)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/PlayerLeavePacket.html b/javadoc/network/protocol/packets/PlayerLeavePacket.html
new file mode 100644
index 0000000..dd08984
--- /dev/null
+++ b/javadoc/network/protocol/packets/PlayerLeavePacket.html
@@ -0,0 +1,199 @@
+
+
+
+
+PlayerLeavePacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class PlayerLeavePacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ int
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PlayerLeavePacket
+public PlayerLeavePacket (int playerId)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getPlayer
+public int getPlayer ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/StartGamePacket.html b/javadoc/network/protocol/packets/StartGamePacket.html
new file mode 100644
index 0000000..0473b62
--- /dev/null
+++ b/javadoc/network/protocol/packets/StartGamePacket.html
@@ -0,0 +1,221 @@
+
+
+
+
+StartGamePacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class StartGamePacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ long
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+StartGamePacket
+public StartGamePacket (String serializedSudoku,
+ Instant instant,
+ long gameDuration)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getSerializedSudoku
+public String getSerializedSudoku ()
+
+
+
+
+
+
+
+getGameDuration
+public long getGameDuration ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/UpdatePlayerScorePacket.html b/javadoc/network/protocol/packets/UpdatePlayerScorePacket.html
new file mode 100644
index 0000000..21dee44
--- /dev/null
+++ b/javadoc/network/protocol/packets/UpdatePlayerScorePacket.html
@@ -0,0 +1,210 @@
+
+
+
+
+UpdatePlayerScorePacket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable
+
+
+public class UpdatePlayerScorePacket
+ extends Packet
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ int
+
+
+ int
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+UpdatePlayerScorePacket
+public UpdatePlayerScorePacket (int playerId,
+ int cellsLeft)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getPlayerId
+public int getPlayerId ()
+
+
+
+
+getCellsLeft
+public int getCellsLeft ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/package-summary.html b/javadoc/network/protocol/packets/package-summary.html
new file mode 100644
index 0000000..2c30027
--- /dev/null
+++ b/javadoc/network/protocol/packets/package-summary.html
@@ -0,0 +1,120 @@
+
+
+
+
+network.protocol.packets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package network.protocol.packets
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/protocol/packets/package-tree.html b/javadoc/network/protocol/packets/package-tree.html
new file mode 100644
index 0000000..40168fd
--- /dev/null
+++ b/javadoc/network/protocol/packets/package-tree.html
@@ -0,0 +1,84 @@
+
+
+
+
+network.protocol.packets Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/KeepAliveHandler.html b/javadoc/network/server/KeepAliveHandler.html
new file mode 100644
index 0000000..a330414
--- /dev/null
+++ b/javadoc/network/server/KeepAliveHandler.html
@@ -0,0 +1,181 @@
+
+
+
+
+KeepAliveHandler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class KeepAliveHandler
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ boolean
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+update
+public boolean update ()
+
+
+
+
+recievedKeepAlive
+public void recievedKeepAlive (long keepAliveId)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/Server.html b/javadoc/network/server/Server.html
new file mode 100644
index 0000000..47a5e10
--- /dev/null
+++ b/javadoc/network/server/Server.html
@@ -0,0 +1,233 @@
+
+
+
+
+Server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Server
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+ void
+
+
+
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+broadcastPacket
+public void broadcastPacket (Packet packet)
+
+
+
+
+update
+public void update ()
+
+
+
+
+stop
+public void stop ()
+
+
+
+
+
+
+
+
+
+
+startGame
+public void startGame (MultiDoku doku,
+ long gameDuration)
+
+
+
+
+stopGame
+public void stopGame ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/ServerAcceptThread.html b/javadoc/network/server/ServerAcceptThread.html
new file mode 100644
index 0000000..e4e3e7a
--- /dev/null
+++ b/javadoc/network/server/ServerAcceptThread.html
@@ -0,0 +1,214 @@
+
+
+
+
+ServerAcceptThread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Runnable
+
+
+public class ServerAcceptThread
+ extends Thread
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Thread
+ activeCount , checkAccess , clone , countStackFrames , currentThread , dumpStack , enumerate , getAllStackTraces , getContextClassLoader , getDefaultUncaughtExceptionHandler , getId , getName , getPriority , getStackTrace , getState , getThreadGroup , getUncaughtExceptionHandler , holdsLock , interrupt , interrupted , isAlive , isDaemon , isInterrupted , isVirtual , join , join , join , join , ofPlatform , ofVirtual , onSpinWait , resume , setContextClassLoader , setDaemon , setDefaultUncaughtExceptionHandler , setName , setPriority , setUncaughtExceptionHandler , sleep , sleep , sleep , start , startVirtualThread , stop , suspend , threadId , toString , yield
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ServerAcceptThread
+public ServerAcceptThread (Server server)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+cancel
+public void cancel ()
+
+
+
+
+run
+public void run ()
+
+Specified by:
+run in interface Runnable
+Overrides:
+run in class Thread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/ServerConnexion.html b/javadoc/network/server/ServerConnexion.html
new file mode 100644
index 0000000..17bea40
--- /dev/null
+++ b/javadoc/network/server/ServerConnexion.html
@@ -0,0 +1,312 @@
+
+
+
+
+ServerConnexion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ boolean
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+update
+public boolean update ()
+
+
+
+
+nukeConnection
+public void nukeConnection ()
+
+
+
+
+close
+public void close ()
+
+Overrides:
+close in class Connexion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/ServerLogicThread.html b/javadoc/network/server/ServerLogicThread.html
new file mode 100644
index 0000000..1c4d253
--- /dev/null
+++ b/javadoc/network/server/ServerLogicThread.html
@@ -0,0 +1,214 @@
+
+
+
+
+ServerLogicThread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Runnable
+
+
+public class ServerLogicThread
+ extends Thread
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Thread
+ activeCount , checkAccess , clone , countStackFrames , currentThread , dumpStack , enumerate , getAllStackTraces , getContextClassLoader , getDefaultUncaughtExceptionHandler , getId , getName , getPriority , getStackTrace , getState , getThreadGroup , getUncaughtExceptionHandler , holdsLock , interrupt , interrupted , isAlive , isDaemon , isInterrupted , isVirtual , join , join , join , join , ofPlatform , ofVirtual , onSpinWait , resume , setContextClassLoader , setDaemon , setDefaultUncaughtExceptionHandler , setName , setPriority , setUncaughtExceptionHandler , sleep , sleep , sleep , start , startVirtualThread , stop , suspend , threadId , toString , yield
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ServerLogicThread
+public ServerLogicThread (Server server)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+cancel
+public void cancel ()
+
+
+
+
+run
+public void run ()
+
+Specified by:
+run in interface Runnable
+Overrides:
+run in class Thread
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/package-summary.html b/javadoc/network/server/package-summary.html
new file mode 100644
index 0000000..bfa4b7e
--- /dev/null
+++ b/javadoc/network/server/package-summary.html
@@ -0,0 +1,114 @@
+
+
+
+
+network.server
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package network.server
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/network/server/package-tree.html b/javadoc/network/server/package-tree.html
new file mode 100644
index 0000000..8f8d648
--- /dev/null
+++ b/javadoc/network/server/package-tree.html
@@ -0,0 +1,83 @@
+
+
+
+
+network.server Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html
new file mode 100644
index 0000000..d49b4b2
--- /dev/null
+++ b/javadoc/overview-summary.html
@@ -0,0 +1,26 @@
+
+
+
+
+Generated Documentation (Untitled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+index.html
+
+
+
diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html
new file mode 100644
index 0000000..253e681
--- /dev/null
+++ b/javadoc/overview-tree.html
@@ -0,0 +1,220 @@
+
+
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+common ,
+game ,
+gui ,
+gui.constants ,
+gui.menu ,
+gui.widget ,
+network ,
+network.client ,
+network.protocol ,
+network.protocol.packets ,
+network.server ,
+sudoku ,
+sudoku.constraint ,
+sudoku.io ,
+sudoku.solver ,
+sudoku.structure
+
+
+
+
+Enum Class Hierarchy
+
+
+
+Record Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/package-search-index.js b/javadoc/package-search-index.js
new file mode 100644
index 0000000..551caee
--- /dev/null
+++ b/javadoc/package-search-index.js
@@ -0,0 +1 @@
+packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"common"},{"l":"game"},{"l":"gui"},{"l":"gui.constants"},{"l":"gui.menu"},{"l":"gui.widget"},{"l":"network"},{"l":"network.client"},{"l":"network.protocol"},{"l":"network.protocol.packets"},{"l":"network.server"},{"l":"sudoku"},{"l":"sudoku.constraint"},{"l":"sudoku.io"},{"l":"sudoku.solver"},{"l":"sudoku.structure"}];updateSearchResults();
\ No newline at end of file
diff --git a/javadoc/resources/glass.png b/javadoc/resources/glass.png
new file mode 100644
index 0000000..a7f591f
Binary files /dev/null and b/javadoc/resources/glass.png differ
diff --git a/javadoc/resources/x.png b/javadoc/resources/x.png
new file mode 100644
index 0000000..30548a7
Binary files /dev/null and b/javadoc/resources/x.png differ
diff --git a/javadoc/script-dir/jquery-3.6.1.min.js b/javadoc/script-dir/jquery-3.6.1.min.js
new file mode 100644
index 0000000..2c69bc9
--- /dev/null
+++ b/javadoc/script-dir/jquery-3.6.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n "),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x(" ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length ").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1 ").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/javadoc/script.js b/javadoc/script.js
new file mode 100644
index 0000000..f1a0f25
--- /dev/null
+++ b/javadoc/script.js
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+
+var oddRowColor = "odd-row-color";
+var evenRowColor = "even-row-color";
+var sortAsc = "sort-asc";
+var sortDesc = "sort-desc";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+
+function loadScripts(doc, tag) {
+ createElem(doc, tag, 'search.js');
+
+ createElem(doc, tag, 'module-search-index.js');
+ createElem(doc, tag, 'package-search-index.js');
+ createElem(doc, tag, 'type-search-index.js');
+ createElem(doc, tag, 'member-search-index.js');
+ createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+ var script = doc.createElement(tag);
+ var scriptElement = doc.getElementsByTagName(tag)[0];
+ script.src = pathtoroot + path;
+ scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+// Helper for making content containing release names comparable lexicographically
+function makeComparable(s) {
+ return s.toLowerCase().replace(/(\d+)/g,
+ function(n, m) {
+ return ("000" + m).slice(-4);
+ });
+}
+
+// Switches between two styles depending on a condition
+function toggleStyle(classList, condition, trueStyle, falseStyle) {
+ if (condition) {
+ classList.remove(falseStyle);
+ classList.add(trueStyle);
+ } else {
+ classList.remove(trueStyle);
+ classList.add(falseStyle);
+ }
+}
+
+// Sorts the rows in a table lexicographically by the content of a specific column
+function sortTable(header, columnIndex, columns) {
+ var container = header.parentElement;
+ var descending = header.classList.contains(sortAsc);
+ container.querySelectorAll("div.table-header").forEach(
+ function(header) {
+ header.classList.remove(sortAsc);
+ header.classList.remove(sortDesc);
+ }
+ )
+ var cells = container.children;
+ var rows = [];
+ for (var i = columns; i < cells.length; i += columns) {
+ rows.push(Array.prototype.slice.call(cells, i, i + columns));
+ }
+ var comparator = function(a, b) {
+ var ka = makeComparable(a[columnIndex].textContent);
+ var kb = makeComparable(b[columnIndex].textContent);
+ if (ka < kb)
+ return descending ? 1 : -1;
+ if (ka > kb)
+ return descending ? -1 : 1;
+ return 0;
+ };
+ var sorted = rows.sort(comparator);
+ var visible = 0;
+ sorted.forEach(function(row) {
+ if (row[0].style.display !== 'none') {
+ var isEvenRow = visible++ % 2 === 0;
+ }
+ row.forEach(function(cell) {
+ toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
+ container.appendChild(cell);
+ })
+ });
+ toggleStyle(header.classList, descending, sortDesc, sortAsc);
+}
+
+// Toggles the visibility of a table category in all tables in a page
+function toggleGlobal(checkbox, selected, columns) {
+ var display = checkbox.checked ? '' : 'none';
+ document.querySelectorAll("div.table-tabs").forEach(function(t) {
+ var id = t.parentElement.getAttribute("id");
+ var selectedClass = id + "-tab" + selected;
+ // if selected is empty string it selects all uncategorized entries
+ var selectUncategorized = !Boolean(selected);
+ var visible = 0;
+ document.querySelectorAll('div.' + id)
+ .forEach(function(elem) {
+ if (selectUncategorized) {
+ if (elem.className.indexOf(selectedClass) === -1) {
+ elem.style.display = display;
+ }
+ } else if (elem.classList.contains(selectedClass)) {
+ elem.style.display = display;
+ }
+ if (elem.style.display === '') {
+ var isEvenRow = visible++ % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ }
+ });
+ var displaySection = visible === 0 ? 'none' : '';
+ t.parentElement.style.display = displaySection;
+ document.querySelector("li#contents-" + id).style.display = displaySection;
+ })
+}
+
+// Shows the elements of a table belonging to a specific category
+function show(tableId, selected, columns) {
+ if (tableId !== selected) {
+ document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+ .forEach(function(elem) {
+ elem.style.display = 'none';
+ });
+ }
+ document.querySelectorAll('div.' + selected)
+ .forEach(function(elem, index) {
+ elem.style.display = '';
+ var isEvenRow = index % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ });
+ updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+ document.querySelector('div#' + tableId +' .summary-table')
+ .setAttribute('aria-labelledby', selected);
+ document.querySelectorAll('button[id^="' + tableId + '"]')
+ .forEach(function(tab, index) {
+ if (selected === tab.id || (tableId === selected && index === 0)) {
+ tab.className = activeTableTab;
+ tab.setAttribute('aria-selected', true);
+ tab.setAttribute('tabindex',0);
+ } else {
+ tab.className = tableTab;
+ tab.setAttribute('aria-selected', false);
+ tab.setAttribute('tabindex',-1);
+ }
+ });
+}
+
+function switchTab(e) {
+ var selected = document.querySelector('[aria-selected=true]');
+ if (selected) {
+ if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+ // left or up arrow key pressed: move focus to previous tab
+ selected.previousSibling.click();
+ selected.previousSibling.focus();
+ e.preventDefault();
+ } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+ // right or down arrow key pressed: move focus to next tab
+ selected.nextSibling.click();
+ selected.nextSibling.focus();
+ e.preventDefault();
+ }
+ }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+ return moduleSearchIndex
+ && packageSearchIndex
+ && typeSearchIndex
+ && memberSearchIndex
+ && tagSearchIndex;
+}
+// Copy the contents of the local snippet to the clipboard
+function copySnippet(button) {
+ copyToClipboard(button.nextElementSibling.innerText);
+ switchCopyLabel(button, button.firstElementChild);
+}
+function copyToClipboard(content) {
+ var textarea = document.createElement("textarea");
+ textarea.style.height = 0;
+ document.body.appendChild(textarea);
+ textarea.value = content;
+ textarea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textarea);
+}
+function switchCopyLabel(button, span) {
+ var copied = span.getAttribute("data-copied");
+ button.classList.add("visible");
+ var initialLabel = span.innerHTML;
+ span.innerHTML = copied;
+ setTimeout(function() {
+ button.classList.remove("visible");
+ setTimeout(function() {
+ if (initialLabel !== copied) {
+ span.innerHTML = initialLabel;
+ }
+ }, 100);
+ }, 1900);
+}
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+ var contentDiv = document.querySelector("div.flex-content");
+ window.addEventListener("popstate", function(e) {
+ if (e.state !== null) {
+ contentDiv.scrollTop = e.state;
+ }
+ });
+ window.addEventListener("hashchange", function(e) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ });
+ var timeoutId;
+ contentDiv.addEventListener("scroll", function(e) {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ timeoutId = setTimeout(function() {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }, 100);
+ });
+ if (!location.hash) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }
+});
diff --git a/javadoc/search-page.js b/javadoc/search-page.js
new file mode 100644
index 0000000..e4da097
--- /dev/null
+++ b/javadoc/search-page.js
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+
+"use strict";
+$(function() {
+ var copy = $("#page-search-copy");
+ var expand = $("#page-search-expand");
+ var searchLink = $("span#page-search-link");
+ var redirect = $("input#search-redirect");
+ function setSearchUrlTemplate() {
+ var href = document.location.href.split(/[#?]/)[0];
+ href += "?q=" + "%s";
+ if (redirect.is(":checked")) {
+ href += "&r=1";
+ }
+ searchLink.html(href);
+ copy[0].onmouseenter();
+ }
+ function copyLink(e) {
+ copyToClipboard(this.previousSibling.innerText);
+ switchCopyLabel(this, this.lastElementChild);
+ }
+ copy.click(copyLink);
+ copy[0].onmouseenter = function() {};
+ redirect.click(setSearchUrlTemplate);
+ setSearchUrlTemplate();
+ copy.prop("disabled", false);
+ redirect.prop("disabled", false);
+ expand.click(function (e) {
+ var searchInfo = $("div.page-search-info");
+ if(this.parentElement.hasAttribute("open")) {
+ searchInfo.attr("style", "border-width: 0;");
+ } else {
+ searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
+ }
+ });
+});
+$(window).on("load", function() {
+ var input = $("#page-search-input");
+ var reset = $("#page-search-reset");
+ var notify = $("#page-search-notify");
+ var resultSection = $("div#result-section");
+ var resultContainer = $("div#result-container");
+ var searchTerm = "";
+ var activeTab = "";
+ var fixedTab = false;
+ var visibleTabs = [];
+ var feelingLucky = false;
+ function renderResults(result) {
+ if (!result.length) {
+ notify.html(messages.noResult);
+ } else if (result.length === 1) {
+ notify.html(messages.oneResult);
+ } else {
+ notify.html(messages.manyResults.replace("{0}", result.length));
+ }
+ resultContainer.empty();
+ var r = {
+ "types": [],
+ "members": [],
+ "packages": [],
+ "modules": [],
+ "searchTags": []
+ };
+ for (var i in result) {
+ var item = result[i];
+ var arr = r[item.category];
+ arr.push(item);
+ }
+ if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
+ Object.keys(r).reduce(function(prev, curr) {
+ if (r[curr].length > 0 && r[curr][0].score > prev) {
+ activeTab = curr;
+ return r[curr][0].score;
+ }
+ return prev;
+ }, 0);
+ }
+ if (feelingLucky && activeTab) {
+ notify.html(messages.redirecting)
+ var firstItem = r[activeTab][0];
+ window.location = getURL(firstItem.indexItem, firstItem.category);
+ return;
+ }
+ if (result.length > 20) {
+ if (searchTerm[searchTerm.length - 1] === ".") {
+ if (activeTab === "types" && r["members"].length > r["types"].length) {
+ activeTab = "members";
+ } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
+ activeTab = "types";
+ }
+ }
+ }
+ var categoryCount = Object.keys(r).reduce(function(prev, curr) {
+ return prev + (r[curr].length > 0 ? 1 : 0);
+ }, 0);
+ visibleTabs = [];
+ var tabContainer = $(" ").appendTo(resultContainer);
+ for (var key in r) {
+ var id = "#result-tab-" + key.replace("searchTags", "search_tags");
+ if (r[key].length) {
+ var count = r[key].length >= 1000 ? "999+" : r[key].length;
+ if (result.length > 20 && categoryCount > 1) {
+ var button = $("").appendTo(tabContainer);
+ button.click(key, function(e) {
+ fixedTab = true;
+ renderResult(e.data, $(this));
+ });
+ visibleTabs.push(key);
+ } else {
+ $("").appendTo(tabContainer);
+ renderTable(key, r[key]).appendTo(resultContainer);
+ tabContainer = $(" ").appendTo(resultContainer);
+
+ }
+ }
+ }
+ if (activeTab && result.length > 20 && categoryCount > 1) {
+ $("button#result-tab-" + activeTab).addClass("active-table-tab");
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ }
+ resultSection.show();
+ function renderResult(category, button) {
+ activeTab = category;
+ setSearchUrl();
+ resultContainer.find("div.summary-table").remove();
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ button.siblings().removeClass("active-table-tab");
+ button.addClass("active-table-tab");
+ }
+ }
+ function selectTab(category) {
+ $("button#result-tab-" + category).click();
+ }
+ function renderTable(category, items) {
+ var table = $("")
+ .addClass(category === "modules"
+ ? "one-column-search-results"
+ : "two-column-search-results");
+ var col1, col2;
+ if (category === "modules") {
+ col1 = "Module";
+ } else if (category === "packages") {
+ col1 = "Module";
+ col2 = "Package";
+ } else if (category === "types") {
+ col1 = "Package";
+ col2 = "Class"
+ } else if (category === "members") {
+ col1 = "Class";
+ col2 = "Member";
+ } else if (category === "searchTags") {
+ col1 = "Location";
+ col2 = "Name";
+ }
+ $("").appendTo(table);
+ if (category !== "modules") {
+ $("").appendTo(table);
+ }
+ $.each(items, function(index, item) {
+ var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
+ renderItem(item, table, rowColor);
+ });
+ return table;
+ }
+ function renderItem(item, table, rowColor) {
+ var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
+ var link = $(" ")
+ .attr("href", getURL(item.indexItem, item.category))
+ .attr("tabindex", "0")
+ .addClass("search-result-link")
+ .html(label);
+ var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
+ if (item.category === "searchTags") {
+ container = item.indexItem.h || "";
+ }
+ if (item.category !== "modules") {
+ $("
").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
+ }
+ $("
").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
+ }
+ var timeout;
+ function schedulePageSearch() {
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ timeout = setTimeout(function () {
+ doPageSearch()
+ }, 100);
+ }
+ function doPageSearch() {
+ setSearchUrl();
+ var term = searchTerm = input.val().trim();
+ if (term === "") {
+ notify.html(messages.enterTerm);
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ resultSection.hide();
+ } else {
+ notify.html(messages.searching);
+ doSearch({ term: term, maxResults: 1200 }, renderResults);
+ }
+ }
+ function setSearchUrl() {
+ var query = input.val().trim();
+ var url = document.location.pathname;
+ if (query) {
+ url += "?q=" + encodeURI(query);
+ if (activeTab && fixedTab) {
+ url += "&c=" + activeTab;
+ }
+ }
+ history.replaceState({query: query}, "", url);
+ }
+ input.on("input", function(e) {
+ feelingLucky = false;
+ schedulePageSearch();
+ });
+ $(document).keydown(function(e) {
+ if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
+ if (activeTab && visibleTabs.length > 1) {
+ var idx = visibleTabs.indexOf(activeTab);
+ idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
+ selectTab(visibleTabs[idx % visibleTabs.length]);
+ return false;
+ }
+ }
+ });
+ reset.click(function() {
+ notify.html(messages.enterTerm);
+ resultSection.hide();
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ input.val('').focus();
+ setSearchUrl();
+ });
+ input.prop("disabled", false);
+ reset.prop("disabled", false);
+
+ var urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has("q")) {
+ input.val(urlParams.get("q"))
+ }
+ if (urlParams.has("c")) {
+ activeTab = urlParams.get("c");
+ fixedTab = true;
+ }
+ if (urlParams.get("r")) {
+ feelingLucky = true;
+ }
+ if (input.val()) {
+ doPageSearch();
+ } else {
+ notify.html(messages.enterTerm);
+ }
+ input.select().focus();
+});
diff --git a/javadoc/search.html b/javadoc/search.html
new file mode 100644
index 0000000..e79da81
--- /dev/null
+++ b/javadoc/search.html
@@ -0,0 +1,72 @@
+
+
+
+
+ Search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Search
+
+
+
+
+Additional resources
+
+
+
+ The help page provides an introduction to the scope and syntax of JavaDoc search.
+ You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.
+ The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.
+ link Copy
+
+
+Redirect to first result
+
+Loading search index...
+
+
+
+
+
+
diff --git a/javadoc/search.js b/javadoc/search.js
new file mode 100644
index 0000000..4ca9557
--- /dev/null
+++ b/javadoc/search.js
@@ -0,0 +1,458 @@
+/*
+ * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+"use strict";
+const messages = {
+ enterTerm: "Enter a search term",
+ noResult: "No results found",
+ oneResult: "Found one result",
+ manyResults: "Found {0} results",
+ loading: "Loading search index...",
+ searching: "Searching...",
+ redirecting: "Redirecting to first result...",
+ linkIcon: "Link icon",
+ linkToSection: "Link to this section"
+}
+const categories = {
+ modules: "Modules",
+ packages: "Packages",
+ types: "Classes and Interfaces",
+ members: "Members",
+ searchTags: "Search Tags"
+};
+const highlight = " $& ";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+ return name === " " || !name ? "" : name + separator;
+}
+function escapeHtml(str) {
+ return str.replace(//g, ">");
+}
+function getHighlightedText(str, boundaries, from, to) {
+ var start = from;
+ var text = "";
+ for (var i = 0; i < boundaries.length; i += 2) {
+ var b0 = boundaries[i];
+ var b1 = boundaries[i + 1];
+ if (b0 >= to || b1 <= from) {
+ continue;
+ }
+ text += escapeHtml(str.slice(start, Math.max(start, b0)));
+ text += "";
+ text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+ text += " ";
+ start = Math.min(to, b1);
+ }
+ text += escapeHtml(str.slice(start, to));
+ return text;
+}
+function getURLPrefix(item, category) {
+ var urlPrefix = "";
+ var slash = "/";
+ if (category === "modules") {
+ return item.l + slash;
+ } else if (category === "packages" && item.m) {
+ return item.m + slash;
+ } else if (category === "types" || category === "members") {
+ if (item.m) {
+ urlPrefix = item.m + slash;
+ } else {
+ $.each(packageSearchIndex, function(index, it) {
+ if (it.m && item.p === it.l) {
+ urlPrefix = it.m + slash;
+ }
+ });
+ }
+ }
+ return urlPrefix;
+}
+function getURL(item, category) {
+ if (item.url) {
+ return item.url;
+ }
+ var url = getURLPrefix(item, category);
+ if (category === "modules") {
+ url += "module-summary.html";
+ } else if (category === "packages") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += item.l.replace(/\./g, '/') + "/package-summary.html";
+ }
+ } else if (category === "types") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
+ }
+ } else if (category === "members") {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
+ if (item.u) {
+ url += item.u;
+ } else {
+ url += item.l;
+ }
+ } else if (category === "searchTags") {
+ url += item.u;
+ }
+ item.url = url;
+ return url;
+}
+function createMatcher(term, camelCase) {
+ if (camelCase && !isUpperCase(term)) {
+ return null; // no need for camel-case matcher for lower case query
+ }
+ var pattern = "";
+ var upperCase = [];
+ term.trim().split(/\s+/).forEach(function(w, index, array) {
+ var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
+ for (var i = 0; i < tokens.length; i++) {
+ var s = tokens[i];
+ // ',' and '?' are the only delimiters commonly followed by space in java signatures
+ pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
+ upperCase.push(false);
+ var isWordToken = /\w$/.test(s);
+ if (isWordToken) {
+ if (i === tokens.length - 1 && index < array.length - 1) {
+ // space in query string matches all delimiters
+ pattern += "(.*?)";
+ upperCase.push(isUpperCase(s[0]));
+ } else {
+ if (!camelCase && isUpperCase(s) && s.length === 1) {
+ pattern += "()";
+ } else {
+ pattern += "([a-z0-9$<>?[\\]]*?)";
+ }
+ upperCase.push(isUpperCase(s[0]));
+ }
+ } else {
+ pattern += "()";
+ upperCase.push(false);
+ }
+ }
+ });
+ var re = new RegExp(pattern, "gi");
+ re.upperCase = upperCase;
+ return re;
+}
+function findMatch(matcher, input, startOfName, endOfName) {
+ var from = startOfName;
+ matcher.lastIndex = from;
+ var match = matcher.exec(input);
+ // Expand search area until we get a valid result or reach the beginning of the string
+ while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
+ if (from === 0) {
+ return NO_MATCH;
+ }
+ from = input.lastIndexOf(".", from - 2) + 1;
+ matcher.lastIndex = from;
+ match = matcher.exec(input);
+ }
+ var boundaries = [];
+ var matchEnd = match.index + match[0].length;
+ var score = 5;
+ var start = match.index;
+ var prevEnd = -1;
+ for (var i = 1; i < match.length; i += 2) {
+ var isUpper = isUpperCase(input[start]);
+ var isMatcherUpper = matcher.upperCase[i];
+ // capturing groups come in pairs, match and non-match
+ boundaries.push(start, start + match[i].length);
+ // make sure groups are anchored on a left word boundary
+ var prevChar = input[start - 1] || "";
+ var nextChar = input[start + 1] || "";
+ if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
+ if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+ score -= 0.1;
+ } else if (isMatcherUpper && start === prevEnd) {
+ score -= isUpper ? 0.1 : 1.0;
+ } else {
+ return NO_MATCH;
+ }
+ }
+ prevEnd = start + match[i].length;
+ start += match[i].length + match[i + 1].length;
+
+ // lower score for parts of the name that are missing
+ if (match[i + 1] && prevEnd < endOfName) {
+ score -= rateNoise(match[i + 1]);
+ }
+ }
+ // lower score if a type name contains unmatched camel-case parts
+ if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+ score -= rateNoise(input.slice(matchEnd, endOfName));
+ score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+ if (score <= 0) {
+ return NO_MATCH;
+ }
+ return {
+ input: input,
+ score: score,
+ boundaries: boundaries
+ };
+}
+function isUpperCase(s) {
+ return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+ return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+ return (str.match(/([.(])/g) || []).length / 5
+ + (str.match(/([A-Z]+)/g) || []).length / 10
+ + str.length / 20;
+}
+function doSearch(request, response) {
+ var term = request.term.trim();
+ var maxResults = request.maxResults || MAX_RESULTS;
+ if (term.length === 0) {
+ return this.close();
+ }
+ var matcher = {
+ plainMatcher: createMatcher(term, false),
+ camelCaseMatcher: createMatcher(term, true)
+ }
+ var indexLoaded = indexFilesLoaded();
+
+ function getPrefix(item, category) {
+ switch (category) {
+ case "packages":
+ return checkUnnamed(item.m, "/");
+ case "types":
+ return checkUnnamed(item.p, ".");
+ case "members":
+ return checkUnnamed(item.p, ".") + item.c + ".";
+ default:
+ return "";
+ }
+ }
+ function useQualifiedName(category) {
+ switch (category) {
+ case "packages":
+ return /[\s/]/.test(term);
+ case "types":
+ case "members":
+ return /[\s.]/.test(term);
+ default:
+ return false;
+ }
+ }
+ function searchIndex(indexArray, category) {
+ var matches = [];
+ if (!indexArray) {
+ if (!indexLoaded) {
+ matches.push({ l: messages.loading, category: category });
+ }
+ return matches;
+ }
+ $.each(indexArray, function (i, item) {
+ var prefix = getPrefix(item, category);
+ var simpleName = item.l;
+ var qualifiedName = prefix + simpleName;
+ var useQualified = useQualifiedName(category);
+ var input = useQualified ? qualifiedName : simpleName;
+ var startOfName = useQualified ? prefix.length : 0;
+ var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
+ ? input.indexOf("(", startOfName) : input.length;
+ var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
+ if (m === NO_MATCH && matcher.camelCaseMatcher) {
+ m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
+ }
+ if (m !== NO_MATCH) {
+ m.indexItem = item;
+ m.prefix = prefix;
+ m.category = category;
+ if (!useQualified) {
+ m.input = qualifiedName;
+ m.boundaries = m.boundaries.map(function(b) {
+ return b + prefix.length;
+ });
+ }
+ matches.push(m);
+ }
+ return true;
+ });
+ return matches.sort(function(e1, e2) {
+ return e2.score - e1.score;
+ }).slice(0, maxResults);
+ }
+
+ var result = searchIndex(moduleSearchIndex, "modules")
+ .concat(searchIndex(packageSearchIndex, "packages"))
+ .concat(searchIndex(typeSearchIndex, "types"))
+ .concat(searchIndex(memberSearchIndex, "members"))
+ .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+ if (!indexLoaded) {
+ updateSearchResults = function() {
+ doSearch(request, response);
+ }
+ } else {
+ updateSearchResults = function() {};
+ }
+ response(result);
+}
+// JQuery search menu implementation
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+ _create: function() {
+ this._super();
+ this.widget().menu("option", "items", "> .result-item");
+ // workaround for search result scrolling
+ this.menu._scrollIntoView = function _scrollIntoView( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height() - 26;
+ itemHeight = item.outerHeight();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+ }
+ }
+ };
+ },
+ _renderMenu: function(ul, items) {
+ var currentCategory = "";
+ var widget = this;
+ widget.menu.bindings = $();
+ $.each(items, function(index, item) {
+ if (item.category && item.category !== currentCategory) {
+ ul.append("" + categories[item.category] + " ");
+ currentCategory = item.category;
+ }
+ var li = widget._renderItemData(ul, item);
+ if (item.category) {
+ li.attr("aria-label", categories[item.category] + " : " + item.l);
+ } else {
+ li.attr("aria-label", item.l);
+ }
+ li.attr("class", "result-item");
+ });
+ ul.append("Go to search page ");
+ },
+ _renderItem: function(ul, item) {
+ var li = $(" ").appendTo(ul);
+ var div = $(" ").appendTo(li);
+ var label = item.l
+ ? item.l
+ : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
+ var idx = item.indexItem;
+ if (item.category === "searchTags" && idx && idx.h) {
+ if (idx.d) {
+ div.html(label + " (" + idx.h + ") "
+ + idx.d + " ");
+ } else {
+ div.html(label + " (" + idx.h + ") ");
+ }
+ } else {
+ div.html(label);
+ }
+ return li;
+ }
+});
+$(function() {
+ var expanded = false;
+ var windowWidth;
+ function collapse() {
+ if (expanded) {
+ $("div#navbar-top").removeAttr("style");
+ $("button#navbar-toggle-button")
+ .removeClass("expanded")
+ .attr("aria-expanded", "false");
+ expanded = false;
+ }
+ }
+ $("button#navbar-toggle-button").click(function (e) {
+ if (expanded) {
+ collapse();
+ } else {
+ var navbar = $("div#navbar-top");
+ navbar.height(navbar.prop("scrollHeight"));
+ $("button#navbar-toggle-button")
+ .addClass("expanded")
+ .attr("aria-expanded", "true");
+ expanded = true;
+ windowWidth = window.innerWidth;
+ }
+ });
+ $("ul.sub-nav-list-small li a").click(collapse);
+ $("input#search-input").focus(collapse);
+ $("main").click(collapse);
+ $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) {
+ // Create anchor links for headers with an associated id attribute
+ var hdr = $(el);
+ var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id");
+ if (id) {
+ hdr.append(" ");
+ }
+ });
+ $(window).on("orientationchange", collapse).on("resize", function(e) {
+ if (expanded && windowWidth !== window.innerWidth) collapse();
+ });
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.catcomplete({
+ minLength: 1,
+ delay: 200,
+ source: doSearch,
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ ui.content.push({ l: messages.noResult });
+ } else {
+ $("#search-input").empty();
+ }
+ },
+ autoFocus: true,
+ focus: function(event, ui) {
+ return false;
+ },
+ position: {
+ collision: "flip"
+ },
+ select: function(event, ui) {
+ if (ui.item.indexItem) {
+ var url = getURL(ui.item.indexItem, ui.item.category);
+ window.location.href = pathtoroot + url;
+ $("#search-input").focus();
+ }
+ }
+ });
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus();
+});
diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html
new file mode 100644
index 0000000..988df5a
--- /dev/null
+++ b/javadoc/serialized-form.html
@@ -0,0 +1,314 @@
+
+
+
+
+Serialized Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+serialVersionUID:
+9999L
+
+
+
+
+Serialized Fields
+
+
+id
+int id
+
+
+pseudo
+String pseudo
+
+
+score
+int score
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+cellIndex
+int cellIndex
+
+
+newValue
+int newValue
+
+
+sudokuIndex
+int sudokuIndex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+connectionId
+int connectionId
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+keepAliveId
+long keepAliveId
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+playerId
+int playerId
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+gameDuration
+long gameDuration
+
+
+instant
+Instant instant
+
+
+serializedSudoku
+String serializedSudoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+cellsLeft
+int cellsLeft
+
+
+playerId
+int playerId
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css
new file mode 100644
index 0000000..f71489f
--- /dev/null
+++ b/javadoc/stylesheet.css
@@ -0,0 +1,1272 @@
+/*
+ * Javadoc style sheet
+ */
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * These CSS custom properties (variables) define the core color and font
+ * properties used in this stylesheet.
+ */
+:root {
+ /* body, block and code fonts */
+ --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+ --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+ --code-font-family: 'DejaVu Sans Mono', monospace;
+ /* Base font sizes for body and code elements */
+ --body-font-size: 14px;
+ --code-font-size: 14px;
+ /* Text colors for body and block elements */
+ --body-text-color: #353833;
+ --block-text-color: #474747;
+ /* Background colors for various structural elements */
+ --body-background-color: #ffffff;
+ --section-background-color: #f8f8f8;
+ --detail-background-color: #ffffff;
+ /* Colors for navigation bar and table captions */
+ --navbar-background-color: #4D7A97;
+ --navbar-text-color: #ffffff;
+ /* Background color for subnavigation and various headers */
+ --subnav-background-color: #dee3e9;
+ /* Background and text colors for selected tabs and navigation items */
+ --selected-background-color: #f8981d;
+ --selected-text-color: #253441;
+ --selected-link-color: #1f389c;
+ /* Background colors for generated tables */
+ --even-row-color: #ffffff;
+ --odd-row-color: #eeeeef;
+ /* Text color for page title */
+ --title-color: #2c4557;
+ /* Text colors for links */
+ --link-color: #4A6782;
+ --link-color-active: #bb7a2a;
+ /* Snippet colors */
+ --snippet-background-color: #ebecee;
+ --snippet-text-color: var(--block-text-color);
+ --snippet-highlight-color: #f7c590;
+ /* Border colors for structural elements and user defined tables */
+ --border-color: #ededed;
+ --table-border-color: #000000;
+ /* Search input colors */
+ --search-input-background-color: #ffffff;
+ --search-input-text-color: #000000;
+ --search-input-placeholder-color: #909090;
+ /* Highlight color for active search tag target */
+ --search-tag-highlight-color: #ffff00;
+ /* Adjustments for icon and active background colors of copy-to-clipboard buttons */
+ --copy-icon-brightness: 100%;
+ --copy-button-background-color-active: rgba(168, 168, 176, 0.3);
+ /* Colors for invalid tag notifications */
+ --invalid-tag-background-color: #ffe6e6;
+ --invalid-tag-text-color: #000000;
+}
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+body {
+ background-color:var(--body-background-color);
+ color:var(--body-text-color);
+ font-family:var(--body-font-family);
+ font-size:var(--body-font-size);
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+}
+a[href]:hover, a[href]:focus {
+ text-decoration:none;
+ color:var(--link-color-active);
+}
+pre {
+ font-family:var(--code-font-family);
+ font-size:1em;
+}
+h1 {
+ font-size:1.428em;
+}
+h2 {
+ font-size:1.285em;
+}
+h3 {
+ font-size:1.14em;
+}
+h4 {
+ font-size:1.072em;
+}
+h5 {
+ font-size:1.001em;
+}
+h6 {
+ font-size:0.93em;
+}
+/* Disable font boosting for selected elements */
+h1, h2, h3, h4, h5, h6, div.member-signature {
+ max-height: 1000em;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:var(--code-font-family);
+}
+:not(h1, h2, h3, h4, h5, h6) > code,
+:not(h1, h2, h3, h4, h5, h6) > tt {
+ font-size:var(--code-font-size);
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
+}
+dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ padding-top:4px;
+}
+.summary-table dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+button {
+ font-family: var(--body-font-family);
+ font-size: 1em;
+}
+/*
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
+.about-language {
+ float:right;
+ padding:0 21px 8px 8px;
+ font-size:0.915em;
+ margin-top:-9px;
+ height:2.9em;
+}
+.legal-copy {
+ margin-left:.5em;
+}
+/*
+ * Styles for navigation bar.
+ */
+@media screen {
+ div.flex-box {
+ position:fixed;
+ display:flex;
+ flex-direction:column;
+ height: 100%;
+ width: 100%;
+ }
+ header.flex-header {
+ flex: 0 0 auto;
+ }
+ div.flex-content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ }
+}
+.top-nav {
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ float:left;
+ width:100%;
+ clear:right;
+ min-height:2.8em;
+ padding:10px 0 0 0;
+ overflow:hidden;
+ font-size:0.857em;
+}
+button#navbar-toggle-button {
+ display:none;
+}
+ul.sub-nav-list-small {
+ display: none;
+}
+.sub-nav {
+ background-color:var(--subnav-background-color);
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:0.857em;
+}
+.sub-nav div {
+ clear:left;
+ float:left;
+ padding:6px;
+ text-transform:uppercase;
+}
+.sub-nav .sub-nav-list {
+ padding-top:4px;
+}
+ul.nav-list {
+ display:block;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.sub-nav-list {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.nav-list li {
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+.sub-nav .nav-list-search {
+ float:right;
+ margin:0;
+ padding:6px;
+ clear:none;
+ text-align:right;
+ position:relative;
+}
+ul.sub-nav-list li {
+ list-style:none;
+ float:left;
+}
+.top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ color:var(--navbar-text-color);
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.top-nav a:hover {
+ color:var(--link-color-active);
+}
+.nav-bar-cell1-rev {
+ background-color:var(--selected-background-color);
+ color:var(--selected-text-color);
+ margin: auto 5px;
+}
+.skip-nav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+ * Hide navigation links and search box in print layout
+ */
+@media print {
+ ul.nav-list, div.sub-nav {
+ display:none;
+ }
+}
+/*
+ * Styles for page header.
+ */
+.title {
+ color:var(--title-color);
+ margin:10px 0;
+}
+.sub-title {
+ margin:5px 0 0 0;
+}
+ul.contents-list {
+ margin: 0 0 15px 0;
+ padding: 0;
+ list-style: none;
+}
+ul.contents-list li {
+ font-size:0.93em;
+}
+/*
+ * Styles for headings.
+ */
+body.class-declaration-page .summary h2,
+body.class-declaration-page .details h2,
+body.class-use-page h2,
+body.module-declaration-page .block-list h2 {
+ font-style: italic;
+ padding:0;
+ margin:15px 0;
+}
+body.class-declaration-page .summary h3,
+body.class-declaration-page .details h3,
+body.class-declaration-page .summary .inherited-list h2 {
+ background-color:var(--subnav-background-color);
+ border:1px solid var(--border-color);
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+/*
+ * Styles for page layout containers.
+ */
+main {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+dl.notes > dt {
+ font-family: var(--body-font-family);
+ font-size:0.856em;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:var(--body-text-color);
+}
+dl.notes > dd {
+ margin:5px 10px 10px 0;
+ font-size:1em;
+ font-family:var(--block-font-family)
+}
+dl.name-value > dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+dl.name-value > dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+ * Styles for lists.
+ */
+li.circle {
+ list-style:circle;
+}
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+div.inheritance {
+ margin:0;
+ padding:0;
+}
+div.inheritance div.inheritance {
+ margin-left:2em;
+}
+ul.block-list,
+ul.details-list,
+ul.member-list,
+ul.summary-list {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.block-list > li,
+ul.details-list > li,
+ul.member-list > li,
+ul.summary-list > li {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.ref-list {
+ padding:0;
+ margin:0;
+}
+ul.ref-list > li {
+ list-style:none;
+}
+.summary-table dl, .summary-table dl dt, .summary-table dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+ul.tag-list, ul.tag-list-long {
+ padding-left: 0;
+ list-style: none;
+}
+ul.tag-list li {
+ display: inline;
+}
+ul.tag-list li:not(:last-child):after,
+ul.tag-list-long li:not(:last-child):after
+{
+ content: ", ";
+ white-space: pre-wrap;
+}
+ul.preview-feature-list {
+ list-style: none;
+ margin:0;
+ padding:0.1em;
+ line-height: 1.6em;
+}
+/*
+ * Styles for tables.
+ */
+.summary-table, .details-table {
+ width:100%;
+ border-spacing:0;
+ border:1px solid var(--border-color);
+ border-top:0;
+ padding:0;
+}
+.caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:var(--selected-text-color);
+ clear:none;
+ overflow:hidden;
+ padding: 10px 0 0 1px;
+ margin:0;
+}
+.caption a:link, .caption a:visited {
+ color:var(--selected-link-color);
+}
+.caption a:hover,
+.caption a:active {
+ color:var(--navbar-text-color);
+}
+.caption span {
+ font-weight:bold;
+ white-space:nowrap;
+ padding:5px 12px 7px 12px;
+ display:inline-block;
+ float:left;
+ background-color:var(--selected-background-color);
+ border: none;
+ height:16px;
+}
+div.table-tabs {
+ padding:10px 0 0 1px;
+ margin:10px 0 0 0;
+}
+div.table-tabs > button {
+ border: none;
+ cursor: pointer;
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 8px;
+}
+div.table-tabs > .active-table-tab {
+ background: var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
+}
+div.checkboxes {
+ line-height: 2em;
+}
+div.checkboxes > span {
+ margin-left: 10px;
+}
+div.checkboxes > label {
+ margin-left: 8px;
+ white-space: nowrap;
+}
+div.checkboxes > label > input {
+ margin: 0 2px;
+}
+.two-column-summary {
+ display: grid;
+ grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
+}
+.three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
+}
+.three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
+}
+.four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
+}
+@media screen and (max-width: 1000px) {
+ .four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+ }
+}
+@media screen and (max-width: 800px) {
+ .two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
+ }
+ .three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
+ }
+ .three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
+ }
+ .three-column-summary .col-last,
+ .three-column-release-summary .col-last{
+ grid-column-end: span 2;
+ }
+}
+@media screen and (max-width: 600px) {
+ .two-column-summary {
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+}
+.summary-table > div, .details-table > div {
+ text-align:left;
+ padding: 8px 3px 3px 7px;
+ overflow-x: auto;
+ scrollbar-width: thin;
+}
+.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
+ vertical-align:top;
+ padding-right:0;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+.table-header {
+ background:var(--subnav-background-color);
+ font-weight: bold;
+}
+/* Sortable table columns */
+.table-header[onclick] {
+ cursor: pointer;
+}
+.table-header[onclick]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ ');
+ background-size:100% 100%;
+ width:9px;
+ height:14px;
+ margin-left:4px;
+ margin-bottom:-3px;
+}
+.table-header[onclick].sort-asc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+
+}
+.table-header[onclick].sort-desc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+.col-first, .col-first {
+ font-size:0.93em;
+}
+.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
+ font-size:0.93em;
+}
+.col-first, .col-second, .col-constructor-name {
+ vertical-align:top;
+ overflow: auto;
+}
+.col-last {
+ white-space:normal;
+}
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-constructor-name a:link, .col-constructor-name a:visited,
+.col-summary-item-name a:link, .col-summary-item-name a:visited {
+ font-weight:bold;
+}
+.even-row-color, .even-row-color .table-header {
+ background-color:var(--even-row-color);
+}
+.odd-row-color, .odd-row-color .table-header {
+ background-color:var(--odd-row-color);
+}
+/*
+ * Styles for contents.
+ */
+div.block {
+ font-size:var(--body-font-size);
+ font-family:var(--block-font-family);
+}
+.col-last div {
+ padding-top:0;
+}
+.col-last a {
+ padding-bottom:3px;
+}
+.module-signature,
+.package-signature,
+.type-signature,
+.member-signature {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ margin:14px 0;
+ white-space: pre-wrap;
+}
+.module-signature,
+.package-signature,
+.type-signature {
+ margin-top: 0;
+}
+.member-signature .type-parameters-long,
+.member-signature .parameters,
+.member-signature .exceptions {
+ display: inline-block;
+ vertical-align: top;
+ white-space: pre;
+}
+.member-signature .type-parameters {
+ white-space: normal;
+}
+/*
+ * Styles for formatting effect.
+ */
+.source-line-no {
+ /* Color of line numbers in source pages can be set via custom property below */
+ color:var(--source-linenumber-color, green);
+ padding:0 30px 0 0;
+}
+.block {
+ display:block;
+ margin:0 10px 5px 0;
+ color:var(--block-text-color);
+}
+.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .package-label-in-type,
+.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
+ font-weight:bold;
+}
+.deprecation-comment, .help-footnote, .preview-comment {
+ font-style:italic;
+}
+.deprecation-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+.preview-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+div.block div.deprecation-comment {
+ font-style:normal;
+}
+details.invalid-tag, span.invalid-tag {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ color: var(--invalid-tag-text-color);
+ background: var(--invalid-tag-background-color);
+ border: thin solid var(--table-border-color);
+ border-radius:2px;
+ padding: 2px 4px;
+ display:inline-block;
+}
+details summary {
+ cursor: pointer;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+ display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-state-active {
+ /* Overrides the color of selection used in jQuery UI */
+ background: var(--selected-background-color);
+ border: 1px solid var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:15px;
+ padding:7px 0 7px 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:auto;
+ overflow-x:auto;
+ scrollbar-width: thin;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:1;
+ background-color: var(--body-background-color);
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ min-width:100%;
+}
+ul.ui-autocomplete li.ui-static-link {
+ position:sticky;
+ bottom:0;
+ left:0;
+ background: var(--subnav-background-color);
+ padding: 5px 0;
+ font-family: var(--body-font-family);
+ font-size: 0.93em;
+ font-weight: bolder;
+ z-index: 2;
+}
+li.ui-static-link a, li.ui-static-link a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+ float:right;
+ margin-right:20px;
+}
+.ui-autocomplete .result-item {
+ font-size: inherit;
+}
+.ui-autocomplete .result-highlight {
+ font-weight:bold;
+}
+#search-input, #page-search-input {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ background-color: var(--search-input-background-color);
+ color: var(--search-input-text-color);
+ border-color: var(--border-color);
+ padding-left:20px;
+ width: 250px;
+ margin: 0;
+}
+#search-input {
+ margin-left: 4px;
+}
+#reset-button {
+ background-color: transparent;
+ background-image:url('resources/x.png');
+ background-repeat:no-repeat;
+ background-size:contain;
+ border:0;
+ border-radius:0;
+ width:12px;
+ height:12px;
+ position:absolute;
+ right:12px;
+ top:10px;
+ font-size:0;
+}
+::placeholder {
+ color:var(--search-input-placeholder-color);
+ opacity: 1;
+}
+.search-tag-desc-result {
+ font-style:italic;
+ font-size:11px;
+}
+.search-tag-holder-result {
+ font-style:italic;
+ font-size:12px;
+}
+.search-tag-result:target {
+ background-color:var(--search-tag-highlight-color);
+}
+details.page-search-details {
+ display: inline-block;
+}
+div#result-container {
+ font-size: 1em;
+}
+div#result-container a.search-result-link {
+ padding: 0;
+ margin: 4px 0;
+ width: 100%;
+}
+#result-container .result-highlight {
+ font-weight:bolder;
+}
+.page-search-info {
+ background-color: var(--subnav-background-color);
+ border-radius: 3px;
+ border: 0 solid var(--border-color);
+ padding: 0 8px;
+ overflow: hidden;
+ height: 0;
+ transition: all 0.2s ease;
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.page-search-header {
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ display: inline-block;
+}
+button.page-search-header {
+ border: none;
+ cursor: pointer;
+}
+span#page-search-link {
+ text-decoration: underline;
+}
+.module-graph span, .sealed-graph span {
+ display:none;
+ position:absolute;
+}
+.module-graph:hover span, .sealed-graph:hover span {
+ display:block;
+ margin: -100px 0 0 100px;
+ z-index: 1;
+}
+.inherited-list {
+ margin: 10px 0 10px 0;
+}
+section.class-description {
+ line-height: 1.4;
+}
+.summary section[class$="-summary"], .details section[class$="-details"],
+.class-uses .detail, .serialized-class-details {
+ padding: 0 20px 5px 10px;
+ border: 1px solid var(--border-color);
+ background-color: var(--section-background-color);
+}
+.inherited-list, section[class$="-details"] .detail {
+ padding:0 0 5px 8px;
+ background-color:var(--detail-background-color);
+ border:none;
+}
+.vertical-separator {
+ padding: 0 5px;
+}
+ul.help-section-list {
+ margin: 0;
+}
+ul.help-subtoc > li {
+ display: inline-block;
+ padding-right: 5px;
+ font-size: smaller;
+}
+ul.help-subtoc > li::before {
+ content: "\2022" ;
+ padding-right:2px;
+}
+.help-note {
+ font-style: italic;
+}
+/*
+ * Indicator icon for external links.
+ */
+main a[href*="://"]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+ background-size:100% 100%;
+ width:7px;
+ height:7px;
+ margin-left:2px;
+ margin-bottom:4px;
+}
+main a[href*="://"]:hover::after,
+main a[href*="://"]:focus::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+/*
+ * Styles for header/section anchor links
+ */
+a.anchor-link {
+ opacity: 0;
+ transition: opacity 0.1s;
+}
+:hover > a.anchor-link {
+ opacity: 80%;
+}
+a.anchor-link:hover,
+a.anchor-link:focus-visible,
+a.anchor-link.visible {
+ opacity: 100%;
+}
+a.anchor-link > img {
+ width: 0.9em;
+ height: 0.9em;
+}
+/*
+ * Styles for copy-to-clipboard buttons
+ */
+button.copy {
+ opacity: 70%;
+ border: none;
+ border-radius: 3px;
+ position: relative;
+ background:none;
+ transition: opacity 0.3s;
+ cursor: pointer;
+}
+:hover > button.copy {
+ opacity: 80%;
+}
+button.copy:hover,
+button.copy:active,
+button.copy:focus-visible,
+button.copy.visible {
+ opacity: 100%;
+}
+button.copy img {
+ position: relative;
+ background: none;
+ filter: brightness(var(--copy-icon-brightness));
+}
+button.copy:active {
+ background-color: var(--copy-button-background-color-active);
+}
+button.copy span {
+ color: var(--body-text-color);
+ position: relative;
+ top: -0.1em;
+ transition: all 0.1s;
+ font-size: 0.76rem;
+ line-height: 1.2em;
+ opacity: 0;
+}
+button.copy:hover span,
+button.copy:focus-visible span,
+button.copy.visible span {
+ opacity: 100%;
+}
+/* search page copy button */
+button#page-search-copy {
+ margin-left: 0.4em;
+ padding:0.3em;
+ top:0.13em;
+}
+button#page-search-copy img {
+ width: 1.2em;
+ height: 1.2em;
+ padding: 0.01em 0;
+ top: 0.15em;
+}
+button#page-search-copy span {
+ color: var(--body-text-color);
+ line-height: 1.2em;
+ padding: 0.2em;
+ top: -0.18em;
+}
+div.page-search-info:hover button#page-search-copy span {
+ opacity: 100%;
+}
+/* snippet copy button */
+button.snippet-copy {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ height: 1.7em;
+ padding: 2px;
+}
+button.snippet-copy img {
+ width: 18px;
+ height: 18px;
+ padding: 0.05em 0;
+}
+button.snippet-copy span {
+ line-height: 1.2em;
+ padding: 0.2em;
+ position: relative;
+ top: -0.5em;
+}
+div.snippet-container:hover button.snippet-copy span {
+ opacity: 100%;
+}
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ * No borders, vertical margins, styled caption.
+ * This style is provided for use with existing doc comments.
+ * In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ * Plain borders around table and cells, vertical margins, styled caption.
+ * Best for small tables or for complex tables for tables with cells that span
+ * rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ * Borders around the table and vertical borders between cells, striped rows,
+ * vertical margins, styled caption.
+ * Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+
+table.borderless,
+table.plain,
+table.striped {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+ padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+ border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+ background-color: transparent;
+}
+table.plain {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+ background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.striped > thead {
+ background-color: var(--subnav-background-color);
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr:nth-child(even) {
+ background-color: var(--odd-row-color)
+}
+table.striped > tbody > tr:nth-child(odd) {
+ background-color: var(--even-row-color)
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+ border-left: 1px solid var(--table-border-color);
+ border-right: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr > th {
+ font-weight: normal;
+}
+/**
+ * Tweak style for small screens.
+ */
+@media screen and (max-width: 920px) {
+ header.flex-header {
+ max-height: 100vh;
+ overflow-y: auto;
+ }
+ div#navbar-top {
+ height: 2.8em;
+ transition: height 0.35s ease;
+ }
+ ul.nav-list {
+ display: block;
+ width: 40%;
+ float:left;
+ clear: left;
+ margin: 10px 0 0 0;
+ padding: 0;
+ }
+ ul.nav-list li {
+ float: none;
+ padding: 6px;
+ margin-left: 10px;
+ margin-top: 2px;
+ }
+ ul.sub-nav-list-small {
+ display:block;
+ height: 100%;
+ width: 50%;
+ float: right;
+ clear: right;
+ background-color: var(--subnav-background-color);
+ color: var(--body-text-color);
+ margin: 6px 0 0 0;
+ padding: 0;
+ }
+ ul.sub-nav-list-small ul {
+ padding-left: 20px;
+ }
+ ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
+ color:var(--link-color);
+ }
+ ul.sub-nav-list-small a:hover {
+ color:var(--link-color-active);
+ }
+ ul.sub-nav-list-small li {
+ list-style:none;
+ float:none;
+ padding: 6px;
+ margin-top: 1px;
+ text-transform:uppercase;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 10px;
+ }
+ ul.sub-nav-list-small li p {
+ margin: 5px 0;
+ }
+ div#navbar-sub-list {
+ display: none;
+ }
+ .top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ display: block;
+ }
+ button#navbar-toggle-button {
+ width: 3.4em;
+ height: 2.8em;
+ background-color: transparent;
+ display: block;
+ float: left;
+ border: 0;
+ margin: 0 10px;
+ cursor: pointer;
+ font-size: 10px;
+ }
+ button#navbar-toggle-button .nav-bar-toggle-icon {
+ display: block;
+ width: 24px;
+ height: 3px;
+ margin: 1px 0 4px 0;
+ border-radius: 2px;
+ transition: all 0.1s;
+ background-color: var(--navbar-text-color);
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
+ transform: rotate(45deg);
+ transform-origin: 10% 10%;
+ width: 26px;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
+ opacity: 0;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
+ transform: rotate(-45deg);
+ transform-origin: 10% 90%;
+ width: 26px;
+ }
+}
+@media screen and (max-width: 800px) {
+ .about-language {
+ padding-right: 16px;
+ }
+ ul.nav-list li {
+ margin-left: 5px;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 5px;
+ }
+ main {
+ padding: 10px;
+ }
+ .summary section[class$="-summary"], .details section[class$="-details"],
+ .class-uses .detail, .serialized-class-details {
+ padding: 0 8px 5px 8px;
+ }
+ body {
+ -webkit-text-size-adjust: none;
+ }
+}
+@media screen and (max-width: 400px) {
+ .about-language {
+ font-size: 10px;
+ padding-right: 12px;
+ }
+}
+@media screen and (max-width: 400px) {
+ .nav-list-search {
+ width: 94%;
+ }
+ #search-input, #page-search-input {
+ width: 70%;
+ }
+}
+@media screen and (max-width: 320px) {
+ .nav-list-search > label {
+ display: none;
+ }
+ .nav-list-search {
+ width: 90%;
+ }
+ #search-input, #page-search-input {
+ width: 80%;
+ }
+}
+
+pre.snippet {
+ background-color: var(--snippet-background-color);
+ color: var(--snippet-text-color);
+ padding: 10px;
+ margin: 12px 0;
+ overflow: auto;
+ white-space: pre;
+}
+div.snippet-container {
+ position: relative;
+}
+@media screen and (max-width: 800px) {
+ pre.snippet {
+ padding-top: 26px;
+ }
+ button.snippet-copy {
+ top: 4px;
+ right: 4px;
+ }
+}
+pre.snippet .italic {
+ font-style: italic;
+}
+pre.snippet .bold {
+ font-weight: bold;
+}
+pre.snippet .highlighted {
+ background-color: var(--snippet-highlight-color);
+ border-radius: 10%;
+}
diff --git a/javadoc/sudoku/Main.html b/javadoc/sudoku/Main.html
new file mode 100644
index 0000000..0b5d38d
--- /dev/null
+++ b/javadoc/sudoku/Main.html
@@ -0,0 +1,208 @@
+
+
+
+
+Main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Main
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+ static void
+
+
+
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+voidTest
+public static void voidTest ()
+
+
+
+
+filledTest
+public static void filledTest ()
+
+
+
+
+overwriteTest
+public static void overwriteTest (int n)
+
+
+
+
+main
+public static void main (String [] args)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/SudokuSerializerTest.html b/javadoc/sudoku/SudokuSerializerTest.html
new file mode 100644
index 0000000..e36e135
--- /dev/null
+++ b/javadoc/sudoku/SudokuSerializerTest.html
@@ -0,0 +1,145 @@
+
+
+
+
+SudokuSerializerTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuSerializerTest
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SudokuSerializerTest
+public SudokuSerializerTest ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/BlockConstraint.html b/javadoc/sudoku/constraint/BlockConstraint.html
new file mode 100644
index 0000000..b99a88c
--- /dev/null
+++ b/javadoc/sudoku/constraint/BlockConstraint.html
@@ -0,0 +1,188 @@
+
+
+
+
+BlockConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+IConstraint
+
+
+
+Contrainte de bloc
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+BlockConstraint
+public BlockConstraint ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBePlaced
+public boolean canBePlaced (Sudoku s,
+ int x,
+ int y,
+ int newSymbolIndex)
+
+Specified by:
+canBePlaced in interface IConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/ColumnConstraint.html b/javadoc/sudoku/constraint/ColumnConstraint.html
new file mode 100644
index 0000000..35da044
--- /dev/null
+++ b/javadoc/sudoku/constraint/ColumnConstraint.html
@@ -0,0 +1,188 @@
+
+
+
+
+ColumnConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+IConstraint
+
+
+
+Contrainte de colonne
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ColumnConstraint
+public ColumnConstraint ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBePlaced
+public boolean canBePlaced (Sudoku s,
+ int x,
+ int y,
+ int newSymbolIndex)
+
+Specified by:
+canBePlaced in interface IConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/Constraint.html b/javadoc/sudoku/constraint/Constraint.html
new file mode 100644
index 0000000..709cfa6
--- /dev/null
+++ b/javadoc/sudoku/constraint/Constraint.html
@@ -0,0 +1,267 @@
+
+
+
+
+Constraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable , Comparable <Constraint >, Constable
+
+
+
+Enumération utilisée afin de simplifier l'affichage en graphique.
+ Un sudoku peut tout de même contenir des contraintes qui ne sont pas dans cette énumération.
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns the enum constant of this class with the specified name.
+
+
+
+
+ Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+ Methods inherited from class java.lang.Enum
+ clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+getDisplayName
+public String getDisplayName ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/DiagonalConstraint.html b/javadoc/sudoku/constraint/DiagonalConstraint.html
new file mode 100644
index 0000000..40a83ab
--- /dev/null
+++ b/javadoc/sudoku/constraint/DiagonalConstraint.html
@@ -0,0 +1,188 @@
+
+
+
+
+DiagonalConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+IConstraint
+
+
+
+Contrainte de diagonale
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+DiagonalConstraint
+public DiagonalConstraint ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBePlaced
+public boolean canBePlaced (Sudoku s,
+ int x,
+ int y,
+ int newSymbolIndex)
+
+Specified by:
+canBePlaced in interface IConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/IConstraint.html b/javadoc/sudoku/constraint/IConstraint.html
new file mode 100644
index 0000000..72d439f
--- /dev/null
+++ b/javadoc/sudoku/constraint/IConstraint.html
@@ -0,0 +1,151 @@
+
+
+
+
+IConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Abstract Methods
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBePlaced
+boolean canBePlaced (Sudoku s,
+ int x,
+ int y,
+ int newSymbolIndex)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/LineConstraint.html b/javadoc/sudoku/constraint/LineConstraint.html
new file mode 100644
index 0000000..6c14d3f
--- /dev/null
+++ b/javadoc/sudoku/constraint/LineConstraint.html
@@ -0,0 +1,188 @@
+
+
+
+
+LineConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+IConstraint
+
+
+
+Contrainte de ligne
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LineConstraint
+public LineConstraint ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBePlaced
+public boolean canBePlaced (Sudoku s,
+ int x,
+ int y,
+ int newSymbolIndex)
+
+Specified by:
+canBePlaced in interface IConstraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/package-summary.html b/javadoc/sudoku/constraint/package-summary.html
new file mode 100644
index 0000000..37edcad
--- /dev/null
+++ b/javadoc/sudoku/constraint/package-summary.html
@@ -0,0 +1,134 @@
+
+
+
+
+sudoku.constraint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package sudoku.constraint
+
+
+
+
+
+
+
+ All Classes and Interfaces Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+ Enumération utilisée afin de simplifier l'affichage en graphique.
+
+
+
+ Contrainte de diagonale
+
+
+
+ Interface de base pour la déclaration d'une contrainte
+ Elle est en théorie assez générique pour implémenter n'importe quelle
+ contrainte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/constraint/package-tree.html b/javadoc/sudoku/constraint/package-tree.html
new file mode 100644
index 0000000..2329ffe
--- /dev/null
+++ b/javadoc/sudoku/constraint/package-tree.html
@@ -0,0 +1,94 @@
+
+
+
+
+sudoku.constraint Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/io/ConsoleInterface.html b/javadoc/sudoku/io/ConsoleInterface.html
new file mode 100644
index 0000000..24f1402
--- /dev/null
+++ b/javadoc/sudoku/io/ConsoleInterface.html
@@ -0,0 +1,181 @@
+
+
+
+
+ConsoleInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ConsoleInterface
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ Début de la séquence console, affiche un message de bienvenue et les crédits
+ du projet
+ puis donne à l'utilisateur le choix de récupérer un doku sauvegardé
+ ou d'en créer un nouveau.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ConsoleInterface
+public ConsoleInterface ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+welcome
+public void welcome ()
+Début de la séquence console, affiche un message de bienvenue et les crédits
+ du projet
+ puis donne à l'utilisateur le choix de récupérer un doku sauvegardé
+ ou d'en créer un nouveau.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/io/SudokuPrinter.html b/javadoc/sudoku/io/SudokuPrinter.html
new file mode 100644
index 0000000..32f8cf0
--- /dev/null
+++ b/javadoc/sudoku/io/SudokuPrinter.html
@@ -0,0 +1,452 @@
+
+
+
+
+SudokuPrinter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuPrinter
+ extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Concrete Methods
+
+
+
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+ static void
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+ANSI_RESET
+public static final String ANSI_RESET
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_RED
+public static final String ANSI_RED
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_GREEN
+public static final String ANSI_GREEN
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_YELLOW
+public static final String ANSI_YELLOW
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_BLUE
+public static final String ANSI_BLUE
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_PURPLE
+public static final String ANSI_PURPLE
+
+See Also:
+
+
+
+
+
+
+
+
+ANSI_CYAN
+public static final String ANSI_CYAN
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SudokuPrinter
+public SudokuPrinter ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+printRectangleSudoku
+public static void printRectangleSudoku (Sudoku s,
+ int blockWidth,
+ int blockHeight,
+ Symbols symbols)
+
+
+
+
+printRectangleSudoku
+public static void printRectangleSudoku (Sudoku s,
+ int blockWidth,
+ int blockHeight,
+ List <String > listSymbols)
+
+
+
+
+printRectangleSudokuWithIndex
+public static void printRectangleSudokuWithIndex (Sudoku s,
+ int blockWidth,
+ int blockHeight,
+ List <String > listSymbols)
+
+
+
+
+
+
+
+
+
+
+printMultiDokuWithIndex
+
+
+
+
+
+toStringRectangleSudoku
+public static String toStringRectangleSudoku (Sudoku s,
+ int blockWidth,
+ int blockHeight,
+ Symbols symbols)
+
+
+
+
+toStringRectangleSudoku
+public static String toStringRectangleSudoku (Sudoku s,
+ int blockWidth,
+ int blockHeight,
+ List <String > listSymbols)
+
+
+
+
+printMultiDoku
+public static void printMultiDoku (MultiDoku doku,
+ int blockWidth,
+ int blockHeight,
+ Symbols symbols)
+
+
+
+
+printMultiDokuWithIndex
+public static void printMultiDokuWithIndex (MultiDoku doku,
+ int blockWidth,
+ int blockHeight,
+ Symbols symbols)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/io/SudokuSerializer.html b/javadoc/sudoku/io/SudokuSerializer.html
new file mode 100644
index 0000000..33dc5e9
--- /dev/null
+++ b/javadoc/sudoku/io/SudokuSerializer.html
@@ -0,0 +1,269 @@
+
+
+
+
+SudokuSerializer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuSerializer
+ extends Object
+Classe permettant d'effectuer des opérations sur les sudokus afin de les
+ charger/sauvegarder
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Construit un sudoku à partir d'un String en JSON
+
+
+
+
+ Désérialise un sudoku d'un objet JSON
+
+
+
+
+ Get a MultiDoku from a pre-existing json save file.
+
+
+
+
+ Save a serialized MultiDoku in a JSON file.
+
+
+
+
+ static org.json.JSONObject
+
+
+ Convertit un sudoku en object JSON
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SudokuSerializer
+public SudokuSerializer ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+serializeSudoku
+public static org.json.JSONObject serializeSudoku (MultiDoku multidoku)
+Convertit un sudoku en object JSON
+
+Parameters:
+multidoku - le sudoku à sérialiser
+Returns:
+le JSON
+
+
+
+
+
+saveMultiDoku
+
+Save a serialized MultiDoku in a JSON file.
+
+Parameters:
+doku - MultiDoku, MultiDoku to save.
+Returns:
+String, the path of the save.
+
+
+
+
+
+
+
+
+getSavedMultiDoku
+
+Get a MultiDoku from a pre-existing json save file.
+
+Parameters:
+numberSave - int, number of the save file to open.
+Returns:
+MultiDoku, MultiDoku contained in the file.
+Throws:
+Exception - when the given save file does not exist.
+
+
+
+
+
+deserializeSudoku
+
+Construit un sudoku à partir d'un String en JSON
+
+Parameters:
+json - le sudoku sérialisé
+Returns:
+le sudoku désérialisé
+
+
+
+
+
+deserializeSudoku
+public static MultiDoku deserializeSudoku (org.json.JSONObject jsonObject)
+Désérialise un sudoku d'un objet JSON
+
+Parameters:
+jsonObject - l'objet à désérialiser
+Returns:
+le sudoku correspondant
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/io/package-summary.html b/javadoc/sudoku/io/package-summary.html
new file mode 100644
index 0000000..c726306
--- /dev/null
+++ b/javadoc/sudoku/io/package-summary.html
@@ -0,0 +1,115 @@
+
+
+
+
+sudoku.io
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package sudoku.io
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+
+
+
+
+
+ Classe permettant d'effectuer des opérations sur les sudokus afin de les
+ charger/sauvegarder
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/io/package-tree.html b/javadoc/sudoku/io/package-tree.html
new file mode 100644
index 0000000..02ba975
--- /dev/null
+++ b/javadoc/sudoku/io/package-tree.html
@@ -0,0 +1,73 @@
+
+
+
+
+sudoku.io Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/package-summary.html b/javadoc/sudoku/package-summary.html
new file mode 100644
index 0000000..c0bab85
--- /dev/null
+++ b/javadoc/sudoku/package-summary.html
@@ -0,0 +1,110 @@
+
+
+
+
+sudoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package sudoku
+
+
+
+
+
+
diff --git a/javadoc/sudoku/package-tree.html b/javadoc/sudoku/package-tree.html
new file mode 100644
index 0000000..c721349
--- /dev/null
+++ b/javadoc/sudoku/package-tree.html
@@ -0,0 +1,72 @@
+
+
+
+
+sudoku Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/BacktrackingSolver.html b/javadoc/sudoku/solver/BacktrackingSolver.html
new file mode 100644
index 0000000..0a84166
--- /dev/null
+++ b/javadoc/sudoku/solver/BacktrackingSolver.html
@@ -0,0 +1,202 @@
+
+
+
+
+BacktrackingSolver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Solver
+
+
+public class BacktrackingSolver
+ extends Object
+implements Solver
+
+
+
+
+
+
+Field Summary
+
+ Fields inherited from interface sudoku.solver.Solver
+ logger
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Résout le MultiDoku passé en paramètre, avec backtracking.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+BacktrackingSolver
+public BacktrackingSolver ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+solve
+
+Résout le MultiDoku passé en paramètre, avec backtracking.
+
+Specified by:
+solve in interface Solver
+Parameters:
+doku - MultiDoku, MultiDoku à résoudre.
+Returns:
+boolean, valant true si le MultiDoku est résolu, false sinon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/HintHelper.Hint.html b/javadoc/sudoku/solver/HintHelper.Hint.html
new file mode 100644
index 0000000..6912f02
--- /dev/null
+++ b/javadoc/sudoku/solver/HintHelper.Hint.html
@@ -0,0 +1,267 @@
+
+
+
+
+HintHelper.Hint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Enclosing class:
+HintHelper
+
+
+public static record HintHelper.Hint ( Cell cell, int newValue)
+ extends Record
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+ Creates an instance of a Hint record class.
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Returns the value of the cell record component.
+
+ final boolean
+
+
+ Indicates whether some other object is "equal to" this one.
+
+ final int
+
+
+ Returns a hash code value for this object.
+
+ int
+
+
+ Returns the value of the newValue record component.
+
+
+
+
+ Returns a string representation of this record class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Hint
+public Hint (Cell cell,
+ int newValue)
+Creates an instance of a Hint record class.
+
+Parameters:
+cell - the value for the cell record component
+newValue - the value for the newValue record component
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+toString
+public final String toString ()
+Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
+
+Specified by:
+toString in class Record
+Returns:
+a string representation of this object
+
+
+
+
+
+hashCode
+public final int hashCode ()
+Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
+
+Specified by:
+hashCode in class Record
+Returns:
+a hash code value for this object
+
+
+
+
+
+equals
+public final boolean equals (Object o)
+Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
+
+Specified by:
+equals in class Record
+Parameters:
+o - the object with which to compare
+Returns:
+true if this object is the same as the o argument; false otherwise.
+
+
+
+
+
+cell
+
+Returns the value of the cell record component.
+
+Returns:
+the value of the cell record component
+
+
+
+
+
+newValue
+public int newValue ()
+Returns the value of the newValue record component.
+
+Returns:
+the value of the newValue record component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/HintHelper.html b/javadoc/sudoku/solver/HintHelper.html
new file mode 100644
index 0000000..e967157
--- /dev/null
+++ b/javadoc/sudoku/solver/HintHelper.html
@@ -0,0 +1,201 @@
+
+
+
+
+HintHelper
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class HintHelper
+ extends Object
+
+
+
+
+
+
+Nested Class Summary
+Nested Classes
+
+
+
+
+ static final record
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Si possible, donne un indice sur la résolution du doku passé en paramètre,
+ selon la méthode de résolution rensaignée.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+HintHelper
+public HintHelper ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getHint
+
+Si possible, donne un indice sur la résolution du doku passé en paramètre,
+ selon la méthode de résolution rensaignée.
+
+Parameters:
+doku - MultiDoku, multidoku pour lequel on veut un indice
+solver - Solver, méthode de résolution souhaitée
+Returns:
+Hint, indice sur une case à remplir, valant null si le doku n'a pas de solution.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/HumanSolver.html b/javadoc/sudoku/solver/HumanSolver.html
new file mode 100644
index 0000000..221e3a5
--- /dev/null
+++ b/javadoc/sudoku/solver/HumanSolver.html
@@ -0,0 +1,202 @@
+
+
+
+
+HumanSolver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Solver
+
+
+
+
+
+
+
+
+
+Field Summary
+
+ Fields inherited from interface sudoku.solver.Solver
+ logger
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Résout le MultiDoku passé en paramètre, avec règles de déduction.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+HumanSolver
+public HumanSolver ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+solve
+
+Résout le MultiDoku passé en paramètre, avec règles de déduction.
+
+Specified by:
+solve in interface Solver
+Parameters:
+doku - MultiDoku, MultiDoku à résoudre.
+Returns:
+boolean, valant true si le MultiDoku est résolu, false sinon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/MixedSolver.html b/javadoc/sudoku/solver/MixedSolver.html
new file mode 100644
index 0000000..1e548b6
--- /dev/null
+++ b/javadoc/sudoku/solver/MixedSolver.html
@@ -0,0 +1,204 @@
+
+
+
+
+MixedSolver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Solver
+
+
+
+
+
+
+
+
+
+Field Summary
+
+ Fields inherited from interface sudoku.solver.Solver
+ logger
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Résout le MultiDoku passé en paramètre, avec règles de déduction et
+ backtracking.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+MixedSolver
+public MixedSolver ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+solve
+
+Résout le MultiDoku passé en paramètre, avec règles de déduction et
+ backtracking.
+
+Specified by:
+solve in interface Solver
+Parameters:
+doku - MultiDoku, MultiDoku à résoudre.
+Returns:
+boolean, valant true si le MultiDoku est résolu, false sinon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/RandomSolver.html b/javadoc/sudoku/solver/RandomSolver.html
new file mode 100644
index 0000000..609d2fb
--- /dev/null
+++ b/javadoc/sudoku/solver/RandomSolver.html
@@ -0,0 +1,206 @@
+
+
+
+
+RandomSolver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Solver
+
+
+public class RandomSolver
+ extends Object
+implements Solver
+
+
+
+
+
+
+Field Summary
+
+ Fields inherited from interface sudoku.solver.Solver
+ logger
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Résout, si possible, le multidoku passé en paramètre
+ en testant toutes les possibilités, de manière aléatoire, avec un algorithme
+ de backtracking.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+RandomSolver
+public RandomSolver ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+solve
+
+Résout, si possible, le multidoku passé en paramètre
+ en testant toutes les possibilités, de manière aléatoire, avec un algorithme
+ de backtracking.
+
+Specified by:
+solve in interface Solver
+Parameters:
+doku - Multidoku, à résoudre
+Returns:
+boolean, true s'il est résolu ou false s'il ne l'est pas.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/Solver.html b/javadoc/sudoku/solver/Solver.html
new file mode 100644
index 0000000..9038838
--- /dev/null
+++ b/javadoc/sudoku/solver/Solver.html
@@ -0,0 +1,224 @@
+
+
+
+
+Solver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+ Log du Solver, qui garde trace des actions réalisées.
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Abstract Methods Default Methods
+
+
+
+
+
+ default void
+
+
+ Méthode utilisée en interne afin de rajouter une étape si l'utilisateur le
+ souhaite (steps non null)
+
+ default int
+
+
+ Compte le nombre de solutions possibles au MultiDoku passé en paramètres.
+
+ default boolean
+
+
+ boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+logger
+
+Log du Solver, qui garde trace des actions réalisées.
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+
+
+
+countSolution
+
+Compte le nombre de solutions possibles au MultiDoku passé en paramètres.
+
+Parameters:
+doku - MultiDoku, MultiDoku dont on veut le nombre de solutions.
+Returns:
+int, nombre de solutions possibles.
+
+
+
+
+
+addStep
+
+Méthode utilisée en interne afin de rajouter une étape si l'utilisateur le
+ souhaite (steps non null)
+
+Parameters:
+cell - la cellule qui a été modifiée
+steps - la liste d'étape à mettre à jour
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/SolverStep.html b/javadoc/sudoku/solver/SolverStep.html
new file mode 100644
index 0000000..c9b4a78
--- /dev/null
+++ b/javadoc/sudoku/solver/SolverStep.html
@@ -0,0 +1,181 @@
+
+
+
+
+SolverStep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SolverStep
+ extends Object
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SolverStep
+public SolverStep (Cell cell)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getNewValue
+public int getNewValue ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/StupidSolver.html b/javadoc/sudoku/solver/StupidSolver.html
new file mode 100644
index 0000000..2f0ca9e
--- /dev/null
+++ b/javadoc/sudoku/solver/StupidSolver.html
@@ -0,0 +1,196 @@
+
+
+
+
+StupidSolver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Solver
+
+
+public class StupidSolver
+ extends Object
+implements Solver
+Class de test non utilisé
+
+
+
+
+
+
+Field Summary
+
+ Fields inherited from interface sudoku.solver.Solver
+ logger
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+StupidSolver
+public StupidSolver ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+solve
+
+
+Specified by:
+solve in interface Solver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/package-summary.html b/javadoc/sudoku/solver/package-summary.html
new file mode 100644
index 0000000..f9009e6
--- /dev/null
+++ b/javadoc/sudoku/solver/package-summary.html
@@ -0,0 +1,128 @@
+
+
+
+
+sudoku.solver
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package sudoku.solver
+
+
+
+
+
+
+
+ All Classes and Interfaces Interfaces Classes Record Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Class de test non utilisé
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/solver/package-tree.html b/javadoc/sudoku/solver/package-tree.html
new file mode 100644
index 0000000..a043867
--- /dev/null
+++ b/javadoc/sudoku/solver/package-tree.html
@@ -0,0 +1,97 @@
+
+
+
+
+sudoku.solver Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+Record Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/Block.html b/javadoc/sudoku/structure/Block.html
new file mode 100644
index 0000000..a876d14
--- /dev/null
+++ b/javadoc/sudoku/structure/Block.html
@@ -0,0 +1,236 @@
+
+
+
+
+Block
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Block
+ extends Object
+Class qui représente les Block de chaque Sudoku,
+ Un Block étant un ensemble de cellule avec une contrainte de block qui lui
+ ait associé.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+ Crée un Block avec une liste de Cell vide.
+
+
+
+ Crée un Block avec une liste de Cell donnée.
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ Ajoute une Cell au Block
+
+ boolean
+
+
+ Cherche si le Block contient déjà un symbole donné.
+
+
+
+
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Block
+
+Crée un Block avec une liste de Cell donnée.
+
+Parameters:
+cells - List~Cell~
+
+
+
+
+
+Block
+public Block ()
+Crée un Block avec une liste de Cell vide.
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+
+
+
+addCell
+public void addCell (Cell newCell)
+Ajoute une Cell au Block
+
+Parameters:
+newCell - Cell, Ã ajouter
+
+
+
+
+
+containsSymbol
+public boolean containsSymbol (int symbolIndex)
+Cherche si le Block contient déjà un symbole donné.
+
+Parameters:
+symbolIndex - int, un index de symbole
+Returns:
+boolean, true s'il contient le symbole et false sinon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/Cell.html b/javadoc/sudoku/structure/Cell.html
new file mode 100644
index 0000000..0596085
--- /dev/null
+++ b/javadoc/sudoku/structure/Cell.html
@@ -0,0 +1,384 @@
+
+
+
+
+Cell
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Cell
+ extends Object
+Représente une case d'un, ou plusieurs, sudoku qui à comme valeur un index de symbole.
+ Celui ci pourra être remplacer par un symbole en temps voulu.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+ static int
+
+
+ Constante de valeur d'index de symbole quand il n'y en a pas,
+ soit que la Cell est vide.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+
+ Cell (int symbolIndex,
+ boolean isMutable)
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Vérifie si la Cell peut prendre ce symbole par rapport aux contraintes de ses Sudokus.
+
+ void
+
+
+ int
+
+
+ Vide la Cell, en renvoie l'ancien index du symbole qui était dedans.
+
+
+
+
+ Renvoie le Block qui la contient.
+
+
+
+
+ Renvoie les symboles que peut prendre cette Cell par rapport aux contraintes de ses Sudokus.
+
+ int
+
+
+ boolean
+
+
+ Renvoie si la Cell est vide ou non.
+
+ boolean
+
+
+ Renvoie si la Cell est modifiable
+
+ void
+
+
+ void
+
+
+ Rend la Cell immuable.
+
+ void
+
+
+ boolean
+
+
+ Essaye de placer la valeur et renvoie false si ce n'est pas possible.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+NOSYMBOL
+public static int NOSYMBOL
+Constante de valeur d'index de symbole quand il n'y en a pas,
+ soit que la Cell est vide.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+
+
+
+Cell
+public Cell (int symbolIndex)
+
+
+
+
+Cell
+public Cell (int symbolIndex,
+ boolean isMutable)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getSymbolIndex
+public int getSymbolIndex ()
+
+
+
+
+getBlock
+
+Renvoie le Block qui la contient.
+
+Returns:
+Block.
+
+
+
+
+
+isMutable
+public boolean isMutable ()
+Renvoie si la Cell est modifiable
+
+Returns:
+boolean, true si elle est modifiable ou false sinon.
+
+
+
+
+
+setSymbolIndex
+public void setSymbolIndex (int symbolIndex)
+
+
+
+
+setImmutable
+public void setImmutable ()
+Rend la Cell immuable.
+
+
+
+
+setBlock
+public void setBlock (Block block)
+
+
+
+
+clearCurrentSymbol
+public void clearCurrentSymbol ()
+Vide la Cell.
+
+
+
+
+isEmpty
+public boolean isEmpty ()
+Renvoie si la Cell est vide ou non.
+
+Returns:
+boolean, true si la Cell est vide, false sinon.
+
+
+
+
+
+empty
+public int empty ()
+Vide la Cell, en renvoie l'ancien index du symbole qui était dedans.
+
+Returns:
+int, index du symbole anciennement contenue dans la Cell.
+
+
+
+
+
+canHaveValue
+public boolean canHaveValue (int value)
+Vérifie si la Cell peut prendre ce symbole par rapport aux contraintes de ses Sudokus.
+
+Parameters:
+value - int, index du symbole
+Returns:
+boolean, true si elle peut, false sinon.
+
+
+
+
+
+getPossibleSymbols
+
+Renvoie les symboles que peut prendre cette Cell par rapport aux contraintes de ses Sudokus.
+
+Returns:
+List~Integer~, la liste des symboles possibles.
+
+
+
+
+
+trySetValue
+public boolean trySetValue (int newValue)
+Essaye de placer la valeur et renvoie false si ce n'est pas possible.
+
+Parameters:
+newValue - int, valeur à placer.
+Returns:
+boolean, true si la Cell à pris la valeur newValue, false sinon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/Coordinate.html b/javadoc/sudoku/structure/Coordinate.html
new file mode 100644
index 0000000..798d53b
--- /dev/null
+++ b/javadoc/sudoku/structure/Coordinate.html
@@ -0,0 +1,238 @@
+
+
+
+
+Coordinate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Coordinate
+ extends Object
+Représente les coordonnées d'une Cell.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Ajoute la Coordiante donnée à celle-ci.
+
+ int
+
+
+ int
+
+
+ void
+
+
+ void
+
+
+
+
+
+ Soustrait la Coordiante donnée à celle-ci.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Coordinate
+public Coordinate (int x,
+ int y)
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getX
+public int getX ()
+
+
+
+
+setX
+public void setX (int x)
+
+
+
+
+getY
+public int getY ()
+
+
+
+
+setY
+public void setY (int y)
+
+
+
+
+add
+
+Ajoute la Coordiante donnée à celle-ci.
+
+Parameters:
+other - Coordiante, Ã ajouter.
+Returns:
+Coordinate, le résultat de l'addition.
+
+
+
+
+
+sub
+
+Soustrait la Coordiante donnée à celle-ci.
+
+Parameters:
+other - Coordiante, Ã soustraire.
+Returns:
+Coordinate, le résultat de la soustraction.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/Difficulty.html b/javadoc/sudoku/structure/Difficulty.html
new file mode 100644
index 0000000..683ac4f
--- /dev/null
+++ b/javadoc/sudoku/structure/Difficulty.html
@@ -0,0 +1,285 @@
+
+
+
+
+Difficulty
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Serializable , Comparable <Difficulty >, Constable
+
+
+
+Les difficultés d'un Sudoku,
+ représente le nombre de cases à enlever, en proportion, à un Sudoku.
+ Par exemple, avec 0.1 de factor, on enlevera 10% des cases.
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+ double
+
+
+
+
+
+ Returns the enum constant of this class with the specified name.
+
+
+
+
+ Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+ Methods inherited from class java.lang.Enum
+ clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name - the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException - if this enum class has no constant with the specified name
+NullPointerException - if the argument is null
+
+
+
+
+
+getDisplayName
+public String getDisplayName ()
+
+
+
+
+getFactor
+public double getFactor ()
+
+
+
+
+getDifficultyNames
+public static String [] getDifficultyNames ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/MultiDoku.html b/javadoc/sudoku/structure/MultiDoku.html
new file mode 100644
index 0000000..301011b
--- /dev/null
+++ b/javadoc/sudoku/structure/MultiDoku.html
@@ -0,0 +1,386 @@
+
+
+
+
+MultiDoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class MultiDoku
+ extends Object
+Class : MultiDoku
+ Brief : Représente une grille de Multidoku.
+ Une grille de sudoku est un multidoku avec un seul sous-sudoku.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ void
+
+
+ Vide les Cells modifiable.
+
+
+
+
+ boolean
+
+
+
+
+
+ Renvoie la liste des Cells contenue dans ce MultiDoku,
+ soit les Cells contenues de chaques sous-Sudoku.
+
+
+
+
+ Renvoie la liste des Cells vides du MultiDoku.
+
+
+
+
+ Renvoie la liste des Cells préalablement remplies du MultiDoku.
+
+
+
+
+ Renvoie la 1re Cell vide des sous-Sudoku.
+
+ int
+
+
+ Renvoie le nombre de Cell contenue dans le MultiDoku.
+
+ int
+
+
+ Renvoie le nombre de sudoku contenu dans ce MultiDoku.
+
+
+
+
+
+
+
+ Renvoie la ie sudoku contenue dans ce MultiDoku.
+
+
+
+
+ Renvoie les sous-Sudoku
+
+ boolean
+
+
+ Check si le MultiDoku est résolu, c'est à dire complet et cohérent avec ses contraintes.
+
+ void
+
+
+ Change les Cells de ce MultiDoku avec des symboles, en Cells immuables.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+isSolved
+public boolean isSolved ()
+Check si le MultiDoku est résolu, c'est à dire complet et cohérent avec ses contraintes.
+
+Returns:
+boolean, true s'il est résolu et false sinon.
+
+
+
+
+
+getFilledCells
+
+Renvoie la liste des Cells préalablement remplies du MultiDoku.
+
+Returns:
+List~Cell~, vide si aucune Cell n'est remplie.
+
+
+
+
+
+getEmptyCells
+
+Renvoie la liste des Cells vides du MultiDoku.
+
+Returns:
+List~Cell~, vide si aucune Cell ne l'est.
+
+
+
+
+
+getFirstEmptyCell
+public Cell getFirstEmptyCell ()
+Renvoie la 1re Cell vide des sous-Sudoku.
+
+Returns:
+Cell, une Cell vide, ou null s'il n'y en a pas.
+
+
+
+
+
+getNbSubGrids
+public int getNbSubGrids ()
+Renvoie le nombre de sudoku contenu dans ce MultiDoku.
+
+Returns:
+int
+
+
+
+
+
+getSubGrid
+public Sudoku getSubGrid (int i)
+Renvoie la ie sudoku contenue dans ce MultiDoku.
+
+Parameters:
+i - int, indice du sudoku à renvoyer.
+Returns:
+Sudoku, ie Sudoku
+
+
+
+
+
+getCells
+
+Renvoie la liste des Cells contenue dans ce MultiDoku,
+ soit les Cells contenues de chaques sous-Sudoku.
+
+Returns:
+List~Cell~
+
+
+
+
+
+getNbCells
+public int getNbCells ()
+Renvoie le nombre de Cell contenue dans le MultiDoku.
+
+Returns:
+int, nombre de Cell dans le MultiDoku.
+
+
+
+
+
+setFilledCellsImmutable
+public void setFilledCellsImmutable ()
+Change les Cells de ce MultiDoku avec des symboles, en Cells immuables.
+
+
+
+
+clearMutableCells
+public void clearMutableCells ()
+Vide les Cells modifiable.
+
+
+
+
+getSubGrids
+
+Renvoie les sous-Sudoku
+
+Returns:
+List~Sudoku~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/StateManager.html b/javadoc/sudoku/structure/StateManager.html
new file mode 100644
index 0000000..f8d2151
--- /dev/null
+++ b/javadoc/sudoku/structure/StateManager.html
@@ -0,0 +1,192 @@
+
+
+
+
+StateManager
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class StateManager
+ extends Object
+Une pile, qui réprésente les états d'un MultiDoku,
+ utile pour les Solvers.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+ void
+
+
+
+
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+popState
+public void popState ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/Sudoku.html b/javadoc/sudoku/structure/Sudoku.html
new file mode 100644
index 0000000..6e04257
--- /dev/null
+++ b/javadoc/sudoku/structure/Sudoku.html
@@ -0,0 +1,472 @@
+
+
+
+
+Sudoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Sudoku
+ extends Object
+Class : Sudoku
+ Brief : Représent un Sudoku
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Instance Methods Concrete Methods
+
+
+
+
+
+ boolean
+
+
+ Teste si on peut placer la value dans la Cell aux coordonnées x, y d'après
+ les contraintes du Sudoku.
+
+
+
+
+ int
+
+
+
+
+
+
+
+
+ Renvoie la Cell aux coordonées données.
+
+
+
+
+
+
+
+
+
+
+ Renvoie la 1re Cell vide du Sudoku.
+
+ int
+
+
+ boolean
+
+
+ boolean
+
+
+ Vérifie si le Sudoku est résolue, soit complet et cohérent avec ses
+ contraintes.
+
+ boolean
+
+
+ Vérifie que l'index correspond bien à une Cell dans le Sudoku.
+
+ boolean
+
+
+ Vérifie que des coordonnées correspondent bien à une Cell dans le Sudoku.
+
+ void
+
+
+ boolean
+
+
+ Place les symboles d'index contenus dans values dans les cases du Sudoku.
+
+
+
+
+ Place le symbole d'index value dans la Cell de coordonnées précisées.
+
+ boolean
+
+
+ Place les symboles d'index contenus dans values dans les cases du Sudoku et
+ rend ces cases immuables.
+
+
+
+
+ Transforme un index de Cell en Coordinate.
+
+ int
+
+
+ Transforme des coordonées d'une Cell en index.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+toCoords
+
+Transforme un index de Cell en Coordinate.
+
+Parameters:
+index - int, index d'une Cell.
+Returns:
+Coordinate, correspondante à l'index donné.
+
+
+
+
+
+toIndex
+public int toIndex (int x,
+ int y)
+Transforme des coordonées d'une Cell en index.
+
+Parameters:
+x - int, abscisse.
+y - int, ordonnée.
+Returns:
+int, index correspondant.
+
+
+
+
+
+isValidCoords
+public boolean isValidCoords (int x,
+ int y)
+Vérifie que des coordonnées correspondent bien à une Cell dans le Sudoku.
+
+Returns:
+boolean, valant true si les coordonnées sont dans les bornes du
+ Sudoku, false sinon.
+
+
+
+
+
+isValidCoords
+public boolean isValidCoords (int index)
+Vérifie que l'index correspond bien à une Cell dans le Sudoku.
+
+Returns:
+boolean, valant true si l'index est dans les bornes du Sudoku, false
+ sinon.
+
+
+
+
+
+canBePlaced
+public boolean canBePlaced (int x,
+ int y,
+ int value)
+Teste si on peut placer la value dans la Cell aux coordonnées x, y d'après
+ les contraintes du Sudoku.
+
+Parameters:
+x - int, abscisse de la Cell voulue.
+y - int, ordonnée de la Cell voulue.
+value - int, index du symbole qu'on veut placer.
+Returns:
+boolean, true si on peut la placer et false sinon.
+
+
+
+
+
+isSolved
+public boolean isSolved ()
+Vérifie si le Sudoku est résolue, soit complet et cohérent avec ses
+ contraintes.
+
+Returns:
+boolean, valant true si le Sudoku est résolu, false sinon.
+
+
+
+
+
+getCell
+public Cell getCell (int x,
+ int y)
+Renvoie la Cell aux coordonées données.
+
+Parameters:
+x - int, abscisse.
+y - int, ordonnée.
+Returns:
+Cell, si une Cell existe aux coordonnées données, null sinon.
+
+
+
+
+
+getFirstEmptyCell
+public Cell getFirstEmptyCell ()
+Renvoie la 1re Cell vide du Sudoku.
+
+Returns:
+Cell, une Cell vide, ou null s'il n'y en a pas.
+
+
+
+
+
+setCellSymbol
+public Cell setCellSymbol (int x,
+ int y,
+ int value)
+Place le symbole d'index value dans la Cell de coordonnées précisées.
+
+Parameters:
+x - int, abscisse de la Cell voulue.
+y - int, coordonnée de la Cell voulue.
+value - int, index du symbole à placer.
+Returns:
+Cell, la Cell qui a été modifiée.
+
+
+
+
+
+setCellsSymbol
+
+Place les symboles d'index contenus dans values dans les cases du Sudoku.
+
+Parameters:
+values - List~Integer~, liste des index des symboles à placer.
+Returns:
+boolean, vaut true si les symboles ont été placés, false sinon.
+
+
+
+
+
+setImmutableCellsSymbol
+public boolean setImmutableCellsSymbol (List <Integer > values)
+Place les symboles d'index contenus dans values dans les cases du Sudoku et
+ rend ces cases immuables.
+
+Parameters:
+values - List~Integer~, liste des index des symboles à placer.
+Returns:
+boolean, vaut true si les symboles ont été placés, false sinon.
+
+
+
+
+
+hasConstraint
+public boolean hasConstraint (Constraint constraint)
+
+
+
+
+getCell
+public Cell getCell (int i)
+
+
+
+
+getSize
+public int getSize ()
+
+
+
+
+
+
+
+
+
+
+
+
+
+getBlockWidth
+public int getBlockWidth ()
+
+
+
+
+setBlockWidth
+public void setBlockWidth (int blockWidth)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/SudokuFactory.html b/javadoc/sudoku/structure/SudokuFactory.html
new file mode 100644
index 0000000..dc5bfaf
--- /dev/null
+++ b/javadoc/sudoku/structure/SudokuFactory.html
@@ -0,0 +1,480 @@
+
+
+
+
+SudokuFactory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class SudokuFactory
+ extends Object
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+ Liste des contraintes par défaut d'un Multi- ou Sudoku.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+ All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+ Crée un Sudoku vide avec les Blocks aléatoires.
+
+
+
+
+ Créée un MultiDoku vide dont les Blocks sont de taille widthBlock par
+ heightBlock.
+
+
+
+
+ Créée un MultiDoku vide dont les Blocks sont carrés de longueur size.
+
+
+
+
+ Créée un MultiDoku de Blocks rectangulaires de forme +, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+
+
+
+ Créée un MultiDoku de Blocks carrés de forme +, de taille size composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+
+
+
+ Créée un MultiDoku de Blocks rectangulaires de forme X, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+
+
+
+ Créée un MultiDoku de Blocks carrés de taille size composé de cinq Sudokus,
+ dont un central qui partage chacun de ses Blockss d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+ static void
+
+
+ Rempli un MultiDoku donné par rapport à un difficulté.
+
+
+
+
+ Transforme des Constraints en IConstraints correspondants.
+
+
+
+
+ Génère un MultiDoku à partir d'un fichier de sauvegarde.
+
+ static boolean
+
+
+ Créée un MultiDoku de difficulté difficulty à partir d'un MultiDoku fourni.
+
+
+
+
+
+ Methods inherited from class java.lang.Object
+ clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+DEFAULT_CONSTRAINTS
+
+Liste des contraintes par défaut d'un Multi- ou Sudoku.
+ Comprend les contraintes de blocs, de lignes, et de colonnes.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+SudokuFactory
+public SudokuFactory ()
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+createBasicEmptyRectangleDoku
+public static MultiDoku createBasicEmptyRectangleDoku (int widthBlock,
+ int heightBlock,
+ List <IConstraint > constraints)
+Créée un MultiDoku vide dont les Blocks sont de taille widthBlock par
+ heightBlock.
+
+Parameters:
+widthBlock - int, largeur des Blocks.
+heightBlock - int, hauteur des Blocks.
+Returns:
+MultiDoku, MultiDoku vide.
+
+
+
+
+
+createBasicEmptySquareDoku
+
+Créée un MultiDoku vide dont les Blocks sont carrés de longueur size.
+
+Parameters:
+size - int, taille des Blocks.
+Returns:
+MultiDoku, MultiDoku vide.
+
+
+
+
+
+createBasicXShapedMultidoku
+
+Créée un MultiDoku de Blocks carrés de taille size composé de cinq Sudokus,
+ dont un central qui partage chacun de ses Blockss d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+Parameters:
+size - int, largeur des Blocks unitraires des Sudokus à crééer.
+Returns:
+MultiDoku, MultiDoku de forme X.
+
+
+
+
+
+createBasicXShapedMultidoku
+
+Créée un MultiDoku de Blocks rectangulaires de forme X, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks d'angle avec un autre
+ Sudoku.
+ 2 3
+ 1
+ 4 5
+
+Parameters:
+width - int, largeur des Blocks unitaires des Sudokus à crééer.
+height - int, hauteur des Blocks unitaires des Sudokus à crééer.
+Returns:
+MultiDoku, MultiDoku de forme X.
+
+
+
+
+
+createBasicPlusShapedMultidoku
+
+Créée un MultiDoku de Blocks carrés de forme +, de taille size composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+Parameters:
+size - int, largeur des Blocks unitaires des Sudokus à crééer.
+Returns:
+MultiDoku, MultiDoku de forme +.
+
+
+
+
+
+createBasicPlusShapedMultidoku
+
+Créée un MultiDoku de Blocks rectangulaires de forme +, de taille width par height composé
+ de cinq Sudokus,
+ dont un central qui partage chacun de ses Blocks de bord avec un autre
+ Sudoku.
+ 3
+ 2 1 4
+ 5
+
+Parameters:
+width - int, largeur des Blocks unitaires des Sudokus à crééer.
+height - int, hauteur des Blocks unitaires des Sudokus à crééer.
+Returns:
+MultiDoku, MultiDoku de forme +.
+
+
+
+
+
+createBasicEmptyRandomBlockDoku
+
+Crée un Sudoku vide avec les Blocks aléatoires.
+
+Parameters:
+blockSize - int, la taille des Block.
+constraints - List~IConstraint~, la liste des contraintes.
+Returns:
+MultiDoku, avec un seul Sudoku.
+
+
+
+
+
+newDokuFromFilledOne
+
+Créée un MultiDoku de difficulté difficulty à partir d'un MultiDoku fourni.
+
+Parameters:
+doku - MultiDoku, MultiDoku dont on doit vider des Cells.
+nbCellsToEmpty - int, nombre de cases à retirer.
+Returns:
+boolean, valant true si un MultiDoku de difficulté donnée peut être
+ créée, false sinon.
+Throws:
+Exception - si la difficulté n'est pas compatible avec la taille du
+ MultiDoku.
+
+
+
+
+
+fillDoku
+
+Rempli un MultiDoku donné par rapport à un difficulté.
+
+Parameters:
+doku - MultiDoku, vide.
+difficulty - Difficulty, qui correspond au pourcentage de cases à enlever.
+Throws:
+Exception
+
+
+
+
+
+fromfile
+
+Génère un MultiDoku à partir d'un fichier de sauvegarde.
+
+Parameters:
+filePath - String, chemin du fichier.
+Returns:
+MultiDoku.
+
+
+
+
+
+fromConstraints
+
+Transforme des Constraints en IConstraints correspondants.
+
+Parameters:
+constraints - List~Constraints~
+Returns:
+List~IConstraints~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/package-summary.html b/javadoc/sudoku/structure/package-summary.html
new file mode 100644
index 0000000..43aa957
--- /dev/null
+++ b/javadoc/sudoku/structure/package-summary.html
@@ -0,0 +1,144 @@
+
+
+
+
+sudoku.structure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package sudoku.structure
+
+
+
+
+
+
+
+ All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+ Class qui représente les Block de chaque Sudoku,
+ Un Block étant un ensemble de cellule avec une contrainte de block qui lui
+ ait associé.
+
+
+
+ Représente une case d'un, ou plusieurs, sudoku qui à comme valeur un index de symbole.
+
+
+
+ Représente les coordonnées d'une Cell.
+
+
+
+ Les difficultés d'un Sudoku,
+ représente le nombre de cases à enlever, en proportion, à un Sudoku.
+
+
+
+ Class : MultiDoku
+ Brief : Représente une grille de Multidoku.
+
+
+
+ Une pile, qui réprésente les états d'un MultiDoku,
+ utile pour les Solvers.
+
+
+
+ Class : Sudoku
+ Brief : Représent un Sudoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/javadoc/sudoku/structure/package-tree.html b/javadoc/sudoku/structure/package-tree.html
new file mode 100644
index 0000000..8c787e2
--- /dev/null
+++ b/javadoc/sudoku/structure/package-tree.html
@@ -0,0 +1,91 @@
+
+
+
+
+sudoku.structure Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/javadoc/tag-search-index.js b/javadoc/tag-search-index.js
new file mode 100644
index 0000000..bf10aaf
--- /dev/null
+++ b/javadoc/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/javadoc/type-search-index.js b/javadoc/type-search-index.js
new file mode 100644
index 0000000..5f7c5fa
--- /dev/null
+++ b/javadoc/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"gui.widget","l":"AnimatedBackground"},{"p":"gui","l":"AssetManager"},{"p":"sudoku.solver","l":"BacktrackingSolver"},{"p":"gui.menu","l":"BaseView"},{"p":"sudoku.structure","l":"Block"},{"p":"sudoku.constraint","l":"BlockConstraint"},{"p":"sudoku.structure","l":"Cell"},{"p":"network.protocol.packets","l":"ChangeCellPacket"},{"p":"network.client","l":"Client"},{"p":"network.client","l":"ClientConnexion"},{"p":"gui","l":"ColorGenerator.Color"},{"p":"gui","l":"ColorGenerator"},{"p":"sudoku.constraint","l":"ColumnConstraint"},{"p":"network","l":"Connexion"},{"p":"network.protocol.packets","l":"ConnexionInfoPacket"},{"p":"gui.menu","l":"ConnexionStatusView"},{"p":"network","l":"ConnexionThread"},{"p":"sudoku.io","l":"ConsoleInterface"},{"p":"sudoku.constraint","l":"Constraint"},{"p":"common","l":"ConsumerSignal"},{"p":"sudoku.structure","l":"Coordinate"},{"p":"sudoku.constraint","l":"DiagonalConstraint"},{"p":"sudoku.structure","l":"Difficulty"},{"p":"network.protocol.packets","l":"DisconnectPacket"},{"p":"network.protocol.packets","l":"EndGamePacket"},{"p":"gui.menu","l":"EndGameView"},{"p":"gui.constants","l":"Fonts"},{"p":"game","l":"Game"},{"p":"game","l":"Game.GameState"},{"p":"sudoku.solver","l":"HintHelper.Hint"},{"p":"sudoku.solver","l":"HintHelper"},{"p":"sudoku.solver","l":"HumanSolver"},{"p":"sudoku.constraint","l":"IConstraint"},{"p":"gui.constants","l":"Images"},{"p":"network.server","l":"KeepAliveHandler"},{"p":"network.protocol.packets","l":"KeepAlivePacket"},{"p":"gui.widget","l":"LeaderboardRenderer"},{"p":"sudoku.constraint","l":"LineConstraint"},{"p":"network.protocol.packets","l":"LoginPacket"},{"p":"gui","l":"Main"},{"p":"sudoku","l":"Main"},{"p":"gui.menu","l":"MainMenu"},{"p":"sudoku.solver","l":"MixedSolver"},{"p":"sudoku.structure","l":"MultiDoku"},{"p":"gui.menu","l":"MultiMenu"},{"p":"gui.widget","l":"MultiPlayerCompleteProgress"},{"p":"gui.menu","l":"MultiPlayerDokuView"},{"p":"gui.menu","l":"MultiPlayerView"},{"p":"gui.constants","l":"Options"},{"p":"gui.menu","l":"OptionsMenu"},{"p":"network.protocol","l":"Packet"},{"p":"network.protocol","l":"Packets"},{"p":"network.protocol","l":"PacketVisitor"},{"p":"game","l":"Player"},{"p":"network.protocol.packets","l":"PlayerJoinPacket"},{"p":"network.protocol.packets","l":"PlayerLeavePacket"},{"p":"sudoku.solver","l":"RandomSolver"},{"p":"gui","l":"RenderableMultidoku"},{"p":"network.server","l":"Server"},{"p":"network.server","l":"ServerAcceptThread"},{"p":"network.server","l":"ServerConnexion"},{"p":"network.server","l":"ServerLogicThread"},{"p":"common","l":"Signal"},{"p":"gui.widget","l":"SmoothProgressBar"},{"p":"gui.menu","l":"SoloMenu"},{"p":"sudoku.solver","l":"Solver"},{"p":"sudoku.solver","l":"SolverStep"},{"p":"network.protocol.packets","l":"StartGamePacket"},{"p":"gui.menu","l":"StateMachine"},{"p":"sudoku.structure","l":"StateManager"},{"p":"sudoku.solver","l":"StupidSolver"},{"p":"sudoku.structure","l":"Sudoku"},{"p":"sudoku.structure","l":"SudokuFactory"},{"p":"sudoku.io","l":"SudokuPrinter"},{"p":"gui.widget","l":"SudokuRenderer"},{"p":"gui.widget","l":"SudokuSelector"},{"p":"sudoku.io","l":"SudokuSerializer"},{"p":"sudoku","l":"SudokuSerializerTest"},{"p":"gui.constants","l":"SudokuType"},{"p":"gui.menu","l":"SudokuView"},{"p":"gui.constants","l":"Symbols"},{"p":"gui.widget","l":"TimerRenderer"},{"p":"network.protocol.packets","l":"UpdatePlayerScorePacket"}];updateSearchResults();
\ No newline at end of file
| |