adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
338 lines (284 loc) • 52.9 kB
JavaScript
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
export var rgb2hex = function rgb2hex(r, g, b) {
var red = r.toString(16).toUpperCase();
var green = g.toString(16).toUpperCase();
var blue = b.toString(16).toUpperCase();
red = red.length === 1 ? "0".concat(red) : red;
green = green.length === 1 ? "0".concat(green) : green;
blue = blue.length === 1 ? "0".concat(blue) : blue;
return "#".concat(red).concat(green).concat(blue);
};
export var hsb2hsl = function hsb2hsl(a, b, c) {
return [a, b * c / ((a = (2 - b) * c) < 1 ? a : 2 - a), a / 2];
};
export var hsl2hsb = function hsl2hsb(a, b, c) {
b *= c < 0.5 ? c : 1 - c;
return [a, 2 * b / (c + b) || 0, c + b];
};
export var hsl2rgb = function hsl2rgb(h, s, l) {
var C = (1 - Math.abs(2 * l - 1)) * s;
var X = C * (1 - Math.abs(h / 60 % 2 - 1));
var m = l - C / 2;
var _ref = h >= 0 && h < 60 && [C, X, 0] || h >= 60 && h < 120 && [X, C, 0] || h >= 120 && h < 180 && [0, C, X] || h >= 180 && h < 240 && [0, X, C] || h >= 240 && h < 300 && [X, 0, C] || h >= 300 && h < 360 && [C, 0, X],
_ref2 = _slicedToArray(_ref, 3),
R = _ref2[0],
G = _ref2[1],
B = _ref2[2];
var _ref3 = [(R + m) * 255, (G + m) * 255, (B + m) * 255];
R = _ref3[0];
G = _ref3[1];
B = _ref3[2];
return [Math.round(R), Math.round(G), Math.round(B)];
};
export var hsb2hex = function hsb2hex(h, s, b) {
if (h === null || h === undefined || s === null || s === undefined || b === null || b === undefined) {
return "";
}
var _hsb2hsl = hsb2hsl(h, s, b),
_hsb2hsl2 = _slicedToArray(_hsb2hsl, 3),
hue = _hsb2hsl2[0],
saturation = _hsb2hsl2[1],
brightness = _hsb2hsl2[2];
var _hsl2rgb = hsl2rgb(hue, saturation || 0, brightness || 0),
_hsl2rgb2 = _slicedToArray(_hsl2rgb, 3),
red = _hsl2rgb2[0],
green = _hsl2rgb2[1],
blue = _hsl2rgb2[2];
return rgb2hex(red, green, blue);
};
export var rgb2hsl = function rgb2hsl(r, g, b) {
var min,
max,
i,
l,
s,
maxcolor,
h,
rgb = [];
rgb[0] = r / 255;
rgb[1] = g / 255;
rgb[2] = b / 255;
min = rgb[0];
max = rgb[0];
maxcolor = 0;
for (i = 0; i < rgb.length - 1; i++) {
if (rgb[i + 1] <= min) {
min = rgb[i + 1];
}
if (rgb[i + 1] >= max) {
max = rgb[i + 1];
maxcolor = i + 1;
}
}
if (maxcolor == 0) {
h = (rgb[1] - rgb[2]) / (max - min);
}
if (maxcolor == 1) {
h = 2 + (rgb[2] - rgb[0]) / (max - min);
}
if (maxcolor == 2) {
h = 4 + (rgb[0] - rgb[1]) / (max - min);
}
if (!h || isNaN(h)) {
h = 0;
}
h = h * 60;
if (h < 0) {
h = h + 360;
}
l = (min + max) / 2;
if (min == max) {
s = 0;
} else {
if (l < 0.5) {
s = (max - min) / (max + min);
} else {
s = (max - min) / (2 - max - min);
}
}
s = s;
return {
h: h,
s: s,
l: l
};
};
export var w3trim = function w3trim(x) {
return x.replace(/^\s+|\s+$/g, "");
};
export var getColorArr = function getColorArr(x) {
if (x == "names") {
return ["AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGrey", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "DarkOrange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkSlateGrey", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DimGrey", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Grey", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGray", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSlateGrey", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "RebeccaPurple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "SlateGrey", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"];
}
if (x == "hexs") {
return ["f0f8ff", "faebd7", "00ffff", "7fffd4", "f0ffff", "f5f5dc", "ffe4c4", "000000", "ffebcd", "0000ff", "8a2be2", "a52a2a", "deb887", "5f9ea0", "7fff00", "d2691e", "ff7f50", "6495ed", "fff8dc", "dc143c", "00ffff", "00008b", "008b8b", "b8860b", "a9a9a9", "a9a9a9", "006400", "bdb76b", "8b008b", "556b2f", "ff8c00", "9932cc", "8b0000", "e9967a", "8fbc8f", "483d8b", "2f4f4f", "2f4f4f", "00ced1", "9400d3", "ff1493", "00bfff", "696969", "696969", "1e90ff", "b22222", "fffaf0", "228b22", "ff00ff", "dcdcdc", "f8f8ff", "ffd700", "daa520", "808080", "808080", "008000", "adff2f", "f0fff0", "ff69b4", "cd5c5c", "4b0082", "fffff0", "f0e68c", "e6e6fa", "fff0f5", "7cfc00", "fffacd", "add8e6", "f08080", "e0ffff", "fafad2", "d3d3d3", "d3d3d3", "90ee90", "ffb6c1", "ffa07a", "20b2aa", "87cefa", "778899", "778899", "b0c4de", "ffffe0", "00ff00", "32cd32", "faf0e6", "ff00ff", "800000", "66cdaa", "0000cd", "ba55d3", "9370db", "3cb371", "7b68ee", "00fa9a", "48d1cc", "c71585", "191970", "f5fffa", "ffe4e1", "ffe4b5", "ffdead", "000080", "fdf5e6", "808000", "6b8e23", "ffa500", "ff4500", "da70d6", "eee8aa", "98fb98", "afeeee", "db7093", "ffefd5", "ffdab9", "cd853f", "ffc0cb", "dda0dd", "b0e0e6", "800080", "663399", "ff0000", "bc8f8f", "4169e1", "8b4513", "fa8072", "f4a460", "2e8b57", "fff5ee", "a0522d", "c0c0c0", "87ceeb", "6a5acd", "708090", "708090", "fffafa", "00ff7f", "4682b4", "d2b48c", "008080", "d8bfd8", "ff6347", "40e0d0", "ee82ee", "f5deb3", "ffffff", "f5f5f5", "ffff00", "9acd32"];
}
};
export var color2hsb = function color2hsb(c) {
var hsl = color2hsl(c);
return hsl2hsb(hsl.h, hsl.s, hsl.l);
};
export var color2hsl = function color2hsl(c) {
var x,
y,
typ,
arr = [],
arrlength,
i,
match,
rgb,
colornames = [],
colorhexs = [];
c = w3trim(c.toLowerCase());
x = c.substr(0, 1).toUpperCase();
y = c.substr(1);
if ((x == "R" || x == "Y" || x == "G" || x == "C" || x == "B" || x == "M" || x == "W") && !isNaN(y)) {
if (c.length == 6 && c.indexOf(",") == -1) {} else {
c = "ncol(" + c + ")";
}
}
if (c.length != 3 && c.length != 6 && !isNaN(c)) {
c = "ncol(" + c + ")";
}
if (c.indexOf(",") > 0 && c.indexOf("(") == -1) {
c = "ncol(" + c + ")";
}
if (c.substr(0, 3) == "rgb" || c.substr(0, 3) == "hsl" || c.substr(0, 3) == "hwb" || c.substr(0, 4) == "ncol" || c.substr(0, 4) == "cmyk") {
if (c.substr(0, 4) == "ncol") {
if (c.split(",").length == 4 && c.indexOf("ncola") == -1) {
c = c.replace("ncol", "ncola");
}
typ = "ncol";
c = c.substr(4);
} else if (c.substr(0, 4) == "cmyk") {
typ = "cmyk";
c = c.substr(4);
} else {
typ = c.substr(0, 3);
c = c.substr(3);
}
arrlength = 3;
if (c.substr(0, 1).toLowerCase() == "a") {
arrlength = 4;
c = c.substr(1);
} else if (typ == "cmyk") {
arrlength = 4;
if (c.split(",").length == 5) {
arrlength = 5;
}
}
c = c.replace("(", "");
c = c.replace(")", "");
arr = c.split(",");
if (typ == "rgb") {
for (i = 0; i < arrlength; i++) {
if (arr[i] == "" || arr[i] == " ") {
arr[i] = "0";
}
if (arr[i].indexOf("%") > -1) {
arr[i] = arr[i].replace("%", "");
arr[i] = Number(arr[i] / 100);
if (i < 3) {
arr[i] = Math.round(arr[i] * 255);
}
}
if (parseInt(arr[i]) > 255) {
arr[i] = 255;
}
if (i < 3) {
arr[i] = parseInt(arr[i]);
}
if (i == 3 && Number(arr[i]) > 1) {
arr[i] = 1;
}
}
rgb = {
r: arr[0],
g: arr[1],
b: arr[2]
};
}
if (typ == "hsl" || typ == "hwb" || typ == "ncol") {
while (arr.length < arrlength) {
arr.push("0");
}
if (typ == "hsl" || typ == "hwb") {
if (parseInt(arr[0]) >= 360) {
arr[0] = 0;
}
}
for (i = 1; i < arrlength; i++) {
if (arr[i].indexOf("%") > -1) {
arr[i] = arr[i].replace("%", "");
arr[i] = Number(arr[i]);
arr[i] = arr[i] / 100;
} else {
arr[i] = Number(arr[i]);
}
if (Number(arr[i]) > 1) {
arr[i] = 1;
}
if (Number(arr[i]) < 0) {
arr[i] = 0;
}
}
}
if (typ == "cmyk") {
while (arr.length < arrlength) {
arr.push("0");
}
for (i = 0; i < arrlength; i++) {
if (arr[i].indexOf("%") > -1) {
arr[i] = arr[i].replace("%", "");
arr[i] = Number(arr[i]);
arr[i] = arr[i] / 100;
} else {
arr[i] = Number(arr[i]);
}
if (Number(arr[i]) > 1) {
arr[i] = 1;
}
if (Number(arr[i]) < 0) {
arr[i] = 0;
}
}
}
} else if (c.substr(0, 3) == "ncs") {} else {
match = false;
colornames = getColorArr("names");
for (i = 0; i < colornames.length; i++) {
if (c.toLowerCase() == colornames[i].toLowerCase()) {
colorhexs = getColorArr("hexs");
match = true;
rgb = {
r: parseInt(colorhexs[i].substr(0, 2), 16),
g: parseInt(colorhexs[i].substr(2, 2), 16),
b: parseInt(colorhexs[i].substr(4, 2), 16)
};
break;
}
}
if (match == false) {
c = c.replace("#", "");
if (c.length == 3) {
c = c.substr(0, 1) + c.substr(0, 1) + c.substr(1, 1) + c.substr(1, 1) + c.substr(2, 1) + c.substr(2, 1);
}
for (i = 0; i < c.length; i++) {}
arr[0] = parseInt(c.substr(0, 2), 16);
arr[1] = parseInt(c.substr(2, 2), 16);
arr[2] = parseInt(c.substr(4, 2), 16);
rgb = {
r: arr[0],
g: arr[1],
b: arr[2]
};
}
}
return rgb2hsl(rgb.r, rgb.g, rgb.b);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZ2IyaGV4IiwiciIsImciLCJiIiwicmVkIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImdyZWVuIiwiYmx1ZSIsImxlbmd0aCIsImhzYjJoc2wiLCJhIiwiYyIsImhzbDJoc2IiLCJoc2wycmdiIiwiaCIsInMiLCJsIiwiQyIsIk1hdGgiLCJhYnMiLCJYIiwibSIsIlIiLCJHIiwiQiIsInJvdW5kIiwiaHNiMmhleCIsInVuZGVmaW5lZCIsImh1ZSIsInNhdHVyYXRpb24iLCJicmlnaHRuZXNzIiwicmdiMmhzbCIsIm1pbiIsIm1heCIsImkiLCJtYXhjb2xvciIsInJnYiIsImlzTmFOIiwidzN0cmltIiwieCIsInJlcGxhY2UiLCJnZXRDb2xvckFyciIsImNvbG9yMmhzYiIsImhzbCIsImNvbG9yMmhzbCIsInkiLCJ0eXAiLCJhcnIiLCJhcnJsZW5ndGgiLCJtYXRjaCIsImNvbG9ybmFtZXMiLCJjb2xvcmhleHMiLCJ0b0xvd2VyQ2FzZSIsInN1YnN0ciIsImluZGV4T2YiLCJzcGxpdCIsIk51bWJlciIsInBhcnNlSW50IiwicHVzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvX3V0aWwvY29sb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmV4cG9ydCBjb25zdCByZ2IyaGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgbGV0IHJlZCA9IHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgbGV0IGdyZWVuID0gZy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICBsZXQgYmx1ZSA9IGIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgcmVkID0gcmVkLmxlbmd0aCA9PT0gMSA/IGAwJHtyZWR9YCA6IHJlZFxuICBncmVlbiA9IGdyZWVuLmxlbmd0aCA9PT0gMSA/IGAwJHtncmVlbn1gIDogZ3JlZW5cbiAgYmx1ZSA9IGJsdWUubGVuZ3RoID09PSAxID8gYDAke2JsdWV9YCA6IGJsdWVcbiAgcmV0dXJuIGAjJHtyZWR9JHtncmVlbn0ke2JsdWV9YFxufVxuXG5leHBvcnQgY29uc3QgaHNiMmhzbCA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBbYSwgKGIgKiBjKSAvICgoYSA9ICgyIC0gYikgKiBjKSA8IDEgPyBhIDogMiAtIGEpLCBhIC8gMl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJoc2IgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikgPT4ge1xuICBiICo9IGMgPCAwLjUgPyBjIDogMSAtIGNcbiAgcmV0dXJuIFthLCAoMiAqIGIpIC8gKGMgKyBiKSB8fCAwLCBjICsgYl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJyZ2IgPSAoaDogbnVtYmVyLCBzOiBudW1iZXIsIGw6IG51bWJlcikgPT4ge1xuICBjb25zdCBDID0gKDEgLSBNYXRoLmFicygyICogbCAtIDEpKSAqIHNcbiAgY29uc3QgWCA9IEMgKiAoMSAtIE1hdGguYWJzKCgoaCAvIDYwKSAlIDIpIC0gMSkpXG4gIGNvbnN0IG0gPSBsIC0gQyAvIDJcbiAgbGV0IFtSLCBHLCBCXTogYW55ID1cbiAgICAoaCA+PSAwICYmIGggPCA2MCAmJiBbQywgWCwgMF0pIHx8XG4gICAgKGggPj0gNjAgJiYgaCA8IDEyMCAmJiBbWCwgQywgMF0pIHx8XG4gICAgKGggPj0gMTIwICYmIGggPCAxODAgJiYgWzAsIEMsIFhdKSB8fFxuICAgIChoID49IDE4MCAmJiBoIDwgMjQwICYmIFswLCBYLCBDXSkgfHxcbiAgICAoaCA+PSAyNDAgJiYgaCA8IDMwMCAmJiBbWCwgMCwgQ10pIHx8XG4gICAgKGggPj0gMzAwICYmIGggPCAzNjAgJiYgW0MsIDAsIFhdKVxuICA7W1IsIEcsIEJdID0gWyhSICsgbSkgKiAyNTUsIChHICsgbSkgKiAyNTUsIChCICsgbSkgKiAyNTVdXG4gIHJldHVybiBbTWF0aC5yb3VuZChSKSwgTWF0aC5yb3VuZChHKSwgTWF0aC5yb3VuZChCKV1cbn1cblxuZXhwb3J0IGNvbnN0IGhzYjJoZXggPSAoXG4gIGg/OiBudW1iZXIgfCBudWxsLFxuICBzPzogbnVtYmVyIHwgbnVsbCxcbiAgYj86IG51bWJlciB8IG51bGxcbikgPT4ge1xuICBpZiAoXG4gICAgaCA9PT0gbnVsbCB8fFxuICAgIGggPT09IHVuZGVmaW5lZCB8fFxuICAgIHMgPT09IG51bGwgfHxcbiAgICBzID09PSB1bmRlZmluZWQgfHxcbiAgICBiID09PSBudWxsIHx8XG4gICAgYiA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBcIlwiXG4gIH1cbiAgY29uc3QgW2h1ZSwgc2F0dXJhdGlvbiwgYnJpZ2h0bmVzc10gPSBoc2IyaHNsKGgsIHMsIGIpXG4gIGNvbnN0IFtyZWQsIGdyZWVuLCBibHVlXSA9IGhzbDJyZ2IoaHVlLCBzYXR1cmF0aW9uIHx8IDAsIGJyaWdodG5lc3MgfHwgMClcbiAgcmV0dXJuIHJnYjJoZXgocmVkLCBncmVlbiwgYmx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IHJnYjJoc2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBsZXQgbWluLFxuICAgIG1heCxcbiAgICBpLFxuICAgIGwsXG4gICAgcyxcbiAgICBtYXhjb2xvcixcbiAgICBoLFxuICAgIHJnYiA9IFtdXG4gIHJnYlswXSA9IHIgLyAyNTVcbiAgcmdiWzFdID0gZyAvIDI1NVxuICByZ2JbMl0gPSBiIC8gMjU1XG4gIG1pbiA9IHJnYlswXVxuICBtYXggPSByZ2JbMF1cbiAgbWF4Y29sb3IgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCByZ2IubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKHJnYltpICsgMV0gPD0gbWluKSB7XG4gICAgICBtaW4gPSByZ2JbaSArIDFdXG4gICAgfVxuICAgIGlmIChyZ2JbaSArIDFdID49IG1heCkge1xuICAgICAgbWF4ID0gcmdiW2kgKyAxXVxuICAgICAgbWF4Y29sb3IgPSBpICsgMVxuICAgIH1cbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMCkge1xuICAgIGggPSAocmdiWzFdIC0gcmdiWzJdKSAvIChtYXggLSBtaW4pXG4gIH1cbiAgaWYgKG1heGNvbG9yID09IDEpIHtcbiAgICBoID0gMiArIChyZ2JbMl0gLSByZ2JbMF0pIC8gKG1heCAtIG1pbilcbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMikge1xuICAgIGggPSA0ICsgKHJnYlswXSAtIHJnYlsxXSkgLyAobWF4IC0gbWluKVxuICB9XG4gIGlmICghaCB8fCBpc05hTihoKSkge1xuICAgIGggPSAwXG4gIH1cbiAgaCA9IGggKiA2MFxuICBpZiAoaCA8IDApIHtcbiAgICBoID0gaCArIDM2MFxuICB9XG4gIGwgPSAobWluICsgbWF4KSAvIDJcbiAgaWYgKG1pbiA9PSBtYXgpIHtcbiAgICBzID0gMFxuICB9IGVsc2Uge1xuICAgIGlmIChsIDwgMC41KSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAobWF4ICsgbWluKVxuICAgIH0gZWxzZSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAoMiAtIG1heCAtIG1pbilcbiAgICB9XG4gIH1cbiAgcyA9IHNcbiAgcmV0dXJuIHsgaDogaCwgczogcywgbDogbCB9XG59XG5cbmV4cG9ydCBjb25zdCB3M3RyaW0gPSAoeDogYW55KSA9PiB4LnJlcGxhY2UoL15cXHMrfFxccyskL2csIFwiXCIpXG5cbmV4cG9ydCBjb25zdCBnZXRDb2xvckFyciA9ICh4OiBhbnkpID0+IHtcbiAgaWYgKHggPT0gXCJuYW1lc1wiKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiQWxpY2VCbHVlXCIsXG4gICAgICBcIkFudGlxdWVXaGl0ZVwiLFxuICAgICAgXCJBcXVhXCIsXG4gICAgICBcIkFxdWFtYXJpbmVcIixcbiAgICAgIFwiQXp1cmVcIixcbiAgICAgIFwiQmVpZ2VcIixcbiAgICAgIFwiQmlzcXVlXCIsXG4gICAgICBcIkJsYWNrXCIsXG4gICAgICBcIkJsYW5jaGVkQWxtb25kXCIsXG4gICAgICBcIkJsdWVcIixcbiAgICAgIFwiQmx1ZVZpb2xldFwiLFxuICAgICAgXCJCcm93blwiLFxuICAgICAgXCJCdXJseVdvb2RcIixcbiAgICAgIFwiQ2FkZXRCbHVlXCIsXG4gICAgICBcIkNoYXJ0cmV1c2VcIixcbiAgICAgIFwiQ2hvY29sYXRlXCIsXG4gICAgICBcIkNvcmFsXCIsXG4gICAgICBcIkNvcm5mbG93ZXJCbHVlXCIsXG4gICAgICBcIkNvcm5zaWxrXCIsXG4gICAgICBcIkNyaW1zb25cIixcbiAgICAgIFwiQ3lhblwiLFxuICAgICAgXCJEYXJrQmx1ZVwiLFxuICAgICAgXCJEYXJrQ3lhblwiLFxuICAgICAgXCJEYXJrR29sZGVuUm9kXCIsXG4gICAgICBcIkRhcmtHcmF5XCIsXG4gICAgICBcIkRhcmtHcmV5XCIsXG4gICAgICBcIkRhcmtHcmVlblwiLFxuICAgICAgXCJEYXJrS2hha2lcIixcbiAgICAgIFwiRGFya01hZ2VudGFcIixcbiAgICAgIFwiRGFya09saXZlR3JlZW5cIixcbiAgICAgIFwiRGFya09yYW5nZVwiLFxuICAgICAgXCJEYXJrT3JjaGlkXCIsXG4gICAgICBcIkRhcmtSZWRcIixcbiAgICAgIFwiRGFya1NhbG1vblwiLFxuICAgICAgXCJEYXJrU2VhR3JlZW5cIixcbiAgICAgIFwiRGFya1NsYXRlQmx1ZVwiLFxuICAgICAgXCJEYXJrU2xhdGVHcmF5XCIsXG4gICAgICBcIkRhcmtTbGF0ZUdyZXlcIixcbiAgICAgIFwiRGFya1R1cnF1b2lzZVwiLFxuICAgICAgXCJEYXJrVmlvbGV0XCIsXG4gICAgICBcIkRlZXBQaW5rXCIsXG4gICAgICBcIkRlZXBTa3lCbHVlXCIsXG4gICAgICBcIkRpbUdyYXlcIixcbiAgICAgIFwiRGltR3JleVwiLFxuICAgICAgXCJEb2RnZXJCbHVlXCIsXG4gICAgICBcIkZpcmVCcmlja1wiLFxuICAgICAgXCJGbG9yYWxXaGl0ZVwiLFxuICAgICAgXCJGb3Jlc3RHcmVlblwiLFxuICAgICAgXCJGdWNoc2lhXCIsXG4gICAgICBcIkdhaW5zYm9yb1wiLFxuICAgICAgXCJHaG9zdFdoaXRlXCIsXG4gICAgICBcIkdvbGRcIixcbiAgICAgIFwiR29sZGVuUm9kXCIsXG4gICAgICBcIkdyYXlcIixcbiAgICAgIFwiR3JleVwiLFxuICAgICAgXCJHcmVlblwiLFxuICAgICAgXCJHcmVlblllbGxvd1wiLFxuICAgICAgXCJIb25leURld1wiLFxuICAgICAgXCJIb3RQaW5rXCIsXG4gICAgICBcIkluZGlhblJlZFwiLFxuICAgICAgXCJJbmRpZ29cIixcbiAgICAgIFwiSXZvcnlcIixcbiAgICAgIFwiS2hha2lcIixcbiAgICAgIFwiTGF2ZW5kZXJcIixcbiAgICAgIFwiTGF2ZW5kZXJCbHVzaFwiLFxuICAgICAgXCJMYXduR3JlZW5cIixcbiAgICAgIFwiTGVtb25DaGlmZm9uXCIsXG4gICAgICBcIkxpZ2h0Qmx1ZVwiLFxuICAgICAgXCJMaWdodENvcmFsXCIsXG4gICAgICBcIkxpZ2h0Q3lhblwiLFxuICAgICAgXCJMaWdodEdvbGRlblJvZFllbGxvd1wiLFxuICAgICAgXCJMaWdodEdyYXlcIixcbiAgICAgIFwiTGlnaHRHcmV5XCIsXG4gICAgICBcIkxpZ2h0R3JlZW5cIixcbiAgICAgIFwiTGlnaHRQaW5rXCIsXG4gICAgICBcIkxpZ2h0U2FsbW9uXCIsXG4gICAgICBcIkxpZ2h0U2VhR3JlZW5cIixcbiAgICAgIFwiTGlnaHRTa3lCbHVlXCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmF5XCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmV5XCIsXG4gICAgICBcIkxpZ2h0U3RlZWxCbHVlXCIsXG4gICAgICBcIkxpZ2h0WWVsbG93XCIsXG4gICAgICBcIkxpbWVcIixcbiAgICAgIFwiTGltZUdyZWVuXCIsXG4gICAgICBcIkxpbmVuXCIsXG4gICAgICBcIk1hZ2VudGFcIixcbiAgICAgIFwiTWFyb29uXCIsXG4gICAgICBcIk1lZGl1bUFxdWFNYXJpbmVcIixcbiAgICAgIFwiTWVkaXVtQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1PcmNoaWRcIixcbiAgICAgIFwiTWVkaXVtUHVycGxlXCIsXG4gICAgICBcIk1lZGl1bVNlYUdyZWVuXCIsXG4gICAgICBcIk1lZGl1bVNsYXRlQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1TcHJpbmdHcmVlblwiLFxuICAgICAgXCJNZWRpdW1UdXJxdW9pc2VcIixcbiAgICAgIFwiTWVkaXVtVmlvbGV0UmVkXCIsXG4gICAgICBcIk1pZG5pZ2h0Qmx1ZVwiLFxuICAgICAgXCJNaW50Q3JlYW1cIixcbiAgICAgIFwiTWlzdHlSb3NlXCIsXG4gICAgICBcIk1vY2Nhc2luXCIsXG4gICAgICBcIk5hdmFqb1doaXRlXCIsXG4gICAgICBcIk5hdnlcIixcbiAgICAgIFwiT2xkTGFjZVwiLFxuICAgICAgXCJPbGl2ZVwiLFxuICAgICAgXCJPbGl2ZURyYWJcIixcbiAgICAgIFwiT3JhbmdlXCIsXG4gICAgICBcIk9yYW5nZVJlZFwiLFxuICAgICAgXCJPcmNoaWRcIixcbiAgICAgIFwiUGFsZUdvbGRlblJvZFwiLFxuICAgICAgXCJQYWxlR3JlZW5cIixcbiAgICAgIFwiUGFsZVR1cnF1b2lzZVwiLFxuICAgICAgXCJQYWxlVmlvbGV0UmVkXCIsXG4gICAgICBcIlBhcGF5YVdoaXBcIixcbiAgICAgIFwiUGVhY2hQdWZmXCIsXG4gICAgICBcIlBlcnVcIixcbiAgICAgIFwiUGlua1wiLFxuICAgICAgXCJQbHVtXCIsXG4gICAgICBcIlBvd2RlckJsdWVcIixcbiAgICAgIFwiUHVycGxlXCIsXG4gICAgICBcIlJlYmVjY2FQdXJwbGVcIixcbiAgICAgIFwiUmVkXCIsXG4gICAgICBcIlJvc3lCcm93blwiLFxuICAgICAgXCJSb3lhbEJsdWVcIixcbiAgICAgIFwiU2FkZGxlQnJvd25cIixcbiAgICAgIFwiU2FsbW9uXCIsXG4gICAgICBcIlNhbmR5QnJvd25cIixcbiAgICAgIFwiU2VhR3JlZW5cIixcbiAgICAgIFwiU2VhU2hlbGxcIixcbiAgICAgIFwiU2llbm5hXCIsXG4gICAgICBcIlNpbHZlclwiLFxuICAgICAgXCJTa3lCbHVlXCIsXG4gICAgICBcIlNsYXRlQmx1ZVwiLFxuICAgICAgXCJTbGF0ZUdyYXlcIixcbiAgICAgIFwiU2xhdGVHcmV5XCIsXG4gICAgICBcIlNub3dcIixcbiAgICAgIFwiU3ByaW5nR3JlZW5cIixcbiAgICAgIFwiU3RlZWxCbHVlXCIsXG4gICAgICBcIlRhblwiLFxuICAgICAgXCJUZWFsXCIsXG4gICAgICBcIlRoaXN0bGVcIixcbiAgICAgIFwiVG9tYXRvXCIsXG4gICAgICBcIlR1cnF1b2lzZVwiLFxuICAgICAgXCJWaW9sZXRcIixcbiAgICAgIFwiV2hlYXRcIixcbiAgICAgIFwiV2hpdGVcIixcbiAgICAgIFwiV2hpdGVTbW9rZVwiLFxuICAgICAgXCJZZWxsb3dcIixcbiAgICAgIFwiWWVsbG93R3JlZW5cIixcbiAgICBdXG4gIH1cbiAgaWYgKHggPT0gXCJoZXhzXCIpIHtcbiAgICByZXR1cm4gW1xuICAgICAgXCJmMGY4ZmZcIixcbiAgICAgIFwiZmFlYmQ3XCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCI3ZmZmZDRcIixcbiAgICAgIFwiZjBmZmZmXCIsXG4gICAgICBcImY1ZjVkY1wiLFxuICAgICAgXCJmZmU0YzRcIixcbiAgICAgIFwiMDAwMDAwXCIsXG4gICAgICBcImZmZWJjZFwiLFxuICAgICAgXCIwMDAwZmZcIixcbiAgICAgIFwiOGEyYmUyXCIsXG4gICAgICBcImE1MmEyYVwiLFxuICAgICAgXCJkZWI4ODdcIixcbiAgICAgIFwiNWY5ZWEwXCIsXG4gICAgICBcIjdmZmYwMFwiLFxuICAgICAgXCJkMjY5MWVcIixcbiAgICAgIFwiZmY3ZjUwXCIsXG4gICAgICBcIjY0OTVlZFwiLFxuICAgICAgXCJmZmY4ZGNcIixcbiAgICAgIFwiZGMxNDNjXCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCIwMDAwOGJcIixcbiAgICAgIFwiMDA4YjhiXCIsXG4gICAgICBcImI4ODYwYlwiLFxuICAgICAgXCJhOWE5YTlcIixcbiAgICAgIFwiYTlhOWE5XCIsXG4gICAgICBcIjAwNjQwMFwiLFxuICAgICAgXCJiZGI3NmJcIixcbiAgICAgIFwiOGIwMDhiXCIsXG4gICAgICBcIjU1NmIyZlwiLFxuICAgICAgXCJmZjhjMDBcIixcbiAgICAgIFwiOTkzMmNjXCIsXG4gICAgICBcIjhiMDAwMFwiLFxuICAgICAgXCJlOTk2N2FcIixcbiAgICAgIFwiOGZiYzhmXCIsXG4gICAgICBcIjQ4M2Q4YlwiLFxuICAgICAgXCIyZjRmNGZcIixcbiAgICAgIFwiMmY0ZjRmXCIsXG4gICAgICBcIjAwY2VkMVwiLFxuICAgICAgXCI5NDAwZDNcIixcbiAgICAgIFwiZmYxNDkzXCIsXG4gICAgICBcIjAwYmZmZlwiLFxuICAgICAgXCI2OTY5NjlcIixcbiAgICAgIFwiNjk2OTY5XCIsXG4gICAgICBcIjFlOTBmZlwiLFxuICAgICAgXCJiMjIyMjJcIixcbiAgICAgIFwiZmZmYWYwXCIsXG4gICAgICBcIjIyOGIyMlwiLFxuICAgICAgXCJmZjAwZmZcIixcbiAgICAgIFwiZGNkY2RjXCIsXG4gICAgICBcImY4ZjhmZlwiLFxuICAgICAgXCJmZmQ3MDBcIixcbiAgICAgIFwiZGFhNTIwXCIsXG4gICAgICBcIjgwODA4MFwiLFxuICAgICAgXCI4MDgwODBcIixcbiAgICAgIFwiMDA4MDAwXCIsXG4gICAgICBcImFkZmYyZlwiLFxuICAgICAgXCJmMGZmZjBcIixcbiAgICAgIFwiZmY2OWI0XCIsXG4gICAgICBcImNkNWM1Y1wiLFxuICAgICAgXCI0YjAwODJcIixcbiAgICAgIFwiZmZmZmYwXCIsXG4gICAgICBcImYwZTY4Y1wiLFxuICAgICAgXCJlNmU2ZmFcIixcbiAgICAgIFwiZmZmMGY1XCIsXG4gICAgICBcIjdjZmMwMFwiLFxuICAgICAgXCJmZmZhY2RcIixcbiAgICAgIFwiYWRkOGU2XCIsXG4gICAgICBcImYwODA4MFwiLFxuICAgICAgXCJlMGZmZmZcIixcbiAgICAgIFwiZmFmYWQyXCIsXG4gICAgICBcImQzZDNkM1wiLFxuICAgICAgXCJkM2QzZDNcIixcbiAgICAgIFwiOTBlZTkwXCIsXG4gICAgICBcImZmYjZjMVwiLFxuICAgICAgXCJmZmEwN2FcIixcbiAgICAgIFwiMjBiMmFhXCIsXG4gICAgICBcIjg3Y2VmYVwiLFxuICAgICAgXCI3Nzg4OTlcIixcbiAgICAgIFwiNzc4ODk5XCIsXG4gICAgICBcImIwYzRkZVwiLFxuICAgICAgXCJmZmZmZTBcIixcbiAgICAgIFwiMDBmZjAwXCIsXG4gICAgICBcIjMyY2QzMlwiLFxuICAgICAgXCJmYWYwZTZcIixcbiAgICAgIFwiZmYwMGZmXCIsXG4gICAgICBcIjgwMDAwMFwiLFxuICAgICAgXCI2NmNkYWFcIixcbiAgICAgIFwiMDAwMGNkXCIsXG4gICAgICBcImJhNTVkM1wiLFxuICAgICAgXCI5MzcwZGJcIixcbiAgICAgIFwiM2NiMzcxXCIsXG4gICAgICBcIjdiNjhlZVwiLFxuICAgICAgXCIwMGZhOWFcIixcbiAgICAgIFwiNDhkMWNjXCIsXG4gICAgICBcImM3MTU4NVwiLFxuICAgICAgXCIxOTE5NzBcIixcbiAgICAgIFwiZjVmZmZhXCIsXG4gICAgICBcImZmZTRlMVwiLFxuICAgICAgXCJmZmU0YjVcIixcbiAgICAgIFwiZmZkZWFkXCIsXG4gICAgICBcIjAwMDA4MFwiLFxuICAgICAgXCJmZGY1ZTZcIixcbiAgICAgIFwiODA4MDAwXCIsXG4gICAgICBcIjZiOGUyM1wiLFxuICAgICAgXCJmZmE1MDBcIixcbiAgICAgIFwiZmY0NTAwXCIsXG4gICAgICBcImRhNzBkNlwiLFxuICAgICAgXCJlZWU4YWFcIixcbiAgICAgIFwiOThmYjk4XCIsXG4gICAgICBcImFmZWVlZVwiLFxuICAgICAgXCJkYjcwOTNcIixcbiAgICAgIFwiZmZlZmQ1XCIsXG4gICAgICBcImZmZGFiOVwiLFxuICAgICAgXCJjZDg1M2ZcIixcbiAgICAgIFwiZmZjMGNiXCIsXG4gICAgICBcImRkYTBkZFwiLFxuICAgICAgXCJiMGUwZTZcIixcbiAgICAgIFwiODAwMDgwXCIsXG4gICAgICBcIjY2MzM5OVwiLFxuICAgICAgXCJmZjAwMDBcIixcbiAgICAgIFwiYmM4ZjhmXCIsXG4gICAgICBcIjQxNjllMVwiLFxuICAgICAgXCI4YjQ1MTNcIixcbiAgICAgIFwiZmE4MDcyXCIsXG4gICAgICBcImY0YTQ2MFwiLFxuICAgICAgXCIyZThiNTdcIixcbiAgICAgIFwiZmZmNWVlXCIsXG4gICAgICBcImEwNTIyZFwiLFxuICAgICAgXCJjMGMwYzBcIixcbiAgICAgIFwiODdjZWViXCIsXG4gICAgICBcIjZhNWFjZFwiLFxuICAgICAgXCI3MDgwOTBcIixcbiAgICAgIFwiNzA4MDkwXCIsXG4gICAgICBcImZmZmFmYVwiLFxuICAgICAgXCIwMGZmN2ZcIixcbiAgICAgIFwiNDY4MmI0XCIsXG4gICAgICBcImQyYjQ4Y1wiLFxuICAgICAgXCIwMDgwODBcIixcbiAgICAgIFwiZDhiZmQ4XCIsXG4gICAgICBcImZmNjM0N1wiLFxuICAgICAgXCI0MGUwZDBcIixcbiAgICAgIFwiZWU4MmVlXCIsXG4gICAgICBcImY1ZGViM1wiLFxuICAgICAgXCJmZmZmZmZcIixcbiAgICAgIFwiZjVmNWY1XCIsXG4gICAgICBcImZmZmYwMFwiLFxuICAgICAgXCI5YWNkMzJcIixcbiAgICBdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9yMmhzYiA9IChjOiBhbnkpID0+IHtcbiAgY29uc3QgaHNsID0gY29sb3IyaHNsKGMpXG4gIHJldHVybiBoc2wyaHNiKGhzbC5oLCBoc2wucywgaHNsLmwpXG59XG5cbmV4cG9ydCBjb25zdCBjb2xvcjJoc2wgPSAoYzogYW55KSA9PiB7XG4gIGxldCB4LFxuICAgIHksXG4gICAgdHlwLFxuICAgIGFyciA9IFtdLFxuICAgIGFycmxlbmd0aCxcbiAgICBpLFxuICAgIG1hdGNoLFxuICAgIHJnYjogYW55LFxuICAgIGNvbG9ybmFtZXM6IGFueSA9IFtdLFxuICAgIGNvbG9yaGV4czogYW55ID0gW11cbiAgYyA9IHczdHJpbShjLnRvTG93ZXJDYXNlKCkpXG4gIHggPSBjLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpXG4gIHkgPSBjLnN1YnN0cigxKVxuICBpZiAoXG4gICAgKHggPT0gXCJSXCIgfHxcbiAgICAgIHggPT0gXCJZXCIgfHxcbiAgICAgIHggPT0gXCJHXCIgfHxcbiAgICAgIHggPT0gXCJDXCIgfHxcbiAgICAgIHggPT0gXCJCXCIgfHxcbiAgICAgIHggPT0gXCJNXCIgfHxcbiAgICAgIHggPT0gXCJXXCIpICYmXG4gICAgIWlzTmFOKHkpXG4gICkge1xuICAgIGlmIChjLmxlbmd0aCA9PSA2ICYmIGMuaW5kZXhPZihcIixcIikgPT0gLTEpIHtcbiAgICB9IGVsc2Uge1xuICAgICAgYyA9IFwibmNvbChcIiArIGMgKyBcIilcIlxuICAgIH1cbiAgfVxuICBpZiAoYy5sZW5ndGggIT0gMyAmJiBjLmxlbmd0aCAhPSA2ICYmICFpc05hTihjKSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoYy5pbmRleE9mKFwiLFwiKSA+IDAgJiYgYy5pbmRleE9mKFwiKFwiKSA9PSAtMSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoXG4gICAgYy5zdWJzdHIoMCwgMykgPT0gXCJyZ2JcIiB8fFxuICAgIGMuc3Vic3RyKDAsIDMpID09IFwiaHNsXCIgfHxcbiAgICBjLnN1YnN0cigwLCAzKSA9PSBcImh3YlwiIHx8XG4gICAgYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIgfHxcbiAgICBjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIlxuICApIHtcbiAgICBpZiAoYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIpIHtcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNCAmJiBjLmluZGV4T2YoXCJuY29sYVwiKSA9PSAtMSkge1xuICAgICAgICBjID0gYy5yZXBsYWNlKFwibmNvbFwiLCBcIm5jb2xhXCIpXG4gICAgICB9XG4gICAgICB0eXAgPSBcIm5jb2xcIlxuICAgICAgYyA9IGMuc3Vic3RyKDQpXG4gICAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIikge1xuICAgICAgdHlwID0gXCJjbXlrXCJcbiAgICAgIGMgPSBjLnN1YnN0cig0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0eXAgPSBjLnN1YnN0cigwLCAzKVxuICAgICAgYyA9IGMuc3Vic3RyKDMpXG4gICAgfVxuICAgIGFycmxlbmd0aCA9IDNcbiAgICBpZiAoYy5zdWJzdHIoMCwgMSkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xuICAgICAgYXJybGVuZ3RoID0gNFxuICAgICAgYyA9IGMuc3Vic3RyKDEpXG4gICAgfSBlbHNlIGlmICh0eXAgPT0gXCJjbXlrXCIpIHtcbiAgICAgIGFycmxlbmd0aCA9IDRcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNSkge1xuICAgICAgICBhcnJsZW5ndGggPSA1XG4gICAgICB9XG4gICAgfVxuICAgIGMgPSBjLnJlcGxhY2UoXCIoXCIsIFwiXCIpXG4gICAgYyA9IGMucmVwbGFjZShcIilcIiwgXCJcIilcbiAgICBhcnIgPSBjLnNwbGl0KFwiLFwiKVxuICAgIGlmICh0eXAgPT0gXCJyZ2JcIikge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0gPT0gXCJcIiB8fCBhcnJbaV0gPT0gXCIgXCIpIHtcbiAgICAgICAgICBhcnJbaV0gPSBcIjBcIlxuICAgICAgICB9XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0gLyAxMDApXG4gICAgICAgICAgaWYgKGkgPCAzKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBNYXRoLnJvdW5kKGFycltpXSAqIDI1NSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGFycltpXSkgPiAyNTUpIHtcbiAgICAgICAgICBhcnJbaV0gPSAyNTVcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IDMpIHtcbiAgICAgICAgICBhcnJbaV0gPSBwYXJzZUludChhcnJbaV0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT0gMyAmJiBOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJnYiA9IHsgcjogYXJyWzBdLCBnOiBhcnJbMV0sIGI6IGFyclsyXSB9XG4gICAgfVxuICAgIGlmICh0eXAgPT0gXCJoc2xcIiB8fCB0eXAgPT0gXCJod2JcIiB8fCB0eXAgPT0gXCJuY29sXCIpIHtcbiAgICAgIHdoaWxlIChhcnIubGVuZ3RoIDwgYXJybGVuZ3RoKSB7XG4gICAgICAgIGFyci5wdXNoKFwiMFwiKVxuICAgICAgfVxuICAgICAgaWYgKHR5cCA9PSBcImhzbFwiIHx8IHR5cCA9PSBcImh3YlwiKSB7XG4gICAgICAgIGlmIChwYXJzZUludChhcnJbMF0pID49IDM2MCkge1xuICAgICAgICAgIGFyclswXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChpID0gMTsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0pXG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldIC8gMTAwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKGFycltpXSkgPiAxKSB7XG4gICAgICAgICAgYXJyW2ldID0gMVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA8IDApIHtcbiAgICAgICAgICBhcnJbaV0gPSAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cCA9PSBcImNteWtcIikge1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPCBhcnJsZW5ndGgpIHtcbiAgICAgICAgYXJyLnB1c2goXCIwXCIpXG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJybGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXS5pbmRleE9mKFwiJVwiKSA+IC0xKSB7XG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldLnJlcGxhY2UoXCIlXCIsIFwiXCIpXG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgICBhcnJbaV0gPSBhcnJbaV0gLyAxMDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcnJbaV0gPSBOdW1iZXIoYXJyW2ldKVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihhcnJbaV0pIDwgMCkge1xuICAgICAgICAgIGFycltpXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCAzKSA9PSBcIm5jc1wiKSB7XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2ggPSBmYWxzZVxuICAgIGNvbG9ybmFtZXMgPSBnZXRDb2xvckFycihcIm5hbWVzXCIpXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbG9ybmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjLnRvTG93ZXJDYXNlKCkgPT0gY29sb3JuYW1lc1tpXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNvbG9yaGV4cyA9IGdldENvbG9yQXJyKFwiaGV4c1wiKVxuICAgICAgICBtYXRjaCA9IHRydWVcbiAgICAgICAgcmdiID0ge1xuICAgICAgICAgIHI6IHBhcnNlSW50KGNvbG9yaGV4c1tpXS5zdWJzdHIoMCwgMiksIDE2KSxcbiAgICAgICAgICBnOiBwYXJzZUludChjb2xvcmhleHNbaV0uc3Vic3RyKDIsIDIpLCAxNiksXG4gICAgICAgICAgYjogcGFyc2VJbnQoY29sb3JoZXhzW2ldLnN1YnN0cig0LCAyKSwgMTYpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXRjaCA9PSBmYWxzZSkge1xuICAgICAgYyA9IGMucmVwbGFjZShcIiNcIiwgXCJcIilcbiAgICAgIGlmIChjLmxlbmd0aCA9PSAzKSB7XG4gICAgICAgIGMgPVxuICAgICAgICAgIGMuc3Vic3RyKDAsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigwLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMSwgMSkgK1xuICAgICAgICAgIGMuc3Vic3RyKDEsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigyLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMiwgMSlcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7fVxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYy5zdWJzdHIoMCwgMiksIDE2KVxuICAgICAgYXJyWzFdID0gcGFyc2VJbnQoYy5zdWJzdHIoMiwgMiksIDE2KVxuICAgICAgYXJyWzJdID0gcGFyc2VJbnQoYy5zdWJzdHIoNCwgMiksIDE2KVxuICAgICAgcmdiID0ge1xuICAgICAgICByOiBhcnJbMF0sXG4gICAgICAgIGc6IGFyclsxXSxcbiAgICAgICAgYjogYXJyWzJdLFxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmdiMmhzbChyZ2IuciwgcmdiLmcsIHJnYi5iKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLElBQU1BLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLENBQUQsRUFBWUMsQ0FBWixFQUF1QkMsQ0FBdkIsRUFBcUM7RUFDMUQsSUFBSUMsR0FBRyxHQUFHSCxDQUFDLENBQUNJLFFBQUYsQ0FBVyxFQUFYLEVB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QXJESyxFQXNETCxRQXRESyxFQXVETCxRQXZESyxFQXdETCxRQXhESyxFQXlETCxRQXpESyxFQTBETCxRQTFESyxFQTJETCxRQTNESyxFQTRETCxRQTVESyxFQTZETCxRQTdESyxFQThETCxRQTlESyxFQStETCxRQS9ESyxFQWdFTCxRQWhFSyxFQWlFTCxRQWpFSyxFQWtFTCxRQWxFSyxFQW1FTCxRQW5FSyxFQW9FTCxRQXBFSyxFQXFFTCxRQXJFSyxFQXNFTCxRQXRFSyxFQXVFTCxRQXZFSyxFQXdFTCxRQXhFSyxFQXlFTCxRQXpFSyxFQTBFTCxRQTFFSyxFQTJFTCxRQTNFSyxFQTRFTCxRQTVFSyxFQTZFTCxRQTdFSyxFQThFTCxRQTlFSyxFQStFTCxRQS9FSyxFQWdGTCxRQWhGSyxFQWlGTCxRQWpGSyxFQWtGTCxRQWxGSyxFQW1GTCxRQW5GSyxFQW9GTCxRQXBGSyxFQXFGTCxRQXJGSyxFQXNGTCxRQXRGSyxFQXVGTCxRQXZGSyxFQXdGTCxRQXhGSyxFQXlGTCxRQXpGSyxFQTBGTCxRQTFGSyxFQTJGTCxRQTNGSyxFQTRGTCxRQTVGSyxFQTZGTCxRQTdGSyxFQThGTCxRQTlGSyxFQStGTCxRQS9GSyxFQWdHTCxRQWhHSyxFQWlHTCxRQWpHSyxFQWtHTCxRQWxHSyxFQW1HTCxRQW5HSyxFQW9HTCxRQXBHSyxFQXFHTCxRQXJHSyxFQXNHTCxRQXRHSyxFQXVHTCxRQXZHSyxFQXdHTCxRQXhHSyxFQXlHTCxRQXpHSyxFQTBHTCxRQTFHSyxFQTJHTCxRQTNHSyxFQTRHTCxRQTVHSyxFQTZHTCxRQTdHSyxFQThHTCxRQTlHSyxFQStHTCxRQS9HSyxFQWdITCxRQWhISyxFQWlITCxRQWpISyxFQWtITCxRQWxISyxFQW1ITCxRQW5ISyxFQW9ITCxRQXBISyxFQXFITCxRQXJISyxFQXNITCxRQXRISyxFQXVITCxRQXZISyxFQXdITCxRQXhISyxFQXlITCxRQXpISyxFQTBITCxRQTFISyxFQTJITCxRQTNISyxFQTRITCxRQTVISyxFQTZITCxRQTdISyxFQThITCxRQTlISyxFQStITCxRQS9ISyxFQWdJTCxR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