// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/ItemType.java
// public enum ItemType {
//     Swords,
//     Lances,
//     Axes,
//     Tomes,
//     Bows,
//     Shurikens,
//     Staves,
//     Beaststone,
//     Treasure,
//     Fists,
//     DarkBreath,
//     Breaths,
//     Stones,
//     Saws
// }
// 
// Path: randomizer/common/enums/JobState.java
// public enum JobState 
// {
// 	Base, Promoted, SpecialPromote
// }
// 
// Path: randomizer/common/enums/WeaponRank.java
// public enum WeaponRank {
//     None (0),
//     E (0x1),
//     D (0x15),
//     C (0x33),
//     B (0x60),
//     A (0xA1),
//     S (0xFB);
// 
//     private int value;
// 
//     WeaponRank(int value) {
//         this.value = value;
//     }
// 
//     public int value() {
//         return value;
//     }
// }
// 
// Path: randomizer/common/structures/Job.java
// public class Job 
// {
// 	private JobState state;
// 	private String jid;
// 	private String name;
// 	private ItemType itemType;
// 	private short tiedJob;
// 	private short id;
// 	private byte weaponRank;
// 	private byte gender;
// 	
// 	private Skill[] skills;
// 	
// 	public Job() {
// 		
// 	}
// 	
// 	@Override public String toString()
// 	{
// 		return name;
// 	}
// 
// 	public JobState getState() {
// 		return state;
// 	}
// 
// 	public void setState(JobState state) {
// 		this.state = state;
// 	}
// 
// 	public String getJid() {
// 		return jid;
// 	}
// 
// 	public void setJid(String jid) {
// 		this.jid = jid;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public byte getWeaponRank() {
// 		return weaponRank;
// 	}
// 
// 	public void setWeaponRank(byte weaponRank) {
// 		this.weaponRank = weaponRank;
// 	}
// 
// 	public Short getTiedJob() {
// 		return tiedJob;
// 	}
// 
// 	public void setTiedJob(Short tiedJob) {
// 		this.tiedJob = tiedJob;
// 	}
// 
// 	public ItemType getItemType() {
// 		return itemType;
// 	}
// 
// 	public void setItemType(ItemType weaponType) {
// 		this.itemType = weaponType;
// 	}
// 
// 	public int getGender() {
// 		return gender;
// 	}
// 
// 	public void setGender(byte gender) {
// 		this.gender = gender;
// 	}
// 
// 	public Skill[] getSkills() {
// 		return skills;
// 	}
// 
// 	public void setSkills(Skill[] skills) {
// 		this.skills = skills;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.ItemType;
import randomizer.common.enums.JobState;
import randomizer.common.enums.WeaponRank;
import randomizer.common.structures.Job;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 1 || j.getGender() == 2) && j.getState() != JobState.Promoted && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

    public List<Job> getMalePromotedClasses() {
        List<Job> current = new ArrayList<>();
        boolean[] selectedJobs = AGui.getInstance().getSelectedJobs();
        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 0 || j.getGender() == 2) && j.getState() != JobState.Base && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

    public List<Job> getFemalePromotedClasses() {
        List<Job> current = new ArrayList<>();
        boolean[] selectedJobs = AGui.getInstance().getSelectedJobs();
        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 1 || j.getGender() == 2) && j.getState() != JobState.Base && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/ItemType.java
// public enum ItemType {
//     Swords,
//     Lances,
//     Axes,
//     Tomes,
//     Bows,
//     Shurikens,
//     Staves,
//     Beaststone,
//     Treasure,
//     Fists,
//     DarkBreath,
//     Breaths,
//     Stones,
//     Saws
// }
// 
// Path: randomizer/common/enums/JobState.java
// public enum JobState 
// {
// 	Base, Promoted, SpecialPromote
// }
// 
// Path: randomizer/common/enums/WeaponRank.java
// public enum WeaponRank {
//     None (0),
//     E (0x1),
//     D (0x15),
//     C (0x33),
//     B (0x60),
//     A (0xA1),
//     S (0xFB);
// 
//     private int value;
// 
//     WeaponRank(int value) {
//         this.value = value;
//     }
// 
//     public int value() {
//         return value;
//     }
// }
// 
// Path: randomizer/common/structures/Job.java
// public class Job 
// {
// 	private JobState state;
// 	private String jid;
// 	private String name;
// 	private ItemType itemType;
// 	private short tiedJob;
// 	private short id;
// 	private byte weaponRank;
// 	private byte gender;
// 	
// 	private Skill[] skills;
// 	
// 	public Job() {
// 		
// 	}
// 	
// 	@Override public String toString()
// 	{
// 		return name;
// 	}
// 
// 	public JobState getState() {
// 		return state;
// 	}
// 
// 	public void setState(JobState state) {
// 		this.state = state;
// 	}
// 
// 	public String getJid() {
// 		return jid;
// 	}
// 
// 	public void setJid(String jid) {
// 		this.jid = jid;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public byte getWeaponRank() {
// 		return weaponRank;
// 	}
// 
// 	public void setWeaponRank(byte weaponRank) {
// 		this.weaponRank = weaponRank;
// 	}
// 
// 	public Short getTiedJob() {
// 		return tiedJob;
// 	}
// 
// 	public void setTiedJob(Short tiedJob) {
// 		this.tiedJob = tiedJob;
// 	}
// 
// 	public ItemType getItemType() {
// 		return itemType;
// 	}
// 
// 	public void setItemType(ItemType weaponType) {
// 		this.itemType = weaponType;
// 	}
// 
// 	public int getGender() {
// 		return gender;
// 	}
// 
// 	public void setGender(byte gender) {
// 		this.gender = gender;
// 	}
// 
// 	public Skill[] getSkills() {
// 		return skills;
// 	}
// 
// 	public void setSkills(Skill[] skills) {
// 		this.skills = skills;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


// Path: randomizer/awakening/singletons/AJobs.java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.ItemType;
import randomizer.common.enums.JobState;
import randomizer.common.enums.WeaponRank;
import randomizer.common.structures.Job;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 1 || j.getGender() == 2) && j.getState() != JobState.Promoted && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

    public List<Job> getMalePromotedClasses() {
        List<Job> current = new ArrayList<>();
        boolean[] selectedJobs = AGui.getInstance().getSelectedJobs();
        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 0 || j.getGender() == 2) && j.getState() != JobState.Base && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

    public List<Job> getFemalePromotedClasses() {
        List<Job> current = new ArrayList<>();
        boolean[] selectedJobs = AGui.getInstance().getSelectedJobs();
        for(int x = 0; x < jobs.size(); x++) {
            Job j = jobs.get(x);
            if((j.getGender() == 1 || j.getGender() == 2) && j.getState() != JobState.Base && selectedJobs[x])
                current.add(j);
        }
        return current;
    }

    public List<Job> getEligibleJobs(boolean male, int maxLength) {