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>

284 lines 52.5 kB
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _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(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZ2IyaGV4IiwiciIsImciLCJiIiwicmVkIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImdyZWVuIiwiYmx1ZSIsImxlbmd0aCIsImNvbmNhdCIsImhzYjJoc2wiLCJhIiwiYyIsImhzbDJoc2IiLCJoc2wycmdiIiwiaCIsInMiLCJsIiwiQyIsIk1hdGgiLCJhYnMiLCJYIiwibSIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwiUiIsIkciLCJCIiwiX3JlZjMiLCJyb3VuZCIsImhzYjJoZXgiLCJ1bmRlZmluZWQiLCJfaHNiMmhzbCIsIl9oc2IyaHNsMiIsImh1ZSIsInNhdHVyYXRpb24iLCJicmlnaHRuZXNzIiwiX2hzbDJyZ2IiLCJfaHNsMnJnYjIiLCJyZ2IyaHNsIiwibWluIiwibWF4IiwiaSIsIm1heGNvbG9yIiwicmdiIiwiaXNOYU4iLCJ3M3RyaW0iLCJ4IiwicmVwbGFjZSIsImdldENvbG9yQXJyIiwiY29sb3IyaHNiIiwiaHNsIiwiY29sb3IyaHNsIiwieSIsInR5cCIsImFyciIsImFycmxlbmd0aCIsIm1hdGNoIiwiY29sb3JuYW1lcyIsImNvbG9yaGV4cyIsInRvTG93ZXJDYXNlIiwic3Vic3RyIiwiaW5kZXhPZiIsInNwbGl0IiwiTnVtYmVyIiwicGFyc2VJbnQiLCJwdXNoIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9fdXRpbC9jb2xvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IHJnYjJoZXggPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBsZXQgcmVkID0gci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICBsZXQgZ3JlZW4gPSBnLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpXG4gIGxldCBibHVlID0gYi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICByZWQgPSByZWQubGVuZ3RoID09PSAxID8gYDAke3JlZH1gIDogcmVkXG4gIGdyZWVuID0gZ3JlZW4ubGVuZ3RoID09PSAxID8gYDAke2dyZWVufWAgOiBncmVlblxuICBibHVlID0gYmx1ZS5sZW5ndGggPT09IDEgPyBgMCR7Ymx1ZX1gIDogYmx1ZVxuICByZXR1cm4gYCMke3JlZH0ke2dyZWVufSR7Ymx1ZX1gXG59XG5cbmV4cG9ydCBjb25zdCBoc2IyaHNsID0gKGE6IG51bWJlciwgYjogbnVtYmVyLCBjOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIFthLCAoYiAqIGMpIC8gKChhID0gKDIgLSBiKSAqIGMpIDwgMSA/IGEgOiAyIC0gYSksIGEgLyAyXVxufVxuXG5leHBvcnQgY29uc3QgaHNsMmhzYiA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIGIgKj0gYyA8IDAuNSA/IGMgOiAxIC0gY1xuICByZXR1cm4gW2EsICgyICogYikgLyAoYyArIGIpIHx8IDAsIGMgKyBiXVxufVxuXG5leHBvcnQgY29uc3QgaHNsMnJnYiA9IChoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IEMgPSAoMSAtIE1hdGguYWJzKDIgKiBsIC0gMSkpICogc1xuICBjb25zdCBYID0gQyAqICgxIC0gTWF0aC5hYnMoKChoIC8gNjApICUgMikgLSAxKSlcbiAgY29uc3QgbSA9IGwgLSBDIC8gMlxuICBsZXQgW1IsIEcsIEJdOiBhbnkgPVxuICAgIChoID49IDAgJiYgaCA8IDYwICYmIFtDLCBYLCAwXSkgfHxcbiAgICAoaCA+PSA2MCAmJiBoIDwgMTIwICYmIFtYLCBDLCAwXSkgfHxcbiAgICAoaCA+PSAxMjAgJiYgaCA8IDE4MCAmJiBbMCwgQywgWF0pIHx8XG4gICAgKGggPj0gMTgwICYmIGggPCAyNDAgJiYgWzAsIFgsIENdKSB8fFxuICAgIChoID49IDI0MCAmJiBoIDwgMzAwICYmIFtYLCAwLCBDXSkgfHxcbiAgICAoaCA+PSAzMDAgJiYgaCA8IDM2MCAmJiBbQywgMCwgWF0pXG4gIDtbUiwgRywgQl0gPSBbKFIgKyBtKSAqIDI1NSwgKEcgKyBtKSAqIDI1NSwgKEIgKyBtKSAqIDI1NV1cbiAgcmV0dXJuIFtNYXRoLnJvdW5kKFIpLCBNYXRoLnJvdW5kKEcpLCBNYXRoLnJvdW5kKEIpXVxufVxuXG5leHBvcnQgY29uc3QgaHNiMmhleCA9IChcbiAgaD86IG51bWJlciB8IG51bGwsXG4gIHM/OiBudW1iZXIgfCBudWxsLFxuICBiPzogbnVtYmVyIHwgbnVsbFxuKSA9PiB7XG4gIGlmIChcbiAgICBoID09PSBudWxsIHx8XG4gICAgaCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgcyA9PT0gbnVsbCB8fFxuICAgIHMgPT09IHVuZGVmaW5lZCB8fFxuICAgIGIgPT09IG51bGwgfHxcbiAgICBiID09PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCJcbiAgfVxuICBjb25zdCBbaHVlLCBzYXR1cmF0aW9uLCBicmlnaHRuZXNzXSA9IGhzYjJoc2woaCwgcywgYilcbiAgY29uc3QgW3JlZCwgZ3JlZW4sIGJsdWVdID0gaHNsMnJnYihodWUsIHNhdHVyYXRpb24gfHwgMCwgYnJpZ2h0bmVzcyB8fCAwKVxuICByZXR1cm4gcmdiMmhleChyZWQsIGdyZWVuLCBibHVlKVxufVxuXG5leHBvcnQgY29uc3QgcmdiMmhzbCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIGxldCBtaW4sXG4gICAgbWF4LFxuICAgIGksXG4gICAgbCxcbiAgICBzLFxuICAgIG1heGNvbG9yLFxuICAgIGgsXG4gICAgcmdiID0gW11cbiAgcmdiWzBdID0gciAvIDI1NVxuICByZ2JbMV0gPSBnIC8gMjU1XG4gIHJnYlsyXSA9IGIgLyAyNTVcbiAgbWluID0gcmdiWzBdXG4gIG1heCA9IHJnYlswXVxuICBtYXhjb2xvciA9IDBcbiAgZm9yIChpID0gMDsgaSA8IHJnYi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICBpZiAocmdiW2kgKyAxXSA8PSBtaW4pIHtcbiAgICAgIG1pbiA9IHJnYltpICsgMV1cbiAgICB9XG4gICAgaWYgKHJnYltpICsgMV0gPj0gbWF4KSB7XG4gICAgICBtYXggPSByZ2JbaSArIDFdXG4gICAgICBtYXhjb2xvciA9IGkgKyAxXG4gICAgfVxuICB9XG4gIGlmIChtYXhjb2xvciA9PSAwKSB7XG4gICAgaCA9IChyZ2JbMV0gLSByZ2JbMl0pIC8gKG1heCAtIG1pbilcbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMSkge1xuICAgIGggPSAyICsgKHJnYlsyXSAtIHJnYlswXSkgLyAobWF4IC0gbWluKVxuICB9XG4gIGlmIChtYXhjb2xvciA9PSAyKSB7XG4gICAgaCA9IDQgKyAocmdiWzBdIC0gcmdiWzFdKSAvIChtYXggLSBtaW4pXG4gIH1cbiAgaWYgKCFoIHx8IGlzTmFOKGgpKSB7XG4gICAgaCA9IDBcbiAgfVxuICBoID0gaCAqIDYwXG4gIGlmIChoIDwgMCkge1xuICAgIGggPSBoICsgMzYwXG4gIH1cbiAgbCA9IChtaW4gKyBtYXgpIC8gMlxuICBpZiAobWluID09IG1heCkge1xuICAgIHMgPSAwXG4gIH0gZWxzZSB7XG4gICAgaWYgKGwgPCAwLjUpIHtcbiAgICAgIHMgPSAobWF4IC0gbWluKSAvIChtYXggKyBtaW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIHMgPSAobWF4IC0gbWluKSAvICgyIC0gbWF4IC0gbWluKVxuICAgIH1cbiAgfVxuICBzID0gc1xuICByZXR1cm4geyBoOiBoLCBzOiBzLCBsOiBsIH1cbn1cblxuZXhwb3J0IGNvbnN0IHczdHJpbSA9ICh4OiBhbnkpID0+IHgucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgXCJcIilcblxuZXhwb3J0IGNvbnN0IGdldENvbG9yQXJyID0gKHg6IGFueSkgPT4ge1xuICBpZiAoeCA9PSBcIm5hbWVzXCIpIHtcbiAgICByZXR1cm4gW1xuICAgICAgXCJBbGljZUJsdWVcIixcbiAgICAgIFwiQW50aXF1ZVdoaXRlXCIsXG4gICAgICBcIkFxdWFcIixcbiAgICAgIFwiQXF1YW1hcmluZVwiLFxuICAgICAgXCJBenVyZVwiLFxuICAgICAgXCJCZWlnZVwiLFxuICAgICAgXCJCaXNxdWVcIixcbiAgICAgIFwiQmxhY2tcIixcbiAgICAgIFwiQmxhbmNoZWRBbG1vbmRcIixcbiAgICAgIFwiQmx1ZVwiLFxuICAgICAgXCJCbHVlVmlvbGV0XCIsXG4gICAgICBcIkJyb3duXCIsXG4gICAgICBcIkJ1cmx5V29vZFwiLFxuICAgICAgXCJDYWRldEJsdWVcIixcbiAgICAgIFwiQ2hhcnRyZXVzZVwiLFxuICAgICAgXCJDaG9jb2xhdGVcIixcbiAgICAgIFwiQ29yYWxcIixcbiAgICAgIFwiQ29ybmZsb3dlckJsdWVcIixcbiAgICAgIFwiQ29ybnNpbGtcIixcbiAgICAgIFwiQ3JpbXNvblwiLFxuICAgICAgXCJDeWFuXCIsXG4gICAgICBcIkRhcmtCbHVlXCIsXG4gICAgICBcIkRhcmtDeWFuXCIsXG4gICAgICBcIkRhcmtHb2xkZW5Sb2RcIixcbiAgICAgIFwiRGFya0dyYXlcIixcbiAgICAgIFwiRGFya0dyZXlcIixcbiAgICAgIFwiRGFya0dyZWVuXCIsXG4gICAgICBcIkRhcmtLaGFraVwiLFxuICAgICAgXCJEYXJrTWFnZW50YVwiLFxuICAgICAgXCJEYXJrT2xpdmVHcmVlblwiLFxuICAgICAgXCJEYXJrT3JhbmdlXCIsXG4gICAgICBcIkRhcmtPcmNoaWRcIixcbiAgICAgIFwiRGFya1JlZFwiLFxuICAgICAgXCJEYXJrU2FsbW9uXCIsXG4gICAgICBcIkRhcmtTZWFHcmVlblwiLFxuICAgICAgXCJEYXJrU2xhdGVCbHVlXCIsXG4gICAgICBcIkRhcmtTbGF0ZUdyYXlcIixcbiAgICAgIFwiRGFya1NsYXRlR3JleVwiLFxuICAgICAgXCJEYXJrVHVycXVvaXNlXCIsXG4gICAgICBcIkRhcmtWaW9sZXRcIixcbiAgICAgIFwiRGVlcFBpbmtcIixcbiAgICAgIFwiRGVlcFNreUJsdWVcIixcbiAgICAgIFwiRGltR3JheVwiLFxuICAgICAgXCJEaW1HcmV5XCIsXG4gICAgICBcIkRvZGdlckJsdWVcIixcbiAgICAgIFwiRmlyZUJyaWNrXCIsXG4gICAgICBcIkZsb3JhbFdoaXRlXCIsXG4gICAgICBcIkZvcmVzdEdyZWVuXCIsXG4gICAgICBcIkZ1Y2hzaWFcIixcbiAgICAgIFwiR2FpbnNib3JvXCIsXG4gICAgICBcIkdob3N0V2hpdGVcIixcbiAgICAgIFwiR29sZFwiLFxuICAgICAgXCJHb2xkZW5Sb2RcIixcbiAgICAgIFwiR3JheVwiLFxuICAgICAgXCJHcmV5XCIsXG4gICAgICBcIkdyZWVuXCIsXG4gICAgICBcIkdyZWVuWWVsbG93XCIsXG4gICAgICBcIkhvbmV5RGV3XCIsXG4gICAgICBcIkhvdFBpbmtcIixcbiAgICAgIFwiSW5kaWFuUmVkXCIsXG4gICAgICBcIkluZGlnb1wiLFxuICAgICAgXCJJdm9yeVwiLFxuICAgICAgXCJLaGFraVwiLFxuICAgICAgXCJMYXZlbmRlclwiLFxuICAgICAgXCJMYXZlbmRlckJsdXNoXCIsXG4gICAgICBcIkxhd25HcmVlblwiLFxuICAgICAgXCJMZW1vbkNoaWZmb25cIixcbiAgICAgIFwiTGlnaHRCbHVlXCIsXG4gICAgICBcIkxpZ2h0Q29yYWxcIixcbiAgICAgIFwiTGlnaHRDeWFuXCIsXG4gICAgICBcIkxpZ2h0R29sZGVuUm9kWWVsbG93XCIsXG4gICAgICBcIkxpZ2h0R3JheVwiLFxuICAgICAgXCJMaWdodEdyZXlcIixcbiAgICAgIFwiTGlnaHRHcmVlblwiLFxuICAgICAgXCJMaWdodFBpbmtcIixcbiAgICAgIFwiTGlnaHRTYWxtb25cIixcbiAgICAgIFwiTGlnaHRTZWFHcmVlblwiLFxuICAgICAgXCJMaWdodFNreUJsdWVcIixcbiAgICAgIFwiTGlnaHRTbGF0ZUdyYXlcIixcbiAgICAgIFwiTGlnaHRTbGF0ZUdyZXlcIixcbiAgICAgIFwiTGlnaHRTdGVlbEJsdWVcIixcbiAgICAgIFwiTGlnaHRZZWxsb3dcIixcbiAgICAgIFwiTGltZVwiLFxuICAgICAgXCJMaW1lR3JlZW5cIixcbiAgICAgIFwiTGluZW5cIixcbiAgICAgIFwiTWFnZW50YVwiLFxuICAgICAgXCJNYXJvb25cIixcbiAgICAgIFwiTWVkaXVtQXF1YU1hcmluZVwiLFxuICAgICAgXCJNZWRpdW1CbHVlXCIsXG4gICAgICBcIk1lZGl1bU9yY2hpZFwiLFxuICAgICAgXCJNZWRpdW1QdXJwbGVcIixcbiAgICAgIFwiTWVkaXVtU2VhR3JlZW5cIixcbiAgICAgIFwiTWVkaXVtU2xhdGVCbHVlXCIsXG4gICAgICBcIk1lZGl1bVNwcmluZ0dyZWVuXCIsXG4gICAgICBcIk1lZGl1bVR1cnF1b2lzZVwiLFxuICAgICAgXCJNZWRpdW1WaW9sZXRSZWRcIixcbiAgICAgIFwiTWlkbmlnaHRCbHVlXCIsXG4gICAgICBcIk1pbnRDcmVhbVwiLFxuICAgICAgXCJNaXN0eVJvc2VcIixcbiAgICAgIFwiTW9jY2FzaW5cIixcbiAgICAgIFwiTmF2YWpvV2hpdGVcIixcbiAgICAgIFwiTmF2eVwiLFxuICAgICAgXCJPbGRMYWNlXCIsXG4gICAgICBcIk9saXZlXCIsXG4gICAgICBcIk9saXZlRHJhYlwiLFxuICAgICAgXCJPcmFuZ2VcIixcbiAgICAgIFwiT3JhbmdlUmVkXCIsXG4gICAgICBcIk9yY2hpZFwiLFxuICAgICAgXCJQYWxlR29sZGVuUm9kXCIsXG4gICAgICBcIlBhbGVHcmVlblwiLFxuICAgICAgXCJQYWxlVHVycXVvaXNlXCIsXG4gICAgICBcIlBhbGVWaW9sZXRSZWRcIixcbiAgICAgIFwiUGFwYXlhV2hpcFwiLFxuICAgICAgXCJQZWFjaFB1ZmZcIixcbiAgICAgIFwiUGVydVwiLFxuICAgICAgXCJQaW5rXCIsXG4gICAgICBcIlBsdW1cIixcbiAgICAgIFwiUG93ZGVyQmx1ZVwiLFxuICAgICAgXCJQdXJwbGVcIixcbiAgICAgIFwiUmViZWNjYVB1cnBsZVwiLFxuICAgICAgXCJSZWRcIixcbiAgICAgIFwiUm9zeUJyb3duXCIsXG4gICAgICBcIlJveWFsQmx1ZVwiLFxuICAgICAgXCJTYWRkbGVCcm93blwiLFxuICAgICAgXCJTYWxtb25cIixcbiAgICAgIFwiU2FuZHlCcm93blwiLFxuICAgICAgXCJTZWFHcmVlblwiLFxuICAgICAgXCJTZWFTaGVsbFwiLFxuICAgICAgXCJTaWVubmFcIixcbiAgICAgIFwiU2lsdmVyXCIsXG4gICAgICBcIlNreUJsdWVcIixcbiAgICAgIFwiU2xhdGVCbHVlXCIsXG4gICAgICBcIlNsYXRlR3JheVwiLFxuICAgICAgXCJTbGF0ZUdyZXlcIixcbiAgICAgIFwiU25vd1wiLFxuICAgICAgXCJTcHJpbmdHcmVlblwiLFxuICAgICAgXCJTdGVlbEJsdWVcIixcbiAgICAgIFwiVGFuXCIsXG4gICAgICBcIlRlYWxcIixcbiAgICAgIFwiVGhpc3RsZVwiLFxuICAgICAgXCJUb21hdG9cIixcbiAgICAgIFwiVHVycXVvaXNlXCIsXG4gICAgICBcIlZpb2xldFwiLFxuICAgICAgXCJXaGVhdFwiLFxuICAgICAgXCJXaGl0ZVwiLFxuICAgICAgXCJXaGl0ZVNtb2tlXCIsXG4gICAgICBcIlllbGxvd1wiLFxuICAgICAgXCJZZWxsb3dHcmVlblwiLFxuICAgIF1cbiAgfVxuICBpZiAoeCA9PSBcImhleHNcIikge1xuICAgIHJldHVybiBbXG4gICAgICBcImYwZjhmZlwiLFxuICAgICAgXCJmYWViZDdcIixcbiAgICAgIFwiMDBmZmZmXCIsXG4gICAgICBcIjdmZmZkNFwiLFxuICAgICAgXCJmMGZmZmZcIixcbiAgICAgIFwiZjVmNWRjXCIsXG4gICAgICBcImZmZTRjNFwiLFxuICAgICAgXCIwMDAwMDBcIixcbiAgICAgIFwiZmZlYmNkXCIsXG4gICAgICBcIjAwMDBmZlwiLFxuICAgICAgXCI4YTJiZTJcIixcbiAgICAgIFwiYTUyYTJhXCIsXG4gICAgICBcImRlYjg4N1wiLFxuICAgICAgXCI1ZjllYTBcIixcbiAgICAgIFwiN2ZmZjAwXCIsXG4gICAgICBcImQyNjkxZVwiLFxuICAgICAgXCJmZjdmNTBcIixcbiAgICAgIFwiNjQ5NWVkXCIsXG4gICAgICBcImZmZjhkY1wiLFxuICAgICAgXCJkYzE0M2NcIixcbiAgICAgIFwiMDBmZmZmXCIsXG4gICAgICBcIjAwMDA4YlwiLFxuICAgICAgXCIwMDhiOGJcIixcbiAgICAgIFwiYjg4NjBiXCIsXG4gICAgICBcImE5YTlhOVwiLFxuICAgICAgXCJhOWE5YTlcIixcbiAgICAgIFwiMDA2NDAwXCIsXG4gICAgICBcImJkYjc2YlwiLFxuICAgICAgXCI4YjAwOGJcIixcbiAgICAgIFwiNTU2YjJmXCIsXG4gICAgICBcImZmOGMwMFwiLFxuICAgICAgXCI5OTMyY2NcIixcbiAgICAgIFwiOGIwMDAwXCIsXG4gICAgICBcImU5OTY3YVwiLFxuICAgICAgXCI4ZmJjOGZcIixcbiAgICAgIFwiNDgzZDhiXCIsXG4gICAgICBcIjJmNGY0ZlwiLFxuICAgICAgXCIyZjRmNGZcIixcbiAgICAgIFwiMDBjZWQxXCIsXG4gICAgICBcIjk0MDBkM1wiLFxuICAgICAgXCJmZjE0OTNcIixcbiAgICAgIFwiMDBiZmZmXCIsXG4gICAgICBcIjY5Njk2OVwiLFxuICAgICAgXCI2OTY5NjlcIixcbiAgICAgIFwiMWU5MGZmXCIsXG4gICAgICBcImIyMjIyMlwiLFxuICAgICAgXCJmZmZhZjBcIixcbiAgICAgIFwiMjI4YjIyXCIsXG4gICAgICBcImZmMDBmZlwiLFxuICAgICAgXCJkY2RjZGNcIixcbiAgICAgIFwiZjhmOGZmXCIsXG4gICAgICBcImZmZDcwMFwiLFxuICAgICAgXCJkYWE1MjBcIixcbiAgICAgIFwiODA4MDgwXCIsXG4gICAgICBcIjgwODA4MFwiLFxuICAgICAgXCIwMDgwMDBcIixcbiAgICAgIFwiYWRmZjJmXCIsXG4gICAgICBcImYwZmZmMFwiLFxuICAgICAgXCJmZjY5YjRcIixcbiAgICAgIFwiY2Q1YzVjXCIsXG4gICAgICBcIjRiMDA4MlwiLFxuICAgICAgXCJmZmZmZjBcIixcbiAgICAgIFwiZjBlNjhjXCIsXG4gICAgICBcImU2ZTZmYVwiLFxuICAgICAgXCJmZmYwZjVcIixcbiAgICAgIFwiN2NmYzAwXCIsXG4gICAgICBcImZmZmFjZFwiLFxuICAgICAgXCJhZGQ4ZTZcIixcbiAgICAgIFwiZjA4MDgwXCIsXG4gICAgICBcImUwZmZmZlwiLFxuICAgICAgXCJmYWZhZDJcIixcbiAgICAgIFwiZDNkM2QzXCIsXG4gICAgICBcImQzZDNkM1wiLFxuICAgICAgXCI5MGVlOTBcIixcbiAgICAgIFwiZmZiNmMxXCIsXG4gICAgICBcImZmYTA3YVwiLFxuICAgICAgXCIyMGIyYWFcIixcbiAgICAgIFwiODdjZWZhXCIsXG4gICAgICBcIjc3ODg5OVwiLFxuICAgICAgXCI3Nzg4OTlcIixcbiAgICAgIFwiYjBjNGRlXCIsXG4gICAgICBcImZmZmZlMFwiLFxuICAgICAgXCIwMGZmMDBcIixcbiAgICAgIFwiMzJjZDMyXCIsXG4gICAgICBcImZhZjBlNlwiLFxuICAgICAgXCJmZjAwZmZcIixcbiAgICAgIFwiODAwMDAwXCIsXG4gICAgICBcIjY2Y2RhYVwiLFxuICAgICAgXCIwMDAwY2RcIixcbiAgICAgIFwiYmE1NWQzXCIsXG4gICAgICBcIjkzNzBkYlwiLFxuICAgICAgXCIzY2IzNzFcIixcbiAgICAgIFwiN2I2OGVlXCIsXG4gICAgICBcIjAwZmE5YVwiLFxuICAgICAgXCI0OGQxY2NcIixcbiAgICAgIFwiYzcxNTg1XCIsXG4gICAgICBcIjE5MTk3MFwiLFxuICAgICAgXCJmNWZmZmFcIixcbiAgICAgIFwiZmZlNGUxXCIsXG4gICAgICBcImZmZTRiNVwiLFxuICAgICAgXCJmZmRlYWRcIixcbiAgICAgIFwiMDAwMDgwXCIsXG4gICAgICBcImZkZjVlNlwiLFxuICAgICAgXCI4MDgwMDBcIixcbiAgICAgIFwiNmI4ZTIzXCIsXG4gICAgICBcImZmYTUwMFwiLFxuICAgICAgXCJmZjQ1MDBcIixcbiAgICAgIFwiZGE3MGQ2XCIsXG4gICAgICBcImVlZThhYVwiLFxuICAgICAgXCI5OGZiOThcIixcbiAgICAgIFwiYWZlZWVlXCIsXG4gICAgICBcImRiNzA5M1wiLFxuICAgICAgXCJmZmVmZDVcIixcbiAgICAgIFwiZmZkYWI5XCIsXG4gICAgICBcImNkODUzZlwiLFxuICAgICAgXCJmZmMwY2JcIixcbiAgICAgIFwiZGRhMGRkXCIsXG4gICAgICBcImIwZTBlNlwiLFxuICAgICAgXCI4MDAwODBcIixcbiAgICAgIFwiNjYzMzk5XCIsXG4gICAgICBcImZmMDAwMFwiLFxuICAgICAgXCJiYzhmOGZcIixcbiAgICAgIFwiNDE2OWUxXCIsXG4gICAgICBcIjhiNDUxM1wiLFxuICAgICAgXCJmYTgwNzJcIixcbiAgICAgIFwiZjRhNDYwXCIsXG4gICAgICBcIjJlOGI1N1wiLFxuICAgICAgXCJmZmY1ZWVcIixcbiAgICAgIFwiYTA1MjJkXCIsXG4gICAgICBcImMwYzBjMFwiLFxuICAgICAgXCI4N2NlZWJcIixcbiAgICAgIFwiNmE1YWNkXCIsXG4gICAgICBcIjcwODA5MFwiLFxuICAgICAgXCI3MDgwOTBcIixcbiAgICAgIFwiZmZmYWZhXCIsXG4gICAgICBcIjAwZmY3ZlwiLFxuICAgICAgXCI0NjgyYjRcIixcbiAgICAgIFwiZDJiNDhjXCIsXG4gICAgICBcIjAwODA4MFwiLFxuICAgICAgXCJkOGJmZDhcIixcbiAgICAgIFwiZmY2MzQ3XCIsXG4gICAgICBcIjQwZTBkMFwiLFxuICAgICAgXCJlZTgyZWVcIixcbiAgICAgIFwiZjVkZWIzXCIsXG4gICAgICBcImZmZmZmZlwiLFxuICAgICAgXCJmNWY1ZjVcIixcbiAgICAgIFwiZmZmZjAwXCIsXG4gICAgICBcIjlhY2QzMlwiLFxuICAgIF1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29sb3IyaHNiID0gKGM6IGFueSkgPT4ge1xuICBjb25zdCBoc2wgPSBjb2xvcjJoc2woYylcbiAgcmV0dXJuIGhzbDJoc2IoaHNsLmgsIGhzbC5zLCBoc2wubClcbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9yMmhzbCA9IChjOiBhbnkpID0+IHtcbiAgbGV0IHgsXG4gICAgeSxcbiAgICB0eXAsXG4gICAgYXJyID0gW10sXG4gICAgYXJybGVuZ3RoLFxuICAgIGksXG4gICAgbWF0Y2gsXG4gICAgcmdiOiBhbnksXG4gICAgY29sb3JuYW1lczogYW55ID0gW10sXG4gICAgY29sb3JoZXhzOiBhbnkgPSBbXVxuICBjID0gdzN0cmltKGMudG9Mb3dlckNhc2UoKSlcbiAgeCA9IGMuc3Vic3RyKDAsIDEpLnRvVXBwZXJDYXNlKClcbiAgeSA9IGMuc3Vic3RyKDEpXG4gIGlmIChcbiAgICAoeCA9PSBcIlJcIiB8fFxuICAgICAgeCA9PSBcIllcIiB8fFxuICAgICAgeCA9PSBcIkdcIiB8fFxuICAgICAgeCA9PSBcIkNcIiB8fFxuICAgICAgeCA9PSBcIkJcIiB8fFxuICAgICAgeCA9PSBcIk1cIiB8fFxuICAgICAgeCA9PSBcIldcIikgJiZcbiAgICAhaXNOYU4oeSlcbiAgKSB7XG4gICAgaWYgKGMubGVuZ3RoID09IDYgJiYgYy5pbmRleE9mKFwiLFwiKSA9PSAtMSkge1xuICAgIH0gZWxzZSB7XG4gICAgICBjID0gXCJuY29sKFwiICsgYyArIFwiKVwiXG4gICAgfVxuICB9XG4gIGlmIChjLmxlbmd0aCAhPSAzICYmIGMubGVuZ3RoICE9IDYgJiYgIWlzTmFOKGMpKSB7XG4gICAgYyA9IFwibmNvbChcIiArIGMgKyBcIilcIlxuICB9XG4gIGlmIChjLmluZGV4T2YoXCIsXCIpID4gMCAmJiBjLmluZGV4T2YoXCIoXCIpID09IC0xKSB7XG4gICAgYyA9IFwibmNvbChcIiArIGMgKyBcIilcIlxuICB9XG4gIGlmIChcbiAgICBjLnN1YnN0cigwLCAzKSA9PSBcInJnYlwiIHx8XG4gICAgYy5zdWJzdHIoMCwgMykgPT0gXCJoc2xcIiB8fFxuICAgIGMuc3Vic3RyKDAsIDMpID09IFwiaHdiXCIgfHxcbiAgICBjLnN1YnN0cigwLCA0KSA9PSBcIm5jb2xcIiB8fFxuICAgIGMuc3Vic3RyKDAsIDQpID09IFwiY215a1wiXG4gICkge1xuICAgIGlmIChjLnN1YnN0cigwLCA0KSA9PSBcIm5jb2xcIikge1xuICAgICAgaWYgKGMuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSA0ICYmIGMuaW5kZXhPZihcIm5jb2xhXCIpID09IC0xKSB7XG4gICAgICAgIGMgPSBjLnJlcGxhY2UoXCJuY29sXCIsIFwibmNvbGFcIilcbiAgICAgIH1cbiAgICAgIHR5cCA9IFwibmNvbFwiXG4gICAgICBjID0gYy5zdWJzdHIoNClcbiAgICB9IGVsc2UgaWYgKGMuc3Vic3RyKDAsIDQpID09IFwiY215a1wiKSB7XG4gICAgICB0eXAgPSBcImNteWtcIlxuICAgICAgYyA9IGMuc3Vic3RyKDQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cCA9IGMuc3Vic3RyKDAsIDMpXG4gICAgICBjID0gYy5zdWJzdHIoMylcbiAgICB9XG4gICAgYXJybGVuZ3RoID0gM1xuICAgIGlmIChjLnN1YnN0cigwLCAxKS50b0xvd2VyQ2FzZSgpID09IFwiYVwiKSB7XG4gICAgICBhcnJsZW5ndGggPSA0XG4gICAgICBjID0gYy5zdWJzdHIoMSlcbiAgICB9IGVsc2UgaWYgKHR5cCA9PSBcImNteWtcIikge1xuICAgICAgYXJybGVuZ3RoID0gNFxuICAgICAgaWYgKGMuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSA1KSB7XG4gICAgICAgIGFycmxlbmd0aCA9IDVcbiAgICAgIH1cbiAgICB9XG4gICAgYyA9IGMucmVwbGFjZShcIihcIiwgXCJcIilcbiAgICBjID0gYy5yZXBsYWNlKFwiKVwiLCBcIlwiKVxuICAgIGFyciA9IGMuc3BsaXQoXCIsXCIpXG4gICAgaWYgKHR5cCA9PSBcInJnYlwiKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJybGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXSA9PSBcIlwiIHx8IGFycltpXSA9PSBcIiBcIikge1xuICAgICAgICAgIGFycltpXSA9IFwiMFwiXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFycltpXS5pbmRleE9mKFwiJVwiKSA+IC0xKSB7XG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldLnJlcGxhY2UoXCIlXCIsIFwiXCIpXG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSAvIDEwMClcbiAgICAgICAgICBpZiAoaSA8IDMpIHtcbiAgICAgICAgICAgIGFycltpXSA9IE1hdGgucm91bmQoYXJyW2ldICogMjU1KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoYXJyW2ldKSA+IDI1NSkge1xuICAgICAgICAgIGFycltpXSA9IDI1NVxuICAgICAgICB9XG4gICAgICAgIGlmIChpIDwgMykge1xuICAgICAgICAgIGFycltpXSA9IHBhcnNlSW50KGFycltpXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PSAzICYmIE51bWJlcihhcnJbaV0pID4gMSkge1xuICAgICAgICAgIGFycltpXSA9IDFcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmdiID0geyByOiBhcnJbMF0sIGc6IGFyclsxXSwgYjogYXJyWzJdIH1cbiAgICB9XG4gICAgaWYgKHR5cCA9PSBcImhzbFwiIHx8IHR5cCA9PSBcImh3YlwiIHx8IHR5cCA9PSBcIm5jb2xcIikge1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPCBhcnJsZW5ndGgpIHtcbiAgICAgICAgYXJyLnB1c2goXCIwXCIpXG4gICAgICB9XG4gICAgICBpZiAodHlwID09IFwiaHNsXCIgfHwgdHlwID09IFwiaHdiXCIpIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KGFyclswXSkgPj0gMzYwKSB7XG4gICAgICAgICAgYXJyWzBdID0gMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAxOyBpIDwgYXJybGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXS5pbmRleE9mKFwiJVwiKSA+IC0xKSB7XG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldLnJlcGxhY2UoXCIlXCIsIFwiXCIpXG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgICBhcnJbaV0gPSBhcnJbaV0gLyAxMDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcnJbaV0gPSBOdW1iZXIoYXJyW2ldKVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihhcnJbaV0pIDwgMCkge1xuICAgICAgICAgIGFycltpXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwID09IFwiY215a1wiKSB7XG4gICAgICB3aGlsZSAoYXJyLmxlbmd0aCA8IGFycmxlbmd0aCkge1xuICAgICAgICBhcnIucHVzaChcIjBcIilcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJsZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoYXJyW2ldLmluZGV4T2YoXCIlXCIpID4gLTEpIHtcbiAgICAgICAgICBhcnJbaV0gPSBhcnJbaV0ucmVwbGFjZShcIiVcIiwgXCJcIilcbiAgICAgICAgICBhcnJbaV0gPSBOdW1iZXIoYXJyW2ldKVxuICAgICAgICAgIGFycltpXSA9IGFycltpXSAvIDEwMFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihhcnJbaV0pID4gMSkge1xuICAgICAgICAgIGFycltpXSA9IDFcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKGFycltpXSkgPCAwKSB7XG4gICAgICAgICAgYXJyW2ldID0gMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGMuc3Vic3RyKDAsIDMpID09IFwibmNzXCIpIHtcbiAgfSBlbHNlIHtcbiAgICBtYXRjaCA9IGZhbHNlXG4gICAgY29sb3JuYW1lcyA9IGdldENvbG9yQXJyKFwibmFtZXNcIilcbiAgICBmb3IgKGkgPSAwOyBpIDwgY29sb3JuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGMudG9Mb3dlckNhc2UoKSA9PSBjb2xvcm5hbWVzW2ldLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY29sb3JoZXhzID0gZ2V0Q29sb3JBcnIoXCJoZXhzXCIpXG4gICAgICAgIG1hdGNoID0gdHJ1ZVxuICAgICAgICByZ2IgPSB7XG4gICAgICAgICAgcjogcGFyc2VJbnQoY29sb3JoZXhzW2ldLnN1YnN0cigwLCAyKSwgMTYpLFxuICAgICAgICAgIGc6IHBhcnNlSW50KGNvbG9yaGV4c1tpXS5zdWJzdHIoMiwgMiksIDE2KSxcbiAgICAgICAgICBiOiBwYXJzZUludChjb2xvcmhleHNbaV0uc3Vic3RyKDQsIDIpLCAxNiksXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoID09IGZhbHNlKSB7XG4gICAgICBjID0gYy5yZXBsYWNlKFwiI1wiLCBcIlwiKVxuICAgICAgaWYgKGMubGVuZ3RoID09IDMpIHtcbiAgICAgICAgYyA9XG4gICAgICAgICAgYy5zdWJzdHIoMCwgMSkgK1xuICAgICAgICAgIGMuc3Vic3RyKDAsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigxLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMSwgMSkgK1xuICAgICAgICAgIGMuc3Vic3RyKDIsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigyLCAxKVxuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGMubGVuZ3RoOyBpKyspIHt9XG4gICAgICBhcnJbMF0gPSBwYXJzZUludChjLnN1YnN0cigwLCAyKSwgMTYpXG4gICAgICBhcnJbMV0gPSBwYXJzZUludChjLnN1YnN0cigyLCAyKSwgMTYpXG4gICAgICBhcnJbMl0gPSBwYXJzZUludChjLnN1YnN0cig0LCAyKSwgMTYpXG4gICAgICByZ2IgPSB7XG4gICAgICAgIHI6IGFyclswXSxcbiAgICAgICAgZzogYXJyWzFdLFxuICAgICAgICBiOiBhcnJbMl0sXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZ2IyaHNsKHJnYi5yLCByZ2IuZywgcmdiLmIpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sSUFBTUEsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENB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USxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFB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