var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/main.ts
__export(exports, {
default: () => LineupBuilderPlugin
});
// src/config.ts
var KEEPER_COLOUR = "#808080";
var DEFENDER_COLOUR = "#2009ff";
var MIDFIELDER_COLOUR = "#ff0";
var FORWARD_COLOUR = "#f00";
// src/position.ts
var GK = {
x: 772,
y: 1670,
circleColour: KEEPER_COLOUR
};
var LB = {
x: 272,
y: 1347,
circleColour: DEFENDER_COLOUR
};
var CBL = {
x: 571,
y: 1447,
circleColour: DEFENDER_COLOUR
};
var CBR = {
x: 970,
y: 1447,
circleColour: DEFENDER_COLOUR
};
var RB = {
x: 1272,
y: 1347,
circleColour: DEFENDER_COLOUR
};
var LWB = {
x: 272,
y: 1247,
circleColour: DEFENDER_COLOUR
};
var LCB = {
x: 471,
y: 1447,
circleColour: DEFENDER_COLOUR
};
var CCB = {
x: 772,
y: 1420,
circleColour: DEFENDER_COLOUR
};
var RCB = {
x: 1070,
y: 1447,
circleColour: DEFENDER_COLOUR
};
var RWB = {
x: 1272,
y: 1247,
circleColour: DEFENDER_COLOUR
};
var CDM = {
x: 772,
y: 1083,
circleColour: MIDFIELDER_COLOUR
};
var LDM = {
x: 551.8,
y: 1083,
circleColour: MIDFIELDER_COLOUR
};
var RDM = {
x: 988.8,
y: 1083,
circleColour: MIDFIELDER_COLOUR
};
var CML = {
x: 571,
y: 976,
circleColour: MIDFIELDER_COLOUR
};
var CMR = {
x: 970,
y: 976,
circleColour: MIDFIELDER_COLOUR
};
var LCM = {
x: 417,
y: 883,
circleColour: MIDFIELDER_COLOUR
};
var RCM = {
x: 1152,
y: 883,
circleColour: MIDFIELDER_COLOUR
};
var CAM = {
x: 772,
y: 580.9,
circleColour: MIDFIELDER_COLOUR
};
var LAM = {
x: 319.1,
y: 580.9,
circleColour: MIDFIELDER_COLOUR
};
var RAM = {
x: 1211.8,
y: 580.9,
circleColour: MIDFIELDER_COLOUR
};
var LM = {
x: 328,
y: 775,
circleColour: MIDFIELDER_COLOUR
};
var RM = {
x: 1216,
y: 775,
circleColour: MIDFIELDER_COLOUR
};
var RW = {
x: 1258,
y: 363,
circleColour: FORWARD_COLOUR
};
var LW = {
x: 282,
y: 363,
circleColour: FORWARD_COLOUR
};
var LS = {
x: 588,
y: 260,
circleColour: FORWARD_COLOUR
};
var RS = {
x: 962,
y: 260,
circleColour: FORWARD_COLOUR
};
var ST = {
x: 772,
y: 193,
circleColour: FORWARD_COLOUR
};
// src/formation.ts
var formations = [
{
name: "442",
positions: [GK, LB, CBL, CBR, RB, LM, CML, CMR, RM, LS, RS]
},
{
name: "433",
positions: [GK, LB, CBL, CBR, RB, LCM, CDM, RCM, LW, ST, RW]
},
{
name: "4231",
positions: [GK, LB, CBL, CBR, RB, LDM, RDM, LAM, CAM, RAM, ST]
},
{
name: "442-diamond",
positions: [GK, LB, CBL, CBR, RB, CDM, LM, RM, CAM, LS, RS]
},
{
name: "4411",
positions: [GK, LB, CBL, CBR, RB, LM, CML, CMR, RM, CAM, ST]
},
{
name: "4141",
positions: [GK, LB, CBL, CBR, RB, CDM, LM, CML, CMR, RM, ST]
},
{
name: "424",
positions: [GK, LB, CBL, CBR, RB, CML, CMR, LAM, RAM, LS, RS]
},
{
name: "541",
positions: [GK, LWB, LCB, CCB, RCB, RWB, LM, CML, CMR, RM, ST]
},
{
name: "523",
positions: [GK, LWB, LCB, CCB, RCB, RWB, CML, CMR, LW, ST, RW]
},
{
name: "532",
positions: [GK, LWB, LCB, CCB, RCB, RWB, LCM, CDM, RCM, LS, RS]
},
{
name: "343",
positions: [GK, LCB, CCB, RCB, LM, CML, CMR, RM, LW, ST, RW]
},
{
name: "352",
positions: [GK, LCB, CCB, RCB, LM, LDM, RDM, RM, CAM, LS, RS]
}
];
// src/main.ts
var import_obsidian = __toModule(require("obsidian"));
// src/svg-builder.ts
var LABEL_OFFSET_X = -69;
var LABEL_OFFSET_Y = 140;
function buildLabels(positions, players) {
let labels = [];
for (var i = 0; i < positions.length; i++) {
labels[i] = buildLabel(positions[i], players[i]);
}
return labels;
}
function buildCircles(positions) {
return positions.map((position) => buildCircle(position));
}
function buildLabel(position, playerName) {
return `${playerName}`;
}
function buildCircle(position) {
return ``;
}
function buildSvg(positions, players) {
return `
`;
}
// src/main.ts
var LineupBuilderPlugin = class extends import_obsidian.Plugin {
onInit() {
}
onload() {
return __async(this, null, function* () {
this.registerMarkdownCodeBlockProcessor("lineup", this.draw_lineup());
});
}
draw_lineup() {
return (source, el, ctx) => {
const { formation, players } = LineupBuilderPlugin.parseCode(source);
const xmlns = "http://www.w3.org/2000/svg";
var boxWidth = 346;
var boxHeight = 480;
var block = document.createElementNS(xmlns, "svg");
block.setAttributeNS(null, "viewBox", "0 0 " + boxWidth + " " + boxHeight);
block.setAttributeNS(null, "width", String(boxWidth));
block.setAttributeNS(null, "height", String(boxHeight));
block.innerHTML = buildSvg(formation.positions, players);
el.appendChild(block);
};
}
static parseCode(input) {
const lines = input.split(/\r?\n/);
let formation = lines[0];
if (formation.startsWith("formation: ")) {
formation = formation.replace("formation: ", "");
}
let players = [];
let playersLine = lines[1];
if (playersLine.startsWith("players: ")) {
players = this.escapeHTML(playersLine).replace("players: ", "").split(",");
}
return {
formation: formations.find((x) => x.name === formation),
players
};
}
static escapeHTML(str) {
return str.replace(/[&<>'"]/g, (tag) => ({
"&": "&",
"<": "<",
">": ">",
"'": "'",
'"': """
})[tag]);
}
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL21haW4udHMiLCAic3JjL2NvbmZpZy50cyIsICJzcmMvcG9zaXRpb24udHMiLCAic3JjL2Zvcm1hdGlvbi50cyIsICJzcmMvc3ZnLWJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGZvcm1hdGlvbnMgfSBmcm9tICdzcmMvZm9ybWF0aW9uJztcclxuaW1wb3J0IHsgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCwgUGx1Z2luIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyBQYXJzZWRDb2RlIH0gZnJvbSAnLi90cy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgYnVpbGRTdmcgfSBmcm9tICcuL3N2Zy1idWlsZGVyJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmV1cEJ1aWxkZXJQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xyXG5cclxuICAgIG9uSW5pdCgpIHsgfVxyXG5cclxuICAgIGFzeW5jIG9ubG9hZCgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IoXHJcbiAgICAgICAgICAgIFwibGluZXVwXCIsXHJcbiAgICAgICAgICAgIHRoaXMuZHJhd19saW5ldXAoKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkcmF3X2xpbmV1cCgpIHtcclxuICAgICAgICByZXR1cm4gKHNvdXJjZTogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQsIGN0eDogTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3Qge2Zvcm1hdGlvbiwgcGxheWVyc30gPSBMaW5ldXBCdWlsZGVyUGx1Z2luLnBhcnNlQ29kZShzb3VyY2UpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgeG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XHJcbiAgICAgICAgICAgIHZhciBib3hXaWR0aCA9IDM0NjtcclxuICAgICAgICAgICAgdmFyIGJveEhlaWdodCA9IDQ4MDtcclxuICAgICAgICAgICAgdmFyIGJsb2NrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhtbG5zLCBcInN2Z1wiKTtcclxuICAgICAgICAgICAgYmxvY2suc2V0QXR0cmlidXRlTlMoXHJcbiAgICAgICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICAgICAgXCJ2aWV3Qm94XCIsXHJcbiAgICAgICAgICAgICAgICBcIjAgMCBcIiArIGJveFdpZHRoICsgXCIgXCIgKyBib3hIZWlnaHRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYmxvY2suc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ3aWR0aFwiLCBTdHJpbmcoYm94V2lkdGgpKTtcclxuICAgICAgICAgICAgYmxvY2suc2V0QXR0cmlidXRlTlMobnVsbCwgXCJoZWlnaHRcIiwgU3RyaW5nKGJveEhlaWdodCkpO1xyXG4gICAgICAgICAgICBibG9jay5pbm5lckhUTUwgPSBidWlsZFN2Zyhmb3JtYXRpb24ucG9zaXRpb25zLCBwbGF5ZXJzKTtcclxuICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoYmxvY2spO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VDb2RlKGlucHV0OiBzdHJpbmcpOiBQYXJzZWRDb2RlIHtcclxuICAgICAgICBjb25zdCBsaW5lcyA9IGlucHV0LnNwbGl0KC9cXHI/XFxuLyk7XHJcbiAgICAgICAgbGV0IGZvcm1hdGlvbjogc3RyaW5nID0gbGluZXNbMF07XHJcbiAgICAgICAgaWYgKGZvcm1hdGlvbi5zdGFydHNXaXRoKFwiZm9ybWF0aW9uOiBcIikpIHtcclxuICAgICAgICAgICAgZm9ybWF0aW9uID0gZm9ybWF0aW9uLnJlcGxhY2UoXCJmb3JtYXRpb246IFwiLCBcIlwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBwbGF5ZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGxldCBwbGF5ZXJzTGluZTogc3RyaW5nID0gbGluZXNbMV07XHJcbiAgICAgICAgaWYgKHBsYXllcnNMaW5lLnN0YXJ0c1dpdGgoXCJwbGF5ZXJzOiBcIikpIHtcclxuICAgICAgICAgICAgcGxheWVycyA9IHRoaXMuZXNjYXBlSFRNTChwbGF5ZXJzTGluZSkucmVwbGFjZShcInBsYXllcnM6IFwiLCBcIlwiKS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZm9ybWF0aW9uOiBmb3JtYXRpb25zLmZpbmQoeCA9PiB4Lm5hbWUgPT09IGZvcm1hdGlvbiksXHJcbiAgICAgICAgICAgIHBsYXllcnNcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGVzY2FwZUhUTUwoc3RyOiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICAgICAgLy8gRW5jb2RlIHVudHJ1c3RlZCBkYXRhIGJlZm9yZSB3ZSBpbmplY3QgaXQgaW50byBIVE1MIGJvZHkgLSBodHRwczovL2NoZWF0c2hlZXRzZXJpZXMub3dhc3Aub3JnL2NoZWF0c2hlZXRzL0Nyb3NzX1NpdGVfU2NyaXB0aW5nX1ByZXZlbnRpb25fQ2hlYXRfU2hlZXQuaHRtbFxyXG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvWyY8PidcIl0vZywgdGFnID0+ICh7XHJcbiAgICAgICAgICAgICcmJzogJyZhbXA7JyxcclxuICAgICAgICAgICAgJzwnOiAnJmx0OycsXHJcbiAgICAgICAgICAgICc+JzogJyZndDsnLFxyXG4gICAgICAgICAgICBcIidcIjogJyYjMzk7JyxcclxuICAgICAgICAgICAgJ1wiJzogJyZxdW90OydcclxuICAgICAgICB9W3RhZ10pKTtcclxuICAgIH1cclxufVxyXG4iLCAiZXhwb3J0IGNvbnN0IEtFRVBFUl9DT0xPVVIgPSAnIzgwODA4MCc7XG5leHBvcnQgY29uc3QgREVGRU5ERVJfQ09MT1VSID0gJyMyMDA5ZmYnO1xuZXhwb3J0IGNvbnN0IE1JREZJRUxERVJfQ09MT1VSID0gJyNmZjAnO1xuZXhwb3J0IGNvbnN0IEZPUldBUkRfQ09MT1VSID0gJyNmMDAnOyIsICJpbXBvcnQgeyBERUZFTkRFUl9DT0xPVVIsIEZPUldBUkRfQ09MT1VSLCBLRUVQRVJfQ09MT1VSLCBNSURGSUVMREVSX0NPTE9VUiB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7UG9zaXRpb259IGZyb20gJy4vdHMvaW50ZXJmYWNlcyc7XG5cbi8vIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBvZiBhbGwgcG9zaXRpb25zXG5cbi8vIEdLXG5leHBvcnQgY29uc3QgR0s6IFBvc2l0aW9uID0ge1xuICAgIHg6IDc3MixcbiAgICB5OiAxNjcwLFxuICAgIGNpcmNsZUNvbG91cjogS0VFUEVSX0NPTE9VUlxufVxuXG4vLyBERUZFTkRFUlNcblxuLy8gNEFUQiBEZWZlbmRlcnNcbmV4cG9ydCBjb25zdCBMQjogUG9zaXRpb24gPSB7XG4gICAgeDogMjcyLFxuICAgIHk6IDEzNDcsXG4gICAgY2lyY2xlQ29sb3VyOiBERUZFTkRFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBDQkw6IFBvc2l0aW9uID0ge1xuICAgIHg6IDU3MSxcbiAgICB5OiAxNDQ3LFxuICAgIGNpcmNsZUNvbG91cjogREVGRU5ERVJfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgQ0JSOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA5NzAsXG4gICAgeTogMTQ0NyxcbiAgICBjaXJjbGVDb2xvdXI6IERFRkVOREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IFJCOiBQb3NpdGlvbiA9IHtcbiAgICB4OiAxMjcyLFxuICAgIHk6IDEzNDcsXG4gICAgY2lyY2xlQ29sb3VyOiBERUZFTkRFUl9DT0xPVVJcbn1cblxuLy8gNUFUQiBEZWZlbmRlcnNcbmV4cG9ydCBjb25zdCBMV0I6IFBvc2l0aW9uID0ge1xuICAgIHg6IDI3MixcbiAgICB5OiAxMjQ3LFxuICAgIGNpcmNsZUNvbG91cjogREVGRU5ERVJfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgTENCOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA0NzEsXG4gICAgeTogMTQ0NyxcbiAgICBjaXJjbGVDb2xvdXI6IERFRkVOREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IENDQjogUG9zaXRpb24gPSB7XG4gICAgeDogNzcyLFxuICAgIHk6IDE0MjAsXG4gICAgY2lyY2xlQ29sb3VyOiBERUZFTkRFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBSQ0I6IFBvc2l0aW9uID0ge1xuICAgIHg6IDEwNzAsXG4gICAgeTogMTQ0NyxcbiAgICBjaXJjbGVDb2xvdXI6IERFRkVOREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IFJXQjogUG9zaXRpb24gPSB7XG4gICAgeDogMTI3MixcbiAgICB5OiAxMjQ3LFxuICAgIGNpcmNsZUNvbG91cjogREVGRU5ERVJfQ09MT1VSXG59XG5cbi8vIE1JREZJRUxERVJTXG5leHBvcnQgY29uc3QgQ0RNOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA3NzIsXG4gICAgeTogMTA4MyxcbiAgICBjaXJjbGVDb2xvdXI6IE1JREZJRUxERVJfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgTERNOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA1NTEuOCxcbiAgICB5OiAxMDgzLFxuICAgIGNpcmNsZUNvbG91cjogTUlERklFTERFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBSRE06IFBvc2l0aW9uID0ge1xuICAgIHg6IDk4OC44LFxuICAgIHk6IDEwODMsXG4gICAgY2lyY2xlQ29sb3VyOiBNSURGSUVMREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IENNTDogUG9zaXRpb24gPSB7XG4gICAgeDogNTcxLFxuICAgIHk6IDk3NixcbiAgICBjaXJjbGVDb2xvdXI6IE1JREZJRUxERVJfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgQ01SOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA5NzAsXG4gICAgeTogOTc2LFxuICAgIGNpcmNsZUNvbG91cjogTUlERklFTERFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBMQ006IFBvc2l0aW9uID0ge1xuICAgIHg6IDQxNyxcbiAgICB5OiA4ODMsXG4gICAgY2lyY2xlQ29sb3VyOiBNSURGSUVMREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IFJDTTogUG9zaXRpb24gPSB7XG4gICAgeDogMTE1MixcbiAgICB5OiA4ODMsXG4gICAgY2lyY2xlQ29sb3VyOiBNSURGSUVMREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IENBTTogUG9zaXRpb24gPSB7XG4gICAgeDogNzcyLFxuICAgIHk6IDU4MC45LFxuICAgIGNpcmNsZUNvbG91cjogTUlERklFTERFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBMQU06IFBvc2l0aW9uID0ge1xuICAgIHg6IDMxOS4xLFxuICAgIHk6IDU4MC45LFxuICAgIGNpcmNsZUNvbG91cjogTUlERklFTERFUl9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBSQU06IFBvc2l0aW9uID0ge1xuICAgIHg6IDEyMTEuOCxcbiAgICB5OiA1ODAuOSxcbiAgICBjaXJjbGVDb2xvdXI6IE1JREZJRUxERVJfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgTE06IFBvc2l0aW9uID0ge1xuICAgIHg6IDMyOCxcbiAgICB5OiA3NzUsXG4gICAgY2lyY2xlQ29sb3VyOiBNSURGSUVMREVSX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IFJNOiBQb3NpdGlvbiA9IHtcbiAgICB4OiAxMjE2LFxuICAgIHk6IDc3NSxcbiAgICBjaXJjbGVDb2xvdXI6IE1JREZJRUxERVJfQ09MT1VSXG59XG5cbi8vIEZPUldBUkRTXG5leHBvcnQgY29uc3QgUlc6IFBvc2l0aW9uID0ge1xuICAgIHg6IDEyNTgsXG4gICAgeTogMzYzLFxuICAgIGNpcmNsZUNvbG91cjogRk9SV0FSRF9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBMVzogUG9zaXRpb24gPSB7XG4gICAgeDogMjgyLFxuICAgIHk6IDM2MyxcbiAgICBjaXJjbGVDb2xvdXI6IEZPUldBUkRfQ09MT1VSXG59XG5leHBvcnQgY29uc3QgTFM6IFBvc2l0aW9uID0ge1xuICAgIHg6IDU4OCxcbiAgICB5OiAyNjAsXG4gICAgY2lyY2xlQ29sb3VyOiBGT1JXQVJEX0NPTE9VUlxufVxuZXhwb3J0IGNvbnN0IFJTOiBQb3NpdGlvbiA9IHtcbiAgICB4OiA5NjIsXG4gICAgeTogMjYwLFxuICAgIGNpcmNsZUNvbG91cjogRk9SV0FSRF9DT0xPVVJcbn1cbmV4cG9ydCBjb25zdCBTVDogUG9zaXRpb24gPSB7XG4gICAgeDogNzcyLFxuICAgIHk6IDE5MyxcbiAgICBjaXJjbGVDb2xvdXI6IEZPUldBUkRfQ09MT1VSXG59IiwgImltcG9ydCB7IEdLLCBMQiwgQ0JMLCBDQlIsIFJCLCBDRE0sIExDTSwgUkNNLCBMVywgUlcsIFNULCBMRE0sIFJETSwgTEFNLCBDQU0sIFJBTSwgTFMsIFJTLCBSTSwgTE0sIExXQiwgUldCLCBDQ0IsIExDQiwgUkNCLCBDTUwsIENNUiB9IGZyb20gXCIuL3Bvc2l0aW9uXCI7XG5pbXBvcnQgeyBGb3JtYXRpb24gfSBmcm9tIFwiLi90cy9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRpb25zOiBGb3JtYXRpb25bXSA9IFtcbiAgICB7XG4gICAgICAgIG5hbWU6ICc0NDInLFxuICAgICAgICBwb3NpdGlvbnM6IFtHSywgTEIsIENCTCwgQ0JSLCBSQiwgTE0sIENNTCwgQ01SLCBSTSwgTFMsIFJTXVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnNDMzJyxcbiAgICAgICAgcG9zaXRpb25zOiBbR0ssIExCLCBDQkwsIENCUiwgUkIsIExDTSwgQ0RNLCBSQ00sIExXLCBTVCwgUlddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICc0MjMxJyxcbiAgICAgICAgcG9zaXRpb25zOiBbR0ssIExCLCBDQkwsIENCUiwgUkIsIExETSwgUkRNLCBMQU0sIENBTSwgUkFNLCBTVF1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzQ0Mi1kaWFtb25kJyxcbiAgICAgICAgcG9zaXRpb25zOiBbR0ssIExCLCBDQkwsIENCUiwgUkIsIENETSwgTE0sIFJNLCBDQU0sIExTLCBSU11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzQ0MTEnLFxuICAgICAgICBwb3NpdGlvbnM6IFtHSywgTEIsIENCTCwgQ0JSLCBSQiwgTE0sIENNTCwgQ01SLCBSTSwgQ0FNLCBTVF1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzQxNDEnLFxuICAgICAgICBwb3NpdGlvbnM6IFtHSywgTEIsIENCTCwgQ0JSLCBSQiwgQ0RNLCBMTSwgQ01MLCBDTVIsIFJNLCBTVF1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzQyNCcsXG4gICAgICAgIHBvc2l0aW9uczogW0dLLCBMQiwgQ0JMLCBDQlIsIFJCLCBDTUwsIENNUiwgTEFNLCBSQU0sIExTLCBSU11cbiAgICB9LFx0XG4gICAge1xuICAgICAgICBuYW1lOiAnNTQxJyxcbiAgICAgICAgcG9zaXRpb25zOiBbR0ssIExXQiwgTENCLCBDQ0IsIFJDQiwgUldCLCBMTSwgQ01MLCBDTVIsIFJNLCBTVF1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzUyMycsXG4gICAgICAgIHBvc2l0aW9uczogW0dLLCBMV0IsIExDQiwgQ0NCLCBSQ0IsIFJXQiwgQ01MLCBDTVIsIExXLCBTVCwgUlddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICc1MzInLFxuICAgICAgICBwb3NpdGlvbnM6IFtHSywgTFdCLCBMQ0IsIENDQiwgUkNCLCBSV0IsIExDTSwgQ0RNLCBSQ00sIExTLCBSU11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJzM0MycsXG4gICAgICAgIHBvc2l0aW9uczogW0dLLCBMQ0IsIENDQiwgUkNCLCBMTSwgQ01MLCBDTVIsIFJNLCBMVywgU1QsIFJXXVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnMzUyJyxcbiAgICAgICAgcG9zaXRpb25zOiBbR0ssIExDQiwgQ0NCLCBSQ0IsIExNLCBMRE0sIFJETSwgUk0sIENBTSwgTFMsIFJTXVxuICAgIH1cbl07XG4iLCAiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi90cy9pbnRlcmZhY2VzXCI7XG5cbmNvbnN0IExBQkVMX09GRlNFVF9YID0gLTY5O1xuY29uc3QgTEFCRUxfT0ZGU0VUX1kgPSAxNDA7XG5cbmZ1bmN0aW9uIGJ1aWxkTGFiZWxzKHBvc2l0aW9uczogUG9zaXRpb25bXSwgcGxheWVyczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgbGV0IGxhYmVsczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgbGFiZWxzW2ldID0gYnVpbGRMYWJlbChwb3NpdGlvbnNbaV0sIHBsYXllcnNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWxzO1xufVxuXG5mdW5jdGlvbiBidWlsZENpcmNsZXMocG9zaXRpb25zOiBQb3NpdGlvbltdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBwb3NpdGlvbnMubWFwKChwb3NpdGlvbikgPT4gYnVpbGRDaXJjbGUocG9zaXRpb24pKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRMYWJlbChwb3NpdGlvbjogUG9zaXRpb24sIHBsYXllck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8dHNwYW4geD1cIiR7cG9zaXRpb24ueCArIExBQkVMX09GRlNFVF9YfVwiIHk9XCIke3Bvc2l0aW9uLnkgKyBMQUJFTF9PRkZTRVRfWX1cIj4ke3BsYXllck5hbWV9PC90c3Bhbj5gO1xufVxuXG5mdW5jdGlvbiBidWlsZENpcmNsZShwb3NpdGlvbjogUG9zaXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBgPHVzZSB4bGluazpocmVmPVwiI3Bvc1wiIHg9XCIke3Bvc2l0aW9uLnh9XCIgeT1cIiR7cG9zaXRpb24ueX1cIiBmaWxsPVwiJHtwb3NpdGlvbi5jaXJjbGVDb2xvdXJ9XCIvPmBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3ZnKHBvc2l0aW9uczogUG9zaXRpb25bXSwgcGxheWVyczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBgXG4gICAgICAgIDxzdmcgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwIDEzODQgMTkyMFwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWluWU1pblwiIHZlcnNpb249XCIxLjFcIj5cbiAgICAgICAgPHBhdGggZD1cIk00NC41LDM0LjVoMTMxMnYxODU2aC0xMzEyelwiIGZpbGw9XCIjMzkzXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTY5LDU5aDEyNjQuNXYxODA4LjVoLTEyNjQuNXpNNjksOTY0aDgyMC42YTE5Ny4xLDE5Ny4xIDAgMCAxLTM5NC4yLDBhMTk3LjEsMTk3LjEgMCAwIDEgMzk0LjIsMGg0NDRNNTE1LDU5djE3M2gzNzMuNnYtMTczTTMzMSw1OXYzNDdoNzQwdi0zNDdNNTE1LDE4Njh2LTE3M2gzNzMuNnYxNzNNMzMxLDE4Njh2LTM0N2g3NDB2MzQ3XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiNFwiLz5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgIDxwYXRoIGQ9XCJtMCwwYTcyLDcyIDAgMCAxLTE0NCwwIDcyLDcyIDAgMSAxIDE0NCwwelwiIGlkPVwicG9zXCIvPlxuICAgICAgICA8L2RlZnM+XG5cbiAgICAgICAgPGcgc3Ryb2tlPVwiIzAwMFwiIHN0cm9rZS13aWR0aD1cIjZcIj5cbiAgICAgICAgICAgICR7YnVpbGRDaXJjbGVzKHBvc2l0aW9ucykuam9pbignXFxuJyl9XG4gICAgICAgIDwvZz5cblxuICAgICAgICA8dGV4dCBzdHlsZT1cImZvbnQtc2l6ZTo1NnB4O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEyNSU7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmb250LWZhbWlseTpCaXRzdHJlYW0gVmVyYSBTYW5zXCIgeD1cIjcwOS40XCIgeT1cIjE4NzEuNlwiIGxpbmVzcGFjaW5nPVwiMTI1JVwiPlxuICAgICAgICAgICAgJHtidWlsZExhYmVscyhwb3NpdGlvbnMsIHBsYXllcnMpLmpvaW4oJ1xcbicpfVxuICAgICAgICA8L3RleHQ+XG4gICAgICAgIDwvc3ZnPmBcbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7OztBQ0FPLElBQU0sZ0JBQWdCO0FBQ3RCLElBQU0sa0JBQWtCO0FBQ3hCLElBQU0sb0JBQW9CO0FBQzFCLElBQU0saUJBQWlCOzs7QUNHdkIsSUFBTSxLQUFlO0FBQUEsRUFDeEIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBTVgsSUFBTSxLQUFlO0FBQUEsRUFDeEIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUVYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFJWCxJQUFNLE1BQWdCO0FBQUEsRUFDekIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUVYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLE1BQWdCO0FBQUEsRUFDekIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUlYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLE1BQWdCO0FBQUEsRUFDekIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUVYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLE1BQWdCO0FBQUEsRUFDekIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUVYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLE1BQWdCO0FBQUEsRUFDekIsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsY0FBYztBQUFBO0FBRVgsSUFBTSxNQUFnQjtBQUFBLEVBQ3pCLEdBQUc7QUFBQSxFQUNILEdBQUc7QUFBQSxFQUNILGNBQWM7QUFBQTtBQUVYLElBQU0sTUFBZ0I7QUFBQSxFQUN6QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFJWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7QUFFWCxJQUFNLEtBQWU7QUFBQSxFQUN4QixHQUFHO0FBQUEsRUFDSCxHQUFHO0FBQUEsRUFDSCxjQUFjO0FBQUE7OztBQ2xKWCxJQUFNLGFBQTBCO0FBQUEsRUFDbkM7QUFBQSxJQUNJLE1BQU07QUFBQSxJQUNOLFdBQVcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJO0FBQUE7QUFBQSxFQUU1RDtBQUFBLElBQ0ksTUFBTTtBQUFBLElBQ04sV0FBVyxDQUFDLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUk7QUFBQTtBQUFBLEVBRTdEO0FBQUEsSUFDSSxNQUFNO0FBQUEsSUFDTixXQUFXLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSztBQUFBO0FBQUEsRUFFL0Q7QUFBQSxJQUNJLE1BQU07QUFBQSxJQUNOLFdBQVcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJO0FBQUE7QUFBQSxFQUU1RDtBQUFBLElBQ0ksTUFBTTtBQUFBLElBQ04sV0FBVyxDQUFDLElB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