UNPKG

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>

374 lines (299 loc) 53.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.w3trim = exports.rgb2hsl = exports.rgb2hex = exports.hsl2rgb = exports.hsl2hsb = exports.hsb2hsl = exports.hsb2hex = exports.getColorArr = exports.color2hsl = exports.color2hsb = void 0; 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; } 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); }; exports.rgb2hex = rgb2hex; var hsb2hsl = function hsb2hsl(a, b, c) { return [a, b * c / ((a = (2 - b) * c) < 1 ? a : 2 - a), a / 2]; }; exports.hsb2hsl = hsb2hsl; var hsl2hsb = function hsl2hsb(a, b, c) { b *= c < 0.5 ? c : 1 - c; return [a, 2 * b / (c + b) || 0, c + b]; }; exports.hsl2hsb = hsl2hsb; 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)]; }; exports.hsl2rgb = hsl2rgb; 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); }; exports.hsb2hex = hsb2hex; 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 }; }; exports.rgb2hsl = rgb2hsl; var w3trim = function w3trim(x) { return x.replace(/^\s+|\s+$/g, ""); }; exports.w3trim = w3trim; 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"]; } }; exports.getColorArr = getColorArr; var color2hsb = function color2hsb(c) { var hsl = color2hsl(c); return hsl2hsb(hsl.h, hsl.s, hsl.l); }; exports.color2hsb = color2hsb; 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); }; exports.color2hsl = color2hsl; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZ2IyaGV4IiwiciIsImciLCJiIiwicmVkIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImdyZWVuIiwiYmx1ZSIsImxlbmd0aCIsImhzYjJoc2wiLCJhIiwiYyIsImhzbDJoc2IiLCJoc2wycmdiIiwiaCIsInMiLCJsIiwiQyIsIk1hdGgiLCJhYnMiLCJYIiwibSIsIlIiLCJHIiwiQiIsInJvdW5kIiwiaHNiMmhleCIsInVuZGVmaW5lZCIsImh1ZSIsInNhdHVyYXRpb24iLCJicmlnaHRuZXNzIiwicmdiMmhzbCIsIm1pbiIsIm1heCIsImkiLCJtYXhjb2xvciIsInJnYiIsImlzTmFOIiwidzN0cmltIiwieCIsInJlcGxhY2UiLCJnZXRDb2xvckFyciIsImNvbG9yMmhzYiIsImhzbCIsImNvbG9yMmhzbCIsInkiLCJ0eXAiLCJhcnIiLCJhcnJsZW5ndGgiLCJtYXRjaCIsImNvbG9ybmFtZXMiLCJjb2xvcmhleHMiLCJ0b0xvd2VyQ2FzZSIsInN1YnN0ciIsImluZGV4T2YiLCJzcGxpdCIsIk51bWJlciIsInBhcnNlSW50IiwicHVzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvX3V0aWwvY29sb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmV4cG9ydCBjb25zdCByZ2IyaGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgbGV0IHJlZCA9IHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgbGV0IGdyZWVuID0gZy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICBsZXQgYmx1ZSA9IGIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgcmVkID0gcmVkLmxlbmd0aCA9PT0gMSA/IGAwJHtyZWR9YCA6IHJlZFxuICBncmVlbiA9IGdyZWVuLmxlbmd0aCA9PT0gMSA/IGAwJHtncmVlbn1gIDogZ3JlZW5cbiAgYmx1ZSA9IGJsdWUubGVuZ3RoID09PSAxID8gYDAke2JsdWV9YCA6IGJsdWVcbiAgcmV0dXJuIGAjJHtyZWR9JHtncmVlbn0ke2JsdWV9YFxufVxuXG5leHBvcnQgY29uc3QgaHNiMmhzbCA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBbYSwgKGIgKiBjKSAvICgoYSA9ICgyIC0gYikgKiBjKSA8IDEgPyBhIDogMiAtIGEpLCBhIC8gMl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJoc2IgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikgPT4ge1xuICBiICo9IGMgPCAwLjUgPyBjIDogMSAtIGNcbiAgcmV0dXJuIFthLCAoMiAqIGIpIC8gKGMgKyBiKSB8fCAwLCBjICsgYl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJyZ2IgPSAoaDogbnVtYmVyLCBzOiBudW1iZXIsIGw6IG51bWJlcikgPT4ge1xuICBjb25zdCBDID0gKDEgLSBNYXRoLmFicygyICogbCAtIDEpKSAqIHNcbiAgY29uc3QgWCA9IEMgKiAoMSAtIE1hdGguYWJzKCgoaCAvIDYwKSAlIDIpIC0gMSkpXG4gIGNvbnN0IG0gPSBsIC0gQyAvIDJcbiAgbGV0IFtSLCBHLCBCXTogYW55ID1cbiAgICAoaCA+PSAwICYmIGggPCA2MCAmJiBbQywgWCwgMF0pIHx8XG4gICAgKGggPj0gNjAgJiYgaCA8IDEyMCAmJiBbWCwgQywgMF0pIHx8XG4gICAgKGggPj0gMTIwICYmIGggPCAxODAgJiYgWzAsIEMsIFhdKSB8fFxuICAgIChoID49IDE4MCAmJiBoIDwgMjQwICYmIFswLCBYLCBDXSkgfHxcbiAgICAoaCA+PSAyNDAgJiYgaCA8IDMwMCAmJiBbWCwgMCwgQ10pIHx8XG4gICAgKGggPj0gMzAwICYmIGggPCAzNjAgJiYgW0MsIDAsIFhdKVxuICA7W1IsIEcsIEJdID0gWyhSICsgbSkgKiAyNTUsIChHICsgbSkgKiAyNTUsIChCICsgbSkgKiAyNTVdXG4gIHJldHVybiBbTWF0aC5yb3VuZChSKSwgTWF0aC5yb3VuZChHKSwgTWF0aC5yb3VuZChCKV1cbn1cblxuZXhwb3J0IGNvbnN0IGhzYjJoZXggPSAoXG4gIGg/OiBudW1iZXIgfCBudWxsLFxuICBzPzogbnVtYmVyIHwgbnVsbCxcbiAgYj86IG51bWJlciB8IG51bGxcbikgPT4ge1xuICBpZiAoXG4gICAgaCA9PT0gbnVsbCB8fFxuICAgIGggPT09IHVuZGVmaW5lZCB8fFxuICAgIHMgPT09IG51bGwgfHxcbiAgICBzID09PSB1bmRlZmluZWQgfHxcbiAgICBiID09PSBudWxsIHx8XG4gICAgYiA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBcIlwiXG4gIH1cbiAgY29uc3QgW2h1ZSwgc2F0dXJhdGlvbiwgYnJpZ2h0bmVzc10gPSBoc2IyaHNsKGgsIHMsIGIpXG4gIGNvbnN0IFtyZWQsIGdyZWVuLCBibHVlXSA9IGhzbDJyZ2IoaHVlLCBzYXR1cmF0aW9uIHx8IDAsIGJyaWdodG5lc3MgfHwgMClcbiAgcmV0dXJuIHJnYjJoZXgocmVkLCBncmVlbiwgYmx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IHJnYjJoc2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBsZXQgbWluLFxuICAgIG1heCxcbiAgICBpLFxuICAgIGwsXG4gICAgcyxcbiAgICBtYXhjb2xvcixcbiAgICBoLFxuICAgIHJnYiA9IFtdXG4gIHJnYlswXSA9IHIgLyAyNTVcbiAgcmdiWzFdID0gZyAvIDI1NVxuICByZ2JbMl0gPSBiIC8gMjU1XG4gIG1pbiA9IHJnYlswXVxuICBtYXggPSByZ2JbMF1cbiAgbWF4Y29sb3IgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCByZ2IubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKHJnYltpICsgMV0gPD0gbWluKSB7XG4gICAgICBtaW4gPSByZ2JbaSArIDFdXG4gICAgfVxuICAgIGlmIChyZ2JbaSArIDFdID49IG1heCkge1xuICAgICAgbWF4ID0gcmdiW2kgKyAxXVxuICAgICAgbWF4Y29sb3IgPSBpICsgMVxuICAgIH1cbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMCkge1xuICAgIGggPSAocmdiWzFdIC0gcmdiWzJdKSAvIChtYXggLSBtaW4pXG4gIH1cbiAgaWYgKG1heGNvbG9yID09IDEpIHtcbiAgICBoID0gMiArIChyZ2JbMl0gLSByZ2JbMF0pIC8gKG1heCAtIG1pbilcbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMikge1xuICAgIGggPSA0ICsgKHJnYlswXSAtIHJnYlsxXSkgLyAobWF4IC0gbWluKVxuICB9XG4gIGlmICghaCB8fCBpc05hTihoKSkge1xuICAgIGggPSAwXG4gIH1cbiAgaCA9IGggKiA2MFxuICBpZiAoaCA8IDApIHtcbiAgICBoID0gaCArIDM2MFxuICB9XG4gIGwgPSAobWluICsgbWF4KSAvIDJcbiAgaWYgKG1pbiA9PSBtYXgpIHtcbiAgICBzID0gMFxuICB9IGVsc2Uge1xuICAgIGlmIChsIDwgMC41KSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAobWF4ICsgbWluKVxuICAgIH0gZWxzZSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAoMiAtIG1heCAtIG1pbilcbiAgICB9XG4gIH1cbiAgcyA9IHNcbiAgcmV0dXJuIHsgaDogaCwgczogcywgbDogbCB9XG59XG5cbmV4cG9ydCBjb25zdCB3M3RyaW0gPSAoeDogYW55KSA9PiB4LnJlcGxhY2UoL15cXHMrfFxccyskL2csIFwiXCIpXG5cbmV4cG9ydCBjb25zdCBnZXRDb2xvckFyciA9ICh4OiBhbnkpID0+IHtcbiAgaWYgKHggPT0gXCJuYW1lc1wiKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiQWxpY2VCbHVlXCIsXG4gICAgICBcIkFudGlxdWVXaGl0ZVwiLFxuICAgICAgXCJBcXVhXCIsXG4gICAgICBcIkFxdWFtYXJpbmVcIixcbiAgICAgIFwiQXp1cmVcIixcbiAgICAgIFwiQmVpZ2VcIixcbiAgICAgIFwiQmlzcXVlXCIsXG4gICAgICBcIkJsYWNrXCIsXG4gICAgICBcIkJsYW5jaGVkQWxtb25kXCIsXG4gICAgICBcIkJsdWVcIixcbiAgICAgIFwiQmx1ZVZpb2xldFwiLFxuICAgICAgXCJCcm93blwiLFxuICAgICAgXCJCdXJseVdvb2RcIixcbiAgICAgIFwiQ2FkZXRCbHVlXCIsXG4gICAgICBcIkNoYXJ0cmV1c2VcIixcbiAgICAgIFwiQ2hvY29sYXRlXCIsXG4gICAgICBcIkNvcmFsXCIsXG4gICAgICBcIkNvcm5mbG93ZXJCbHVlXCIsXG4gICAgICBcIkNvcm5zaWxrXCIsXG4gICAgICBcIkNyaW1zb25cIixcbiAgICAgIFwiQ3lhblwiLFxuICAgICAgXCJEYXJrQmx1ZVwiLFxuICAgICAgXCJEYXJrQ3lhblwiLFxuICAgICAgXCJEYXJrR29sZGVuUm9kXCIsXG4gICAgICBcIkRhcmtHcmF5XCIsXG4gICAgICBcIkRhcmtHcmV5XCIsXG4gICAgICBcIkRhcmtHcmVlblwiLFxuICAgICAgXCJEYXJrS2hha2lcIixcbiAgICAgIFwiRGFya01hZ2VudGFcIixcbiAgICAgIFwiRGFya09saXZlR3JlZW5cIixcbiAgICAgIFwiRGFya09yYW5nZVwiLFxuICAgICAgXCJEYXJrT3JjaGlkXCIsXG4gICAgICBcIkRhcmtSZWRcIixcbiAgICAgIFwiRGFya1NhbG1vblwiLFxuICAgICAgXCJEYXJrU2VhR3JlZW5cIixcbiAgICAgIFwiRGFya1NsYXRlQmx1ZVwiLFxuICAgICAgXCJEYXJrU2xhdGVHcmF5XCIsXG4gICAgICBcIkRhcmtTbGF0ZUdyZXlcIixcbiAgICAgIFwiRGFya1R1cnF1b2lzZVwiLFxuICAgICAgXCJEYXJrVmlvbGV0XCIsXG4gICAgICBcIkRlZXBQaW5rXCIsXG4gICAgICBcIkRlZXBTa3lCbHVlXCIsXG4gICAgICBcIkRpbUdyYXlcIixcbiAgICAgIFwiRGltR3JleVwiLFxuICAgICAgXCJEb2RnZXJCbHVlXCIsXG4gICAgICBcIkZpcmVCcmlja1wiLFxuICAgICAgXCJGbG9yYWxXaGl0ZVwiLFxuICAgICAgXCJGb3Jlc3RHcmVlblwiLFxuICAgICAgXCJGdWNoc2lhXCIsXG4gICAgICBcIkdhaW5zYm9yb1wiLFxuICAgICAgXCJHaG9zdFdoaXRlXCIsXG4gICAgICBcIkdvbGRcIixcbiAgICAgIFwiR29sZGVuUm9kXCIsXG4gICAgICBcIkdyYXlcIixcbiAgICAgIFwiR3JleVwiLFxuICAgICAgXCJHcmVlblwiLFxuICAgICAgXCJHcmVlblllbGxvd1wiLFxuICAgICAgXCJIb25leURld1wiLFxuICAgICAgXCJIb3RQaW5rXCIsXG4gICAgICBcIkluZGlhblJlZFwiLFxuICAgICAgXCJJbmRpZ29cIixcbiAgICAgIFwiSXZvcnlcIixcbiAgICAgIFwiS2hha2lcIixcbiAgICAgIFwiTGF2ZW5kZXJcIixcbiAgICAgIFwiTGF2ZW5kZXJCbHVzaFwiLFxuICAgICAgXCJMYXduR3JlZW5cIixcbiAgICAgIFwiTGVtb25DaGlmZm9uXCIsXG4gICAgICBcIkxpZ2h0Qmx1ZVwiLFxuICAgICAgXCJMaWdodENvcmFsXCIsXG4gICAgICBcIkxpZ2h0Q3lhblwiLFxuICAgICAgXCJMaWdodEdvbGRlblJvZFllbGxvd1wiLFxuICAgICAgXCJMaWdodEdyYXlcIixcbiAgICAgIFwiTGlnaHRHcmV5XCIsXG4gICAgICBcIkxpZ2h0R3JlZW5cIixcbiAgICAgIFwiTGlnaHRQaW5rXCIsXG4gICAgICBcIkxpZ2h0U2FsbW9uXCIsXG4gICAgICBcIkxpZ2h0U2VhR3JlZW5cIixcbiAgICAgIFwiTGlnaHRTa3lCbHVlXCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmF5XCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmV5XCIsXG4gICAgICBcIkxpZ2h0U3RlZWxCbHVlXCIsXG4gICAgICBcIkxpZ2h0WWVsbG93XCIsXG4gICAgICBcIkxpbWVcIixcbiAgICAgIFwiTGltZUdyZWVuXCIsXG4gICAgICBcIkxpbmVuXCIsXG4gICAgICBcIk1hZ2VudGFcIixcbiAgICAgIFwiTWFyb29uXCIsXG4gICAgICBcIk1lZGl1bUFxdWFNYXJpbmVcIixcbiAgICAgIFwiTWVkaXVtQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1PcmNoaWRcIixcbiAgICAgIFwiTWVkaXVtUHVycGxlXCIsXG4gICAgICBcIk1lZGl1bVNlYUdyZWVuXCIsXG4gICAgICBcIk1lZGl1bVNsYXRlQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1TcHJpbmdHcmVlblwiLFxuICAgICAgXCJNZWRpdW1UdXJxdW9pc2VcIixcbiAgICAgIFwiTWVkaXVtVmlvbGV0UmVkXCIsXG4gICAgICBcIk1pZG5pZ2h0Qmx1ZVwiLFxuICAgICAgXCJNaW50Q3JlYW1cIixcbiAgICAgIFwiTWlzdHlSb3NlXCIsXG4gICAgICBcIk1vY2Nhc2luXCIsXG4gICAgICBcIk5hdmFqb1doaXRlXCIsXG4gICAgICBcIk5hdnlcIixcbiAgICAgIFwiT2xkTGFjZVwiLFxuICAgICAgXCJPbGl2ZVwiLFxuICAgICAgXCJPbGl2ZURyYWJcIixcbiAgICAgIFwiT3JhbmdlXCIsXG4gICAgICBcIk9yYW5nZVJlZFwiLFxuICAgICAgXCJPcmNoaWRcIixcbiAgICAgIFwiUGFsZUdvbGRlblJvZFwiLFxuICAgICAgXCJQYWxlR3JlZW5cIixcbiAgICAgIFwiUGFsZVR1cnF1b2lzZVwiLFxuICAgICAgXCJQYWxlVmlvbGV0UmVkXCIsXG4gICAgICBcIlBhcGF5YVdoaXBcIixcbiAgICAgIFwiUGVhY2hQdWZmXCIsXG4gICAgICBcIlBlcnVcIixcbiAgICAgIFwiUGlua1wiLFxuICAgICAgXCJQbHVtXCIsXG4gICAgICBcIlBvd2RlckJsdWVcIixcbiAgICAgIFwiUHVycGxlXCIsXG4gICAgICBcIlJlYmVjY2FQdXJwbGVcIixcbiAgICAgIFwiUmVkXCIsXG4gICAgICBcIlJvc3lCcm93blwiLFxuICAgICAgXCJSb3lhbEJsdWVcIixcbiAgICAgIFwiU2FkZGxlQnJvd25cIixcbiAgICAgIFwiU2FsbW9uXCIsXG4gICAgICBcIlNhbmR5QnJvd25cIixcbiAgICAgIFwiU2VhR3JlZW5cIixcbiAgICAgIFwiU2VhU2hlbGxcIixcbiAgICAgIFwiU2llbm5hXCIsXG4gICAgICBcIlNpbHZlclwiLFxuICAgICAgXCJTa3lCbHVlXCIsXG4gICAgICBcIlNsYXRlQmx1ZVwiLFxuICAgICAgXCJTbGF0ZUdyYXlcIixcbiAgICAgIFwiU2xhdGVHcmV5XCIsXG4gICAgICBcIlNub3dcIixcbiAgICAgIFwiU3ByaW5nR3JlZW5cIixcbiAgICAgIFwiU3RlZWxCbHVlXCIsXG4gICAgICBcIlRhblwiLFxuICAgICAgXCJUZWFsXCIsXG4gICAgICBcIlRoaXN0bGVcIixcbiAgICAgIFwiVG9tYXRvXCIsXG4gICAgICBcIlR1cnF1b2lzZVwiLFxuICAgICAgXCJWaW9sZXRcIixcbiAgICAgIFwiV2hlYXRcIixcbiAgICAgIFwiV2hpdGVcIixcbiAgICAgIFwiV2hpdGVTbW9rZVwiLFxuICAgICAgXCJZZWxsb3dcIixcbiAgICAgIFwiWWVsbG93R3JlZW5cIixcbiAgICBdXG4gIH1cbiAgaWYgKHggPT0gXCJoZXhzXCIpIHtcbiAgICByZXR1cm4gW1xuICAgICAgXCJmMGY4ZmZcIixcbiAgICAgIFwiZmFlYmQ3XCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCI3ZmZmZDRcIixcbiAgICAgIFwiZjBmZmZmXCIsXG4gICAgICBcImY1ZjVkY1wiLFxuICAgICAgXCJmZmU0YzRcIixcbiAgICAgIFwiMDAwMDAwXCIsXG4gICAgICBcImZmZWJjZFwiLFxuICAgICAgXCIwMDAwZmZcIixcbiAgICAgIFwiOGEyYmUyXCIsXG4gICAgICBcImE1MmEyYVwiLFxuICAgICAgXCJkZWI4ODdcIixcbiAgICAgIFwiNWY5ZWEwXCIsXG4gICAgICBcIjdmZmYwMFwiLFxuICAgICAgXCJkMjY5MWVcIixcbiAgICAgIFwiZmY3ZjUwXCIsXG4gICAgICBcIjY0OTVlZFwiLFxuICAgICAgXCJmZmY4ZGNcIixcbiAgICAgIFwiZGMxNDNjXCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCIwMDAwOGJcIixcbiAgICAgIFwiMDA4YjhiXCIsXG4gICAgICBcImI4ODYwYlwiLFxuICAgICAgXCJhOWE5YTlcIixcbiAgICAgIFwiYTlhOWE5XCIsXG4gICAgICBcIjAwNjQwMFwiLFxuICAgICAgXCJiZGI3NmJcIixcbiAgICAgIFwiOGIwMDhiXCIsXG4gICAgICBcIjU1NmIyZlwiLFxuICAgICAgXCJmZjhjMDBcIixcbiAgICAgIFwiOTkzMmNjXCIsXG4gICAgICBcIjhiMDAwMFwiLFxuICAgICAgXCJlOTk2N2FcIixcbiAgICAgIFwiOGZiYzhmXCIsXG4gICAgICBcIjQ4M2Q4YlwiLFxuICAgICAgXCIyZjRmNGZcIixcbiAgICAgIFwiMmY0ZjRmXCIsXG4gICAgICBcIjAwY2VkMVwiLFxuICAgICAgXCI5NDAwZDNcIixcbiAgICAgIFwiZmYxNDkzXCIsXG4gICAgICBcIjAwYmZmZlwiLFxuICAgICAgXCI2OTY5NjlcIixcbiAgICAgIFwiNjk2OTY5XCIsXG4gICAgICBcIjFlOTBmZlwiLFxuICAgICAgXCJiMjIyMjJcIixcbiAgICAgIFwiZmZmYWYwXCIsXG4gICAgICBcIjIyOGIyMlwiLFxuICAgICAgXCJmZjAwZmZcIixcbiAgICAgIFwiZGNkY2RjXCIsXG4gICAgICBcImY4ZjhmZlwiLFxuICAgICAgXCJmZmQ3MDBcIixcbiAgICAgIFwiZGFhNTIwXCIsXG4gICAgICBcIjgwODA4MFwiLFxuICAgICAgXCI4MDgwODBcIixcbiAgICAgIFwiMDA4MDAwXCIsXG4gICAgICBcImFkZmYyZlwiLFxuICAgICAgXCJmMGZmZjBcIixcbiAgICAgIFwiZmY2OWI0XCIsXG4gICAgICBcImNkNWM1Y1wiLFxuICAgICAgXCI0YjAwODJcIixcbiAgICAgIFwiZmZmZmYwXCIsXG4gICAgICBcImYwZTY4Y1wiLFxuICAgICAgXCJlNmU2ZmFcIixcbiAgICAgIFwiZmZmMGY1XCIsXG4gICAgICBcIjdjZmMwMFwiLFxuICAgICAgXCJmZmZhY2RcIixcbiAgICAgIFwiYWRkOGU2XCIsXG4gICAgICBcImYwODA4MFwiLFxuICAgICAgXCJlMGZmZmZcIixcbiAgICAgIFwiZmFmYWQyXCIsXG4gICAgICBcImQzZDNkM1wiLFxuICAgICAgXCJkM2QzZDNcIixcbiAgICAgIFwiOTBlZTkwXCIsXG4gICAgICBcImZmYjZjMVwiLFxuICAgICAgXCJmZmEwN2FcIixcbiAgICAgIFwiMjBiMmFhXCIsXG4gICAgICBcIjg3Y2VmYVwiLFxuICAgICAgXCI3Nzg4OTlcIixcbiAgICAgIFwiNzc4ODk5XCIsXG4gICAgICBcImIwYzRkZVwiLFxuICAgICAgXCJmZmZmZTBcIixcbiAgICAgIFwiMDBmZjAwXCIsXG4gICAgICBcIjMyY2QzMlwiLFxuICAgICAgXCJmYWYwZTZcIixcbiAgICAgIFwiZmYwMGZmXCIsXG4gICAgICBcIjgwMDAwMFwiLFxuICAgICAgXCI2NmNkYWFcIixcbiAgICAgIFwiMDAwMGNkXCIsXG4gICAgICBcImJhNTVkM1wiLFxuICAgICAgXCI5MzcwZGJcIixcbiAgICAgIFwiM2NiMzcxXCIsXG4gICAgICBcIjdiNjhlZVwiLFxuICAgICAgXCIwMGZhOWFcIixcbiAgICAgIFwiNDhkMWNjXCIsXG4gICAgICBcImM3MTU4NVwiLFxuICAgICAgXCIxOTE5NzBcIixcbiAgICAgIFwiZjVmZmZhXCIsXG4gICAgICBcImZmZTRlMVwiLFxuICAgICAgXCJmZmU0YjVcIixcbiAgICAgIFwiZmZkZWFkXCIsXG4gICAgICBcIjAwMDA4MFwiLFxuICAgICAgXCJmZGY1ZTZcIixcbiAgICAgIFwiODA4MDAwXCIsXG4gICAgICBcIjZiOGUyM1wiLFxuICAgICAgXCJmZmE1MDBcIixcbiAgICAgIFwiZmY0NTAwXCIsXG4gICAgICBcImRhNzBkNlwiLFxuICAgICAgXCJlZWU4YWFcIixcbiAgICAgIFwiOThmYjk4XCIsXG4gICAgICBcImFmZWVlZVwiLFxuICAgICAgXCJkYjcwOTNcIixcbiAgICAgIFwiZmZlZmQ1XCIsXG4gICAgICBcImZmZGFiOVwiLFxuICAgICAgXCJjZDg1M2ZcIixcbiAgICAgIFwiZmZjMGNiXCIsXG4gICAgICBcImRkYTBkZFwiLFxuICAgICAgXCJiMGUwZTZcIixcbiAgICAgIFwiODAwMDgwXCIsXG4gICAgICBcIjY2MzM5OVwiLFxuICAgICAgXCJmZjAwMDBcIixcbiAgICAgIFwiYmM4ZjhmXCIsXG4gICAgICBcIjQxNjllMVwiLFxuICAgICAgXCI4YjQ1MTNcIixcbiAgICAgIFwiZmE4MDcyXCIsXG4gICAgICBcImY0YTQ2MFwiLFxuICAgICAgXCIyZThiNTdcIixcbiAgICAgIFwiZmZmNWVlXCIsXG4gICAgICBcImEwNTIyZFwiLFxuICAgICAgXCJjMGMwYzBcIixcbiAgICAgIFwiODdjZWViXCIsXG4gICAgICBcIjZhNWFjZFwiLFxuICAgICAgXCI3MDgwOTBcIixcbiAgICAgIFwiNzA4MDkwXCIsXG4gICAgICBcImZmZmFmYVwiLFxuICAgICAgXCIwMGZmN2ZcIixcbiAgICAgIFwiNDY4MmI0XCIsXG4gICAgICBcImQyYjQ4Y1wiLFxuICAgICAgXCIwMDgwODBcIixcbiAgICAgIFwiZDhiZmQ4XCIsXG4gICAgICBcImZmNjM0N1wiLFxuICAgICAgXCI0MGUwZDBcIixcbiAgICAgIFwiZWU4MmVlXCIsXG4gICAgICBcImY1ZGViM1wiLFxuICAgICAgXCJmZmZmZmZcIixcbiAgICAgIFwiZjVmNWY1XCIsXG4gICAgICBcImZmZmYwMFwiLFxuICAgICAgXCI5YWNkMzJcIixcbiAgICBdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9yMmhzYiA9IChjOiBhbnkpID0+IHtcbiAgY29uc3QgaHNsID0gY29sb3IyaHNsKGMpXG4gIHJldHVybiBoc2wyaHNiKGhzbC5oLCBoc2wucywgaHNsLmwpXG59XG5cbmV4cG9ydCBjb25zdCBjb2xvcjJoc2wgPSAoYzogYW55KSA9PiB7XG4gIGxldCB4LFxuICAgIHksXG4gICAgdHlwLFxuICAgIGFyciA9IFtdLFxuICAgIGFycmxlbmd0aCxcbiAgICBpLFxuICAgIG1hdGNoLFxuICAgIHJnYjogYW55LFxuICAgIGNvbG9ybmFtZXM6IGFueSA9IFtdLFxuICAgIGNvbG9yaGV4czogYW55ID0gW11cbiAgYyA9IHczdHJpbShjLnRvTG93ZXJDYXNlKCkpXG4gIHggPSBjLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpXG4gIHkgPSBjLnN1YnN0cigxKVxuICBpZiAoXG4gICAgKHggPT0gXCJSXCIgfHxcbiAgICAgIHggPT0gXCJZXCIgfHxcbiAgICAgIHggPT0gXCJHXCIgfHxcbiAgICAgIHggPT0gXCJDXCIgfHxcbiAgICAgIHggPT0gXCJCXCIgfHxcbiAgICAgIHggPT0gXCJNXCIgfHxcbiAgICAgIHggPT0gXCJXXCIpICYmXG4gICAgIWlzTmFOKHkpXG4gICkge1xuICAgIGlmIChjLmxlbmd0aCA9PSA2ICYmIGMuaW5kZXhPZihcIixcIikgPT0gLTEpIHtcbiAgICB9IGVsc2Uge1xuICAgICAgYyA9IFwibmNvbChcIiArIGMgKyBcIilcIlxuICAgIH1cbiAgfVxuICBpZiAoYy5sZW5ndGggIT0gMyAmJiBjLmxlbmd0aCAhPSA2ICYmICFpc05hTihjKSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoYy5pbmRleE9mKFwiLFwiKSA+IDAgJiYgYy5pbmRleE9mKFwiKFwiKSA9PSAtMSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoXG4gICAgYy5zdWJzdHIoMCwgMykgPT0gXCJyZ2JcIiB8fFxuICAgIGMuc3Vic3RyKDAsIDMpID09IFwiaHNsXCIgfHxcbiAgICBjLnN1YnN0cigwLCAzKSA9PSBcImh3YlwiIHx8XG4gICAgYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIgfHxcbiAgICBjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIlxuICApIHtcbiAgICBpZiAoYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIpIHtcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNCAmJiBjLmluZGV4T2YoXCJuY29sYVwiKSA9PSAtMSkge1xuICAgICAgICBjID0gYy5yZXBsYWNlKFwibmNvbFwiLCBcIm5jb2xhXCIpXG4gICAgICB9XG4gICAgICB0eXAgPSBcIm5jb2xcIlxuICAgICAgYyA9IGMuc3Vic3RyKDQpXG4gICAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIikge1xuICAgICAgdHlwID0gXCJjbXlrXCJcbiAgICAgIGMgPSBjLnN1YnN0cig0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0eXAgPSBjLnN1YnN0cigwLCAzKVxuICAgICAgYyA9IGMuc3Vic3RyKDMpXG4gICAgfVxuICAgIGFycmxlbmd0aCA9IDNcbiAgICBpZiAoYy5zdWJzdHIoMCwgMSkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xuICAgICAgYXJybGVuZ3RoID0gNFxuICAgICAgYyA9IGMuc3Vic3RyKDEpXG4gICAgfSBlbHNlIGlmICh0eXAgPT0gXCJjbXlrXCIpIHtcbiAgICAgIGFycmxlbmd0aCA9IDRcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNSkge1xuICAgICAgICBhcnJsZW5ndGggPSA1XG4gICAgICB9XG4gICAgfVxuICAgIGMgPSBjLnJlcGxhY2UoXCIoXCIsIFwiXCIpXG4gICAgYyA9IGMucmVwbGFjZShcIilcIiwgXCJcIilcbiAgICBhcnIgPSBjLnNwbGl0KFwiLFwiKVxuICAgIGlmICh0eXAgPT0gXCJyZ2JcIikge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0gPT0gXCJcIiB8fCBhcnJbaV0gPT0gXCIgXCIpIHtcbiAgICAgICAgICBhcnJbaV0gPSBcIjBcIlxuICAgICAgICB9XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0gLyAxMDApXG4gICAgICAgICAgaWYgKGkgPCAzKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBNYXRoLnJvdW5kKGFycltpXSAqIDI1NSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGFycltpXSkgPiAyNTUpIHtcbiAgICAgICAgICBhcnJbaV0gPSAyNTVcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IDMpIHtcbiAgICAgICAgICBhcnJbaV0gPSBwYXJzZUludChhcnJbaV0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT0gMyAmJiBOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJnYiA9IHsgcjogYXJyWzBdLCBnOiBhcnJbMV0sIGI6IGFyclsyXSB9XG4gICAgfVxuICAgIGlmICh0eXAgPT0gXCJoc2xcIiB8fCB0eXAgPT0gXCJod2JcIiB8fCB0eXAgPT0gXCJuY29sXCIpIHtcbiAgICAgIHdoaWxlIChhcnIubGVuZ3RoIDwgYXJybGVuZ3RoKSB7XG4gICAgICAgIGFyci5wdXNoKFwiMFwiKVxuICAgICAgfVxuICAgICAgaWYgKHR5cCA9PSBcImhzbFwiIHx8IHR5cCA9PSBcImh3YlwiKSB7XG4gICAgICAgIGlmIChwYXJzZUludChhcnJbMF0pID49IDM2MCkge1xuICAgICAgICAgIGFyclswXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChpID0gMTsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0pXG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldIC8gMTAwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKGFycltpXSkgPiAxKSB7XG4gICAgICAgICAgYXJyW2ldID0gMVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA8IDApIHtcbiAgICAgICAgICBhcnJbaV0gPSAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cCA9PSBcImNteWtcIikge1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPCBhcnJsZW5ndGgpIHtcbiAgICAgICAgYXJyLnB1c2goXCIwXCIpXG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJybGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXS5pbmRleE9mKFwiJVwiKSA+IC0xKSB7XG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldLnJlcGxhY2UoXCIlXCIsIFwiXCIpXG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgICBhcnJbaV0gPSBhcnJbaV0gLyAxMDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcnJbaV0gPSBOdW1iZXIoYXJyW2ldKVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihhcnJbaV0pIDwgMCkge1xuICAgICAgICAgIGFycltpXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCAzKSA9PSBcIm5jc1wiKSB7XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2ggPSBmYWxzZVxuICAgIGNvbG9ybmFtZXMgPSBnZXRDb2xvckFycihcIm5hbWVzXCIpXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbG9ybmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjLnRvTG93ZXJDYXNlKCkgPT0gY29sb3JuYW1lc1tpXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNvbG9yaGV4cyA9IGdldENvbG9yQXJyKFwiaGV4c1wiKVxuICAgICAgICBtYXRjaCA9IHRydWVcbiAgICAgICAgcmdiID0ge1xuICAgICAgICAgIHI6IHBhcnNlSW50KGNvbG9yaGV4c1tpXS5zdWJzdHIoMCwgMiksIDE2KSxcbiAgICAgICAgICBnOiBwYXJzZUludChjb2xvcmhleHNbaV0uc3Vic3RyKDIsIDIpLCAxNiksXG4gICAgICAgICAgYjogcGFyc2VJbnQoY29sb3JoZXhzW2ldLnN1YnN0cig0LCAyKSwgMTYpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXRjaCA9PSBmYWxzZSkge1xuICAgICAgYyA9IGMucmVwbGFjZShcIiNcIiwgXCJcIilcbiAgICAgIGlmIChjLmxlbmd0aCA9PSAzKSB7XG4gICAgICAgIGMgPVxuICAgICAgICAgIGMuc3Vic3RyKDAsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigwLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMSwgMSkgK1xuICAgICAgICAgIGMuc3Vic3RyKDEsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigyLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMiwgMSlcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7fVxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYy5zdWJzdHIoMCwgMiksIDE2KVxuICAgICAgYXJyWzFdID0gcGFyc2VJbnQoYy5zdWJzdHIoMiwgMiksIDE2KVxuICAgICAgYXJyWzJdID0gcGFyc2VJbnQoYy5zdWJzdHIoNCwgMiksIDE2KVxuICAgICAgcmdiID0ge1xuICAgICAgICByOiBhcnJbMF0sXG4gICAgICAgIGc6IGFyclsxXSxcbiAgICAgICAgYjogYXJyWzJdLFxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmdiMmhzbChyZ2IuciwgcmdiLmcsIHJnYi5iKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ08sSUFBTUEsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsQ0FBRCxFQUFZQyxDQUFaLEVBQXVCQyxDQUF2QixFQUFxQztFQUMxRCxJQUFJQyxHQUFHLEdBQUdILENBQUMsQ0FBQ0ksUUFBRixDQUFXLEVBQVgs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QXRESyxFQXVETCxRQXZESyxFQXdETCxRQXhESyxFQXlETCxRQXpESyxFQTBETCxRQTFESyxFQTJETCxRQTNESyxFQTRETCxRQTVESyxFQTZETCxRQTdESyxFQThETCxRQTlESyxFQStETCxRQS9ESyxFQWdFTCxRQWhFSyxFQWlFTCxRQWpFSyxFQWtFTCxRQWxFSyxFQW1FTCxRQW5FSyxFQW9FTCxRQXBFSyxFQXFFTCxRQXJFSyxFQXNFTCxRQXRFSyxFQXVFTCxRQXZFSyxFQXdFTCxRQXhFSyxFQXlFTCxRQXpFSyxFQTBFTCxRQTFFSyxFQTJFTCxRQTNFSyxFQTRFTCxRQTVFSyxFQTZFTCxRQTdFSyxFQThFTCxRQTlFSyxFQStFTCxRQS9FSyxFQWdGTCxRQWhGSyxFQWlGTCxRQWpGSyxFQWtGTCxRQWxGSyxFQW1GTCxRQW5GSyxFQW9GTCxRQXBGSyxFQXFGTCxRQXJGSyxFQXNGTCxRQXRGSyxFQXVGTCxRQXZGSyxFQXdGTCxRQXhGSyxFQXlGTCxRQXpGSyxFQTBGTCxRQTFGSyxFQTJGTCxRQTNGSyxFQTRGTCxRQTVGSyxFQTZGTCxRQTdGSyxFQThGTCxRQTlGSyxFQStGTCxRQS9GSyxFQWdHTCxRQWhHSyxFQWlHTCxRQWpHSyxFQWtHTCxRQWxHSyxFQW1HTCxRQW5HSyxFQW9HTCxRQXBHSyxFQXFHTCxRQXJHSyxFQXNHTCxRQXRHSyxFQXVHTCxRQXZHSyxFQXdHTCxRQXhHSyxFQXlHTCxRQXpHSyxFQTBHTCxRQTFHSyxFQTJHTCxRQTNHSyxFQTRHTCxRQTVHSyxFQTZHTCxRQTdHSyxFQThHTCxRQTlHSyxFQStHTCxRQS9HSyxFQWdITCxRQWhISyxFQWlITCxRQWpISyxFQWtITCxRQWxISyxFQW1ITCxRQW5ISyxFQW9ITCxRQXBISyxFQXFITCxRQXJISyxFQXNITCxRQXRISyxFQXVITCxRQXZISyxFQXdITCxRQXhISyxFQXlITCxRQXpISyxFQTBITCxRQTFISyxFQTJITCxRQTNISyxFQTRITCxRQTVISyxFQTZITCxRQTdISyxFQThITCxRQTlISyxFQStITCxRQS9ISyxFQWdJTCxRQWhJSyxFQWlJTCxR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