randomList) {
this.id = id;
this.itemid = itemid;
this.reqLevel = reqLevel;
diff --git a/tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleSkillMakerFetcher.java b/src/main/java/tools/mapletools/SkillMakerFetcher.java
similarity index 51%
rename from tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleSkillMakerFetcher.java
rename to src/main/java/tools/mapletools/SkillMakerFetcher.java
index a2dc506673..4c5a5a63eb 100644
--- a/tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleSkillMakerFetcher.java
+++ b/src/main/java/tools/mapletools/SkillMakerFetcher.java
@@ -1,78 +1,55 @@
-/*
- This file is part of the HeavenMS MapleStory Server
- Copyleft (L) 2016 - 2019 RonanLana
+package tools.mapletools;
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package mapleskillmakerfetcher;
+import provider.wz.WZFiles;
+import server.MapleItemInformationProvider;
+import tools.DatabaseConnection;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.io.*;
-
/**
* @author RonanLana
- *
+ *
* The objective of this program is to uncover all maker data from the
* ItemMaker.wz.xml files and generate a SQL file with every data info
* for the Maker DB tables.
- *
*/
-public class MapleSkillMakerFetcher {
- static String host = "jdbc:mysql://localhost:3306/cosmic";
- static String driver = "com.mysql.jdbc.Driver";
- static String username = "cosmic_server";
- static String password = "snailshell";
+public class SkillMakerFetcher {
+ private static final File INPUT_FILE = new File(WZFiles.ETC.getFile(), "ItemMake.img.xml");
+ private static final File OUTPUT_FILE = ToolConstants.getOutputFile("maker-data.sql");
+ private static final int INITIAL_STRING_LENGTH = 50;
- static String fileName = "../../wz/Etc.wz/ItemMake.img.xml";
- static String newFile = "lib/MakerData.sql";
+ private static PrintWriter printWriter = null;
+ private static BufferedReader bufferedReader = null;
+ private static byte status = 0;
+ private static byte state = 0;
- static PrintWriter printWriter = null;
- static InputStreamReader fileReader = null;
- static BufferedReader bufferedReader = null;
- static byte status = 0;
- static byte state = 0;
-
- static int initialStringLength = 50;
-
// maker data fields
- static int id = -1;
- static int itemid = -1;
- static int reqLevel = -1;
- static int reqMakerLevel = -1;
- static int reqItem = -1;
- static int reqMeso = -1;
- static int reqEquip = -1;
- static int catalyst = -1;
- static int quantity = -1;
- static int tuc = -1;
-
- static int recipePos = -1;
- static int recipeProb = -1;
- static int recipeCount = -1;
- static int recipeItem = -1;
-
+ private static int id = -1;
+ private static int itemid = -1;
+ private static int reqLevel = -1;
+ private static int reqMakerLevel = -1;
+ private static int reqItem = -1;
+ private static int reqMeso = -1;
+ private static int reqEquip = -1;
+ private static int catalyst = -1;
+ private static int quantity = -1;
+ private static int tuc = -1;
+
+ private static int recipePos = -1;
+ private static int recipeProb = -1;
+ private static int recipeCount = -1;
+ private static int recipeItem = -1;
+
static List recipeList = null;
static List randomList = null;
- static List makerList = new ArrayList<>(100);
-
+ static List makerList = new ArrayList<>(100);
+
private static void resetMakerDataFields() {
reqLevel = 0;
reqMakerLevel = 0;
@@ -82,16 +59,16 @@ public class MapleSkillMakerFetcher {
catalyst = 0;
quantity = 0;
tuc = 0;
-
+
recipePos = 0;
recipeProb = 0;
recipeCount = 0;
recipeItem = 0;
-
+
recipeList = null;
randomList = null;
}
-
+
private static String getName(String token) {
int i, j;
char[] dest;
@@ -101,16 +78,16 @@ public class MapleSkillMakerFetcher {
i = token.indexOf("\"", i) + 1; //lower bound of the string
j = token.indexOf("\"", i); //upper bound
- dest = new char[initialStringLength];
+ dest = new char[INITIAL_STRING_LENGTH];
token.getChars(i, j, dest, 0);
d = new String(dest);
String s = d.trim();
s.replaceFirst("^0+(?!$)", "");
-
- return(s);
+
+ return (s);
}
-
+
private static String getValue(String token) {
int i, j;
char[] dest;
@@ -120,157 +97,125 @@ public class MapleSkillMakerFetcher {
i = token.indexOf("\"", i) + 1; //lower bound of the string
j = token.indexOf("\"", i); //upper bound
- dest = new char[initialStringLength];
+ dest = new char[INITIAL_STRING_LENGTH];
token.getChars(i, j, dest, 0);
d = new String(dest);
String s = d.trim();
s.replaceFirst("^0+(?!$)", "");
-
- return(s);
+
+ return (s);
}
private static int[] generateRecipeItem() {
- int pair[] = new int[2];
+ int[] pair = new int[2];
pair[0] = recipeItem;
pair[1] = recipeCount;
-
+
return pair;
}
-
+
private static int[] generateRandomItem() {
- int tuple[] = new int[3];
+ int[] tuple = new int[3];
tuple[0] = recipeItem;
tuple[1] = recipeCount;
tuple[2] = recipeProb;
-
+
return tuple;
}
-
+
private static void simpleToken(String token) {
- if(token.contains("/imgdir")) {
+ if (token.contains("/imgdir")) {
status -= 1;
- }
- else if(token.contains("imgdir")) {
+ } else if (token.contains("imgdir")) {
status += 1;
}
}
-
+
private static void forwardCursor(int st) {
String line = null;
try {
- while(status >= st && (line = bufferedReader.readLine()) != null) {
+ while (status >= st && (line = bufferedReader.readLine()) != null) {
simpleToken(line);
}
- }
- catch(Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
}
}
-
+
private static void translateToken(String token) {
String d;
- if(token.contains("/imgdir")) {
+ if (token.contains("/imgdir")) {
status -= 1;
-
- if(status == 2) { //close item maker data
+
+ if (status == 2) { //close item maker data
generateUpdatedItemFee(); // for equipments, this will try to update reqMeso to be conformant with the client.
- makerList.add(new MapleMakerItemEntry(id, itemid, reqLevel, reqMakerLevel, reqItem, reqMeso, reqEquip, catalyst, quantity, tuc, recipeCount, recipeItem, recipeList, randomList));
+ makerList.add(new MakerItemEntry(id, itemid, reqLevel, reqMakerLevel, reqItem, reqMeso, reqEquip, catalyst, quantity, tuc, recipeCount, recipeItem, recipeList, randomList));
resetMakerDataFields();
- } else if(status == 4) { //close recipe/random item
- if(state == 0) recipeList.add(generateRecipeItem());
- else if(state == 1) randomList.add(generateRandomItem());
+ } else if (status == 4) { //close recipe/random item
+ if (state == 0) {
+ recipeList.add(generateRecipeItem());
+ } else if (state == 1) {
+ randomList.add(generateRandomItem());
+ }
}
- }
- else if(token.contains("imgdir")) {
- if(status == 1) { //getting id
+ } else if (token.contains("imgdir")) {
+ if (status == 1) { //getting id
d = getName(token);
id = Integer.parseInt(d);
System.out.println("Parsing maker id " + id);
- }
- else if(status == 2) { //getting target item id
+ } else if (status == 2) { //getting target item id
d = getName(token);
itemid = Integer.parseInt(d);
- }
- else if(status == 3) {
+ } else if (status == 3) {
d = getName(token);
-
- switch(d) {
- case "recipe":
+
+ switch (d) {
+ case "recipe" -> {
recipeList = new LinkedList<>();
state = 0;
- break;
-
- case "randomReward":
+ }
+ case "randomReward" -> {
randomList = new LinkedList<>();
state = 1;
- break;
-
- default:
- forwardCursor(3); // unused content, read until end of block
- break;
+ }
+ default -> forwardCursor(3); // unused content, read until end of block
}
- }
- else if(status == 4) { // inside recipe/random
+ } else if (status == 4) { // inside recipe/random
d = getName(token);
recipePos = Integer.parseInt(d);
}
-
+
status += 1;
} else {
- if(status == 3) {
+ if (status == 3) {
d = getName(token);
-
- switch(d) {
- case "itemNum":
- quantity = Integer.valueOf(getValue(token));
- break;
-
- case "meso":
- reqMeso = Integer.valueOf(getValue(token));
- break;
-
- case "reqItem":
- reqItem = Integer.valueOf(getValue(token));
- break;
-
- case "reqLevel":
- reqLevel = Integer.valueOf(getValue(token));
- break;
-
- case "reqSkillLevel":
- reqMakerLevel = Integer.valueOf(getValue(token));
- break;
-
- case "tuc":
- tuc = Integer.valueOf(getValue(token));
- break;
-
- case "catalyst":
- catalyst = Integer.valueOf(getValue(token));
- break;
-
- case "reqEquip":
- reqEquip = Integer.valueOf(getValue(token));
- break;
-
- default:
+
+ switch (d) {
+ case "itemNum" -> quantity = Integer.parseInt(getValue(token));
+ case "meso" -> reqMeso = Integer.parseInt(getValue(token));
+ case "reqItem" -> reqItem = Integer.parseInt(getValue(token));
+ case "reqLevel" -> reqLevel = Integer.parseInt(getValue(token));
+ case "reqSkillLevel" -> reqMakerLevel = Integer.parseInt(getValue(token));
+ case "tuc" -> tuc = Integer.parseInt(getValue(token));
+ case "catalyst" -> catalyst = Integer.parseInt(getValue(token));
+ case "reqEquip" -> reqEquip = Integer.parseInt(getValue(token));
+ default -> {
System.out.println("Unhandled case: '" + d + "'");
state = 2;
- break;
+ }
}
- }
- else if(status == 5) { // inside recipe/random item
+ } else if (status == 5) { // inside recipe/random item
d = getName(token);
- if(d.equals("item")) {
+ if (d.equals("item")) {
recipeItem = Integer.parseInt(getValue(token));
} else {
- if(state == 0) {
+ if (state == 0) {
recipeCount = Integer.parseInt(getValue(token));
} else {
- if(d.equals("itemNum")) {
+ if (d.equals("itemNum")) {
recipeCount = Integer.parseInt(getValue(token));
} else {
recipeProb = Integer.parseInt(getValue(token));
@@ -280,17 +225,17 @@ public class MapleSkillMakerFetcher {
}
}
}
-
+
private static void generateUpdatedItemFee() {
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
float adjPrice = reqMeso;
-
- if(itemid < 2000000) {
+
+ if (itemid < 2000000) {
Map stats = ii.getEquipStats(itemid);
- if(stats != null) {
+ if (stats != null) {
int val = itemid / 100000;
-
- if(val == 13 || val == 14) { // is weapon-type
+
+ if (val == 13 || val == 14) { // is weapon-type
adjPrice /= 10;
adjPrice += reqMeso;
@@ -314,82 +259,78 @@ public class MapleSkillMakerFetcher {
reqMeso = 1000 * (int) Math.ceil(adjPrice);
}
}
-
+
private static void WriteMakerTableFile() {
printWriter.println(" # SQL File autogenerated from the MapleSkillMakerFetcher feature by Ronan Lana.");
printWriter.println(" # Generated data is conformant with the ItemMake.img.xml file used to compile this.");
printWriter.println();
-
+
StringBuilder sb_create = new StringBuilder("INSERT IGNORE INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_level`, `req_meso`, `req_item`, `req_equip`, `catalyst`, `quantity`, `tuc`) VALUES\r\n");
StringBuilder sb_recipe = new StringBuilder("INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES\r\n");
StringBuilder sb_reward = new StringBuilder("INSERT IGNORE INTO `makerrewarddata` (`itemid`, `rewardid`, `quantity`, `prob`) VALUES\r\n");
-
- for(MapleMakerItemEntry it : makerList) {
+
+ for (MakerItemEntry it : makerList) {
sb_create.append(" (" + it.id + ", " + it.itemid + ", " + it.reqLevel + ", " + it.reqMakerLevel + ", " + it.reqMeso + ", " + it.reqItem + ", " + it.reqEquip + ", " + it.catalyst + ", " + it.quantity + ", " + it.tuc + "),\r\n");
-
- if(it.recipeList != null) {
- for(int[] rit : it.recipeList) {
- sb_recipe.append(" (" + it.itemid + ", " + rit[0] + ", " + rit[1] + "),\r\n");
+
+ if (it.recipeList != null) {
+ for (int[] rit : it.recipeList) {
+ sb_recipe.append(" (" + it.itemid + ", " + rit[0] + ", " + rit[1] + "),\r\n");
}
}
-
- if(it.randomList != null) {
- for(int[] rit : it.randomList) {
+
+ if (it.randomList != null) {
+ for (int[] rit : it.randomList) {
sb_reward.append(" (" + it.itemid + ", " + rit[0] + ", " + rit[1] + ", " + rit[2] + "),\r\n");
}
}
}
-
+
sb_create.setLength(sb_create.length() - 3);
sb_create.append(";\r\n");
-
+
sb_recipe.setLength(sb_recipe.length() - 3);
sb_recipe.append(";\r\n");
-
+
sb_reward.setLength(sb_reward.length() - 3);
sb_reward.append(";");
-
+
printWriter.println(sb_create);
printWriter.println(sb_recipe);
printWriter.println(sb_reward);
}
- private static void WriteMakerTableData() {
+ private static void writeMakerTableData() {
// This will reference one line at a time
String line = null;
try {
- printWriter = new PrintWriter(newFile, "UTF-8");
- fileReader = new InputStreamReader(new FileInputStream(fileName), "UTF-8");
+ printWriter = new PrintWriter(OUTPUT_FILE, StandardCharsets.UTF_8);
+ InputStreamReader fileReader = new InputStreamReader(new FileInputStream(INPUT_FILE), StandardCharsets.UTF_8);
bufferedReader = new BufferedReader(fileReader);
resetMakerDataFields();
-
- while((line = bufferedReader.readLine()) != null) {
+
+ while ((line = bufferedReader.readLine()) != null) {
translateToken(line);
}
-
+
WriteMakerTableFile();
printWriter.close();
bufferedReader.close();
fileReader.close();
- }
-
- catch(FileNotFoundException ex) {
- System.out.println("Unable to open file '" + fileName + "'");
- }
- catch(IOException ex) {
- System.out.println("Error reading file '" + fileName + "'");
- }
-
- catch(Exception e) {
+ } catch (FileNotFoundException ex) {
+ System.out.println("Unable to open file '" + INPUT_FILE + "'");
+ } catch (IOException ex) {
+ System.out.println("Error reading file '" + INPUT_FILE + "'");
+ } catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
- WriteMakerTableData();
+ DatabaseConnection.initializeConnectionPool(); // Using MapleItemInformationProvider which loads som unrelated things from the db
+ writeMakerTableData();
}
-
}
+
diff --git a/tools/MapleSkillMakerFetcher/lib/MakerData.sql b/tools/MapleSkillMakerFetcher/lib/MakerData.sql
deleted file mode 100644
index 72806f71b6..0000000000
--- a/tools/MapleSkillMakerFetcher/lib/MakerData.sql
+++ /dev/null
@@ -1,2866 +0,0 @@
- # SQL File autogenerated from the MapleSkillMakerFetcher feature by Ronan Lana.
- # Generated data is conformant with the ItemMake.img.xml file used to compile this.
-
-INSERT IGNORE INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_level`, `req_meso`, `req_item`, `req_equip`, `catalyst`, `quantity`, `tuc`) VALUES
- (0, 4250000, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250100, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250200, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250300, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250400, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250500, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250600, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250700, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250800, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4250900, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4251000, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4251100, 45, 1, 110000, 0, 0, 0, 1, 0),
- (0, 4251300, 75, 2, 165000, 0, 0, 0, 1, 0),
- (0, 4251400, 75, 2, 165000, 0, 0, 0, 1, 0),
- (0, 4250001, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250101, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250201, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250301, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250401, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250501, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250601, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250701, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250801, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4250901, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4251001, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4251101, 45, 1, 330000, 0, 0, 0, 1, 0),
- (0, 4251301, 75, 2, 495000, 0, 0, 0, 1, 0),
- (0, 4251401, 75, 2, 495000, 0, 0, 0, 1, 0),
- (0, 4250002, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250102, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250202, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250302, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250402, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250502, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250602, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250702, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250802, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4250902, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4251002, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4251102, 45, 2, 550000, 0, 0, 0, 1, 0),
- (0, 4251302, 75, 3, 825000, 0, 0, 0, 1, 0),
- (0, 4251402, 75, 3, 825000, 0, 0, 0, 1, 0),
- (0, 4001174, 45, 1, 0, 4031966, 0, 0, 1, 0),
- (0, 4001175, 50, 1, 0, 4031967, 0, 0, 1, 0),
- (0, 4001176, 55, 1, 0, 4031968, 0, 0, 10, 0),
- (0, 4001177, 60, 1, 0, 4031969, 0, 0, 100, 0),
- (0, 4001178, 65, 1, 0, 4031970, 0, 0, 5, 0),
- (0, 4001179, 70, 1, 0, 4031971, 0, 0, 7, 0),
- (0, 4001180, 75, 2, 0, 4031972, 0, 0, 1, 0),
- (0, 4001181, 80, 2, 0, 4031973, 0, 0, 1, 0),
- (0, 4001182, 85, 2, 0, 4031974, 0, 0, 6, 0),
- (0, 4001183, 90, 2, 0, 4031975, 0, 0, 30, 0),
- (0, 4001184, 95, 2, 0, 4031976, 0, 0, 2, 0),
- (0, 4001185, 100, 2, 0, 4031977, 0, 0, 1, 0),
- (0, 4031980, 105, 2, 0, 4031979, 0, 0, 1, 0),
- (0, 4001186, 105, 3, 0, 4031978, 0, 0, 1, 0),
- (0, 4032334, 150, 1, 0, 0, 0, 0, 1, 0),
- (0, 4032312, 70, 1, 0, 0, 0, 0, 1, 0),
- (0, 2041058, 50, 1, 55000, 0, 1122013, 0, 1, 0),
- (0, 2040727, 50, 1, 55000, 0, 1122013, 0, 1, 0),
- (0, 4260007, 105, 3, 2200000, 4001126, 0, 0, 5, 0),
- (0, 4260008, 105, 3, 5500000, 4001126, 0, 0, 10, 0),
- (1, 1002028, 45, 1, 55000, 0, 0, 4130018, 1, 1),
- (1, 1002085, 45, 1, 50000, 0, 0, 4130018, 1, 1),
- (1, 1002086, 45, 1, 41000, 0, 0, 4130018, 1, 1),
- (1, 1002022, 50, 1, 60000, 0, 0, 4130018, 1, 1),
- (1, 1002100, 50, 1, 60000, 0, 0, 4130018, 1, 1),
- (1, 1002101, 50, 1, 60000, 0, 0, 4130018, 1, 1),
- (1, 1002029, 55, 1, 82000, 0, 0, 4130018, 1, 1),
- (1, 1002084, 55, 1, 82000, 0, 0, 4130018, 1, 1),
- (1, 1002030, 65, 1, 93000, 0, 0, 4130018, 1, 1),
- (1, 1002094, 65, 1, 93000, 0, 0, 4130018, 1, 1),
- (1, 1002095, 65, 1, 93000, 0, 0, 4130018, 1, 1),
- (1, 1002338, 75, 2, 146000, 0, 0, 4130018, 1, 2),
- (1, 1002339, 75, 2, 146000, 0, 0, 4130018, 1, 2),
- (1, 1002340, 75, 2, 146000, 0, 0, 4130018, 1, 2),
- (1, 1002528, 85, 2, 161000, 0, 0, 4130018, 1, 2),
- (1, 1002529, 85, 2, 161000, 0, 0, 4130018, 1, 2),
- (1, 1002530, 85, 2, 161000, 0, 0, 4130018, 1, 2),
- (1, 1002531, 85, 2, 161000, 0, 0, 4130018, 1, 2),
- (1, 1002532, 85, 2, 161000, 0, 0, 4130018, 1, 2),
- (1, 1002377, 95, 2, 184000, 0, 0, 4130018, 1, 2),
- (1, 1002378, 95, 2, 184000, 0, 0, 4130018, 1, 2),
- (1, 1002379, 95, 2, 184000, 0, 0, 4130018, 1, 2),
- (1, 1002551, 105, 3, 308000, 0, 0, 4130018, 1, 3),
- (1, 1002790, 115, 3, 352000, 0, 0, 4130018, 1, 3),
- (1, 1002776, 115, 3, 352000, 0, 0, 4130018, 1, 3),
- (1, 1040087, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1040088, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1040089, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1041087, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1041088, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1041089, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (1, 1040090, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1040091, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1040092, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1040093, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1041091, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1041092, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1041093, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (1, 1040102, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1040103, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1040104, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1041097, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1041098, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1041099, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (1, 1040111, 85, 2, 123000, 0, 0, 4130019, 1, 2),
- (1, 1040112, 85, 2, 123000, 0, 0, 4130019, 1, 2),
- (1, 1040113, 85, 2, 123000, 0, 0, 4130019, 1, 2),
- (1, 1041119, 85, 2, 146000, 0, 0, 4130019, 1, 2),
- (1, 1041120, 85, 2, 146000, 0, 0, 4130019, 1, 2),
- (1, 1041121, 85, 2, 146000, 0, 0, 4130019, 1, 2),
- (1, 1040120, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1040121, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1040122, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1041122, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1041123, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1041124, 95, 2, 153000, 0, 0, 4130019, 1, 2),
- (1, 1060076, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1060077, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1060078, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1061086, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1061087, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1061088, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (1, 1060079, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1060080, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1060081, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1060082, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1061090, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1061091, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1061092, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (1, 1060090, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1060091, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1060092, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1061096, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1061097, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1061098, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (1, 1060100, 85, 2, 107000, 0, 0, 4130020, 1, 2),
- (1, 1060101, 85, 2, 107000, 0, 0, 4130020, 1, 2),
- (1, 1060102, 85, 2, 107000, 0, 0, 4130020, 1, 2),
- (1, 1061118, 85, 2, 130000, 0, 0, 4130020, 1, 2),
- (1, 1061119, 85, 2, 130000, 0, 0, 4130020, 1, 2),
- (1, 1061120, 85, 2, 130000, 0, 0, 4130020, 1, 2),
- (1, 1060109, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1060110, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1060111, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1061121, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1061122, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1061123, 95, 2, 138000, 0, 0, 4130020, 1, 2),
- (1, 1050080, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1050081, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1050082, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1050083, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1051077, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1051078, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1051079, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1051080, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (1, 1052075, 105, 3, 352000, 0, 0, 4130021, 1, 3),
- (1, 1052160, 115, 3, 418000, 0, 0, 4130021, 1, 3),
- (1, 1052155, 115, 3, 418000, 0, 0, 4130021, 1, 3),
- (1, 1072132, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (1, 1072133, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (1, 1072134, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (1, 1072135, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (1, 1072147, 55, 1, 39000, 0, 0, 4130001, 1, 1),
- (1, 1072148, 55, 1, 39000, 0, 0, 4130001, 1, 1),
- (1, 1072149, 55, 1, 39000, 0, 0, 4130001, 1, 1),
- (1, 1072154, 65, 1, 47000, 0, 0, 4130001, 1, 1),
- (1, 1072155, 65, 1, 47000, 0, 0, 4130001, 1, 1),
- (1, 1072156, 65, 1, 47000, 0, 0, 4130001, 1, 1),
- (1, 1072210, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (1, 1072211, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (1, 1072212, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (1, 1072196, 85, 2, 115000, 0, 0, 4130001, 1, 2),
- (1, 1072197, 85, 2, 115000, 0, 0, 4130001, 1, 2),
- (1, 1072198, 85, 2, 115000, 0, 0, 4130001, 1, 2),
- (1, 1072220, 95, 2, 138000, 0, 0, 4130001, 1, 2),
- (1, 1072221, 95, 2, 138000, 0, 0, 4130001, 1, 2),
- (1, 1072222, 95, 2, 138000, 0, 0, 4130001, 1, 2),
- (1, 1072273, 105, 3, 231000, 0, 0, 4130001, 1, 3),
- (1, 1072361, 115, 3, 264000, 0, 0, 4130001, 1, 3),
- (1, 1072355, 115, 3, 264000, 0, 0, 4130001, 1, 3),
- (1, 1082009, 45, 1, 50000, 0, 0, 4130000, 1, 1),
- (1, 1082010, 45, 1, 55000, 0, 0, 4130000, 1, 1),
- (1, 1082011, 45, 1, 60000, 0, 0, 4130000, 1, 1),
- (1, 1082059, 55, 1, 66000, 0, 0, 4130000, 1, 1),
- (1, 1082060, 55, 1, 71000, 0, 0, 4130000, 1, 1),
- (1, 1082061, 55, 1, 77000, 0, 0, 4130000, 1, 1),
- (1, 1082103, 65, 1, 82000, 0, 0, 4130000, 1, 1),
- (1, 1082104, 65, 1, 88000, 0, 0, 4130000, 1, 1),
- (1, 1082105, 65, 1, 93000, 0, 0, 4130000, 1, 1),
- (1, 1082114, 75, 2, 161000, 0, 0, 4130000, 1, 2),
- (1, 1082115, 75, 2, 165000, 0, 0, 4130000, 1, 2),
- (1, 1082116, 75, 2, 168000, 0, 0, 4130000, 1, 2),
- (1, 1082117, 75, 2, 168000, 0, 0, 4130000, 1, 2),
- (1, 1082128, 85, 2, 184000, 0, 0, 4130000, 1, 2),
- (1, 1082129, 85, 2, 188000, 0, 0, 4130000, 1, 2),
- (1, 1082130, 85, 2, 191000, 0, 0, 4130000, 1, 2),
- (1, 1082139, 95, 2, 207000, 0, 0, 4130000, 1, 2),
- (1, 1082140, 95, 2, 210000, 0, 0, 4130000, 1, 2),
- (1, 1082141, 95, 2, 214000, 0, 0, 4130000, 1, 2),
- (1, 1082168, 105, 3, 330000, 0, 0, 4130000, 1, 3),
- (1, 1082239, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (1, 1082234, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (1, 1092004, 45, 1, 82000, 0, 0, 4130022, 1, 1),
- (1, 1092009, 55, 1, 99000, 0, 0, 4130022, 1, 1),
- (1, 1092010, 55, 1, 104000, 0, 0, 4130022, 1, 1),
- (1, 1092011, 55, 1, 104000, 0, 0, 4130022, 1, 1),
- (1, 1092015, 65, 1, 110000, 0, 0, 4130022, 1, 1),
- (1, 1092016, 65, 1, 115000, 0, 0, 4130022, 1, 1),
- (1, 1092017, 65, 1, 115000, 0, 0, 4130022, 1, 1),
- (1, 1092023, 75, 2, 168000, 0, 0, 4130022, 1, 2),
- (1, 1092024, 75, 2, 176000, 0, 0, 4130022, 1, 2),
- (1, 1092025, 75, 2, 176000, 0, 0, 4130022, 1, 2),
- (1, 1092026, 85, 2, 184000, 0, 0, 4130022, 1, 2),
- (1, 1092027, 85, 2, 191000, 0, 0, 4130022, 1, 2),
- (1, 1092028, 85, 2, 191000, 0, 0, 4130022, 1, 2),
- (1, 1092036, 95, 2, 199000, 0, 0, 4130022, 1, 2),
- (1, 1092037, 95, 2, 207000, 0, 0, 4130022, 1, 2),
- (1, 1092038, 95, 2, 214000, 0, 0, 4130022, 1, 2),
- (1, 1092060, 105, 3, 231000, 0, 0, 4130022, 1, 3),
- (1, 1092058, 115, 3, 385000, 0, 0, 4130022, 1, 3),
- (1, 1302010, 45, 1, 66000, 0, 0, 4130002, 1, 1),
- (1, 1312008, 45, 1, 77000, 0, 0, 4130003, 1, 1),
- (1, 1322017, 45, 1, 77000, 0, 0, 4130004, 1, 1),
- (1, 1402003, 45, 1, 110000, 0, 0, 4130005, 1, 1),
- (1, 1412003, 45, 1, 77000, 0, 0, 4130006, 1, 1),
- (1, 1422005, 45, 1, 82000, 0, 0, 4130007, 1, 1),
- (1, 1432004, 45, 1, 82000, 0, 0, 4130008, 1, 1),
- (1, 1442005, 45, 1, 82000, 0, 0, 4130009, 1, 1),
- (1, 1302011, 55, 1, 82000, 0, 0, 4130002, 1, 1),
- (1, 1312009, 55, 1, 104000, 0, 0, 4130003, 1, 1),
- (1, 1322018, 55, 1, 104000, 0, 0, 4130004, 1, 1),
- (1, 1402011, 55, 1, 126000, 0, 0, 4130005, 1, 1),
- (1, 1412007, 55, 1, 104000, 0, 0, 4130006, 1, 1),
- (1, 1422009, 55, 1, 104000, 0, 0, 4130007, 1, 1),
- (1, 1432006, 55, 1, 104000, 0, 0, 4130008, 1, 1),
- (1, 1442010, 55, 1, 137000, 0, 0, 4130009, 1, 1),
- (1, 1302012, 65, 1, 137000, 0, 0, 4130002, 1, 1),
- (1, 1312010, 65, 1, 165000, 0, 0, 4130003, 1, 1),
- (1, 1322019, 65, 1, 137000, 0, 0, 4130004, 1, 1),
- (1, 1402012, 65, 1, 143000, 0, 0, 4130005, 1, 1),
- (1, 1412008, 65, 1, 137000, 0, 0, 4130006, 1, 1),
- (1, 1422010, 65, 1, 137000, 0, 0, 4130007, 1, 1),
- (1, 1432007, 65, 1, 137000, 0, 0, 4130008, 1, 1),
- (1, 1442008, 65, 1, 165000, 0, 0, 4130009, 1, 1),
- (1, 1322020, 70, 1, 165000, 0, 0, 4130004, 1, 1),
- (1, 1302018, 75, 2, 231000, 0, 0, 4130002, 1, 2),
- (1, 1312011, 75, 2, 269000, 0, 0, 4130003, 1, 2),
- (1, 1322028, 75, 2, 269000, 0, 0, 4130004, 1, 2),
- (1, 1402004, 75, 2, 231000, 0, 0, 4130005, 1, 2),
- (1, 1402015, 75, 2, 231000, 0, 0, 4130005, 1, 2),
- (1, 1412009, 75, 2, 238000, 0, 0, 4130006, 1, 2),
- (1, 1422012, 75, 2, 238000, 0, 0, 4130007, 1, 2),
- (1, 1432010, 75, 2, 238000, 0, 0, 4130008, 1, 2),
- (1, 1442019, 75, 2, 269000, 0, 0, 4130009, 1, 2),
- (1, 1302023, 85, 2, 269000, 0, 0, 4130002, 1, 2),
- (1, 1312015, 85, 2, 308000, 0, 0, 4130003, 1, 2),
- (1, 1322029, 85, 2, 308000, 0, 0, 4130004, 1, 2),
- (1, 1402005, 85, 2, 308000, 0, 0, 4130005, 1, 2),
- (1, 1402016, 85, 2, 308000, 0, 0, 4130005, 1, 2),
- (1, 1412010, 85, 2, 284000, 0, 0, 4130006, 1, 2),
- (1, 1422013, 85, 2, 284000, 0, 0, 4130007, 1, 2),
- (1, 1432011, 85, 2, 284000, 0, 0, 4130008, 1, 2),
- (1, 1442020, 85, 2, 346000, 0, 0, 4130009, 1, 2),
- (1, 1302056, 95, 2, 369000, 0, 0, 4130002, 1, 2),
- (1, 1312030, 95, 2, 361000, 0, 0, 4130003, 1, 2),
- (1, 1322045, 95, 2, 361000, 0, 0, 4130004, 1, 2),
- (1, 1402035, 95, 2, 361000, 0, 0, 4130005, 1, 2),
- (1, 1412021, 95, 2, 377000, 0, 0, 4130006, 1, 2),
- (1, 1422027, 95, 2, 346000, 0, 0, 4130007, 1, 2),
- (1, 1432030, 95, 2, 377000, 0, 0, 4130008, 1, 2),
- (1, 1442044, 95, 2, 361000, 0, 0, 4130009, 1, 2),
- (1, 1302059, 105, 3, 605000, 0, 0, 4130002, 1, 3),
- (1, 1312031, 105, 3, 583000, 0, 0, 4130003, 1, 3),
- (1, 1322052, 105, 3, 528000, 0, 0, 4130004, 1, 3),
- (1, 1402036, 105, 3, 605000, 0, 0, 4130005, 1, 3),
- (1, 1412026, 105, 3, 572000, 0, 0, 4130006, 1, 3),
- (1, 1422028, 105, 3, 561000, 0, 0, 4130007, 1, 3),
- (1, 1432038, 105, 3, 583000, 0, 0, 4130008, 1, 3),
- (1, 1442045, 105, 3, 627000, 0, 0, 4130009, 1, 3),
- (1, 1302086, 115, 3, 748000, 0, 0, 4130002, 1, 3),
- (1, 1312038, 115, 3, 638000, 0, 0, 4130003, 1, 3),
- (1, 1322061, 115, 3, 539000, 0, 0, 4130004, 1, 3),
- (1, 1402047, 115, 3, 715000, 0, 0, 4130005, 1, 3),
- (1, 1412034, 115, 3, 715000, 0, 0, 4130006, 1, 3),
- (1, 1422038, 115, 3, 616000, 0, 0, 4130007, 1, 3),
- (1, 1432049, 115, 3, 627000, 0, 0, 4130008, 1, 3),
- (1, 1442067, 115, 3, 682000, 0, 0, 4130009, 1, 3),
- (1, 1302081, 115, 3, 748000, 0, 0, 4130002, 1, 3),
- (1, 1312037, 115, 3, 638000, 0, 0, 4130003, 1, 3),
- (1, 1322060, 115, 3, 539000, 0, 0, 4130004, 1, 3),
- (1, 1402046, 115, 3, 715000, 0, 0, 4130005, 1, 3),
- (1, 1412033, 115, 3, 715000, 0, 0, 4130006, 1, 3),
- (1, 1422037, 115, 3, 616000, 0, 0, 4130007, 1, 3),
- (1, 1432047, 115, 3, 627000, 0, 0, 4130008, 1, 3),
- (1, 1442063, 115, 3, 682000, 0, 0, 4130009, 1, 3),
- (2, 1002215, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (2, 1002216, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (2, 1002217, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (2, 1002218, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (2, 1002242, 55, 1, 28000, 0, 0, 4130018, 1, 1),
- (2, 1002243, 55, 1, 28000, 0, 0, 4130018, 1, 1),
- (2, 1002244, 55, 1, 28000, 0, 0, 4130018, 1, 1),
- (2, 1002245, 55, 1, 28000, 0, 0, 4130018, 1, 1),
- (2, 1002246, 55, 1, 28000, 0, 0, 4130018, 1, 1),
- (2, 1002252, 65, 1, 44000, 0, 0, 4130018, 1, 1),
- (2, 1002253, 65, 1, 44000, 0, 0, 4130018, 1, 1),
- (2, 1002254, 65, 1, 44000, 0, 0, 4130018, 1, 1),
- (2, 1002271, 75, 2, 73000, 0, 0, 4130018, 1, 2),
- (2, 1002272, 75, 2, 73000, 0, 0, 4130018, 1, 2),
- (2, 1002273, 75, 2, 73000, 0, 0, 4130018, 1, 2),
- (2, 1002274, 75, 2, 73000, 0, 0, 4130018, 1, 2),
- (2, 1002363, 85, 2, 84000, 0, 0, 4130018, 1, 2),
- (2, 1002364, 85, 2, 84000, 0, 0, 4130018, 1, 2),
- (2, 1002365, 85, 2, 84000, 0, 0, 4130018, 1, 2),
- (2, 1002366, 85, 2, 84000, 0, 0, 4130018, 1, 2),
- (2, 1002398, 95, 2, 96000, 0, 0, 4130018, 1, 2),
- (2, 1002399, 95, 2, 96000, 0, 0, 4130018, 1, 2),
- (2, 1002400, 95, 2, 96000, 0, 0, 4130018, 1, 2),
- (2, 1002401, 95, 2, 96000, 0, 0, 4130018, 1, 2),
- (2, 1002773, 105, 3, 165000, 0, 0, 4130018, 1, 3),
- (2, 1002791, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (2, 1002777, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (2, 1050045, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1050046, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1050047, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1050048, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1050049, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1051030, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1051031, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1051032, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1051033, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1051034, 43, 1, 50000, 0, 0, 4130021, 1, 1),
- (2, 1050053, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1050054, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1050055, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1050056, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1051044, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1051045, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1051046, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1051047, 53, 1, 55000, 0, 0, 4130021, 1, 1),
- (2, 1050067, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1050068, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1050069, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1050070, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1051052, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1051053, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1051054, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1051055, 63, 1, 66000, 0, 0, 4130021, 1, 1),
- (2, 1050072, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1050073, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1050074, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1051056, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1051057, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1051058, 73, 2, 123000, 0, 0, 4130021, 1, 2),
- (2, 1050092, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1050093, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1050094, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1050095, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1051094, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1051095, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1051096, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1051097, 83, 2, 153000, 0, 0, 4130021, 1, 2),
- (2, 1050102, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1050103, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1050104, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1050105, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1051101, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1051102, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1051103, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1051104, 93, 2, 184000, 0, 0, 4130021, 1, 2),
- (2, 1052076, 103, 3, 319000, 0, 0, 4130021, 1, 3),
- (2, 1052161, 115, 3, 374000, 0, 0, 4130021, 1, 3),
- (2, 1052156, 115, 3, 374000, 0, 0, 4130021, 1, 3),
- (2, 1072140, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (2, 1072141, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (2, 1072142, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (2, 1072143, 45, 1, 30000, 0, 0, 4130001, 1, 1),
- (2, 1072136, 55, 1, 33000, 0, 0, 4130001, 1, 1),
- (2, 1072137, 55, 1, 33000, 0, 0, 4130001, 1, 1),
- (2, 1072138, 55, 1, 33000, 0, 0, 4130001, 1, 1),
- (2, 1072139, 55, 1, 33000, 0, 0, 4130001, 1, 1),
- (2, 1072157, 65, 1, 44000, 0, 0, 4130001, 1, 1),
- (2, 1072158, 65, 1, 44000, 0, 0, 4130001, 1, 1),
- (2, 1072159, 65, 1, 44000, 0, 0, 4130001, 1, 1),
- (2, 1072160, 65, 1, 44000, 0, 0, 4130001, 1, 1),
- (2, 1072177, 75, 2, 77000, 0, 0, 4130001, 1, 2),
- (2, 1072178, 75, 2, 77000, 0, 0, 4130001, 1, 2),
- (2, 1072179, 75, 2, 77000, 0, 0, 4130001, 1, 2),
- (2, 1072206, 85, 2, 92000, 0, 0, 4130001, 1, 2),
- (2, 1072207, 85, 2, 92000, 0, 0, 4130001, 1, 2),
- (2, 1072208, 85, 2, 92000, 0, 0, 4130001, 1, 2),
- (2, 1072209, 85, 2, 92000, 0, 0, 4130001, 1, 2),
- (2, 1072223, 95, 2, 107000, 0, 0, 4130001, 1, 2),
- (2, 1072224, 95, 2, 107000, 0, 0, 4130001, 1, 2),
- (2, 1072225, 95, 2, 107000, 0, 0, 4130001, 1, 2),
- (2, 1072226, 95, 2, 107000, 0, 0, 4130001, 1, 2),
- (2, 1072268, 105, 3, 198000, 0, 0, 4130001, 1, 3),
- (2, 1072362, 115, 3, 242000, 0, 0, 4130001, 1, 3),
- (2, 1072356, 115, 3, 242000, 0, 0, 4130001, 1, 3),
- (2, 1082080, 45, 1, 55000, 0, 0, 4130000, 1, 1),
- (2, 1082081, 45, 1, 44000, 0, 0, 4130000, 1, 1),
- (2, 1082082, 45, 1, 50000, 0, 0, 4130000, 1, 1),
- (2, 1082086, 55, 1, 58000, 0, 0, 4130000, 1, 1),
- (2, 1082087, 55, 1, 63000, 0, 0, 4130000, 1, 1),
- (2, 1082088, 55, 1, 69000, 0, 0, 4130000, 1, 1),
- (2, 1082098, 65, 1, 77000, 0, 0, 4130000, 1, 1),
- (2, 1082099, 65, 1, 80000, 0, 0, 4130000, 1, 1),
- (2, 1082100, 65, 1, 82000, 0, 0, 4130000, 1, 1),
- (2, 1082121, 75, 2, 153000, 0, 0, 4130000, 1, 2),
- (2, 1082122, 75, 2, 157000, 0, 0, 4130000, 1, 2),
- (2, 1082123, 75, 2, 161000, 0, 0, 4130000, 1, 2),
- (2, 1082131, 85, 2, 176000, 0, 0, 4130000, 1, 2),
- (2, 1082132, 85, 2, 180000, 0, 0, 4130000, 1, 2),
- (2, 1082133, 85, 2, 180000, 0, 0, 4130000, 1, 2),
- (2, 1082134, 85, 2, 184000, 0, 0, 4130000, 1, 2),
- (2, 1082151, 95, 2, 199000, 0, 0, 4130000, 1, 2),
- (2, 1082152, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (2, 1082153, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (2, 1082154, 95, 2, 207000, 0, 0, 4130000, 1, 2),
- (2, 1082164, 105, 3, 330000, 0, 0, 4130000, 1, 3),
- (2, 1082240, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (2, 1082235, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (2, 1092057, 115, 3, 385000, 0, 0, 4130022, 1, 3),
- (2, 1372007, 43, 1, 110000, 0, 0, 4130010, 1, 1),
- (2, 1382006, 50, 1, 82000, 0, 0, 4130011, 1, 1),
- (2, 1372014, 53, 1, 126000, 0, 0, 4130010, 1, 1),
- (2, 1382007, 60, 1, 110000, 0, 0, 4130011, 1, 1),
- (2, 1372015, 63, 1, 143000, 0, 0, 4130010, 1, 1),
- (2, 1382010, 70, 1, 137000, 0, 0, 4130011, 1, 1),
- (2, 1372016, 73, 2, 223000, 0, 0, 4130010, 1, 2),
- (2, 1382008, 80, 2, 238000, 0, 0, 4130011, 1, 2),
- (2, 1372009, 83, 2, 250000, 0, 0, 4130010, 1, 2),
- (2, 1382035, 90, 2, 292000, 0, 0, 4130011, 1, 2),
- (2, 1372010, 93, 2, 277000, 0, 0, 4130010, 1, 2),
- (2, 1372032, 103, 3, 506000, 0, 0, 4130010, 1, 3),
- (2, 1382036, 105, 3, 517000, 0, 0, 4130011, 1, 3),
- (2, 1372045, 115, 3, 561000, 0, 0, 4130010, 1, 3),
- (2, 1382059, 115, 3, 572000, 0, 0, 4130011, 1, 3),
- (2, 1372044, 115, 3, 561000, 0, 0, 4130010, 1, 3),
- (2, 1382057, 115, 3, 572000, 0, 0, 4130011, 1, 3),
- (4, 1002211, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (4, 1002212, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (4, 1002213, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (4, 1002214, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (4, 1002267, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (4, 1002268, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (4, 1002269, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (4, 1002270, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (4, 1002286, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (4, 1002287, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (4, 1002288, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (4, 1002289, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (4, 1002275, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (4, 1002276, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (4, 1002277, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (4, 1002278, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (4, 1002402, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (4, 1002403, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (4, 1002404, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (4, 1002405, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (4, 1002406, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (4, 1002407, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (4, 1002408, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (4, 1002547, 105, 3, 165000, 0, 0, 4130018, 1, 3),
- (4, 1002792, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (4, 1002778, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (4, 1050051, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (4, 1050052, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (4, 1051037, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (4, 1051038, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (4, 1051039, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (4, 1050058, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1050059, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1050060, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1051041, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1051042, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1051043, 55, 1, 58000, 0, 0, 4130021, 1, 1),
- (4, 1050061, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1050062, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1050063, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1050064, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1051062, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1051063, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1051064, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1051065, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (4, 1050075, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1050076, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1050077, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1050078, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1051066, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1051067, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1051068, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1051069, 75, 2, 107000, 0, 0, 4130021, 1, 2),
- (4, 1050088, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1050089, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1050090, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1050091, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1051082, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1051083, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1051084, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1051085, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (4, 1050106, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1050107, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1050108, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1051105, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1051106, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1051107, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (4, 1052071, 105, 3, 330000, 0, 0, 4130021, 1, 3),
- (4, 1052162, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (4, 1052157, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (4, 1072122, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (4, 1072123, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (4, 1072124, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (4, 1072125, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (4, 1072144, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (4, 1072145, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (4, 1072146, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (4, 1072164, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (4, 1072165, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (4, 1072166, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (4, 1072167, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (4, 1072182, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (4, 1072183, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (4, 1072184, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (4, 1072185, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (4, 1072203, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (4, 1072204, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (4, 1072205, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (4, 1072227, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (4, 1072228, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (4, 1072229, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (4, 1072269, 105, 3, 198000, 0, 0, 4130001, 1, 3),
- (4, 1072363, 115, 3, 220000, 0, 0, 4130001, 1, 3),
- (4, 1072357, 115, 3, 220000, 0, 0, 4130001, 1, 3),
- (4, 1082083, 45, 1, 58000, 0, 0, 4130000, 1, 1),
- (4, 1082084, 45, 1, 47000, 0, 0, 4130000, 1, 1),
- (4, 1082085, 45, 1, 52000, 0, 0, 4130000, 1, 1),
- (4, 1082089, 55, 1, 60000, 0, 0, 4130000, 1, 1),
- (4, 1082090, 55, 1, 66000, 0, 0, 4130000, 1, 1),
- (4, 1082091, 55, 1, 71000, 0, 0, 4130000, 1, 1),
- (4, 1082106, 65, 1, 77000, 0, 0, 4130000, 1, 1),
- (4, 1082107, 65, 1, 82000, 0, 0, 4130000, 1, 1),
- (4, 1082108, 65, 1, 88000, 0, 0, 4130000, 1, 1),
- (4, 1082109, 75, 2, 153000, 0, 0, 4130000, 1, 2),
- (4, 1082110, 75, 2, 157000, 0, 0, 4130000, 1, 2),
- (4, 1082111, 75, 2, 157000, 0, 0, 4130000, 1, 2),
- (4, 1082112, 75, 2, 161000, 0, 0, 4130000, 1, 2),
- (4, 1082125, 85, 2, 176000, 0, 0, 4130000, 1, 2),
- (4, 1082126, 85, 2, 180000, 0, 0, 4130000, 1, 2),
- (4, 1082127, 85, 2, 184000, 0, 0, 4130000, 1, 2),
- (4, 1082158, 95, 2, 199000, 0, 0, 4130000, 1, 2),
- (4, 1082159, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (4, 1082160, 95, 2, 207000, 0, 0, 4130000, 1, 2),
- (4, 1082163, 105, 3, 330000, 0, 0, 4130000, 1, 3),
- (4, 1082241, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (4, 1082236, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (4, 1452008, 45, 1, 110000, 0, 0, 4130012, 1, 1),
- (4, 1462007, 45, 1, 93000, 0, 0, 4130013, 1, 1),
- (4, 1452004, 55, 1, 137000, 0, 0, 4130012, 1, 1),
- (4, 1462008, 55, 1, 132000, 0, 0, 4130013, 1, 1),
- (4, 1452009, 65, 1, 165000, 0, 0, 4130012, 1, 1),
- (4, 1452010, 65, 1, 165000, 0, 0, 4130012, 1, 1),
- (4, 1452011, 65, 1, 165000, 0, 0, 4130012, 1, 1),
- (4, 1462009, 65, 1, 165000, 0, 0, 4130013, 1, 1),
- (4, 1452012, 75, 2, 269000, 0, 0, 4130012, 1, 2),
- (4, 1452013, 75, 2, 269000, 0, 0, 4130012, 1, 2),
- (4, 1452014, 75, 2, 269000, 0, 0, 4130012, 1, 2),
- (4, 1452015, 75, 2, 269000, 0, 0, 4130012, 1, 2),
- (4, 1462010, 75, 2, 269000, 0, 0, 4130013, 1, 2),
- (4, 1462011, 75, 2, 269000, 0, 0, 4130013, 1, 2),
- (4, 1462012, 75, 2, 269000, 0, 0, 4130013, 1, 2),
- (4, 1462013, 75, 2, 269000, 0, 0, 4130013, 1, 2),
- (4, 1452017, 85, 2, 308000, 0, 0, 4130012, 1, 2),
- (4, 1462018, 85, 2, 308000, 0, 0, 4130013, 1, 2),
- (4, 1452019, 95, 2, 346000, 0, 0, 4130012, 1, 2),
- (4, 1452020, 95, 2, 346000, 0, 0, 4130012, 1, 2),
- (4, 1452021, 95, 2, 346000, 0, 0, 4130012, 1, 2),
- (4, 1462015, 95, 2, 346000, 0, 0, 4130013, 1, 2),
- (4, 1462016, 95, 2, 346000, 0, 0, 4130013, 1, 2),
- (4, 1462017, 95, 2, 346000, 0, 0, 4130013, 1, 2),
- (4, 1452044, 105, 3, 550000, 0, 0, 4130012, 1, 3),
- (4, 1462039, 105, 3, 550000, 0, 0, 4130013, 1, 3),
- (4, 1452059, 115, 3, 605000, 0, 0, 4130012, 1, 3),
- (4, 1462051, 115, 3, 605000, 0, 0, 4130013, 1, 3),
- (4, 1452057, 115, 3, 605000, 0, 0, 4130012, 1, 3),
- (4, 1462050, 115, 3, 605000, 0, 0, 4130013, 1, 3),
- (8, 1002207, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (8, 1002208, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (8, 1002209, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (8, 1002210, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (8, 1002247, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (8, 1002248, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (8, 1002249, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (8, 1002281, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (8, 1002282, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (8, 1002283, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (8, 1002284, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (8, 1002285, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (8, 1002327, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (8, 1002328, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (8, 1002329, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (8, 1002330, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (8, 1002323, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (8, 1002324, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (8, 1002325, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (8, 1002326, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (8, 1002380, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (8, 1002381, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (8, 1002382, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (8, 1002383, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (8, 1002550, 105, 3, 165000, 0, 0, 4130018, 1, 3),
- (8, 1002793, 115, 3, 209000, 0, 0, 4130018, 1, 3),
- (8, 1002779, 115, 3, 209000, 0, 0, 4130018, 1, 3),
- (8, 1040094, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1040095, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1040096, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1040097, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1041077, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1041078, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1041079, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1041080, 45, 1, 41000, 0, 0, 4130019, 1, 1),
- (8, 1040098, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1040099, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1040100, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1041094, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1041095, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1041096, 55, 1, 50000, 0, 0, 4130019, 1, 1),
- (8, 1040105, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1040106, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1040107, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1041100, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1041101, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1041102, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1041103, 65, 1, 55000, 0, 0, 4130019, 1, 1),
- (8, 1040108, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1040109, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1040110, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1041105, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1041106, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1041107, 75, 2, 107000, 0, 0, 4130019, 1, 2),
- (8, 1040115, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1040116, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1040117, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1040118, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1041115, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1041116, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1041117, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1041118, 85, 2, 138000, 0, 0, 4130019, 1, 2),
- (8, 1060083, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1060084, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1060085, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1060086, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1061076, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1061077, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1061078, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1061079, 45, 1, 33000, 0, 0, 4130020, 1, 1),
- (8, 1060087, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1060088, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1060089, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1061093, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1061094, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1061095, 55, 1, 41000, 0, 0, 4130020, 1, 1),
- (8, 1060093, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1060094, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1060095, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1061099, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1061100, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1061101, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1061102, 65, 1, 50000, 0, 0, 4130020, 1, 1),
- (8, 1060097, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1060098, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1060099, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1061104, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1061105, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1061106, 75, 2, 92000, 0, 0, 4130020, 1, 2),
- (8, 1060104, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1060105, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1060106, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1060107, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1061114, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1061115, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1061116, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1061117, 85, 2, 123000, 0, 0, 4130020, 1, 2),
- (8, 1050096, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1050097, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1050098, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1050099, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1051090, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1051091, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1051092, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1051093, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (8, 1052072, 105, 3, 330000, 0, 0, 4130021, 1, 3),
- (8, 1052163, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (8, 1052158, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (8, 1072128, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (8, 1072129, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (8, 1072130, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (8, 1072131, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (8, 1072150, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (8, 1072151, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (8, 1072152, 55, 1, 39000, 0, 0, 4130001, 1, 1),
- (8, 1072161, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (8, 1072162, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (8, 1072163, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (8, 1072172, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (8, 1072173, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (8, 1072174, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (8, 1072192, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (8, 1072193, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (8, 1072194, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (8, 1072195, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (8, 1072213, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (8, 1072214, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (8, 1072215, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (8, 1072216, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (8, 1072272, 105, 3, 215000, 0, 0, 4130001, 1, 3),
- (8, 1072364, 115, 3, 248000, 0, 0, 4130001, 1, 3),
- (8, 1072358, 115, 3, 248000, 0, 0, 4130001, 1, 3),
- (8, 1082065, 45, 1, 47000, 0, 0, 4130000, 1, 1),
- (8, 1082066, 45, 1, 52000, 0, 0, 4130000, 1, 1),
- (8, 1082067, 45, 1, 50000, 0, 0, 4130000, 1, 1),
- (8, 1082092, 55, 1, 60000, 0, 0, 4130000, 1, 1),
- (8, 1082093, 55, 1, 66000, 0, 0, 4130000, 1, 1),
- (8, 1082094, 55, 1, 71000, 0, 0, 4130000, 1, 1),
- (8, 1082095, 65, 1, 82000, 0, 0, 4130000, 1, 1),
- (8, 1082096, 65, 1, 88000, 0, 0, 4130000, 1, 1),
- (8, 1082097, 65, 1, 93000, 0, 0, 4130000, 1, 1),
- (8, 1082118, 75, 2, 153000, 0, 0, 4130000, 1, 2),
- (8, 1082119, 75, 2, 157000, 0, 0, 4130000, 1, 2),
- (8, 1082120, 75, 2, 161000, 0, 0, 4130000, 1, 2),
- (8, 1082142, 85, 2, 165000, 0, 0, 4130000, 1, 2),
- (8, 1082143, 85, 2, 165000, 0, 0, 4130000, 1, 2),
- (8, 1082144, 85, 2, 165000, 0, 0, 4130000, 1, 2),
- (8, 1082135, 95, 2, 199000, 0, 0, 4130000, 1, 2),
- (8, 1082136, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (8, 1082137, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (8, 1082138, 95, 2, 207000, 0, 0, 4130000, 1, 2),
- (8, 1082167, 105, 3, 330000, 0, 0, 4130000, 1, 3),
- (8, 1082242, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (8, 1082237, 115, 3, 363000, 0, 0, 4130000, 1, 3),
- (8, 1092059, 115, 3, 385000, 0, 0, 4130022, 1, 3),
- (8, 1332003, 45, 1, 121000, 0, 0, 4130014, 1, 1),
- (8, 1472018, 45, 1, 55000, 0, 0, 4130015, 1, 1),
- (8, 1472019, 45, 1, 57000, 0, 0, 4130015, 1, 1),
- (8, 1472020, 45, 1, 57000, 0, 0, 4130015, 1, 1),
- (8, 1472021, 45, 1, 60000, 0, 0, 4130015, 1, 1),
- (8, 1332016, 45, 1, 121000, 0, 0, 4130014, 1, 1),
- (8, 1332015, 55, 1, 137000, 0, 0, 4130014, 1, 1),
- (8, 1472022, 55, 1, 137000, 0, 0, 4130015, 1, 1),
- (8, 1472023, 55, 1, 140000, 0, 0, 4130015, 1, 1),
- (8, 1472024, 55, 1, 140000, 0, 0, 4130015, 1, 1),
- (8, 1472025, 55, 1, 143000, 0, 0, 4130015, 1, 1),
- (8, 1332017, 55, 1, 137000, 0, 0, 4130014, 1, 1),
- (8, 1332018, 65, 1, 154000, 0, 0, 4130014, 1, 1),
- (8, 1472026, 65, 1, 165000, 0, 0, 4130015, 1, 1),
- (8, 1472027, 65, 1, 167000, 0, 0, 4130015, 1, 1),
- (8, 1472028, 65, 1, 167000, 0, 0, 4130015, 1, 1),
- (8, 1472029, 65, 1, 170000, 0, 0, 4130015, 1, 1),
- (8, 1332019, 65, 1, 154000, 0, 0, 4130014, 1, 1),
- (8, 1472031, 75, 2, 308000, 0, 0, 4130015, 1, 2),
- (8, 1332022, 75, 2, 238000, 0, 0, 4130014, 1, 2),
- (8, 1332023, 75, 2, 238000, 0, 0, 4130014, 1, 2),
- (8, 1332027, 85, 2, 261000, 0, 0, 4130014, 1, 2),
- (8, 1472033, 85, 2, 346000, 0, 0, 4130015, 1, 2),
- (8, 1332026, 85, 2, 261000, 0, 0, 4130014, 1, 2),
- (8, 1332052, 95, 2, 308000, 0, 0, 4130014, 1, 2),
- (8, 1472053, 95, 2, 392000, 0, 0, 4130015, 1, 2),
- (8, 1332051, 95, 2, 308000, 0, 0, 4130014, 1, 2),
- (8, 1332050, 105, 3, 495000, 0, 0, 4130014, 1, 3),
- (8, 1472051, 105, 3, 627000, 0, 0, 4130015, 1, 3),
- (8, 1472052, 105, 3, 627000, 0, 0, 4130015, 1, 3),
- (8, 1332049, 105, 3, 495000, 0, 0, 4130014, 1, 3),
- (8, 1332075, 115, 3, 550000, 0, 0, 4130014, 1, 3),
- (8, 1332076, 115, 3, 550000, 0, 0, 4130014, 1, 3),
- (8, 1472071, 115, 3, 693000, 0, 0, 4130015, 1, 3),
- (8, 1332073, 115, 3, 550000, 0, 0, 4130014, 1, 3),
- (8, 1332074, 115, 3, 561000, 0, 0, 4130014, 1, 3),
- (8, 1472068, 115, 3, 693000, 0, 0, 4130015, 1, 3),
- (16, 1002631, 45, 1, 22000, 0, 0, 4130018, 1, 1),
- (16, 1002634, 55, 1, 30000, 0, 0, 4130018, 1, 1),
- (16, 1002637, 65, 1, 47000, 0, 0, 4130018, 1, 1),
- (16, 1002640, 75, 2, 77000, 0, 0, 4130018, 1, 2),
- (16, 1002643, 85, 2, 88000, 0, 0, 4130018, 1, 2),
- (16, 1002646, 95, 2, 100000, 0, 0, 4130018, 1, 2),
- (16, 1002649, 105, 3, 165000, 0, 0, 4130018, 1, 3),
- (16, 1002794, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (16, 1002780, 115, 3, 187000, 0, 0, 4130018, 1, 3),
- (16, 1052116, 45, 1, 52000, 0, 0, 4130021, 1, 1),
- (16, 1052119, 55, 1, 55000, 0, 0, 4130021, 1, 1),
- (16, 1052122, 65, 1, 63000, 0, 0, 4130021, 1, 1),
- (16, 1052125, 75, 2, 138000, 0, 0, 4130021, 1, 2),
- (16, 1052128, 85, 2, 153000, 0, 0, 4130021, 1, 2),
- (16, 1052131, 95, 2, 184000, 0, 0, 4130021, 1, 2),
- (16, 1052134, 105, 3, 330000, 0, 0, 4130021, 1, 3),
- (16, 1052164, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (16, 1052159, 115, 3, 396000, 0, 0, 4130021, 1, 3),
- (16, 1072303, 45, 1, 28000, 0, 0, 4130001, 1, 1),
- (16, 1072306, 55, 1, 36000, 0, 0, 4130001, 1, 1),
- (16, 1072309, 65, 1, 50000, 0, 0, 4130001, 1, 1),
- (16, 1072312, 75, 2, 84000, 0, 0, 4130001, 1, 2),
- (16, 1072315, 85, 2, 107000, 0, 0, 4130001, 1, 2),
- (16, 1072318, 95, 2, 130000, 0, 0, 4130001, 1, 2),
- (16, 1072321, 105, 3, 198000, 0, 0, 4130001, 1, 3),
- (16, 1072365, 115, 3, 220000, 0, 0, 4130001, 1, 3),
- (16, 1072359, 115, 3, 220000, 0, 0, 4130001, 1, 3),
- (16, 1082198, 45, 1, 47000, 0, 0, 4130000, 1, 1),
- (16, 1082201, 55, 1, 60000, 0, 0, 4130000, 1, 1),
- (16, 1082204, 65, 1, 82000, 0, 0, 4130000, 1, 1),
- (16, 1082207, 75, 2, 153000, 0, 0, 4130000, 1, 2),
- (16, 1082210, 85, 2, 176000, 0, 0, 4130000, 1, 2),
- (16, 1082213, 95, 2, 203000, 0, 0, 4130000, 1, 2),
- (16, 1082216, 105, 3, 330000, 0, 0, 4130000, 1, 3),
- (16, 1082243, 115, 3, 369000, 0, 0, 4130000, 1, 3),
- (16, 1082238, 115, 3, 369000, 0, 0, 4130000, 1, 3),
- (16, 1482007, 45, 1, 71000, 0, 0, 4130016, 1, 1),
- (16, 1492007, 45, 1, 77000, 0, 0, 4130017, 1, 1),
- (16, 1482008, 55, 1, 132000, 0, 0, 4130016, 1, 1),
- (16, 1492008, 55, 1, 137000, 0, 0, 4130017, 1, 1),
- (16, 1482009, 65, 1, 165000, 0, 0, 4130016, 1, 1),
- (16, 1492009, 65, 1, 170000, 0, 0, 4130017, 1, 1),
- (16, 1482010, 75, 2, 269000, 0, 0, 4130016, 1, 2),
- (16, 1492010, 75, 2, 269000, 0, 0, 4130017, 1, 2),
- (16, 1482011, 85, 2, 300000, 0, 0, 4130016, 1, 2),
- (16, 1492011, 85, 2, 308000, 0, 0, 4130017, 1, 2),
- (16, 1482012, 95, 2, 338000, 0, 0, 4130016, 1, 2),
- (16, 1492012, 95, 2, 346000, 0, 0, 4130017, 1, 2),
- (16, 1482013, 105, 3, 561000, 0, 0, 4130016, 1, 3),
- (16, 1492013, 105, 3, 572000, 0, 0, 4130017, 1, 3),
- (16, 1482024, 115, 3, 616000, 0, 0, 4130016, 1, 3),
- (16, 1492025, 115, 3, 627000, 0, 0, 4130017, 1, 3),
- (16, 1482023, 115, 3, 616000, 0, 0, 4130016, 1, 3),
- (16, 1492023, 115, 3, 627000, 0, 0, 4130017, 1, 3);
-
-INSERT IGNORE INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES
- (4250000, 4021007, 1),
- (4250100, 4021005, 1),
- (4250200, 4021000, 1),
- (4250300, 4021004, 1),
- (4250400, 4021001, 1),
- (4250500, 4021002, 1),
- (4250600, 4021006, 1),
- (4250700, 4021003, 1),
- (4250800, 4005000, 1),
- (4250900, 4005001, 1),
- (4251000, 4005003, 1),
- (4251100, 4005002, 1),
- (4251300, 4021008, 1),
- (4251400, 4005004, 1),
- (4250001, 4250000, 10),
- (4250101, 4250100, 10),
- (4250201, 4250200, 10),
- (4250301, 4250300, 10),
- (4250401, 4250400, 10),
- (4250501, 4250500, 10),
- (4250601, 4250600, 10),
- (4250701, 4250700, 10),
- (4250801, 4250800, 10),
- (4250901, 4250900, 10),
- (4251001, 4251000, 10),
- (4251101, 4251100, 10),
- (4251301, 4251300, 10),
- (4251401, 4251400, 10),
- (4250002, 4250001, 10),
- (4250102, 4250101, 10),
- (4250202, 4250201, 10),
- (4250302, 4250301, 10),
- (4250402, 4250401, 10),
- (4250502, 4250501, 10),
- (4250602, 4250601, 10),
- (4250702, 4250701, 10),
- (4250802, 4250801, 10),
- (4250902, 4250901, 10),
- (4251002, 4251001, 10),
- (4251102, 4251101, 10),
- (4251302, 4251301, 10),
- (4251402, 4251401, 10),
- (4001174, 4031966, 1),
- (4001174, 4000155, 10),
- (4001174, 4000278, 5),
- (4001174, 4000277, 5),
- (4001175, 4031967, 1),
- (4001175, 4000048, 20),
- (4001175, 4000030, 3),
- (4001176, 4031968, 1),
- (4001176, 4000360, 30),
- (4001176, 4003001, 20),
- (4001176, 4011001, 5),
- (4001177, 4031969, 1),
- (4001177, 4007001, 10),
- (4001177, 4000052, 100),
- (4001178, 4031970, 1),
- (4001178, 4007002, 1),
- (4001178, 4000295, 25),
- (4001178, 4000286, 25),
- (4001179, 4031971, 1),
- (4001179, 4000364, 70),
- (4001179, 4000122, 7),
- (4001179, 4003000, 7),
- (4001180, 4031972, 1),
- (4001180, 4007000, 1),
- (4001180, 4000229, 30),
- (4001180, 4000074, 10),
- (4001181, 4031973, 1),
- (4001181, 4007006, 1),
- (4001181, 4000238, 30),
- (4001181, 4003005, 20),
- (4001182, 4031974, 1),
- (4001182, 4007001, 6),
- (4001182, 4000239, 12),
- (4001182, 4000240, 1),
- (4001182, 4003004, 36),
- (4001183, 4031975, 1),
- (4001183, 4007001, 3),
- (4001183, 4000285, 30),
- (4001183, 4000232, 30),
- (4001184, 4031976, 1),
- (4001184, 4000182, 30),
- (4001184, 4011001, 10),
- (4001184, 4003001, 10),
- (4001185, 4031977, 1),
- (4001185, 4000134, 30),
- (4001185, 4000081, 5),
- (4001185, 4003005, 20),
- (4031980, 4031979, 1),
- (4031980, 4011006, 6),
- (4031980, 4011001, 2),
- (4031980, 4011008, 1),
- (4001186, 4031978, 1),
- (4001186, 4003005, 30),
- (4001186, 4005001, 1),
- (4001186, 4021007, 10),
- (4001186, 4021009, 1),
- (4032334, 4032335, 1),
- (4032334, 4000268, 500),
- (4032334, 4000181, 500),
- (4032334, 4000274, 500),
- (4032312, 4005004, 1),
- (4032312, 4020007, 3),
- (4032312, 4020000, 3),
- (2041058, 4000048, 100),
- (2041058, 4000299, 10),
- (2040727, 4000159, 50),
- (2040727, 4000299, 10),
- (4260007, 4260006, 100),
- (4260007, 4001126, 5),
- (4260008, 4260007, 50),
- (4260008, 4001126, 5),
- (1002028, 4007001, 5),
- (1002028, 4260000, 5),
- (1002085, 4007002, 5),
- (1002085, 4260000, 5),
- (1002086, 4007000, 5),
- (1002086, 4260000, 5),
- (1002022, 4007001, 5),
- (1002022, 4260000, 5),
- (1002100, 4007000, 5),
- (1002100, 4260000, 5),
- (1002101, 4007003, 5),
- (1002101, 4260000, 5),
- (1002029, 4007006, 6),
- (1002029, 4260001, 6),
- (1002084, 4007002, 6),
- (1002084, 4260001, 6),
- (1002030, 4007001, 7),
- (1002030, 4260002, 7),
- (1002094, 4007000, 7),
- (1002094, 4260002, 7),
- (1002095, 4007002, 7),
- (1002095, 4260002, 7),
- (1002338, 4007006, 8),
- (1002338, 4260003, 8),
- (1002339, 4007002, 8),
- (1002339, 4260003, 8),
- (1002340, 4007007, 8),
- (1002340, 4260003, 8),
- (1002528, 4007003, 9),
- (1002528, 4260004, 9),
- (1002529, 4007002, 9),
- (1002529, 4260004, 9),
- (1002530, 4007006, 9),
- (1002530, 4260004, 9),
- (1002531, 4007001, 9),
- (1002531, 4260004, 9),
- (1002532, 4007007, 9),
- (1002532, 4260004, 9),
- (1002377, 4007003, 10),
- (1002377, 4260005, 10),
- (1002378, 4007002, 10),
- (1002378, 4260005, 10),
- (1002379, 4007007, 10),
- (1002379, 4260005, 10),
- (1002551, 4007002, 11),
- (1002551, 4260006, 11),
- (1002551, 4000244, 5),
- (1002551, 4000245, 5),
- (1002790, 4007001, 12),
- (1002790, 4260007, 8),
- (1002790, 4260008, 4),
- (1002790, 4020009, 15),
- (1002776, 4007001, 12),
- (1002776, 4260007, 2),
- (1002776, 4260008, 10),
- (1002776, 4021010, 1),
- (1040087, 4007002, 5),
- (1040087, 4260000, 5),
- (1040088, 4007004, 5),
- (1040088, 4260000, 5),
- (1040089, 4007007, 5),
- (1040089, 4260000, 5),
- (1041087, 4007006, 5),
- (1041087, 4260000, 5),
- (1041088, 4007001, 5),
- (1041088, 4260000, 5),
- (1041089, 4007007, 5),
- (1041089, 4260000, 5),
- (1040090, 4007003, 6),
- (1040090, 4260001, 6),
- (1040091, 4007006, 6),
- (1040091, 4260001, 6),
- (1040092, 4007002, 6),
- (1040092, 4260001, 6),
- (1040093, 4007007, 6),
- (1040093, 4260001, 6),
- (1041091, 4007003, 6),
- (1041091, 4260001, 6),
- (1041092, 4007006, 6),
- (1041092, 4260001, 6),
- (1041093, 4007002, 6),
- (1041093, 4260001, 6),
- (1040102, 4007000, 7),
- (1040102, 4260002, 7),
- (1040103, 4007002, 7),
- (1040103, 4260002, 7),
- (1040104, 4007005, 7),
- (1040104, 4260002, 7),
- (1041097, 4007002, 7),
- (1041097, 4260002, 7),
- (1041098, 4007005, 7),
- (1041098, 4260002, 7),
- (1041099, 4007006, 7),
- (1041099, 4260002, 7),
- (1040111, 4007003, 9),
- (1040111, 4260004, 9),
- (1040112, 4007002, 9),
- (1040112, 4260004, 9),
- (1040113, 4007007, 9),
- (1040113, 4260004, 9),
- (1041119, 4007003, 9),
- (1041119, 4260004, 9),
- (1041120, 4007005, 9),
- (1041120, 4260004, 9),
- (1041121, 4007007, 9),
- (1041121, 4260004, 9),
- (1040120, 4007003, 10),
- (1040120, 4260005, 10),
- (1040121, 4007002, 10),
- (1040121, 4260005, 10),
- (1040122, 4007007, 10),
- (1040122, 4260005, 10),
- (1041122, 4007003, 10),
- (1041122, 4260005, 10),
- (1041123, 4007005, 10),
- (1041123, 4260005, 10),
- (1041124, 4007007, 10),
- (1041124, 4260005, 10),
- (1060076, 4007002, 5),
- (1060076, 4260000, 5),
- (1060077, 4007004, 5),
- (1060077, 4260000, 5),
- (1060078, 4007007, 5),
- (1060078, 4260000, 5),
- (1061086, 4007006, 5),
- (1061086, 4260000, 5),
- (1061087, 4007001, 5),
- (1061087, 4260000, 5),
- (1061088, 4007007, 5),
- (1061088, 4260000, 5),
- (1060079, 4007003, 6),
- (1060079, 4260001, 6),
- (1060080, 4007006, 6),
- (1060080, 4260001, 6),
- (1060081, 4007002, 6),
- (1060081, 4260001, 6),
- (1060082, 4007007, 6),
- (1060082, 4260001, 6),
- (1061090, 4007003, 6),
- (1061090, 4260001, 6),
- (1061091, 4007006, 6),
- (1061091, 4260001, 6),
- (1061092, 4007002, 6),
- (1061092, 4260001, 6),
- (1060090, 4007000, 7),
- (1060090, 4260002, 7),
- (1060091, 4007002, 7),
- (1060091, 4260002, 7),
- (1060092, 4007005, 7),
- (1060092, 4260002, 7),
- (1061096, 4007002, 7),
- (1061096, 4260002, 7),
- (1061097, 4007005, 7),
- (1061097, 4260002, 7),
- (1061098, 4007006, 7),
- (1061098, 4260002, 7),
- (1060100, 4007003, 9),
- (1060100, 4260004, 9),
- (1060101, 4007002, 9),
- (1060101, 4260004, 9),
- (1060102, 4007007, 9),
- (1060102, 4260004, 9),
- (1061118, 4007003, 9),
- (1061118, 4260004, 9),
- (1061119, 4007005, 9),
- (1061119, 4260004, 9),
- (1061120, 4007006, 9),
- (1061120, 4260004, 9),
- (1060109, 4007003, 10),
- (1060109, 4260005, 10),
- (1060110, 4007002, 10),
- (1060110, 4260005, 10),
- (1060111, 4007007, 10),
- (1060111, 4260005, 10),
- (1061121, 4007003, 10),
- (1061121, 4260005, 10),
- (1061122, 4007005, 10),
- (1061122, 4260005, 10),
- (1061123, 4007007, 10),
- (1061123, 4260005, 10),
- (1050080, 4007003, 8),
- (1050080, 4260003, 16),
- (1050081, 4007006, 8),
- (1050081, 4260003, 16),
- (1050082, 4007002, 8),
- (1050082, 4260003, 16),
- (1050083, 4007007, 8),
- (1050083, 4260003, 16),
- (1051077, 4007004, 8),
- (1051077, 4260003, 16),
- (1051078, 4007006, 8),
- (1051078, 4260003, 16),
- (1051079, 4007002, 8),
- (1051079, 4260003, 16),
- (1051080, 4007007, 8),
- (1051080, 4260003, 16),
- (1052075, 4007002, 11),
- (1052075, 4260006, 22),
- (1052075, 4000244, 5),
- (1052075, 4000245, 5),
- (1052160, 4007005, 12),
- (1052160, 4260007, 16),
- (1052160, 4260008, 8),
- (1052160, 4020009, 15),
- (1052155, 4007005, 12),
- (1052155, 4260007, 4),
- (1052155, 4260008, 20),
- (1052155, 4021010, 1),
- (1072132, 4007003, 5),
- (1072132, 4260000, 5),
- (1072133, 4007002, 5),
- (1072133, 4260000, 5),
- (1072134, 4007005, 5),
- (1072134, 4260000, 5),
- (1072135, 4007004, 5),
- (1072135, 4260000, 5),
- (1072147, 4007002, 6),
- (1072147, 4260001, 6),
- (1072148, 4007005, 6),
- (1072148, 4260001, 6),
- (1072149, 4007006, 6),
- (1072149, 4260001, 6),
- (1072154, 4007002, 7),
- (1072154, 4260002, 7),
- (1072155, 4007005, 7),
- (1072155, 4260002, 7),
- (1072156, 4007007, 7),
- (1072156, 4260002, 7),
- (1072210, 4007006, 8),
- (1072210, 4260003, 8),
- (1072211, 4007002, 8),
- (1072211, 4260003, 8),
- (1072212, 4007007, 8),
- (1072212, 4260003, 8),
- (1072196, 4007003, 9),
- (1072196, 4260004, 9),
- (1072197, 4007005, 9),
- (1072197, 4260004, 9),
- (1072198, 4007007, 9),
- (1072198, 4260004, 9),
- (1072220, 4007003, 10),
- (1072220, 4260005, 10),
- (1072221, 4007002, 10),
- (1072221, 4260005, 10),
- (1072222, 4007007, 10),
- (1072222, 4260005, 10),
- (1072273, 4007002, 11),
- (1072273, 4260006, 11),
- (1072273, 4000244, 5),
- (1072273, 4000245, 5),
- (1072361, 4007007, 12),
- (1072361, 4260007, 8),
- (1072361, 4260008, 4),
- (1072361, 4020009, 15),
- (1072355, 4007007, 12),
- (1072355, 4260007, 2),
- (1072355, 4260008, 10),
- (1072355, 4021010, 1),
- (1082009, 4007001, 5),
- (1082009, 4260000, 5),
- (1082010, 4007007, 5),
- (1082010, 4260000, 5),
- (1082011, 4007004, 5),
- (1082011, 4260000, 5),
- (1082059, 4007000, 6),
- (1082059, 4260001, 6),
- (1082060, 4007002, 6),
- (1082060, 4260001, 6),
- (1082061, 4007007, 6),
- (1082061, 4260001, 6),
- (1082103, 4007000, 7),
- (1082103, 4260002, 7),
- (1082104, 4007002, 7),
- (1082104, 4260002, 7),
- (1082105, 4007007, 7),
- (1082105, 4260002, 7),
- (1082114, 4007002, 8),
- (1082114, 4260003, 8),
- (1082115, 4007003, 8),
- (1082115, 4260003, 8),
- (1082116, 4007006, 8),
- (1082116, 4260003, 8),
- (1082117, 4007007, 8),
- (1082117, 4260003, 8),
- (1082128, 4007003, 9),
- (1082128, 4260004, 9),
- (1082129, 4007005, 9),
- (1082129, 4260004, 9),
- (1082130, 4007007, 9),
- (1082130, 4260004, 9),
- (1082139, 4007003, 10),
- (1082139, 4260005, 10),
- (1082140, 4007002, 10),
- (1082140, 4260005, 10),
- (1082141, 4007007, 10),
- (1082141, 4260005, 10),
- (1082168, 4007002, 11),
- (1082168, 4260006, 11),
- (1082168, 4000244, 5),
- (1082168, 4000245, 5),
- (1082239, 4007007, 12),
- (1082239, 4260007, 8),
- (1082239, 4260008, 4),
- (1082239, 4020009, 15),
- (1082234, 4007007, 12),
- (1082234, 4260007, 2),
- (1082234, 4260008, 10),
- (1082234, 4021010, 1),
- (1092004, 4007001, 5),
- (1092004, 4260000, 5),
- (1092009, 4007000, 6),
- (1092009, 4260001, 6),
- (1092010, 4007001, 6),
- (1092010, 4260001, 6),
- (1092011, 4007004, 6),
- (1092011, 4260001, 6),
- (1092015, 4007001, 7),
- (1092015, 4260002, 7),
- (1092016, 4007001, 7),
- (1092016, 4260002, 7),
- (1092017, 4007004, 7),
- (1092017, 4260002, 7),
- (1092023, 4007001, 8),
- (1092023, 4260003, 8),
- (1092024, 4007001, 8),
- (1092024, 4260003, 8),
- (1092025, 4007004, 8),
- (1092025, 4260003, 8),
- (1092026, 4007000, 9),
- (1092026, 4260004, 9),
- (1092027, 4007001, 9),
- (1092027, 4260004, 9),
- (1092028, 4007004, 9),
- (1092028, 4260004, 9),
- (1092036, 4007003, 10),
- (1092036, 4260005, 10),
- (1092037, 4007005, 10),
- (1092037, 4260005, 10),
- (1092038, 4007002, 10),
- (1092038, 4260005, 10),
- (1092060, 4007001, 11),
- (1092060, 4260006, 11),
- (1092060, 4000244, 5),
- (1092060, 4000245, 5),
- (1092058, 4007002, 12),
- (1092058, 4260007, 2),
- (1092058, 4260008, 10),
- (1092058, 4021010, 1),
- (1302010, 4011000, 1),
- (1302010, 4260000, 20),
- (1312008, 4011000, 1),
- (1312008, 4260000, 20),
- (1322017, 4011000, 1),
- (1322017, 4260000, 20),
- (1402003, 4011000, 1),
- (1402003, 4260000, 20),
- (1412003, 4011000, 1),
- (1412003, 4260000, 20),
- (1422005, 4011000, 1),
- (1422005, 4260000, 20),
- (1432004, 4011000, 1),
- (1432004, 4260000, 20),
- (1442005, 4011000, 1),
- (1442005, 4260000, 20),
- (1302011, 4011001, 2),
- (1302011, 4260001, 22),
- (1312009, 4011001, 2),
- (1312009, 4260001, 22),
- (1322018, 4011001, 2),
- (1322018, 4260001, 22),
- (1402011, 4011001, 2),
- (1402011, 4260001, 22),
- (1412007, 4011001, 2),
- (1412007, 4260001, 22),
- (1422009, 4011001, 2),
- (1422009, 4260001, 22),
- (1432006, 4011001, 2),
- (1432006, 4260001, 22),
- (1442010, 4011001, 2),
- (1442010, 4260001, 22),
- (1302012, 4011001, 3),
- (1302012, 4260002, 24),
- (1312010, 4011001, 3),
- (1312010, 4260002, 24),
- (1322019, 4011001, 3),
- (1322019, 4260002, 24),
- (1402012, 4011001, 3),
- (1402012, 4260002, 24),
- (1412008, 4011001, 3),
- (1412008, 4260002, 24),
- (1422010, 4011001, 3),
- (1422010, 4260002, 24),
- (1432007, 4011001, 3),
- (1432007, 4260002, 24),
- (1442008, 4011001, 3),
- (1442008, 4260002, 24),
- (1322020, 4011001, 3),
- (1322020, 4260002, 24),
- (1302018, 4011002, 3),
- (1302018, 4260003, 26),
- (1312011, 4011002, 3),
- (1312011, 4260003, 26),
- (1322028, 4011002, 3),
- (1322028, 4260003, 26),
- (1402004, 4011002, 3),
- (1402004, 4260003, 26),
- (1402015, 4011002, 3),
- (1402015, 4260003, 26),
- (1412009, 4011002, 3),
- (1412009, 4260003, 26),
- (1422012, 4011002, 3),
- (1422012, 4260003, 26),
- (1432010, 4011002, 3),
- (1432010, 4260003, 26),
- (1442019, 4011002, 3),
- (1442019, 4260003, 26),
- (1302023, 4011002, 4),
- (1302023, 4260004, 28),
- (1312015, 4011002, 4),
- (1312015, 4260004, 28),
- (1322029, 4011002, 4),
- (1322029, 4260004, 28),
- (1402005, 4011002, 4),
- (1402005, 4260004, 28),
- (1402016, 4011002, 4),
- (1402016, 4260004, 28),
- (1412010, 4011002, 4),
- (1412010, 4260004, 28),
- (1422013, 4011002, 4),
- (1422013, 4260004, 28),
- (1432011, 4011002, 4),
- (1432011, 4260004, 28),
- (1442020, 4011002, 4),
- (1442020, 4260004, 28),
- (1302056, 4011003, 4),
- (1302056, 4260005, 30),
- (1312030, 4011003, 4),
- (1312030, 4260005, 30),
- (1322045, 4011003, 4),
- (1322045, 4260005, 30),
- (1402035, 4011003, 4),
- (1402035, 4260005, 30),
- (1412021, 4011003, 4),
- (1412021, 4260005, 30),
- (1422027, 4011003, 4),
- (1422027, 4260005, 30),
- (1432030, 4011003, 4),
- (1432030, 4260005, 30),
- (1442044, 4011003, 4),
- (1442044, 4260005, 30),
- (1302059, 4011003, 5),
- (1302059, 4260006, 32),
- (1302059, 4000244, 20),
- (1302059, 4000245, 20),
- (1312031, 4011003, 5),
- (1312031, 4260006, 32),
- (1312031, 4000244, 20),
- (1312031, 4000245, 20),
- (1322052, 4011003, 5),
- (1322052, 4260006, 32),
- (1322052, 4000244, 20),
- (1322052, 4000245, 20),
- (1402036, 4011003, 5),
- (1402036, 4260006, 32),
- (1402036, 4000244, 20),
- (1402036, 4000245, 20),
- (1412026, 4011003, 5),
- (1412026, 4260006, 32),
- (1412026, 4000244, 20),
- (1412026, 4000245, 20),
- (1422028, 4011003, 5),
- (1422028, 4260006, 32),
- (1422028, 4000244, 20),
- (1422028, 4000245, 20),
- (1432038, 4011003, 5),
- (1432038, 4260006, 32),
- (1432038, 4000244, 20),
- (1432038, 4000245, 20),
- (1442045, 4011003, 5),
- (1442045, 4260006, 32),
- (1442045, 4000244, 20),
- (1442045, 4000245, 20),
- (1302086, 4011005, 5),
- (1302086, 4260007, 20),
- (1302086, 4260008, 14),
- (1302086, 4020009, 45),
- (1312038, 4011005, 5),
- (1312038, 4260007, 20),
- (1312038, 4260008, 14),
- (1312038, 4020009, 45),
- (1322061, 4011005, 5),
- (1322061, 4260007, 20),
- (1322061, 4260008, 14),
- (1322061, 4020009, 45),
- (1402047, 4011005, 5),
- (1402047, 4260007, 20),
- (1402047, 4260008, 14),
- (1402047, 4020009, 45),
- (1412034, 4011005, 5),
- (1412034, 4260007, 20),
- (1412034, 4260008, 14),
- (1412034, 4020009, 45),
- (1422038, 4011005, 5),
- (1422038, 4260007, 20),
- (1422038, 4260008, 14),
- (1422038, 4020009, 45),
- (1432049, 4011005, 5),
- (1432049, 4260007, 20),
- (1432049, 4260008, 14),
- (1432049, 4020009, 45),
- (1442067, 4011005, 5),
- (1442067, 4260007, 20),
- (1442067, 4260008, 14),
- (1442067, 4020009, 45),
- (1302081, 4011005, 5),
- (1302081, 4260007, 14),
- (1302081, 4260008, 20),
- (1302081, 4021010, 3),
- (1312037, 4011005, 5),
- (1312037, 4260007, 14),
- (1312037, 4260008, 20),
- (1312037, 4021010, 3),
- (1322060, 4011005, 5),
- (1322060, 4260007, 14),
- (1322060, 4260008, 20),
- (1322060, 4021010, 3),
- (1402046, 4011005, 5),
- (1402046, 4260007, 14),
- (1402046, 4260008, 20),
- (1402046, 4021010, 3),
- (1412033, 4011005, 5),
- (1412033, 4260007, 14),
- (1412033, 4260008, 20),
- (1412033, 4021010, 3),
- (1422037, 4011005, 5),
- (1422037, 4260007, 14),
- (1422037, 4260008, 20),
- (1422037, 4021010, 3),
- (1432047, 4011005, 5),
- (1432047, 4260007, 14),
- (1432047, 4260008, 20),
- (1432047, 4021010, 3),
- (1442063, 4011005, 5),
- (1442063, 4260007, 14),
- (1442063, 4260008, 20),
- (1442063, 4021010, 3),
- (1002215, 4007006, 5),
- (1002215, 4260000, 5),
- (1002216, 4007002, 5),
- (1002216, 4260000, 5),
- (1002217, 4007004, 5),
- (1002217, 4260000, 5),
- (1002218, 4007007, 5),
- (1002218, 4260000, 5),
- (1002242, 4007006, 6),
- (1002242, 4260001, 6),
- (1002243, 4007002, 6),
- (1002243, 4260001, 6),
- (1002244, 4007003, 6),
- (1002244, 4260001, 6),
- (1002245, 4007001, 6),
- (1002245, 4260001, 6),
- (1002246, 4007007, 6),
- (1002246, 4260001, 6),
- (1002252, 4007006, 7),
- (1002252, 4260002, 7),
- (1002253, 4007002, 7),
- (1002253, 4260002, 7),
- (1002254, 4007007, 7),
- (1002254, 4260002, 7),
- (1002271, 4007003, 8),
- (1002271, 4260003, 8),
- (1002272, 4007002, 8),
- (1002272, 4260003, 8),
- (1002273, 4007005, 8),
- (1002273, 4260003, 8),
- (1002274, 4007007, 8),
- (1002274, 4260003, 8),
- (1002363, 4007003, 9),
- (1002363, 4260004, 9),
- (1002364, 4007002, 9),
- (1002364, 4260004, 9),
- (1002365, 4007006, 9),
- (1002365, 4260004, 9),
- (1002366, 4007007, 9),
- (1002366, 4260004, 9),
- (1002398, 4007003, 10),
- (1002398, 4260005, 10),
- (1002399, 4007002, 10),
- (1002399, 4260005, 10),
- (1002400, 4007006, 10),
- (1002400, 4260005, 10),
- (1002401, 4007007, 10),
- (1002401, 4260005, 10),
- (1002773, 4007004, 11),
- (1002773, 4260006, 11),
- (1002773, 4000244, 5),
- (1002773, 4000245, 5),
- (1002791, 4007002, 12),
- (1002791, 4260007, 8),
- (1002791, 4260008, 4),
- (1002791, 4020009, 15),
- (1002777, 4007002, 12),
- (1002777, 4260007, 2),
- (1002777, 4260008, 10),
- (1002777, 4021010, 1),
- (1050045, 4007002, 5),
- (1050045, 4260000, 10),
- (1050046, 4007006, 5),
- (1050046, 4260000, 10),
- (1050047, 4007004, 5),
- (1050047, 4260000, 10),
- (1050048, 4007001, 5),
- (1050048, 4260000, 10),
- (1050049, 4007007, 5),
- (1050049, 4260000, 10),
- (1051030, 4007007, 5),
- (1051030, 4260000, 10),
- (1051031, 4007001, 5),
- (1051031, 4260000, 10),
- (1051032, 4007002, 5),
- (1051032, 4260000, 10),
- (1051033, 4007006, 5),
- (1051033, 4260000, 10),
- (1051034, 4007004, 5),
- (1051034, 4260000, 10),
- (1050053, 4007002, 6),
- (1050053, 4260001, 12),
- (1050054, 4007006, 6),
- (1050054, 4260001, 12),
- (1050055, 4007001, 6),
- (1050055, 4260001, 12),
- (1050056, 4007007, 6),
- (1050056, 4260001, 12),
- (1051044, 4007002, 6),
- (1051044, 4260001, 12),
- (1051045, 4007006, 6),
- (1051045, 4260001, 12),
- (1051046, 4007001, 6),
- (1051046, 4260001, 12),
- (1051047, 4007007, 6),
- (1051047, 4260001, 12),
- (1050067, 4007002, 7),
- (1050067, 4260002, 14),
- (1050068, 4007006, 7),
- (1050068, 4260002, 14),
- (1050069, 4007000, 7),
- (1050069, 4260002, 14),
- (1050070, 4007007, 7),
- (1050070, 4260002, 14),
- (1051052, 4007002, 7),
- (1051052, 4260002, 14),
- (1051053, 4007006, 7),
- (1051053, 4260002, 14),
- (1051054, 4007000, 7),
- (1051054, 4260002, 14),
- (1051055, 4007007, 7),
- (1051055, 4260002, 14),
- (1050072, 4007003, 8),
- (1050072, 4260003, 16),
- (1050073, 4007002, 8),
- (1050073, 4260003, 16),
- (1050074, 4007007, 8),
- (1050074, 4260003, 16),
- (1051056, 4007003, 8),
- (1051056, 4260003, 16),
- (1051057, 4007005, 8),
- (1051057, 4260003, 16),
- (1051058, 4007007, 8),
- (1051058, 4260003, 16),
- (1050092, 4007003, 9),
- (1050092, 4260004, 18),
- (1050093, 4007002, 9),
- (1050093, 4260004, 18),
- (1050094, 4007006, 9),
- (1050094, 4260004, 18),
- (1050095, 4007007, 9),
- (1050095, 4260004, 18),
- (1051094, 4007003, 9),
- (1051094, 4260004, 18),
- (1051095, 4007002, 9),
- (1051095, 4260004, 18),
- (1051096, 4007006, 9),
- (1051096, 4260004, 18),
- (1051097, 4007007, 9),
- (1051097, 4260004, 18),
- (1050102, 4007003, 10),
- (1050102, 4260005, 20),
- (1050103, 4007002, 10),
- (1050103, 4260005, 20),
- (1050104, 4007006, 10),
- (1050104, 4260005, 20),
- (1050105, 4007007, 10),
- (1050105, 4260005, 20),
- (1051101, 4007003, 10),
- (1051101, 4260005, 20),
- (1051102, 4007002, 10),
- (1051102, 4260005, 20),
- (1051103, 4007006, 10),
- (1051103, 4260005, 20),
- (1051104, 4007007, 10),
- (1051104, 4260005, 20),
- (1052076, 4007007, 11),
- (1052076, 4260006, 22),
- (1052076, 4000244, 5),
- (1052076, 4000245, 5),
- (1052161, 4007002, 12),
- (1052161, 4260007, 16),
- (1052161, 4260008, 8),
- (1052161, 4020009, 15),
- (1052156, 4007002, 12),
- (1052156, 4260007, 4),
- (1052156, 4260008, 20),
- (1052156, 4021010, 1),
- (1072140, 4007001, 2),
- (1072140, 4007006, 3),
- (1072140, 4260000, 5),
- (1072141, 4007002, 5),
- (1072141, 4260000, 5),
- (1072142, 4007005, 5),
- (1072142, 4260000, 5),
- (1072143, 4007003, 5),
- (1072143, 4260000, 5),
- (1072136, 4007001, 3),
- (1072136, 4007006, 3),
- (1072136, 4260001, 6),
- (1072137, 4007003, 6),
- (1072137, 4260001, 6),
- (1072138, 4007004, 6),
- (1072138, 4260001, 6),
- (1072139, 4007002, 6),
- (1072139, 4260001, 6),
- (1072157, 4007002, 7),
- (1072157, 4260002, 7),
- (1072158, 4007006, 7),
- (1072158, 4260002, 7),
- (1072159, 4007000, 7),
- (1072159, 4260002, 7),
- (1072160, 4007004, 7),
- (1072160, 4260002, 7),
- (1072177, 4007003, 8),
- (1072177, 4260003, 8),
- (1072178, 4007005, 8),
- (1072178, 4260003, 8),
- (1072179, 4007007, 8),
- (1072179, 4260003, 8),
- (1072206, 4007002, 9),
- (1072206, 4260004, 9),
- (1072207, 4007003, 9),
- (1072207, 4260004, 9),
- (1072208, 4007006, 9),
- (1072208, 4260004, 9),
- (1072209, 4007007, 9),
- (1072209, 4260004, 9),
- (1072223, 4007003, 10),
- (1072223, 4260005, 10),
- (1072224, 4007002, 10),
- (1072224, 4260005, 10),
- (1072225, 4007006, 10),
- (1072225, 4260005, 10),
- (1072226, 4007007, 10),
- (1072226, 4260005, 10),
- (1072268, 4007002, 11),
- (1072268, 4260006, 11),
- (1072268, 4000244, 5),
- (1072268, 4000245, 5),
- (1072362, 4007004, 12),
- (1072362, 4260007, 8),
- (1072362, 4260008, 4),
- (1072362, 4020009, 15),
- (1072356, 4007004, 12),
- (1072356, 4260007, 2),
- (1072356, 4260008, 10),
- (1072356, 4021010, 1),
- (1082080, 4007007, 5),
- (1082080, 4260000, 5),
- (1082081, 4007006, 5),
- (1082081, 4260000, 5),
- (1082082, 4007002, 5),
- (1082082, 4260000, 5),
- (1082086, 4007001, 6),
- (1082086, 4260001, 6),
- (1082087, 4007004, 6),
- (1082087, 4260001, 6),
- (1082088, 4007007, 6),
- (1082088, 4260001, 6),
- (1082098, 4007000, 7),
- (1082098, 4260002, 7),
- (1082099, 4007002, 7),
- (1082099, 4260002, 7),
- (1082100, 4007007, 7),
- (1082100, 4260002, 7),
- (1082121, 4007003, 8),
- (1082121, 4260003, 8),
- (1082122, 4007002, 8),
- (1082122, 4260003, 8),
- (1082123, 4007007, 8),
- (1082123, 4260003, 8),
- (1082131, 4007002, 9),
- (1082131, 4260004, 9),
- (1082132, 4007003, 9),
- (1082132, 4260004, 9),
- (1082133, 4007006, 9),
- (1082133, 4260004, 9),
- (1082134, 4007007, 9),
- (1082134, 4260004, 9),
- (1082151, 4007003, 10),
- (1082151, 4260005, 10),
- (1082152, 4007002, 10),
- (1082152, 4260005, 10),
- (1082153, 4007006, 10),
- (1082153, 4260005, 10),
- (1082154, 4007005, 10),
- (1082154, 4260005, 10),
- (1082164, 4007002, 11),
- (1082164, 4260006, 11),
- (1082164, 4000244, 5),
- (1082164, 4000245, 5),
- (1082240, 4007002, 12),
- (1082240, 4260007, 8),
- (1082240, 4260008, 4),
- (1082240, 4020009, 15),
- (1082235, 4007002, 12),
- (1082235, 4260007, 2),
- (1082235, 4260008, 10),
- (1082235, 4021010, 1),
- (1092057, 4007004, 12),
- (1092057, 4260007, 2),
- (1092057, 4260008, 10),
- (1092057, 4021010, 1),
- (1372007, 4011000, 1),
- (1372007, 4260000, 20),
- (1382006, 4011000, 1),
- (1382006, 4260000, 20),
- (1372014, 4011001, 2),
- (1372014, 4260001, 22),
- (1382007, 4011001, 2),
- (1382007, 4260001, 22),
- (1372015, 4011001, 3),
- (1372015, 4260002, 24),
- (1382010, 4011001, 3),
- (1382010, 4260002, 24),
- (1372016, 4011002, 3),
- (1372016, 4260003, 26),
- (1382008, 4011002, 3),
- (1382008, 4260004, 26),
- (1372009, 4011002, 4),
- (1372009, 4260004, 28),
- (1382035, 4011002, 4),
- (1382035, 4260004, 28),
- (1372010, 4011003, 4),
- (1372010, 4260005, 30),
- (1372032, 4011003, 5),
- (1372032, 4260006, 32),
- (1372032, 4000244, 20),
- (1372032, 4000245, 20),
- (1382036, 4011003, 5),
- (1382036, 4260006, 32),
- (1382036, 4000244, 20),
- (1382036, 4000245, 20),
- (1372045, 4011005, 5),
- (1372045, 4260007, 20),
- (1372045, 4260008, 14),
- (1372045, 4020009, 45),
- (1382059, 4011005, 5),
- (1382059, 4260007, 20),
- (1382059, 4260008, 14),
- (1382059, 4020009, 45),
- (1372044, 4011005, 5),
- (1372044, 4260007, 14),
- (1372044, 4260008, 20),
- (1372044, 4021010, 3),
- (1382057, 4011005, 5),
- (1382057, 4260007, 14),
- (1382057, 4260008, 20),
- (1382057, 4021010, 3),
- (1002211, 4007002, 5),
- (1002211, 4260000, 5),
- (1002212, 4007006, 5),
- (1002212, 4260000, 5),
- (1002213, 4007003, 5),
- (1002213, 4260000, 5),
- (1002214, 4007007, 5),
- (1002214, 4260000, 5),
- (1002267, 4007006, 6),
- (1002267, 4260001, 6),
- (1002268, 4007000, 6),
- (1002268, 4260001, 6),
- (1002269, 4007001, 6),
- (1002269, 4260001, 6),
- (1002270, 4007007, 6),
- (1002270, 4260001, 6),
- (1002286, 4007002, 7),
- (1002286, 4260002, 7),
- (1002287, 4007001, 4),
- (1002287, 4007004, 3),
- (1002287, 4260002, 7),
- (1002288, 4007003, 7),
- (1002288, 4260002, 7),
- (1002289, 4007007, 7),
- (1002289, 4260002, 7),
- (1002275, 4007002, 8),
- (1002275, 4260003, 8),
- (1002276, 4007006, 8),
- (1002276, 4260003, 8),
- (1002277, 4007003, 8),
- (1002277, 4260003, 8),
- (1002278, 4007007, 8),
- (1002278, 4260003, 8),
- (1002402, 4007006, 9),
- (1002402, 4260004, 9),
- (1002403, 4007002, 9),
- (1002403, 4260004, 9),
- (1002404, 4007003, 9),
- (1002404, 4260004, 9),
- (1002405, 4007007, 9),
- (1002405, 4260004, 9),
- (1002406, 4007006, 10),
- (1002406, 4260005, 10),
- (1002407, 4007002, 10),
- (1002407, 4260005, 10),
- (1002408, 4007003, 10),
- (1002408, 4260005, 10),
- (1002547, 4007006, 11),
- (1002547, 4260006, 11),
- (1002547, 4000244, 5),
- (1002547, 4000245, 5),
- (1002792, 4007005, 12),
- (1002792, 4260007, 8),
- (1002792, 4260008, 4),
- (1002792, 4020009, 15),
- (1002778, 4007005, 12),
- (1002778, 4260007, 2),
- (1002778, 4260008, 10),
- (1002778, 4021010, 1),
- (1050051, 4007006, 5),
- (1050051, 4260000, 10),
- (1050052, 4007002, 5),
- (1050052, 4260000, 10),
- (1051037, 4007002, 5),
- (1051037, 4260000, 10),
- (1051038, 4007003, 5),
- (1051038, 4260000, 10),
- (1051039, 4007006, 5),
- (1051039, 4260000, 10),
- (1050058, 4007005, 6),
- (1050058, 4260001, 12),
- (1050059, 4007002, 6),
- (1050059, 4260001, 12),
- (1050060, 4007006, 6),
- (1050060, 4260001, 12),
- (1051041, 4007006, 6),
- (1051041, 4260001, 12),
- (1051042, 4007002, 6),
- (1051042, 4260001, 12),
- (1051043, 4007004, 6),
- (1051043, 4260001, 12),
- (1050061, 4007002, 7),
- (1050061, 4260002, 14),
- (1050062, 4007001, 4),
- (1050062, 4007004, 3),
- (1050062, 4260002, 14),
- (1050063, 4007003, 7),
- (1050063, 4260002, 14),
- (1050064, 4007007, 7),
- (1050064, 4260002, 14),
- (1051062, 4007002, 7),
- (1051062, 4260002, 14),
- (1051063, 4007001, 4),
- (1051063, 4007004, 3),
- (1051063, 4260002, 14),
- (1051064, 4007003, 7),
- (1051064, 4260002, 14),
- (1051065, 4007007, 7),
- (1051065, 4260002, 14),
- (1050075, 4007006, 8),
- (1050075, 4260003, 16),
- (1050076, 4007002, 8),
- (1050076, 4260003, 16),
- (1050077, 4007003, 8),
- (1050077, 4260003, 16),
- (1050078, 4007007, 8),
- (1050078, 4260003, 16),
- (1051066, 4007006, 8),
- (1051066, 4260003, 16),
- (1051067, 4007002, 8),
- (1051067, 4260003, 16),
- (1051068, 4007003, 8),
- (1051068, 4260003, 16),
- (1051069, 4007007, 8),
- (1051069, 4260003, 16),
- (1050088, 4007006, 9),
- (1050088, 4260004, 18),
- (1050089, 4007002, 9),
- (1050089, 4260004, 18),
- (1050090, 4007003, 9),
- (1050090, 4260004, 18),
- (1050091, 4007007, 9),
- (1050091, 4260004, 18),
- (1051082, 4007006, 9),
- (1051082, 4260004, 18),
- (1051083, 4007002, 9),
- (1051083, 4260004, 18),
- (1051084, 4007003, 9),
- (1051084, 4260004, 18),
- (1051085, 4007007, 9),
- (1051085, 4260004, 18),
- (1050106, 4007003, 10),
- (1050106, 4260005, 20),
- (1050107, 4007002, 10),
- (1050107, 4260005, 20),
- (1050108, 4007006, 10),
- (1050108, 4260005, 20),
- (1051105, 4007003, 10),
- (1051105, 4260005, 20),
- (1051106, 4007002, 10),
- (1051106, 4260005, 20),
- (1051107, 4007006, 10),
- (1051107, 4260005, 20),
- (1052071, 4007006, 11),
- (1052071, 4260006, 22),
- (1052071, 4000244, 5),
- (1052071, 4000245, 5),
- (1052162, 4007005, 12),
- (1052162, 4260007, 16),
- (1052162, 4260008, 8),
- (1052162, 4020009, 15),
- (1052157, 4007005, 12),
- (1052157, 4260007, 4),
- (1052157, 4260008, 20),
- (1052157, 4021010, 1),
- (1072122, 4007000, 5),
- (1072122, 4260000, 5),
- (1072123, 4007003, 5),
- (1072123, 4260000, 5),
- (1072124, 4007002, 5),
- (1072124, 4260000, 5),
- (1072125, 4007005, 5),
- (1072125, 4260000, 5),
- (1072144, 4007006, 6),
- (1072144, 4260001, 6),
- (1072145, 4007002, 6),
- (1072145, 4260001, 6),
- (1072146, 4007003, 6),
- (1072146, 4260001, 6),
- (1072164, 4007002, 7),
- (1072164, 4260002, 7),
- (1072165, 4007001, 4),
- (1072165, 4007004, 3),
- (1072165, 4260002, 7),
- (1072166, 4007003, 7),
- (1072166, 4260002, 7),
- (1072167, 4007007, 7),
- (1072167, 4260002, 7),
- (1072182, 4007002, 8),
- (1072182, 4260003, 8),
- (1072183, 4007006, 8),
- (1072183, 4260003, 8),
- (1072184, 4007003, 8),
- (1072184, 4260003, 8),
- (1072185, 4007007, 8),
- (1072185, 4260003, 8),
- (1072203, 4007006, 9),
- (1072203, 4260004, 9),
- (1072204, 4007003, 9),
- (1072204, 4260004, 9),
- (1072205, 4007007, 9),
- (1072205, 4260004, 9),
- (1072227, 4007006, 10),
- (1072227, 4260005, 10),
- (1072228, 4007002, 10),
- (1072228, 4260005, 10),
- (1072229, 4007003, 10),
- (1072229, 4260005, 10),
- (1072269, 4007006, 11),
- (1072269, 4260006, 11),
- (1072269, 4000244, 5),
- (1072269, 4000245, 5),
- (1072363, 4007004, 12),
- (1072363, 4260007, 8),
- (1072363, 4260008, 4),
- (1072363, 4020009, 15),
- (1072357, 4007005, 12),
- (1072357, 4260007, 2),
- (1072357, 4260008, 10),
- (1072357, 4021010, 1),
- (1082083, 4007007, 5),
- (1082083, 4260000, 5),
- (1082084, 4007002, 5),
- (1082084, 4260000, 5),
- (1082085, 4007006, 5),
- (1082085, 4260000, 5),
- (1082089, 4007004, 6),
- (1082089, 4260001, 6),
- (1082090, 4007006, 6),
- (1082090, 4260001, 6),
- (1082091, 4007007, 6),
- (1082091, 4260001, 6),
- (1082106, 4007002, 7),
- (1082106, 4260002, 7),
- (1082107, 4007004, 7),
- (1082107, 4260002, 7),
- (1082108, 4007007, 7),
- (1082108, 4260002, 7),
- (1082109, 4007006, 8),
- (1082109, 4260003, 8),
- (1082110, 4007002, 8),
- (1082110, 4260003, 8),
- (1082111, 4007003, 8),
- (1082111, 4260003, 8),
- (1082112, 4007007, 8),
- (1082112, 4260003, 8),
- (1082125, 4007006, 9),
- (1082125, 4260004, 9),
- (1082126, 4007003, 9),
- (1082126, 4260004, 9),
- (1082127, 4007007, 9),
- (1082127, 4260004, 9),
- (1082158, 4007006, 10),
- (1082158, 4260005, 10),
- (1082159, 4007002, 10),
- (1082159, 4260005, 10),
- (1082160, 4007003, 10),
- (1082160, 4260005, 10),
- (1082163, 4007006, 11),
- (1082163, 4260006, 11),
- (1082163, 4000244, 5),
- (1082163, 4000245, 5),
- (1082241, 4007001, 12),
- (1082241, 4260007, 8),
- (1082241, 4260008, 4),
- (1082241, 4020009, 15),
- (1082236, 4007001, 12),
- (1082236, 4260007, 2),
- (1082236, 4260008, 10),
- (1082236, 4021010, 1),
- (1452008, 4011000, 1),
- (1452008, 4260000, 20),
- (1462007, 4011000, 1),
- (1462007, 4260000, 20),
- (1452004, 4011001, 2),
- (1452004, 4260001, 22),
- (1462008, 4011001, 2),
- (1462008, 4260001, 22),
- (1452009, 4007006, 7),
- (1452009, 4011001, 3),
- (1452009, 4260002, 24),
- (1452010, 4007002, 7),
- (1452010, 4011001, 3),
- (1452010, 4260002, 24),
- (1452011, 4007004, 7),
- (1452011, 4011001, 3),
- (1452011, 4260002, 24),
- (1462009, 4011001, 3),
- (1462009, 4260002, 24),
- (1452012, 4007002, 8),
- (1452012, 4011002, 3),
- (1452012, 4260003, 26),
- (1452013, 4007006, 8),
- (1452013, 4011002, 3),
- (1452013, 4260003, 26),
- (1452014, 4007004, 8),
- (1452014, 4011002, 3),
- (1452014, 4260003, 26),
- (1452015, 4007007, 8),
- (1452015, 4011002, 3),
- (1452015, 4260003, 26),
- (1462010, 4007002, 8),
- (1462010, 4011002, 3),
- (1462010, 4260003, 26),
- (1462011, 4007006, 8),
- (1462011, 4011002, 3),
- (1462011, 4260003, 26),
- (1462012, 4007004, 8),
- (1462012, 4011002, 3),
- (1462012, 4260003, 26),
- (1462013, 4007007, 8),
- (1462013, 4011002, 3),
- (1462013, 4260003, 26),
- (1452017, 4011002, 4),
- (1452017, 4260004, 28),
- (1462018, 4011002, 4),
- (1462018, 4260004, 28),
- (1452019, 4007001, 10),
- (1452019, 4011003, 4),
- (1452019, 4260005, 30),
- (1452020, 4007004, 10),
- (1452020, 4011003, 4),
- (1452020, 4260005, 30),
- (1452021, 4007007, 10),
- (1452021, 4011003, 4),
- (1452021, 4260005, 30),
- (1462015, 4007001, 10),
- (1462015, 4011003, 4),
- (1462015, 4260005, 30),
- (1462016, 4007004, 10),
- (1462016, 4011003, 4),
- (1462016, 4260005, 30),
- (1462017, 4007007, 10),
- (1462017, 4011003, 4),
- (1462017, 4260005, 30),
- (1452044, 4011003, 5),
- (1452044, 4260006, 32),
- (1452044, 4000244, 20),
- (1452044, 4000245, 20),
- (1462039, 4011003, 5),
- (1462039, 4260006, 32),
- (1462039, 4000244, 20),
- (1462039, 4000245, 20),
- (1452059, 4011005, 5),
- (1452059, 4260007, 20),
- (1452059, 4260008, 14),
- (1452059, 4020009, 45),
- (1462051, 4011005, 5),
- (1462051, 4260007, 20),
- (1462051, 4260008, 14),
- (1462051, 4020009, 45),
- (1452057, 4011005, 5),
- (1452057, 4260007, 14),
- (1452057, 4260008, 20),
- (1452057, 4021010, 3),
- (1462050, 4011005, 5),
- (1462050, 4260007, 14),
- (1462050, 4260008, 20),
- (1462050, 4021010, 3),
- (1002207, 4007006, 5),
- (1002207, 4260000, 5),
- (1002208, 4007002, 5),
- (1002208, 4260000, 5),
- (1002209, 4007003, 5),
- (1002209, 4260000, 5),
- (1002210, 4007004, 5),
- (1002210, 4260000, 5),
- (1002247, 4007000, 6),
- (1002247, 4260001, 6),
- (1002248, 4007001, 6),
- (1002248, 4260001, 6),
- (1002249, 4007007, 6),
- (1002249, 4260001, 6),
- (1002281, 4007000, 7),
- (1002281, 4260002, 7),
- (1002282, 4007002, 7),
- (1002282, 4260002, 7),
- (1002283, 4007005, 7),
- (1002283, 4260002, 7),
- (1002284, 4007001, 7),
- (1002284, 4260002, 7),
- (1002285, 4007006, 7),
- (1002285, 4260002, 7),
- (1002327, 4007000, 8),
- (1002327, 4260003, 8),
- (1002328, 4007003, 8),
- (1002328, 4260003, 8),
- (1002329, 4007006, 8),
- (1002329, 4260003, 8),
- (1002330, 4007007, 8),
- (1002330, 4260003, 8),
- (1002323, 4007003, 9),
- (1002323, 4260004, 9),
- (1002324, 4007000, 9),
- (1002324, 4260004, 9),
- (1002325, 4007005, 9),
- (1002325, 4260004, 9),
- (1002326, 4007006, 9),
- (1002326, 4260004, 9),
- (1002380, 4007003, 10),
- (1002380, 4260005, 10),
- (1002381, 4007002, 10),
- (1002381, 4260005, 10),
- (1002382, 4007006, 10),
- (1002382, 4260005, 10),
- (1002383, 4007007, 10),
- (1002383, 4260005, 10),
- (1002550, 4007007, 11),
- (1002550, 4260006, 11),
- (1002550, 4000244, 5),
- (1002550, 4000245, 5),
- (1002793, 4007005, 12),
- (1002793, 4260007, 8),
- (1002793, 4260008, 4),
- (1002793, 4020009, 15),
- (1002779, 4007005, 12),
- (1002779, 4260007, 2),
- (1002779, 4260008, 10),
- (1002779, 4021010, 1),
- (1040094, 4007006, 5),
- (1040094, 4260000, 5),
- (1040095, 4007002, 5),
- (1040095, 4260000, 5),
- (1040096, 4007004, 5),
- (1040096, 4260000, 5),
- (1040097, 4007003, 5),
- (1040097, 4260000, 5),
- (1041077, 4007005, 5),
- (1041077, 4260000, 5),
- (1041078, 4007002, 5),
- (1041078, 4260000, 5),
- (1041079, 4007004, 5),
- (1041079, 4260000, 5),
- (1041080, 4007006, 5),
- (1041080, 4260000, 5),
- (1040098, 4007001, 6),
- (1040098, 4260001, 6),
- (1040099, 4007004, 6),
- (1040099, 4260001, 6),
- (1040100, 4007007, 6),
- (1040100, 4260001, 6),
- (1041094, 4007001, 6),
- (1041094, 4260001, 6),
- (1041095, 4007006, 6),
- (1041095, 4260001, 6),
- (1041096, 4007007, 6),
- (1041096, 4260001, 6),
- (1040105, 4007000, 7),
- (1040105, 4260002, 7),
- (1040106, 4007002, 7),
- (1040106, 4260002, 7),
- (1040107, 4007007, 7),
- (1040107, 4260002, 7),
- (1041100, 4007005, 7),
- (1041100, 4260002, 7),
- (1041101, 4007002, 7),
- (1041101, 4260002, 7),
- (1041102, 4007006, 7),
- (1041102, 4260002, 7),
- (1041103, 4007006, 7),
- (1041103, 4260002, 7),
- (1040108, 4007003, 8),
- (1040108, 4260003, 8),
- (1040109, 4007006, 8),
- (1040109, 4260003, 8),
- (1040110, 4007007, 8),
- (1040110, 4260003, 8),
- (1041105, 4007003, 8),
- (1041105, 4260003, 8),
- (1041106, 4007006, 8),
- (1041106, 4260003, 8),
- (1041107, 4007007, 8),
- (1041107, 4260003, 8),
- (1040115, 4007003, 9),
- (1040115, 4260004, 9),
- (1040116, 4007000, 9),
- (1040116, 4260004, 9),
- (1040117, 4007005, 9),
- (1040117, 4260004, 9),
- (1040118, 4007006, 9),
- (1040118, 4260004, 9),
- (1041115, 4007003, 9),
- (1041115, 4260004, 9),
- (1041116, 4007000, 9),
- (1041116, 4260004, 9),
- (1041117, 4007005, 9),
- (1041117, 4260004, 9),
- (1041118, 4007006, 9),
- (1041118, 4260004, 9),
- (1060083, 4007006, 5),
- (1060083, 4260000, 5),
- (1060084, 4007002, 5),
- (1060084, 4260000, 5),
- (1060085, 4007004, 5),
- (1060085, 4260000, 5),
- (1060086, 4007003, 5),
- (1060086, 4260000, 5),
- (1061076, 4007005, 5),
- (1061076, 4260000, 5),
- (1061077, 4007002, 5),
- (1061077, 4260000, 5),
- (1061078, 4007004, 5),
- (1061078, 4260000, 5),
- (1061079, 4007006, 5),
- (1061079, 4260000, 5),
- (1060087, 4007001, 6),
- (1060087, 4260001, 6),
- (1060088, 4007004, 6),
- (1060088, 4260001, 6),
- (1060089, 4007007, 6),
- (1060089, 4260001, 6),
- (1061093, 4007001, 6),
- (1061093, 4260001, 6),
- (1061094, 4007006, 6),
- (1061094, 4260001, 6),
- (1061095, 4007007, 6),
- (1061095, 4260001, 6),
- (1060093, 4007000, 7),
- (1060093, 4260002, 7),
- (1060094, 4007002, 7),
- (1060094, 4260002, 7),
- (1060095, 4007007, 7),
- (1060095, 4260002, 7),
- (1061099, 4007005, 7),
- (1061099, 4260002, 7),
- (1061100, 4007002, 7),
- (1061100, 4260002, 7),
- (1061101, 4007006, 7),
- (1061101, 4260002, 7),
- (1061102, 4007006, 7),
- (1061102, 4260002, 7),
- (1060097, 4007003, 8),
- (1060097, 4260003, 8),
- (1060098, 4007006, 8),
- (1060098, 4260003, 8),
- (1060099, 4007007, 8),
- (1060099, 4260003, 8),
- (1061104, 4007003, 8),
- (1061104, 4260003, 8),
- (1061105, 4007006, 8),
- (1061105, 4260003, 8),
- (1061106, 4007007, 8),
- (1061106, 4260003, 8),
- (1060104, 4007003, 9),
- (1060104, 4260004, 9),
- (1060105, 4007000, 9),
- (1060105, 4260004, 9),
- (1060106, 4007005, 9),
- (1060106, 4260004, 9),
- (1060107, 4007006, 9),
- (1060107, 4260004, 9),
- (1061114, 4007003, 9),
- (1061114, 4260004, 9),
- (1061115, 4007000, 9),
- (1061115, 4260004, 9),
- (1061116, 4007005, 9),
- (1061116, 4260004, 9),
- (1061117, 4007006, 9),
- (1061117, 4260004, 9),
- (1050096, 4007003, 10),
- (1050096, 4260005, 20),
- (1050097, 4007002, 10),
- (1050097, 4260005, 20),
- (1050098, 4007006, 10),
- (1050098, 4260005, 20),
- (1050099, 4007007, 10),
- (1050099, 4260005, 20),
- (1051090, 4007003, 10),
- (1051090, 4260005, 20),
- (1051091, 4007002, 10),
- (1051091, 4260005, 20),
- (1051092, 4007006, 10),
- (1051092, 4260005, 20),
- (1051093, 4007007, 10),
- (1051093, 4260005, 20),
- (1052072, 4007007, 11),
- (1052072, 4260006, 22),
- (1052072, 4000244, 5),
- (1052072, 4000245, 5),
- (1052163, 4007005, 12),
- (1052163, 4260007, 16),
- (1052163, 4260008, 8),
- (1052163, 4020009, 15),
- (1052158, 4007005, 12),
- (1052158, 4260007, 4),
- (1052158, 4260008, 20),
- (1052158, 4021010, 1),
- (1072128, 4007002, 5),
- (1072128, 4260000, 5),
- (1072129, 4007003, 5),
- (1072129, 4260000, 5),
- (1072130, 4007006, 5),
- (1072130, 4260000, 5),
- (1072131, 4007005, 5),
- (1072131, 4260000, 5),
- (1072150, 4007006, 6),
- (1072150, 4260001, 6),
- (1072151, 4007004, 6),
- (1072151, 4260001, 6),
- (1072152, 4007007, 6),
- (1072152, 4260001, 6),
- (1072161, 4007005, 7),
- (1072161, 4260002, 7),
- (1072162, 4007002, 7),
- (1072162, 4260002, 7),
- (1072163, 4007006, 7),
- (1072163, 4260002, 7),
- (1072172, 4007003, 8),
- (1072172, 4260003, 8),
- (1072173, 4007006, 8),
- (1072173, 4260003, 8),
- (1072174, 4007007, 8),
- (1072174, 4260003, 8),
- (1072192, 4007003, 9),
- (1072192, 4260004, 9),
- (1072193, 4007000, 9),
- (1072193, 4260004, 9),
- (1072194, 4007005, 9),
- (1072194, 4260004, 9),
- (1072195, 4007006, 9),
- (1072195, 4260004, 9),
- (1072213, 4007003, 10),
- (1072213, 4260005, 10),
- (1072214, 4007002, 10),
- (1072214, 4260005, 10),
- (1072215, 4007006, 10),
- (1072215, 4260005, 10),
- (1072216, 4007007, 10),
- (1072216, 4260005, 10),
- (1072272, 4007007, 11),
- (1072272, 4260006, 11),
- (1072272, 4000244, 5),
- (1072272, 4000245, 5),
- (1072364, 4007005, 12),
- (1072364, 4260007, 8),
- (1072364, 4260008, 4),
- (1072364, 4020009, 15),
- (1072358, 4007005, 12),
- (1072358, 4260007, 2),
- (1072358, 4260008, 10),
- (1072358, 4021010, 1),
- (1082065, 4007002, 5),
- (1082065, 4260000, 5),
- (1082066, 4007004, 5),
- (1082066, 4260000, 5),
- (1082067, 4007006, 5),
- (1082067, 4260000, 5),
- (1082092, 4007000, 6),
- (1082092, 4260001, 6),
- (1082093, 4007001, 6),
- (1082093, 4260001, 6),
- (1082094, 4007004, 6),
- (1082094, 4260001, 6),
- (1082095, 4007000, 7),
- (1082095, 4260002, 7),
- (1082096, 4007001, 7),
- (1082096, 4260002, 7),
- (1082097, 4007004, 7),
- (1082097, 4260002, 7),
- (1082118, 4007003, 8),
- (1082118, 4260003, 8),
- (1082119, 4007005, 8),
- (1082119, 4260003, 8),
- (1082120, 4007006, 8),
- (1082120, 4260003, 8),
- (1082142, 4007003, 9),
- (1082142, 4260004, 9),
- (1082143, 4007005, 9),
- (1082143, 4260004, 9),
- (1082144, 4007007, 9),
- (1082144, 4260004, 9),
- (1082135, 4007002, 10),
- (1082135, 4260005, 10),
- (1082136, 4007003, 10),
- (1082136, 4260005, 10),
- (1082137, 4007006, 10),
- (1082137, 4260005, 10),
- (1082138, 4007007, 10),
- (1082138, 4260005, 10),
- (1082167, 4007007, 11),
- (1082167, 4260006, 11),
- (1082167, 4000244, 5),
- (1082167, 4000245, 5),
- (1082242, 4007005, 12),
- (1082242, 4260007, 8),
- (1082242, 4260008, 4),
- (1082242, 4020009, 15),
- (1082237, 4007005, 12),
- (1082237, 4260007, 2),
- (1082237, 4260008, 10),
- (1082237, 4021010, 1),
- (1092059, 4007000, 12),
- (1092059, 4260007, 2),
- (1092059, 4260008, 10),
- (1092059, 4021010, 1),
- (1332003, 4011000, 1),
- (1332003, 4260000, 20),
- (1472018, 4007001, 5),
- (1472018, 4011000, 1),
- (1472018, 4260000, 20),
- (1472019, 4007006, 5),
- (1472019, 4011000, 1),
- (1472019, 4260000, 20),
- (1472020, 4007002, 5),
- (1472020, 4011000, 1),
- (1472020, 4260000, 20),
- (1472021, 4007007, 5),
- (1472021, 4011000, 1),
- (1472021, 4260000, 20),
- (1332016, 4011000, 1),
- (1332016, 4260000, 20),
- (1332015, 4011001, 2),
- (1332015, 4260001, 22),
- (1472022, 4007000, 6),
- (1472022, 4011001, 2),
- (1472022, 4260001, 22),
- (1472023, 4007006, 6),
- (1472023, 4011001, 2),
- (1472023, 4260001, 22),
- (1472024, 4007002, 6),
- (1472024, 4011001, 2),
- (1472024, 4260001, 22),
- (1472025, 4007007, 6),
- (1472025, 4011001, 2),
- (1472025, 4260001, 22),
- (1332017, 4011001, 2),
- (1332017, 4260001, 22),
- (1332018, 4011001, 3),
- (1332018, 4260002, 24),
- (1472026, 4007004, 7),
- (1472026, 4011001, 3),
- (1472026, 4260002, 24),
- (1472027, 4007003, 7),
- (1472027, 4011001, 3),
- (1472027, 4260002, 24),
- (1472028, 4007002, 7),
- (1472028, 4011001, 3),
- (1472028, 4260002, 24),
- (1472029, 4007007, 7),
- (1472029, 4011001, 3),
- (1472029, 4260002, 24),
- (1332019, 4011001, 3),
- (1332019, 4260002, 24),
- (1472031, 4011002, 3),
- (1472031, 4260003, 26),
- (1332022, 4011002, 3),
- (1332022, 4260003, 26),
- (1332023, 4011002, 3),
- (1332023, 4260003, 26),
- (1332027, 4011002, 4),
- (1332027, 4260004, 28),
- (1472033, 4011002, 4),
- (1472033, 4260004, 28),
- (1332026, 4011002, 4),
- (1332026, 4260004, 28),
- (1332052, 4011003, 4),
- (1332052, 4260005, 30),
- (1472053, 4011003, 4),
- (1472053, 4260005, 30),
- (1332051, 4011003, 4),
- (1332051, 4260005, 30),
- (1332050, 4011003, 5),
- (1332050, 4260006, 32),
- (1332050, 4000244, 20),
- (1332050, 4000245, 20),
- (1472051, 4007003, 11),
- (1472051, 4011003, 5),
- (1472051, 4260006, 32),
- (1472051, 4000244, 20),
- (1472051, 4000245, 20),
- (1472052, 4007005, 11),
- (1472052, 4011003, 5),
- (1472052, 4260006, 32),
- (1472052, 4000244, 20),
- (1472052, 4000245, 20),
- (1332049, 4011003, 5),
- (1332049, 4260006, 32),
- (1332049, 4000244, 20),
- (1332049, 4000245, 20),
- (1332075, 4011005, 5),
- (1332075, 4260007, 20),
- (1332075, 4260008, 14),
- (1332075, 4020009, 45),
- (1332076, 4011005, 5),
- (1332076, 4260007, 20),
- (1332076, 4260008, 14),
- (1332076, 4020009, 45),
- (1472071, 4011005, 5),
- (1472071, 4260007, 20),
- (1472071, 4260008, 14),
- (1472071, 4020009, 45),
- (1332073, 4011005, 5),
- (1332073, 4260007, 14),
- (1332073, 4260008, 20),
- (1332073, 4021010, 3),
- (1332074, 4011005, 5),
- (1332074, 4260007, 14),
- (1332074, 4260008, 20),
- (1332074, 4021010, 3),
- (1472068, 4011005, 5),
- (1472068, 4260007, 14),
- (1472068, 4260008, 20),
- (1472068, 4021010, 3),
- (1002631, 4007000, 5),
- (1002631, 4260000, 5),
- (1002634, 4007005, 6),
- (1002634, 4260001, 6),
- (1002637, 4007007, 7),
- (1002637, 4260002, 7),
- (1002640, 4007002, 8),
- (1002640, 4260003, 8),
- (1002643, 4007006, 9),
- (1002643, 4260004, 9),
- (1002646, 4007007, 10),
- (1002646, 4260005, 10),
- (1002649, 4007007, 11),
- (1002649, 4260006, 11),
- (1002649, 4000244, 5),
- (1002649, 4000245, 5),
- (1002794, 4007006, 12),
- (1002794, 4260007, 8),
- (1002794, 4260008, 4),
- (1002794, 4020009, 15),
- (1002780, 4007006, 12),
- (1002780, 4260007, 2),
- (1002780, 4260008, 10),
- (1002780, 4021010, 1),
- (1052116, 4007003, 5),
- (1052116, 4260000, 10),
- (1052119, 4007007, 6),
- (1052119, 4260001, 12),
- (1052122, 4007006, 7),
- (1052122, 4260002, 14),
- (1052125, 4007001, 8),
- (1052125, 4260003, 16),
- (1052128, 4007001, 9),
- (1052128, 4260004, 18),
- (1052131, 4007006, 10),
- (1052131, 4260005, 20),
- (1052134, 4007007, 11),
- (1052134, 4260006, 22),
- (1052134, 4000244, 5),
- (1052134, 4000245, 5),
- (1052164, 4007006, 12),
- (1052164, 4260007, 16),
- (1052164, 4260008, 8),
- (1052164, 4020009, 15),
- (1052159, 4007006, 12),
- (1052159, 4260007, 4),
- (1052159, 4260008, 20),
- (1052159, 4021010, 1),
- (1072303, 4007000, 5),
- (1072303, 4260000, 5),
- (1072306, 4007007, 6),
- (1072306, 4260001, 6),
- (1072309, 4007007, 7),
- (1072309, 4260002, 7),
- (1072312, 4007002, 8),
- (1072312, 4260003, 8),
- (1072315, 4007007, 9),
- (1072315, 4260004, 9),
- (1072318, 4007007, 10),
- (1072318, 4260005, 10),
- (1072321, 4007007, 11),
- (1072321, 4260006, 11),
- (1072321, 4000244, 5),
- (1072321, 4000245, 5),
- (1072365, 4007006, 12),
- (1072365, 4260007, 8),
- (1072365, 4260008, 4),
- (1072365, 4020009, 15),
- (1072359, 4007006, 12),
- (1072359, 4260007, 2),
- (1072359, 4260008, 10),
- (1072359, 4021010, 1),
- (1082198, 4007000, 5),
- (1082198, 4260000, 5),
- (1082201, 4007007, 6),
- (1082201, 4260001, 6),
- (1082204, 4007007, 7),
- (1082204, 4260002, 7),
- (1082207, 4007002, 8),
- (1082207, 4260003, 8),
- (1082210, 4007006, 9),
- (1082210, 4260004, 9),
- (1082213, 4007007, 10),
- (1082213, 4260005, 10),
- (1082216, 4007007, 11),
- (1082216, 4260006, 11),
- (1082216, 4000244, 5),
- (1082216, 4000245, 5),
- (1082243, 4007006, 12),
- (1082243, 4260007, 8),
- (1082243, 4260008, 4),
- (1082243, 4020009, 15),
- (1082238, 4007006, 12),
- (1082238, 4260007, 2),
- (1082238, 4260008, 10),
- (1082238, 4021010, 1),
- (1482007, 4011000, 1),
- (1482007, 4260000, 20),
- (1492007, 4011000, 1),
- (1492007, 4260000, 20),
- (1482008, 4011001, 2),
- (1482008, 4260001, 22),
- (1492008, 4011001, 2),
- (1492008, 4260001, 22),
- (1482009, 4011001, 3),
- (1482009, 4260002, 24),
- (1492009, 4011001, 3),
- (1492009, 4260002, 24),
- (1482010, 4011002, 3),
- (1482010, 4260003, 26),
- (1492010, 4011002, 3),
- (1492010, 4260003, 26),
- (1482011, 4011002, 4),
- (1482011, 4260004, 28),
- (1492011, 4011002, 4),
- (1492011, 4260004, 28),
- (1482012, 4011003, 4),
- (1482012, 4260005, 30),
- (1492012, 4011003, 4),
- (1492012, 4260005, 30),
- (1482013, 4011003, 5),
- (1482013, 4260006, 32),
- (1482013, 4000244, 20),
- (1482013, 4000245, 20),
- (1492013, 4011003, 5),
- (1492013, 4260006, 32),
- (1492013, 4000244, 20),
- (1492013, 4000245, 20),
- (1482024, 4011005, 5),
- (1482024, 4260007, 20),
- (1482024, 4260008, 14),
- (1482024, 4020009, 45),
- (1492025, 4011005, 5),
- (1492025, 4260007, 20),
- (1492025, 4260008, 14),
- (1492025, 4020009, 45),
- (1482023, 4011005, 5),
- (1482023, 4260007, 14),
- (1482023, 4260008, 20),
- (1482023, 4021010, 3),
- (1492023, 4011005, 5),
- (1492023, 4260007, 14),
- (1492023, 4260008, 20),
- (1492023, 4021010, 3);
-
-INSERT IGNORE INTO `makerrewarddata` (`itemid`, `rewardid`, `quantity`, `prob`) VALUES
- (4250000, 4250000, 1, 14),
- (4250000, 4250001, 1, 5),
- (4250000, 4250002, 1, 1),
- (4250100, 4250100, 1, 14),
- (4250100, 4250101, 1, 5),
- (4250100, 4250102, 1, 1),
- (4250200, 4250200, 1, 14),
- (4250200, 4250201, 1, 5),
- (4250200, 4250202, 1, 1),
- (4250300, 4250300, 1, 14),
- (4250300, 4250301, 1, 5),
- (4250300, 4250302, 1, 1),
- (4250400, 4250400, 1, 14),
- (4250400, 4250401, 1, 5),
- (4250400, 4250402, 1, 1),
- (4250500, 4250500, 1, 14),
- (4250500, 4250501, 1, 5),
- (4250500, 4250502, 1, 1),
- (4250600, 4250600, 1, 14),
- (4250600, 4250601, 1, 5),
- (4250600, 4250602, 1, 1),
- (4250700, 4250700, 1, 14),
- (4250700, 4250701, 1, 5),
- (4250700, 4250702, 1, 1),
- (4250800, 4250800, 1, 75),
- (4250800, 4250801, 1, 24),
- (4250800, 4250802, 1, 1),
- (4250900, 4250900, 1, 75),
- (4250900, 4250901, 1, 24),
- (4250900, 4250902, 1, 1),
- (4251000, 4251000, 1, 75),
- (4251000, 4251001, 1, 24),
- (4251000, 4251002, 1, 1),
- (4251100, 4251100, 1, 75),
- (4251100, 4251101, 1, 24),
- (4251100, 4251102, 1, 1),
- (4251300, 4251300, 1, 27),
- (4251300, 4251301, 1, 12),
- (4251300, 4251302, 1, 1),
- (4251400, 4251400, 1, 27),
- (4251400, 4251401, 1, 12),
- (4251400, 4251402, 1, 1),
- (4250001, 4250001, 1, 3),
- (4250001, 4250000, 9, 2),
- (4250101, 4250101, 1, 3),
- (4250101, 4250100, 9, 2),
- (4250201, 4250201, 1, 3),
- (4250201, 4250200, 9, 2),
- (4250301, 4250301, 1, 3),
- (4250301, 4250300, 9, 2),
- (4250401, 4250401, 1, 3),
- (4250401, 4250400, 9, 2),
- (4250501, 4250501, 1, 3),
- (4250501, 4250500, 9, 2),
- (4250601, 4250601, 1, 3),
- (4250601, 4250600, 9, 2),
- (4250701, 4250701, 1, 3),
- (4250701, 4250700, 9, 2),
- (4250801, 4250801, 1, 3),
- (4250801, 4250800, 9, 2),
- (4250901, 4250901, 1, 3),
- (4250901, 4250900, 9, 2),
- (4251001, 4251001, 1, 3),
- (4251001, 4251000, 9, 2),
- (4251101, 4251101, 1, 3),
- (4251101, 4251100, 9, 2),
- (4251301, 4251301, 1, 1),
- (4251301, 4251300, 9, 1),
- (4251401, 4251401, 1, 1),
- (4251401, 4251400, 9, 1),
- (4250002, 4250002, 1, 3),
- (4250002, 4250001, 9, 7),
- (4250102, 4250102, 1, 3),
- (4250102, 4250101, 9, 7),
- (4250202, 4250202, 1, 3),
- (4250202, 4250201, 9, 7),
- (4250302, 4250302, 1, 3),
- (4250302, 4250301, 9, 7),
- (4250402, 4250402, 1, 3),
- (4250402, 4250401, 9, 7),
- (4250502, 4250502, 1, 3),
- (4250502, 4250501, 9, 7),
- (4250602, 4250602, 1, 3),
- (4250602, 4250601, 9, 7),
- (4250702, 4250702, 1, 3),
- (4250702, 4250701, 9, 7),
- (4250802, 4250802, 1, 3),
- (4250802, 4250801, 9, 7),
- (4250902, 4250902, 1, 3),
- (4250902, 4250901, 9, 7),
- (4251002, 4251002, 1, 3),
- (4251002, 4251001, 9, 7),
- (4251102, 4251102, 1, 3),
- (4251102, 4251101, 9, 7),
- (4251302, 4251302, 1, 1),
- (4251302, 4251301, 9, 4),
- (4251402, 4251402, 1, 1),
- (4251402, 4251401, 9, 4);
diff --git a/tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleItemInformationProvider.java b/tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleItemInformationProvider.java
deleted file mode 100644
index da2278abd5..0000000000
--- a/tools/MapleSkillMakerFetcher/src/mapleskillmakerfetcher/MapleItemInformationProvider.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
- */
-package mapleskillmakerfetcher;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataFileEntry;
-import provider.MapleDataProvider;
-import provider.MapleDataProviderFactory;
-import provider.MapleDataTool;
-/**
- *
- * @author Ronan
- *
- */
-public class MapleItemInformationProvider {
- private final static String wzPath = "../../wz";
-
- private static MapleItemInformationProvider instance = null;
- protected MapleDataProvider itemData;
- protected MapleDataProvider equipData;
- protected MapleDataProvider stringData;
- protected MapleData eqpStringData;
-
- protected Map> equipStatsCache = new HashMap<>();
- protected Map nameCache = new HashMap<>();
-
- private MapleItemInformationProvider() {
- itemData = MapleDataProviderFactory.getDataProvider(new File(wzPath + "/Item.wz"));
- equipData = MapleDataProviderFactory.getDataProvider(new File(wzPath + "/Character.wz"));
- stringData = MapleDataProviderFactory.getDataProvider(new File(wzPath + "/String.wz"));
- eqpStringData = stringData.getData("Eqp.img");
- }
-
- public static MapleItemInformationProvider getInstance() {
- if (instance == null) {
- instance = new MapleItemInformationProvider();
- }
- return instance;
- }
-
- private MapleData getItemData(int itemId) {
- MapleData ret = null;
- String idStr = "0" + String.valueOf(itemId);
- MapleDataDirectoryEntry root = itemData.getRoot();
- for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) {
- for (MapleDataFileEntry iFile : topDir.getFiles()) {
- if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) {
- ret = itemData.getData(topDir.getName() + "/" + iFile.getName());
- if (ret == null) {
- return null;
- }
- ret = ret.getChildByPath(idStr);
- return ret;
- } else if (iFile.getName().equals(idStr.substring(1) + ".img")) {
- return itemData.getData(topDir.getName() + "/" + iFile.getName());
- }
- }
- }
- root = equipData.getRoot();
- for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) {
- for (MapleDataFileEntry iFile : topDir.getFiles()) {
- if (iFile.getName().equals(idStr + ".img")) {
- return equipData.getData(topDir.getName() + "/" + iFile.getName());
- }
- }
- }
- return ret;
- }
-
- public Map getEquipStats(int itemId) {
- if (equipStatsCache.containsKey(itemId)) {
- return equipStatsCache.get(itemId);
- }
- Map ret = new LinkedHashMap<>();
- MapleData item = getItemData(itemId);
- if (item == null) {
- return null;
- }
- MapleData info = item.getChildByPath("info");
- if (info == null) {
- return null;
- }
- for (MapleData data : info.getChildren()) {
- if (data.getName().startsWith("inc")) {
- ret.put(data.getName().substring(3), MapleDataTool.getIntConvert(data));
- }
- /*else if (data.getName().startsWith("req"))
- ret.put(data.getName(), MapleDataTool.getInt(data.getName(), info, 0));*/
- }
- ret.put("reqJob", MapleDataTool.getInt("reqJob", info, 0));
- ret.put("reqLevel", MapleDataTool.getInt("reqLevel", info, 0));
- ret.put("reqDEX", MapleDataTool.getInt("reqDEX", info, 0));
- ret.put("reqSTR", MapleDataTool.getInt("reqSTR", info, 0));
- ret.put("reqINT", MapleDataTool.getInt("reqINT", info, 0));
- ret.put("reqLUK", MapleDataTool.getInt("reqLUK", info, 0));
- ret.put("reqPOP", MapleDataTool.getInt("reqPOP", info, 0));
- ret.put("cash", MapleDataTool.getInt("cash", info, 0));
- ret.put("tuc", MapleDataTool.getInt("tuc", info, 0));
- ret.put("cursed", MapleDataTool.getInt("cursed", info, 0));
- ret.put("success", MapleDataTool.getInt("success", info, 0));
- ret.put("fs", MapleDataTool.getInt("fs", info, 0));
- equipStatsCache.put(itemId, ret);
- return ret;
- }
-
- private MapleData getStringData(int itemId) {
- String cat = "null";
- MapleData theData;
- if ((itemId >= 1010000 && itemId < 1040000) || (itemId >= 1122000 && itemId < 1123000) || (itemId >= 1132000 && itemId < 1133000) || (itemId >= 1142000 && itemId < 1143000)) {
- theData = eqpStringData;
- cat = "Eqp/Accessory";
- } else if (itemId >= 1000000 && itemId < 1010000) {
- theData = eqpStringData;
- cat = "Eqp/Cap";
- } else if (itemId >= 1102000 && itemId < 1103000) {
- theData = eqpStringData;
- cat = "Eqp/Cape";
- } else if (itemId >= 1040000 && itemId < 1050000) {
- theData = eqpStringData;
- cat = "Eqp/Coat";
- } else if (itemId >= 20000 && itemId < 22000) {
- theData = eqpStringData;
- cat = "Eqp/Face";
- } else if (itemId >= 1080000 && itemId < 1090000) {
- theData = eqpStringData;
- cat = "Eqp/Glove";
- } else if (itemId >= 30000 && itemId < 35000) {
- theData = eqpStringData;
- cat = "Eqp/Hair";
- } else if (itemId >= 1050000 && itemId < 1060000) {
- theData = eqpStringData;
- cat = "Eqp/Longcoat";
- } else if (itemId >= 1060000 && itemId < 1070000) {
- theData = eqpStringData;
- cat = "Eqp/Pants";
- } else if (itemId >= 1802000 && itemId < 1842000) {
- theData = eqpStringData;
- cat = "Eqp/PetEquip";
- } else if (itemId >= 1112000 && itemId < 1120000) {
- theData = eqpStringData;
- cat = "Eqp/Ring";
- } else if (itemId >= 1092000 && itemId < 1100000) {
- theData = eqpStringData;
- cat = "Eqp/Shield";
- } else if (itemId >= 1070000 && itemId < 1080000) {
- theData = eqpStringData;
- cat = "Eqp/Shoes";
- } else if (itemId >= 1900000 && itemId < 2000000) {
- theData = eqpStringData;
- cat = "Eqp/Taming";
- } else if (itemId >= 1300000 && itemId < 1800000) {
- theData = eqpStringData;
- cat = "Eqp/Weapon";
- } else {
- return null;
- }
- if (cat.equalsIgnoreCase("null")) {
- return theData.getChildByPath(String.valueOf(itemId));
- } else {
- return theData.getChildByPath(cat + "/" + itemId);
- }
- }
-
- public String getName(int itemId) {
- if (nameCache.containsKey(itemId)) {
- return nameCache.get(itemId);
- }
- MapleData strings = getStringData(itemId);
- if (strings == null) {
- return null;
- }
- String ret = MapleDataTool.getString("name", strings, null);
- nameCache.put(itemId, ret);
- return ret;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleCanvas.java b/tools/MapleSkillMakerFetcher/src/provider/MapleCanvas.java
deleted file mode 100644
index 10ab682196..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleCanvas.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.awt.image.BufferedImage;
-
-public interface MapleCanvas {
- int getHeight();
- int getWidth();
- BufferedImage getImage();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleData.java b/tools/MapleSkillMakerFetcher/src/provider/MapleData.java
deleted file mode 100644
index 4d90a93804..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleData.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.util.List;
-import provider.wz.MapleDataType;
-
-public interface MapleData extends MapleDataEntity, Iterable {
- @Override
- public String getName();
- public MapleDataType getType();
- public List getChildren();
- public MapleData getChildByPath(String path);
- public Object getData();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataDirectoryEntry.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataDirectoryEntry.java
deleted file mode 100644
index cb043e0c94..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataDirectoryEntry.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.util.List;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataDirectoryEntry extends MapleDataEntry {
- public List getSubdirectories();
- public List getFiles();
- public MapleDataEntry getEntry(String name);
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntity.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntity.java
deleted file mode 100644
index 03ff77649c..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntity.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataEntity {
- public String getName();
- public MapleDataEntity getParent();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntry.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntry.java
deleted file mode 100644
index 62db6d0abe..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataEntry.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataEntry extends MapleDataEntity {
- public String getName();
- public int getSize();
- public int getChecksum();
- public int getOffset();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataFileEntry.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataFileEntry.java
deleted file mode 100644
index 902130a612..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataFileEntry.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-/**
- *
- * @author Matze
- */
-public interface MapleDataFileEntry extends MapleDataEntry {
- public void setOffset(int offset);
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataProvider.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataProvider.java
deleted file mode 100644
index 5237b7ac37..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-public interface MapleDataProvider {
- MapleData getData(String path);
- MapleDataDirectoryEntry getRoot();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataProviderFactory.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataProviderFactory.java
deleted file mode 100644
index 5a397d8512..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataProviderFactory.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.io.File;
-import java.io.IOException;
-import provider.wz.WZFile;
-import provider.wz.XMLWZFile;
-
-public class MapleDataProviderFactory {
- private final static String wzPath = "../../wz";
-
- private static MapleDataProvider getWZ(File in, boolean provideImages) {
- if (in.getName().toLowerCase().endsWith("wz") && !in.isDirectory()) {
- try {
- return new WZFile(in, provideImages);
- } catch (IOException e) {
- throw new RuntimeException("Loading WZ File failed", e);
- }
- } else {
- return new XMLWZFile(in);
- }
- }
-
- public static MapleDataProvider getDataProvider(File in) {
- return getWZ(in, false);
- }
-
- public static MapleDataProvider getImageProvidingDataProvider(File in) {
- return getWZ(in, true);
- }
-
- public static File fileInWZPath(String filename) {
- return new File(wzPath, filename);
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillMakerFetcher/src/provider/MapleDataTool.java b/tools/MapleSkillMakerFetcher/src/provider/MapleDataTool.java
deleted file mode 100644
index 25f4c7f817..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/MapleDataTool.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider;
-
-import java.awt.Point;
-import java.awt.image.BufferedImage;
-import provider.wz.MapleDataType;
-
-public class MapleDataTool {
- public static String getString(MapleData data) {
- return ((String) data.getData());
- }
-
- public static String getString(MapleData data, String def) {
- if (data == null || data.getData() == null) {
- return def;
- } else {
- return ((String) data.getData());
- }
- }
-
- public static String getString(String path, MapleData data) {
- return getString(data.getChildByPath(path));
- }
-
- public static String getString(String path, MapleData data, String def) {
- return getString(data.getChildByPath(path), def);
- }
-
- public static double getDouble(MapleData data) {
- return ((Double) data.getData()).doubleValue();
- }
-
- public static float getFloat(MapleData data) {
- return ((Float) data.getData()).floatValue();
- }
-
- public static int getInt(MapleData data) {
- if (data == null || data.getData() == null) {
- return 0;// DEF?
- }
- return ((Integer) data.getData()).intValue();
- }
-
- public static int getInt(String path, MapleData data) {
- return getInt(data.getChildByPath(path));
- }
-
- public static int getIntConvert(MapleData data) {
- if (data.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(data));
- } else {
- return getInt(data);
- }
- }
-
- public static int getIntConvert(String path, MapleData data) {
- MapleData d = data.getChildByPath(path);
- if (d.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(d));
- } else {
- return getInt(d);
- }
- }
-
- public static int getInt(MapleData data, int def) {
- if (data == null || data.getData() == null) {
- return def;
- } else if (data.getType() == MapleDataType.STRING) {
- return Integer.parseInt(getString(data));
- } else {
- return ((Integer) data.getData()).intValue();
- }
- }
-
- public static int getInt(String path, MapleData data, int def) {
- return getInt(data.getChildByPath(path), def);
- }
-
- public static int getIntConvert(String path, MapleData data, int def) {
- MapleData d = data.getChildByPath(path);
- if (d == null) {
- return def;
- }
- if (d.getType() == MapleDataType.STRING) {
- try {
- return Integer.parseInt(getString(d));
- } catch (NumberFormatException nfe) {
- nfe.printStackTrace();
- return def;
- }
- } else {
- return getInt(d, def);
- }
- }
-
- public static BufferedImage getImage(MapleData data) {
- return ((MapleCanvas) data.getData()).getImage();
- }
-
- public static Point getPoint(MapleData data) {
- return ((Point) data.getData());
- }
-
- public static Point getPoint(String path, MapleData data) {
- return getPoint(data.getChildByPath(path));
- }
-
- public static Point getPoint(String path, MapleData data, Point def) {
- final MapleData pointData = data.getChildByPath(path);
- if (pointData == null) {
- return def;
- }
- return getPoint(pointData);
- }
-
- public static String getFullDataPath(MapleData data) {
- String path = "";
- MapleDataEntity myData = data;
- while (myData != null) {
- path = myData.getName() + "/" + path;
- myData = myData.getParent();
- }
- return path.substring(0, path.length() - 1);
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/FileStoredPngMapleCanvas.java b/tools/MapleSkillMakerFetcher/src/provider/wz/FileStoredPngMapleCanvas.java
deleted file mode 100644
index 21736c2c16..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/FileStoredPngMapleCanvas.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import javax.imageio.ImageIO;
-import provider.MapleCanvas;
-
-public class FileStoredPngMapleCanvas implements MapleCanvas {
- private File file;
- private int width;
- private int height;
- private BufferedImage image;
-
- public FileStoredPngMapleCanvas(int width, int height, File fileIn) {
- this.width = width;
- this.height = height;
- this.file = fileIn;
- }
-
- @Override
- public int getHeight() {
- return height;
- }
-
- @Override
- public int getWidth() {
- return width;
- }
-
- @Override
- public BufferedImage getImage() {
- loadImageIfNecessary();
- return image;
- }
-
- private void loadImageIfNecessary() {
- if (image == null) {
- try {
- image = ImageIO.read(file);
- // replace the dimensions loaded from the wz by the REAL dimensions from the image - should be equal tho
- width = image.getWidth();
- height = image.getHeight();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/ImgMapleSound.java b/tools/MapleSkillMakerFetcher/src/provider/wz/ImgMapleSound.java
deleted file mode 100644
index 8add2ccb36..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/ImgMapleSound.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-public class ImgMapleSound {
- private int dataLength, offset;
-
- public ImgMapleSound(int dataLength, int offset) {
- this.dataLength = dataLength;
- this.offset = offset;
- }
-
- public int getDataLength() {
- return dataLength;
- }
-
- public int getOffset() {
- return offset;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/ListWZFile.java b/tools/MapleSkillMakerFetcher/src/provider/wz/ListWZFile.java
deleted file mode 100644
index 1672a08c59..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/ListWZFile.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import provider.MapleDataProviderFactory;
-import tools.data.input.GenericLittleEndianAccessor;
-import tools.data.input.InputStreamByteStream;
-import tools.data.input.LittleEndianAccessor;
-
-public class ListWZFile {
- private LittleEndianAccessor lea;
- private List entries = new ArrayList();
- private static Collection modernImgs = new HashSet();
-
- public static byte[] xorBytes(byte[] a, byte[] b) {
- byte[] wusched = new byte[a.length];
- for (int i = 0; i < a.length; i++) {
- wusched[i] = (byte) (a[i] ^ b[i]);
- }
- return wusched;
- }
-
- public ListWZFile(File listwz) throws FileNotFoundException {
- lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(listwz))));
- while (lea.available() > 0) {
- int l = lea.readInt() * 2;
- byte[] chunk = new byte[l];
- for (int i = 0; i < chunk.length; i++) {
- chunk[i] = lea.readByte();
- }
- lea.readChar();
- final String value = String.valueOf(WZTool.readListString(chunk));
- entries.add(value);
- }
- entries = Collections.unmodifiableList(entries);
- }
-
- public List getEntries() {
- return entries;
- }
-
- public static void init() {
- final String listWz = System.getProperty("listwz");
- if (listWz != null) {
- ListWZFile listwz;
- try {
- listwz = new ListWZFile(MapleDataProviderFactory.fileInWZPath("List.wz"));
- modernImgs = new HashSet(listwz.getEntries());
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
-
- public static boolean isModernImgFile(String path) {
- return modernImgs.contains(path);
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/MapleDataType.java b/tools/MapleSkillMakerFetcher/src/provider/wz/MapleDataType.java
deleted file mode 100644
index e074d57d14..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/MapleDataType.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-public enum MapleDataType {
- NONE, IMG_0x00, SHORT, INT, FLOAT, DOUBLE, STRING, EXTENDED, PROPERTY, CANVAS, VECTOR, CONVEX, SOUND, UOL, UNKNOWN_TYPE, UNKNOWN_EXTENDED_TYPE;
-}
\ No newline at end of file
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/PNGMapleCanvas.java b/tools/MapleSkillMakerFetcher/src/provider/wz/PNGMapleCanvas.java
deleted file mode 100644
index 97c2303804..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/PNGMapleCanvas.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.Point;
-import java.awt.image.BufferedImage;
-import java.awt.image.DataBuffer;
-import java.awt.image.DataBufferByte;
-import java.awt.image.PixelInterleavedSampleModel;
-import java.awt.image.Raster;
-import java.awt.image.SampleModel;
-import java.awt.image.WritableRaster;
-import java.util.zip.DataFormatException;
-import java.util.zip.Inflater;
-import provider.MapleCanvas;
-
-public class PNGMapleCanvas implements MapleCanvas {
- private static final int[] ZAHLEN = new int[]{2, 1, 0, 3};
- private int height;
- private int width;
- private int dataLength;
- private int format;
- private byte[] data;
-
- public PNGMapleCanvas(int width, int height, int dataLength, int format, byte[] data) {
- super();
- this.height = height;
- this.width = width;
- this.dataLength = dataLength;
- this.format = format;
- this.data = data;
- }
-
- public int getHeight() {
- return height;
- }
-
- public int getWidth() {
- return width;
- }
-
- public int getFormat() {
- return format;
- }
-
- private byte[] getData() {
- return data;
- }
-
- @Override
- public BufferedImage getImage() {
- int sizeUncompressed = 0;
- int size8888 = 0;
- int maxWriteBuf = 2;
- int maxHeight = 3;
- byte[] writeBuf = new byte[maxWriteBuf];
- @SuppressWarnings ("unused")
- byte[] rowPointers = new byte[maxHeight];
- switch (getFormat()) {
- case 1:
- case 513:
- sizeUncompressed = getHeight() * getWidth() * 4;
- break;
- case 2:
- sizeUncompressed = getHeight() * getWidth() * 8;
- break;
- case 517:
- sizeUncompressed = getHeight() * getWidth() / 128;
- break;
- }
- size8888 = getHeight() * getWidth() * 8;
- if (size8888 > maxWriteBuf) {
- maxWriteBuf = size8888;
- writeBuf = new byte[maxWriteBuf];
- }
- if (getHeight() > maxHeight) {
- maxHeight = getHeight();
- rowPointers = new byte[maxHeight];
- }
- Inflater dec = new Inflater();
- dec.setInput(getData(), 0, dataLength);
- int declen = 0;
- byte[] uc = new byte[sizeUncompressed];
- try {
- declen = dec.inflate(uc);
- } catch (DataFormatException ex) {
- throw new RuntimeException("zlib fucks", ex);
- }
- dec.end();
- if (getFormat() == 1) {
- for (int i = 0; i < sizeUncompressed; i++) {
- byte low = (byte) (uc[i] & 0x0F);
- byte high = (byte) (uc[i] & 0xF0);
- writeBuf[(i << 1)] = (byte) (((low << 4) | low) & 0xFF);
- writeBuf[(i << 1) + 1] = (byte) (high | ((high >>> 4) & 0xF));
- }
- } else if (getFormat() == 2) {
- writeBuf = uc;
- } else if (getFormat() == 513) {
- for (int i = 0; i < declen; i += 2) {
- byte bBits = (byte) ((uc[i] & 0x1F) << 3);
- byte gBits = (byte) (((uc[i + 1] & 0x07) << 5) | ((uc[i] & 0xE0) >> 3));
- byte rBits = (byte) (uc[i + 1] & 0xF8);
- writeBuf[(i << 1)] = (byte) (bBits | (bBits >> 5));
- writeBuf[(i << 1) + 1] = (byte) (gBits | (gBits >> 6));
- writeBuf[(i << 1) + 2] = (byte) (rBits | (rBits >> 5));
- writeBuf[(i << 1) + 3] = (byte) 0xFF;
- }
- } else if (getFormat() == 517) {
- byte b = 0x00;
- int pixelIndex = 0;
- for (int i = 0; i < declen; i++) {
- for (int j = 0; j < 8; j++) {
- b = (byte) (((uc[i] & (0x01 << (7 - j))) >> (7 - j)) * 255);
- for (int k = 0; k < 16; k++) {
- pixelIndex = (i << 9) + (j << 6) + k * 2;
- writeBuf[pixelIndex] = b;
- writeBuf[pixelIndex + 1] = b;
- writeBuf[pixelIndex + 2] = b;
- writeBuf[pixelIndex + 3] = (byte) 0xFF;
- }
- }
- }
- }
- DataBufferByte imgData = new DataBufferByte(writeBuf, sizeUncompressed);
- SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, getWidth(), getHeight(), 4, getWidth() * 4, ZAHLEN);
- WritableRaster imgRaster = Raster.createWritableRaster(sm, imgData, new Point(0, 0));
- BufferedImage aa = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
- aa.setData(imgRaster);
- return aa;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZDirectoryEntry.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZDirectoryEntry.java
deleted file mode 100644
index d24b8cb2b9..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZDirectoryEntry.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataEntity;
-import provider.MapleDataEntry;
-import provider.MapleDataFileEntry;
-
-public class WZDirectoryEntry extends WZEntry implements MapleDataDirectoryEntry {
- private List subdirs = new ArrayList();
- private List files = new ArrayList();
- private Map entries = new HashMap();
-
- public WZDirectoryEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super(name, size, checksum, parent);
- }
-
- public WZDirectoryEntry() {
- super(null, 0, 0, null);
- }
-
- public void addDirectory(MapleDataDirectoryEntry dir) {
- subdirs.add(dir);
- entries.put(dir.getName(), dir);
- }
-
- public void addFile(MapleDataFileEntry fileEntry) {
- files.add(fileEntry);
- entries.put(fileEntry.getName(), fileEntry);
- }
-
- public List getSubdirectories() {
- return Collections.unmodifiableList(subdirs);
- }
-
- public List getFiles() {
- return Collections.unmodifiableList(files);
- }
-
- public MapleDataEntry getEntry(String name) {
- return entries.get(name);
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZEntry.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZEntry.java
deleted file mode 100644
index 1e921b2082..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZEntry.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import provider.MapleDataEntity;
-import provider.MapleDataEntry;
-
-public class WZEntry implements MapleDataEntry {
- private String name;
- private int size;
- private int checksum;
- private int offset;
- private MapleDataEntity parent;
-
- public WZEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super();
- this.name = name;
- this.size = size;
- this.checksum = checksum;
- this.parent = parent;
- }
-
- public String getName() {
- return name;
- }
-
- public int getSize() {
- return size;
- }
-
- public int getChecksum() {
- return checksum;
- }
-
- public int getOffset() {
- return offset;
- }
-
- public MapleDataEntity getParent() {
- return parent;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZFile.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZFile.java
deleted file mode 100644
index c6c0abf537..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZFile.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataFileEntry;
-import provider.MapleDataProvider;
-import tools.data.input.GenericLittleEndianAccessor;
-import tools.data.input.GenericSeekableLittleEndianAccessor;
-import tools.data.input.InputStreamByteStream;
-import tools.data.input.LittleEndianAccessor;
-import tools.data.input.RandomAccessByteStream;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-public class WZFile implements MapleDataProvider {
- static {
- ListWZFile.init();
- }
- private File wzfile;
- private LittleEndianAccessor lea;
- private SeekableLittleEndianAccessor slea;
- private int headerSize;
- private WZDirectoryEntry root;
- private boolean provideImages;
- private int cOffset;
-
- public WZFile(File wzfile, boolean provideImages) throws IOException {
- this.wzfile = wzfile;
- lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(wzfile))));
- RandomAccessFile raf = new RandomAccessFile(wzfile, "r");
- slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf));
- root = new WZDirectoryEntry(wzfile.getName(), 0, 0, null);
- this.provideImages = provideImages;
- load();
- }
-
- private void load() throws IOException {
- lea.readAsciiString(4);
- lea.readInt();
- lea.readInt();
- headerSize = lea.readInt();
- lea.readNullTerminatedAsciiString();
- lea.readShort();
- parseDirectory(root);
- cOffset = (int) lea.getBytesRead();
- getOffsets(root);
- }
-
- private void getOffsets(MapleDataDirectoryEntry dir) {
- for (MapleDataFileEntry file : dir.getFiles()) {
- file.setOffset(cOffset);
- cOffset += file.getSize();
- }
- for (MapleDataDirectoryEntry sdir : dir.getSubdirectories()) {
- getOffsets(sdir);
- }
- }
-
- private void parseDirectory(WZDirectoryEntry dir) {
- int entries = WZTool.readValue(lea);
- for (int i = 0; i < entries; i++) {
- byte marker = lea.readByte();
- String name = null;
- int size, checksum;
- switch (marker) {
- case 0x02:
- name = WZTool.readDecodedStringAtOffsetAndReset(slea, lea.readInt() + this.headerSize + 1);
- size = WZTool.readValue(lea);
- checksum = WZTool.readValue(lea);
- lea.readInt(); //dummy int
- dir.addFile(new WZFileEntry(name, size, checksum, dir));
- break;
- case 0x03:
- case 0x04:
- name = WZTool.readDecodedString(lea);
- size = WZTool.readValue(lea);
- checksum = WZTool.readValue(lea);
- lea.readInt(); //dummy int
- if (marker == 3) {
- dir.addDirectory(new WZDirectoryEntry(name, size, checksum, dir));
- } else {
- dir.addFile(new WZFileEntry(name, size, checksum, dir));
- }
- break;
- default:
- }
- }
- for (MapleDataDirectoryEntry idir : dir.getSubdirectories()) {
- parseDirectory((WZDirectoryEntry) idir);
- }
- }
-
- public WZIMGFile getImgFile(String path) throws IOException {
- String segments[] = path.split("/");
- WZDirectoryEntry dir = root;
- for (int x = 0; x < segments.length - 1; x++) {
- dir = (WZDirectoryEntry) dir.getEntry(segments[x]);
- if (dir == null) {
- return null;
- }
- }
- WZFileEntry entry = (WZFileEntry) dir.getEntry(segments[segments.length - 1]);
- if (entry == null) {
- return null;
- }
- String fullPath = wzfile.getName().substring(0, wzfile.getName().length() - 3).toLowerCase() + "/" + path;
- return new WZIMGFile(this.wzfile, entry, provideImages, ListWZFile.isModernImgFile(fullPath));
- }
-
- @Override
- public synchronized MapleData getData(String path) {
- try {
- WZIMGFile imgFile = getImgFile(path);
- if (imgFile == null) {
- return null;
- }
- MapleData ret = imgFile.getRoot();
- return ret;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- @Override
- public MapleDataDirectoryEntry getRoot() {
- return root;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZFileEntry.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZFileEntry.java
deleted file mode 100644
index 792371d9cf..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZFileEntry.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import provider.MapleDataEntity;
-import provider.MapleDataFileEntry;
-
-public class WZFileEntry extends WZEntry implements MapleDataFileEntry {
- private int offset;
-
- public WZFileEntry(String name, int size, int checksum, MapleDataEntity parent) {
- super(name, size, checksum, parent);
- }
-
- @Override
- public int getOffset() {
- return offset;
- }
-
- public void setOffset(int offset) {
- this.offset = offset;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGEntry.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGEntry.java
deleted file mode 100644
index 385d785183..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGEntry.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import provider.MapleData;
-import provider.MapleDataEntity;
-
-public class WZIMGEntry implements MapleData {
- private String name;
- private MapleDataType type;
- private List children = new ArrayList(10);
- private Object data;
- private MapleDataEntity parent;
-
- public WZIMGEntry(MapleDataEntity parent) {
- this.parent = parent;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public MapleDataType getType() {
- return type;
- }
-
- @Override
- public List getChildren() {
- return Collections.unmodifiableList(children);
- }
-
- @Override
- public MapleData getChildByPath(String path) {
- String segments[] = path.split("/");
- if (segments[0].equals("..")) {
- return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1));
- }
- MapleData ret = this;
- for (int x = 0; x < segments.length; x++) {
- boolean foundChild = false;
- for (MapleData child : ret.getChildren()) {
- if (child.getName().equals(segments[x])) {
- ret = child;
- foundChild = true;
- break;
- }
- }
- if (!foundChild) {
- return null;
- }
- }
- return ret;
- }
-
- @Override
- public Object getData() {
- return data;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setType(MapleDataType type) {
- this.type = type;
- }
-
- public void setData(Object data) {
- this.data = data;
- }
-
- public void addChild(WZIMGEntry entry) {
- children.add(entry);
- }
-
- @Override
- public Iterator iterator() {
- return getChildren().iterator();
- }
-
- @Override
- public String toString() {
- return getName() + ":" + getData();
- }
-
- public MapleDataEntity getParent() {
- return parent;
- }
-
- public void finish() {
- ((ArrayList) children).trimToSize();
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGFile.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGFile.java
deleted file mode 100644
index bec06c78bd..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZIMGFile.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.awt.Point;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.RandomAccessFile;
-import tools.data.input.GenericSeekableLittleEndianAccessor;
-import tools.data.input.RandomAccessByteStream;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-public class WZIMGFile {
- private WZFileEntry file;
- private WZIMGEntry root;
- private boolean provideImages;
- @SuppressWarnings ("unused")
- private boolean modernImg;
-
- public WZIMGFile(File wzfile, WZFileEntry file, boolean provideImages, boolean modernImg) throws IOException {
- RandomAccessFile raf = new RandomAccessFile(wzfile, "r");
- SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf));
- slea.seek(file.getOffset());
- this.file = file;
- this.provideImages = provideImages;
- root = new WZIMGEntry(file.getParent());
- root.setName(file.getName());
- root.setType(MapleDataType.EXTENDED);
- this.modernImg = modernImg;
- parseExtended(root, slea, 0);
- root.finish();
- raf.close();
- }
-
- protected void dumpImg(OutputStream out, SeekableLittleEndianAccessor slea) throws IOException {
- DataOutputStream os = new DataOutputStream(out);
- long oldPos = slea.getPosition();
- slea.seek(file.getOffset());
- for (int x = 0; x < file.getSize(); x++) {
- os.write(slea.readByte());
- }
- slea.seek(oldPos);
- }
-
- public WZIMGEntry getRoot() {
- return root;
- }
-
- private void parse(WZIMGEntry entry, SeekableLittleEndianAccessor slea) {
- byte marker = slea.readByte();
- switch (marker) {
- case 0: {
- String name = WZTool.readDecodedString(slea);
- entry.setName(name);
- break;
- }
- case 1: {
- String name = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt());
- entry.setName(name);
- break;
- }
- default:
- System.out.println("Unknown Image identifier: " + marker + " at offset " + (slea.getPosition() - file.getOffset()));
- }
- marker = slea.readByte();
- switch (marker) {
- case 0:
- entry.setType(MapleDataType.IMG_0x00);
- break;
- case 2:
- case 11: //??? no idea, since 0.49
- entry.setType(MapleDataType.SHORT);
- entry.setData(Short.valueOf(slea.readShort()));
- break;
- case 3:
- entry.setType(MapleDataType.INT);
- entry.setData(Integer.valueOf(WZTool.readValue(slea)));
- break;
- case 4:
- entry.setType(MapleDataType.FLOAT);
- entry.setData(Float.valueOf(WZTool.readFloatValue(slea)));
- break;
- case 5:
- entry.setType(MapleDataType.DOUBLE);
- entry.setData(Double.valueOf(slea.readDouble()));
- break;
- case 8:
- entry.setType(MapleDataType.STRING);
- byte iMarker = slea.readByte();
- if (iMarker == 0) {
- entry.setData(WZTool.readDecodedString(slea));
- } else if (iMarker == 1) {
- entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, slea.readInt() + file.getOffset()));
- } else {
- System.out.println("Unknown String type " + iMarker);
- }
- break;
- case 9:
- entry.setType(MapleDataType.EXTENDED);
- long endOfExtendedBlock = slea.readInt();
- endOfExtendedBlock += slea.getPosition();
- parseExtended(entry, slea, endOfExtendedBlock);
- break;
- default:
- System.out.println("Unknown Image type " + marker);
- }
- }
-
- private void parseExtended(WZIMGEntry entry, SeekableLittleEndianAccessor slea, long endOfExtendedBlock) {
- byte marker = slea.readByte();
- String type;
- switch (marker) {
- case 0x73:
- type = WZTool.readDecodedString(slea);
- break;
- case 0x1B:
- type = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt());
- break;
- default:
- throw new RuntimeException("Unknown extended image identifier: " + marker + " at offset " +
- (slea.getPosition() - file.getOffset()));
- }
- if (type.equals("Property")) {
- entry.setType(MapleDataType.PROPERTY);
- slea.readByte();
- slea.readByte();
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry cEntry = new WZIMGEntry(entry);
- parse(cEntry, slea);
- cEntry.finish();
- entry.addChild(cEntry);
- }
- } else if (type.equals("Canvas")) {
- entry.setType(MapleDataType.CANVAS);
- slea.readByte();
- marker = slea.readByte();
- if (marker == 0) {
- // do nothing
- } else if (marker == 1) {
- slea.readByte();
- slea.readByte();
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry child = new WZIMGEntry(entry);
- parse(child, slea);
- child.finish();
- entry.addChild(child);
- }
- } else {
- System.out.println("Canvas marker != 1 (" + marker + ")");
- }
- int width = WZTool.readValue(slea);
- int height = WZTool.readValue(slea);
- int format = WZTool.readValue(slea);
- int format2 = slea.readByte();
- slea.readInt();
- int dataLength = slea.readInt() - 1;
- slea.readByte();
- if (provideImages) {
- byte[] pngdata = slea.read(dataLength);
- entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, pngdata));
- } else {
- entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, null));
- slea.skip(dataLength);
- }
- } else if (type.equals("Shape2D#Vector2D")) {
- entry.setType(MapleDataType.VECTOR);
- int x = WZTool.readValue(slea);
- int y = WZTool.readValue(slea);
- entry.setData(new Point(x, y));
- } else if (type.equals("Shape2D#Convex2D")) {
- int children = WZTool.readValue(slea);
- for (int i = 0; i < children; i++) {
- WZIMGEntry cEntry = new WZIMGEntry(entry);
- parseExtended(cEntry, slea, 0);
- cEntry.finish();
- entry.addChild(cEntry);
- }
- } else if (type.equals("Sound_DX8")) {
- entry.setType(MapleDataType.SOUND);
- slea.readByte();
- int dataLength = WZTool.readValue(slea);
- WZTool.readValue(slea); // no clue what this is
- int offset = (int) slea.getPosition();
- entry.setData(new ImgMapleSound(dataLength, offset - file.getOffset()));
- slea.seek(endOfExtendedBlock);
- } else if (type.equals("UOL")) {
- entry.setType(MapleDataType.UOL);
- slea.readByte();
- byte uolmarker = slea.readByte();
- switch (uolmarker) {
- case 0:
- entry.setData(WZTool.readDecodedString(slea));
- break;
- case 1:
- entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()));
- break;
- default:
- System.out.println("Unknown UOL marker: " + uolmarker + " " + entry.getName());
- }
- } else {
- throw new RuntimeException("Unhandled extended type: " + type);
- }
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/WZTool.java b/tools/MapleSkillMakerFetcher/src/provider/wz/WZTool.java
deleted file mode 100644
index 7f5452cd03..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/WZTool.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import tools.data.input.LittleEndianAccessor;
-import tools.data.input.SeekableLittleEndianAccessor;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.SecretKeySpec;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-
-/*
- * Ported Code, see WZFile.java for more info
- */
-public class WZTool {
- private static byte[] encKey;
-
- static {
- byte[] iv = new byte[]{(byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,
- (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,};
- byte[] key = new byte[]{(byte) 0x13, 0x00, 0x00, 0x00,
- (byte) 0x08, 0x00, 0x00, 0x00,
- (byte) 0x06, 0x00, 0x00, 0x00,
- (byte) 0xB4, 0x00, 0x00, 0x00,
- (byte) 0x1B, 0x00, 0x00, 0x00,
- (byte) 0x0F, 0x00, 0x00, 0x00,
- (byte) 0x33, 0x00, 0x00, 0x00,
- (byte) 0x52, 0x00, 0x00, 0x00
- };
- Cipher cipher = null;
- SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
- try {
- cipher = Cipher.getInstance("AES");
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (NoSuchPaddingException e) {
- e.printStackTrace();
- }
- try {
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
- } catch (InvalidKeyException e) {
- e.printStackTrace();
- }
- encKey = new byte[0xFFFF];
- for (int i = 0; i < (0xFFFF / 16); i++) {
- try {
- iv = cipher.doFinal(iv);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- } catch (BadPaddingException e) {
- e.printStackTrace();
- }
- System.arraycopy(iv, 0, encKey, (i * 16), 16);
- }
- try {
- iv = cipher.doFinal(iv);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- } catch (BadPaddingException e) {
- e.printStackTrace();
- }
- System.arraycopy(iv, 0, encKey, 65520, 15);
- }
-
- public static byte[] readListString(byte[] str) {
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ encKey[i]);
- }
- return str;
- }
-
- public static String readDecodedString(LittleEndianAccessor llea) {
- int strLength;
- byte b = llea.readByte();
- if (b == 0x00) {
- return "";
- }
- if (b >= 0) {
- if (b == 0x7F) {
- strLength = llea.readInt();
- } else {
- strLength = b;
- }
- if (strLength < 0) {
- return "";
- }
- byte str[] = new byte[strLength * 2];
- for (int i = 0; i < strLength * 2; i++) {
- str[i] = llea.readByte();
- }
- return DecryptUnicodeStr(str);
- } else {
- if (b == -128) {
- strLength = llea.readInt();
- } else {
- strLength = -b;
- }
- if (strLength < 0) {
- return "";
- }
- byte str[] = new byte[strLength];
- for (int i = 0; i < strLength; i++) {
- str[i] = llea.readByte();
- }
- return DecryptAsciiStr(str);
- }
- }
-
- public static String DecryptAsciiStr(byte[] str) {
- byte xorByte = (byte) 0xAA;
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ xorByte ^ encKey[i]);
- xorByte++;
- }
- return new String(str);
- }
-
- public static String DecryptUnicodeStr(byte[] str) {
- int xorByte = 0xAAAA;
- char[] charRet = new char[str.length / 2];
- for (int i = 0; i < str.length; i++) {
- str[i] = (byte) (str[i] ^ encKey[i]);
- }
- for (int i = 0; i < (str.length / 2); i++) {
- char toXor = (char) ((str[i] << 8) | str[i + 1]);
- charRet[i] = (char) (toXor ^ xorByte);
- xorByte++;
- }
- return String.valueOf(charRet);
- }
-
- public static String readDecodedStringAtOffset(SeekableLittleEndianAccessor slea, int offset) {
- slea.seek(offset);
- return readDecodedString(slea);
- }
-
- public static String readDecodedStringAtOffsetAndReset(SeekableLittleEndianAccessor slea, int offset) {
- long pos = 0;
- pos = slea.getPosition();
- slea.seek(offset);
- String ret = readDecodedString(slea);
- slea.seek(pos);
- return ret;
- }
-
- public static int readValue(LittleEndianAccessor lea) {
- byte b = lea.readByte();
- if (b == -128) {
- return lea.readInt();
- } else {
- return b;
- }
- }
-
- public static float readFloatValue(LittleEndianAccessor lea) {
- byte b = lea.readByte();
- if (b == -128) {
- return lea.readFloat();
- } else {
- return 0;
- }
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/XMLDomMapleData.java b/tools/MapleSkillMakerFetcher/src/provider/wz/XMLDomMapleData.java
deleted file mode 100644
index 151a04c2fd..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/XMLDomMapleData.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
- */
-package provider.wz;
-
-import java.awt.Point;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.text.NumberFormat;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import provider.MapleData;
-import provider.MapleDataEntity;
-import org.w3c.dom.Document;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-public class XMLDomMapleData implements MapleData {
- private Node node;
- private File imageDataDir;
- private NumberFormat nf;
-
- public XMLDomMapleData(FileInputStream fis, File imageDataDir) {
- try {
- DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
- Document document = documentBuilder.parse(fis);
- this.node = document.getFirstChild();
- } catch (ParserConfigurationException e) {
- throw new RuntimeException(e);
- } catch (SAXException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- this.imageDataDir = imageDataDir;
- this.nf = NumberFormat.getInstance(Locale.FRANCE);
- }
-
- private XMLDomMapleData(Node node) {
- this.node = node;
- this.nf = NumberFormat.getInstance(Locale.FRANCE);
- }
-
- @Override
- public MapleData getChildByPath(String path) {
- String segments[] = path.split("/");
- if (segments[0].equals("..")) {
- return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1));
- }
-
- Node myNode = node;
- for (int x = 0; x < segments.length; x++) {
- NodeList childNodes = myNode.getChildNodes();
- boolean foundChild = false;
- for (int i = 0; i < childNodes.getLength(); i++) {
- Node childNode = childNodes.item(i);
- if (childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(segments[x])) {
- myNode = childNode;
- foundChild = true;
- break;
- }
- }
- if (!foundChild) {
- return null;
- }
- }
- XMLDomMapleData ret = new XMLDomMapleData(myNode);
- ret.imageDataDir = new File(imageDataDir, getName() + "/" + path).getParentFile();
- return ret;
- }
-
- @Override
- public List getChildren() {
- List ret = new ArrayList();
- NodeList childNodes = node.getChildNodes();
- for (int i = 0; i < childNodes.getLength(); i++) {
- Node childNode = childNodes.item(i);
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- XMLDomMapleData child = new XMLDomMapleData(childNode);
- child.imageDataDir = new File(imageDataDir, getName());
- ret.add(child);
- }
- }
- return ret;
- }
-
- @Override
- public Object getData() {
- NamedNodeMap attributes = node.getAttributes();
- MapleDataType type = getType();
- switch (type) {
- case DOUBLE:
- case FLOAT:
- case INT:
- case SHORT: {
- String value = attributes.getNamedItem("value").getNodeValue();
- Number nval;
-
- try {
- nval = nf.parse(value);
- }
- catch(java.text.ParseException pe) {
- pe.printStackTrace();
- nval = 0.0f;
- }
-
- switch (type) {
- case DOUBLE:
- return nval.doubleValue();
- case FLOAT:
- return nval.floatValue();
- case INT:
- return nval.intValue();
- case SHORT:
- return nval.shortValue();
- default:
- return null;
- }
- }
- case STRING:
- case UOL: {
- String value = attributes.getNamedItem("value").getNodeValue();
- return value;
- }
- case VECTOR: {
- String x = attributes.getNamedItem("x").getNodeValue();
- String y = attributes.getNamedItem("y").getNodeValue();
- return new Point(Integer.parseInt(x), Integer.parseInt(y));
- }
- case CANVAS: {
- String width = attributes.getNamedItem("width").getNodeValue();
- String height = attributes.getNamedItem("height").getNodeValue();
- return new FileStoredPngMapleCanvas(Integer.parseInt(width), Integer.parseInt(height), new File(
- imageDataDir, getName() + ".png"));
- }
- default:
- return null;
- }
- }
-
- @Override
- public MapleDataType getType() {
- String nodeName = node.getNodeName();
- if (nodeName.equals("imgdir")) {
- return MapleDataType.PROPERTY;
- } else if (nodeName.equals("canvas")) {
- return MapleDataType.CANVAS;
- } else if (nodeName.equals("convex")) {
- return MapleDataType.CONVEX;
- } else if (nodeName.equals("sound")) {
- return MapleDataType.SOUND;
- } else if (nodeName.equals("uol")) {
- return MapleDataType.UOL;
- } else if (nodeName.equals("double")) {
- return MapleDataType.DOUBLE;
- } else if (nodeName.equals("float")) {
- return MapleDataType.FLOAT;
- } else if (nodeName.equals("int")) {
- return MapleDataType.INT;
- } else if (nodeName.equals("short")) {
- return MapleDataType.SHORT;
- } else if (nodeName.equals("string")) {
- return MapleDataType.STRING;
- } else if (nodeName.equals("vector")) {
- return MapleDataType.VECTOR;
- } else if (nodeName.equals("null")) {
- return MapleDataType.IMG_0x00;
- }
- return null;
- }
-
- @Override
- public MapleDataEntity getParent() {
- Node parentNode = node.getParentNode();
- if (parentNode.getNodeType() == Node.DOCUMENT_NODE) {
- return null;
- }
- XMLDomMapleData parentData = new XMLDomMapleData(parentNode);
- parentData.imageDataDir = imageDataDir.getParentFile();
- return parentData;
- }
-
- @Override
- public String getName() {
- return node.getAttributes().getNamedItem("name").getNodeValue();
- }
-
- @Override
- public Iterator iterator() {
- return getChildren().iterator();
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/provider/wz/XMLWZFile.java b/tools/MapleSkillMakerFetcher/src/provider/wz/XMLWZFile.java
deleted file mode 100644
index 2a7694fdc9..0000000000
--- a/tools/MapleSkillMakerFetcher/src/provider/wz/XMLWZFile.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package provider.wz;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import provider.MapleData;
-import provider.MapleDataDirectoryEntry;
-import provider.MapleDataProvider;
-
-public class XMLWZFile implements MapleDataProvider {
- private File root;
- private WZDirectoryEntry rootForNavigation;
-
- public XMLWZFile(File fileIn) {
- root = fileIn;
- rootForNavigation = new WZDirectoryEntry(fileIn.getName(), 0, 0, null);
- fillMapleDataEntitys(root, rootForNavigation);
- }
-
- private void fillMapleDataEntitys(File lroot, WZDirectoryEntry wzdir) {
- for (File file : lroot.listFiles()) {
- String fileName = file.getName();
- if (file.isDirectory() && !fileName.endsWith(".img")) {
- WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir);
- wzdir.addDirectory(newDir);
- fillMapleDataEntitys(file, newDir);
- } else if (fileName.endsWith(".xml")) {
- wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir));
- }
- }
- }
-
- @Override
- public MapleData getData(String path) {
- File dataFile = new File(root, path + ".xml");
- File imageDataDir = new File(root, path);
- if (!dataFile.exists()) {
- return null;//bitches
- }
- FileInputStream fis;
- try {
- fis = new FileInputStream(dataFile);
- } catch (FileNotFoundException e) {
- throw new RuntimeException("Datafile " + path + " does not exist in " + root.getAbsolutePath());
- }
- final XMLDomMapleData domMapleData;
- try {
- domMapleData = new XMLDomMapleData(fis, imageDataDir.getParentFile());
- } finally {
- try {
- fis.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- return domMapleData;
- }
-
- @Override
- public MapleDataDirectoryEntry getRoot() {
- return rootForNavigation;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/HexTool.java b/tools/MapleSkillMakerFetcher/src/tools/HexTool.java
deleted file mode 100644
index 8cc0c8aa84..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/HexTool.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools;
-
-import java.io.ByteArrayOutputStream;
-
-public class HexTool {
- private static final char[] HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-
- private static String toString(byte byteValue) {
- int tmp = byteValue << 8;
- char[] retstr = new char[]{HEX[(tmp >> 12) & 0x0F], HEX[(tmp >> 8) & 0x0F]};
- return String.valueOf(retstr);
- }
-
- public static String toString(byte[] bytes) {
- StringBuilder hexed = new StringBuilder();
- for (int i = 0; i < bytes.length; i++) {
- hexed.append(toString(bytes[i]));
- hexed.append(' ');
- }
- return hexed.substring(0, hexed.length() - 1);
- }
-
- public static byte[] getByteArrayFromHexString(String hex) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int nexti = 0;
- int nextb = 0;
- boolean highoc = true;
- outer:
- for (;;) {
- int number = -1;
- while (number == -1) {
- if (nexti == hex.length()) {
- break outer;
- }
- char chr = hex.charAt(nexti);
- if (chr >= '0' && chr <= '9') {
- number = chr - '0';
- } else if (chr >= 'a' && chr <= 'f') {
- number = chr - 'a' + 10;
- } else if (chr >= 'A' && chr <= 'F') {
- number = chr - 'A' + 10;
- } else {
- number = -1;
- }
- nexti++;
- }
- if (highoc) {
- nextb = number << 4;
- highoc = false;
- } else {
- nextb |= number;
- highoc = true;
- baos.write(nextb);
- }
- }
- return baos.toByteArray();
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteArrayByteStream.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteArrayByteStream.java
deleted file mode 100644
index eac7de21ea..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteArrayByteStream.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import tools.HexTool;
-
-public class ByteArrayByteStream implements SeekableInputStreamBytestream {
- private int pos = 0;
- private long bytesRead = 0;
- private byte[] arr;
-
- public ByteArrayByteStream(byte[] arr) {
- this.arr = arr;
- }
-
- @Override
- public long getPosition() {
- return pos;
- }
-
- @Override
- public void seek(long offset) throws IOException {
- pos = (int) offset;
- }
-
- @Override
- public long getBytesRead() {
- return bytesRead;
- }
-
- @Override
- public int readByte() {
- bytesRead++;
- return ((int) arr[pos++]) & 0xFF;
- }
-
- @Override
- public String toString() {
- String nows = "kevintjuh93 pwns";//I lol'd
- if (arr.length - pos > 0) {
- byte[] now = new byte[arr.length - pos];
- System.arraycopy(arr, pos, now, 0, arr.length - pos);
- nows = HexTool.toString(now);
- }
- return "All: " + HexTool.toString(arr) + "\nNow: " + nows;
- }
-
- @Override
- public long available() {
- return arr.length - pos;
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteInputStream.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteInputStream.java
deleted file mode 100644
index 107f71843e..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/ByteInputStream.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-/**
- * Represents an abstract stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public interface ByteInputStream {
- int readByte();
- long getBytesRead();
- long available();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericLittleEndianAccessor.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericLittleEndianAccessor.java
deleted file mode 100644
index d08a9b8374..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericLittleEndianAccessor.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.awt.Point;
-import java.io.ByteArrayOutputStream;
-
-/**
- * Provides a generic interface to a Little Endian stream of bytes.
- *
- * @version 1.0
- * @author Frz
- * @since Revision 323
- */
-public class GenericLittleEndianAccessor implements LittleEndianAccessor {
- private ByteInputStream bs;
-
- /**
- * Class constructor - Wraps the accessor around a stream of bytes.
- *
- * @param bs The byte stream to wrap the accessor around.
- */
- public GenericLittleEndianAccessor(ByteInputStream bs) {
- this.bs = bs;
- }
-
- /**
- * Read a single byte from the stream.
- *
- * @return The byte read.
- * @see tools.data.input.ByteInputStream#readByte
- */
- @Override
- public byte readByte() {
- return (byte) bs.readByte();
- }
-
- /**
- * Reads an integer from the stream.
- *
- * @return The integer read.
- */
- @Override
- public int readInt() {
- return bs.readByte() + (bs.readByte() << 8) + (bs.readByte() << 16) + (bs.readByte() << 24);
- }
-
- /**
- * Reads a short integer from the stream.
- *
- * @return The short read.
- */
- @Override
- public short readShort() {
- return (short) (bs.readByte() + (bs.readByte() << 8));
- }
-
- /**
- * Reads a single character from the stream.
- *
- * @return The character read.
- */
- @Override
- public char readChar() {
- return (char) readShort();
- }
-
- /**
- * Reads a long integer from the stream.
- *
- * @return The long integer read.
- */
- @Override
- public long readLong() {
- long byte1 = bs.readByte();
- long byte2 = bs.readByte();
- long byte3 = bs.readByte();
- long byte4 = bs.readByte();
- long byte5 = bs.readByte();
- long byte6 = bs.readByte();
- long byte7 = bs.readByte();
- long byte8 = bs.readByte();
- return (byte8 << 56) + (byte7 << 48) + (byte6 << 40) + (byte5 << 32) + (byte4 << 24) + (byte3 << 16) + (byte2 << 8) + byte1;
- }
-
- /**
- * Reads a floating point integer from the stream.
- *
- * @return The float-type integer read.
- */
- @Override
- public float readFloat() {
- return Float.intBitsToFloat(readInt());
- }
-
- /**
- * Reads a double-precision integer from the stream.
- *
- * @return The double-type integer read.
- */
- @Override
- public double readDouble() {
- return Double.longBitsToDouble(readLong());
- }
-
- /**
- * Reads an ASCII string from the stream with length n.
- *
- * @param n Number of characters to read.
- * @return The string read.
- */
- public final String readAsciiString(int n) {
- char ret[] = new char[n];
- for (int x = 0; x < n; x++) {
- ret[x] = (char) readByte();
- }
- return String.valueOf(ret);
- }
-
- /**
- * Reads a null-terminated string from the stream.
- *
- * @return The string read.
- */
- public final String readNullTerminatedAsciiString() {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte b;
- while (true) {
- b = readByte();
- if (b == 0) {
- break;
- }
- baos.write(b);
- }
- byte[] buf = baos.toByteArray();
- char[] chrBuf = new char[buf.length];
- for (int x = 0; x < buf.length; x++) {
- chrBuf[x] = (char) buf[x];
- }
- return String.valueOf(chrBuf);
- }
-
- /**
- * Gets the number of bytes read from the stream so far.
- *
- * @return A long integer representing the number of bytes read.
- * @see tools.data.input.ByteInputStream#getBytesRead()
- */
- public long getBytesRead() {
- return bs.getBytesRead();
- }
-
- /**
- * Reads a MapleStory convention lengthed ASCII string.
- * This consists of a short integer telling the length of the string,
- * then the string itself.
- *
- * @return The string read.
- */
- @Override
- public String readMapleAsciiString() {
- return readAsciiString(readShort());
- }
-
- /**
- * Reads num bytes off the stream.
- *
- * @param num The number of bytes to read.
- * @return An array of bytes with the length of num
- */
- @Override
- public byte[] read(int num) {
- byte[] ret = new byte[num];
- for (int x = 0; x < num; x++) {
- ret[x] = readByte();
- }
- return ret;
- }
-
- /**
- * Reads a MapleStory Position information.
- * This consists of 2 short integer.
- *
- * @return The Position read.
- */
- @Override
- public final Point readPos() {
- final int x = readShort();
- final int y = readShort();
- return new Point(x, y);
- }
-
- /**
- * Skips the current position of the stream num bytes ahead.
- *
- * @param num Number of bytes to skip.
- */
- @Override
- public void skip(int num) {
- for (int x = 0; x < num; x++) {
- readByte();
- }
- }
-
- /**
- * @see tools.data.input.ByteInputStream#available
- */
- @Override
- public long available() {
- return bs.available();
- }
-
- /**
- * @see java.lang.Object#toString
- */
- @Override
- public String toString() {
- return bs.toString();
- }
-}
\ No newline at end of file
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java
deleted file mode 100644
index fdd147d796..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/GenericSeekableLittleEndianAccessor.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-
-/**
- * Provides an abstract accessor to a generic Little Endian byte stream. This
- * accessor is seekable.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- * @see tools.data.input.GenericLittleEndianAccessor
- */
-public class GenericSeekableLittleEndianAccessor extends GenericLittleEndianAccessor implements SeekableLittleEndianAccessor {
- private SeekableInputStreamBytestream bs;
-
- /**
- * Class constructor
- * Provide a seekable input stream to wrap this object around.
- *
- * @param bs The byte stream to wrap this around.
- */
- public GenericSeekableLittleEndianAccessor(SeekableInputStreamBytestream bs) {
- super(bs);
- this.bs = bs;
- }
-
- /**
- * Seek the pointer to offset
- *
- * @param offset The offset to seek to.
- * @see tools.data.input.SeekableInputStreamBytestream#seek
- */
- @Override
- public void seek(long offset) {
- try {
- bs.seek(offset);
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("Seek failed " + e);
- }
- }
-
- /**
- * Get the current position of the pointer.
- *
- * @return The current position of the pointer as a long integer.
- * @see tools.data.input.SeekableInputStreamBytestream#getPosition
- */
- @Override
- public long getPosition() {
- try {
- return bs.getPosition();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("getPosition failed" + e);
- return -1;
- }
- }
-
- /**
- * Skip num number of bytes in the stream.
- *
- * @param num The number of bytes to skip.
- */
- @Override
- public void skip(int num) {
- seek(getPosition() + num);
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/InputStreamByteStream.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/InputStreamByteStream.java
deleted file mode 100644
index 70aef3489f..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/InputStreamByteStream.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Provides an abstract wrapper to a stream of bytes.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public class InputStreamByteStream implements ByteInputStream {
- private InputStream is;
- private long read = 0;
-
- /**
- * Class constructor.
- * Provide an input stream to wrap this around.
- *
- * @param is The input stream to wrap this object around.
- */
- public InputStreamByteStream(InputStream is) {
- this.is = is;
- }
-
- /**
- * Reads the next byte from the stream.
- *
- * @return Then next byte in the stream.
- */
- @Override
- public int readByte() {
- int temp;
- try {
- temp = is.read();
- if (temp == -1) {
- throw new RuntimeException("EOF");
- }
- read++;
- return temp;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Gets the number of bytes read from the stream.
- *
- * @return The number of bytes read as a long integer.
- */
- @Override
- public long getBytesRead() {
- return read;
- }
-
- /**
- * Returns the number of bytes left in the stream.
- *
- * @return The number of bytes available for reading as a long integer.
- */
- @Override
- public long available() {
- try {
- return is.available();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("ERROR" + e);
- return 0;
- }
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/LittleEndianAccessor.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/LittleEndianAccessor.java
deleted file mode 100644
index f991dbf537..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/LittleEndianAccessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.awt.Point;
-
-/**
- * @author Frz
- */
-public interface LittleEndianAccessor {
- byte readByte();
- char readChar();
- short readShort();
- int readInt();
- Point readPos();
- long readLong();
- void skip(int num);
- byte[] read(int num);
- float readFloat();
- double readDouble();
- String readAsciiString(int n);
- String readNullTerminatedAsciiString();
- String readMapleAsciiString();
- long getBytesRead();
- long available();
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/RandomAccessByteStream.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/RandomAccessByteStream.java
deleted file mode 100644
index c0004be17f..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/RandomAccessByteStream.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-import java.io.RandomAccessFile;
-
-/**
- * Provides an abstract layer to a byte stream. This layer can be accessed
- * randomly.
- *
- * @author Frz
- * @version 1.0
- * @since Revision 323
- */
-public class RandomAccessByteStream implements SeekableInputStreamBytestream {
- private RandomAccessFile raf;
- private long read = 0;
-
- public RandomAccessByteStream(RandomAccessFile raf) {
- super();
- this.raf = raf;
- }
-
- @Override
- public int readByte() {
- int temp;
- try {
- temp = raf.read();
- if (temp == -1) {
- throw new RuntimeException("EOF");
- }
- read++;
- return temp;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Override
- public void seek(long offset) throws IOException {
- raf.seek(offset);
- }
-
- @Override
- public long getPosition() throws IOException {
- return raf.getFilePointer();
- }
-
- @Override
- public long getBytesRead() {
- return read;
- }
-
- @Override
- public long available() {
- try {
- return raf.length() - raf.getFilePointer();
- } catch (IOException e) {
- e.printStackTrace();
- System.out.println("ERROR " + e);
- return 0;
- }
- }
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableInputStreamBytestream.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableInputStreamBytestream.java
deleted file mode 100644
index f4922dc876..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableInputStreamBytestream.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-import java.io.IOException;
-
-/**
- * Provides an abstract interface to a stream of bytes. This stream can be
- * seeked.
- *
- * @author Frz
- * @version 1.0
- * @since 299
- */
-public interface SeekableInputStreamBytestream extends ByteInputStream {
- /**
- * Seeks the stream by the specified offset.
- *
- * @param offset
- * Number of bytes to seek.
- * @throws IOException
- */
- void seek(long offset) throws IOException;
-
- /**
- * Gets the current position of the stream.
- *
- * @return The stream position as a long integer.
- * @throws IOException
- */
- long getPosition() throws IOException;
-}
diff --git a/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java b/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java
deleted file mode 100644
index 16b2317f7a..0000000000
--- a/tools/MapleSkillMakerFetcher/src/tools/data/input/SeekableLittleEndianAccessor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy
- Matthias Butz
- Jan Christian Meyer
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation version 3 as published by
- the Free Software Foundation. You may not use, modify or distribute
- this program under any other version of the GNU Affero General Public
- License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-package tools.data.input;
-
-public interface SeekableLittleEndianAccessor extends LittleEndianAccessor {
- void seek(long offset);
- long getPosition();
-}