Just in case anyone is actually still buying packs, I played around with this script a bit to add FFMQ in.
I'm not a coder by any means, no way I could write this from scratch but I tweaked what was already there and it worked to sell a batch of MQ cards so if anyone isn't already using it I recommend it, it works and saves a hell of a lot of time.
If Triad Freak ever comes back I'm sure he'll find something wrong but it works well enough
Code:
// ==UserScript==
// @name Sell Dupes
// @namespace ttadvanceSell
// @description Sell Dupes Easily
// @match http://www.ttadvance.ca/sell*
// @version 0.61
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
// ==/UserScript==
function loadFilters(){
var sf = getDefaultFilter();
var ssf = JSON.parse(localStorage.getItem(sl));
for(f in ssf) sf[f] = ssf[f];
return sf;
}
function saveFilters(){
var sf = getFilters();
localStorage.setItem(sl, JSON.stringify(sf));
}
function clearFilters(){
if(!window.confirm('Clear filters?')) return;
localStorage.removeItem(sl);
var sf = getDefaultFilter();
var i, is = document.getElementById("filters").getElementsByTagName("input");
for(i=0; i<is.length; i++){
if(sf[is[i].name]) is[i].checked = true;
else is[i].checked = false;
}
document.getElementById("keep").value = sf["keep"];
document.getElementById("customFilter").value = sf["custom"];
updateViewDupes();
}
function addJavaScript(str){
var script = document.createElement("script");
script.setAttribute("type", "application/javascript");
script.textContent = str;
document.head.appendChild(script);
}
function createInput(type, name, value){
var input = document.createElement("input");
input.setAttribute("type", type);
input.setAttribute("name", name);
input.setAttribute("value", value);
return input;
}
function createCheckbox(name, checked){
var input = document.createElement("input");
input.setAttribute("type", "checkbox");
input.setAttribute("name", name);
return input;
}
function createTh(str){
var th = document.createElement("th");
th.textContent = str;
return th;
}
function createTd(str){
var td = document.createElement("td");
td.textContent = str;
return td;
}
function createImg(src){
var img = document.createElement("img");
img.setAttribute("src", src);
return img;
}
function createA(url){
var a = document.createElement("a");
a.setAttribute("href", url);
return a;
}
function createTdAImg(url, img){
var td = document.createElement("td");
var a = createA(url);
a.appendChild(createImg(img));
td.appendChild(a);
return td;
}
function getFilters(){
var i, t, sf = {}, is = document.getElementById("filters").getElementsByTagName("input");
for(i=0; i<is.length; i++) sf[is[i].name] = is[i].checked;
t = parseInt(document.getElementById("keep").value);
if(t) sf["keep"] = t; else sf["keep"] = 1;
sf["custom"] = document.getElementById("customFilter").value;
return sf;
}
function loadDupes(){
var i, id, amount, img;
var main = document.getElementById("Main");
var cop = main.getElementsByTagName("a");
for(i=0; i<cop.length; i++){
id = parseInt(cop[i].getAttribute("href").substr(22));
amount = parseInt(cop[i].nextSibling.data.substring(2));
img = cop[i].firstChild.getAttribute("src");
dupes.push({"id": id, "amount": amount, "img": img, "price": prices[id]});
}
}
function getCards(){
var i, id, amount, img, cards = [];
var cf = getCardFilter();
var keep = parseInt(document.getElementById("keep").value);
if(!keep) keep = 1;
for(i=0; i<dupes.length; i++){
id = dupes[i]["id"];
if(cf[id]) continue;
amount = dupes[i]["amount"] - keep;
if(amount<=0) continue;
img = dupes[i]["img"];
cards.push({"id": id, "amount": amount, "img": img, "price": prices[id]});
}
return cards;
}
function getDupeTable(){
var table = document.createElement("table");
table.setAttribute("id", "dupetable");
var tr = document.createElement("tr");
tr.appendChild(createTh("id"));
tr.appendChild(createTh("img"));
tr.appendChild(createTh("amount"));
tr.appendChild(createTh("price"));
table.appendChild(tr);
return table;
}
function getCardTr(card){
var url = "http://www.ttadvance.ca/selcard.php?card_iden="+card["id"];
var tr = document.createElement("tr");
tr.appendChild(createTd(card["id"]));
tr.appendChild(createTdAImg(url, card["img"]));
tr.appendChild(createTd(card["amount"]));
tr.appendChild(createTd(card["price"]));
return tr;
}
function addCardsTable(table){
var i, cards = getCards();
for(i=0; i<cards.length; i++) table.appendChild(getCardTr(cards[i]));
return table;
}
function viewDupes(){
var vdb = document.getElementById("viewDupes");
var dupeTable = document.getElementById("dupetable");
if(dupeTable){
document.getElementById("Main").parentElement.removeChild(dupeTable);
vdb.setAttribute("value", "view dupes");
}else{
document.getElementById("Main").parentElement.appendChild(addCardsTable(getDupeTable()));
vdb.setAttribute("value", "hide dupes");
}
}
function updateViewDupes(){
var dupeTable = document.getElementById("dupetable");
if(dupeTable){
document.getElementById("Main").parentElement.removeChild(dupeTable);
document.getElementById("Main").parentElement.appendChild(addCardsTable(getDupeTable()));
}
updateSellDupesButton();
}
function createButton(str, event){
var button = document.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", str);
button.addEventListener("click", event, true);
return button;
}
function createFilterInput(name, checked){
var input = createCheckbox(name, checked);
input.setAttribute("id", name);
input.checked = checked;
input.addEventListener("change", updateViewDupes, true);
return input;
}
function createFilterInputsLine(i, s, td, sf){
for(; i<=s; i++){
if(sf[filter[i]]) td.appendChild(createFilterInput(filter[i], true));
else td.appendChild(createFilterInput(filter[i], false));
td.appendChild(document.createTextNode(filter[i]+" "));
}
}
function createFilterInputs(){
var td = document.createElement("td");
var sf = loadFilters();
createFilterInputsLine(0, 9, td, sf);
td.appendChild(document.createElement("br"));
createFilterInputsLine(10, 20, td, sf);
td.appendChild(document.createElement("br"));
createFilterInputsLine(21, 25, td, sf);
return td;
}
function getDefaultFilter(){
return {"unlock": true, "semi": true, "rare": true, "quest": true, "SE": true, "keep": 1, "custom": []};
}
function getCardFilter(){
var sf = getFilters(), i, t, cf = [];
for(i=1; i<=2494; i++) cf[i] = false;
if(sf["FFO"]) for(i=1; i<=110; i++) cf[i] = true;
if(sf["FFIV"]) for(i=111; i<=220; i++) cf[i] = true;
if(sf["FFV"]) for(i=221; i<=330; i++) cf[i] = true;
if(sf["FFVI"]) for(i=331; i<=440; i++) cf[i] = true;
if(sf["FFVII"]) for(i=441; i<=550; i++) cf[i] = true;
if(sf["FFVIII"]) for(i=551; i<=660; i++) cf[i] = true;
if(sf["FFVIIIr"]) for(i=1343; i<=1452; i++) cf[i] = true;
if(sf["FFIX"]) for(i=661; i<=770; i++) cf[i] = true;
if(sf["FFX"]) for(i=771; i<=880; i++) cf[i] = true;
if(sf["X2"]) for(i=1783; i<=1892; i++) cf[i] = true;
if(sf["FFXI"]) for(i=1673; i<=1782; i++) cf[i] = true;
if(sf["FFXII"]) for(i=1901; i<=2010; i++) cf[i] = true;
if(sf["FFXIII"]) for(i=2011; i<=2120; i++) cf[i] = true;
if(sf["FFXIV"]) for(i=2275; i<=2384; i++) cf[i] = true;
if(sf["FFT"]) for(i=881; i<=990; i++) cf[i] = true;
if(sf["MQ"]) for(i=2385; i<=2494; i++) cf[i] = true;
if(sf["CT"]) for(i=1101; i<=1210; i++) cf[i] = true;
if(sf["DL"]) for(i=991; i<=1100; i++) cf[i] = true;
if(sf["DQ"]) for(i=1453; i<=1562; i++) cf[i] = true;
if(sf["SIII"]) for(i=1563; i<=1672; i++) cf[i] = true;
if(sf["S5"]) for(i=2132; i<=2241; i++) cf[i] = true;
if(sf["XG"]) for(i=1211; i<=1320; i++) cf[i] = true;
if(sf["unlock"]){
var ts = [85,207,316,426,537,642,757,975,1222,826,71,1071,970,982,106,218,321,430,540,764,561,127,689,800,1235,265,950,79,543,1775,160,378,623,304,860];
for(i=0; i<ts.length; i++) cf[ts[i]] = true;
}
if(sf["semi"]){
var ts = [20,429,547,861,979,1395,1549,1550,1591,1672,2006,2107,2241,2351,2384];
for(i=0; i<ts.length; i++) cf[ts[i]] = true;
}
if(sf["rare"]){
var ts = [165,214,216,264,534,598,648,657,658,769,848,1059,1097,1163,1259,1315,1436,1442,1447,1622,1745,1826,1861,1971,2056,2116,2138,2230,2373,2416];
for(i=0; i<ts.length; i++) cf[ts[i]] = true;
}
if(sf["quest"]){
var ts = [1893,1894,1895,1896,1897,1898,1899,1900];
for(i=0; i<ts.length; i++) cf[ts[i]] = true;
}
if(sf["SE"]){
for(i=1321; i<=1342; i++) cf[i] = true;
for(i=2121; i<=2131; i++) cf[i] = true;
for(i=2242; i<=2274; i++) cf[i] = true;
}
var t, custom = sf["custom"].split(/[^\d]+/);
for(i=0; i<custom.length; i++){
t = parseInt(custom[i]);
if(t && t<=2494) cf[t] = true;
}
return cf;
}
function createKeepInput(amount){
var input = createInput("text", "keep", amount);
input.setAttribute("id", "keep");
input.setAttribute("size", 3);
input.addEventListener("change", updateViewDupes, true);
return input;
}
function createCustomFilterInput(old){
var i, str = "", first = true;
for(i=0; i<old.length; i++) if(first) str += old[i]; else str += "," + old[i];
var input = createInput("text", "customFilter", str);
input.setAttribute("id", "customFilter");
input.setAttribute("size", "10");
input.addEventListener("change", updateViewDupes, true);
return input;
}
function createFilterLastRow(){
var sf = loadFilters();
var td = document.createElement("td");
td.appendChild(createKeepInput(sf["keep"]));
td.appendChild(document.createTextNode("keep "));
td.appendChild(createCustomFilterInput(sf["custom"]));
td.appendChild(document.createTextNode("custom "));
td.appendChild(createButton("save filters", saveFilters));
td.appendChild(document.createTextNode(" "));
td.appendChild(createButton("clear filters", clearFilters));
return td;
}
function createFilterTable(){
var table = document.createElement("table");
var style = "font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 10pt; color: #FFFFFF;";
table.setAttribute("style", style);
var tr = document.createElement("tr");
tr.appendChild(createFilterInputs());
tr.setAttribute("id", "filters");
table.appendChild(tr);
tr = document.createElement("tr");
tr.appendChild(createFilterLastRow());
table.appendChild(tr);
return table;
}
function createCSSPopup(selling){
var div = document.createElement("div");
div.setAttribute("style", "position: fixed; width: 320px; height: 180px; margin: auto; top: 0px; right: 0px; bottom: 0px; left: 0px; z-index: 998; background-color: #580001; opacity: .9;");
var divc = document.createElement("div");
divc.setAttribute("style", "text-align: center; height: 180px; line-height: 180px; z-index: 999;");
divc.setAttribute("id", "sellDupesPopup");
divc.appendChild(document.createTextNode("sold 0/" + selling));
div.appendChild(divc);
return div;
}
function soldDupe(){
sold++;
sdp.textContent = "sold " + sold + "/" + selling;
if(sold==selling){
alert("all " + selling + " dupes sold...\nrefreshing!");
window.location.assign(window.location.href);
}
}
function sellDupes(){
if(!window.confirm("sell dupes?")) return;
console.log("selling...");
var i, j, amount=0, cards = getCards();
for(i=0; i<cards.length; i++){
amount += cards[i]["amount"];
}
document.body.appendChild(createCSSPopup(amount));
var script = "var sold = 0, selling = " + amount + ", sdp = document.getElementById(\"sellDupesPopup\");";
addJavaScript(script);
for(i=0; i<cards.length; i++){
for(j=0; j<cards[i]["amount"]; j++){
$.post("scard.php?card_iden="+cards[i]["id"], {}, soldDupe);
}
}
}
function createViewDupesButton(){
var button = createButton("view dupes", viewDupes);
button.setAttribute("id", "viewDupes");
return button;
}
function getSellDupesButtonName(){
var i, amount=0, price=0, cards = getCards();
for(i=0; i<cards.length; i++){
amount += cards[i]["amount"];
price += cards[i]["price"];
}
return "sell " + amount + " dupes for " + price + " points";
}
function updateSellDupesButton(){
document.getElementById("sellDupes").value = getSellDupesButtonName();
}
function createSellDupesButton(){
var button = createButton(getSellDupesButtonName(), sellDupes);
button.setAttribute("id", "sellDupes");
return button;
}
addJavaScript("var dupes = [];\nvar sl = 'sellDupesFilter'+window.location.href.match(/\\d+/);\nvar filter = ['FFO','FFIV','FFV','FFVI','FFVII','FFVIII','FFVIIIr','FFIX','FFX','X2','FFXI','FFXII','FFXIII','FFXIV','FFT','MQ','CT','DL','DQ','SIII','S5','XG','unlock','semi','rare','quest','SE'];\nvar prices = [0,4,4,3,3,4,3,3,4,4,3,4,4,6,5,4,4,4,4,4,199,6,5,5,5,8,5,8,7,5,5,5,8,8,8,8,8,8,10,8,8,8,8,8,8,11,10,11,11,11,10,10,10,10,10,10,16,15,16,15,15,16,17,15,17,15,15,18,18,16,16,16,16,20,18,16,20,16,30,25,25,25,25,30,25,25,25,30,30,43,50,43,43,43,48,53,50,43,43,50,90,98,98,90,98,98,90,90,90,105,98,4,4,3,3,3,3,3,3,4,3,4,4,6,4,4,4,4,4,4,6,4,4,7,5,7,7,5,5,8,7,5,7,7,10,8,10,8,8,8,8,8,8,10,8,10,10,12,11,11,11,10,11,10,10,499,15,15,16,15,15,16,17,16,15,16,15,20,16,18,18,18,16,20,18,18,19,18,28,30,30,28,25,25,25,30,27,25,30,50,43,48,43,43,48,43,50,48,43,43,105,95,95,90,1999,90,1999,90,90,98,98,4,3,3,4,3,3,4,3,3,3,4,6,4,4,4,4,4,4,4,6,4,4,5,5,7,5,7,7,5,5,5,7,5,8,10,9,10,8,10,10,8,8,8,199,10,10,11,11,12,11,11,10,10,10,10,15,16,15,15,15,15,16,15,15,16,16,18,16,20,20,16,16,20,18,16,16,18,25,28,25,25,25,25,30,25,30,30,25,48,48,48,43,48,48,43,43,43,50,43,90,90,98,90,105,90,90,90,90,90,90,3,3,4,4,4,3,4,3,3,3,3,4,6,5,6,4,4,6,4,4,6,4,5,7,7,7,5,7,7,7,7,5,5,8,8,8,9,9,10,10,10,10,8,8,10,11,10,10,11,10,11,11,10,10,11,16,16,15,15,15,16,16,16,15,15,17,18,20,16,16,16,18,18,16,19,16,20,30,30,28,28,25,28,25,30,30,25,25,48,43,48,50,43,48,43,48,43,48,125,98,105,90,98,98,98,98,90,95,90,90,3,4,4,3,3,4,4,4,3,3,4,6,5,6,6,4,4,4,4,5,4,4,7,7,5,7,5,5,8,7,7,5,5,9,8,10,8,8,10,10,10,8,8,8,10,11,11,10,11,10,10,12,12,10,11,16,16,15,16,16,18,15,18,15,17,15,16,20,20,19,18,19,20,16,18,20,18,30,30,30,25,30,28,30,28,30,25,30,43,48,48,48,48,4999,50,50,48,43,48,90,98,90,98,98,90,90,175,98,98,90,4,3,3,4,3,4,4,3,4,4,4,4,4,4,4,4,6,6,6,4,4,6,7,7,5,7,7,5,5,7,7,5,7,10,8,10,10,10,10,9,10,10,8,8,11,10,10,499,11,11,12,12,10,10,11,17,16,16,16,17,17,15,15,17,15,16,20,20,20,16,16,20,20,18,18,18,18,30,25,25,30,30,30,25,30,30,30,30,48,48,48,48,48,48,50,48,48,3999,50,90,98,98,90,98,105,98,5999,6999,105,105,3,4,4,3,3,4,4,3,4,3,4,3,3,4,3,3,4,3,4,3,3,3,4,4,4,4,5,4,4,4,4,4,5,7,5,5,5,5,5,5,5,5,5,5,8,8,10,10,10,10,8,10,8,8,8,14,15,14,14,14,14,15,14,14,14,14,17,17,17,17,17,17,17,17,17,17,17,24,24,24,24,24,25,24,25,24,24,25,43,50,48,48,43,48,48,48,48,43,43,98,98,90,98,105,98,90,105,98,2499,105,3,3,3,3,4,4,4,3,3,4,3,3,3,4,3,3,3,3,3,3,3,4,4,4,5,4,4,4,4,4,4,4,4,10,6,10,6,6,6,6,10,6,6,10,8,8,8,8,10,8,8,8,10,8,8,14,14,14,16,14,14,14,14,14,14,16,17,17,17,17,17,17,17,17,17,17,18,699,25,25,25,25,25,25,25,25,25,25,48,48,125,43,43,43,43,50,43,43,43,90,105,98,90,90,98,90,90,98,90,105,4,4,4,3,3,4,3,3,3,4,3,4,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,4,4,4,4,4,4,8,6,6,6,6,6,6,6,6,6,8,8,8,8,10,8,8,10,8,8,8,8,14,14,14,17,14,14,14,14,14,14,14,16,16,16,19,19,16,16,16,16,16,16,25,25,27,25,25,25,25,25,25,25,25,43,48,50,43,48,48,43,43,50,48,125,90,105,98,105,98,90,98,105,90,98,90,3,3,3,4,3,4,4,4,4,3,4,4,4,4,6,4,4,6,6,4,4,4,7,7,7,8,5,8,8,7,7,7,7,8,10,10,10,8,10,10,10,8,8,8,12,10,11,11,12,10,10,12,12,11,10,17,16,16,16,17,16,16,15,17,16,15,19,20,599,18,20,16,16,18,18,20,20,25,30,25,30,28,30,25,30,25,28,30,43,43,43,43,43,43,43,43,43,43,43,98,90,98,98,90,90,105,2399,90,98,90,4,4,4,4,3,4,4,3,3,4,4,3,3,3,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,7,6,6,6,9,10,9,9,10,10,10,9,10,9,10,13,13,12,12,14,13,13,499,12,13,14,17,17,16,18,17,16,17,17,16,16,18,25,25,25,25,25,25,25,25,25,25,25,48,50,43,50,43,43,43,48,48,43,50,90,90,98,105,90,90,95,90,90,105,90,4,4,4,4,3,4,3,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,4,4,4,4,4,5,6,6,6,6,6,6,6,6,6,6,8,10,10,10,11,499,11,10,10,10,10,10,14,14,14,14,14,14,14,14,14,14,14,17,17,17,17,20,17,17,17,17,17,17,24,24,24,24,24,24,24,28,28,24,24,43,50,48,43,50,48,43,43,43,50,43,95,105,90,98,95,1999,98,105,90,98,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,4,4,4,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,10,10,10,10,10,10,10,10,299,10,10,12,12,12,12,12,12,12,12,12,12,12,15,15,15,15,15,15,15,15,15,15,15,25,25,25,25,25,25,25,25,25,25,25,50,48,48,43,48,1799,50,48,48,48,48,2999,105,98,98,98,2399,105,90,105,90,98,4,4,3,4,4,3,3,3,3,4,3,3,3,3,4,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,8,6,6,10,10,9,8,8,8,8,9,8,8,8,14,12,12,12,12,12,14,12,13,12,12,17,17,17,17,17,20,17,20,17,17,17,28,25,28,25,28,25,25,25,25,25,28,43,43,48,50,43,43,43,43,125,125,43,105,90,90,90,98,90,90,98,95,90,90,3,4,4,4,4,4,3,3,4,4,3,4,4,4,6,6,4,6,4,4,4,5,5,5,8,5,5,8,75,7,5,5,5,8,10,10,10,9,8,8,8,10,8,8,10,11,11,10,10,10,10,10,11,12,10,16,16,15,17,599,15,17,15,16,15,16,18,18,18,18,16,20,19,20,16,16,16,25,25,30,30,30,30,30,30,30,28,28,48,43,48,43,43,50,43,48,43,48,50,90,90,98,90,98,90,98,98,90,90,175,4,3,4,3,3,4,3,3,4,3,4,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,8,8,8,8,8,8,8,8,8,8,8,14,14,14,14,14,14,14,14,14,14,14,16,16,16,16,16,16,699,16,16,16,16,25,25,25,25,25,25,25,25,25,25,25,43,43,43,50,48,50,50,50,50,43,43,98,90,90,105,98,105,98,105,90,105,90,4,3,3,4,3,3,4,3,3,3,3,4,3,5,3,3,3,3,3,3,4,3,5,4,7,4,4,5,4,4,4,4,7,7,8,9,7,9,7,7,7,8,8,299,10,12,12,12,11,11,12,10,11,10,10,15,16,16,17,16,15,16,16,15,16,15,20,19,19,20,20,19,19,20,20,19,19,25,599,25,25,25,25,27,25,25,26,26,48,43,43,43,43,43,43,43,50,48,43,90,90,90,95,90,98,90,90,98,90,105,1,1,1,1,1,1,1,1,3,4,3,3,3,4,3,4,4,3,4,4,4,4,5,3,4,3,4,4,3,3,4,4,7,5,4,5,4,4,5,7,7,6,10,6,10,8,8,8,6,8,10,6,11,8,12,10,7,8,8,10,11,10,10,14,14,15,14,14,15,15,14,16,14,14,16,20,16,18,699,18,17,18,15,16,18,25,30,30,25,30,25,25,25,28,25,28,48,48,43,43,48,43,43,50,48,43,45,98,90,98,90,90,90,175,90,95,98,90,3,4,3,3,3,4,3,4,4,3,4,4,4,4,5,3,4,3,4,4,3,3,4,4,7,5,4,5,4,4,5,7,7,6,10,6,10,8,8,8,6,8,10,6,11,499,12,10,7,8,8,10,11,10,10,14,14,15,14,14,15,15,14,16,14,14,16,20,16,18,18,18,17,18,15,16,18,25,30,30,25,30,25,25,25,28,25,28,48,48,43,43,48,43,43,50,125,43,45,98,90,98,90,90,90,6999,90,95,98,90,0,0,0,0,0,0,0,0,0,0,0,3,4,3,4,4,4,199,4,4,4,4,4,4,4,4,4,4,6,3,4,4,4,4,5,4,4,5,7,5,7,5,7,7,8,8,10,10,8,10,10,10,10,10,10,11,11,10,11,10,11,11,11,10,10,11,14,16,14,15,15,15,12,14,16,16,15,20,20,16,16,18,15,15,19,18,16,16,28,28,30,30,30,25,25,25,30,30,28,45,43,43,45,48,48,48,50,43,43,1799,105,90,90,98,90,90,90,90,90,90,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,3,3,3,3,3,4,3,3,3,5,5,5,4,4,4,4,5,4,5,5,8,7,7,7,7,8,8,7,8,7,7,11,10,10,10,10,10,11,11,11,10,11,12,11,11,11,12,12,12,12,12,11,11,16,15,15,15,15,15,16,14,16,15,15,16,16,18,18,16,19,20,19,20,20,19,28,28,28,28,26,28,26,28,26,30,30,45,48,48,50,46,50,48,45,48,46,3999,90,98,95,105,90,90,98,90,105,90,175,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,6,4,4,4,6,4,4,7,7,7,8,7,5,7,7,8,199,7,10,9,9,9,9,9,9,9,10,9,9,11,12,10,11,11,11,10,12,10,11,10,18,15,18,15,16,15,15,16,15,16,16,18,20,19,19,20,20,18,18,20,19,18,28,26,27,27,27,25,25,28,30,27,25,45,45,45,45,45,45,50,48,50,48,50,105,98,98,95,98,98,95,95,95,95,98];");
loadDupes();
var mainParent = document.getElementById("Main").parentElement;
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(createFilterTable());
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(createSellDupesButton());
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(createViewDupesButton());
mainParent.appendChild(document.createElement("br"));
mainParent.appendChild(document.createElement("br"));