Greasy Fork

Less4_1_2_fixed

Less脚本的TM兼容版

目前为 2021-10-09 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/433620/977551/Less4_1_2_fixed.js

/**
 * Less - Leaner CSS v4.1.2
 * http://lesscss.org
 *
 * Copyright (c) 2009-2021, Alexis Sellier <[email protected]>
 * Licensed under the Apache-2.0 License.
 *
 * @license Apache-2.0
 */
!function (e, t) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).less = t()
}(this, (function () {
    "use strict";

    function e(e) {
        return e.replace(/^[a-z-]+:\/+?[^\/]+/, "").replace(/[\?\&]livereload=\w+/, "").replace(/^\//, "").replace(/\.[a-zA-Z]+$/, "").replace(/[^\.\w-]+/g, "-").replace(/\./g, ":")
    }

    function t(e, t) {
        // fix this for TM call
        if(t) {
            for (var i in t.dataset) if (t.dataset.hasOwnProperty(i)) if ("env" === i || "dumpLineNumbers" === i || "rootpath" === i || "errorReporting" === i) e[i] = t.dataset[i]; else try {
                e[i] = JSON.parse(t.dataset[i])
            } catch (e) {
            }
        }
    }

    var i = function (t, i, n) {
        var r = n.href || "", s = "less:" + (n.title || e(r)), o = t.getElementById(s), a = !1,
            l = t.createElement("style");
        l.setAttribute("type", "text/css"), n.media && l.setAttribute("media", n.media), l.id = s, l.styleSheet || (l.appendChild(t.createTextNode(i)), a = null !== o && o.childNodes.length > 0 && l.childNodes.length > 0 && o.firstChild.nodeValue === l.firstChild.nodeValue);
        var u = t.getElementsByTagName("head")[0];
        if (null === o || !1 === a) {
            var c = n && n.nextSibling || null;
            c ? c.parentNode.insertBefore(l, c) : u.appendChild(l)
        }
        if (o && !1 === a && o.parentNode.removeChild(o), l.styleSheet) try {
            l.styleSheet.cssText = i
        } catch (e) {
            throw new Error("Couldn't reassign styleSheet.cssText.")
        }
    }, n = function (e) {
        var t, i = e.document;
        return i.currentScript || (t = i.getElementsByTagName("script"))[t.length - 1]
    }, r = {
        error: function (e) {
            this._fireEvent("error", e)
        }, warn: function (e) {
            this._fireEvent("warn", e)
        }, info: function (e) {
            this._fireEvent("info", e)
        }, debug: function (e) {
            this._fireEvent("debug", e)
        }, addListener: function (e) {
            this._listeners.push(e)
        }, removeListener: function (e) {
            for (var t = 0; t < this._listeners.length; t++) if (this._listeners[t] === e) return void this._listeners.splice(t, 1)
        }, _fireEvent: function (e, t) {
            for (var i = 0; i < this._listeners.length; i++) {
                var n = this._listeners[i][e];
                n && n(t)
            }
        }, _listeners: []
    }, s = function () {
        function e(e, t) {
            this.fileManagers = t || [], e = e || {};
            for (var i = [], n = i.concat(["encodeBase64", "mimeLookup", "charsetLookup", "getSourceMapGenerator"]), r = 0; r < n.length; r++) {
                var s = n[r], o = e[s];
                o ? this[s] = o.bind(e) : r < i.length && this.warn("missing required function in environment - " + s)
            }
        }

        return e.prototype.getFileManager = function (e, t, i, n, s) {
            e || r.warn("getFileManager called with no filename.. Please report this issue. continuing."), null == t && r.warn("getFileManager called with null directory.. Please report this issue. continuing.");
            var o = this.fileManagers;
            i.pluginManager && (o = [].concat(o).concat(i.pluginManager.getFileManagers()));
            for (var a = o.length - 1; a >= 0; a--) {
                var l = o[a];
                if (l[s ? "supportsSync" : "supports"](e, t, i, n)) return l
            }
            return null
        }, e.prototype.addFileManager = function (e) {
            this.fileManagers.push(e)
        }, e.prototype.clearFileManagers = function () {
            this.fileManagers = []
        }, e
    }(), o = {
        aliceblue: "#f0f8ff",
        antiquewhite: "#faebd7",
        aqua: "#00ffff",
        aquamarine: "#7fffd4",
        azure: "#f0ffff",
        beige: "#f5f5dc",
        bisque: "#ffe4c4",
        black: "#000000",
        blanchedalmond: "#ffebcd",
        blue: "#0000ff",
        blueviolet: "#8a2be2",
        brown: "#a52a2a",
        burlywood: "#deb887",
        cadetblue: "#5f9ea0",
        chartreuse: "#7fff00",
        chocolate: "#d2691e",
        coral: "#ff7f50",
        cornflowerblue: "#6495ed",
        cornsilk: "#fff8dc",
        crimson: "#dc143c",
        cyan: "#00ffff",
        darkblue: "#00008b",
        darkcyan: "#008b8b",
        darkgoldenrod: "#b8860b",
        darkgray: "#a9a9a9",
        darkgrey: "#a9a9a9",
        darkgreen: "#006400",
        darkkhaki: "#bdb76b",
        darkmagenta: "#8b008b",
        darkolivegreen: "#556b2f",
        darkorange: "#ff8c00",
        darkorchid: "#9932cc",
        darkred: "#8b0000",
        darksalmon: "#e9967a",
        darkseagreen: "#8fbc8f",
        darkslateblue: "#483d8b",
        darkslategray: "#2f4f4f",
        darkslategrey: "#2f4f4f",
        darkturquoise: "#00ced1",
        darkviolet: "#9400d3",
        deeppink: "#ff1493",
        deepskyblue: "#00bfff",
        dimgray: "#696969",
        dimgrey: "#696969",
        dodgerblue: "#1e90ff",
        firebrick: "#b22222",
        floralwhite: "#fffaf0",
        forestgreen: "#228b22",
        fuchsia: "#ff00ff",
        gainsboro: "#dcdcdc",
        ghostwhite: "#f8f8ff",
        gold: "#ffd700",
        goldenrod: "#daa520",
        gray: "#808080",
        grey: "#808080",
        green: "#008000",
        greenyellow: "#adff2f",
        honeydew: "#f0fff0",
        hotpink: "#ff69b4",
        indianred: "#cd5c5c",
        indigo: "#4b0082",
        ivory: "#fffff0",
        khaki: "#f0e68c",
        lavender: "#e6e6fa",
        lavenderblush: "#fff0f5",
        lawngreen: "#7cfc00",
        lemonchiffon: "#fffacd",
        lightblue: "#add8e6",
        lightcoral: "#f08080",
        lightcyan: "#e0ffff",
        lightgoldenrodyellow: "#fafad2",
        lightgray: "#d3d3d3",
        lightgrey: "#d3d3d3",
        lightgreen: "#90ee90",
        lightpink: "#ffb6c1",
        lightsalmon: "#ffa07a",
        lightseagreen: "#20b2aa",
        lightskyblue: "#87cefa",
        lightslategray: "#778899",
        lightslategrey: "#778899",
        lightsteelblue: "#b0c4de",
        lightyellow: "#ffffe0",
        lime: "#00ff00",
        limegreen: "#32cd32",
        linen: "#faf0e6",
        magenta: "#ff00ff",
        maroon: "#800000",
        mediumaquamarine: "#66cdaa",
        mediumblue: "#0000cd",
        mediumorchid: "#ba55d3",
        mediumpurple: "#9370d8",
        mediumseagreen: "#3cb371",
        mediumslateblue: "#7b68ee",
        mediumspringgreen: "#00fa9a",
        mediumturquoise: "#48d1cc",
        mediumvioletred: "#c71585",
        midnightblue: "#191970",
        mintcream: "#f5fffa",
        mistyrose: "#ffe4e1",
        moccasin: "#ffe4b5",
        navajowhite: "#ffdead",
        navy: "#000080",
        oldlace: "#fdf5e6",
        olive: "#808000",
        olivedrab: "#6b8e23",
        orange: "#ffa500",
        orangered: "#ff4500",
        orchid: "#da70d6",
        palegoldenrod: "#eee8aa",
        palegreen: "#98fb98",
        paleturquoise: "#afeeee",
        palevioletred: "#d87093",
        papayawhip: "#ffefd5",
        peachpuff: "#ffdab9",
        peru: "#cd853f",
        pink: "#ffc0cb",
        plum: "#dda0dd",
        powderblue: "#b0e0e6",
        purple: "#800080",
        rebeccapurple: "#663399",
        red: "#ff0000",
        rosybrown: "#bc8f8f",
        royalblue: "#4169e1",
        saddlebrown: "#8b4513",
        salmon: "#fa8072",
        sandybrown: "#f4a460",
        seagreen: "#2e8b57",
        seashell: "#fff5ee",
        sienna: "#a0522d",
        silver: "#c0c0c0",
        skyblue: "#87ceeb",
        slateblue: "#6a5acd",
        slategray: "#708090",
        slategrey: "#708090",
        snow: "#fffafa",
        springgreen: "#00ff7f",
        steelblue: "#4682b4",
        tan: "#d2b48c",
        teal: "#008080",
        thistle: "#d8bfd8",
        tomato: "#ff6347",
        turquoise: "#40e0d0",
        violet: "#ee82ee",
        wheat: "#f5deb3",
        white: "#ffffff",
        whitesmoke: "#f5f5f5",
        yellow: "#ffff00",
        yellowgreen: "#9acd32"
    }, a = {
        length: {m: 1, cm: .01, mm: .001, in: .0254, px: .0254 / 96, pt: .0254 / 72, pc: .0254 / 72 * 12},
        duration: {s: 1, ms: .001},
        angle: {rad: 1 / (2 * Math.PI), deg: 1 / 360, grad: 1 / 400, turn: 1}
    }, l = {colors: o, unitConversions: a}, u = function () {
        function e() {
            this.parent = null, this.visibilityBlocks = void 0, this.nodeVisible = void 0, this.rootNode = null, this.parsed = null
        }

        return Object.defineProperty(e.prototype, "currentFileInfo", {
            get: function () {
                return this.fileInfo()
            }, enumerable: !1, configurable: !0
        }), Object.defineProperty(e.prototype, "index", {
            get: function () {
                return this.getIndex()
            }, enumerable: !1, configurable: !0
        }), e.prototype.setParent = function (t, i) {
            function n(t) {
                t && t instanceof e && (t.parent = i)
            }

            Array.isArray(t) ? t.forEach(n) : n(t)
        }, e.prototype.getIndex = function () {
            return this._index || this.parent && this.parent.getIndex() || 0
        }, e.prototype.fileInfo = function () {
            return this._fileInfo || this.parent && this.parent.fileInfo() || {}
        }, e.prototype.isRulesetLike = function () {
            return !1
        }, e.prototype.toCSS = function (e) {
            var t = [];
            return this.genCSS(e, {
                add: function (e, i, n) {
                    t.push(e)
                }, isEmpty: function () {
                    return 0 === t.length
                }
            }), t.join("")
        }, e.prototype.genCSS = function (e, t) {
            t.add(this.value)
        }, e.prototype.accept = function (e) {
            this.value = e.visit(this.value)
        }, e.prototype.eval = function () {
            return this
        }, e.prototype._operate = function (e, t, i, n) {
            switch (t) {
                case"+":
                    return i + n;
                case"-":
                    return i - n;
                case"*":
                    return i * n;
                case"/":
                    return i / n
            }
        }, e.prototype.fround = function (e, t) {
            var i = e && e.numPrecision;
            return i ? Number((t + 2e-16).toFixed(i)) : t
        }, e.compare = function (t, i) {
            if (t.compare && "Quoted" !== i.type && "Anonymous" !== i.type) return t.compare(i);
            if (i.compare) return -i.compare(t);
            if (t.type === i.type) {
                if (t = t.value, i = i.value, !Array.isArray(t)) return t === i ? 0 : void 0;
                if (t.length === i.length) {
                    for (var n = 0; n < t.length; n++) if (0 !== e.compare(t[n], i[n])) return;
                    return 0
                }
            }
        }, e.numericCompare = function (e, t) {
            return e < t ? -1 : e === t ? 0 : e > t ? 1 : void 0
        }, e.prototype.blocksVisibility = function () {
            return null == this.visibilityBlocks && (this.visibilityBlocks = 0), 0 !== this.visibilityBlocks
        }, e.prototype.addVisibilityBlock = function () {
            null == this.visibilityBlocks && (this.visibilityBlocks = 0), this.visibilityBlocks = this.visibilityBlocks + 1
        }, e.prototype.removeVisibilityBlock = function () {
            null == this.visibilityBlocks && (this.visibilityBlocks = 0), this.visibilityBlocks = this.visibilityBlocks - 1
        }, e.prototype.ensureVisibility = function () {
            this.nodeVisible = !0
        }, e.prototype.ensureInvisibility = function () {
            this.nodeVisible = !1
        }, e.prototype.isVisible = function () {
            return this.nodeVisible
        }, e.prototype.visibilityInfo = function () {
            return {visibilityBlocks: this.visibilityBlocks, nodeVisible: this.nodeVisible}
        }, e.prototype.copyVisibilityInfo = function (e) {
            e && (this.visibilityBlocks = e.visibilityBlocks, this.nodeVisible = e.nodeVisible)
        }, e
    }(), c = function (e, t, i) {
        var n = this;
        Array.isArray(e) ? this.rgb = e : e.length >= 6 ? (this.rgb = [], e.match(/.{2}/g).map((function (e, t) {
            t < 3 ? n.rgb.push(parseInt(e, 16)) : n.alpha = parseInt(e, 16) / 255
        }))) : (this.rgb = [], e.split("").map((function (e, t) {
            t < 3 ? n.rgb.push(parseInt(e + e, 16)) : n.alpha = parseInt(e + e, 16) / 255
        }))), this.alpha = this.alpha || ("number" == typeof t ? t : 1), void 0 !== i && (this.value = i)
    };

    function h(e, t) {
        return Math.min(Math.max(e, 0), t)
    }

    function f(e) {
        return "#" + e.map((function (e) {
            return ((e = h(Math.round(e), 255)) < 16 ? "0" : "") + e.toString(16)
        })).join("")
    }

    c.prototype = Object.assign(new u, {
        type: "Color", luma: function () {
            var e = this.rgb[0] / 255, t = this.rgb[1] / 255, i = this.rgb[2] / 255;
            return .2126 * (e = e <= .03928 ? e / 12.92 : Math.pow((e + .055) / 1.055, 2.4)) + .7152 * (t = t <= .03928 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4)) + .0722 * (i = i <= .03928 ? i / 12.92 : Math.pow((i + .055) / 1.055, 2.4))
        }, genCSS: function (e, t) {
            t.add(this.toCSS(e))
        }, toCSS: function (e, t) {
            var i, n, r, s = e && e.compress && !t, o = [];
            if (n = this.fround(e, this.alpha), this.value) if (0 === this.value.indexOf("rgb")) n < 1 && (r = "rgba"); else {
                if (0 !== this.value.indexOf("hsl")) return this.value;
                r = n < 1 ? "hsla" : "hsl"
            } else n < 1 && (r = "rgba");
            switch (r) {
                case"rgba":
                    o = this.rgb.map((function (e) {
                        return h(Math.round(e), 255)
                    })).concat(h(n, 1));
                    break;
                case"hsla":
                    o.push(h(n, 1));
                case"hsl":
                    i = this.toHSL(), o = [this.fround(e, i.h), this.fround(e, 100 * i.s) + "%", this.fround(e, 100 * i.l) + "%"].concat(o)
            }
            if (r) return r + "(" + o.join("," + (s ? "" : " ")) + ")";
            if (i = this.toRGB(), s) {
                var a = i.split("");
                a[1] === a[2] && a[3] === a[4] && a[5] === a[6] && (i = "#" + a[1] + a[3] + a[5])
            }
            return i
        }, operate: function (e, t, i) {
            for (var n = new Array(3), r = this.alpha * (1 - i.alpha) + i.alpha, s = 0; s < 3; s++) n[s] = this._operate(e, t, this.rgb[s], i.rgb[s]);
            return new c(n, r)
        }, toRGB: function () {
            return f(this.rgb)
        }, toHSL: function () {
            var e, t, i = this.rgb[0] / 255, n = this.rgb[1] / 255, r = this.rgb[2] / 255, s = this.alpha,
                o = Math.max(i, n, r), a = Math.min(i, n, r), l = (o + a) / 2, u = o - a;
            if (o === a) e = t = 0; else {
                switch (t = l > .5 ? u / (2 - o - a) : u / (o + a), o) {
                    case i:
                        e = (n - r) / u + (n < r ? 6 : 0);
                        break;
                    case n:
                        e = (r - i) / u + 2;
                        break;
                    case r:
                        e = (i - n) / u + 4
                }
                e /= 6
            }
            return {h: 360 * e, s: t, l: l, a: s}
        }, toHSV: function () {
            var e, t, i = this.rgb[0] / 255, n = this.rgb[1] / 255, r = this.rgb[2] / 255, s = this.alpha,
                o = Math.max(i, n, r), a = Math.min(i, n, r), l = o, u = o - a;
            if (t = 0 === o ? 0 : u / o, o === a) e = 0; else {
                switch (o) {
                    case i:
                        e = (n - r) / u + (n < r ? 6 : 0);
                        break;
                    case n:
                        e = (r - i) / u + 2;
                        break;
                    case r:
                        e = (i - n) / u + 4
                }
                e /= 6
            }
            return {h: 360 * e, s: t, v: l, a: s}
        }, toARGB: function () {
            return f([255 * this.alpha].concat(this.rgb))
        }, compare: function (e) {
            return e.rgb && e.rgb[0] === this.rgb[0] && e.rgb[1] === this.rgb[1] && e.rgb[2] === this.rgb[2] && e.alpha === this.alpha ? 0 : void 0
        }
    }), c.fromKeyword = function (e) {
        var t, i = e.toLowerCase();
        if (o.hasOwnProperty(i) ? t = new c(o[i].slice(1)) : "transparent" === i && (t = new c([0, 0, 0], 0)), t) return t.value = e, t
    };
    var p = function (e) {
        this.value = e
    };
    p.prototype = Object.assign(new u, {
        type: "Paren", genCSS: function (e, t) {
            t.add("("), this.value.genCSS(e, t), t.add(")")
        }, eval: function (e) {
            return new p(this.value.eval(e))
        }
    });
    var v = {"": !0, " ": !0, "|": !0}, d = function (e) {
        " " === e ? (this.value = " ", this.emptyOrWhitespace = !0) : (this.value = e ? e.trim() : "", this.emptyOrWhitespace = "" === this.value)
    };
    d.prototype = Object.assign(new u, {
        type: "Combinator", genCSS: function (e, t) {
            var i = e.compress || v[this.value] ? "" : " ";
            t.add(i + this.value + i)
        }
    });
    var m = function (e, t, i, n, r, s) {
        this.combinator = e instanceof d ? e : new d(e), this.value = "string" == typeof t ? t.trim() : t || "", this.isVariable = i, this._index = n, this._fileInfo = r, this.copyVisibilityInfo(s), this.setParent(this.combinator, this)
    };
    m.prototype = Object.assign(new u, {
        type: "Element", accept: function (e) {
            var t = this.value;
            this.combinator = e.visit(this.combinator), "object" == typeof t && (this.value = e.visit(t))
        }, eval: function (e) {
            return new m(this.combinator, this.value.eval ? this.value.eval(e) : this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo())
        }, clone: function () {
            return new m(this.combinator, this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo())
        }, genCSS: function (e, t) {
            t.add(this.toCSS(e), this.fileInfo(), this.getIndex())
        }, toCSS: function (e) {
            e = e || {};
            var t = this.value, i = e.firstSelector;
            return t instanceof p && (e.firstSelector = !0), t = t.toCSS ? t.toCSS(e) : t, e.firstSelector = i, "" === t && "&" === this.combinator.value.charAt(0) ? "" : this.combinator.toCSS(e) + t
        }
    });
    var g = {ALWAYS: 0, PARENS_DIVISION: 1, PARENS: 2}, y = 0, b = 1, w = 2;

    function x(e) {
        return Object.prototype.toString.call(e).slice(8, -1)
    }

    function S(e) {
        return "Array" === x(e)
    }

    function I(e, t) {
        return void 0 === t && (t = {}), S(e) ? e.map((function (e) {
            return I(e, t)
        })) : "Object" !== x(i = e) || i.constructor !== Object || Object.getPrototypeOf(i) !== Object.prototype ? e : function () {
            for (var e = 0, t = 0, i = arguments.length; t < i; t++) e += arguments[t].length;
            var n = Array(e), r = 0;
            for (t = 0; t < i; t++) for (var s = arguments[t], o = 0, a = s.length; o < a; o++, r++) n[r] = s[o];
            return n
        }(Object.getOwnPropertyNames(e), Object.getOwnPropertySymbols(e)).reduce((function (i, n) {
            return S(t.props) && !t.props.includes(n) || function (e, t, i, n, r) {
                var s = {}.propertyIsEnumerable.call(n, t) ? "enumerable" : "nonenumerable";
                "enumerable" === s && (e[t] = i), r && "nonenumerable" === s && Object.defineProperty(e, t, {
                    value: i,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                })
            }(i, n, I(e[n], t), e, t.nonenumerable), i
        }), {});
        var i
    }

    function C(e, t) {
        for (var i = e + 1, n = null, r = -1; --i >= 0 && "\n" !== t.charAt(i);) r++;
        return "number" == typeof e && (n = (t.slice(0, e).match(/\n/g) || "").length), {line: n, column: r}
    }

    function k(e) {
        var t, i = e.length, n = new Array(i);
        for (t = 0; t < i; t++) n[t] = e[t];
        return n
    }

    function _(e) {
        var t = {};
        for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
        return t
    }

    function A(e, t) {
        var i = t || {};
        if (!t._defaults) {
            i = {};
            var n = I(e);
            i._defaults = n;
            var r = t ? I(t) : {};
            Object.assign(i, n, r)
        }
        return i
    }

    function M(e, t) {
        if (t && t._defaults) return t;
        var i = A(e, t);
        if (i.strictMath && (i.math = g.PARENS), i.relativeUrls && (i.rewriteUrls = w), "string" == typeof i.math) switch (i.math.toLowerCase()) {
            case"always":
                i.math = g.ALWAYS;
                break;
            case"parens-division":
                i.math = g.PARENS_DIVISION;
                break;
            case"strict":
            case"parens":
                i.math = g.PARENS;
                break;
            default:
                i.math = g.PARENS
        }
        if ("string" == typeof i.rewriteUrls) switch (i.rewriteUrls.toLowerCase()) {
            case"off":
                i.rewriteUrls = y;
                break;
            case"local":
                i.rewriteUrls = b;
                break;
            case"all":
                i.rewriteUrls = w
        }
        return i
    }

    function E(e, t) {
        void 0 === t && (t = []);
        for (var i = 0, n = e.length; i < n; i++) {
            var r = e[i];
            Array.isArray(r) ? E(r, t) : void 0 !== r && t.push(r)
        }
        return t
    }

    var P = Object.freeze({
        __proto__: null,
        getLocation: C,
        copyArray: k,
        clone: _,
        defaults: A,
        copyOptions: M,
        merge: function (e, t) {
            for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]);
            return e
        },
        flattenArray: E
    }), R = /(<anonymous>|Function):(\d+):(\d+)/, O = function (e, t, i) {
        Error.call(this);
        var n = e.filename || i;
        if (this.message = e.message, this.stack = e.stack, t && n) {
            var r = t.contents[n], s = C(e.index, r), o = s.line, a = s.column, l = e.call && C(e.call, r).line,
                u = r ? r.split("\n") : "";
            if (this.type = e.type || "Syntax", this.filename = n, this.index = e.index, this.line = "number" == typeof o ? o + 1 : null, this.column = a, !this.line && this.stack) {
                var c = this.stack.match(R), h = new Function("a", "throw new Error()"), f = 0;
                try {
                    h()
                } catch (e) {
                    var p = e.stack.match(R);
                    f = 1 - (o = parseInt(p[2]))
                }
                c && (c[2] && (this.line = parseInt(c[2]) + f), c[3] && (this.column = parseInt(c[3])))
            }
            this.callLine = l + 1, this.callExtract = u[l], this.extract = [u[this.line - 2], u[this.line - 1], u[this.line]]
        }
    };
    if (void 0 === Object.create) {
        var V = function () {
        };
        V.prototype = Error.prototype, O.prototype = new V
    } else O.prototype = Object.create(Error.prototype);
    O.prototype.constructor = O, O.prototype.toString = function (e) {
        e = e || {};
        var t = "", i = this.extract || [], n = [], r = function (e) {
            return e
        };
        if (e.stylize) {
            var s = typeof e.stylize;
            if ("function" !== s) throw Error("options.stylize should be a function, got a " + s + "!");
            r = e.stylize
        }
        if (null !== this.line) {
            if ("string" == typeof i[0] && n.push(r(this.line - 1 + " " + i[0], "grey")), "string" == typeof i[1]) {
                var o = this.line + " ";
                i[1] && (o += i[1].slice(0, this.column) + r(r(r(i[1].substr(this.column, 1), "bold") + i[1].slice(this.column + 1), "red"), "inverse")), n.push(o)
            }
            "string" == typeof i[2] && n.push(r(this.line + 1 + " " + i[2], "grey")), n = n.join("\n") + r("", "reset") + "\n"
        }
        return t += r(this.type + "Error: " + this.message, "red"), this.filename && (t += r(" in ", "red") + this.filename), this.line && (t += r(" on line " + this.line + ", column " + (this.column + 1) + ":", "grey")), t += "\n" + n, this.callLine && (t += r("from ", "red") + (this.filename || "") + "/n", t += r(this.callLine, "grey") + " " + this.callExtract + "/n"), t
    };
    var F = function (e, t, i, n, r, s) {
        this.extendList = t, this.condition = i, this.evaldCondition = !i, this._index = n, this._fileInfo = r, this.elements = this.getElements(e), this.mixinElements_ = void 0, this.copyVisibilityInfo(s), this.setParent(this.elements, this)
    };
    F.prototype = Object.assign(new u, {
        type: "Selector", accept: function (e) {
            this.elements && (this.elements = e.visitArray(this.elements)), this.extendList && (this.extendList = e.visitArray(this.extendList)), this.condition && (this.condition = e.visit(this.condition))
        }, createDerived: function (e, t, i) {
            e = this.getElements(e);
            var n = new F(e, t || this.extendList, null, this.getIndex(), this.fileInfo(), this.visibilityInfo());
            return n.evaldCondition = null != i ? i : this.evaldCondition, n.mediaEmpty = this.mediaEmpty, n
        }, getElements: function (e) {
            return e ? ("string" == typeof e && this.parse.parseNode(e, ["selector"], this._index, this._fileInfo, (function (t, i) {
                if (t) throw new O({index: t.index, message: t.message}, this.parse.imports, this._fileInfo.filename);
                e = i[0].elements
            })), e) : [new m("", "&", !1, this._index, this._fileInfo)]
        }, createEmptySelectors: function () {
            var e = new m("", "&", !1, this._index, this._fileInfo),
                t = [new F([e], null, null, this._index, this._fileInfo)];
            return t[0].mediaEmpty = !0, t
        }, match: function (e) {
            var t, i, n = this.elements, r = n.length;
            if (0 === (t = (e = e.mixinElements()).length) || r < t) return 0;
            for (i = 0; i < t; i++) if (n[i].value !== e[i]) return 0;
            return t
        }, mixinElements: function () {
            if (this.mixinElements_) return this.mixinElements_;
            var e = this.elements.map((function (e) {
                return e.combinator.value + (e.value.value || e.value)
            })).join("").match(/[,&#\*\.\w-]([\w-]|(\\.))*/g);
            return e ? "&" === e[0] && e.shift() : e = [], this.mixinElements_ = e
        }, isJustParentSelector: function () {
            return !this.mediaEmpty && 1 === this.elements.length && "&" === this.elements[0].value && (" " === this.elements[0].combinator.value || "" === this.elements[0].combinator.value)
        }, eval: function (e) {
            var t = this.condition && this.condition.eval(e), i = this.elements, n = this.extendList;
            return i = i && i.map((function (t) {
                return t.eval(e)
            })), n = n && n.map((function (t) {
                return t.eval(e)
            })), this.createDerived(i, n, t)
        }, genCSS: function (e, t) {
            var i;
            for (e && e.firstSelector || "" !== this.elements[0].combinator.value || t.add(" ", this.fileInfo(), this.getIndex()), i = 0; i < this.elements.length; i++) this.elements[i].genCSS(e, t)
        }, getIsOutput: function () {
            return this.evaldCondition
        }
    });
    var $ = function (e) {
        if (!e) throw new Error("Value requires an array argument");
        Array.isArray(e) ? this.value = e : this.value = [e]
    };
    $.prototype = Object.assign(new u, {
        type: "Value", accept: function (e) {
            this.value && (this.value = e.visitArray(this.value))
        }, eval: function (e) {
            return 1 === this.value.length ? this.value[0].eval(e) : new $(this.value.map((function (t) {
                return t.eval(e)
            })))
        }, genCSS: function (e, t) {
            var i;
            for (i = 0; i < this.value.length; i++) this.value[i].genCSS(e, t), i + 1 < this.value.length && t.add(e && e.compress ? "," : ", ")
        }
    });
    var L = function (e) {
        this.value = e
    };
    L.prototype = Object.assign(new u, {
        type: "Keyword", genCSS: function (e, t) {
            if ("%" === this.value) throw{type: "Syntax", message: "Invalid % without number"};
            t.add(this.value)
        }
    }), L.True = new L("true"), L.False = new L("false");
    var j = function (e, t, i, n, r, s) {
        this.value = e, this._index = t, this._fileInfo = i, this.mapLines = n, this.rulesetLike = void 0 !== r && r, this.allowRoot = !0, this.copyVisibilityInfo(s)
    };
    j.prototype = Object.assign(new u, {
        type: "Anonymous", eval: function () {
            return new j(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo())
        }, compare: function (e) {
            return e.toCSS && this.toCSS() === e.toCSS() ? 0 : void 0
        }, isRulesetLike: function () {
            return this.rulesetLike
        }, genCSS: function (e, t) {
            this.nodeVisible = Boolean(this.value), this.nodeVisible && t.add(this.value, this._fileInfo, this._index, this.mapLines)
        }
    });
    var N = g;
    var D = function (e, t, i, n, r, s, o, a) {
        this.name = e, this.value = t instanceof u ? t : new $([t ? new j(t) : null]), this.important = i ? " " + i.trim() : "", this.merge = n, this._index = r, this._fileInfo = s, this.inline = o || !1, this.variable = void 0 !== a ? a : e.charAt && "@" === e.charAt(0), this.allowRoot = !0, this.setParent(this.value, this)
    };
    D.prototype = Object.assign(new u, {
        type: "Declaration", genCSS: function (e, t) {
            t.add(this.name + (e.compress ? ":" : ": "), this.fileInfo(), this.getIndex());
            try {
                this.value.genCSS(e, t)
            } catch (e) {
                throw e.index = this._index, e.filename = this._fileInfo.filename, e
            }
            t.add(this.important + (this.inline || e.lastRule && e.compress ? "" : ";"), this._fileInfo, this._index)
        }, eval: function (e) {
            var t, i, n = !1, r = this.name, s = this.variable;
            "string" != typeof r && (r = 1 === r.length && r[0] instanceof L ? r[0].value : function (e, t) {
                var i, n = "", r = t.length, s = {
                    add: function (e) {
                        n += e
                    }
                };
                for (i = 0; i < r; i++) t[i].eval(e).genCSS(e, s);
                return n
            }(e, r), s = !1), "font" === r && e.math === N.ALWAYS && (n = !0, t = e.math, e.math = N.PARENS_DIVISION);
            try {
                if (e.importantScope.push({}), i = this.value.eval(e), !this.variable && "DetachedRuleset" === i.type) throw{
                    message: "Rulesets cannot be evaluated on a property.",
                    index: this.getIndex(),
                    filename: this.fileInfo().filename
                };
                var o = this.important, a = e.importantScope.pop();
                return !o && a.important && (o = a.important), new D(r, i, o, this.merge, this.getIndex(), this.fileInfo(), this.inline, s)
            } catch (e) {
                throw"number" != typeof e.index && (e.index = this.getIndex(), e.filename = this.fileInfo().filename), e
            } finally {
                n && (e.math = t)
            }
        }, makeImportant: function () {
            return new D(this.name, this.value, "!important", this.merge, this.getIndex(), this.fileInfo(), this.inline)
        }
    });
    var B = function () {
        function e(t, i, n) {
            var r = "";
            if (t.dumpLineNumbers && !t.compress) switch (t.dumpLineNumbers) {
                case"comments":
                    r = e.asComment(i);
                    break;
                case"mediaquery":
                    r = e.asMediaQuery(i);
                    break;
                case"all":
                    r = e.asComment(i) + (n || "") + e.asMediaQuery(i)
            }
            return r
        }

        return e.asComment = function (e) {
            return "/* line " + e.debugInfo.lineNumber + ", " + e.debugInfo.fileName + " */\n"
        }, e.asMediaQuery = function (e) {
            var t = e.debugInfo.fileName;
            return /^[a-z]+:\/\//i.test(t) || (t = "file://" + t), "@media -sass-debug-info{filename{font-family:" + t.replace(/([.:\/\\])/g, (function (e) {
                return "\\" == e && (e = "/"), "\\" + e
            })) + "}line{font-family:\\00003" + e.debugInfo.lineNumber + "}}\n"
        }, e
    }(), U = function (e, t, i, n) {
        this.value = e, this.isLineComment = t, this._index = i, this._fileInfo = n, this.allowRoot = !0
    };
    U.prototype = Object.assign(new u, {
        type: "Comment", genCSS: function (e, t) {
            this.debugInfo && t.add(B(e, this), this.fileInfo(), this.getIndex()), t.add(this.value)
        }, isSilent: function (e) {
            var t = e.compress && "!" !== this.value[2];
            return this.isLineComment || t
        }
    });
    var q = {}, T = function (e, t, i) {
            if (e) for (var n = 0; n < i.length; n++) e.hasOwnProperty(i[n]) && (t[i[n]] = e[i[n]])
        },
        z = ["paths", "rewriteUrls", "rootpath", "strictImports", "insecure", "dumpLineNumbers", "compress", "syncImport", "chunkInput", "mime", "useFileCache", "processImports", "pluginManager"];
    q.Parse = function (e) {
        T(e, this, z), "string" == typeof this.paths && (this.paths = [this.paths])
    };
    var G = ["paths", "compress", "math", "strictUnits", "sourceMap", "importMultiple", "urlArgs", "javascriptEnabled", "pluginManager", "importantScope", "rewriteUrls"];

    function W(e) {
        return !/^(?:[a-z-]+:|\/|#)/i.test(e)
    }

    function J(e) {
        return "." === e.charAt(0)
    }

    q.Eval = function (e, t) {
        T(e, this, G), "string" == typeof this.paths && (this.paths = [this.paths]), this.frames = t || [], this.importantScope = this.importantScope || []
    }, q.Eval.prototype.enterCalc = function () {
        this.calcStack || (this.calcStack = []), this.calcStack.push(!0), this.inCalc = !0
    }, q.Eval.prototype.exitCalc = function () {
        this.calcStack.pop(), this.calcStack.length || (this.inCalc = !1)
    }, q.Eval.prototype.inParenthesis = function () {
        this.parensStack || (this.parensStack = []), this.parensStack.push(!0)
    }, q.Eval.prototype.outOfParenthesis = function () {
        this.parensStack.pop()
    }, q.Eval.prototype.inCalc = !1, q.Eval.prototype.mathOn = !0, q.Eval.prototype.isMathOn = function (e) {
        return !!this.mathOn && (!!("/" !== e || this.math === g.ALWAYS || this.parensStack && this.parensStack.length) && (!(this.math > g.PARENS_DIVISION) || this.parensStack && this.parensStack.length))
    }, q.Eval.prototype.pathRequiresRewrite = function (e) {
        return (this.rewriteUrls === b ? J : W)(e)
    }, q.Eval.prototype.rewritePath = function (e, t) {
        var i;
        return t = t || "", i = this.normalizePath(t + e), J(e) && W(t) && !1 === J(i) && (i = "./" + i), i
    }, q.Eval.prototype.normalizePath = function (e) {
        var t, i = e.split("/").reverse();
        for (e = []; 0 !== i.length;) switch (t = i.pop()) {
            case".":
                break;
            case"..":
                0 === e.length || ".." === e[e.length - 1] ? e.push(t) : e.pop();
                break;
            default:
                e.push(t)
        }
        return e.join("/")
    };
    var H = function e(t) {
        return {
            _data: {}, add: function (e, t) {
                e = e.toLowerCase(), this._data.hasOwnProperty(e), this._data[e] = t
            }, addMultiple: function (e) {
                var t = this;
                Object.keys(e).forEach((function (i) {
                    t.add(i, e[i])
                }))
            }, get: function (e) {
                return this._data[e] || t && t.get(e)
            }, getLocalFunctions: function () {
                return this._data
            }, inherit: function () {
                return e(this)
            }, create: function (t) {
                return e(t)
            }
        }
    }(null), Q = {
        eval: function () {
            var e = this.value_, t = this.error_;
            if (t) throw t;
            if (null != e) return e ? L.True : L.False
        }, value: function (e) {
            this.value_ = e
        }, error: function (e) {
            this.error_ = e
        }, reset: function () {
            this.value_ = this.error_ = null
        }
    }, K = function (e, t, i, n) {
        this.selectors = e, this.rules = t, this._lookups = {}, this._variables = null, this._properties = null, this.strictImports = i, this.copyVisibilityInfo(n), this.allowRoot = !0, this.setParent(this.selectors, this), this.setParent(this.rules, this)
    };
    K.prototype = Object.assign(new u, {
        type: "Ruleset", isRuleset: !0, isRulesetLike: function () {
            return !0
        }, accept: function (e) {
            this.paths ? this.paths = e.visitArray(this.paths, !0) : this.selectors && (this.selectors = e.visitArray(this.selectors)), this.rules && this.rules.length && (this.rules = e.visitArray(this.rules))
        }, eval: function (e) {
            var t, i, n, r, s, o = !1;
            if (this.selectors && (i = this.selectors.length)) {
                for (t = new Array(i), Q.error({
                    type: "Syntax",
                    message: "it is currently only allowed in parametric mixin guards,"
                }), r = 0; r < i; r++) {
                    n = this.selectors[r].eval(e);
                    for (var a = 0; a < n.elements.length; a++) if (n.elements[a].isVariable) {
                        s = !0;
                        break
                    }
                    t[r] = n, n.evaldCondition && (o = !0)
                }
                if (s) {
                    var l = new Array(i);
                    for (r = 0; r < i; r++) n = t[r], l[r] = n.toCSS(e);
                    this.parse.parseNode(l.join(","), ["selectors"], t[0].getIndex(), t[0].fileInfo(), (function (e, i) {
                        i && (t = E(i))
                    }))
                }
                Q.reset()
            } else o = !0;
            var c, h, f = this.rules ? k(this.rules) : null, p = new K(t, f, this.strictImports, this.visibilityInfo());
            p.originalRuleset = this, p.root = this.root, p.firstRoot = this.firstRoot, p.allowImports = this.allowImports, this.debugInfo && (p.debugInfo = this.debugInfo), o || (f.length = 0), p.functionRegistry = function (e) {
                for (var t, i = 0, n = e.length; i !== n; ++i) if (t = e[i].functionRegistry) return t;
                return H
            }(e.frames).inherit();
            var v = e.frames;
            v.unshift(p);
            var d = e.selectors;
            d || (e.selectors = d = []), d.unshift(this.selectors), (p.root || p.allowImports || !p.strictImports) && p.evalImports(e);
            var m = p.rules;
            for (r = 0; c = m[r]; r++) c.evalFirst && (m[r] = c.eval(e));
            var g = e.mediaBlocks && e.mediaBlocks.length || 0;
            for (r = 0; c = m[r]; r++) "MixinCall" === c.type ? (f = c.eval(e).filter((function (e) {
                return !(e instanceof D && e.variable) || !p.variable(e.name)
            })), m.splice.apply(m, [r, 1].concat(f)), r += f.length - 1, p.resetCache()) : "VariableCall" === c.type && (f = c.eval(e).rules.filter((function (e) {
                return !(e instanceof D && e.variable)
            })), m.splice.apply(m, [r, 1].concat(f)), r += f.length - 1, p.resetCache());
            for (r = 0; c = m[r]; r++) c.evalFirst || (m[r] = c = c.eval ? c.eval(e) : c);
            for (r = 0; c = m[r]; r++) if (c instanceof K && c.selectors && 1 === c.selectors.length && c.selectors[0] && c.selectors[0].isJustParentSelector()) {
                m.splice(r--, 1);
                for (a = 0; h = c.rules[a]; a++) h instanceof u && (h.copyVisibilityInfo(c.visibilityInfo()), h instanceof D && h.variable || m.splice(++r, 0, h))
            }
            if (v.shift(), d.shift(), e.mediaBlocks) for (r = g; r < e.mediaBlocks.length; r++) e.mediaBlocks[r].bubbleSelectors(t);
            return p
        }, evalImports: function (e) {
            var t, i, n = this.rules;
            if (n) for (t = 0; t < n.length; t++) "Import" === n[t].type && ((i = n[t].eval(e)) && (i.length || 0 === i.length) ? (n.splice.apply(n, [t, 1].concat(i)), t += i.length - 1) : n.splice(t, 1, i), this.resetCache())
        }, makeImportant: function () {
            return new K(this.selectors, this.rules.map((function (e) {
                return e.makeImportant ? e.makeImportant() : e
            })), this.strictImports, this.visibilityInfo())
        }, matchArgs: function (e) {
            return !e || 0 === e.length
        }, matchCondition: function (e, t) {
            var i = this.selectors[this.selectors.length - 1];
            return !!i.evaldCondition && !(i.condition && !i.condition.eval(new q.Eval(t, t.frames)))
        }, resetCache: function () {
            this._rulesets = null, this._variables = null, this._properties = null, this._lookups = {}
        }, variables: function () {
            return this._variables || (this._variables = this.rules ? this.rules.reduce((function (e, t) {
                if (t instanceof D && !0 === t.variable && (e[t.name] = t), "Import" === t.type && t.root && t.root.variables) {
                    var i = t.root.variables();
                    for (var n in i) i.hasOwnProperty(n) && (e[n] = t.root.variable(n))
                }
                return e
            }), {}) : {}), this._variables
        }, properties: function () {
            return this._properties || (this._properties = this.rules ? this.rules.reduce((function (e, t) {
                if (t instanceof D && !0 !== t.variable) {
                    var i = 1 === t.name.length && t.name[0] instanceof L ? t.name[0].value : t.name;
                    e["$" + i] ? e["$" + i].push(t) : e["$" + i] = [t]
                }
                return e
            }), {}) : {}), this._properties
        }, variable: function (e) {
            var t = this.variables()[e];
            if (t) return this.parseValue(t)
        }, property: function (e) {
            var t = this.properties()[e];
            if (t) return this.parseValue(t)
        }, lastDeclaration: function () {
            for (var e = this.rules.length; e > 0; e--) {
                var t = this.rules[e - 1];
                if (t instanceof D) return this.parseValue(t)
            }
        }, parseValue: function (e) {
            var t = this;

            function i(e) {
                return e.value instanceof j && !e.parsed ? ("string" == typeof e.value.value ? this.parse.parseNode(e.value.value, ["value", "important"], e.value.getIndex(), e.fileInfo(), (function (t, i) {
                    t && (e.parsed = !0), i && (e.value = i[0], e.important = i[1] || "", e.parsed = !0)
                })) : e.parsed = !0, e) : e
            }

            if (Array.isArray(e)) {
                var n = [];
                return e.forEach((function (e) {
                    n.push(i.call(t, e))
                })), n
            }
            return i.call(t, e)
        }, rulesets: function () {
            if (!this.rules) return [];
            var e, t, i = [], n = this.rules;
            for (e = 0; t = n[e]; e++) t.isRuleset && i.push(t);
            return i
        }, prependRule: function (e) {
            var t = this.rules;
            t ? t.unshift(e) : this.rules = [e], this.setParent(e, this)
        }, find: function (e, t, i) {
            t = t || this;
            var n, r, s = [], o = e.toCSS();
            return o in this._lookups ? this._lookups[o] : (this.rulesets().forEach((function (o) {
                if (o !== t) for (var a = 0; a < o.selectors.length; a++) if (n = e.match(o.selectors[a])) {
                    if (e.elements.length > n) {
                        if (!i || i(o)) {
                            r = o.find(new F(e.elements.slice(n)), t, i);
                            for (var l = 0; l < r.length; ++l) r[l].path.push(o);
                            Array.prototype.push.apply(s, r)
                        }
                    } else s.push({rule: o, path: []});
                    break
                }
            })), this._lookups[o] = s, s)
        }, genCSS: function (e, t) {
            var i, n, r, s, o, a = [];
            e.tabLevel = e.tabLevel || 0, this.root || e.tabLevel++;
            var l, u = e.compress ? "" : Array(e.tabLevel + 1).join("  "),
                c = e.compress ? "" : Array(e.tabLevel).join("  "), h = 0, f = 0;
            for (i = 0; s = this.rules[i]; i++) s instanceof U ? (f === i && f++, a.push(s)) : s.isCharset && s.isCharset() ? (a.splice(h, 0, s), h++, f++) : "Import" === s.type ? (a.splice(f, 0, s), f++) : a.push(s);
            if (a = [].concat(a), !this.root) {
                (r = B(e, this, c)) && (t.add(r), t.add(c));
                var p = this.paths, v = p.length, d = void 0;
                for (l = e.compress ? "," : ",\n" + c, i = 0; i < v; i++) if (d = (o = p[i]).length) for (i > 0 && t.add(l), e.firstSelector = !0, o[0].genCSS(e, t), e.firstSelector = !1, n = 1; n < d; n++) o[n].genCSS(e, t);
                t.add((e.compress ? "{" : " {\n") + u)
            }
            for (i = 0; s = a[i]; i++) {
                i + 1 === a.length && (e.lastRule = !0);
                var m = e.lastRule;
                s.isRulesetLike(s) && (e.lastRule = !1), s.genCSS ? s.genCSS(e, t) : s.value && t.add(s.value.toString()), e.lastRule = m, !e.lastRule && s.isVisible() ? t.add(e.compress ? "" : "\n" + u) : e.lastRule = !1
            }
            this.root || (t.add(e.compress ? "}" : "\n" + c + "}"), e.tabLevel--), t.isEmpty() || e.compress || !this.firstRoot || t.add("\n")
        }, joinSelectors: function (e, t, i) {
            for (var n = 0; n < i.length; n++) this.joinSelector(e, t, i[n])
        }, joinSelector: function (e, t, i) {
            function n(e, t) {
                var i, n;
                if (0 === e.length) i = new p(e[0]); else {
                    var r = new Array(e.length);
                    for (n = 0; n < e.length; n++) r[n] = new m(null, e[n], t.isVariable, t._index, t._fileInfo);
                    i = new p(new F(r))
                }
                return i
            }

            function r(e, t) {
                var i;
                return i = new m(null, e, t.isVariable, t._index, t._fileInfo), new F([i])
            }

            function s(e, t, i, n) {
                var r, s, o;
                if (r = [], e.length > 0 ? (s = (r = k(e)).pop(), o = n.createDerived(k(s.elements))) : o = n.createDerived([]), t.length > 0) {
                    var a = i.combinator, l = t[0].elements[0];
                    a.emptyOrWhitespace && !l.combinator.emptyOrWhitespace && (a = l.combinator), o.elements.push(new m(a, l.value, i.isVariable, i._index, i._fileInfo)), o.elements = o.elements.concat(t[0].elements.slice(1))
                }
                if (0 !== o.elements.length && r.push(o), t.length > 1) {
                    var u = t.slice(1);
                    u = u.map((function (e) {
                        return e.createDerived(e.elements, [])
                    })), r = r.concat(u)
                }
                return r
            }

            function o(e, t, i, n, r) {
                var o;
                for (o = 0; o < e.length; o++) {
                    var a = s(e[o], t, i, n);
                    r.push(a)
                }
                return r
            }

            function a(e, t) {
                var i, n;
                if (0 !== e.length) if (0 !== t.length) for (i = 0; n = t[i]; i++) n.length > 0 ? n[n.length - 1] = n[n.length - 1].createDerived(n[n.length - 1].elements.concat(e)) : n.push(new F(e)); else t.push([new F(e)])
            }

            function l(e, t) {
                var i = t.createDerived(t.elements, t.extendList, t.evaldCondition);
                return i.copyVisibilityInfo(e), i
            }

            var u, c;
            if (!function e(t, i, l) {
                var u, c, h, f, v, d, g, y, b, w, x, S, I = !1;
                for (f = [], v = [[]], u = 0; y = l.elements[u]; u++) if ("&" !== y.value) {
                    var C = (S = void 0, (x = y).value instanceof p && (S = x.value.value) instanceof F ? S : null);
                    if (null != C) {
                        a(f, v);
                        var k, _ = [], A = [];
                        for (k = e(_, i, C), I = I || k, h = 0; h < _.length; h++) {
                            o(v, [r(n(_[h], y), y)], y, l, A)
                        }
                        v = A, f = []
                    } else f.push(y)
                } else {
                    for (I = !0, d = [], a(f, v), c = 0; c < v.length; c++) if (g = v[c], 0 === i.length) g.length > 0 && g[0].elements.push(new m(y.combinator, "", y.isVariable, y._index, y._fileInfo)), d.push(g); else for (h = 0; h < i.length; h++) {
                        var M = s(g, i[h], y, l);
                        d.push(M)
                    }
                    v = d, f = []
                }
                for (a(f, v), u = 0; u < v.length; u++) (b = v[u].length) > 0 && (t.push(v[u]), w = v[u][b - 1], v[u][b - 1] = w.createDerived(w.elements, l.extendList));
                return I
            }(c = [], t, i)) if (t.length > 0) for (c = [], u = 0; u < t.length; u++) {
                var h = t[u].map(l.bind(this, i.visibilityInfo()));
                h.push(i), c.push(h)
            } else c = [[i]];
            for (u = 0; u < c.length; u++) e.push(c[u])
        }
    });
    var Z = function (e, t, i, n, r, s, o, a) {
        var l;
        if (this.name = e, this.value = t instanceof u ? t : t ? new j(t) : t, i) {
            for (Array.isArray(i) ? this.rules = i : (this.rules = [i], this.rules[0].selectors = new F([], null, null, n, r).createEmptySelectors()), l = 0; l < this.rules.length; l++) this.rules[l].allowImports = !0;
            this.setParent(this.rules, this)
        }
        this._index = n, this._fileInfo = r, this.debugInfo = s, this.isRooted = o || !1, this.copyVisibilityInfo(a), this.allowRoot = !0
    };
    Z.prototype = Object.assign(new u, {
        type: "AtRule", accept: function (e) {
            var t = this.value, i = this.rules;
            i && (this.rules = e.visitArray(i)), t && (this.value = e.visit(t))
        }, isRulesetLike: function () {
            return this.rules || !this.isCharset()
        }, isCharset: function () {
            return "@charset" === this.name
        }, genCSS: function (e, t) {
            var i = this.value, n = this.rules;
            t.add(this.name, this.fileInfo(), this.getIndex()), i && (t.add(" "), i.genCSS(e, t)), n ? this.outputRuleset(e, t, n) : t.add(";")
        }, eval: function (e) {
            var t, i, n = this.value, r = this.rules;
            return t = e.mediaPath, i = e.mediaBlocks, e.mediaPath = [], e.mediaBlocks = [], n && (n = n.eval(e)), r && ((r = [r[0].eval(e)])[0].root = !0), e.mediaPath = t, e.mediaBlocks = i, new Z(this.name, n, r, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo())
        }, variable: function (e) {
            if (this.rules) return K.prototype.variable.call(this.rules[0], e)
        }, find: function () {
            if (this.rules) return K.prototype.find.apply(this.rules[0], arguments)
        }, rulesets: function () {
            if (this.rules) return K.prototype.rulesets.apply(this.rules[0])
        }, outputRuleset: function (e, t, i) {
            var n, r = i.length;
            if (e.tabLevel = 1 + (0 | e.tabLevel), e.compress) {
                for (t.add("{"), n = 0; n < r; n++) i[n].genCSS(e, t);
                return t.add("}"), void e.tabLevel--
            }
            var s = "\n" + Array(e.tabLevel).join("  "), o = s + "  ";
            if (r) {
                for (t.add(" {" + o), i[0].genCSS(e, t), n = 1; n < r; n++) t.add(o), i[n].genCSS(e, t);
                t.add(s + "}")
            } else t.add(" {" + s + "}");
            e.tabLevel--
        }
    });
    var X = function (e, t) {
        this.ruleset = e, this.frames = t, this.setParent(this.ruleset, this)
    };
    X.prototype = Object.assign(new u, {
        type: "DetachedRuleset", evalFirst: !0, accept: function (e) {
            this.ruleset = e.visit(this.ruleset)
        }, eval: function (e) {
            var t = this.frames || k(e.frames);
            return new X(this.ruleset, t)
        }, callEval: function (e) {
            return this.ruleset.eval(this.frames ? new q.Eval(e, this.frames.concat(e.frames)) : e)
        }
    });
    var Y = function (e, t, i) {
        this.numerator = e ? k(e).sort() : [], this.denominator = t ? k(t).sort() : [], i ? this.backupUnit = i : e && e.length && (this.backupUnit = e[0])
    };
    Y.prototype = Object.assign(new u, {
        type: "Unit", clone: function () {
            return new Y(k(this.numerator), k(this.denominator), this.backupUnit)
        }, genCSS: function (e, t) {
            var i = e && e.strictUnits;
            1 === this.numerator.length ? t.add(this.numerator[0]) : !i && this.backupUnit ? t.add(this.backupUnit) : !i && this.denominator.length && t.add(this.denominator[0])
        }, toString: function () {
            var e, t = this.numerator.join("*");
            for (e = 0; e < this.denominator.length; e++) t += "/" + this.denominator[e];
            return t
        }, compare: function (e) {
            return this.is(e.toString()) ? 0 : void 0
        }, is: function (e) {
            return this.toString().toUpperCase() === e.toUpperCase()
        }, isLength: function () {
            return RegExp("^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$", "gi").test(this.toCSS())
        }, isEmpty: function () {
            return 0 === this.numerator.length && 0 === this.denominator.length
        }, isSingular: function () {
            return this.numerator.length <= 1 && 0 === this.denominator.length
        }, map: function (e) {
            var t;
            for (t = 0; t < this.numerator.length; t++) this.numerator[t] = e(this.numerator[t], !1);
            for (t = 0; t < this.denominator.length; t++) this.denominator[t] = e(this.denominator[t], !0)
        }, usedUnits: function () {
            var e, t, i, n = {};
            for (i in t = function (t) {
                return e.hasOwnProperty(t) && !n[i] && (n[i] = t), t
            }, a) a.hasOwnProperty(i) && (e = a[i], this.map(t));
            return n
        }, cancel: function () {
            var e, t, i = {};
            for (t = 0; t < this.numerator.length; t++) i[e = this.numerator[t]] = (i[e] || 0) + 1;
            for (t = 0; t < this.denominator.length; t++) i[e = this.denominator[t]] = (i[e] || 0) - 1;
            for (e in this.numerator = [], this.denominator = [], i) if (i.hasOwnProperty(e)) {
                var n = i[e];
                if (n > 0) for (t = 0; t < n; t++) this.numerator.push(e); else if (n < 0) for (t = 0; t < -n; t++) this.denominator.push(e)
            }
            this.numerator.sort(), this.denominator.sort()
        }
    });
    var ee = function (e, t) {
        if (this.value = parseFloat(e), isNaN(this.value)) throw new Error("Dimension is not a number.");
        this.unit = t && t instanceof Y ? t : new Y(t ? [t] : void 0), this.setParent(this.unit, this)
    };
    ee.prototype = Object.assign(new u, {
        type: "Dimension", accept: function (e) {
            this.unit = e.visit(this.unit)
        }, eval: function (e) {
            return this
        }, toColor: function () {
            return new c([this.value, this.value, this.value])
        }, genCSS: function (e, t) {
            if (e && e.strictUnits && !this.unit.isSingular()) throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString());
            var i = this.fround(e, this.value), n = String(i);
            if (0 !== i && i < 1e-6 && i > -1e-6 && (n = i.toFixed(20).replace(/0+$/, "")), e && e.compress) {
                if (0 === i && this.unit.isLength()) return void t.add(n);
                i > 0 && i < 1 && (n = n.substr(1))
            }
            t.add(n), this.unit.genCSS(e, t)
        }, operate: function (e, t, i) {
            var n = this._operate(e, t, this.value, i.value), r = this.unit.clone();
            if ("+" === t || "-" === t) if (0 === r.numerator.length && 0 === r.denominator.length) r = i.unit.clone(), this.unit.backupUnit && (r.backupUnit = this.unit.backupUnit); else if (0 === i.unit.numerator.length && 0 === r.denominator.length) ; else {
                if (i = i.convertTo(this.unit.usedUnits()), e.strictUnits && i.unit.toString() !== r.toString()) throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '" + r.toString() + "' and '" + i.unit.toString() + "'.");
                n = this._operate(e, t, this.value, i.value)
            } else "*" === t ? (r.numerator = r.numerator.concat(i.unit.numerator).sort(), r.denominator = r.denominator.concat(i.unit.denominator).sort(), r.cancel()) : "/" === t && (r.numerator = r.numerator.concat(i.unit.denominator).sort(), r.denominator = r.denominator.concat(i.unit.numerator).sort(), r.cancel());
            return new ee(n, r)
        }, compare: function (e) {
            var t, i;
            if (e instanceof ee) {
                if (this.unit.isEmpty() || e.unit.isEmpty()) t = this, i = e; else if (t = this.unify(), i = e.unify(), 0 !== t.unit.compare(i.unit)) return;
                return u.numericCompare(t.value, i.value)
            }
        }, unify: function () {
            return this.convertTo({length: "px", duration: "s", angle: "rad"})
        }, convertTo: function (e) {
            var t, i, n, r, s, o = this.value, l = this.unit.clone(), u = {};
            if ("string" == typeof e) {
                for (t in a) a[t].hasOwnProperty(e) && ((u = {})[t] = e);
                e = u
            }
            for (i in s = function (e, t) {
                return n.hasOwnProperty(e) ? (t ? o /= n[e] / n[r] : o *= n[e] / n[r], r) : e
            }, e) e.hasOwnProperty(i) && (r = e[i], n = a[i], l.map(s));
            return l.cancel(), new ee(o, l)
        }
    });
    var te = g, ie = function (e, t, i) {
        this.op = e.trim(), this.operands = t, this.isSpaced = i
    };
    ie.prototype = Object.assign(new u, {
        type: "Operation", accept: function (e) {
            this.operands = e.visitArray(this.operands)
        }, eval: function (e) {
            var t, i = this.operands[0].eval(e), n = this.operands[1].eval(e);
            if (e.isMathOn(this.op)) {
                if (t = "./" === this.op ? "/" : this.op, i instanceof ee && n instanceof c && (i = i.toColor()), n instanceof ee && i instanceof c && (n = n.toColor()), !i.operate || !n.operate) {
                    if ((i instanceof ie || n instanceof ie) && "/" === i.op && e.math === te.PARENS_DIVISION) return new ie(this.op, [i, n], this.isSpaced);
                    throw{type: "Operation", message: "Operation on an invalid type"}
                }
                return i.operate(e, t, n)
            }
            return new ie(this.op, [i, n], this.isSpaced)
        }, genCSS: function (e, t) {
            this.operands[0].genCSS(e, t), this.isSpaced && t.add(" "), t.add(this.op), this.isSpaced && t.add(" "), this.operands[1].genCSS(e, t)
        }
    });
    var ne = function (e, t) {
        if (this.value = e, this.noSpacing = t, !e) throw new Error("Expression requires an array parameter")
    };
    ne.prototype = Object.assign(new u, {
        type: "Expression", accept: function (e) {
            this.value = e.visitArray(this.value)
        }, eval: function (e) {
            var t, i = e.isMathOn(), n = this.parens, r = !1;
            return n && e.inParenthesis(), this.value.length > 1 ? t = new ne(this.value.map((function (t) {
                return t.eval ? t.eval(e) : t
            })), this.noSpacing) : 1 === this.value.length ? (!this.value[0].parens || this.value[0].parensInOp || e.inCalc || (r = !0), t = this.value[0].eval(e)) : t = this, n && e.outOfParenthesis(), !this.parens || !this.parensInOp || i || r || t instanceof ee || (t = new p(t)), t
        }, genCSS: function (e, t) {
            for (var i = 0; i < this.value.length; i++) this.value[i].genCSS(e, t), !this.noSpacing && i + 1 < this.value.length && t.add(" ")
        }, throwAwayComments: function () {
            this.value = this.value.filter((function (e) {
                return !(e instanceof U)
            }))
        }
    });
    var re = function () {
        function e(e, t, i, n) {
            this.name = e.toLowerCase(), this.index = i, this.context = t, this.currentFileInfo = n, this.func = t.frames[0].functionRegistry.get(this.name)
        }

        return e.prototype.isValid = function () {
            return Boolean(this.func)
        }, e.prototype.call = function (e) {
            var t = this;
            Array.isArray(e) || (e = [e]);
            var i = this.func.evalArgs;
            !1 !== i && (e = e.map((function (e) {
                return e.eval(t.context)
            })));
            var n = function (e) {
                return !("Comment" === e.type)
            };
            return e = e.filter(n).map((function (e) {
                if ("Expression" === e.type) {
                    var t = e.value.filter(n);
                    return 1 === t.length ? e.parens && "/" === t[0].op ? e : t[0] : new ne(t)
                }
                return e
            })), !1 === i ? this.func.apply(this, function (e, t, i) {
                if (i || 2 === arguments.length) for (var n, r = 0, s = t.length; r < s; r++) !n && r in t || (n || (n = Array.prototype.slice.call(t, 0, r)), n[r] = t[r]);
                return e.concat(n || t)
            }([this.context], e)) : this.func.apply(this, e)
        }, e
    }(), se = function (e, t, i, n) {
        this.name = e, this.args = t, this.calc = "calc" === e, this._index = i, this._fileInfo = n
    };
    se.prototype = Object.assign(new u, {
        type: "Call", accept: function (e) {
            this.args && (this.args = e.visitArray(this.args))
        }, eval: function (e) {
            var t = this, i = e.mathOn;
            e.mathOn = !this.calc, (this.calc || e.inCalc) && e.enterCalc();
            var n, r = function () {
                (t.calc || e.inCalc) && e.exitCalc(), e.mathOn = i
            }, s = new re(this.name, e, this.getIndex(), this.fileInfo());
            if (s.isValid()) try {
                n = s.call(this.args), r()
            } catch (e) {
                if (e.hasOwnProperty("line") && e.hasOwnProperty("column")) throw e;
                throw{
                    type: e.type || "Runtime",
                    message: "Error evaluating function `" + this.name + "`" + (e.message ? ": " + e.message : ""),
                    index: this.getIndex(),
                    filename: this.fileInfo().filename,
                    line: e.lineNumber,
                    column: e.columnNumber
                }
            }
            if (null != n) return n instanceof u || (n = new j(n && !0 !== n ? n.toString() : null)), n._index = this._index, n._fileInfo = this._fileInfo, n;
            var o = this.args.map((function (t) {
                return t.eval(e)
            }));
            return r(), new se(this.name, o, this.getIndex(), this.fileInfo())
        }, genCSS: function (e, t) {
            t.add(this.name + "(", this.fileInfo(), this.getIndex());
            for (var i = 0; i < this.args.length; i++) this.args[i].genCSS(e, t), i + 1 < this.args.length && t.add(", ");
            t.add(")")
        }
    });
    var oe = function (e, t, i) {
        this.name = e, this._index = t, this._fileInfo = i
    };
    oe.prototype = Object.assign(new u, {
        type: "Variable", eval: function (e) {
            var t, i = this.name;
            if (0 === i.indexOf("@@") && (i = "@" + new oe(i.slice(1), this.getIndex(), this.fileInfo()).eval(e).value), this.evaluating) throw{
                type: "Name",
                message: "Recursive variable definition for " + i,
                filename: this.fileInfo().filename,
                index: this.getIndex()
            };
            if (this.evaluating = !0, t = this.find(e.frames, (function (t) {
                var n = t.variable(i);
                if (n) {
                    if (n.important) e.importantScope[e.importantScope.length - 1].important = n.important;
                    return e.inCalc ? new se("_SELF", [n.value]).eval(e) : n.value.eval(e)
                }
            }))) return this.evaluating = !1, t;
            throw{
                type: "Name",
                message: "variable " + i + " is undefined",
                filename: this.fileInfo().filename,
                index: this.getIndex()
            }
        }, find: function (e, t) {
            for (var i = 0, n = void 0; i < e.length; i++) if (n = t.call(e, e[i])) return n;
            return null
        }
    });
    var ae = function (e, t, i) {
        this.name = e, this._index = t, this._fileInfo = i
    };
    ae.prototype = Object.assign(new u, {
        type: "Property", eval: function (e) {
            var t, i = this.name, n = e.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;
            if (this.evaluating) throw{
                type: "Name",
                message: "Recursive property reference for " + i,
                filename: this.fileInfo().filename,
                index: this.getIndex()
            };
            if (this.evaluating = !0, t = this.find(e.frames, (function (t) {
                var r, s = t.property(i);
                if (s) {
                    for (var o = 0; o < s.length; o++) r = s[o], s[o] = new D(r.name, r.value, r.important, r.merge, r.index, r.currentFileInfo, r.inline, r.variable);
                    if (n(s), (r = s[s.length - 1]).important) e.importantScope[e.importantScope.length - 1].important = r.important;
                    return r = r.value.eval(e)
                }
            }))) return this.evaluating = !1, t;
            throw{
                type: "Name",
                message: "Property '" + i + "' is undefined",
                filename: this.currentFileInfo.filename,
                index: this.index
            }
        }, find: function (e, t) {
            for (var i = 0, n = void 0; i < e.length; i++) if (n = t.call(e, e[i])) return n;
            return null
        }
    });
    var le = function (e, t, i) {
        this.key = e, this.op = t, this.value = i
    };
    le.prototype = Object.assign(new u, {
        type: "Attribute", eval: function (e) {
            return new le(this.key.eval ? this.key.eval(e) : this.key, this.op, this.value && this.value.eval ? this.value.eval(e) : this.value)
        }, genCSS: function (e, t) {
            t.add(this.toCSS(e))
        }, toCSS: function (e) {
            var t = this.key.toCSS ? this.key.toCSS(e) : this.key;
            return this.op && (t += this.op, t += this.value.toCSS ? this.value.toCSS(e) : this.value), "[" + t + "]"
        }
    });
    var ue = function (e, t, i, n, r) {
        this.escaped = null == i || i, this.value = t || "", this.quote = e.charAt(0), this._index = n, this._fileInfo = r, this.variableRegex = /@\{([\w-]+)\}/g, this.propRegex = /\$\{([\w-]+)\}/g, this.allowRoot = i
    };
    ue.prototype = Object.assign(new u, {
        type: "Quoted", genCSS: function (e, t) {
            this.escaped || t.add(this.quote, this.fileInfo(), this.getIndex()), t.add(this.value), this.escaped || t.add(this.quote)
        }, containsVariables: function () {
            return this.value.match(this.variableRegex)
        }, eval: function (e) {
            var t = this, i = this.value;

            function n(e, t, i) {
                var n = e;
                do {
                    e = n.toString(), n = e.replace(t, i)
                } while (e !== n);
                return n
            }

            return i = n(i, this.variableRegex, (function (i, n) {
                var r = new oe("@" + n, t.getIndex(), t.fileInfo()).eval(e, !0);
                return r instanceof ue ? r.value : r.toCSS()
            })), i = n(i, this.propRegex, (function (i, n) {
                var r = new ae("$" + n, t.getIndex(), t.fileInfo()).eval(e, !0);
                return r instanceof ue ? r.value : r.toCSS()
            })), new ue(this.quote + i + this.quote, i, this.escaped, this.getIndex(), this.fileInfo())
        }, compare: function (e) {
            return "Quoted" !== e.type || this.escaped || e.escaped ? e.toCSS && this.toCSS() === e.toCSS() ? 0 : void 0 : u.numericCompare(this.value, e.value)
        }
    });
    var ce = function (e, t, i, n) {
        this.value = e, this._index = t, this._fileInfo = i, this.isEvald = n
    };
    ce.prototype = Object.assign(new u, {
        type: "Url", accept: function (e) {
            this.value = e.visit(this.value)
        }, genCSS: function (e, t) {
            t.add("url("), this.value.genCSS(e, t), t.add(")")
        }, eval: function (e) {
            var t, i = this.value.eval(e);
            if (!this.isEvald && ("string" == typeof (t = this.fileInfo() && this.fileInfo().rootpath) && "string" == typeof i.value && e.pathRequiresRewrite(i.value) ? (i.quote || (t = t.replace(/[\(\)'"\s]/g, (function (e) {
                return "\\" + e
            }))), i.value = e.rewritePath(i.value, t)) : i.value = e.normalizePath(i.value), e.urlArgs && !i.value.match(/^\s*data:/))) {
                var n = (-1 === i.value.indexOf("?") ? "?" : "&") + e.urlArgs;
                -1 !== i.value.indexOf("#") ? i.value = i.value.replace("#", n + "#") : i.value += n
            }
            return new ce(i, this.getIndex(), this.fileInfo(), !0)
        }
    });
    var he = function (e, t, i, n, r) {
        this._index = i, this._fileInfo = n;
        var s = new F([], null, null, this._index, this._fileInfo).createEmptySelectors();
        this.features = new $(t), this.rules = [new K(s, e)], this.rules[0].allowImports = !0, this.copyVisibilityInfo(r), this.allowRoot = !0, this.setParent(s, this), this.setParent(this.features, this), this.setParent(this.rules, this)
    };
    he.prototype = Object.assign(new Z, {
        type: "Media", isRulesetLike: function () {
            return !0
        }, accept: function (e) {
            this.features && (this.features = e.visit(this.features)), this.rules && (this.rules = e.visitArray(this.rules))
        }, genCSS: function (e, t) {
            t.add("@media ", this._fileInfo, this._index), this.features.genCSS(e, t), this.outputRuleset(e, t, this.rules)
        }, eval: function (e) {
            e.mediaBlocks || (e.mediaBlocks = [], e.mediaPath = []);
            var t = new he(null, [], this._index, this._fileInfo, this.visibilityInfo());
            return this.debugInfo && (this.rules[0].debugInfo = this.debugInfo, t.debugInfo = this.debugInfo), t.features = this.features.eval(e), e.mediaPath.push(t), e.mediaBlocks.push(t), this.rules[0].functionRegistry = e.frames[0].functionRegistry.inherit(), e.frames.unshift(this.rules[0]), t.rules = [this.rules[0].eval(e)], e.frames.shift(), e.mediaPath.pop(), 0 === e.mediaPath.length ? t.evalTop(e) : t.evalNested(e)
        }, evalTop: function (e) {
            var t = this;
            if (e.mediaBlocks.length > 1) {
                var i = new F([], null, null, this.getIndex(), this.fileInfo()).createEmptySelectors();
                (t = new K(i, e.mediaBlocks)).multiMedia = !0, t.copyVisibilityInfo(this.visibilityInfo()), this.setParent(t, this)
            }
            return delete e.mediaBlocks, delete e.mediaPath, t
        }, evalNested: function (e) {
            var t, i, n = e.mediaPath.concat([this]);
            for (t = 0; t < n.length; t++) i = n[t].features instanceof $ ? n[t].features.value : n[t].features, n[t] = Array.isArray(i) ? i : [i];
            return this.features = new $(this.permute(n).map((function (e) {
                for (e = e.map((function (e) {
                    return e.toCSS ? e : new j(e)
                })), t = e.length - 1; t > 0; t--) e.splice(t, 0, new j("and"));
                return new ne(e)
            }))), this.setParent(this.features, this), new K([], [])
        }, permute: function (e) {
            if (0 === e.length) return [];
            if (1 === e.length) return e[0];
            for (var t = [], i = this.permute(e.slice(1)), n = 0; n < i.length; n++) for (var r = 0; r < e[0].length; r++) t.push([e[0][r]].concat(i[n]));
            return t
        }, bubbleSelectors: function (e) {
            e && (this.rules = [new K(k(e), [this.rules[0]])], this.setParent(this.rules, this))
        }
    });
    var fe = function (e, t, i, n, r, s) {
        if (this.options = i, this._index = n, this._fileInfo = r, this.path = e, this.features = t, this.allowRoot = !0, void 0 !== this.options.less || this.options.inline) this.css = !this.options.less || this.options.inline; else {
            var o = this.getPath();
            o && /[#\.\&\?]css([\?;].*)?$/.test(o) && (this.css = !0)
        }
        this.copyVisibilityInfo(s), this.setParent(this.features, this), this.setParent(this.path, this)
    };
    fe.prototype = Object.assign(new u, {
        type: "Import", accept: function (e) {
            this.features && (this.features = e.visit(this.features)), this.path = e.visit(this.path), this.options.isPlugin || this.options.inline || !this.root || (this.root = e.visit(this.root))
        }, genCSS: function (e, t) {
            this.css && void 0 === this.path._fileInfo.reference && (t.add("@import ", this._fileInfo, this._index), this.path.genCSS(e, t), this.features && (t.add(" "), this.features.genCSS(e, t)), t.add(";"))
        }, getPath: function () {
            return this.path instanceof ce ? this.path.value.value : this.path.value
        }, isVariableImport: function () {
            var e = this.path;
            return e instanceof ce && (e = e.value), !(e instanceof ue) || e.containsVariables()
        }, evalForImport: function (e) {
            var t = this.path;
            return t instanceof ce && (t = t.value), new fe(t.eval(e), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo())
        }, evalPath: function (e) {
            var t = this.path.eval(e), i = this._fileInfo;
            if (!(t instanceof ce)) {
                var n = t.value;
                i && n && e.pathRequiresRewrite(n) ? t.value = e.rewritePath(n, i.rootpath) : t.value = e.normalizePath(t.value)
            }
            return t
        }, eval: function (e) {
            var t = this.doEval(e);
            return (this.options.reference || this.blocksVisibility()) && (t.length || 0 === t.length ? t.forEach((function (e) {
                e.addVisibilityBlock()
            })) : t.addVisibilityBlock()), t
        }, doEval: function (e) {
            var t, i, n = this.features && this.features.eval(e);
            if (this.options.isPlugin) {
                if (this.root && this.root.eval) try {
                    this.root.eval(e)
                } catch (e) {
                    throw e.message = "Plugin error during evaluation", new O(e, this.root.imports, this.root.filename)
                }
                return (i = e.frames[0] && e.frames[0].functionRegistry) && this.root && this.root.functions && i.addMultiple(this.root.functions), []
            }
            if (this.skip && ("function" == typeof this.skip && (this.skip = this.skip()), this.skip)) return [];
            if (this.options.inline) {
                var r = new j(this.root, 0, {
                    filename: this.importedFilename,
                    reference: this.path._fileInfo && this.path._fileInfo.reference
                }, !0, !0);
                return this.features ? new he([r], this.features.value) : [r]
            }
            if (this.css) {
                var s = new fe(this.evalPath(e), n, this.options, this._index);
                if (!s.css && this.error) throw this.error;
                return s
            }
            return this.root ? ((t = new K(null, k(this.root.rules))).evalImports(e), this.features ? new he(t.rules, this.features.value) : t.rules) : []
        }
    });
    var pe = function () {
    };
    pe.prototype = Object.assign(new u, {
        evaluateJavaScript: function (e, t) {
            var i, n = this, r = {};
            if (!t.javascriptEnabled) throw{
                message: "Inline JavaScript is not enabled. Is it set in your options?",
                filename: this.fileInfo().filename,
                index: this.getIndex()
            };
            e = e.replace(/@\{([\w-]+)\}/g, (function (e, i) {
                return n.jsify(new oe("@" + i, n.getIndex(), n.fileInfo()).eval(t))
            }));
            try {
                e = new Function("return (" + e + ")")
            } catch (t) {
                throw{
                    message: "JavaScript evaluation error: " + t.message + " from `" + e + "`",
                    filename: this.fileInfo().filename,
                    index: this.getIndex()
                }
            }
            var s = t.frames[0].variables();
            for (var o in s) s.hasOwnProperty(o) && (r[o.slice(1)] = {
                value: s[o].value, toJS: function () {
                    return this.value.eval(t).toCSS()
                }
            });
            try {
                i = e.call(r)
            } catch (e) {
                throw{
                    message: "JavaScript evaluation error: '" + e.name + ": " + e.message.replace(/["]/g, "'") + "'",
                    filename: this.fileInfo().filename,
                    index: this.getIndex()
                }
            }
            return i
        }, jsify: function (e) {
            return Array.isArray(e.value) && e.value.length > 1 ? "[" + e.value.map((function (e) {
                return e.toCSS()
            })).join(", ") + "]" : e.toCSS()
        }
    });
    var ve = function (e, t, i, n) {
        this.escaped = t, this.expression = e, this._index = i, this._fileInfo = n
    };
    ve.prototype = Object.assign(new pe, {
        type: "JavaScript", eval: function (e) {
            var t = this.evaluateJavaScript(this.expression, e), i = typeof t;
            return "number" !== i || isNaN(t) ? "string" === i ? new ue('"' + t + '"', t, this.escaped, this._index) : Array.isArray(t) ? new j(t.join(", ")) : new j(t) : new ee(t)
        }
    });
    var de = function (e, t) {
        this.key = e, this.value = t
    };
    de.prototype = Object.assign(new u, {
        type: "Assignment", accept: function (e) {
            this.value = e.visit(this.value)
        }, eval: function (e) {
            return this.value.eval ? new de(this.key, this.value.eval(e)) : this
        }, genCSS: function (e, t) {
            t.add(this.key + "="), this.value.genCSS ? this.value.genCSS(e, t) : t.add(this.value)
        }
    });
    var me = function (e, t, i, n, r) {
        this.op = e.trim(), this.lvalue = t, this.rvalue = i, this._index = n, this.negate = r
    };
    me.prototype = Object.assign(new u, {
        type: "Condition", accept: function (e) {
            this.lvalue = e.visit(this.lvalue), this.rvalue = e.visit(this.rvalue)
        }, eval: function (e) {
            var t = function (e, t, i) {
                switch (e) {
                    case"and":
                        return t && i;
                    case"or":
                        return t || i;
                    default:
                        switch (u.compare(t, i)) {
                            case-1:
                                return "<" === e || "=<" === e || "<=" === e;
                            case 0:
                                return "=" === e || ">=" === e || "=<" === e || "<=" === e;
                            case 1:
                                return ">" === e || ">=" === e;
                            default:
                                return !1
                        }
                }
            }(this.op, this.lvalue.eval(e), this.rvalue.eval(e));
            return this.negate ? !t : t
        }
    });
    var ge = function (e) {
        this.value = e
    };
    ge.prototype = Object.assign(new u, {type: "UnicodeDescriptor"});
    var ye = function (e) {
        this.value = e
    };
    ye.prototype = Object.assign(new u, {
        type: "Negative", genCSS: function (e, t) {
            t.add("-"), this.value.genCSS(e, t)
        }, eval: function (e) {
            return e.isMathOn() ? new ie("*", [new ee(-1), this.value]).eval(e) : new ye(this.value.eval(e))
        }
    });
    var be = function (e, t, i, n, r) {
        switch (this.selector = e, this.option = t, this.object_id = be.next_id++, this.parent_ids = [this.object_id], this._index = i, this._fileInfo = n, this.copyVisibilityInfo(r), this.allowRoot = !0, t) {
            case"all":
                this.allowBefore = !0, this.allowAfter = !0;
                break;
            default:
                this.allowBefore = !1, this.allowAfter = !1
        }
        this.setParent(this.selector, this)
    };
    be.prototype = Object.assign(new u, {
        type: "Extend", accept: function (e) {
            this.selector = e.visit(this.selector)
        }, eval: function (e) {
            return new be(this.selector.eval(e), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo())
        }, clone: function (e) {
            return new be(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo())
        }, findSelfSelectors: function (e) {
            var t, i, n = [];
            for (t = 0; t < e.length; t++) i = e[t].elements, t > 0 && i.length && "" === i[0].combinator.value && (i[0].combinator.value = " "), n = n.concat(e[t].elements);
            this.selfSelectors = [new F(n)], this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())
        }
    }), be.next_id = 0;
    var we = function (e, t, i) {
        this.variable = e, this._index = t, this._fileInfo = i, this.allowRoot = !0
    };
    we.prototype = Object.assign(new u, {
        type: "VariableCall", eval: function (e) {
            var t, i = new oe(this.variable, this.getIndex(), this.fileInfo()).eval(e),
                n = new O({message: "Could not evaluate variable call " + this.variable});
            if (!i.ruleset) {
                if (i.rules) t = i; else if (Array.isArray(i)) t = new K("", i); else {
                    if (!Array.isArray(i.value)) throw n;
                    t = new K("", i.value)
                }
                i = new X(t)
            }
            if (i.ruleset) return i.callEval(e);
            throw n
        }
    });
    var xe = function (e, t, i, n) {
        this.value = e, this.lookups = t, this._index = i, this._fileInfo = n
    };
    xe.prototype = Object.assign(new u, {
        type: "NamespaceValue", eval: function (e) {
            var t, i, n = this.value.eval(e);
            for (t = 0; t < this.lookups.length; t++) {
                if (i = this.lookups[t], Array.isArray(n) && (n = new K([new F], n)), "" === i) n = n.lastDeclaration(); else if ("@" === i.charAt(0)) {
                    if ("@" === i.charAt(1) && (i = "@" + new oe(i.substr(1)).eval(e).value), n.variables && (n = n.variable(i)), !n) throw{
                        type: "Name",
                        message: "variable " + i + " not found",
                        filename: this.fileInfo().filename,
                        index: this.getIndex()
                    }
                } else {
                    if (i = "$@" === i.substring(0, 2) ? "$" + new oe(i.substr(1)).eval(e).value : "$" === i.charAt(0) ? i : "$" + i, n.properties && (n = n.property(i)), !n) throw{
                        type: "Name",
                        message: 'property "' + i.substr(1) + '" not found',
                        filename: this.fileInfo().filename,
                        index: this.getIndex()
                    };
                    n = n[n.length - 1]
                }
                n.value && (n = n.eval(e).value), n.ruleset && (n = n.ruleset.eval(e))
            }
            return n
        }
    });
    var Se = function (e, t, i, n, r, s, o) {
        this.name = e || "anonymous mixin", this.selectors = [new F([new m(null, e, !1, this._index, this._fileInfo)])], this.params = t, this.condition = n, this.variadic = r, this.arity = t.length, this.rules = i, this._lookups = {};
        var a = [];
        this.required = t.reduce((function (e, t) {
            return !t.name || t.name && !t.value ? e + 1 : (a.push(t.name), e)
        }), 0), this.optionalParameters = a, this.frames = s, this.copyVisibilityInfo(o), this.allowRoot = !0
    };
    Se.prototype = Object.assign(new K, {
        type: "MixinDefinition", evalFirst: !0, accept: function (e) {
            this.params && this.params.length && (this.params = e.visitArray(this.params)), this.rules = e.visitArray(this.rules), this.condition && (this.condition = e.visit(this.condition))
        }, evalParams: function (e, t, i, n) {
            var r, s, o, a, l, u, c, h, f = new K(null, null), p = k(this.params), v = 0;
            if (t.frames && t.frames[0] && t.frames[0].functionRegistry && (f.functionRegistry = t.frames[0].functionRegistry.inherit()), t = new q.Eval(t, [f].concat(t.frames)), i) for (v = (i = k(i)).length, o = 0; o < v; o++) if (u = (s = i[o]) && s.name) {
                for (c = !1, a = 0; a < p.length; a++) if (!n[a] && u === p[a].name) {
                    n[a] = s.value.eval(e), f.prependRule(new D(u, s.value.eval(e))), c = !0;
                    break
                }
                if (c) {
                    i.splice(o, 1), o--;
                    continue
                }
                throw{type: "Runtime", message: "Named argument for " + this.name + " " + i[o].name + " not found"}
            }
            for (h = 0, o = 0; o < p.length; o++) if (!n[o]) {
                if (s = i && i[h], u = p[o].name) if (p[o].variadic) {
                    for (r = [], a = h; a < v; a++) r.push(i[a].value.eval(e));
                    f.prependRule(new D(u, new ne(r).eval(e)))
                } else {
                    if (l = s && s.value) l = Array.isArray(l) ? new X(new K("", l)) : l.eval(e); else {
                        if (!p[o].value) throw{
                            type: "Runtime",
                            message: "wrong number of arguments for " + this.name + " (" + v + " for " + this.arity + ")"
                        };
                        l = p[o].value.eval(t), f.resetCache()
                    }
                    f.prependRule(new D(u, l)), n[o] = l
                }
                if (p[o].variadic && i) for (a = h; a < v; a++) n[a] = i[a].value.eval(e);
                h++
            }
            return f
        }, makeImportant: function () {
            var e = this.rules ? this.rules.map((function (e) {
                return e.makeImportant ? e.makeImportant(!0) : e
            })) : this.rules;
            return new Se(this.name, this.params, e, this.condition, this.variadic, this.frames)
        }, eval: function (e) {
            return new Se(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || k(e.frames))
        }, evalCall: function (e, t, i) {
            var n, r, s = [], o = this.frames ? this.frames.concat(e.frames) : e.frames,
                a = this.evalParams(e, new q.Eval(e, o), t, s);
            return a.prependRule(new D("@arguments", new ne(s).eval(e))), n = k(this.rules), (r = new K(null, n)).originalRuleset = this, r = r.eval(new q.Eval(e, [this, a].concat(o))), i && (r = r.makeImportant()), r
        }, matchCondition: function (e, t) {
            return !(this.condition && !this.condition.eval(new q.Eval(t, [this.evalParams(t, new q.Eval(t, this.frames ? this.frames.concat(t.frames) : t.frames), e, [])].concat(this.frames || []).concat(t.frames))))
        }, matchArgs: function (e, t) {
            var i, n = e && e.length || 0, r = this.optionalParameters, s = e ? e.reduce((function (e, t) {
                return r.indexOf(t.name) < 0 ? e + 1 : e
            }), 0) : 0;
            if (this.variadic) {
                if (s < this.required - 1) return !1
            } else {
                if (s < this.required) return !1;
                if (n > this.params.length) return !1
            }
            i = Math.min(s, this.arity);
            for (var o = 0; o < i; o++) if (!this.params[o].name && !this.params[o].variadic && e[o].value.eval(t).toCSS() != this.params[o].value.eval(t).toCSS()) return !1;
            return !0
        }
    });
    var Ie = function (e, t, i, n, r) {
        this.selector = new F(e), this.arguments = t || [], this._index = i, this._fileInfo = n, this.important = r, this.allowRoot = !0, this.setParent(this.selector, this)
    };
    Ie.prototype = Object.assign(new u, {
        type: "MixinCall", accept: function (e) {
            this.selector && (this.selector = e.visit(this.selector)), this.arguments.length && (this.arguments = e.visitArray(this.arguments))
        }, eval: function (e) {
            var t, i, n, r, s, o, a, l, u, c, h, f, p, v, d, m = [], g = [], y = !1, b = [], w = [];

            function x(t, i) {
                var n, r, s;
                for (n = 0; n < 2; n++) {
                    for (w[n] = !0, Q.value(n), r = 0; r < i.length && w[n]; r++) (s = i[r]).matchCondition && (w[n] = w[n] && s.matchCondition(null, e));
                    t.matchCondition && (w[n] = w[n] && t.matchCondition(m, e))
                }
                return w[0] || w[1] ? w[0] != w[1] ? w[1] ? 1 : 2 : 0 : -1
            }

            for (this.selector = this.selector.eval(e), o = 0; o < this.arguments.length; o++) if (s = (r = this.arguments[o]).value.eval(e), r.expand && Array.isArray(s.value)) for (s = s.value, a = 0; a < s.length; a++) m.push({value: s[a]}); else m.push({
                name: r.name,
                value: s
            });
            for (d = function (t) {
                return t.matchArgs(null, e)
            }, o = 0; o < e.frames.length; o++) if ((t = e.frames[o].find(this.selector, null, d)).length > 0) {
                for (c = !0, a = 0; a < t.length; a++) {
                    for (i = t[a].rule, n = t[a].path, u = !1, l = 0; l < e.frames.length; l++) if (!(i instanceof Se) && i === (e.frames[l].originalRuleset || e.frames[l])) {
                        u = !0;
                        break
                    }
                    u || i.matchArgs(m, e) && (-1 !== (h = {mixin: i, group: x(i, n)}).group && b.push(h), y = !0)
                }
                for (Q.reset(), p = [0, 0, 0], a = 0; a < b.length; a++) p[b[a].group]++;
                if (p[0] > 0) f = 2; else if (f = 1, p[1] + p[2] > 1) throw{
                    type: "Runtime",
                    message: "Ambiguous use of `default()` found when matching for `" + this.format(m) + "`",
                    index: this.getIndex(),
                    filename: this.fileInfo().filename
                };
                for (a = 0; a < b.length; a++) if (0 === (h = b[a].group) || h === f) try {
                    (i = b[a].mixin) instanceof Se || (v = i.originalRuleset || i, (i = new Se("", [], i.rules, null, !1, null, v.visibilityInfo())).originalRuleset = v);
                    var S = i.evalCall(e, m, this.important).rules;
                    this._setVisibilityToReplacement(S), Array.prototype.push.apply(g, S)
                } catch (e) {
                    throw{
                        message: e.message,
                        index: this.getIndex(),
                        filename: this.fileInfo().filename,
                        stack: e.stack
                    }
                }
                if (y) return g
            }
            throw c ? {
                type: "Runtime",
                message: "No matching definition was found for `" + this.format(m) + "`",
                index: this.getIndex(),
                filename: this.fileInfo().filename
            } : {
                type: "Name",
                message: this.selector.toCSS().trim() + " is undefined",
                index: this.getIndex(),
                filename: this.fileInfo().filename
            }
        }, _setVisibilityToReplacement: function (e) {
            var t;
            if (this.blocksVisibility()) for (t = 0; t < e.length; t++) e[t].addVisibilityBlock()
        }, format: function (e) {
            return this.selector.toCSS().trim() + "(" + (e ? e.map((function (e) {
                var t = "";
                return e.name && (t += e.name + ":"), e.value.toCSS ? t += e.value.toCSS() : t += "???", t
            })).join(", ") : "") + ")"
        }
    });
    var Ce = {
        Node: u,
        Color: c,
        AtRule: Z,
        DetachedRuleset: X,
        Operation: ie,
        Dimension: ee,
        Unit: Y,
        Keyword: L,
        Variable: oe,
        Property: ae,
        Ruleset: K,
        Element: m,
        Attribute: le,
        Combinator: d,
        Selector: F,
        Quoted: ue,
        Expression: ne,
        Declaration: D,
        Call: se,
        URL: ce,
        Import: fe,
        Comment: U,
        Anonymous: j,
        Value: $,
        JavaScript: ve,
        Assignment: de,
        Condition: me,
        Paren: p,
        Media: he,
        UnicodeDescriptor: ge,
        Negative: ye,
        Extend: be,
        VariableCall: we,
        NamespaceValue: xe,
        mixin: {Call: Ie, Definition: Se}
    }, ke = function () {
        function e() {
        }

        return e.prototype.getPath = function (e) {
            var t = e.lastIndexOf("?");
            return t > 0 && (e = e.slice(0, t)), (t = e.lastIndexOf("/")) < 0 && (t = e.lastIndexOf("\\")), t < 0 ? "" : e.slice(0, t + 1)
        }, e.prototype.tryAppendExtension = function (e, t) {
            return /(\.[a-z]*$)|([\?;].*)$/.test(e) ? e : e + t
        }, e.prototype.tryAppendLessExtension = function (e) {
            return this.tryAppendExtension(e, ".less")
        }, e.prototype.supportsSync = function () {
            return !1
        }, e.prototype.alwaysMakePathsAbsolute = function () {
            return !1
        }, e.prototype.isPathAbsolute = function (e) {
            return /^(?:[a-z-]+:|\/|\\|#)/i.test(e)
        }, e.prototype.join = function (e, t) {
            return e ? e + t : t
        }, e.prototype.pathDiff = function (e, t) {
            var i, n, r, s, o = this.extractUrlParts(e), a = this.extractUrlParts(t), l = "";
            if (o.hostPart !== a.hostPart) return "";
            for (n = Math.max(a.directories.length, o.directories.length), i = 0; i < n && a.directories[i] === o.directories[i]; i++) ;
            for (s = a.directories.slice(i), r = o.directories.slice(i), i = 0; i < s.length - 1; i++) l += "../";
            for (i = 0; i < r.length - 1; i++) l += r[i] + "/";
            return l
        }, e.prototype.extractUrlParts = function (e, t) {
            var i, n,
                r = /^((?:[a-z-]+:)?\/{2}(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i,
                s = e.match(r), o = {}, a = [], l = [];
            if (!s) throw new Error("Could not parse sheet href - '" + e + "'");
            if (t && (!s[1] || s[2])) {
                if (!(n = t.match(r))) throw new Error("Could not parse page url - '" + t + "'");
                s[1] = s[1] || n[1] || "", s[2] || (s[3] = n[3] + s[3])
            }
            if (s[3]) for (a = s[3].replace(/\\/g, "/").split("/"), i = 0; i < a.length; i++) ".." === a[i] ? l.pop() : "." !== a[i] && l.push(a[i]);
            return o.hostPart = s[1], o.directories = l, o.rawPath = (s[1] || "") + a.join("/"), o.path = (s[1] || "") + l.join("/"), o.filename = s[4], o.fileUrl = o.path + (s[4] || ""), o.url = o.fileUrl + (s[5] || ""), o
        }, e
    }(), _e = function () {
        function e() {
            this.require = function () {
                return null
            }
        }

        return e.prototype.evalPlugin = function (e, t, i, n, r) {
            var s, o, a, l, u, c;
            l = t.pluginManager, r && (u = "string" == typeof r ? r : r.filename);
            var h = (new this.less.FileManager).extractUrlParts(u).filename;
            if (u && (o = l.get(u))) {
                if (c = this.trySetOptions(o, u, h, n)) return c;
                try {
                    o.use && o.use.call(this.context, o)
                } catch (e) {
                    return e.message = e.message || "Error during @plugin call", new O(e, i, u)
                }
                return o
            }
            a = {exports: {}, pluginManager: l, fileInfo: r}, s = H.create();
            try {
                new Function("module", "require", "registerPlugin", "functions", "tree", "less", "fileInfo", e)(a, this.require(u), (function (e) {
                    o = e
                }), s, this.less.tree, this.less, r)
            } catch (e) {
                return new O(e, i, u)
            }
            if (o || (o = a.exports), (o = this.validatePlugin(o, u, h)) instanceof O) return o;
            if (!o) return new O({message: "Not a valid plugin"}, i, u);
            if (o.imports = i, o.filename = u, (!o.minVersion || this.compareVersion("3.0.0", o.minVersion) < 0) && (c = this.trySetOptions(o, u, h, n))) return c;
            if (l.addPlugin(o, r.filename, s), o.functions = s.getLocalFunctions(), c = this.trySetOptions(o, u, h, n)) return c;
            try {
                o.use && o.use.call(this.context, o)
            } catch (e) {
                return e.message = e.message || "Error during @plugin call", new O(e, i, u)
            }
            return o
        }, e.prototype.trySetOptions = function (e, t, i, n) {
            if (n && !e.setOptions) return new O({message: "Options have been provided but the plugin " + i + " does not support any options."});
            try {
                e.setOptions && e.setOptions(n)
            } catch (e) {
                return new O(e)
            }
        }, e.prototype.validatePlugin = function (e, t, i) {
            return e ? ("function" == typeof e && (e = new e), e.minVersion && this.compareVersion(e.minVersion, this.less.version) < 0 ? new O({message: "Plugin " + i + " requires version " + this.versionToString(e.minVersion)}) : e) : null
        }, e.prototype.compareVersion = function (e, t) {
            "string" == typeof e && (e = e.match(/^(\d+)\.?(\d+)?\.?(\d+)?/)).shift();
            for (var i = 0; i < e.length; i++) if (e[i] !== t[i]) return parseInt(e[i]) > parseInt(t[i]) ? -1 : 1;
            return 0
        }, e.prototype.versionToString = function (e) {
            for (var t = "", i = 0; i < e.length; i++) t += (t ? "." : "") + e[i];
            return t
        }, e.prototype.printUsage = function (e) {
            for (var t = 0; t < e.length; t++) {
                var i = e[t];
                i.printUsage && i.printUsage()
            }
        }, e
    }(), Ae = {visitDeeper: !0}, Me = !1;

    function Ee(e) {
        return e
    }

    var Pe = function () {
        function e(e) {
            this._implementation = e, this._visitInCache = {}, this._visitOutCache = {}, Me || (!function e(t, i) {
                var n, r;
                for (n in t) switch (typeof (r = t[n])) {
                    case"function":
                        r.prototype && r.prototype.type && (r.prototype.typeIndex = i++);
                        break;
                    case"object":
                        i = e(r, i)
                }
                return i
            }(Ce, 1), Me = !0)
        }

        return e.prototype.visit = function (e) {
            if (!e) return e;
            var t = e.typeIndex;
            if (!t) return e.value && e.value.typeIndex && this.visit(e.value), e;
            var i, n = this._implementation, r = this._visitInCache[t], s = this._visitOutCache[t], o = Ae;
            if (o.visitDeeper = !0, r || (r = n[i = "visit" + e.type] || Ee, s = n[i + "Out"] || Ee, this._visitInCache[t] = r, this._visitOutCache[t] = s), r !== Ee) {
                var a = r.call(n, e, o);
                e && n.isReplacing && (e = a)
            }
            if (o.visitDeeper && e) if (e.length) for (var l = 0, u = e.length; l < u; l++) e[l].accept && e[l].accept(this); else e.accept && e.accept(this);
            return s != Ee && s.call(n, e), e
        }, e.prototype.visitArray = function (e, t) {
            if (!e) return e;
            var i, n = e.length;
            if (t || !this._implementation.isReplacing) {
                for (i = 0; i < n; i++) this.visit(e[i]);
                return e
            }
            var r = [];
            for (i = 0; i < n; i++) {
                var s = this.visit(e[i]);
                void 0 !== s && (s.splice ? s.length && this.flatten(s, r) : r.push(s))
            }
            return r
        }, e.prototype.flatten = function (e, t) {
            var i, n, r, s, o, a;
            for (t || (t = []), n = 0, i = e.length; n < i; n++) if (void 0 !== (r = e[n])) if (r.splice) for (o = 0, s = r.length; o < s; o++) void 0 !== (a = r[o]) && (a.splice ? a.length && this.flatten(a, t) : t.push(a)); else t.push(r);
            return t
        }, e
    }(), Re = function () {
        function e(e) {
            this.imports = [], this.variableImports = [], this._onSequencerEmpty = e, this._currentDepth = 0
        }

        return e.prototype.addImport = function (e) {
            var t = this, i = {callback: e, args: null, isReady: !1};
            return this.imports.push(i), function () {
                i.args = Array.prototype.slice.call(arguments, 0), i.isReady = !0, t.tryRun()
            }
        }, e.prototype.addVariableImport = function (e) {
            this.variableImports.push(e)
        }, e.prototype.tryRun = function () {
            this._currentDepth++;
            try {
                for (; ;) {
                    for (; this.imports.length > 0;) {
                        var e = this.imports[0];
                        if (!e.isReady) return;
                        this.imports = this.imports.slice(1), e.callback.apply(null, e.args)
                    }
                    if (0 === this.variableImports.length) break;
                    var t = this.variableImports[0];
                    this.variableImports = this.variableImports.slice(1), t()
                }
            } finally {
                this._currentDepth--
            }
            0 === this._currentDepth && this._onSequencerEmpty && this._onSequencerEmpty()
        }, e
    }(), Oe = function (e, t) {
        this._visitor = new Pe(this), this._importer = e, this._finish = t, this.context = new q.Eval, this.importCount = 0, this.onceFileDetectionMap = {}, this.recursionDetector = {}, this._sequencer = new Re(this._onSequencerEmpty.bind(this))
    };
    Oe.prototype = {
        isReplacing: !1, run: function (e) {
            try {
                this._visitor.visit(e)
            } catch (e) {
                this.error = e
            }
            this.isFinished = !0, this._sequencer.tryRun()
        }, _onSequencerEmpty: function () {
            this.isFinished && this._finish(this.error)
        }, visitImport: function (e, t) {
            var i = e.options.inline;
            if (!e.css || i) {
                var n = new q.Eval(this.context, k(this.context.frames)), r = n.frames[0];
                this.importCount++, e.isVariableImport() ? this._sequencer.addVariableImport(this.processImportNode.bind(this, e, n, r)) : this.processImportNode(e, n, r)
            }
            t.visitDeeper = !1
        }, processImportNode: function (e, t, i) {
            var n, r = e.options.inline;
            try {
                n = e.evalForImport(t)
            } catch (t) {
                t.filename || (t.index = e.getIndex(), t.filename = e.fileInfo().filename), e.css = !0, e.error = t
            }
            if (!n || n.css && !r) this.importCount--, this.isFinished && this._sequencer.tryRun(); else {
                n.options.multiple && (t.importMultiple = !0);
                for (var s = void 0 === n.css, o = 0; o < i.rules.length; o++) if (i.rules[o] === e) {
                    i.rules[o] = n;
                    break
                }
                var a = this.onImported.bind(this, n, t), l = this._sequencer.addImport(a);
                this._importer.push(n.getPath(), s, n.fileInfo(), n.options, l)
            }
        }, onImported: function (e, t, i, n, r, s) {
            i && (i.filename || (i.index = e.getIndex(), i.filename = e.fileInfo().filename), this.error = i);
            var o = this, a = e.options.inline, l = e.options.isPlugin, u = e.options.optional,
                c = r || s in o.recursionDetector;
            if (t.importMultiple || (e.skip = !!c || function () {
                return s in o.onceFileDetectionMap || (o.onceFileDetectionMap[s] = !0, !1)
            }), !s && u && (e.skip = !0), n && (e.root = n, e.importedFilename = s, !a && !l && (t.importMultiple || !c))) {
                o.recursionDetector[s] = !0;
                var h = this.context;
                this.context = t;
                try {
                    this._visitor.visit(n)
                } catch (i) {
                    this.error = i
                }
                this.context = h
            }
            o.importCount--, o.isFinished && o._sequencer.tryRun()
        }, visitDeclaration: function (e, t) {
            "DetachedRuleset" === e.value.type ? this.context.frames.unshift(e) : t.visitDeeper = !1
        }, visitDeclarationOut: function (e) {
            "DetachedRuleset" === e.value.type && this.context.frames.shift()
        }, visitAtRule: function (e, t) {
            this.context.frames.unshift(e)
        }, visitAtRuleOut: function (e) {
            this.context.frames.shift()
        }, visitMixinDefinition: function (e, t) {
            this.context.frames.unshift(e)
        }, visitMixinDefinitionOut: function (e) {
            this.context.frames.shift()
        }, visitRuleset: function (e, t) {
            this.context.frames.unshift(e)
        }, visitRulesetOut: function (e) {
            this.context.frames.shift()
        }, visitMedia: function (e, t) {
            this.context.frames.unshift(e.rules[0])
        }, visitMediaOut: function (e) {
            this.context.frames.shift()
        }
    };
    var Ve = function () {
        function e(e) {
            this.visible = e
        }

        return e.prototype.run = function (e) {
            this.visit(e)
        }, e.prototype.visitArray = function (e) {
            if (!e) return e;
            var t, i = e.length;
            for (t = 0; t < i; t++) this.visit(e[t]);
            return e
        }, e.prototype.visit = function (e) {
            return e ? e.constructor === Array ? this.visitArray(e) : (!e.blocksVisibility || e.blocksVisibility() || (this.visible ? e.ensureVisibility() : e.ensureInvisibility(), e.accept(this)), e) : e
        }, e
    }(), Fe = function () {
        function e() {
            this._visitor = new Pe(this), this.contexts = [], this.allExtendsStack = [[]]
        }

        return e.prototype.run = function (e) {
            return (e = this._visitor.visit(e)).allExtends = this.allExtendsStack[0], e
        }, e.prototype.visitDeclaration = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitMixinDefinition = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitRuleset = function (e, t) {
            if (!e.root) {
                var i, n, r, s, o = [], a = e.rules, l = a ? a.length : 0;
                for (i = 0; i < l; i++) e.rules[i] instanceof Ce.Extend && (o.push(a[i]), e.extendOnEveryPath = !0);
                var u = e.paths;
                for (i = 0; i < u.length; i++) {
                    var c = u[i], h = c[c.length - 1].extendList;
                    for ((s = h ? k(h).concat(o) : o) && (s = s.map((function (e) {
                        return e.clone()
                    }))), n = 0; n < s.length; n++) this.foundExtends = !0, (r = s[n]).findSelfSelectors(c), r.ruleset = e, 0 === n && (r.firstExtendOnThisSelectorPath = !0), this.allExtendsStack[this.allExtendsStack.length - 1].push(r)
                }
                this.contexts.push(e.selectors)
            }
        }, e.prototype.visitRulesetOut = function (e) {
            e.root || (this.contexts.length = this.contexts.length - 1)
        }, e.prototype.visitMedia = function (e, t) {
            e.allExtends = [], this.allExtendsStack.push(e.allExtends)
        }, e.prototype.visitMediaOut = function (e) {
            this.allExtendsStack.length = this.allExtendsStack.length - 1
        }, e.prototype.visitAtRule = function (e, t) {
            e.allExtends = [], this.allExtendsStack.push(e.allExtends)
        }, e.prototype.visitAtRuleOut = function (e) {
            this.allExtendsStack.length = this.allExtendsStack.length - 1
        }, e
    }(), $e = function () {
        function e() {
            this._visitor = new Pe(this)
        }

        return e.prototype.run = function (e) {
            var t = new Fe;
            if (this.extendIndices = {}, t.run(e), !t.foundExtends) return e;
            e.allExtends = e.allExtends.concat(this.doExtendChaining(e.allExtends, e.allExtends)), this.allExtendsStack = [e.allExtends];
            var i = this._visitor.visit(e);
            return this.checkExtendsForNonMatched(e.allExtends), i
        }, e.prototype.checkExtendsForNonMatched = function (e) {
            var t = this.extendIndices;
            e.filter((function (e) {
                return !e.hasFoundMatches && 1 == e.parent_ids.length
            })).forEach((function (e) {
                var i = "_unknown_";
                try {
                    i = e.selector.toCSS({})
                } catch (e) {
                }
                t[e.index + " " + i] || (t[e.index + " " + i] = !0, r.warn("extend '" + i + "' has no matches"))
            }))
        }, e.prototype.doExtendChaining = function (e, t, i) {
            var n, r, s, o, a, l, u, c, h = [], f = this;
            for (i = i || 0, n = 0; n < e.length; n++) for (r = 0; r < t.length; r++) l = e[n], u = t[r], l.parent_ids.indexOf(u.object_id) >= 0 || (a = [u.selfSelectors[0]], (s = f.findMatch(l, a)).length && (l.hasFoundMatches = !0, l.selfSelectors.forEach((function (e) {
                var t = u.visibilityInfo();
                o = f.extendSelector(s, a, e, l.isVisible()), (c = new Ce.Extend(u.selector, u.option, 0, u.fileInfo(), t)).selfSelectors = o, o[o.length - 1].extendList = [c], h.push(c), c.ruleset = u.ruleset, c.parent_ids = c.parent_ids.concat(u.parent_ids, l.parent_ids), u.firstExtendOnThisSelectorPath && (c.firstExtendOnThisSelectorPath = !0, u.ruleset.paths.push(o))
            }))));
            if (h.length) {
                if (this.extendChainCount++, i > 100) {
                    var p = "{unable to calculate}", v = "{unable to calculate}";
                    try {
                        p = h[0].selfSelectors[0].toCSS(), v = h[0].selector.toCSS()
                    } catch (e) {
                    }
                    throw{message: "extend circular reference detected. One of the circular extends is currently:" + p + ":extend(" + v + ")"}
                }
                return h.concat(f.doExtendChaining(h, t, i + 1))
            }
            return h
        }, e.prototype.visitDeclaration = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitMixinDefinition = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitSelector = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitRuleset = function (e, t) {
            if (!e.root) {
                var i, n, r, s, o = this.allExtendsStack[this.allExtendsStack.length - 1], a = [], l = this;
                for (r = 0; r < o.length; r++) for (n = 0; n < e.paths.length; n++) if (s = e.paths[n], !e.extendOnEveryPath) {
                    var u = s[s.length - 1].extendList;
                    u && u.length || (i = this.findMatch(o[r], s)).length && (o[r].hasFoundMatches = !0, o[r].selfSelectors.forEach((function (e) {
                        var t;
                        t = l.extendSelector(i, s, e, o[r].isVisible()), a.push(t)
                    })))
                }
                e.paths = e.paths.concat(a)
            }
        }, e.prototype.findMatch = function (e, t) {
            var i, n, r, s, o, a, l, u = e.selector.elements, c = [], h = [];
            for (i = 0; i < t.length; i++) for (n = t[i], r = 0; r < n.elements.length; r++) for (s = n.elements[r], (e.allowBefore || 0 === i && 0 === r) && c.push({
                pathIndex: i,
                index: r,
                matched: 0,
                initialCombinator: s.combinator
            }), a = 0; a < c.length; a++) l = c[a], "" === (o = s.combinator.value) && 0 === r && (o = " "), !this.isElementValuesEqual(u[l.matched].value, s.value) || l.matched > 0 && u[l.matched].combinator.value !== o ? l = null : l.matched++, l && (l.finished = l.matched === u.length, l.finished && !e.allowAfter && (r + 1 < n.elements.length || i + 1 < t.length) && (l = null)), l ? l.finished && (l.length = u.length, l.endPathIndex = i, l.endPathElementIndex = r + 1, c.length = 0, h.push(l)) : (c.splice(a, 1), a--);
            return h
        }, e.prototype.isElementValuesEqual = function (e, t) {
            if ("string" == typeof e || "string" == typeof t) return e === t;
            if (e instanceof Ce.Attribute) return e.op === t.op && e.key === t.key && (e.value && t.value ? (e = e.value.value || e.value) === (t = t.value.value || t.value) : !e.value && !t.value);
            if (e = e.value, t = t.value, e instanceof Ce.Selector) {
                if (!(t instanceof Ce.Selector) || e.elements.length !== t.elements.length) return !1;
                for (var i = 0; i < e.elements.length; i++) {
                    if (e.elements[i].combinator.value !== t.elements[i].combinator.value && (0 !== i || (e.elements[i].combinator.value || " ") !== (t.elements[i].combinator.value || " "))) return !1;
                    if (!this.isElementValuesEqual(e.elements[i].value, t.elements[i].value)) return !1
                }
                return !0
            }
            return !1
        }, e.prototype.extendSelector = function (e, t, i, n) {
            var r, s, o, a, l, u = 0, c = 0, h = [];
            for (r = 0; r < e.length; r++) s = t[(a = e[r]).pathIndex], o = new Ce.Element(a.initialCombinator, i.elements[0].value, i.elements[0].isVariable, i.elements[0].getIndex(), i.elements[0].fileInfo()), a.pathIndex > u && c > 0 && (h[h.length - 1].elements = h[h.length - 1].elements.concat(t[u].elements.slice(c)), c = 0, u++), l = s.elements.slice(c, a.index).concat([o]).concat(i.elements.slice(1)), u === a.pathIndex && r > 0 ? h[h.length - 1].elements = h[h.length - 1].elements.concat(l) : (h = h.concat(t.slice(u, a.pathIndex))).push(new Ce.Selector(l)), u = a.endPathIndex, (c = a.endPathElementIndex) >= t[u].elements.length && (c = 0, u++);
            return u < t.length && c > 0 && (h[h.length - 1].elements = h[h.length - 1].elements.concat(t[u].elements.slice(c)), u++), h = (h = h.concat(t.slice(u, t.length))).map((function (e) {
                var t = e.createDerived(e.elements);
                return n ? t.ensureVisibility() : t.ensureInvisibility(), t
            }))
        }, e.prototype.visitMedia = function (e, t) {
            var i = e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
            i = i.concat(this.doExtendChaining(i, e.allExtends)), this.allExtendsStack.push(i)
        }, e.prototype.visitMediaOut = function (e) {
            var t = this.allExtendsStack.length - 1;
            this.allExtendsStack.length = t
        }, e.prototype.visitAtRule = function (e, t) {
            var i = e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
            i = i.concat(this.doExtendChaining(i, e.allExtends)), this.allExtendsStack.push(i)
        }, e.prototype.visitAtRuleOut = function (e) {
            var t = this.allExtendsStack.length - 1;
            this.allExtendsStack.length = t
        }, e
    }(), Le = function () {
        function e() {
            this.contexts = [[]], this._visitor = new Pe(this)
        }

        return e.prototype.run = function (e) {
            return this._visitor.visit(e)
        }, e.prototype.visitDeclaration = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitMixinDefinition = function (e, t) {
            t.visitDeeper = !1
        }, e.prototype.visitRuleset = function (e, t) {
            var i, n = this.contexts[this.contexts.length - 1], r = [];
            this.contexts.push(r), e.root || ((i = e.selectors) && (i = i.filter((function (e) {
                return e.getIsOutput()
            })), e.selectors = i.length ? i : i = null, i && e.joinSelectors(r, n, i)), i || (e.rules = null), e.paths = r)
        }, e.prototype.visitRulesetOut = function (e) {
            this.contexts.length = this.contexts.length - 1
        }, e.prototype.visitMedia = function (e, t) {
            var i = this.contexts[this.contexts.length - 1];
            e.rules[0].root = 0 === i.length || i[0].multiMedia
        }, e.prototype.visitAtRule = function (e, t) {
            var i = this.contexts[this.contexts.length - 1];
            e.rules && e.rules.length && (e.rules[0].root = e.isRooted || 0 === i.length || null)
        }, e
    }(), je = function () {
        function e(e) {
            this._visitor = new Pe(this), this._context = e
        }

        return e.prototype.containsSilentNonBlockedChild = function (e) {
            var t;
            if (!e) return !1;
            for (var i = 0; i < e.length; i++) if ((t = e[i]).isSilent && t.isSilent(this._context) && !t.blocksVisibility()) return !0;
            return !1
        }, e.prototype.keepOnlyVisibleChilds = function (e) {
            e && e.rules && (e.rules = e.rules.filter((function (e) {
                return e.isVisible()
            })))
        }, e.prototype.isEmpty = function (e) {
            return !e || !e.rules || 0 === e.rules.length
        }, e.prototype.hasVisibleSelector = function (e) {
            return !(!e || !e.paths) && e.paths.length > 0
        }, e.prototype.resolveVisibility = function (e, t) {
            if (!e.blocksVisibility()) {
                if (this.isEmpty(e) && !this.containsSilentNonBlockedChild(t)) return;
                return e
            }
            var i = e.rules[0];
            if (this.keepOnlyVisibleChilds(i), !this.isEmpty(i)) return e.ensureVisibility(), e.removeVisibilityBlock(), e
        }, e.prototype.isVisibleRuleset = function (e) {
            return !!e.firstRoot || !this.isEmpty(e) && !(!e.root && !this.hasVisibleSelector(e))
        }, e
    }(), Ne = function (e) {
        this._visitor = new Pe(this), this._context = e, this.utils = new je(e)
    };
    Ne.prototype = {
        isReplacing: !0, run: function (e) {
            return this._visitor.visit(e)
        }, visitDeclaration: function (e, t) {
            if (!e.blocksVisibility() && !e.variable) return e
        }, visitMixinDefinition: function (e, t) {
            e.frames = []
        }, visitExtend: function (e, t) {
        }, visitComment: function (e, t) {
            if (!e.blocksVisibility() && !e.isSilent(this._context)) return e
        }, visitMedia: function (e, t) {
            var i = e.rules[0].rules;
            return e.accept(this._visitor), t.visitDeeper = !1, this.utils.resolveVisibility(e, i)
        }, visitImport: function (e, t) {
            if (!e.blocksVisibility()) return e
        }, visitAtRule: function (e, t) {
            return e.rules && e.rules.length ? this.visitAtRuleWithBody(e, t) : this.visitAtRuleWithoutBody(e, t)
        }, visitAnonymous: function (e, t) {
            if (!e.blocksVisibility()) return e.accept(this._visitor), e
        }, visitAtRuleWithBody: function (e, t) {
            var i = function (e) {
                var t = e.rules;
                return function (e) {
                    var t = e.rules;
                    return 1 === t.length && (!t[0].paths || 0 === t[0].paths.length)
                }(e) ? t[0].rules : t
            }(e);
            return e.accept(this._visitor), t.visitDeeper = !1, this.utils.isEmpty(e) || this._mergeRules(e.rules[0].rules), this.utils.resolveVisibility(e, i)
        }, visitAtRuleWithoutBody: function (e, t) {
            if (!e.blocksVisibility()) {
                if ("@charset" === e.name) {
                    if (this.charset) {
                        if (e.debugInfo) {
                            var i = new Ce.Comment("/* " + e.toCSS(this._context).replace(/\n/g, "") + " */\n");
                            return i.debugInfo = e.debugInfo, this._visitor.visit(i)
                        }
                        return
                    }
                    this.charset = !0
                }
                return e
            }
        }, checkValidNodes: function (e, t) {
            if (e) for (var i = 0; i < e.length; i++) {
                var n = e[i];
                if (t && n instanceof Ce.Declaration && !n.variable) throw{
                    message: "Properties must be inside selector blocks. They cannot be in the root",
                    index: n.getIndex(),
                    filename: n.fileInfo() && n.fileInfo().filename
                };
                if (n instanceof Ce.Call) throw{
                    message: "Function '" + n.name + "' did not return a root node",
                    index: n.getIndex(),
                    filename: n.fileInfo() && n.fileInfo().filename
                };
                if (n.type && !n.allowRoot) throw{
                    message: n.type + " node returned by a function is not valid here",
                    index: n.getIndex(),
                    filename: n.fileInfo() && n.fileInfo().filename
                }
            }
        }, visitRuleset: function (e, t) {
            var i, n = [];
            if (this.checkValidNodes(e.rules, e.firstRoot), e.root) e.accept(this._visitor), t.visitDeeper = !1; else {
                this._compileRulesetPaths(e);
                for (var r = e.rules, s = r ? r.length : 0, o = 0; o < s;) (i = r[o]) && i.rules ? (n.push(this._visitor.visit(i)), r.splice(o, 1), s--) : o++;
                s > 0 ? e.accept(this._visitor) : e.rules = null, t.visitDeeper = !1
            }
            return e.rules && (this._mergeRules(e.rules), this._removeDuplicateRules(e.rules)), this.utils.isVisibleRuleset(e) && (e.ensureVisibility(), n.splice(0, 0, e)), 1 === n.length ? n[0] : n
        }, _compileRulesetPaths: function (e) {
            e.paths && (e.paths = e.paths.filter((function (e) {
                var t;
                for (" " === e[0].elements[0].combinator.value && (e[0].elements[0].combinator = new Ce.Combinator("")), t = 0; t < e.length; t++) if (e[t].isVisible() && e[t].getIsOutput()) return !0;
                return !1
            })))
        }, _removeDuplicateRules: function (e) {
            if (e) {
                var t, i, n, r = {};
                for (n = e.length - 1; n >= 0; n--) if ((i = e[n]) instanceof Ce.Declaration) if (r[i.name]) {
                    (t = r[i.name]) instanceof Ce.Declaration && (t = r[i.name] = [r[i.name].toCSS(this._context)]);
                    var s = i.toCSS(this._context);
                    -1 !== t.indexOf(s) ? e.splice(n, 1) : t.push(s)
                } else r[i.name] = i
            }
        }, _mergeRules: function (e) {
            if (e) {
                for (var t = {}, i = [], n = 0; n < e.length; n++) {
                    var r = e[n];
                    if (r.merge) {
                        var s = r.name;
                        t[s] ? e.splice(n--, 1) : i.push(t[s] = []), t[s].push(r)
                    }
                }
                i.forEach((function (e) {
                    if (e.length > 0) {
                        var t = e[0], i = [], n = [new Ce.Expression(i)];
                        e.forEach((function (e) {
                            "+" === e.merge && i.length > 0 && n.push(new Ce.Expression(i = [])), i.push(e.value), t.important = t.important || e.important
                        })), t.value = new Ce.Value(n)
                    }
                }))
            }
        }
    };
    var De = {
        Visitor: Pe,
        ImportVisitor: Oe,
        MarkVisibleSelectorsVisitor: Ve,
        ExtendVisitor: $e,
        JoinSelectorVisitor: Le,
        ToCSSVisitor: Ne
    };
    var Be = function () {
        var e, t, i, n, r, s, o, a = [], l = {};

        function u(i) {
            for (var n, a, c, h = l.i, f = t, p = l.i - o, v = l.i + s.length - p, d = l.i += i, m = e; l.i < v; l.i++) {
                if (n = m.charCodeAt(l.i), l.autoCommentAbsorb && 47 === n) {
                    if ("/" === (a = m.charAt(l.i + 1))) {
                        c = {index: l.i, isLineComment: !0};
                        var g = m.indexOf("\n", l.i + 2);
                        g < 0 && (g = v), l.i = g, c.text = m.substr(c.index, l.i - c.index), l.commentStore.push(c);
                        continue
                    }
                    if ("*" === a) {
                        var y = m.indexOf("*/", l.i + 2);
                        if (y >= 0) {
                            c = {
                                index: l.i,
                                text: m.substr(l.i, y + 2 - l.i),
                                isLineComment: !1
                            }, l.i += c.text.length - 1, l.commentStore.push(c);
                            continue
                        }
                    }
                    break
                }
                if (32 !== n && 10 !== n && 9 !== n && 13 !== n) break
            }
            if (s = s.slice(i + l.i - d + p), o = l.i, !s.length) {
                if (t < r.length - 1) return s = r[++t], u(0), !0;
                l.finished = !0
            }
            return h !== l.i || f !== t
        }

        return l.save = function () {
            o = l.i, a.push({current: s, i: l.i, j: t})
        }, l.restore = function (e) {
            (l.i > i || l.i === i && e && !n) && (i = l.i, n = e);
            var r = a.pop();
            s = r.current, o = l.i = r.i, t = r.j
        }, l.forget = function () {
            a.pop()
        }, l.isWhitespace = function (t) {
            var i = l.i + (t || 0), n = e.charCodeAt(i);
            return 32 === n || 13 === n || 9 === n || 10 === n
        }, l.$re = function (e) {
            l.i > o && (s = s.slice(l.i - o), o = l.i);
            var t = e.exec(s);
            return t ? (u(t[0].length), "string" == typeof t ? t : 1 === t.length ? t[0] : t) : null
        }, l.$char = function (t) {
            return e.charAt(l.i) !== t ? null : (u(1), t)
        }, l.$str = function (t) {
            for (var i = t.length, n = 0; n < i; n++) if (e.charAt(l.i + n) !== t.charAt(n)) return null;
            return u(i), t
        }, l.$quoted = function (t) {
            var i = t || l.i, n = e.charAt(i);
            if ("'" === n || '"' === n) {
                for (var r = e.length, s = i, o = 1; o + s < r; o++) {
                    switch (e.charAt(o + s)) {
                        case"\\":
                            o++;
                            continue;
                        case"\r":
                        case"\n":
                            break;
                        case n:
                            var a = e.substr(s, o + 1);
                            return t || 0 === t ? [n, a] : (u(o + 1), a)
                    }
                }
                return null
            }
        }, l.$parseUntil = function (t) {
            var i, n = "", r = null, s = !1, o = 0, a = [], c = [], h = e.length, f = l.i, p = l.i, v = l.i, d = !0;
            i = "string" == typeof t ? function (e) {
                return e === t
            } : function (e) {
                return t.test(e)
            };
            do {
                var m = e.charAt(v);
                if (0 === o && i(m)) (r = e.substr(p, v - p)) ? c.push(r) : c.push(" "), r = c, u(v - f), d = !1; else {
                    if (s) {
                        "*" === m && "/" === e.charAt(v + 1) && (v++, o--, s = !1), v++;
                        continue
                    }
                    switch (m) {
                        case"\\":
                            v++, m = e.charAt(v), c.push(e.substr(p, v - p + 1)), p = v + 1;
                            break;
                        case"/":
                            "*" === e.charAt(v + 1) && (v++, s = !0, o++);
                            break;
                        case"'":
                        case'"':
                            (n = l.$quoted(v)) ? (c.push(e.substr(p, v - p), n), p = (v += n[1].length - 1) + 1) : (u(v - f), r = m, d = !1);
                            break;
                        case"{":
                            a.push("}"), o++;
                            break;
                        case"(":
                            a.push(")"), o++;
                            break;
                        case"[":
                            a.push("]"), o++;
                            break;
                        case"}":
                        case")":
                        case"]":
                            var g = a.pop();
                            m === g ? o-- : (u(v - f), r = g, d = !1)
                    }
                    ++v > h && (d = !1)
                }
            } while (d);
            return r || null
        }, l.autoCommentAbsorb = !0, l.commentStore = [], l.finished = !1, l.peek = function (t) {
            if ("string" == typeof t) {
                for (var i = 0; i < t.length; i++) if (e.charAt(l.i + i) !== t.charAt(i)) return !1;
                return !0
            }
            return t.test(s)
        }, l.peekChar = function (t) {
            return e.charAt(l.i) === t
        }, l.currentChar = function () {
            return e.charAt(l.i)
        }, l.prevChar = function () {
            return e.charAt(l.i - 1)
        }, l.getInput = function () {
            return e
        }, l.peekNotNumeric = function () {
            var t = e.charCodeAt(l.i);
            return t > 57 || t < 43 || 47 === t || 44 === t
        }, l.start = function (n, a, c) {
            e = n, l.i = t = o = i = 0, r = a ? function (e, t) {
                var i, n, r, s, o, a, l, u, c, h = e.length, f = 0, p = 0, v = [], d = 0;

                function m(t) {
                    var i = o - d;
                    i < 512 && !t || !i || (v.push(e.slice(d, o + 1)), d = o + 1)
                }

                for (o = 0; o < h; o++) if (!((l = e.charCodeAt(o)) >= 97 && l <= 122 || l < 34)) switch (l) {
                    case 40:
                        p++, n = o;
                        continue;
                    case 41:
                        if (--p < 0) return t("missing opening `(`", o);
                        continue;
                    case 59:
                        p || m();
                        continue;
                    case 123:
                        f++, i = o;
                        continue;
                    case 125:
                        if (--f < 0) return t("missing opening `{`", o);
                        f || p || m();
                        continue;
                    case 92:
                        if (o < h - 1) {
                            o++;
                            continue
                        }
                        return t("unescaped `\\`", o);
                    case 34:
                    case 39:
                    case 96:
                        for (c = 0, a = o, o += 1; o < h; o++) if (!((u = e.charCodeAt(o)) > 96)) {
                            if (u == l) {
                                c = 1;
                                break
                            }
                            if (92 == u) {
                                if (o == h - 1) return t("unescaped `\\`", o);
                                o++
                            }
                        }
                        if (c) continue;
                        return t("unmatched `" + String.fromCharCode(l) + "`", a);
                    case 47:
                        if (p || o == h - 1) continue;
                        if (47 == (u = e.charCodeAt(o + 1))) for (o += 2; o < h && (!((u = e.charCodeAt(o)) <= 13) || 10 != u && 13 != u); o++) ; else if (42 == u) {
                            for (r = a = o, o += 2; o < h - 1 && (125 == (u = e.charCodeAt(o)) && (s = o), 42 != u || 47 != e.charCodeAt(o + 1)); o++) ;
                            if (o == h - 1) return t("missing closing `*/`", a);
                            o++
                        }
                        continue;
                    case 42:
                        if (o < h - 1 && 47 == e.charCodeAt(o + 1)) return t("unmatched `/*`", o);
                        continue
                }
                return 0 !== f ? t(r > i && s > r ? "missing closing `}` or `*/`" : "missing closing `}`", i) : 0 !== p ? t("missing closing `)`", n) : (m(!0), v)
            }(n, c) : [n], s = r[0], u(0)
        }, l.end = function () {
            var t, r = l.i >= e.length;
            return l.i < i && (t = n, l.i = i), {
                isFinished: r,
                furthest: l.i,
                furthestPossibleErrorMessage: t,
                furthestReachedEnd: l.i >= e.length - 1,
                furthestChar: e[l.i]
            }
        }, l
    }, Ue = function e(t, i, n) {
        var r, s = Be();

        function o(e, t) {
            throw new O({index: s.i, filename: n.filename, type: t || "Syntax", message: e}, i)
        }

        function a(e, t) {
            var i = e instanceof Function ? e.call(r) : s.$re(e);
            if (i) return i;
            o(t || ("string" == typeof e ? "expected '" + e + "' got '" + s.currentChar() + "'" : "unexpected token"))
        }

        function l(e, t) {
            if (s.$char(e)) return e;
            o(t || "expected '" + e + "' got '" + s.currentChar() + "'")
        }

        function u(e) {
            var t = n.filename;
            return {lineNumber: C(e, s.getInput()).line + 1, fileName: t}
        }

        return {
            parserInput: s, imports: i, fileInfo: n, parseNode: function (e, t, n, o, a) {
                var l, u = [], c = s;
                try {
                    c.start(e, !1, (function (e, t) {
                        a({message: e, index: t + n})
                    }));
                    for (var h = 0, f = void 0, p = void 0; f = t[h]; h++) if (p = c.i, l = r[f]()) {
                        try {
                            l._index = p + n, l._fileInfo = o
                        } catch (e) {
                        }
                        u.push(l)
                    } else u.push(null);
                    c.end().isFinished ? a(null, u) : a(!0, null)
                } catch (e) {
                    throw new O({index: e.index + n, message: e.message}, i, o.filename)
                }
            }, parse: function (r, o, a) {
                var l, u, c, h, f = null, p = "";
                if (u = a && a.globalVars ? e.serializeVars(a.globalVars) + "\n" : "", c = a && a.modifyVars ? "\n" + e.serializeVars(a.modifyVars) : "", t.pluginManager) for (var v = t.pluginManager.getPreProcessors(), d = 0; d < v.length; d++) r = v[d].process(r, {
                    context: t,
                    imports: i,
                    fileInfo: n
                });
                (u || a && a.banner) && (p = (a && a.banner ? a.banner : "") + u, (h = i.contentsIgnoredChars)[n.filename] = h[n.filename] || 0, h[n.filename] += p.length), r = p + (r = r.replace(/\r\n?/g, "\n")).replace(/^\uFEFF/, "") + c, i.contents[n.filename] = r;
                try {
                    s.start(r, t.chunkInput, (function (e, t) {
                        throw new O({index: t, type: "Parse", message: e, filename: n.filename}, i)
                    })), Ce.Node.prototype.parse = this, l = new Ce.Ruleset(null, this.parsers.primary()), Ce.Node.prototype.rootNode = l, l.root = !0, l.firstRoot = !0, l.functionRegistry = H.inherit()
                } catch (e) {
                    return o(new O(e, i, n.filename))
                }
                var m = s.end();
                if (!m.isFinished) {
                    var g = m.furthestPossibleErrorMessage;
                    g || (g = "Unrecognised input", "}" === m.furthestChar ? g += ". Possibly missing opening '{'" : ")" === m.furthestChar ? g += ". Possibly missing opening '('" : m.furthestReachedEnd && (g += ". Possibly missing something")), f = new O({
                        type: "Parse",
                        message: g,
                        index: m.furthest,
                        filename: n.filename
                    }, i)
                }
                var y = function (e) {
                    return (e = f || e || i.error) ? (e instanceof O || (e = new O(e, i, n.filename)), o(e)) : o(null, l)
                };
                if (!1 === t.processImports) return y();
                new De.ImportVisitor(i, y).run(l)
            }, parsers: r = {
                primary: function () {
                    for (var e, t = this.mixin, i = []; ;) {
                        for (; e = this.comment();) i.push(e);
                        if (s.finished) break;
                        if (s.peek("}")) break;
                        if (e = this.extendRule()) i = i.concat(e); else if (e = t.definition() || this.declaration() || t.call(!1, !1) || this.ruleset() || this.variableCall() || this.entities.call() || this.atrule()) i.push(e); else {
                            for (var n = !1; s.$char(";");) n = !0;
                            if (!n) break
                        }
                    }
                    return i
                }, comment: function () {
                    if (s.commentStore.length) {
                        var e = s.commentStore.shift();
                        return new Ce.Comment(e.text, e.isLineComment, e.index, n)
                    }
                }, entities: {
                    mixinLookup: function () {
                        return r.mixin.call(!0, !0)
                    }, quoted: function (e) {
                        var t, i = s.i, r = !1;
                        if (s.save(), s.$char("~")) r = !0; else if (e) return void s.restore();
                        if (t = s.$quoted()) return s.forget(), new Ce.Quoted(t.charAt(0), t.substr(1, t.length - 2), r, i, n);
                        s.restore()
                    }, keyword: function () {
                        var e = s.$char("%") || s.$re(/^\[?(?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\]?/);
                        if (e) return Ce.Color.fromKeyword(e) || new Ce.Keyword(e)
                    }, call: function () {
                        var e, t, i, r = s.i;
                        if (!s.peek(/^url\(/i)) if (s.save(), e = s.$re(/^([\w-]+|%|~|progid:[\w\.]+)\(/)) {
                            if (e = e[1], (i = this.customFuncCall(e)) && (t = i.parse()) && i.stop) return s.forget(), t;
                            if (t = this.arguments(t), s.$char(")")) return s.forget(), new Ce.Call(e, t, r, n);
                            s.restore("Could not parse call arguments or missing ')'")
                        } else s.forget()
                    }, customFuncCall: function (e) {
                        return {alpha: t(r.ieAlpha, !0), boolean: t(i), if: t(i)}[e.toLowerCase()];

                        function t(e, t) {
                            return {parse: e, stop: t}
                        }

                        function i() {
                            return [a(r.condition, "expected condition")]
                        }
                    }, arguments: function (e) {
                        var t, i, n = e || [], o = [];
                        for (s.save(); ;) {
                            if (e) e = !1; else {
                                if (!(i = r.detachedRuleset() || this.assignment() || r.expression())) break;
                                i.value && 1 == i.value.length && (i = i.value[0]), n.push(i)
                            }
                            s.$char(",") || (s.$char(";") || t) && (t = !0, i = n.length < 1 ? n[0] : new Ce.Value(n), o.push(i), n = [])
                        }
                        return s.forget(), t ? o : n
                    }, literal: function () {
                        return this.dimension() || this.color() || this.quoted() || this.unicodeDescriptor()
                    }, assignment: function () {
                        var e, t;
                        if (s.save(), e = s.$re(/^\w+(?=\s?=)/i)) if (s.$char("=")) {
                            if (t = r.entity()) return s.forget(), new Ce.Assignment(e, t);
                            s.restore()
                        } else s.restore(); else s.restore()
                    }, url: function () {
                        var e, t = s.i;
                        if (s.autoCommentAbsorb = !1, s.$str("url(")) return e = this.quoted() || this.variable() || this.property() || s.$re(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/) || "", s.autoCommentAbsorb = !0, l(")"), new Ce.URL(null != e.value || e instanceof Ce.Variable || e instanceof Ce.Property ? e : new Ce.Anonymous(e, t), t, n);
                        s.autoCommentAbsorb = !0
                    }, variable: function () {
                        var e, t, i = s.i;
                        if (s.save(), "@" === s.currentChar() && (t = s.$re(/^@@?[\w-]+/))) {
                            if ("(" === (e = s.currentChar()) || "[" === e && !s.prevChar().match(/^\s/)) {
                                var o = r.variableCall(t);
                                if (o) return s.forget(), o
                            }
                            return s.forget(), new Ce.Variable(t, i, n)
                        }
                        s.restore()
                    }, variableCurly: function () {
                        var e, t = s.i;
                        if ("@" === s.currentChar() && (e = s.$re(/^@\{([\w-]+)\}/))) return new Ce.Variable("@" + e[1], t, n)
                    }, property: function () {
                        var e, t = s.i;
                        if ("$" === s.currentChar() && (e = s.$re(/^\$[\w-]+/))) return new Ce.Property(e, t, n)
                    }, propertyCurly: function () {
                        var e, t = s.i;
                        if ("$" === s.currentChar() && (e = s.$re(/^\$\{([\w-]+)\}/))) return new Ce.Property("$" + e[1], t, n)
                    }, color: function () {
                        var e;
                        if (s.save(), "#" === s.currentChar() && (e = s.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\w.#\[])?/)) && !e[2]) return s.forget(), new Ce.Color(e[1], void 0, e[0]);
                        s.restore()
                    }, colorKeyword: function () {
                        s.save();
                        var e = s.autoCommentAbsorb;
                        s.autoCommentAbsorb = !1;
                        var t = s.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);
                        if (s.autoCommentAbsorb = e, t) {
                            s.restore();
                            var i = Ce.Color.fromKeyword(t);
                            return i ? (s.$str(t), i) : void 0
                        }
                        s.forget()
                    }, dimension: function () {
                        if (!s.peekNotNumeric()) {
                            var e = s.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i);
                            return e ? new Ce.Dimension(e[1], e[2]) : void 0
                        }
                    }, unicodeDescriptor: function () {
                        var e;
                        if (e = s.$re(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/)) return new Ce.UnicodeDescriptor(e[0])
                    }, javascript: function () {
                        var e, t = s.i;
                        s.save();
                        var i = s.$char("~");
                        if (s.$char("`")) {
                            if (e = s.$re(/^[^`]*`/)) return s.forget(), new Ce.JavaScript(e.substr(0, e.length - 1), Boolean(i), t, n);
                            s.restore("invalid javascript definition")
                        } else s.restore()
                    }
                }, variable: function () {
                    var e;
                    if ("@" === s.currentChar() && (e = s.$re(/^(@[\w-]+)\s*:/))) return e[1]
                }, variableCall: function (e) {
                    var t, i = s.i, o = !!e, a = e;
                    if (s.save(), a || "@" === s.currentChar() && (a = s.$re(/^(@[\w-]+)(\(\s*\))?/))) {
                        if (!(t = this.mixin.ruleLookups()) && (o && "()" !== s.$str("()") || "()" !== a[2])) return void s.restore("Missing '[...]' lookup in variable call");
                        o || (a = a[1]);
                        var l = new Ce.VariableCall(a, i, n);
                        return !o && r.end() ? (s.forget(), l) : (s.forget(), new Ce.NamespaceValue(l, t, i, n))
                    }
                    s.restore()
                }, extend: function (e) {
                    var t, i, r, l, u, c = s.i;
                    if (s.$str(e ? "&:extend(" : ":extend(")) {
                        do {
                            for (r = null, t = null; !(r = s.$re(/^(all)(?=\s*(\)|,))/)) && (i = this.element());) t ? t.push(i) : t = [i];
                            r = r && r[1], t || o("Missing target selector for :extend()."), u = new Ce.Extend(new Ce.Selector(t), r, c, n), l ? l.push(u) : l = [u]
                        } while (s.$char(","));
                        return a(/^\)/), e && a(/^;/), l
                    }
                }, extendRule: function () {
                    return this.extend(!0)
                }, mixin: {
                    call: function (e, t) {
                        var i, o, a, u, c = s.currentChar(), h = !1, f = s.i;
                        if ("." === c || "#" === c) {
                            if (s.save(), o = this.elements()) {
                                if (s.$char("(") && (a = this.args(!0).args, l(")"), u = !0), !1 !== t && (i = this.ruleLookups()), !0 === t && !i) return void s.restore();
                                if (e && !i && !u) return void s.restore();
                                if (!e && r.important() && (h = !0), e || r.end()) {
                                    s.forget();
                                    var p = new Ce.mixin.Call(o, a, f, n, !i && h);
                                    return i ? new Ce.NamespaceValue(p, i) : p
                                }
                            }
                            s.restore()
                        }
                    }, elements: function () {
                        for (var e, t, i, r, o, a = /^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/; o = s.i, t = s.$re(a);) r = new Ce.Element(i, t, !1, o, n), e ? e.push(r) : e = [r], i = s.$char(">");
                        return e
                    }, args: function (e) {
                        var t, i, n, a, l, u, c, h = r.entities, f = {args: null, variadic: !1}, p = [], v = [], d = [],
                            m = !0;
                        for (s.save(); ;) {
                            if (e) u = r.detachedRuleset() || r.expression(); else {
                                if (s.commentStore.length = 0, s.$str("...")) {
                                    f.variadic = !0, s.$char(";") && !t && (t = !0), (t ? v : d).push({variadic: !0});
                                    break
                                }
                                u = h.variable() || h.property() || h.literal() || h.keyword() || this.call(!0)
                            }
                            if (!u || !m) break;
                            a = null, u.throwAwayComments && u.throwAwayComments(), l = u;
                            var g = null;
                            if (e ? u.value && 1 == u.value.length && (g = u.value[0]) : g = u, g && (g instanceof Ce.Variable || g instanceof Ce.Property)) if (s.$char(":")) {
                                if (p.length > 0 && (t && o("Cannot mix ; and , as delimiter types"), i = !0), !(l = r.detachedRuleset() || r.expression())) {
                                    if (!e) return s.restore(), f.args = [], f;
                                    o("could not understand value for named argument")
                                }
                                a = n = g.name
                            } else if (s.$str("...")) {
                                if (!e) {
                                    f.variadic = !0, s.$char(";") && !t && (t = !0), (t ? v : d).push({
                                        name: u.name,
                                        variadic: !0
                                    });
                                    break
                                }
                                c = !0
                            } else e || (n = a = g.name, l = null);
                            l && p.push(l), d.push({
                                name: a,
                                value: l,
                                expand: c
                            }), s.$char(",") ? m = !0 : ((m = ";" === s.$char(";")) || t) && (i && o("Cannot mix ; and , as delimiter types"), t = !0, p.length > 1 && (l = new Ce.Value(p)), v.push({
                                name: n,
                                value: l,
                                expand: c
                            }), n = null, p = [], i = !1)
                        }
                        return s.forget(), f.args = t ? v : d, f
                    }, definition: function () {
                        var e, t, i, n, o = [], l = !1;
                        if (!("." !== s.currentChar() && "#" !== s.currentChar() || s.peek(/^[^{]*\}/))) if (s.save(), t = s.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)) {
                            e = t[1];
                            var u = this.args(!1);
                            if (o = u.args, l = u.variadic, !s.$char(")")) return void s.restore("Missing closing ')'");
                            if (s.commentStore.length = 0, s.$str("when") && (n = a(r.conditions, "expected condition")), i = r.block()) return s.forget(), new Ce.mixin.Definition(e, o, i, n, l);
                            s.restore()
                        } else s.restore()
                    }, ruleLookups: function () {
                        var e, t = [];
                        if ("[" === s.currentChar()) {
                            for (; ;) {
                                if (s.save(), !(e = this.lookupValue()) && "" !== e) {
                                    s.restore();
                                    break
                                }
                                t.push(e), s.forget()
                            }
                            return t.length > 0 ? t : void 0
                        }
                    }, lookupValue: function () {
                        if (s.save(), s.$char("[")) {
                            var e = s.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);
                            if (s.$char("]")) return e || "" === e ? (s.forget(), e) : void s.restore();
                            s.restore()
                        } else s.restore()
                    }
                }, entity: function () {
                    var e = this.entities;
                    return this.comment() || e.literal() || e.variable() || e.url() || e.property() || e.call() || e.keyword() || this.mixin.call(!0) || e.javascript()
                }, end: function () {
                    return s.$char(";") || s.peek("}")
                }, ieAlpha: function () {
                    var e;
                    if (s.$re(/^opacity=/i)) return (e = s.$re(/^\d+/)) || (e = "@{" + (e = a(r.entities.variable, "Could not parse alpha")).name.slice(1) + "}"), l(")"), new Ce.Quoted("", "alpha(opacity=" + e + ")")
                }, element: function () {
                    var e, t, i, r = s.i;
                    if (t = this.combinator(), (e = s.$re(/^(?:\d+\.\d+|\d+)%/) || s.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) || s.$char("*") || s.$char("&") || this.attribute() || s.$re(/^\([^&()@]+\)/) || s.$re(/^[\.#:](?=@)/) || this.entities.variableCurly()) || (s.save(), s.$char("(") ? (i = this.selector(!1)) && s.$char(")") ? (e = new Ce.Paren(i), s.forget()) : s.restore("Missing closing ')'") : s.forget()), e) return new Ce.Element(t, e, e instanceof Ce.Variable, r, n)
                }, combinator: function () {
                    var e = s.currentChar();
                    if ("/" === e) {
                        s.save();
                        var t = s.$re(/^\/[a-z]+\//i);
                        if (t) return s.forget(), new Ce.Combinator(t);
                        s.restore()
                    }
                    if (">" === e || "+" === e || "~" === e || "|" === e || "^" === e) {
                        for (s.i++, "^" === e && "^" === s.currentChar() && (e = "^^", s.i++); s.isWhitespace();) s.i++;
                        return new Ce.Combinator(e)
                    }
                    return s.isWhitespace(-1) ? new Ce.Combinator(" ") : new Ce.Combinator(null)
                }, selector: function (e) {
                    var t, i, r, l, u, c, h, f = s.i;
                    for (e = !1 !== e; (e && (i = this.extend()) || e && (c = s.$str("when")) || (l = this.element())) && (c ? h = a(this.conditions, "expected condition") : h ? o("CSS guard can only be used at the end of selector") : i ? u = u ? u.concat(i) : i : (u && o("Extend can only be used at the end of selector"), r = s.currentChar(), t ? t.push(l) : t = [l], l = null), "{" !== r && "}" !== r && ";" !== r && "," !== r && ")" !== r);) ;
                    if (t) return new Ce.Selector(t, u, h, f, n);
                    u && o("Extend must be used to extend a selector, it cannot be used on its own")
                }, selectors: function () {
                    for (var e, t; (e = this.selector()) && (t ? t.push(e) : t = [e], s.commentStore.length = 0, e.condition && t.length > 1 && o("Guards are only currently allowed on a single selector."), s.$char(","));) e.condition && o("Guards are only currently allowed on a single selector."), s.commentStore.length = 0;
                    return t
                }, attribute: function () {
                    if (s.$char("[")) {
                        var e, t, i, n = this.entities;
                        return (e = n.variableCurly()) || (e = a(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)), (i = s.$re(/^[|~*$^]?=/)) && (t = n.quoted() || s.$re(/^[0-9]+%/) || s.$re(/^[\w-]+/) || n.variableCurly()), l("]"), new Ce.Attribute(e, i, t)
                    }
                }, block: function () {
                    var e;
                    if (s.$char("{") && (e = this.primary()) && s.$char("}")) return e
                }, blockRuleset: function () {
                    var e = this.block();
                    return e && (e = new Ce.Ruleset(null, e)), e
                }, detachedRuleset: function () {
                    var e, t, i;
                    if (s.save(), !s.$re(/^[.#]\(/) || (t = (e = this.mixin.args(!1)).args, i = e.variadic, s.$char(")"))) {
                        var n = this.blockRuleset();
                        if (n) return s.forget(), t ? new Ce.mixin.Definition(null, t, n, null, i) : new Ce.DetachedRuleset(n);
                        s.restore()
                    } else s.restore()
                }, ruleset: function () {
                    var e, i, n;
                    if (s.save(), t.dumpLineNumbers && (n = u(s.i)), (e = this.selectors()) && (i = this.block())) {
                        s.forget();
                        var r = new Ce.Ruleset(e, i, t.strictImports);
                        return t.dumpLineNumbers && (r.debugInfo = n), r
                    }
                    s.restore()
                }, declaration: function () {
                    var e, t, i, r, o, a, l = s.i, u = s.currentChar();
                    if ("." !== u && "#" !== u && "&" !== u && ":" !== u) if (s.save(), e = this.variable() || this.ruleProperty()) {
                        if ((a = "string" == typeof e) && (t = this.detachedRuleset()) && (i = !0), s.commentStore.length = 0, !t) {
                            if (o = !a && e.length > 1 && e.pop().value, t = e[0].value && "--" === e[0].value.slice(0, 2) ? this.permissiveValue() : this.anonymousValue()) return s.forget(), new Ce.Declaration(e, t, !1, o, l, n);
                            t || (t = this.value()), t ? r = this.important() : a && (t = this.permissiveValue())
                        }
                        if (t && (this.end() || i)) return s.forget(), new Ce.Declaration(e, t, r, o, l, n);
                        s.restore()
                    } else s.restore()
                }, anonymousValue: function () {
                    var e = s.i, t = s.$re(/^([^.#@\$+\/'"*`(;{}-]*);/);
                    if (t) return new Ce.Anonymous(t[1], e)
                }, permissiveValue: function (e) {
                    var t, i, r, a, l = e || ";", u = s.i, c = [];

                    function h() {
                        var e = s.currentChar();
                        return "string" == typeof l ? e === l : l.test(e)
                    }

                    if (!h()) {
                        a = [];
                        do {
                            ((i = this.comment()) || (i = this.entity())) && a.push(i)
                        } while (i);
                        if (r = h(), a.length > 0) {
                            if (a = new Ce.Expression(a), r) return a;
                            c.push(a), " " === s.prevChar() && c.push(new Ce.Anonymous(" ", u))
                        }
                        if (s.save(), a = s.$parseUntil(l)) {
                            if ("string" == typeof a && o("Expected '" + a + "'", "Parse"), 1 === a.length && " " === a[0]) return s.forget(), new Ce.Anonymous("", u);
                            var f = void 0;
                            for (t = 0; t < a.length; t++) if (f = a[t], Array.isArray(f)) c.push(new Ce.Quoted(f[0], f[1], !0, u, n)); else {
                                t === a.length - 1 && (f = f.trim());
                                var p = new Ce.Quoted("'", f, !0, u, n);
                                p.variableRegex = /@([\w-]+)/g, p.propRegex = /\$([\w-]+)/g, c.push(p)
                            }
                            return s.forget(), new Ce.Expression(c, !0)
                        }
                        s.restore()
                    }
                }, import: function () {
                    var e, t, i = s.i, r = s.$re(/^@import?\s+/);
                    if (r) {
                        var a = (r ? this.importOptions() : null) || {};
                        if (e = this.entities.quoted() || this.entities.url()) return t = this.mediaFeatures(), s.$char(";") || (s.i = i, o("missing semi-colon or unrecognised media features on import")), t = t && new Ce.Value(t), new Ce.Import(e, t, a, i, n);
                        s.i = i, o("malformed import statement")
                    }
                }, importOptions: function () {
                    var e, t, i, n = {};
                    if (!s.$char("(")) return null;
                    do {
                        if (e = this.importOption()) {
                            switch (i = !0, t = e) {
                                case"css":
                                    t = "less", i = !1;
                                    break;
                                case"once":
                                    t = "multiple", i = !1
                            }
                            if (n[t] = i, !s.$char(",")) break
                        }
                    } while (e);
                    return l(")"), n
                }, importOption: function () {
                    var e = s.$re(/^(less|css|multiple|once|inline|reference|optional)/);
                    if (e) return e[1]
                }, mediaFeature: function () {
                    var e, t, i = this.entities, r = [];
                    s.save();
                    do {
                        (e = i.keyword() || i.variable() || i.mixinLookup()) ? r.push(e) : s.$char("(") && (t = this.property(), e = this.value(), s.$char(")") ? t && e ? r.push(new Ce.Paren(new Ce.Declaration(t, e, null, null, s.i, n, !0))) : e ? r.push(new Ce.Paren(e)) : o("badly formed media feature definition") : o("Missing closing ')'", "Parse"))
                    } while (e);
                    if (s.forget(), r.length > 0) return new Ce.Expression(r)
                }, mediaFeatures: function () {
                    var e, t = this.entities, i = [];
                    do {
                        if (e = this.mediaFeature()) {
                            if (i.push(e), !s.$char(",")) break
                        } else if ((e = t.variable() || t.mixinLookup()) && (i.push(e), !s.$char(","))) break
                    } while (e);
                    return i.length > 0 ? i : null
                }, media: function () {
                    var e, i, r, a, l = s.i;
                    if (t.dumpLineNumbers && (a = u(l)), s.save(), s.$str("@media")) return e = this.mediaFeatures(), (i = this.block()) || o("media definitions require block statements after any features"), s.forget(), r = new Ce.Media(i, e, l, n), t.dumpLineNumbers && (r.debugInfo = a), r;
                    s.restore()
                }, plugin: function () {
                    var e, t, i, r = s.i;
                    if (s.$re(/^@plugin?\s+/)) {
                        if (i = (t = this.pluginArgs()) ? {
                            pluginArgs: t,
                            isPlugin: !0
                        } : {isPlugin: !0}, e = this.entities.quoted() || this.entities.url()) return s.$char(";") || (s.i = r, o("missing semi-colon on @plugin")), new Ce.Import(e, null, i, r, n);
                        s.i = r, o("malformed @plugin statement")
                    }
                }, pluginArgs: function () {
                    if (s.save(), !s.$char("(")) return s.restore(), null;
                    var e = s.$re(/^\s*([^\);]+)\)\s*/);
                    return e[1] ? (s.forget(), e[1].trim()) : (s.restore(), null)
                }, atrule: function () {
                    var e, i, r, a, l, c, h, f = s.i, p = !0, v = !0;
                    if ("@" === s.currentChar()) {
                        if (i = this.import() || this.plugin() || this.media()) return i;
                        if (s.save(), e = s.$re(/^@[a-z-]+/)) {
                            switch (a = e, "-" == e.charAt(1) && e.indexOf("-", 2) > 0 && (a = "@" + e.slice(e.indexOf("-", 2) + 1)), a) {
                                case"@charset":
                                    l = !0, p = !1;
                                    break;
                                case"@namespace":
                                    c = !0, p = !1;
                                    break;
                                case"@keyframes":
                                case"@counter-style":
                                    l = !0;
                                    break;
                                case"@document":
                                case"@supports":
                                    h = !0, v = !1;
                                    break;
                                default:
                                    h = !0
                            }
                            if (s.commentStore.length = 0, l ? (i = this.entity()) || o("expected " + e + " identifier") : c ? (i = this.expression()) || o("expected " + e + " expression") : h && (i = this.permissiveValue(/^[{;]/), p = "{" === s.currentChar(), i ? i.value || (i = null) : p || ";" === s.currentChar() || o(e + " rule is missing block or ending semi-colon")), p && (r = this.blockRuleset()), r || !p && i && s.$char(";")) return s.forget(), new Ce.AtRule(e, i, r, f, n, t.dumpLineNumbers ? u(f) : null, v);
                            s.restore("at-rule options not recognised")
                        }
                    }
                }, value: function () {
                    var e, t = [], i = s.i;
                    do {
                        if ((e = this.expression()) && (t.push(e), !s.$char(","))) break
                    } while (e);
                    if (t.length > 0) return new Ce.Value(t, i)
                }, important: function () {
                    if ("!" === s.currentChar()) return s.$re(/^! *important/)
                }, sub: function () {
                    var e, t;
                    if (s.save(), s.$char("(")) return (e = this.addition()) && s.$char(")") ? (s.forget(), (t = new Ce.Expression([e])).parens = !0, t) : void s.restore("Expected ')'");
                    s.restore()
                }, multiplication: function () {
                    var e, t, i, n, r;
                    if (e = this.operand()) {
                        for (r = s.isWhitespace(-1); !s.peek(/^\/[*\/]/);) {
                            if (s.save(), !(i = s.$char("/") || s.$char("*") || s.$str("./"))) {
                                s.forget();
                                break
                            }
                            if (!(t = this.operand())) {
                                s.restore();
                                break
                            }
                            s.forget(), e.parensInOp = !0, t.parensInOp = !0, n = new Ce.Operation(i, [n || e, t], r), r = s.isWhitespace(-1)
                        }
                        return n || e
                    }
                }, addition: function () {
                    var e, t, i, n, r;
                    if (e = this.multiplication()) {
                        for (r = s.isWhitespace(-1); (i = s.$re(/^[-+]\s+/) || !r && (s.$char("+") || s.$char("-"))) && (t = this.multiplication());) e.parensInOp = !0, t.parensInOp = !0, n = new Ce.Operation(i, [n || e, t], r), r = s.isWhitespace(-1);
                        return n || e
                    }
                }, conditions: function () {
                    var e, t, i, n = s.i;
                    if (e = this.condition(!0)) {
                        for (; s.peek(/^,\s*(not\s*)?\(/) && s.$char(",") && (t = this.condition(!0));) i = new Ce.Condition("or", i || e, t, n);
                        return i || e
                    }
                }, condition: function (e) {
                    var t, i, n;
                    if (t = this.conditionAnd(e)) {
                        if (i = s.$str("or")) {
                            if (!(n = this.condition(e))) return;
                            t = new Ce.Condition(i, t, n)
                        }
                        return t
                    }
                }, conditionAnd: function (e) {
                    var t, i, n, r, o = this;
                    if (t = (r = o.negatedCondition(e) || o.parenthesisCondition(e)) || e ? r : o.atomicCondition(e)) {
                        if (i = s.$str("and")) {
                            if (!(n = this.conditionAnd(e))) return;
                            t = new Ce.Condition(i, t, n)
                        }
                        return t
                    }
                }, negatedCondition: function (e) {
                    if (s.$str("not")) {
                        var t = this.parenthesisCondition(e);
                        return t && (t.negate = !t.negate), t
                    }
                }, parenthesisCondition: function (e) {
                    var t;
                    if (s.save(), s.$str("(")) {
                        if (t = function (t) {
                            var i;
                            if (s.save(), i = t.condition(e)) {
                                if (s.$char(")")) return s.forget(), i;
                                s.restore()
                            } else s.restore()
                        }(this)) return s.forget(), t;
                        if (t = this.atomicCondition(e)) {
                            if (s.$char(")")) return s.forget(), t;
                            s.restore("expected ')' got '" + s.currentChar() + "'")
                        } else s.restore()
                    } else s.restore()
                }, atomicCondition: function (e) {
                    var t, i, n, r, a = this.entities, l = s.i;

                    function u() {
                        return this.addition() || a.keyword() || a.quoted() || a.mixinLookup()
                    }

                    if (t = (u = u.bind(this))()) return s.$char(">") ? r = s.$char("=") ? ">=" : ">" : s.$char("<") ? r = s.$char("=") ? "<=" : "<" : s.$char("=") && (r = s.$char(">") ? "=>" : s.$char("<") ? "=<" : "="), r ? (i = u()) ? n = new Ce.Condition(r, t, i, l, !1) : o("expected expression") : n = new Ce.Condition("=", t, new Ce.Keyword("true"), l, !1), n
                }, operand: function () {
                    var e, t = this.entities;
                    s.peek(/^-[@\$\(]/) && (e = s.$char("-"));
                    var i = this.sub() || t.dimension() || t.color() || t.variable() || t.property() || t.call() || t.quoted(!0) || t.colorKeyword() || t.mixinLookup();
                    return e && (i.parensInOp = !0, i = new Ce.Negative(i)), i
                }, expression: function () {
                    var e, t, i = [], n = s.i;
                    do {
                        (e = this.comment()) ? i.push(e) : ((e = this.addition() || this.entity()) instanceof Ce.Comment && (e = null), e && (i.push(e), s.peek(/^\/[\/*]/) || (t = s.$char("/")) && i.push(new Ce.Anonymous(t, n))))
                    } while (e);
                    if (i.length > 0) return new Ce.Expression(i)
                }, property: function () {
                    var e = s.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);
                    if (e) return e[1]
                }, ruleProperty: function () {
                    var e, t, i = [], r = [];
                    s.save();
                    var o = s.$re(/^([_a-zA-Z0-9-]+)\s*:/);
                    if (o) return i = [new Ce.Keyword(o[1])], s.forget(), i;

                    function a(e) {
                        var t = s.i, n = s.$re(e);
                        if (n) return r.push(t), i.push(n[1])
                    }

                    for (a(/^(\*?)/); a(/^((?:[\w-]+)|(?:[@\$]\{[\w-]+\}))/);) ;
                    if (i.length > 1 && a(/^((?:\+_|\+)?)\s*:/)) {
                        for (s.forget(), "" === i[0] && (i.shift(), r.shift()), t = 0; t < i.length; t++) e = i[t], i[t] = "@" !== e.charAt(0) && "$" !== e.charAt(0) ? new Ce.Keyword(e) : "@" === e.charAt(0) ? new Ce.Variable("@" + e.slice(2, -1), r[t], n) : new Ce.Property("$" + e.slice(2, -1), r[t], n);
                        return i
                    }
                    s.restore()
                }
            }
        }
    };

    function qe(e, t, i, n) {
        return t.eval(e) ? i.eval(e) : n ? n.eval(e) : new j
    }

    function Te(e, t) {
        try {
            return t.eval(e), L.True
        } catch (e) {
            return L.False
        }
    }

    Ue.serializeVars = function (e) {
        var t = "";
        for (var i in e) if (Object.hasOwnProperty.call(e, i)) {
            var n = e[i];
            t += ("@" === i[0] ? "" : "@") + i + ": " + n + (";" === String(n).slice(-1) ? "" : ";")
        }
        return t
    }, qe.evalArgs = !1, Te.evalArgs = !1;
    var ze, Ge = {
        isdefined: Te, boolean: function (e) {
            return e ? L.True : L.False
        }, if: qe
    };

    function We(e) {
        return Math.min(1, Math.max(0, e))
    }

    function Je(e, t) {
        var i = ze.hsla(t.h, t.s, t.l, t.a);
        if (i) return e.value && /^(rgb|hsl)/.test(e.value) ? i.value = e.value : i.value = "rgb", i
    }

    function He(e) {
        if (e.toHSL) return e.toHSL();
        throw new Error("Argument cannot be evaluated to a color")
    }

    function Qe(e) {
        if (e.toHSV) return e.toHSV();
        throw new Error("Argument cannot be evaluated to a color")
    }

    function Ke(e) {
        if (e instanceof ee) return parseFloat(e.unit.is("%") ? e.value / 100 : e.value);
        if ("number" == typeof e) return e;
        throw{type: "Argument", message: "color functions take numbers as parameters"}
    }

    var Ze = ze = {
        rgb: function (e, t, i) {
            var n = 1;
            if (e instanceof ne) {
                var r = e.value;
                if (e = r[0], t = r[1], (i = r[2]) instanceof ie) {
                    var s = i;
                    i = s.operands[0], n = s.operands[1]
                }
            }
            var o = ze.rgba(e, t, i, n);
            if (o) return o.value = "rgb", o
        }, rgba: function (e, t, i, n) {
            try {
                if (e instanceof c) return n = t ? Ke(t) : e.alpha, new c(e.rgb, n, "rgba");
                var r = [e, t, i].map((function (e) {
                    return i = 255, (t = e) instanceof ee && t.unit.is("%") ? parseFloat(t.value * i / 100) : Ke(t);
                    var t, i
                }));
                return n = Ke(n), new c(r, n, "rgba")
            } catch (e) {
            }
        }, hsl: function (e, t, i) {
            var n = 1;
            if (e instanceof ne) {
                var r = e.value;
                if (e = r[0], t = r[1], (i = r[2]) instanceof ie) {
                    var s = i;
                    i = s.operands[0], n = s.operands[1]
                }
            }
            var o = ze.hsla(e, t, i, n);
            if (o) return o.value = "hsl", o
        }, hsla: function (e, t, i, n) {
            try {
                if (e instanceof c) return n = t ? Ke(t) : e.alpha, new c(e.rgb, n, "hsla");
                var r, s;

                function o(e) {
                    return 6 * (e = e < 0 ? e + 1 : e > 1 ? e - 1 : e) < 1 ? r + (s - r) * e * 6 : 2 * e < 1 ? s : 3 * e < 2 ? r + (s - r) * (2 / 3 - e) * 6 : r
                }

                e = Ke(e) % 360 / 360, t = We(Ke(t)), i = We(Ke(i)), n = We(Ke(n)), r = 2 * i - (s = i <= .5 ? i * (t + 1) : i + t - i * t);
                var a = [255 * o(e + 1 / 3), 255 * o(e), 255 * o(e - 1 / 3)];
                return n = Ke(n), new c(a, n, "hsla")
            } catch (e) {
            }
        }, hsv: function (e, t, i) {
            return ze.hsva(e, t, i, 1)
        }, hsva: function (e, t, i, n) {
            var r, s;
            e = Ke(e) % 360 / 360 * 360, t = Ke(t), i = Ke(i), n = Ke(n);
            var o = [i, i * (1 - t), i * (1 - (s = e / 60 - (r = Math.floor(e / 60 % 6))) * t), i * (1 - (1 - s) * t)],
                a = [[0, 3, 1], [2, 0, 1], [1, 0, 3], [1, 2, 0], [3, 1, 0], [0, 1, 2]];
            return ze.rgba(255 * o[a[r][0]], 255 * o[a[r][1]], 255 * o[a[r][2]], n)
        }, hue: function (e) {
            return new ee(He(e).h)
        }, saturation: function (e) {
            return new ee(100 * He(e).s, "%")
        }, lightness: function (e) {
            return new ee(100 * He(e).l, "%")
        }, hsvhue: function (e) {
            return new ee(Qe(e).h)
        }, hsvsaturation: function (e) {
            return new ee(100 * Qe(e).s, "%")
        }, hsvvalue: function (e) {
            return new ee(100 * Qe(e).v, "%")
        }, red: function (e) {
            return new ee(e.rgb[0])
        }, green: function (e) {
            return new ee(e.rgb[1])
        }, blue: function (e) {
            return new ee(e.rgb[2])
        }, alpha: function (e) {
            return new ee(He(e).a)
        }, luma: function (e) {
            return new ee(e.luma() * e.alpha * 100, "%")
        }, luminance: function (e) {
            var t = .2126 * e.rgb[0] / 255 + .7152 * e.rgb[1] / 255 + .0722 * e.rgb[2] / 255;
            return new ee(t * e.alpha * 100, "%")
        }, saturate: function (e, t, i) {
            if (!e.rgb) return null;
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.s += n.s * t.value / 100 : n.s += t.value / 100, n.s = We(n.s), Je(e, n)
        }, desaturate: function (e, t, i) {
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.s -= n.s * t.value / 100 : n.s -= t.value / 100, n.s = We(n.s), Je(e, n)
        }, lighten: function (e, t, i) {
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.l += n.l * t.value / 100 : n.l += t.value / 100, n.l = We(n.l), Je(e, n)
        }, darken: function (e, t, i) {
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.l -= n.l * t.value / 100 : n.l -= t.value / 100, n.l = We(n.l), Je(e, n)
        }, fadein: function (e, t, i) {
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.a += n.a * t.value / 100 : n.a += t.value / 100, n.a = We(n.a), Je(e, n)
        }, fadeout: function (e, t, i) {
            var n = He(e);
            return void 0 !== i && "relative" === i.value ? n.a -= n.a * t.value / 100 : n.a -= t.value / 100, n.a = We(n.a), Je(e, n)
        }, fade: function (e, t) {
            var i = He(e);
            return i.a = t.value / 100, i.a = We(i.a), Je(e, i)
        }, spin: function (e, t) {
            var i = He(e), n = (i.h + t.value) % 360;
            return i.h = n < 0 ? 360 + n : n, Je(e, i)
        }, mix: function (e, t, i) {
            i || (i = new ee(50));
            var n = i.value / 100, r = 2 * n - 1, s = He(e).a - He(t).a,
                o = ((r * s == -1 ? r : (r + s) / (1 + r * s)) + 1) / 2, a = 1 - o,
                l = [e.rgb[0] * o + t.rgb[0] * a, e.rgb[1] * o + t.rgb[1] * a, e.rgb[2] * o + t.rgb[2] * a],
                u = e.alpha * n + t.alpha * (1 - n);
            return new c(l, u)
        }, greyscale: function (e) {
            return ze.desaturate(e, new ee(100))
        }, contrast: function (e, t, i, n) {
            if (!e.rgb) return null;
            if (void 0 === i && (i = ze.rgba(255, 255, 255, 1)), void 0 === t && (t = ze.rgba(0, 0, 0, 1)), t.luma() > i.luma()) {
                var r = i;
                i = t, t = r
            }
            return n = void 0 === n ? .43 : Ke(n), e.luma() < n ? i : t
        }, argb: function (e) {
            return new j(e.toARGB())
        }, color: function (e) {
            if (e instanceof ue && /^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(e.value)) {
                var t = e.value.slice(1);
                return new c(t, void 0, "#" + t)
            }
            if (e instanceof c || (e = c.fromKeyword(e.value))) return e.value = void 0, e;
            throw{type: "Argument", message: "argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF"}
        }, tint: function (e, t) {
            return ze.mix(ze.rgb(255, 255, 255), e, t)
        }, shade: function (e, t) {
            return ze.mix(ze.rgb(0, 0, 0), e, t)
        }
    };

    function Xe(e, t, i) {
        var n, r, s, o, a = t.alpha, l = i.alpha, u = [];
        s = l + a * (1 - l);
        for (var h = 0; h < 3; h++) o = e(n = t.rgb[h] / 255, r = i.rgb[h] / 255), s && (o = (l * r + a * (n - l * (n + r - o))) / s), u[h] = 255 * o;
        return new c(u, s)
    }

    var Ye = {
        multiply: function (e, t) {
            return e * t
        }, screen: function (e, t) {
            return e + t - e * t
        }, overlay: function (e, t) {
            return (e *= 2) <= 1 ? Ye.multiply(e, t) : Ye.screen(e - 1, t)
        }, softlight: function (e, t) {
            var i = 1, n = e;
            return t > .5 && (n = 1, i = e > .25 ? Math.sqrt(e) : ((16 * e - 12) * e + 4) * e), e - (1 - 2 * t) * n * (i - e)
        }, hardlight: function (e, t) {
            return Ye.overlay(t, e)
        }, difference: function (e, t) {
            return Math.abs(e - t)
        }, exclusion: function (e, t) {
            return e + t - 2 * e * t
        }, average: function (e, t) {
            return (e + t) / 2
        }, negation: function (e, t) {
            return 1 - Math.abs(e + t - 1)
        }
    };
    for (var et in Ye) Ye.hasOwnProperty(et) && (Xe[et] = Xe.bind(null, Ye[et]));
    var tt = function (e) {
        return Array.isArray(e.value) ? e.value : Array(e)
    }, it = {
        _SELF: function (e) {
            return e
        }, "~": function () {
            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
            return 1 === e.length ? e[0] : new $(e)
        }, extract: function (e, t) {
            return t = t.value - 1, tt(e)[t]
        }, length: function (e) {
            return new ee(tt(e).length)
        }, range: function (e, t, i) {
            var n, r, s = 1, o = [];
            t ? (r = t, n = e.value, i && (s = i.value)) : (n = 1, r = e);
            for (var a = n; a <= r.value; a += s) o.push(new ee(a, r.unit));
            return new ne(o)
        }, each: function (e, t) {
            var i, n, r = this, s = [], o = function (e) {
                return e instanceof u ? e.eval(r.context) : e
            };
            n = !e.value || e instanceof ue ? e.ruleset ? o(e.ruleset).rules : e.rules ? e.rules.map(o) : Array.isArray(e) ? e.map(o) : [o(e)] : Array.isArray(e.value) ? e.value.map(o) : [o(e.value)];
            var a = "@value", l = "@key", c = "@index";
            t.params ? (a = t.params[0] && t.params[0].name, l = t.params[1] && t.params[1].name, c = t.params[2] && t.params[2].name, t = t.rules) : t = t.ruleset;
            for (var h = 0; h < n.length; h++) {
                var f = void 0, p = void 0, v = n[h];
                v instanceof D ? (f = "string" == typeof v.name ? v.name : v.name[0].value, p = v.value) : (f = new ee(h + 1), p = v), v instanceof U || (i = t.rules.slice(0), a && i.push(new D(a, p, !1, !1, this.index, this.currentFileInfo)), c && i.push(new D(c, new ee(h + 1), !1, !1, this.index, this.currentFileInfo)), l && i.push(new D(l, f, !1, !1, this.index, this.currentFileInfo)), s.push(new K([new F([new m("", "&")])], i, t.strictImports, t.visibilityInfo())))
            }
            return new K([new F([new m("", "&")])], s, t.strictImports, t.visibilityInfo()).eval(this.context)
        }
    }, nt = function (e, t, i) {
        if (!(i instanceof ee)) throw{type: "Argument", message: "argument must be a number"};
        return null == t ? t = i.unit : i = i.unify(), new ee(e(parseFloat(i.value)), t)
    }, rt = {
        ceil: null,
        floor: null,
        sqrt: null,
        abs: null,
        tan: "",
        sin: "",
        cos: "",
        atan: "rad",
        asin: "rad",
        acos: "rad"
    };
    for (var st in rt) rt.hasOwnProperty(st) && (rt[st] = nt.bind(null, Math[st], rt[st]));
    rt.round = function (e, t) {
        var i = void 0 === t ? 0 : t.value;
        return nt((function (e) {
            return e.toFixed(i)
        }), null, e)
    };
    var ot = function (e, t) {
        switch ((t = Array.prototype.slice.call(t)).length) {
            case 0:
                throw{type: "Argument", message: "one or more arguments required"}
        }
        var i, n, r, s, o, a, l, u, c = [], h = {};
        for (i = 0; i < t.length; i++) if ((r = t[i]) instanceof ee) if (l = "" !== (a = "" === (s = "" === r.unit.toString() && void 0 !== u ? new ee(r.value, u).unify() : r.unify()).unit.toString() && void 0 !== l ? l : s.unit.toString()) && void 0 === l || "" !== a && "" === c[0].unify().unit.toString() ? a : l, u = "" !== a && void 0 === u ? r.unit.toString() : u, void 0 !== (n = void 0 !== h[""] && "" !== a && a === l ? h[""] : h[a])) o = "" === c[n].unit.toString() && void 0 !== u ? new ee(c[n].value, u).unify() : c[n].unify(), (e && s.value < o.value || !e && s.value > o.value) && (c[n] = r); else {
            if (void 0 !== l && a !== l) throw{type: "Argument", message: "incompatible types"};
            h[a] = c.length, c.push(r)
        } else Array.isArray(t[i].value) && Array.prototype.push.apply(t, Array.prototype.slice.call(t[i].value));
        return 1 == c.length ? c[0] : (t = c.map((function (e) {
            return e.toCSS(this.context)
        })).join(this.context.compress ? "," : ", "), new j((e ? "min" : "max") + "(" + t + ")"))
    }, at = {
        min: function () {
            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
            try {
                return ot(!0, e)
            } catch (e) {
            }
        }, max: function () {
            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
            try {
                return ot(!1, e)
            } catch (e) {
            }
        }, convert: function (e, t) {
            return e.convertTo(t.value)
        }, pi: function () {
            return new ee(Math.PI)
        }, mod: function (e, t) {
            return new ee(e.value % t.value, e.unit)
        }, pow: function (e, t) {
            if ("number" == typeof e && "number" == typeof t) e = new ee(e), t = new ee(t); else if (!(e instanceof ee && t instanceof ee)) throw{
                type: "Argument",
                message: "arguments must be numbers"
            };
            return new ee(Math.pow(e.value, t.value), e.unit)
        }, percentage: function (e) {
            return nt((function (e) {
                return 100 * e
            }), "%", e)
        }
    }, lt = {
        e: function (e) {
            return new ue('"', e instanceof ve ? e.evaluated : e.value, !0)
        }, escape: function (e) {
            return new j(encodeURI(e.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29"))
        }, replace: function (e, t, i, n) {
            var r = e.value;
            return i = "Quoted" === i.type ? i.value : i.toCSS(), r = r.replace(new RegExp(t.value, n ? n.value : ""), i), new ue(e.quote || "", r, e.escaped)
        }, "%": function (e) {
            for (var t = Array.prototype.slice.call(arguments, 1), i = e.value, n = function (e) {
                i = i.replace(/%[sda]/i, (function (i) {
                    var n = "Quoted" === t[e].type && i.match(/s/i) ? t[e].value : t[e].toCSS();
                    return i.match(/[A-Z]$/) ? encodeURIComponent(n) : n
                }))
            }, r = 0; r < t.length; r++) n(r);
            return i = i.replace(/%%/g, "%"), new ue(e.quote || "", i, e.escaped)
        }
    }, ut = function (e, t) {
        return e instanceof t ? L.True : L.False
    }, ct = function (e, t) {
        if (void 0 === t) throw{type: "Argument", message: "missing the required second argument to isunit."};
        if ("string" != typeof (t = "string" == typeof t.value ? t.value : t)) throw{
            type: "Argument",
            message: "Second argument to isunit should be a unit or a string."
        };
        return e instanceof ee && e.unit.is(t) ? L.True : L.False
    }, ht = {
        isruleset: function (e) {
            return ut(e, X)
        }, iscolor: function (e) {
            return ut(e, c)
        }, isnumber: function (e) {
            return ut(e, ee)
        }, isstring: function (e) {
            return ut(e, ue)
        }, iskeyword: function (e) {
            return ut(e, L)
        }, isurl: function (e) {
            return ut(e, ce)
        }, ispixel: function (e) {
            return ct(e, "px")
        }, ispercentage: function (e) {
            return ct(e, "%")
        }, isem: function (e) {
            return ct(e, "em")
        }, isunit: ct, unit: function (e, t) {
            if (!(e instanceof ee)) throw{
                type: "Argument",
                message: "the first argument to unit must be a number" + (e instanceof ie ? ". Have you forgotten parenthesis?" : "")
            };
            return t = t ? t instanceof L ? t.value : t.toCSS() : "", new ee(e.value, t)
        }, "get-unit": function (e) {
            return new j(e.unit)
        }
    }, ft = function (e) {
        var t = {functionRegistry: H, functionCaller: re};
        return H.addMultiple(Ge), H.add("default", Q.eval.bind(Q)), H.addMultiple(Ze), H.addMultiple(Xe), H.addMultiple(function (e) {
            var t = function (e, t) {
                return new ce(t, e.index, e.currentFileInfo).eval(e.context)
            };
            return {
                "data-uri": function (i, n) {
                    n || (n = i, i = null);
                    var s = i && i.value, o = n.value, a = this.currentFileInfo,
                        l = a.rewriteUrls ? a.currentDirectory : a.entryPath, u = o.indexOf("#"), c = "";
                    -1 !== u && (c = o.slice(u), o = o.slice(0, u));
                    var h = _(this.context);
                    h.rawBuffer = !0;
                    var f = e.getFileManager(o, l, h, e, !0);
                    if (!f) return t(this, n);
                    var p = !1;
                    if (i) p = /;base64$/.test(s); else {
                        if ("image/svg+xml" === (s = e.mimeLookup(o))) p = !1; else {
                            var v = e.charsetLookup(s);
                            p = ["US-ASCII", "UTF-8"].indexOf(v) < 0
                        }
                        p && (s += ";base64")
                    }
                    var d = f.loadFileSync(o, l, h, e);
                    if (!d.contents) return r.warn("Skipped data-uri embedding of " + o + " because file not found"), t(this, n || i);
                    var m = d.contents;
                    if (p && !e.encodeBase64) return t(this, n);
                    var g = "data:" + s + "," + (m = p ? e.encodeBase64(m) : encodeURIComponent(m)) + c;
                    return new ce(new ue('"' + g + '"', g, !1, this.index, this.currentFileInfo), this.index, this.currentFileInfo)
                }
            }
        }(e)), H.addMultiple(it), H.addMultiple(rt), H.addMultiple(at), H.addMultiple(lt), H.addMultiple({
            "svg-gradient": function (e) {
                var t, i, n, r, s, o, a, l, u = "linear", h = 'x="0" y="0" width="1" height="1"', f = {compress: !1},
                    p = e.toCSS(f);

                function v() {
                    throw{
                        type: "Argument",
                        message: "svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position] or direction, color list"
                    }
                }

                switch (2 == arguments.length ? (arguments[1].value.length < 2 && v(), t = arguments[1].value) : arguments.length < 3 ? v() : t = Array.prototype.slice.call(arguments, 1), p) {
                    case"to bottom":
                        i = 'x1="0%" y1="0%" x2="0%" y2="100%"';
                        break;
                    case"to right":
                        i = 'x1="0%" y1="0%" x2="100%" y2="0%"';
                        break;
                    case"to bottom right":
                        i = 'x1="0%" y1="0%" x2="100%" y2="100%"';
                        break;
                    case"to top right":
                        i = 'x1="0%" y1="100%" x2="100%" y2="0%"';
                        break;
                    case"ellipse":
                    case"ellipse at center":
                        u = "radial", i = 'cx="50%" cy="50%" r="75%"', h = 'x="-50" y="-50" width="101" height="101"';
                        break;
                    default:
                        throw{
                            type: "Argument",
                            message: "svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"
                        }
                }
                for (n = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><' + u + 'Gradient id="g" ' + i + ">", r = 0; r < t.length; r += 1) t[r] instanceof ne ? (s = t[r].value[0], o = t[r].value[1]) : (s = t[r], o = void 0), s instanceof c && ((0 === r || r + 1 === t.length) && void 0 === o || o instanceof ee) || v(), a = o ? o.toCSS(f) : 0 === r ? "0%" : "100%", l = s.alpha, n += '<stop offset="' + a + '" stop-color="' + s.toRGB() + '"' + (l < 1 ? ' stop-opacity="' + l + '"' : "") + "/>";
                return n += "</" + u + "Gradient><rect " + h + ' fill="url(#g)" /></svg>', n = encodeURIComponent(n), new ce(new ue("'" + (n = "data:image/svg+xml," + n) + "'", n, !1, this.index, this.currentFileInfo), this.index, this.currentFileInfo)
            }
        }), H.addMultiple(ht), t
    };

    function pt(e, t) {
        var i, n = (t = t || {}).variables, r = new q.Eval(t);
        "object" != typeof n || Array.isArray(n) || (n = Object.keys(n).map((function (e) {
            var t = n[e];
            return t instanceof Ce.Value || (t instanceof Ce.Expression || (t = new Ce.Expression([t])), t = new Ce.Value([t])), new Ce.Declaration("@" + e, t, !1, null, 0)
        })), r.frames = [new Ce.Ruleset(null, n)]);
        var s, o,
            a = [new De.JoinSelectorVisitor, new De.MarkVisibleSelectorsVisitor(!0), new De.ExtendVisitor, new De.ToCSSVisitor({compress: Boolean(t.compress)})],
            l = [];
        if (t.pluginManager) {
            o = t.pluginManager.visitor();
            for (var u = 0; u < 2; u++) for (o.first(); s = o.get();) s.isPreEvalVisitor ? 0 !== u && -1 !== l.indexOf(s) || (l.push(s), s.run(e)) : 0 !== u && -1 !== a.indexOf(s) || (s.isPreVisitor ? a.unshift(s) : a.push(s))
        }
        i = e.eval(r);
        for (u = 0; u < a.length; u++) a[u].run(i);
        if (t.pluginManager) for (o.first(); s = o.get();) -1 === a.indexOf(s) && -1 === l.indexOf(s) && s.run(i);
        return i
    }

    var vt, dt = function () {
        function e(e) {
            this.less = e, this.visitors = [], this.preProcessors = [], this.postProcessors = [], this.installedPlugins = [], this.fileManagers = [], this.iterator = -1, this.pluginCache = {}, this.Loader = new e.PluginLoader(e)
        }

        return e.prototype.addPlugins = function (e) {
            if (e) for (var t = 0; t < e.length; t++) this.addPlugin(e[t])
        }, e.prototype.addPlugin = function (e, t, i) {
            this.installedPlugins.push(e), t && (this.pluginCache[t] = e), e.install && e.install(this.less, this, i || this.less.functions.functionRegistry)
        }, e.prototype.get = function (e) {
            return this.pluginCache[e]
        }, e.prototype.addVisitor = function (e) {
            this.visitors.push(e)
        }, e.prototype.addPreProcessor = function (e, t) {
            var i;
            for (i = 0; i < this.preProcessors.length && !(this.preProcessors[i].priority >= t); i++) ;
            this.preProcessors.splice(i, 0, {preProcessor: e, priority: t})
        }, e.prototype.addPostProcessor = function (e, t) {
            var i;
            for (i = 0; i < this.postProcessors.length && !(this.postProcessors[i].priority >= t); i++) ;
            this.postProcessors.splice(i, 0, {postProcessor: e, priority: t})
        }, e.prototype.addFileManager = function (e) {
            this.fileManagers.push(e)
        }, e.prototype.getPreProcessors = function () {
            for (var e = [], t = 0; t < this.preProcessors.length; t++) e.push(this.preProcessors[t].preProcessor);
            return e
        }, e.prototype.getPostProcessors = function () {
            for (var e = [], t = 0; t < this.postProcessors.length; t++) e.push(this.postProcessors[t].postProcessor);
            return e
        }, e.prototype.getVisitors = function () {
            return this.visitors
        }, e.prototype.visitor = function () {
            var e = this;
            return {
                first: function () {
                    return e.iterator = -1, e.visitors[e.iterator]
                }, get: function () {
                    return e.iterator += 1, e.visitors[e.iterator]
                }
            }
        }, e.prototype.getFileManagers = function () {
            return this.fileManagers
        }, e
    }(), mt = function (e, t) {
        return !t && vt || (vt = new dt(e)), vt
    };
    var gt, yt, bt = function (e) {
        var t = e.match(/^v(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\+([0-9A-Za-z-.]+))?$/);
        if (!t) throw new Error("Unable to parse: " + e);
        return {
            major: parseInt(t[1], 10),
            minor: parseInt(t[2], 10),
            patch: parseInt(t[3], 10),
            pre: t[4] || "",
            build: t[5] || ""
        }
    };

    function wt(e, t) {
        var i, n, o, a;
        o = function (e) {
            return function () {
                function t(e, t) {
                    this.root = e, this.imports = t
                }

                return t.prototype.toCSS = function (t) {
                    var i, n, s = {};
                    try {
                        i = pt(this.root, t)
                    } catch (e) {
                        throw new O(e, this.imports)
                    }
                    try {
                        var o = Boolean(t.compress);
                        o && r.warn("The compress option has been deprecated. We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.");
                        var a = {
                            compress: o,
                            dumpLineNumbers: t.dumpLineNumbers,
                            strictUnits: Boolean(t.strictUnits),
                            numPrecision: 8
                        };
                        t.sourceMap ? (n = new e(t.sourceMap), s.css = n.toCSS(i, a, this.imports)) : s.css = i.toCSS(a)
                    } catch (e) {
                        throw new O(e, this.imports)
                    }
                    if (t.pluginManager) for (var l = t.pluginManager.getPostProcessors(), u = 0; u < l.length; u++) s.css = l[u].process(s.css, {
                        sourceMap: n,
                        options: t,
                        imports: this.imports
                    });
                    for (var c in t.sourceMap && (s.map = n.getExternalSourceMap()), s.imports = [], this.imports.files) this.imports.files.hasOwnProperty(c) && c !== this.imports.rootFilename && s.imports.push(c);
                    return s
                }, t
            }()
        }(n = function (e, t) {
            return function () {
                function i(e) {
                    this.options = e
                }

                return i.prototype.toCSS = function (t, i, n) {
                    var r = new e({
                        contentsIgnoredCharsMap: n.contentsIgnoredChars,
                        rootNode: t,
                        contentsMap: n.contents,
                        sourceMapFilename: this.options.sourceMapFilename,
                        sourceMapURL: this.options.sourceMapURL,
                        outputFilename: this.options.sourceMapOutputFilename,
                        sourceMapBasepath: this.options.sourceMapBasepath,
                        sourceMapRootpath: this.options.sourceMapRootpath,
                        outputSourceFiles: this.options.outputSourceFiles,
                        sourceMapGenerator: this.options.sourceMapGenerator,
                        sourceMapFileInline: this.options.sourceMapFileInline,
                        disableSourcemapAnnotation: this.options.disableSourcemapAnnotation
                    }), s = r.toCSS(i);
                    return this.sourceMap = r.sourceMap, this.sourceMapURL = r.sourceMapURL, this.options.sourceMapInputFilename && (this.sourceMapInputFilename = r.normalizeFilename(this.options.sourceMapInputFilename)), void 0 !== this.options.sourceMapBasepath && void 0 !== this.sourceMapURL && (this.sourceMapURL = r.removeBasepath(this.sourceMapURL)), s + this.getCSSAppendage()
                }, i.prototype.getCSSAppendage = function () {
                    var e = this.sourceMapURL;
                    if (this.options.sourceMapFileInline) {
                        if (void 0 === this.sourceMap) return "";
                        e = "data:application/json;base64," + t.encodeBase64(this.sourceMap)
                    }
                    return this.options.disableSourcemapAnnotation ? "" : e ? "/*# sourceMappingURL=" + e + " */" : ""
                }, i.prototype.getExternalSourceMap = function () {
                    return this.sourceMap
                }, i.prototype.setExternalSourceMap = function (e) {
                    this.sourceMap = e
                }, i.prototype.isInline = function () {
                    return this.options.sourceMapFileInline
                }, i.prototype.getSourceMapURL = function () {
                    return this.sourceMapURL
                }, i.prototype.getOutputFilename = function () {
                    return this.options.sourceMapOutputFilename
                }, i.prototype.getInputFilename = function () {
                    return this.sourceMapInputFilename
                }, i
            }()
        }(i = function (e) {
            return function () {
                function t(t) {
                    this._css = [], this._rootNode = t.rootNode, this._contentsMap = t.contentsMap, this._contentsIgnoredCharsMap = t.contentsIgnoredCharsMap, t.sourceMapFilename && (this._sourceMapFilename = t.sourceMapFilename.replace(/\\/g, "/")), this._outputFilename = t.outputFilename, this.sourceMapURL = t.sourceMapURL, t.sourceMapBasepath && (this._sourceMapBasepath = t.sourceMapBasepath.replace(/\\/g, "/")), t.sourceMapRootpath ? (this._sourceMapRootpath = t.sourceMapRootpath.replace(/\\/g, "/"), "/" !== this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) && (this._sourceMapRootpath += "/")) : this._sourceMapRootpath = "", this._outputSourceFiles = t.outputSourceFiles, this._sourceMapGeneratorConstructor = e.getSourceMapGenerator(), this._lineNumber = 0, this._column = 0
                }

                return t.prototype.removeBasepath = function (e) {
                    return this._sourceMapBasepath && 0 === e.indexOf(this._sourceMapBasepath) && ("\\" !== (e = e.substring(this._sourceMapBasepath.length)).charAt(0) && "/" !== e.charAt(0) || (e = e.substring(1))), e
                }, t.prototype.normalizeFilename = function (e) {
                    return e = e.replace(/\\/g, "/"), e = this.removeBasepath(e), (this._sourceMapRootpath || "") + e
                }, t.prototype.add = function (e, t, i, n) {
                    if (e) {
                        var r, s, o, a, l;
                        if (t && t.filename) {
                            var u = this._contentsMap[t.filename];
                            if (this._contentsIgnoredCharsMap[t.filename] && ((i -= this._contentsIgnoredCharsMap[t.filename]) < 0 && (i = 0), u = u.slice(this._contentsIgnoredCharsMap[t.filename])), void 0 === u) return void this._css.push(e);
                            a = (s = (u = u.substring(0, i)).split("\n"))[s.length - 1]
                        }
                        if (o = (r = e.split("\n"))[r.length - 1], t && t.filename) if (n) for (l = 0; l < r.length; l++) this._sourceMapGenerator.addMapping({
                            generated: {
                                line: this._lineNumber + l + 1,
                                column: 0 === l ? this._column : 0
                            },
                            original: {line: s.length + l, column: 0 === l ? a.length : 0},
                            source: this.normalizeFilename(t.filename)
                        }); else this._sourceMapGenerator.addMapping({
                            generated: {
                                line: this._lineNumber + 1,
                                column: this._column
                            }, original: {line: s.length, column: a.length}, source: this.normalizeFilename(t.filename)
                        });
                        1 === r.length ? this._column += o.length : (this._lineNumber += r.length - 1, this._column = o.length), this._css.push(e)
                    }
                }, t.prototype.isEmpty = function () {
                    return 0 === this._css.length
                }, t.prototype.toCSS = function (e) {
                    if (this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({
                        file: this._outputFilename,
                        sourceRoot: null
                    }), this._outputSourceFiles) for (var t in this._contentsMap) if (this._contentsMap.hasOwnProperty(t)) {
                        var i = this._contentsMap[t];
                        this._contentsIgnoredCharsMap[t] && (i = i.slice(this._contentsIgnoredCharsMap[t])), this._sourceMapGenerator.setSourceContent(this.normalizeFilename(t), i)
                    }
                    if (this._rootNode.genCSS(e, this), this._css.length > 0) {
                        var n = void 0, r = JSON.stringify(this._sourceMapGenerator.toJSON());
                        this.sourceMapURL ? n = this.sourceMapURL : this._sourceMapFilename && (n = this._sourceMapFilename), this.sourceMapURL = n, this.sourceMap = r
                    }
                    return this._css.join("")
                }, t
            }()
        }(e = new s(e, t)), e)), a = function (e) {
            return function () {
                function t(e, t, i) {
                    this.less = e, this.rootFilename = i.filename, this.paths = t.paths || [], this.contents = {}, this.contentsIgnoredChars = {}, this.mime = t.mime, this.error = null, this.context = t, this.queue = [], this.files = {}
                }

                return t.prototype.push = function (t, i, n, s, o) {
                    var a = this, l = this.context.pluginManager.Loader;
                    this.queue.push(t);
                    var u = function (e, i, n) {
                        a.queue.splice(a.queue.indexOf(t), 1);
                        var l = n === a.rootFilename;
                        s.optional && e ? (o(null, {rules: []}, !1, null), r.info("The file " + n + " was skipped because it was not found and the import was marked optional.")) : (a.files[n] || s.inline || (a.files[n] = {
                            root: i,
                            options: s
                        }), e && !a.error && (a.error = e), o(e, i, l, n))
                    }, c = {
                        rewriteUrls: this.context.rewriteUrls,
                        entryPath: n.entryPath,
                        rootpath: n.rootpath,
                        rootFilename: n.rootFilename
                    }, h = e.getFileManager(t, n.currentDirectory, this.context, e);
                    if (h) {
                        var f, p, v = function (e) {
                            var t, i = e.filename, r = e.contents.replace(/^\uFEFF/, "");
                            c.currentDirectory = h.getPath(i), c.rewriteUrls && (c.rootpath = h.join(a.context.rootpath || "", h.pathDiff(c.currentDirectory, c.entryPath)), !h.isPathAbsolute(c.rootpath) && h.alwaysMakePathsAbsolute() && (c.rootpath = h.join(c.entryPath, c.rootpath))), c.filename = i;
                            var o = new q.Parse(a.context);
                            o.processImports = !1, a.contents[i] = r, (n.reference || s.reference) && (c.reference = !0), s.isPlugin ? (t = l.evalPlugin(r, o, a, s.pluginArgs, c)) instanceof O ? u(t, null, i) : u(null, t, i) : s.inline ? u(null, r, i) : !a.files[i] || a.files[i].options.multiple || s.multiple ? new Ue(o, a, c).parse(r, (function (e, t) {
                                u(e, t, i)
                            })) : u(null, a.files[i].root, i)
                        }, d = _(this.context);
                        i && (d.ext = s.isPlugin ? ".js" : ".less"), s.isPlugin ? (d.mime = "application/javascript", d.syncImport ? f = l.loadPluginSync(t, n.currentDirectory, d, e, h) : p = l.loadPlugin(t, n.currentDirectory, d, e, h)) : d.syncImport ? f = h.loadFileSync(t, n.currentDirectory, d, e) : p = h.loadFile(t, n.currentDirectory, d, e, (function (e, t) {
                            e ? u(e) : v(t)
                        })), f ? f.filename ? v(f) : u(f) : p && p.then(v, u)
                    } else u({message: "Could not find a file-manager for " + t})
                }, t
            }()
        }(e);
        var u, c = function (e, t, i) {
            var n = function (e, i, r) {
                if ("function" == typeof i ? (r = i, i = M(this.options, {})) : i = M(this.options, i || {}), !r) {
                    var s = this;
                    return new Promise((function (t, r) {
                        n.call(s, e, i, (function (e, i) {
                            e ? r(e) : t(i)
                        }))
                    }))
                }
                this.parse(e, i, (function (e, i, n, s) {
                    if (e) return r(e);
                    var o;
                    try {
                        o = new t(i, n).toCSS(s)
                    } catch (e) {
                        return r(e)
                    }
                    r(null, o)
                }))
            };
            return n
        }(0, o), h = function (e, t, i) {
            var n = function (e, t, r) {
                if ("function" == typeof t ? (r = t, t = M(this.options, {})) : t = M(this.options, t || {}), !r) {
                    var s = this;
                    return new Promise((function (i, r) {
                        n.call(s, e, t, (function (e, t) {
                            e ? r(e) : i(t)
                        }))
                    }))
                }
                var o, a = void 0, l = new mt(this, !t.reUsePluginManager);
                if (t.pluginManager = l, o = new q.Parse(t), t.rootFileInfo) a = t.rootFileInfo; else {
                    var u = t.filename || "input", c = u.replace(/[^\/\\]*$/, "");
                    (a = {
                        filename: u,
                        rewriteUrls: o.rewriteUrls,
                        rootpath: o.rootpath || "",
                        currentDirectory: c,
                        entryPath: c,
                        rootFilename: u
                    }).rootpath && "/" !== a.rootpath.slice(-1) && (a.rootpath += "/")
                }
                var h = new i(this, o, a);
                this.importManager = h, t.plugins && t.plugins.forEach((function (e) {
                    var t, i;
                    if (e.fileContent) {
                        if (i = e.fileContent.replace(/^\uFEFF/, ""), (t = l.Loader.evalPlugin(i, o, h, e.options, e.filename)) instanceof O) return r(t)
                    } else l.addPlugin(e)
                })), new Ue(o, h, a).parse(e, (function (e, i) {
                    if (e) return r(e);
                    r(null, i, h, t)
                }), t)
            };
            return n
        }(0, 0, a), f = bt("v4.1.2"), p = {
            version: [f.major, f.minor, f.patch],
            data: l,
            tree: Ce,
            Environment: s,
            AbstractFileManager: ke,
            AbstractPluginLoader: _e,
            environment: e,
            visitors: De,
            Parser: Ue,
            functions: ft(e),
            contexts: q,
            SourceMapOutput: i,
            SourceMapBuilder: n,
            ParseTree: o,
            ImportManager: a,
            render: c,
            parse: h,
            LessError: O,
            transformTree: pt,
            utils: P,
            PluginManager: mt,
            logger: r
        }, v = function (e) {
            return function () {
                var t = Object.create(e.prototype);
                return e.apply(t, Array.prototype.slice.call(arguments, 0)), t
            }
        }, d = Object.create(p);
        for (var m in p.tree) if ("function" == typeof (u = p.tree[m])) d[m.toLowerCase()] = v(u); else for (var g in d[m] = Object.create(null), u) d[m][g.toLowerCase()] = v(u[g]);
        return p.parse = p.parse.bind(d), p.render = p.render.bind(d), d
    }

    var xt = {}, St = function () {
    };
    St.prototype = Object.assign(new ke, {
        alwaysMakePathsAbsolute: function () {
            return !0
        }, join: function (e, t) {
            return e ? this.extractUrlParts(t, e).path : t
        }, doXHR: function (e, t, i, n) {
            var r = new XMLHttpRequest, s = !gt.isFileProtocol || gt.fileAsync;

            function o(t, i, n) {
                t.status >= 200 && t.status < 300 ? i(t.responseText, t.getResponseHeader("Last-Modified")) : "function" == typeof n && n(t.status, e)
            }

            "function" == typeof r.overrideMimeType && r.overrideMimeType("text/css"), yt.debug("XHR: Getting '" + e + "'"), r.open("GET", e, s), r.setRequestHeader("Accept", t || "text/x-less, text/css; q=0.9, */*; q=0.5"), r.send(null), gt.isFileProtocol && !gt.fileAsync ? 0 === r.status || r.status >= 200 && r.status < 300 ? i(r.responseText) : n(r.status, e) : s ? r.onreadystatechange = function () {
                4 == r.readyState && o(r, i, n)
            } : o(r, i, n)
        }, supports: function () {
            return !0
        }, clearFileCache: function () {
            xt = {}
        }, loadFile: function (e, t, i, n) {
            t && !this.isPathAbsolute(e) && (e = t + e), e = i.ext ? this.tryAppendExtension(e, i.ext) : e, i = i || {};
            var r = this.extractUrlParts(e, window.location.href).url, s = this;
            return new Promise((function (e, t) {
                if (i.useFileCache && xt[r]) try {
                    var n = xt[r];
                    return e({contents: n, filename: r, webInfo: {lastModified: new Date}})
                } catch (e) {
                    return t({filename: r, message: "Error loading file " + r + " error was " + e.message})
                }
                s.doXHR(r, i.mime, (function (t, i) {
                    xt[r] = t, e({contents: t, filename: r, webInfo: {lastModified: i}})
                }), (function (e, i) {
                    t({type: "File", message: "'" + i + "' wasn't found (" + e + ")", href: r})
                }))
            }))
        }
    });
    var It = function (e, t) {
        return gt = e, yt = t, St
    }, Ct = function (e) {
        this.less = e
    };
    Ct.prototype = Object.assign(new _e, {
        loadPlugin: function (e, t, i, n, r) {
            return new Promise((function (s, o) {
                r.loadFile(e, t, i, n).then(s).catch(o)
            }))
        }
    });
    var kt = function (t, n, r) {
        return {
            add: function (s, o) {
                r.errorReporting && "html" !== r.errorReporting ? "console" === r.errorReporting ? function (e, t) {
                    var i = e.filename || t, s = [],
                        o = (e.type || "Syntax") + "Error: " + (e.message || "There is an error in your .less file") + " in " + i,
                        a = function (e, t, i) {
                            void 0 !== e.extract[t] && s.push("{line} {content}".replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (t - 1)).replace(/\{class\}/, i).replace(/\{content\}/, e.extract[t]))
                        };
                    e.line && (a(e, 0, ""), a(e, 1, "line"), a(e, 2, ""), o += " on line " + e.line + ", column " + (e.column + 1) + ":\n" + s.join("\n")), e.stack && (e.extract || r.logLevel >= 4) && (o += "\nStack Trace\n" + e.stack), n.logger.error(o)
                }(s, o) : "function" == typeof r.errorReporting && r.errorReporting("add", s, o) : function (n, s) {
                    var o, a, l = "less-error-message:" + e(s || ""), u = t.document.createElement("div"), c = [],
                        h = n.filename || s, f = h.match(/([^\/]+(\?.*)?)$/)[1];
                    u.id = l, u.className = "less-error-message", a = "<h3>" + (n.type || "Syntax") + "Error: " + (n.message || "There is an error in your .less file") + '</h3><p>in <a href="' + h + '">' + f + "</a> ";
                    var p = function (e, t, i) {
                        void 0 !== e.extract[t] && c.push('<li><label>{line}</label><pre class="{class}">{content}</pre></li>'.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (t - 1)).replace(/\{class\}/, i).replace(/\{content\}/, e.extract[t]))
                    };
                    n.line && (p(n, 0, ""), p(n, 1, "line"), p(n, 2, ""), a += "on line " + n.line + ", column " + (n.column + 1) + ":</p><ul>" + c.join("") + "</ul>"), n.stack && (n.extract || r.logLevel >= 4) && (a += "<br/>Stack Trace</br />" + n.stack.split("\n").slice(1).join("<br/>")), u.innerHTML = a, i(t.document, [".less-error-message ul, .less-error-message li {", "list-style-type: none;", "margin-right: 15px;", "padding: 4px 0;", "margin: 0;", "}", ".less-error-message label {", "font-size: 12px;", "margin-right: 15px;", "padding: 4px 0;", "color: #cc7777;", "}", ".less-error-message pre {", "color: #dd6666;", "padding: 4px 0;", "margin: 0;", "display: inline-block;", "}", ".less-error-message pre.line {", "color: #ff0000;", "}", ".less-error-message h3 {", "font-size: 20px;", "font-weight: bold;", "padding: 15px 0 5px 0;", "margin: 0;", "}", ".less-error-message a {", "color: #10a", "}", ".less-error-message .error {", "color: red;", "font-weight: bold;", "padding-bottom: 2px;", "border-bottom: 1px dashed red;", "}"].join("\n"), {title: "error-message"}), u.style.cssText = ["font-family: Arial, sans-serif", "border: 1px solid #e00", "background-color: #eee", "border-radius: 5px", "-webkit-border-radius: 5px", "-moz-border-radius: 5px", "color: #e00", "padding: 15px", "margin-bottom: 15px"].join(";"), "development" === r.env && (o = setInterval((function () {
                        var e = t.document, i = e.body;
                        i && (e.getElementById(l) ? i.replaceChild(u, e.getElementById(l)) : i.insertBefore(u, i.firstChild), clearInterval(o))
                    }), 10))
                }(s, o)
            }, remove: function (i) {
                r.errorReporting && "html" !== r.errorReporting ? "console" === r.errorReporting || "function" == typeof r.errorReporting && r.errorReporting("remove", i) : function (i) {
                    var n = t.document.getElementById("less-error-message:" + e(i));
                    n && n.parentNode.removeChild(n)
                }(i)
            }
        }
    }, _t = {
        javascriptEnabled: !1,
        depends: !1,
        compress: !1,
        lint: !1,
        paths: [],
        color: !0,
        strictImports: !1,
        insecure: !1,
        rootpath: "",
        rewriteUrls: !1,
        math: 1,
        strictUnits: !1,
        globalVars: null,
        modifyVars: null,
        urlArgs: ""
    };
    if (window.less) for (var At in window.less) window.less.hasOwnProperty(At) && (_t[At] = window.less[At]);
    !function (e, i) {
        t(i, n(e)), void 0 === i.isFileProtocol && (i.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(e.location.protocol)), i.async = i.async || !1, i.fileAsync = i.fileAsync || !1, i.poll = i.poll || (i.isFileProtocol ? 1e3 : 1500), i.env = i.env || ("127.0.0.1" == e.location.hostname || "0.0.0.0" == e.location.hostname || "localhost" == e.location.hostname || e.location.port && e.location.port.length > 0 || i.isFileProtocol ? "development" : "production");
        var r = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(e.location.hash);
        r && (i.dumpLineNumbers = r[1]), void 0 === i.useFileCache && (i.useFileCache = !0), void 0 === i.onReady && (i.onReady = !0), i.relativeUrls && (i.rewriteUrls = "all")
    }(window, _t), _t.plugins = _t.plugins || [], window.LESS_PLUGINS && (_t.plugins = _t.plugins.concat(window.LESS_PLUGINS));
    var Mt, Et, Pt, Rt = function (e, n) {
        var r = e.document, s = wt();
        s.options = n;
        var o = s.environment, a = It(n, s.logger), l = new a;
        o.addFileManager(l), s.FileManager = a, s.PluginLoader = Ct, function (e, t) {
            t.logLevel = void 0 !== t.logLevel ? t.logLevel : "development" === t.env ? 3 : 1, t.loggers || (t.loggers = [{
                debug: function (e) {
                    t.logLevel >= 4 && console.log(e)
                }, info: function (e) {
                    t.logLevel >= 3 && console.log(e)
                }, warn: function (e) {
                    t.logLevel >= 2 && console.warn(e)
                }, error: function (e) {
                    t.logLevel >= 1 && console.error(e)
                }
            }]);
            for (var i = 0; i < t.loggers.length; i++) e.logger.addListener(t.loggers[i])
        }(s, n);
        var u = kt(e, s, n), c = s.cache = n.cache || function (e, t, i) {
            var n = null;
            if ("development" !== t.env) try {
                n = void 0 === e.localStorage ? null : e.localStorage
            } catch (e) {
            }
            return {
                setCSS: function (e, t, r, s) {
                    if (n) {
                        i.info("saving " + e + " to cache.");
                        try {
                            n.setItem(e, s), n.setItem(e + ":timestamp", t), r && n.setItem(e + ":vars", JSON.stringify(r))
                        } catch (t) {
                            i.error('failed to save "' + e + '" to local storage for caching.')
                        }
                    }
                }, getCSS: function (e, t, i) {
                    var r = n && n.getItem(e), s = n && n.getItem(e + ":timestamp"), o = n && n.getItem(e + ":vars");
                    if (i = i || {}, o = o || "{}", s && t.lastModified && new Date(t.lastModified).valueOf() === new Date(s).valueOf() && JSON.stringify(i) === o) return r
                }
            }
        }(e, n, s.logger);
        !function () {
            function e() {
                throw{type: "Runtime", message: "Image size functions are not supported in browser version of less"}
            }

            var t = {
                "image-size": function (t) {
                    return e(), -1
                }, "image-width": function (t) {
                    return e(), -1
                }, "image-height": function (t) {
                    return e(), -1
                }
            };
            H.addMultiple(t)
        }(s.environment), n.functions && s.functions.functionRegistry.addMultiple(n.functions);
        var h = /^text\/(x-)?less$/;

        function f(e) {
            var t = {};
            for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
            return t
        }

        function p(e, t) {
            var i = Array.prototype.slice.call(arguments, 2);
            return function () {
                var n = i.concat(Array.prototype.slice.call(arguments, 0));
                return e.apply(t, n)
            }
        }

        function v(e) {
            for (var t, i = r.getElementsByTagName("style"), o = 0; o < i.length; o++) if ((t = i[o]).type.match(h)) {
                var a = f(n);
                a.modifyVars = e;
                var l = t.innerHTML || "";
                a.filename = r.location.href.replace(/#.*$/, ""), s.render(l, a, p((function (e, t, i) {
                    t ? u.add(t, "inline") : (e.type = "text/css", e.styleSheet ? e.styleSheet.cssText = i.css : e.innerHTML = i.css)
                }), null, t))
            }
        }

        function d(e, i, r, a, h) {
            var p = f(n);
            t(p, e), p.mime = e.type, h && (p.modifyVars = h), l.loadFile(e.href, null, p, o).then((function (t) {
                !function (t) {
                    var n = t.contents, o = t.filename, h = t.webInfo,
                        f = {currentDirectory: l.getPath(o), filename: o, rootFilename: o, rewriteUrls: p.rewriteUrls};
                    if (f.entryPath = f.currentDirectory, f.rootpath = p.rootpath || f.currentDirectory, h) {
                        h.remaining = a;
                        var v = c.getCSS(o, h, p.modifyVars);
                        if (!r && v) return h.local = !0, void i(null, v, n, e, h, o)
                    }
                    u.remove(o), p.rootFileInfo = f, s.render(n, p, (function (t, r) {
                        t ? (t.href = o, i(t)) : (c.setCSS(e.href, h.lastModified, p.modifyVars, r.css), i(null, r.css, n, e, h, o))
                    }))
                }(t)
            })).catch((function (e) {
                console.log(e), i(e)
            }))
        }

        function m(e, t, i) {
            for (var n = 0; n < s.sheets.length; n++) d(s.sheets[n], e, t, s.sheets.length - (n + 1), i)
        }

        return s.watch = function () {
            return s.watchMode || (s.env = "development", "development" === s.env && (s.watchTimer = setInterval((function () {
                s.watchMode && (l.clearFileCache(), m((function (t, n, r, s, o) {
                    t ? u.add(t, t.href || s.href) : n && i(e.document, n, s)
                })))
            }), n.poll))), this.watchMode = !0, !0
        }, s.unwatch = function () {
            return clearInterval(s.watchTimer), this.watchMode = !1, !1
        }, s.registerStylesheetsImmediately = function () {
            var e = r.getElementsByTagName("link");
            s.sheets = [];
            for (var t = 0; t < e.length; t++) ("stylesheet/less" === e[t].rel || e[t].rel.match(/stylesheet/) && e[t].type.match(h)) && s.sheets.push(e[t])
        }, s.registerStylesheets = function () {
            return new Promise((function (e, t) {
                s.registerStylesheetsImmediately(), e()
            }))
        }, s.modifyVars = function (e) {
            return s.refresh(!0, e, !1)
        }, s.refresh = function (t, n, r) {
            return (t || r) && !1 !== r && l.clearFileCache(), new Promise((function (r, o) {
                var a, l, c, h;
                a = l = new Date, 0 === (h = s.sheets.length) ? (l = new Date, c = l - a, s.logger.info("Less has finished and no sheets were loaded."), r({
                    startTime: a,
                    endTime: l,
                    totalMilliseconds: c,
                    sheets: s.sheets.length
                })) : m((function (t, n, f, p, v) {
                    if (t) return u.add(t, t.href || p.href), void o(t);
                    v.local ? s.logger.info("Loading " + p.href + " from cache.") : s.logger.info("Rendered " + p.href + " successfully."), i(e.document, n, p), s.logger.info("CSS for " + p.href + " generated in " + (new Date - l) + "ms"), 0 === --h && (c = new Date - a, s.logger.info("Less has finished. CSS generated in " + c + "ms"), r({
                        startTime: a,
                        endTime: l,
                        totalMilliseconds: c,
                        sheets: s.sheets.length
                    })), l = new Date
                }), t, n), v(n)
            }))
        }, s.refreshStyles = v, s
    }(window, _t);

    function Ot(e) {
        e.filename && console.warn(e), _t.async || Et.removeChild(Pt)
    }

    return window.less = Rt, _t.onReady && (/!watch/.test(window.location.hash) && Rt.watch(), _t.async || (Mt = "body { display: none !important }", Et = document.head || document.getElementsByTagName("head")[0], (Pt = document.createElement("style")).type = "text/css", Pt.styleSheet ? Pt.styleSheet.cssText = Mt : Pt.appendChild(document.createTextNode(Mt)), Et.appendChild(Pt)), Rt.registerStylesheetsImmediately(), Rt.pageLoadFinished = Rt.refresh("development" === Rt.env).then(Ot, Ot)), Rt
}));
//# sourceMappingURL=less.min.js.map