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>

290 lines (289 loc) 53.1 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(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; } var rgb2hex = exports.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); }; var hsb2hsl = exports.hsb2hsl = function hsb2hsl(a, b, c) { return [a, b * c / ((a = (2 - b) * c) < 1 ? a : 2 - a), a / 2]; }; var hsl2hsb = exports.hsl2hsb = function hsl2hsb(a, b, c) { b *= c < 0.5 ? c : 1 - c; return [a, 2 * b / (c + b) || 0, c + b]; }; var hsl2rgb = exports.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)]; }; var hsb2hex = exports.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); }; var rgb2hsl = exports.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 }; }; var w3trim = exports.w3trim = function w3trim(x) { return x.replace(/^\s+|\s+$/g, ""); }; var getColorArr = exports.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"]; } }; var color2hsb = exports.color2hsb = function color2hsb(c) { var hsl = color2hsl(c); return hsl2hsb(hsl.h, hsl.s, hsl.l); }; var color2hsl = exports.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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZ2IyaGV4IiwiZXhwb3J0cyIsInIiLCJnIiwiYiIsInJlZCIsInRvU3RyaW5nIiwidG9VcHBlckNhc2UiLCJncmVlbiIsImJsdWUiLCJsZW5ndGgiLCJjb25jYXQiLCJoc2IyaHNsIiwiYSIsImMiLCJoc2wyaHNiIiwiaHNsMnJnYiIsImgiLCJzIiwibCIsIkMiLCJNYXRoIiwiYWJzIiwiWCIsIm0iLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheSIsIlIiLCJHIiwiQiIsIl9yZWYzIiwicm91bmQiLCJoc2IyaGV4IiwidW5kZWZpbmVkIiwiX2hzYjJoc2wiLCJfaHNiMmhzbDIiLCJodWUiLCJzYXR1cmF0aW9uIiwiYnJpZ2h0bmVzcyIsIl9oc2wycmdiIiwiX2hzbDJyZ2IyIiwicmdiMmhzbCIsIm1pbiIsIm1heCIsImkiLCJtYXhjb2xvciIsInJnYiIsImlzTmFOIiwidzN0cmltIiwieCIsInJlcGxhY2UiLCJnZXRDb2xvckFyciIsImNvbG9yMmhzYiIsImhzbCIsImNvbG9yMmhzbCIsInkiLCJ0eXAiLCJhcnIiLCJhcnJsZW5ndGgiLCJtYXRjaCIsImNvbG9ybmFtZXMiLCJjb2xvcmhleHMiLCJ0b0xvd2VyQ2FzZSIsInN1YnN0ciIsImluZGV4T2YiLCJzcGxpdCIsIk51bWJlciIsInBhcnNlSW50IiwicHVzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvX3V0aWwvY29sb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmV4cG9ydCBjb25zdCByZ2IyaGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgbGV0IHJlZCA9IHIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgbGV0IGdyZWVuID0gZy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKVxuICBsZXQgYmx1ZSA9IGIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgcmVkID0gcmVkLmxlbmd0aCA9PT0gMSA/IGAwJHtyZWR9YCA6IHJlZFxuICBncmVlbiA9IGdyZWVuLmxlbmd0aCA9PT0gMSA/IGAwJHtncmVlbn1gIDogZ3JlZW5cbiAgYmx1ZSA9IGJsdWUubGVuZ3RoID09PSAxID8gYDAke2JsdWV9YCA6IGJsdWVcbiAgcmV0dXJuIGAjJHtyZWR9JHtncmVlbn0ke2JsdWV9YFxufVxuXG5leHBvcnQgY29uc3QgaHNiMmhzbCA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBbYSwgKGIgKiBjKSAvICgoYSA9ICgyIC0gYikgKiBjKSA8IDEgPyBhIDogMiAtIGEpLCBhIC8gMl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJoc2IgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikgPT4ge1xuICBiICo9IGMgPCAwLjUgPyBjIDogMSAtIGNcbiAgcmV0dXJuIFthLCAoMiAqIGIpIC8gKGMgKyBiKSB8fCAwLCBjICsgYl1cbn1cblxuZXhwb3J0IGNvbnN0IGhzbDJyZ2IgPSAoaDogbnVtYmVyLCBzOiBudW1iZXIsIGw6IG51bWJlcikgPT4ge1xuICBjb25zdCBDID0gKDEgLSBNYXRoLmFicygyICogbCAtIDEpKSAqIHNcbiAgY29uc3QgWCA9IEMgKiAoMSAtIE1hdGguYWJzKCgoaCAvIDYwKSAlIDIpIC0gMSkpXG4gIGNvbnN0IG0gPSBsIC0gQyAvIDJcbiAgbGV0IFtSLCBHLCBCXTogYW55ID1cbiAgICAoaCA+PSAwICYmIGggPCA2MCAmJiBbQywgWCwgMF0pIHx8XG4gICAgKGggPj0gNjAgJiYgaCA8IDEyMCAmJiBbWCwgQywgMF0pIHx8XG4gICAgKGggPj0gMTIwICYmIGggPCAxODAgJiYgWzAsIEMsIFhdKSB8fFxuICAgIChoID49IDE4MCAmJiBoIDwgMjQwICYmIFswLCBYLCBDXSkgfHxcbiAgICAoaCA+PSAyNDAgJiYgaCA8IDMwMCAmJiBbWCwgMCwgQ10pIHx8XG4gICAgKGggPj0gMzAwICYmIGggPCAzNjAgJiYgW0MsIDAsIFhdKVxuICA7W1IsIEcsIEJdID0gWyhSICsgbSkgKiAyNTUsIChHICsgbSkgKiAyNTUsIChCICsgbSkgKiAyNTVdXG4gIHJldHVybiBbTWF0aC5yb3VuZChSKSwgTWF0aC5yb3VuZChHKSwgTWF0aC5yb3VuZChCKV1cbn1cblxuZXhwb3J0IGNvbnN0IGhzYjJoZXggPSAoXG4gIGg/OiBudW1iZXIgfCBudWxsLFxuICBzPzogbnVtYmVyIHwgbnVsbCxcbiAgYj86IG51bWJlciB8IG51bGxcbikgPT4ge1xuICBpZiAoXG4gICAgaCA9PT0gbnVsbCB8fFxuICAgIGggPT09IHVuZGVmaW5lZCB8fFxuICAgIHMgPT09IG51bGwgfHxcbiAgICBzID09PSB1bmRlZmluZWQgfHxcbiAgICBiID09PSBudWxsIHx8XG4gICAgYiA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiBcIlwiXG4gIH1cbiAgY29uc3QgW2h1ZSwgc2F0dXJhdGlvbiwgYnJpZ2h0bmVzc10gPSBoc2IyaHNsKGgsIHMsIGIpXG4gIGNvbnN0IFtyZWQsIGdyZWVuLCBibHVlXSA9IGhzbDJyZ2IoaHVlLCBzYXR1cmF0aW9uIHx8IDAsIGJyaWdodG5lc3MgfHwgMClcbiAgcmV0dXJuIHJnYjJoZXgocmVkLCBncmVlbiwgYmx1ZSlcbn1cblxuZXhwb3J0IGNvbnN0IHJnYjJoc2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBsZXQgbWluLFxuICAgIG1heCxcbiAgICBpLFxuICAgIGwsXG4gICAgcyxcbiAgICBtYXhjb2xvcixcbiAgICBoLFxuICAgIHJnYiA9IFtdXG4gIHJnYlswXSA9IHIgLyAyNTVcbiAgcmdiWzFdID0gZyAvIDI1NVxuICByZ2JbMl0gPSBiIC8gMjU1XG4gIG1pbiA9IHJnYlswXVxuICBtYXggPSByZ2JbMF1cbiAgbWF4Y29sb3IgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCByZ2IubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKHJnYltpICsgMV0gPD0gbWluKSB7XG4gICAgICBtaW4gPSByZ2JbaSArIDFdXG4gICAgfVxuICAgIGlmIChyZ2JbaSArIDFdID49IG1heCkge1xuICAgICAgbWF4ID0gcmdiW2kgKyAxXVxuICAgICAgbWF4Y29sb3IgPSBpICsgMVxuICAgIH1cbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMCkge1xuICAgIGggPSAocmdiWzFdIC0gcmdiWzJdKSAvIChtYXggLSBtaW4pXG4gIH1cbiAgaWYgKG1heGNvbG9yID09IDEpIHtcbiAgICBoID0gMiArIChyZ2JbMl0gLSByZ2JbMF0pIC8gKG1heCAtIG1pbilcbiAgfVxuICBpZiAobWF4Y29sb3IgPT0gMikge1xuICAgIGggPSA0ICsgKHJnYlswXSAtIHJnYlsxXSkgLyAobWF4IC0gbWluKVxuICB9XG4gIGlmICghaCB8fCBpc05hTihoKSkge1xuICAgIGggPSAwXG4gIH1cbiAgaCA9IGggKiA2MFxuICBpZiAoaCA8IDApIHtcbiAgICBoID0gaCArIDM2MFxuICB9XG4gIGwgPSAobWluICsgbWF4KSAvIDJcbiAgaWYgKG1pbiA9PSBtYXgpIHtcbiAgICBzID0gMFxuICB9IGVsc2Uge1xuICAgIGlmIChsIDwgMC41KSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAobWF4ICsgbWluKVxuICAgIH0gZWxzZSB7XG4gICAgICBzID0gKG1heCAtIG1pbikgLyAoMiAtIG1heCAtIG1pbilcbiAgICB9XG4gIH1cbiAgcyA9IHNcbiAgcmV0dXJuIHsgaDogaCwgczogcywgbDogbCB9XG59XG5cbmV4cG9ydCBjb25zdCB3M3RyaW0gPSAoeDogYW55KSA9PiB4LnJlcGxhY2UoL15cXHMrfFxccyskL2csIFwiXCIpXG5cbmV4cG9ydCBjb25zdCBnZXRDb2xvckFyciA9ICh4OiBhbnkpID0+IHtcbiAgaWYgKHggPT0gXCJuYW1lc1wiKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiQWxpY2VCbHVlXCIsXG4gICAgICBcIkFudGlxdWVXaGl0ZVwiLFxuICAgICAgXCJBcXVhXCIsXG4gICAgICBcIkFxdWFtYXJpbmVcIixcbiAgICAgIFwiQXp1cmVcIixcbiAgICAgIFwiQmVpZ2VcIixcbiAgICAgIFwiQmlzcXVlXCIsXG4gICAgICBcIkJsYWNrXCIsXG4gICAgICBcIkJsYW5jaGVkQWxtb25kXCIsXG4gICAgICBcIkJsdWVcIixcbiAgICAgIFwiQmx1ZVZpb2xldFwiLFxuICAgICAgXCJCcm93blwiLFxuICAgICAgXCJCdXJseVdvb2RcIixcbiAgICAgIFwiQ2FkZXRCbHVlXCIsXG4gICAgICBcIkNoYXJ0cmV1c2VcIixcbiAgICAgIFwiQ2hvY29sYXRlXCIsXG4gICAgICBcIkNvcmFsXCIsXG4gICAgICBcIkNvcm5mbG93ZXJCbHVlXCIsXG4gICAgICBcIkNvcm5zaWxrXCIsXG4gICAgICBcIkNyaW1zb25cIixcbiAgICAgIFwiQ3lhblwiLFxuICAgICAgXCJEYXJrQmx1ZVwiLFxuICAgICAgXCJEYXJrQ3lhblwiLFxuICAgICAgXCJEYXJrR29sZGVuUm9kXCIsXG4gICAgICBcIkRhcmtHcmF5XCIsXG4gICAgICBcIkRhcmtHcmV5XCIsXG4gICAgICBcIkRhcmtHcmVlblwiLFxuICAgICAgXCJEYXJrS2hha2lcIixcbiAgICAgIFwiRGFya01hZ2VudGFcIixcbiAgICAgIFwiRGFya09saXZlR3JlZW5cIixcbiAgICAgIFwiRGFya09yYW5nZVwiLFxuICAgICAgXCJEYXJrT3JjaGlkXCIsXG4gICAgICBcIkRhcmtSZWRcIixcbiAgICAgIFwiRGFya1NhbG1vblwiLFxuICAgICAgXCJEYXJrU2VhR3JlZW5cIixcbiAgICAgIFwiRGFya1NsYXRlQmx1ZVwiLFxuICAgICAgXCJEYXJrU2xhdGVHcmF5XCIsXG4gICAgICBcIkRhcmtTbGF0ZUdyZXlcIixcbiAgICAgIFwiRGFya1R1cnF1b2lzZVwiLFxuICAgICAgXCJEYXJrVmlvbGV0XCIsXG4gICAgICBcIkRlZXBQaW5rXCIsXG4gICAgICBcIkRlZXBTa3lCbHVlXCIsXG4gICAgICBcIkRpbUdyYXlcIixcbiAgICAgIFwiRGltR3JleVwiLFxuICAgICAgXCJEb2RnZXJCbHVlXCIsXG4gICAgICBcIkZpcmVCcmlja1wiLFxuICAgICAgXCJGbG9yYWxXaGl0ZVwiLFxuICAgICAgXCJGb3Jlc3RHcmVlblwiLFxuICAgICAgXCJGdWNoc2lhXCIsXG4gICAgICBcIkdhaW5zYm9yb1wiLFxuICAgICAgXCJHaG9zdFdoaXRlXCIsXG4gICAgICBcIkdvbGRcIixcbiAgICAgIFwiR29sZGVuUm9kXCIsXG4gICAgICBcIkdyYXlcIixcbiAgICAgIFwiR3JleVwiLFxuICAgICAgXCJHcmVlblwiLFxuICAgICAgXCJHcmVlblllbGxvd1wiLFxuICAgICAgXCJIb25leURld1wiLFxuICAgICAgXCJIb3RQaW5rXCIsXG4gICAgICBcIkluZGlhblJlZFwiLFxuICAgICAgXCJJbmRpZ29cIixcbiAgICAgIFwiSXZvcnlcIixcbiAgICAgIFwiS2hha2lcIixcbiAgICAgIFwiTGF2ZW5kZXJcIixcbiAgICAgIFwiTGF2ZW5kZXJCbHVzaFwiLFxuICAgICAgXCJMYXduR3JlZW5cIixcbiAgICAgIFwiTGVtb25DaGlmZm9uXCIsXG4gICAgICBcIkxpZ2h0Qmx1ZVwiLFxuICAgICAgXCJMaWdodENvcmFsXCIsXG4gICAgICBcIkxpZ2h0Q3lhblwiLFxuICAgICAgXCJMaWdodEdvbGRlblJvZFllbGxvd1wiLFxuICAgICAgXCJMaWdodEdyYXlcIixcbiAgICAgIFwiTGlnaHRHcmV5XCIsXG4gICAgICBcIkxpZ2h0R3JlZW5cIixcbiAgICAgIFwiTGlnaHRQaW5rXCIsXG4gICAgICBcIkxpZ2h0U2FsbW9uXCIsXG4gICAgICBcIkxpZ2h0U2VhR3JlZW5cIixcbiAgICAgIFwiTGlnaHRTa3lCbHVlXCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmF5XCIsXG4gICAgICBcIkxpZ2h0U2xhdGVHcmV5XCIsXG4gICAgICBcIkxpZ2h0U3RlZWxCbHVlXCIsXG4gICAgICBcIkxpZ2h0WWVsbG93XCIsXG4gICAgICBcIkxpbWVcIixcbiAgICAgIFwiTGltZUdyZWVuXCIsXG4gICAgICBcIkxpbmVuXCIsXG4gICAgICBcIk1hZ2VudGFcIixcbiAgICAgIFwiTWFyb29uXCIsXG4gICAgICBcIk1lZGl1bUFxdWFNYXJpbmVcIixcbiAgICAgIFwiTWVkaXVtQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1PcmNoaWRcIixcbiAgICAgIFwiTWVkaXVtUHVycGxlXCIsXG4gICAgICBcIk1lZGl1bVNlYUdyZWVuXCIsXG4gICAgICBcIk1lZGl1bVNsYXRlQmx1ZVwiLFxuICAgICAgXCJNZWRpdW1TcHJpbmdHcmVlblwiLFxuICAgICAgXCJNZWRpdW1UdXJxdW9pc2VcIixcbiAgICAgIFwiTWVkaXVtVmlvbGV0UmVkXCIsXG4gICAgICBcIk1pZG5pZ2h0Qmx1ZVwiLFxuICAgICAgXCJNaW50Q3JlYW1cIixcbiAgICAgIFwiTWlzdHlSb3NlXCIsXG4gICAgICBcIk1vY2Nhc2luXCIsXG4gICAgICBcIk5hdmFqb1doaXRlXCIsXG4gICAgICBcIk5hdnlcIixcbiAgICAgIFwiT2xkTGFjZVwiLFxuICAgICAgXCJPbGl2ZVwiLFxuICAgICAgXCJPbGl2ZURyYWJcIixcbiAgICAgIFwiT3JhbmdlXCIsXG4gICAgICBcIk9yYW5nZVJlZFwiLFxuICAgICAgXCJPcmNoaWRcIixcbiAgICAgIFwiUGFsZUdvbGRlblJvZFwiLFxuICAgICAgXCJQYWxlR3JlZW5cIixcbiAgICAgIFwiUGFsZVR1cnF1b2lzZVwiLFxuICAgICAgXCJQYWxlVmlvbGV0UmVkXCIsXG4gICAgICBcIlBhcGF5YVdoaXBcIixcbiAgICAgIFwiUGVhY2hQdWZmXCIsXG4gICAgICBcIlBlcnVcIixcbiAgICAgIFwiUGlua1wiLFxuICAgICAgXCJQbHVtXCIsXG4gICAgICBcIlBvd2RlckJsdWVcIixcbiAgICAgIFwiUHVycGxlXCIsXG4gICAgICBcIlJlYmVjY2FQdXJwbGVcIixcbiAgICAgIFwiUmVkXCIsXG4gICAgICBcIlJvc3lCcm93blwiLFxuICAgICAgXCJSb3lhbEJsdWVcIixcbiAgICAgIFwiU2FkZGxlQnJvd25cIixcbiAgICAgIFwiU2FsbW9uXCIsXG4gICAgICBcIlNhbmR5QnJvd25cIixcbiAgICAgIFwiU2VhR3JlZW5cIixcbiAgICAgIFwiU2VhU2hlbGxcIixcbiAgICAgIFwiU2llbm5hXCIsXG4gICAgICBcIlNpbHZlclwiLFxuICAgICAgXCJTa3lCbHVlXCIsXG4gICAgICBcIlNsYXRlQmx1ZVwiLFxuICAgICAgXCJTbGF0ZUdyYXlcIixcbiAgICAgIFwiU2xhdGVHcmV5XCIsXG4gICAgICBcIlNub3dcIixcbiAgICAgIFwiU3ByaW5nR3JlZW5cIixcbiAgICAgIFwiU3RlZWxCbHVlXCIsXG4gICAgICBcIlRhblwiLFxuICAgICAgXCJUZWFsXCIsXG4gICAgICBcIlRoaXN0bGVcIixcbiAgICAgIFwiVG9tYXRvXCIsXG4gICAgICBcIlR1cnF1b2lzZVwiLFxuICAgICAgXCJWaW9sZXRcIixcbiAgICAgIFwiV2hlYXRcIixcbiAgICAgIFwiV2hpdGVcIixcbiAgICAgIFwiV2hpdGVTbW9rZVwiLFxuICAgICAgXCJZZWxsb3dcIixcbiAgICAgIFwiWWVsbG93R3JlZW5cIixcbiAgICBdXG4gIH1cbiAgaWYgKHggPT0gXCJoZXhzXCIpIHtcbiAgICByZXR1cm4gW1xuICAgICAgXCJmMGY4ZmZcIixcbiAgICAgIFwiZmFlYmQ3XCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCI3ZmZmZDRcIixcbiAgICAgIFwiZjBmZmZmXCIsXG4gICAgICBcImY1ZjVkY1wiLFxuICAgICAgXCJmZmU0YzRcIixcbiAgICAgIFwiMDAwMDAwXCIsXG4gICAgICBcImZmZWJjZFwiLFxuICAgICAgXCIwMDAwZmZcIixcbiAgICAgIFwiOGEyYmUyXCIsXG4gICAgICBcImE1MmEyYVwiLFxuICAgICAgXCJkZWI4ODdcIixcbiAgICAgIFwiNWY5ZWEwXCIsXG4gICAgICBcIjdmZmYwMFwiLFxuICAgICAgXCJkMjY5MWVcIixcbiAgICAgIFwiZmY3ZjUwXCIsXG4gICAgICBcIjY0OTVlZFwiLFxuICAgICAgXCJmZmY4ZGNcIixcbiAgICAgIFwiZGMxNDNjXCIsXG4gICAgICBcIjAwZmZmZlwiLFxuICAgICAgXCIwMDAwOGJcIixcbiAgICAgIFwiMDA4YjhiXCIsXG4gICAgICBcImI4ODYwYlwiLFxuICAgICAgXCJhOWE5YTlcIixcbiAgICAgIFwiYTlhOWE5XCIsXG4gICAgICBcIjAwNjQwMFwiLFxuICAgICAgXCJiZGI3NmJcIixcbiAgICAgIFwiOGIwMDhiXCIsXG4gICAgICBcIjU1NmIyZlwiLFxuICAgICAgXCJmZjhjMDBcIixcbiAgICAgIFwiOTkzMmNjXCIsXG4gICAgICBcIjhiMDAwMFwiLFxuICAgICAgXCJlOTk2N2FcIixcbiAgICAgIFwiOGZiYzhmXCIsXG4gICAgICBcIjQ4M2Q4YlwiLFxuICAgICAgXCIyZjRmNGZcIixcbiAgICAgIFwiMmY0ZjRmXCIsXG4gICAgICBcIjAwY2VkMVwiLFxuICAgICAgXCI5NDAwZDNcIixcbiAgICAgIFwiZmYxNDkzXCIsXG4gICAgICBcIjAwYmZmZlwiLFxuICAgICAgXCI2OTY5NjlcIixcbiAgICAgIFwiNjk2OTY5XCIsXG4gICAgICBcIjFlOTBmZlwiLFxuICAgICAgXCJiMjIyMjJcIixcbiAgICAgIFwiZmZmYWYwXCIsXG4gICAgICBcIjIyOGIyMlwiLFxuICAgICAgXCJmZjAwZmZcIixcbiAgICAgIFwiZGNkY2RjXCIsXG4gICAgICBcImY4ZjhmZlwiLFxuICAgICAgXCJmZmQ3MDBcIixcbiAgICAgIFwiZGFhNTIwXCIsXG4gICAgICBcIjgwODA4MFwiLFxuICAgICAgXCI4MDgwODBcIixcbiAgICAgIFwiMDA4MDAwXCIsXG4gICAgICBcImFkZmYyZlwiLFxuICAgICAgXCJmMGZmZjBcIixcbiAgICAgIFwiZmY2OWI0XCIsXG4gICAgICBcImNkNWM1Y1wiLFxuICAgICAgXCI0YjAwODJcIixcbiAgICAgIFwiZmZmZmYwXCIsXG4gICAgICBcImYwZTY4Y1wiLFxuICAgICAgXCJlNmU2ZmFcIixcbiAgICAgIFwiZmZmMGY1XCIsXG4gICAgICBcIjdjZmMwMFwiLFxuICAgICAgXCJmZmZhY2RcIixcbiAgICAgIFwiYWRkOGU2XCIsXG4gICAgICBcImYwODA4MFwiLFxuICAgICAgXCJlMGZmZmZcIixcbiAgICAgIFwiZmFmYWQyXCIsXG4gICAgICBcImQzZDNkM1wiLFxuICAgICAgXCJkM2QzZDNcIixcbiAgICAgIFwiOTBlZTkwXCIsXG4gICAgICBcImZmYjZjMVwiLFxuICAgICAgXCJmZmEwN2FcIixcbiAgICAgIFwiMjBiMmFhXCIsXG4gICAgICBcIjg3Y2VmYVwiLFxuICAgICAgXCI3Nzg4OTlcIixcbiAgICAgIFwiNzc4ODk5XCIsXG4gICAgICBcImIwYzRkZVwiLFxuICAgICAgXCJmZmZmZTBcIixcbiAgICAgIFwiMDBmZjAwXCIsXG4gICAgICBcIjMyY2QzMlwiLFxuICAgICAgXCJmYWYwZTZcIixcbiAgICAgIFwiZmYwMGZmXCIsXG4gICAgICBcIjgwMDAwMFwiLFxuICAgICAgXCI2NmNkYWFcIixcbiAgICAgIFwiMDAwMGNkXCIsXG4gICAgICBcImJhNTVkM1wiLFxuICAgICAgXCI5MzcwZGJcIixcbiAgICAgIFwiM2NiMzcxXCIsXG4gICAgICBcIjdiNjhlZVwiLFxuICAgICAgXCIwMGZhOWFcIixcbiAgICAgIFwiNDhkMWNjXCIsXG4gICAgICBcImM3MTU4NVwiLFxuICAgICAgXCIxOTE5NzBcIixcbiAgICAgIFwiZjVmZmZhXCIsXG4gICAgICBcImZmZTRlMVwiLFxuICAgICAgXCJmZmU0YjVcIixcbiAgICAgIFwiZmZkZWFkXCIsXG4gICAgICBcIjAwMDA4MFwiLFxuICAgICAgXCJmZGY1ZTZcIixcbiAgICAgIFwiODA4MDAwXCIsXG4gICAgICBcIjZiOGUyM1wiLFxuICAgICAgXCJmZmE1MDBcIixcbiAgICAgIFwiZmY0NTAwXCIsXG4gICAgICBcImRhNzBkNlwiLFxuICAgICAgXCJlZWU4YWFcIixcbiAgICAgIFwiOThmYjk4XCIsXG4gICAgICBcImFmZWVlZVwiLFxuICAgICAgXCJkYjcwOTNcIixcbiAgICAgIFwiZmZlZmQ1XCIsXG4gICAgICBcImZmZGFiOVwiLFxuICAgICAgXCJjZDg1M2ZcIixcbiAgICAgIFwiZmZjMGNiXCIsXG4gICAgICBcImRkYTBkZFwiLFxuICAgICAgXCJiMGUwZTZcIixcbiAgICAgIFwiODAwMDgwXCIsXG4gICAgICBcIjY2MzM5OVwiLFxuICAgICAgXCJmZjAwMDBcIixcbiAgICAgIFwiYmM4ZjhmXCIsXG4gICAgICBcIjQxNjllMVwiLFxuICAgICAgXCI4YjQ1MTNcIixcbiAgICAgIFwiZmE4MDcyXCIsXG4gICAgICBcImY0YTQ2MFwiLFxuICAgICAgXCIyZThiNTdcIixcbiAgICAgIFwiZmZmNWVlXCIsXG4gICAgICBcImEwNTIyZFwiLFxuICAgICAgXCJjMGMwYzBcIixcbiAgICAgIFwiODdjZWViXCIsXG4gICAgICBcIjZhNWFjZFwiLFxuICAgICAgXCI3MDgwOTBcIixcbiAgICAgIFwiNzA4MDkwXCIsXG4gICAgICBcImZmZmFmYVwiLFxuICAgICAgXCIwMGZmN2ZcIixcbiAgICAgIFwiNDY4MmI0XCIsXG4gICAgICBcImQyYjQ4Y1wiLFxuICAgICAgXCIwMDgwODBcIixcbiAgICAgIFwiZDhiZmQ4XCIsXG4gICAgICBcImZmNjM0N1wiLFxuICAgICAgXCI0MGUwZDBcIixcbiAgICAgIFwiZWU4MmVlXCIsXG4gICAgICBcImY1ZGViM1wiLFxuICAgICAgXCJmZmZmZmZcIixcbiAgICAgIFwiZjVmNWY1XCIsXG4gICAgICBcImZmZmYwMFwiLFxuICAgICAgXCI5YWNkMzJcIixcbiAgICBdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9yMmhzYiA9IChjOiBhbnkpID0+IHtcbiAgY29uc3QgaHNsID0gY29sb3IyaHNsKGMpXG4gIHJldHVybiBoc2wyaHNiKGhzbC5oLCBoc2wucywgaHNsLmwpXG59XG5cbmV4cG9ydCBjb25zdCBjb2xvcjJoc2wgPSAoYzogYW55KSA9PiB7XG4gIGxldCB4LFxuICAgIHksXG4gICAgdHlwLFxuICAgIGFyciA9IFtdLFxuICAgIGFycmxlbmd0aCxcbiAgICBpLFxuICAgIG1hdGNoLFxuICAgIHJnYjogYW55LFxuICAgIGNvbG9ybmFtZXM6IGFueSA9IFtdLFxuICAgIGNvbG9yaGV4czogYW55ID0gW11cbiAgYyA9IHczdHJpbShjLnRvTG93ZXJDYXNlKCkpXG4gIHggPSBjLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpXG4gIHkgPSBjLnN1YnN0cigxKVxuICBpZiAoXG4gICAgKHggPT0gXCJSXCIgfHxcbiAgICAgIHggPT0gXCJZXCIgfHxcbiAgICAgIHggPT0gXCJHXCIgfHxcbiAgICAgIHggPT0gXCJDXCIgfHxcbiAgICAgIHggPT0gXCJCXCIgfHxcbiAgICAgIHggPT0gXCJNXCIgfHxcbiAgICAgIHggPT0gXCJXXCIpICYmXG4gICAgIWlzTmFOKHkpXG4gICkge1xuICAgIGlmIChjLmxlbmd0aCA9PSA2ICYmIGMuaW5kZXhPZihcIixcIikgPT0gLTEpIHtcbiAgICB9IGVsc2Uge1xuICAgICAgYyA9IFwibmNvbChcIiArIGMgKyBcIilcIlxuICAgIH1cbiAgfVxuICBpZiAoYy5sZW5ndGggIT0gMyAmJiBjLmxlbmd0aCAhPSA2ICYmICFpc05hTihjKSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoYy5pbmRleE9mKFwiLFwiKSA+IDAgJiYgYy5pbmRleE9mKFwiKFwiKSA9PSAtMSkge1xuICAgIGMgPSBcIm5jb2woXCIgKyBjICsgXCIpXCJcbiAgfVxuICBpZiAoXG4gICAgYy5zdWJzdHIoMCwgMykgPT0gXCJyZ2JcIiB8fFxuICAgIGMuc3Vic3RyKDAsIDMpID09IFwiaHNsXCIgfHxcbiAgICBjLnN1YnN0cigwLCAzKSA9PSBcImh3YlwiIHx8XG4gICAgYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIgfHxcbiAgICBjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIlxuICApIHtcbiAgICBpZiAoYy5zdWJzdHIoMCwgNCkgPT0gXCJuY29sXCIpIHtcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNCAmJiBjLmluZGV4T2YoXCJuY29sYVwiKSA9PSAtMSkge1xuICAgICAgICBjID0gYy5yZXBsYWNlKFwibmNvbFwiLCBcIm5jb2xhXCIpXG4gICAgICB9XG4gICAgICB0eXAgPSBcIm5jb2xcIlxuICAgICAgYyA9IGMuc3Vic3RyKDQpXG4gICAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCA0KSA9PSBcImNteWtcIikge1xuICAgICAgdHlwID0gXCJjbXlrXCJcbiAgICAgIGMgPSBjLnN1YnN0cig0KVxuICAgIH0gZWxzZSB7XG4gICAgICB0eXAgPSBjLnN1YnN0cigwLCAzKVxuICAgICAgYyA9IGMuc3Vic3RyKDMpXG4gICAgfVxuICAgIGFycmxlbmd0aCA9IDNcbiAgICBpZiAoYy5zdWJzdHIoMCwgMSkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xuICAgICAgYXJybGVuZ3RoID0gNFxuICAgICAgYyA9IGMuc3Vic3RyKDEpXG4gICAgfSBlbHNlIGlmICh0eXAgPT0gXCJjbXlrXCIpIHtcbiAgICAgIGFycmxlbmd0aCA9IDRcbiAgICAgIGlmIChjLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gNSkge1xuICAgICAgICBhcnJsZW5ndGggPSA1XG4gICAgICB9XG4gICAgfVxuICAgIGMgPSBjLnJlcGxhY2UoXCIoXCIsIFwiXCIpXG4gICAgYyA9IGMucmVwbGFjZShcIilcIiwgXCJcIilcbiAgICBhcnIgPSBjLnNwbGl0KFwiLFwiKVxuICAgIGlmICh0eXAgPT0gXCJyZ2JcIikge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0gPT0gXCJcIiB8fCBhcnJbaV0gPT0gXCIgXCIpIHtcbiAgICAgICAgICBhcnJbaV0gPSBcIjBcIlxuICAgICAgICB9XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0gLyAxMDApXG4gICAgICAgICAgaWYgKGkgPCAzKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBNYXRoLnJvdW5kKGFycltpXSAqIDI1NSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGFycltpXSkgPiAyNTUpIHtcbiAgICAgICAgICBhcnJbaV0gPSAyNTVcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IDMpIHtcbiAgICAgICAgICBhcnJbaV0gPSBwYXJzZUludChhcnJbaV0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT0gMyAmJiBOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJnYiA9IHsgcjogYXJyWzBdLCBnOiBhcnJbMV0sIGI6IGFyclsyXSB9XG4gICAgfVxuICAgIGlmICh0eXAgPT0gXCJoc2xcIiB8fCB0eXAgPT0gXCJod2JcIiB8fCB0eXAgPT0gXCJuY29sXCIpIHtcbiAgICAgIHdoaWxlIChhcnIubGVuZ3RoIDwgYXJybGVuZ3RoKSB7XG4gICAgICAgIGFyci5wdXNoKFwiMFwiKVxuICAgICAgfVxuICAgICAgaWYgKHR5cCA9PSBcImhzbFwiIHx8IHR5cCA9PSBcImh3YlwiKSB7XG4gICAgICAgIGlmIChwYXJzZUludChhcnJbMF0pID49IDM2MCkge1xuICAgICAgICAgIGFyclswXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yIChpID0gMTsgaSA8IGFycmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJbaV0uaW5kZXhPZihcIiVcIikgPiAtMSkge1xuICAgICAgICAgIGFycltpXSA9IGFycltpXS5yZXBsYWNlKFwiJVwiLCBcIlwiKVxuICAgICAgICAgIGFycltpXSA9IE51bWJlcihhcnJbaV0pXG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldIC8gMTAwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoTnVtYmVyKGFycltpXSkgPiAxKSB7XG4gICAgICAgICAgYXJyW2ldID0gMVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA8IDApIHtcbiAgICAgICAgICBhcnJbaV0gPSAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cCA9PSBcImNteWtcIikge1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPCBhcnJsZW5ndGgpIHtcbiAgICAgICAgYXJyLnB1c2goXCIwXCIpXG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJybGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGFycltpXS5pbmRleE9mKFwiJVwiKSA+IC0xKSB7XG4gICAgICAgICAgYXJyW2ldID0gYXJyW2ldLnJlcGxhY2UoXCIlXCIsIFwiXCIpXG4gICAgICAgICAgYXJyW2ldID0gTnVtYmVyKGFycltpXSlcbiAgICAgICAgICBhcnJbaV0gPSBhcnJbaV0gLyAxMDBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcnJbaV0gPSBOdW1iZXIoYXJyW2ldKVxuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIoYXJyW2ldKSA+IDEpIHtcbiAgICAgICAgICBhcnJbaV0gPSAxXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE51bWJlcihhcnJbaV0pIDwgMCkge1xuICAgICAgICAgIGFycltpXSA9IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChjLnN1YnN0cigwLCAzKSA9PSBcIm5jc1wiKSB7XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2ggPSBmYWxzZVxuICAgIGNvbG9ybmFtZXMgPSBnZXRDb2xvckFycihcIm5hbWVzXCIpXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbG9ybmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjLnRvTG93ZXJDYXNlKCkgPT0gY29sb3JuYW1lc1tpXS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNvbG9yaGV4cyA9IGdldENvbG9yQXJyKFwiaGV4c1wiKVxuICAgICAgICBtYXRjaCA9IHRydWVcbiAgICAgICAgcmdiID0ge1xuICAgICAgICAgIHI6IHBhcnNlSW50KGNvbG9yaGV4c1tpXS5zdWJzdHIoMCwgMiksIDE2KSxcbiAgICAgICAgICBnOiBwYXJzZUludChjb2xvcmhleHNbaV0uc3Vic3RyKDIsIDIpLCAxNiksXG4gICAgICAgICAgYjogcGFyc2VJbnQoY29sb3JoZXhzW2ldLnN1YnN0cig0LCAyKSwgMTYpLFxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXRjaCA9PSBmYWxzZSkge1xuICAgICAgYyA9IGMucmVwbGFjZShcIiNcIiwgXCJcIilcbiAgICAgIGlmIChjLmxlbmd0aCA9PSAzKSB7XG4gICAgICAgIGMgPVxuICAgICAgICAgIGMuc3Vic3RyKDAsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigwLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMSwgMSkgK1xuICAgICAgICAgIGMuc3Vic3RyKDEsIDEpICtcbiAgICAgICAgICBjLnN1YnN0cigyLCAxKSArXG4gICAgICAgICAgYy5zdWJzdHIoMiwgMSlcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7fVxuICAgICAgYXJyWzBdID0gcGFyc2VJbnQoYy5zdWJzdHIoMCwgMiksIDE2KVxuICAgICAgYXJyWzFdID0gcGFyc2VJbnQoYy5zdWJzdHIoMiwgMiksIDE2KVxuICAgICAgYXJyWzJdID0gcGFyc2VJbnQoYy5zdWJzdHIoNCwgMiksIDE2KVxuICAgICAgcmdiID0ge1xuICAgICAgICByOiBhcnJbMF0sXG4gICAgICAgIGc6IGFyclsxXSxcbiAgICAgICAgYjogYXJyWzJdLFxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmdiMmhzbChyZ2IuciwgcmdiLmcsIHJnYi5iKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDTyxJQUFNQSxPQUFPLEdBQUFDLE9B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USxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFB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