Best Python code snippet using robotframework-pageobjects_python
fontawesome-iconpicker.min.js
Source:fontawesome-iconpicker.min.js  
1/*!2 * Font Awesome Icon Picker3 * https://farbelous.github.io/fontawesome-iconpicker/4 *5 * @author Javi Aguilar, itsjavi.com6 * @license MIT License7 * @see https://github.com/farbelous/fontawesome-iconpicker/blob/master/LICENSE8 */9!function (e) {10    "function" == typeof define && define.amd ? define(["jquery"], e) : e(jQuery)11}(function (j) {12    j.ui = j.ui || {};13    j.ui.version = "1.12.1";14    !function () {15        var r, y = Math.max, x = Math.abs, s = /left|center|right/, i = /top|center|bottom/,16            c = /[\+\-]\d+(\.[\d]+)?%?/, f = /^\w+/, l = /%$/, o = j.fn.pos;17        function q(e, a, t) {18            return [parseFloat(e[0]) * (l.test(e[0]) ? a / 100 : 1), parseFloat(e[1]) * (l.test(e[1]) ? t / 100 : 1)]19        }20        function C(e, a) {21            return parseInt(j.css(e, a), 10) || 022        }23        j.pos = {24            scrollbarWidth: function () {25                if (void 0 !== r) return r;26                var e, a,27                    t = j("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),28                    s = t.children()[0];29                return j("body").append(t), e = s.offsetWidth, t.css("overflow", "scroll"), e === (a = s.offsetWidth) && (a = t[0].clientWidth), t.remove(), r = e - a30            }, getScrollInfo: function (e) {31                var a = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"),32                    t = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"),33                    s = "scroll" === a || "auto" === a && e.width < e.element[0].scrollWidth;34                return {35                    width: "scroll" === t || "auto" === t && e.height < e.element[0].scrollHeight ? j.pos.scrollbarWidth() : 0,36                    height: s ? j.pos.scrollbarWidth() : 037                }38            }, getWithinInfo: function (e) {39                var a = j(e || window), t = j.isWindow(a[0]), s = !!a[0] && 9 === a[0].nodeType;40                return {41                    element: a,42                    isWindow: t,43                    isDocument: s,44                    offset: !t && !s ? j(e).offset() : {left: 0, top: 0},45                    scrollLeft: a.scrollLeft(),46                    scrollTop: a.scrollTop(),47                    width: a.outerWidth(),48                    height: a.outerHeight()49                }50            }51        }, j.fn.pos = function (h) {52            if (!h || !h.of) return o.apply(this, arguments);53            h = j.extend({}, h);54            var m, p, d, T, u, e, a, t, g = j(h.of), b = j.pos.getWithinInfo(h.within), k = j.pos.getScrollInfo(b),55                w = (h.collision || "flip").split(" "), v = {};56            return e = 9 === (t = (a = g)[0]).nodeType ? {57                width: a.width(),58                height: a.height(),59                offset: {top: 0, left: 0}60            } : j.isWindow(t) ? {61                width: a.width(),62                height: a.height(),63                offset: {top: a.scrollTop(), left: a.scrollLeft()}64            } : t.preventDefault ? {65                width: 0,66                height: 0,67                offset: {top: t.pageY, left: t.pageX}68            } : {69                width: a.outerWidth(),70                height: a.outerHeight(),71                offset: a.offset()72            }, g[0].preventDefault && (h.at = "left top"), p = e.width, d = e.height, T = e.offset, u = j.extend({}, T), j.each(["my", "at"], function () {73                var e, a, t = (h[this] || "").split(" ");74                1 === t.length && (t = s.test(t[0]) ? t.concat(["center"]) : i.test(t[0]) ? ["center"].concat(t) : ["center", "center"]), t[0] = s.test(t[0]) ? t[0] : "center", t[1] = i.test(t[1]) ? t[1] : "center", e = c.exec(t[0]), a = c.exec(t[1]), v[this] = [e ? e[0] : 0, a ? a[0] : 0], h[this] = [f.exec(t[0])[0], f.exec(t[1])[0]]75            }), 1 === w.length && (w[1] = w[0]), "right" === h.at[0] ? u.left += p : "center" === h.at[0] && (u.left += p / 2), "bottom" === h.at[1] ? u.top += d : "center" === h.at[1] && (u.top += d / 2), m = q(v.at, p, d), u.left += m[0], u.top += m[1], this.each(function () {76                var t, e, c = j(this), f = c.outerWidth(), l = c.outerHeight(), a = C(this, "marginLeft"),77                    s = C(this, "marginTop"), r = f + a + C(this, "marginRight") + k.width,78                    i = l + s + C(this, "marginBottom") + k.height, o = j.extend({}, u),79                    n = q(v.my, c.outerWidth(), c.outerHeight());80                "right" === h.my[0] ? o.left -= f : "center" === h.my[0] && (o.left -= f / 2), "bottom" === h.my[1] ? o.top -= l : "center" === h.my[1] && (o.top -= l / 2), o.left += n[0], o.top += n[1], t = {81                    marginLeft: a,82                    marginTop: s83                }, j.each(["left", "top"], function (e, a) {84                    j.ui.pos[w[e]] && j.ui.pos[w[e]][a](o, {85                        targetWidth: p,86                        targetHeight: d,87                        elemWidth: f,88                        elemHeight: l,89                        collisionPosition: t,90                        collisionWidth: r,91                        collisionHeight: i,92                        offset: [m[0] + n[0], m[1] + n[1]],93                        my: h.my,94                        at: h.at,95                        within: b,96                        elem: c97                    })98                }), h.using && (e = function (e) {99                    var a = T.left - o.left, t = a + p - f, s = T.top - o.top, r = s + d - l, i = {100                        target: {element: g, left: T.left, top: T.top, width: p, height: d},101                        element: {element: c, left: o.left, top: o.top, width: f, height: l},102                        horizontal: t < 0 ? "left" : 0 < a ? "right" : "center",103                        vertical: r < 0 ? "top" : 0 < s ? "bottom" : "middle"104                    };105                    p < f && x(a + t) < p && (i.horizontal = "center"), d < l && x(s + r) < d && (i.vertical = "middle"), y(x(a), x(t)) > y(x(s), x(r)) ? i.important = "horizontal" : i.important = "vertical", h.using.call(this, e, i)106                }), c.offset(j.extend(o, {using: e}))107            })108        }, j.ui.pos = {109            _trigger: function (e, a, t, s) {110                a.elem && a.elem.trigger({type: t, position: e, positionData: a, triggered: s})111            }, fit: {112                left: function (e, a) {113                    j.ui.pos._trigger(e, a, "posCollide", "fitLeft");114                    var t, s = a.within, r = s.isWindow ? s.scrollLeft : s.offset.left, i = s.width,115                        c = e.left - a.collisionPosition.marginLeft, f = r - c, l = c + a.collisionWidth - i - r;116                    a.collisionWidth > i ? 0 < f && l <= 0 ? (t = e.left + f + a.collisionWidth - i - r, e.left += f - t) : e.left = 0 < l && f <= 0 ? r : l < f ? r + i - a.collisionWidth : r : 0 < f ? e.left += f : 0 < l ? e.left -= l : e.left = y(e.left - c, e.left), j.ui.pos._trigger(e, a, "posCollided", "fitLeft")117                }, top: function (e, a) {118                    j.ui.pos._trigger(e, a, "posCollide", "fitTop");119                    var t, s = a.within, r = s.isWindow ? s.scrollTop : s.offset.top, i = a.within.height,120                        c = e.top - a.collisionPosition.marginTop, f = r - c, l = c + a.collisionHeight - i - r;121                    a.collisionHeight > i ? 0 < f && l <= 0 ? (t = e.top + f + a.collisionHeight - i - r, e.top += f - t) : e.top = 0 < l && f <= 0 ? r : l < f ? r + i - a.collisionHeight : r : 0 < f ? e.top += f : 0 < l ? e.top -= l : e.top = y(e.top - c, e.top), j.ui.pos._trigger(e, a, "posCollided", "fitTop")122                }123            }, flip: {124                left: function (e, a) {125                    j.ui.pos._trigger(e, a, "posCollide", "flipLeft");126                    var t, s, r = a.within, i = r.offset.left + r.scrollLeft, c = r.width,127                        f = r.isWindow ? r.scrollLeft : r.offset.left, l = e.left - a.collisionPosition.marginLeft,128                        o = l - f, n = l + a.collisionWidth - c - f,129                        h = "left" === a.my[0] ? -a.elemWidth : "right" === a.my[0] ? a.elemWidth : 0,130                        m = "left" === a.at[0] ? a.targetWidth : "right" === a.at[0] ? -a.targetWidth : 0,131                        p = -2 * a.offset[0];132                    o < 0 ? ((t = e.left + h + m + p + a.collisionWidth - c - i) < 0 || t < x(o)) && (e.left += h + m + p) : 0 < n && (0 < (s = e.left - a.collisionPosition.marginLeft + h + m + p - f) || x(s) < n) && (e.left += h + m + p), j.ui.pos._trigger(e, a, "posCollided", "flipLeft")133                }, top: function (e, a) {134                    j.ui.pos._trigger(e, a, "posCollide", "flipTop");135                    var t, s, r = a.within, i = r.offset.top + r.scrollTop, c = r.height,136                        f = r.isWindow ? r.scrollTop : r.offset.top, l = e.top - a.collisionPosition.marginTop,137                        o = l - f, n = l + a.collisionHeight - c - f,138                        h = "top" === a.my[1] ? -a.elemHeight : "bottom" === a.my[1] ? a.elemHeight : 0,139                        m = "top" === a.at[1] ? a.targetHeight : "bottom" === a.at[1] ? -a.targetHeight : 0,140                        p = -2 * a.offset[1];141                    o < 0 ? ((s = e.top + h + m + p + a.collisionHeight - c - i) < 0 || s < x(o)) && (e.top += h + m + p) : 0 < n && (0 < (t = e.top - a.collisionPosition.marginTop + h + m + p - f) || x(t) < n) && (e.top += h + m + p), j.ui.pos._trigger(e, a, "posCollided", "flipTop")142                }143            }, flipfit: {144                left: function () {145                    j.ui.pos.flip.left.apply(this, arguments), j.ui.pos.fit.left.apply(this, arguments)146                }, top: function () {147                    j.ui.pos.flip.top.apply(this, arguments), j.ui.pos.fit.top.apply(this, arguments)148                }149            }150        }, function () {151            var e, a, t, s, r, i = document.getElementsByTagName("body")[0], c = document.createElement("div");152            for (r in e = document.createElement(i ? "div" : "body"), t = {153                visibility: "hidden",154                width: 0,155                height: 0,156                border: 0,157                margin: 0,158                background: "none"159            }, i && j.extend(t, {position: "absolute", left: "-1000px", top: "-1000px"}), t) e.style[r] = t[r];160            e.appendChild(c), (a = i || document.documentElement).insertBefore(e, a.firstChild), c.style.cssText = "position: absolute; left: 10.7432222px;", s = j(c).offset().left, j.support.offsetFractions = 10 < s && s < 11, e.innerHTML = "", a.removeChild(e)161        }()162    }();163    j.ui.position164}), function (e) {165    "use strict";166    "function" == typeof define && define.amd ? define(["jquery"], e) : window.jQuery && !window.jQuery.fn.iconpicker && e(window.jQuery)167}(function (l) {168    "use strict";169    var t = function (e) {170        return !1 === e || "" === e || null == e171    }, s = function (e) {172        return 0 < l(e).length173    }, r = function (e) {174        return "string" == typeof e || e instanceof String175    }, i = function (e, a) {176        return -1 !== l.inArray(e, a)177    }, c = function (e, a) {178        this._id = c._idCounter++, this.element = l(e).addClass("iconpicker-element"), this._trigger("iconpickerCreate", {iconpickerValue: this.iconpickerValue}), this.options = l.extend({}, c.defaultOptions, this.element.data(), a), this.options.templates = l.extend({}, c.defaultOptions.templates, this.options.templates), this.options.originalPlacement = this.options.placement, this.container = !!s(this.options.container) && l(this.options.container), !1 === this.container && (this.element.is(".dropdown-toggle") ? this.container = l("~ .dropdown-menu:first", this.element) : this.container = this.element.is("input,textarea,button,.btn") ? this.element.parent() : this.element), this.container.addClass("iconpicker-container"), this.isDropdownMenu() && (this.options.placement = "inline"), this.input = !!this.element.is("input,textarea") && this.element.addClass("iconpicker-input"), !1 === this.input && (this.input = this.container.find(this.options.input), this.input.is("input,textarea") || (this.input = !1)), this.component = this.isDropdownMenu() ? this.container.parent().find(this.options.component) : this.container.find(this.options.component), 0 === this.component.length ? this.component = !1 : this.component.find("i").addClass("iconpicker-component"), this._createPopover(), this._createIconpicker(), 0 === this.getAcceptButton().length && (this.options.mustAccept = !1), this.isInputGroup() ? this.container.parent().append(this.popover) : this.container.append(this.popover), this._bindElementEvents(), this._bindWindowEvents(), this.update(this.options.selected), this.isInline() && this.show(), this._trigger("iconpickerCreated", {iconpickerValue: this.iconpickerValue})179    };180    c._idCounter = 0, c.defaultOptions = {181        title: !1,182        selected: !1,183        defaultValue: !1,184        placement: "bottom",185        collision: "none",186        animation: !0,187        hideOnSelect: !1,188        showFooter: !1,189        searchInFooter: !1,190        mustAccept: !1,191        selectedCustomClass: "bg-primary",192        icons: [],193        fullClassFormatter: function (e) {194            return e195        },196        input: "input,.iconpicker-input",197        inputSearch: !1,198        container: !1,199        component: ".input-group-addon,.iconpicker-component",200        templates: {201            popover: '<div class="iconpicker-popover popover"><div class="arrow"></div><div class="popover-title"></div><div class="popover-content"></div></div>',202            footer: '<div class="popover-footer"></div>',203            buttons: '<button class="iconpicker-btn iconpicker-btn-cancel btn btn-default btn-sm">Cancel</button> <button class="iconpicker-btn iconpicker-btn-accept btn btn-primary btn-sm">Accept</button>',204            search: '<input type="search" class="form-control iconpicker-search" placeholder="Type to filter" />',205            iconpicker: '<div class="iconpicker"><div class="iconpicker-items"></div></div>',206            iconpickerItem: '<a role="button" href="javascript:;" class="iconpicker-item"><i></i></a>'207        }208    }, c.batch = function (e, a) {209        var t = Array.prototype.slice.call(arguments, 2);210        return l(e).each(function () {211            var e = l(this).data("iconpicker");212            e && e[a].apply(e, t)213        })214    }, c.prototype = {215        constructor: c, options: {}, _id: 0, _trigger: function (e, a) {216            a = a || {}, this.element.trigger(l.extend({type: e, iconpickerInstance: this}, a))217        }, _createPopover: function () {218            this.popover = l(this.options.templates.popover);219            var e = this.popover.find(".popover-title");220            if (this.options.title && e.append(l('<div class="popover-title-text">' + this.options.title + "</div>")), this.hasSeparatedSearchInput() && !this.options.searchInFooter ? e.append(this.options.templates.search) : this.options.title || e.remove(), this.options.showFooter && !t(this.options.templates.footer)) {221                var a = l(this.options.templates.footer);222                this.hasSeparatedSearchInput() && this.options.searchInFooter && a.append(l(this.options.templates.search)), t(this.options.templates.buttons) || a.append(l(this.options.templates.buttons)), this.popover.append(a)223            }224            return !0 === this.options.animation && this.popover.addClass("fade"), this.popover225        }, _createIconpicker: function () {226            var t = this;227            this.iconpicker = l(this.options.templates.iconpicker);228            var e = function (e) {229                var a = l(this);230                a.is("i") && (a = a.parent()), t._trigger("iconpickerSelect", {231                    iconpickerItem: a,232                    iconpickerValue: t.iconpickerValue233                }), !1 === t.options.mustAccept ? (t.update(a.data("iconpickerValue")), t._trigger("iconpickerSelected", {234                    iconpickerItem: this,235                    iconpickerValue: t.iconpickerValue236                })) : t.update(a.data("iconpickerValue"), !0), t.options.hideOnSelect && !1 === t.options.mustAccept && t.hide()237            }, a = l(this.options.templates.iconpickerItem), s = [];238            for (var r in this.options.icons) if ("string" == typeof this.options.icons[r].title) {239                var i = a.clone();240                if (i.find("i").addClass(this.options.fullClassFormatter(this.options.icons[r].title)), i.data("iconpickerValue", this.options.icons[r].title).on("click.iconpicker", e), i.attr("title", "." + this.options.icons[r].title), 0 < this.options.icons[r].searchTerms.length) {241                    for (var c = "", f = 0; f < this.options.icons[r].searchTerms.length; f++) c = c + this.options.icons[r].searchTerms[f] + " ";242                    i.attr("data-search-terms", c)243                }244                s.push(i)245            }246            return this.iconpicker.find(".iconpicker-items").append(s), this.popover.find(".popover-content").append(this.iconpicker), this.iconpicker247        }, _isEventInsideIconpicker: function (e) {248            var a = l(e.target);249            return !((!a.hasClass("iconpicker-element") || a.hasClass("iconpicker-element") && !a.is(this.element)) && 0 === a.parents(".iconpicker-popover").length)250        }, _bindElementEvents: function () {251            var a = this;252            this.getSearchInput().on("keyup.iconpicker", function () {253                a.filter(l(this).val().toLowerCase())254            }), this.getAcceptButton().on("click.iconpicker", function () {255                var e = a.iconpicker.find(".iconpicker-selected").get(0);256                a.update(a.iconpickerValue), a._trigger("iconpickerSelected", {257                    iconpickerItem: e,258                    iconpickerValue: a.iconpickerValue259                }), a.isInline() || a.hide()260            }), this.getCancelButton().on("click.iconpicker", function () {261                a.isInline() || a.hide()262            }), this.element.on("focus.iconpicker", function (e) {263                a.show(), e.stopPropagation()264            }), this.hasComponent() && this.component.on("click.iconpicker", function () {265                a.toggle()266            }), this.hasInput() && this.input.on("keyup.iconpicker", function (e) {267                i(e.keyCode, [38, 40, 37, 39, 16, 17, 18, 9, 8, 91, 93, 20, 46, 186, 190, 46, 78, 188, 44, 86]) ? a._updateFormGroupStatus(!1 !== a.getValid(this.value)) : a.update(), !0 === a.options.inputSearch && a.filter(l(this).val().toLowerCase())268            })269        }, _bindWindowEvents: function () {270            var e = l(window.document), a = this, t = ".iconpicker.inst" + this._id;271            l(window).on("resize.iconpicker" + t + " orientationchange.iconpicker" + t, function (e) {272                a.popover.hasClass("in") && a.updatePlacement()273            }), a.isInline() || e.on("mouseup" + t, function (e) {274                a._isEventInsideIconpicker(e) || a.isInline() || a.hide()275            })276        }, _unbindElementEvents: function () {277            this.popover.off(".iconpicker"), this.element.off(".iconpicker"), this.hasInput() && this.input.off(".iconpicker"), this.hasComponent() && this.component.off(".iconpicker"), this.hasContainer() && this.container.off(".iconpicker")278        }, _unbindWindowEvents: function () {279            l(window).off(".iconpicker.inst" + this._id), l(window.document).off(".iconpicker.inst" + this._id)280        }, updatePlacement: function (e, a) {281            e = e || this.options.placement, this.options.placement = e, a = !0 === (a = a || this.options.collision) ? "flip" : a;282            var t = {283                at: "right bottom",284                my: "right top",285                of: this.hasInput() && !this.isInputGroup() ? this.input : this.container,286                collision: !0 === a ? "flip" : a,287                within: window288            };289            if (this.popover.removeClass("inline topLeftCorner topLeft top topRight topRightCorner rightTop right rightBottom bottomRight bottomRightCorner bottom bottomLeft bottomLeftCorner leftBottom left leftTop"), "object" == typeof e) return this.popover.pos(l.extend({}, t, e));290            switch (e) {291                case"inline":292                    t = !1;293                    break;294                case"topLeftCorner":295                    t.my = "right bottom", t.at = "left top";296                    break;297                case"topLeft":298                    t.my = "left bottom", t.at = "left top";299                    break;300                case"top":301                    t.my = "center bottom", t.at = "center top";302                    break;303                case"topRight":304                    t.my = "right bottom", t.at = "right top";305                    break;306                case"topRightCorner":307                    t.my = "left bottom", t.at = "right top";308                    break;309                case"rightTop":310                    t.my = "left bottom", t.at = "right center";311                    break;312                case"right":313                    t.my = "left center", t.at = "right center";314                    break;315                case"rightBottom":316                    t.my = "left top", t.at = "right center";317                    break;318                case"bottomRightCorner":319                    t.my = "left top", t.at = "right bottom";320                    break;321                case"bottomRight":322                    t.my = "right top", t.at = "right bottom";323                    break;324                case"bottom":325                    t.my = "center top", t.at = "center bottom";326                    break;327                case"bottomLeft":328                    t.my = "left top", t.at = "left bottom";329                    break;330                case"bottomLeftCorner":331                    t.my = "right top", t.at = "left bottom";332                    break;333                case"leftBottom":334                    t.my = "right top", t.at = "left center";335                    break;336                case"left":337                    t.my = "right center", t.at = "left center";338                    break;339                case"leftTop":340                    t.my = "right bottom", t.at = "left center";341                    break;342                default:343                    return !1344            }345            return this.popover.css({display: "inline" === this.options.placement ? "" : "block"}), !1 !== t ? this.popover.pos(t).css("maxWidth", l(window).width() - this.container.offset().left - 5) : this.popover.css({346                top: "auto",347                right: "auto",348                bottom: "auto",349                left: "auto",350                maxWidth: "none"351            }), this.popover.addClass(this.options.placement), !0352        }, _updateComponents: function () {353            if (this.iconpicker.find(".iconpicker-item.iconpicker-selected").removeClass("iconpicker-selected " + this.options.selectedCustomClass), this.iconpickerValue && this.iconpicker.find("." + this.options.fullClassFormatter(this.iconpickerValue).replace(/ /g, ".")).parent().addClass("iconpicker-selected " + this.options.selectedCustomClass), this.hasComponent()) {354                var e = this.component.find("i");355                0 < e.length ? e.attr("class", this.options.fullClassFormatter(this.iconpickerValue)) : this.component.html(this.getHtml())356            }357        }, _updateFormGroupStatus: function (e) {358            return !!this.hasInput() && (!1 !== e ? this.input.parents(".form-group:first").removeClass("has-error") : this.input.parents(".form-group:first").addClass("has-error"), !0)359        }, getValid: function (e) {360            r(e) || (e = "");361            var a = "" === e;362            e = l.trim(e);363            for (var t = !1, s = 0; s < this.options.icons.length; s++) if (this.options.icons[s].title === e) {364                t = !0;365                break366            }367            return !(!t && !a) && e368        }, setValue: function (e) {369            var a = this.getValid(e);370            return !1 !== a ? (this.iconpickerValue = a, this._trigger("iconpickerSetValue", {iconpickerValue: a}), this.iconpickerValue) : (this._trigger("iconpickerInvalid", {iconpickerValue: e}), !1)371        }, getHtml: function () {372            return '<i class="' + this.options.fullClassFormatter(this.iconpickerValue) + '"></i>'373        }, setSourceValue: function (e) {374            return !1 !== (e = this.setValue(e)) && "" !== e && (this.hasInput() ? this.input.val(this.iconpickerValue) : this.element.data("iconpickerValue", this.iconpickerValue), this._trigger("iconpickerSetSourceValue", {iconpickerValue: e})), e375        }, getSourceValue: function (e) {376            var a = e = e || this.options.defaultValue;377            return void 0 !== (a = this.hasInput() ? this.input.val() : this.element.data("iconpickerValue")) && "" !== a && null !== a && !1 !== a || (a = e), a378        }, hasInput: function () {379            return !1 !== this.input380        }, isInputSearch: function () {381            return this.hasInput() && !0 === this.options.inputSearch382        }, isInputGroup: function () {383            return this.container.is(".input-group")384        }, isDropdownMenu: function () {385            return this.container.is(".dropdown-menu")386        }, hasSeparatedSearchInput: function () {387            return !1 !== this.options.templates.search && !this.isInputSearch()388        }, hasComponent: function () {389            return !1 !== this.component390        }, hasContainer: function () {391            return !1 !== this.container392        }, getAcceptButton: function () {393            return this.popover.find(".iconpicker-btn-accept")394        }, getCancelButton: function () {395            return this.popover.find(".iconpicker-btn-cancel")396        }, getSearchInput: function () {397            return this.popover.find(".iconpicker-search")398        }, filter: function (s) {399            if (t(s)) return this.iconpicker.find(".iconpicker-item").show(), l(!1);400            var r = [];401            return this.iconpicker.find(".iconpicker-item").each(function () {402                var e = l(this), a = e.attr("title").toLowerCase();403                a = a + " " + (e.attr("data-search-terms") ? e.attr("data-search-terms").toLowerCase() : "");404                var t = !1;405                try {406                    t = new RegExp("(^|\\W)" + s, "g")407                } catch (e) {408                    t = !1409                }410                !1 !== t && a.match(t) ? (r.push(e), e.show()) : e.hide()411            }), r412        }, show: function () {413            if (this.popover.hasClass("in")) return !1;414            l.iconpicker.batch(l(".iconpicker-popover.in:not(.inline)").not(this.popover), "hide"), this._trigger("iconpickerShow", {iconpickerValue: this.iconpickerValue}), this.updatePlacement(), this.popover.addClass("in"), setTimeout(l.proxy(function () {415                this.popover.css("display", this.isInline() ? "" : "block"), this._trigger("iconpickerShown", {iconpickerValue: this.iconpickerValue})416            }, this), this.options.animation ? 300 : 1)417        }, hide: function () {418            if (!this.popover.hasClass("in")) return !1;419            this._trigger("iconpickerHide", {iconpickerValue: this.iconpickerValue}), this.popover.removeClass("in"), setTimeout(l.proxy(function () {420                this.popover.css("display", "none"), this.getSearchInput().val(""), this.filter(""), this._trigger("iconpickerHidden", {iconpickerValue: this.iconpickerValue})421            }, this), this.options.animation ? 300 : 1)422        }, toggle: function () {423            this.popover.is(":visible") ? this.hide() : this.show(!0)424        }, update: function (e, a) {425            return e = e || this.getSourceValue(this.iconpickerValue), this._trigger("iconpickerUpdate", {iconpickerValue: this.iconpickerValue}), !0 === a ? e = this.setValue(e) : (e = this.setSourceValue(e), this._updateFormGroupStatus(!1 !== e)), !1 !== e && this._updateComponents(), this._trigger("iconpickerUpdated", {iconpickerValue: this.iconpickerValue}), e426        }, destroy: function () {427            this._trigger("iconpickerDestroy", {iconpickerValue: this.iconpickerValue}), this.element.removeData("iconpicker").removeData("iconpickerValue").removeClass("iconpicker-element"), this._unbindElementEvents(), this._unbindWindowEvents(), l(this.popover).remove(), this._trigger("iconpickerDestroyed", {iconpickerValue: this.iconpickerValue})428        }, disable: function () {429            return !!this.hasInput() && (this.input.prop("disabled", !0), !0)430        }, enable: function () {431            return !!this.hasInput() && (this.input.prop("disabled", !1), !0)432        }, isDisabled: function () {433            return !!this.hasInput() && !0 === this.input.prop("disabled")434        }, isInline: function () {435            return "inline" === this.options.placement || this.popover.hasClass("inline")436        }437    }, l.iconpicker = c, l.fn.iconpicker = function (a) {438        return this.each(function () {439            var e = l(this);440            e.data("iconpicker") || e.data("iconpicker", new c(this, "object" == typeof a ? a : {}))441        })442    }, c.defaultOptions = l.extend(c.defaultOptions, {443        icons: [444            {445                title: "flaticon-analytics",446                searchTerms: ['analytics','flaticon']447            },448            {449                title: "flaticon-worldwide",450                searchTerms: ['worldwide','flaticon']451            },452            {453                title: "flaticon-internet",454                searchTerms: ['internet','flaticon']455            },456            {457                title: "flaticon-handshake",458                searchTerms: ['handshake','flaticon']459            },460            {461                title: "flaticon-file",462                searchTerms: ['file','flaticon']463            },464            {465                title: "flaticon-contract",466                searchTerms: ['contract','flaticon']467            },468            {469                title: "flaticon-business-and-finance",470                searchTerms: ['business','finance','flaticon']471            },472            {473                title: "flaticon-creative",474                searchTerms: ['creative','flaticon']475            },476            {477                title: "flaticon-pie-chart",478                searchTerms: ['pie-chart','flaticon']479            },480            {481                title: "flaticon-money-bag",482                searchTerms: ['money-bag','flaticon']483            },484            {485                title: "flaticon-money",486                searchTerms: ['money','flaticon']487            },488            {489                title: "flaticon-quote",490                searchTerms: ['quote','flaticon']491            },492            {493                title: "flaticon-left-quote",494                searchTerms: ['left-quote','flaticon']495            },496            {497                title: "flaticon-mail",498                searchTerms: ['mail','flaticon']499            },500            {501                title: "flaticon-envelope",502                searchTerms: ['envelope','flaticon']503            },504            {505                title: "flaticon-email",506                searchTerms: ['email','flaticon']507            },508            {509                title: "flaticon-call",510                searchTerms: ['call','flaticon']511            },512            {513                title: "flaticon-phone-call",514                searchTerms: ['phone-call','flaticon']515            },516            {517                title: "fab fa-500px",518                searchTerms: []519            },520            {521                title: "fab fa-accessible-icon",522                searchTerms: ["accessibility", "handicap", "person", "wheelchair", "wheelchair-alt"]523            }, {title: "fab fa-accusoft", searchTerms: []}, {524                title: "fab fa-acquisitions-incorporated",525                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]526            }, {title: "fas fa-ad", searchTerms: []}, {527                title: "fas fa-address-book",528                searchTerms: []529            }, {title: "far fa-address-book", searchTerms: []}, {530                title: "fas fa-address-card",531                searchTerms: []532            }, {title: "far fa-address-card", searchTerms: []}, {533                title: "fas fa-adjust",534                searchTerms: ["contrast"]535            }, {title: "fab fa-adn", searchTerms: []}, {536                title: "fab fa-adversal",537                searchTerms: []538            }, {title: "fab fa-affiliatetheme", searchTerms: []}, {539                title: "fas fa-air-freshener",540                searchTerms: []541            }, {title: "fab fa-algolia", searchTerms: []}, {542                title: "fas fa-align-center",543                searchTerms: ["middle", "text"]544            }, {title: "fas fa-align-justify", searchTerms: ["text"]}, {545                title: "fas fa-align-left",546                searchTerms: ["text"]547            }, {title: "fas fa-align-right", searchTerms: ["text"]}, {548                title: "fab fa-alipay",549                searchTerms: []550            }, {551                title: "fas fa-allergies",552                searchTerms: ["freckles", "hand", "intolerances", "pox", "spots"]553            }, {title: "fab fa-amazon", searchTerms: []}, {554                title: "fab fa-amazon-pay",555                searchTerms: []556            }, {557                title: "fas fa-ambulance",558                searchTerms: ["help", "machine", "support", "vehicle"]559            }, {title: "fas fa-american-sign-language-interpreting", searchTerms: []}, {560                title: "fab fa-amilia",561                searchTerms: []562            }, {title: "fas fa-anchor", searchTerms: ["link"]}, {563                title: "fab fa-android",564                searchTerms: ["robot"]565            }, {title: "fab fa-angellist", searchTerms: []}, {566                title: "fas fa-angle-double-down",567                searchTerms: ["arrows"]568            }, {569                title: "fas fa-angle-double-left",570                searchTerms: ["arrows", "back", "laquo", "previous", "quote"]571            }, {572                title: "fas fa-angle-double-right",573                searchTerms: ["arrows", "forward", "next", "quote", "raquo"]574            }, {title: "fas fa-angle-double-up", searchTerms: ["arrows"]}, {575                title: "fas fa-angle-down",576                searchTerms: ["arrow"]577            }, {title: "fas fa-angle-left", searchTerms: ["arrow", "back", "previous"]}, {578                title: "fas fa-angle-right",579                searchTerms: ["arrow", "forward", "next"]580            }, {title: "fas fa-angle-up", searchTerms: ["arrow"]}, {581                title: "fas fa-angry",582                searchTerms: ["disapprove", "emoticon", "face", "mad", "upset"]583            }, {584                title: "far fa-angry",585                searchTerms: ["disapprove", "emoticon", "face", "mad", "upset"]586            }, {title: "fab fa-angrycreative", searchTerms: []}, {587                title: "fab fa-angular",588                searchTerms: []589            }, {590                title: "fas fa-ankh",591                searchTerms: ["amulet", "copper", "coptic christianity", "copts", "crux ansata", "egyptian", "venus"]592            }, {title: "fab fa-app-store", searchTerms: []}, {593                title: "fab fa-app-store-ios",594                searchTerms: []595            }, {title: "fab fa-apper", searchTerms: []}, {596                title: "fab fa-apple",597                searchTerms: ["food", "fruit", "mac", "osx"]598            }, {599                title: "fas fa-apple-alt",600                searchTerms: ["fall", "food", "fruit", "fuji", "macintosh", "seasonal"]601            }, {title: "fab fa-apple-pay", searchTerms: []}, {602                title: "fas fa-archive",603                searchTerms: ["box", "package", "storage"]604            }, {605                title: "fas fa-archway",606                searchTerms: ["arc", "monument", "road", "street"]607            }, {608                title: "fas fa-arrow-alt-circle-down",609                searchTerms: ["arrow-circle-o-down", "download"]610            }, {611                title: "far fa-arrow-alt-circle-down",612                searchTerms: ["arrow-circle-o-down", "download"]613            }, {614                title: "fas fa-arrow-alt-circle-left",615                searchTerms: ["arrow-circle-o-left", "back", "previous"]616            }, {617                title: "far fa-arrow-alt-circle-left",618                searchTerms: ["arrow-circle-o-left", "back", "previous"]619            }, {620                title: "fas fa-arrow-alt-circle-right",621                searchTerms: ["arrow-circle-o-right", "forward", "next"]622            }, {623                title: "far fa-arrow-alt-circle-right",624                searchTerms: ["arrow-circle-o-right", "forward", "next"]625            }, {626                title: "fas fa-arrow-alt-circle-up",627                searchTerms: ["arrow-circle-o-up"]628            }, {629                title: "far fa-arrow-alt-circle-up",630                searchTerms: ["arrow-circle-o-up"]631            }, {title: "fas fa-arrow-circle-down", searchTerms: ["download"]}, {632                title: "fas fa-arrow-circle-left",633                searchTerms: ["back", "previous"]634            }, {title: "fas fa-arrow-circle-right", searchTerms: ["forward", "next"]}, {635                title: "fas fa-arrow-circle-up",636                searchTerms: []637            }, {title: "fas fa-arrow-down", searchTerms: ["download"]}, {638                title: "fas fa-arrow-left",639                searchTerms: ["back", "previous"]640            }, {title: "fas fa-arrow-right", searchTerms: ["forward", "next"]}, {641                title: "fas fa-arrow-up",642                searchTerms: []643            }, {644                title: "fas fa-arrows-alt",645                searchTerms: ["arrow", "arrows", "bigger", "enlarge", "expand", "fullscreen", "move", "position", "reorder", "resize"]646            }, {title: "fas fa-arrows-alt-h", searchTerms: ["arrows-h", "resize"]}, {647                title: "fas fa-arrows-alt-v",648                searchTerms: ["arrows-v", "resize"]649            }, {title: "fas fa-assistive-listening-systems", searchTerms: []}, {650                title: "fas fa-asterisk",651                searchTerms: ["details"]652            }, {title: "fab fa-asymmetrik", searchTerms: []}, {653                title: "fas fa-at",654                searchTerms: ["e-mail", "email"]655            }, {656                title: "fas fa-atlas",657                searchTerms: ["book", "directions", "geography", "map", "wayfinding"]658            }, {title: "fas fa-atom", searchTerms: ["atheism", "chemistry", "science"]}, {659                title: "fab fa-audible",660                searchTerms: []661            }, {title: "fas fa-audio-description", searchTerms: []}, {662                title: "fab fa-autoprefixer",663                searchTerms: []664            }, {title: "fab fa-avianex", searchTerms: []}, {665                title: "fab fa-aviato",666                searchTerms: []667            }, {668                title: "fas fa-award",669                searchTerms: ["honor", "praise", "prize", "recognition", "ribbon"]670            }, {title: "fab fa-aws", searchTerms: []}, {671                title: "fas fa-backspace",672                searchTerms: ["command", "delete", "keyboard", "undo"]673            }, {title: "fas fa-backward", searchTerms: ["previous", "rewind"]}, {674                title: "fas fa-balance-scale",675                searchTerms: ["balanced", "justice", "legal", "measure", "weight"]676            }, {677                title: "fas fa-ban",678                searchTerms: ["abort", "ban", "block", "cancel", "delete", "hide", "prohibit", "remove", "stop", "trash"]679            }, {title: "fas fa-band-aid", searchTerms: ["bandage", "boo boo", "ouch"]}, {680                title: "fab fa-bandcamp",681                searchTerms: []682            }, {title: "fas fa-barcode", searchTerms: ["scan"]}, {683                title: "fas fa-bars",684                searchTerms: ["checklist", "drag", "hamburger", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "todo", "ul"]685            }, {title: "fas fa-baseball-ball", searchTerms: []}, {686                title: "fas fa-basketball-ball",687                searchTerms: []688            }, {title: "fas fa-bath", searchTerms: []}, {689                title: "fas fa-battery-empty",690                searchTerms: ["power", "status"]691            }, {title: "fas fa-battery-full", searchTerms: ["power", "status"]}, {692                title: "fas fa-battery-half",693                searchTerms: ["power", "status"]694            }, {title: "fas fa-battery-quarter", searchTerms: ["power", "status"]}, {695                title: "fas fa-battery-three-quarters",696                searchTerms: ["power", "status"]697            }, {title: "fas fa-bed", searchTerms: ["lodging", "sleep", "travel"]}, {698                title: "fas fa-beer",699                searchTerms: ["alcohol", "bar", "beverage", "drink", "liquor", "mug", "stein"]700            }, {title: "fab fa-behance", searchTerms: []}, {701                title: "fab fa-behance-square",702                searchTerms: []703            }, {title: "fas fa-bell", searchTerms: ["alert", "notification", "reminder"]}, {704                title: "far fa-bell",705                searchTerms: ["alert", "notification", "reminder"]706            }, {title: "fas fa-bell-slash", searchTerms: []}, {707                title: "far fa-bell-slash",708                searchTerms: []709            }, {710                title: "fas fa-bezier-curve",711                searchTerms: ["curves", "illustrator", "lines", "path", "vector"]712            }, {title: "fas fa-bible", searchTerms: ["book", "catholicism", "christianity"]}, {713                title: "fas fa-bicycle",714                searchTerms: ["bike", "gears", "transportation", "vehicle"]715            }, {title: "fab fa-bimobject", searchTerms: []}, {716                title: "fas fa-binoculars",717                searchTerms: []718            }, {title: "fas fa-birthday-cake", searchTerms: []}, {719                title: "fab fa-bitbucket",720                searchTerms: ["bitbucket-square", "git"]721            }, {title: "fab fa-bitcoin", searchTerms: []}, {722                title: "fab fa-bity",723                searchTerms: []724            }, {title: "fab fa-black-tie", searchTerms: []}, {725                title: "fab fa-blackberry",726                searchTerms: []727            }, {title: "fas fa-blender", searchTerms: []}, {728                title: "fas fa-blender-phone",729                searchTerms: ["appliance", "fantasy", "silly"]730            }, {title: "fas fa-blind", searchTerms: []}, {731                title: "fab fa-blogger",732                searchTerms: []733            }, {title: "fab fa-blogger-b", searchTerms: []}, {734                title: "fab fa-bluetooth",735                searchTerms: []736            }, {title: "fab fa-bluetooth-b", searchTerms: []}, {737                title: "fas fa-bold",738                searchTerms: []739            }, {title: "fas fa-bolt", searchTerms: ["electricity", "lightning", "weather", "zap"]}, {740                title: "fas fa-bomb",741                searchTerms: []742            }, {title: "fas fa-bone", searchTerms: []}, {743                title: "fas fa-bong",744                searchTerms: ["aparatus", "cannabis", "marijuana", "pipe", "smoke", "smoking"]745            }, {title: "fas fa-book", searchTerms: ["documentation", "read"]}, {746                title: "fas fa-book-dead",747                searchTerms: ["Dungeons & Dragons", "crossbones", "d&d", "dark arts", "death", "dnd", "documentation", "evil", "fantasy", "halloween", "holiday", "read", "skull", "spell"]748            }, {749                title: "fas fa-book-open",750                searchTerms: ["flyer", "notebook", "open book", "pamphlet", "reading"]751            }, {title: "fas fa-book-reader", searchTerms: ["library"]}, {752                title: "fas fa-bookmark",753                searchTerms: ["save"]754            }, {title: "far fa-bookmark", searchTerms: ["save"]}, {755                title: "fas fa-bowling-ball",756                searchTerms: []757            }, {title: "fas fa-box", searchTerms: ["package"]}, {758                title: "fas fa-box-open",759                searchTerms: []760            }, {title: "fas fa-boxes", searchTerms: []}, {title: "fas fa-braille", searchTerms: []}, {761                title: "fas fa-brain",762                searchTerms: ["cerebellum", "gray matter", "intellect", "medulla oblongata", "mind", "noodle", "wit"]763            }, {764                title: "fas fa-briefcase",765                searchTerms: ["bag", "business", "luggage", "office", "work"]766            }, {title: "fas fa-briefcase-medical", searchTerms: ["health briefcase"]}, {767                title: "fas fa-broadcast-tower",768                searchTerms: ["airwaves", "radio", "waves"]769            }, {770                title: "fas fa-broom",771                searchTerms: ["clean", "firebolt", "fly", "halloween", "holiday", "nimbus 2000", "quidditch", "sweep", "witch"]772            }, {title: "fas fa-brush", searchTerms: ["bristles", "color", "handle", "painting"]}, {773                title: "fab fa-btc",774                searchTerms: []775            }, {title: "fas fa-bug", searchTerms: ["insect", "report"]}, {776                title: "fas fa-building",777                searchTerms: ["apartment", "business", "company", "office", "work"]778            }, {779                title: "far fa-building",780                searchTerms: ["apartment", "business", "company", "office", "work"]781            }, {782                title: "fas fa-bullhorn",783                searchTerms: ["announcement", "broadcast", "louder", "megaphone", "share"]784            }, {title: "fas fa-bullseye", searchTerms: ["target"]}, {785                title: "fas fa-burn",786                searchTerms: ["energy"]787            }, {title: "fab fa-buromobelexperte", searchTerms: []}, {788                title: "fas fa-bus",789                searchTerms: ["machine", "public transportation", "transportation", "vehicle"]790            }, {791                title: "fas fa-bus-alt",792                searchTerms: ["machine", "public transportation", "transportation", "vehicle"]793            }, {794                title: "fas fa-business-time",795                searchTerms: ["briefcase", "business socks", "clock", "flight of the conchords", "wednesday"]796            }, {title: "fab fa-buysellads", searchTerms: []}, {797                title: "fas fa-calculator",798                searchTerms: []799            }, {800                title: "fas fa-calendar",801                searchTerms: ["calendar-o", "date", "event", "schedule", "time", "when"]802            }, {803                title: "far fa-calendar",804                searchTerms: ["calendar-o", "date", "event", "schedule", "time", "when"]805            }, {806                title: "fas fa-calendar-alt",807                searchTerms: ["calendar", "date", "event", "schedule", "time", "when"]808            }, {809                title: "far fa-calendar-alt",810                searchTerms: ["calendar", "date", "event", "schedule", "time", "when"]811            }, {812                title: "fas fa-calendar-check",813                searchTerms: ["accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo"]814            }, {815                title: "far fa-calendar-check",816                searchTerms: ["accept", "agree", "appointment", "confirm", "correct", "done", "ok", "select", "success", "todo"]817            }, {818                title: "fas fa-calendar-minus",819                searchTerms: ["delete", "negative", "remove"]820            }, {821                title: "far fa-calendar-minus",822                searchTerms: ["delete", "negative", "remove"]823            }, {824                title: "fas fa-calendar-plus",825                searchTerms: ["add", "create", "new", "positive"]826            }, {827                title: "far fa-calendar-plus",828                searchTerms: ["add", "create", "new", "positive"]829            }, {830                title: "fas fa-calendar-times",831                searchTerms: ["archive", "delete", "remove", "x"]832            }, {title: "far fa-calendar-times", searchTerms: ["archive", "delete", "remove", "x"]}, {833                title: "fas fa-camera",834                searchTerms: ["photo", "picture", "record"]835            }, {title: "fas fa-camera-retro", searchTerms: ["photo", "picture", "record"]}, {836                title: "fas fa-campground",837                searchTerms: ["camping", "fall", "outdoors", "seasonal", "tent"]838            }, {839                title: "fas fa-cannabis",840                searchTerms: ["bud", "chronic", "drugs", "endica", "endo", "ganja", "marijuana", "mary jane", "pot", "reefer", "sativa", "spliff", "weed", "whacky-tabacky"]841            }, {title: "fas fa-capsules", searchTerms: ["drugs", "medicine"]}, {842                title: "fas fa-car",843                searchTerms: ["machine", "transportation", "vehicle"]844            }, {title: "fas fa-car-alt", searchTerms: []}, {845                title: "fas fa-car-battery",846                searchTerms: []847            }, {title: "fas fa-car-crash", searchTerms: []}, {848                title: "fas fa-car-side",849                searchTerms: []850            }, {851                title: "fas fa-caret-down",852                searchTerms: ["arrow", "dropdown", "menu", "more", "triangle down"]853            }, {854                title: "fas fa-caret-left",855                searchTerms: ["arrow", "back", "previous", "triangle left"]856            }, {857                title: "fas fa-caret-right",858                searchTerms: ["arrow", "forward", "next", "triangle right"]859            }, {860                title: "fas fa-caret-square-down",861                searchTerms: ["caret-square-o-down", "dropdown", "menu", "more"]862            }, {863                title: "far fa-caret-square-down",864                searchTerms: ["caret-square-o-down", "dropdown", "menu", "more"]865            }, {866                title: "fas fa-caret-square-left",867                searchTerms: ["back", "caret-square-o-left", "previous"]868            }, {869                title: "far fa-caret-square-left",870                searchTerms: ["back", "caret-square-o-left", "previous"]871            }, {872                title: "fas fa-caret-square-right",873                searchTerms: ["caret-square-o-right", "forward", "next"]874            }, {875                title: "far fa-caret-square-right",876                searchTerms: ["caret-square-o-right", "forward", "next"]877            }, {title: "fas fa-caret-square-up", searchTerms: ["caret-square-o-up"]}, {878                title: "far fa-caret-square-up",879                searchTerms: ["caret-square-o-up"]880            }, {title: "fas fa-caret-up", searchTerms: ["arrow", "triangle up"]}, {881                title: "fas fa-cart-arrow-down",882                searchTerms: ["shopping"]883            }, {884                title: "fas fa-cart-plus",885                searchTerms: ["add", "create", "new", "positive", "shopping"]886            }, {887                title: "fas fa-cat",888                searchTerms: ["feline", "halloween", "holiday", "kitten", "kitty", "meow", "pet"]889            }, {title: "fab fa-cc-amazon-pay", searchTerms: []}, {890                title: "fab fa-cc-amex",891                searchTerms: ["amex"]892            }, {title: "fab fa-cc-apple-pay", searchTerms: []}, {893                title: "fab fa-cc-diners-club",894                searchTerms: []895            }, {title: "fab fa-cc-discover", searchTerms: []}, {896                title: "fab fa-cc-jcb",897                searchTerms: []898            }, {title: "fab fa-cc-mastercard", searchTerms: []}, {899                title: "fab fa-cc-paypal",900                searchTerms: []901            }, {title: "fab fa-cc-stripe", searchTerms: []}, {902                title: "fab fa-cc-visa",903                searchTerms: []904            }, {title: "fab fa-centercode", searchTerms: []}, {905                title: "fas fa-certificate",906                searchTerms: ["badge", "star"]907            }, {title: "fas fa-chair", searchTerms: ["furniture", "seat"]}, {908                title: "fas fa-chalkboard",909                searchTerms: ["blackboard", "learning", "school", "teaching", "whiteboard", "writing"]910            }, {911                title: "fas fa-chalkboard-teacher",912                searchTerms: ["blackboard", "instructor", "learning", "professor", "school", "whiteboard", "writing"]913            }, {title: "fas fa-charging-station", searchTerms: []}, {914                title: "fas fa-chart-area",915                searchTerms: ["analytics", "area-chart", "graph"]916            }, {title: "fas fa-chart-bar", searchTerms: ["analytics", "bar-chart", "graph"]}, {917                title: "far fa-chart-bar",918                searchTerms: ["analytics", "bar-chart", "graph"]919            }, {920                title: "fas fa-chart-line",921                searchTerms: ["activity", "analytics", "dashboard", "graph", "line-chart"]922            }, {title: "fas fa-chart-pie", searchTerms: ["analytics", "graph", "pie-chart"]}, {923                title: "fas fa-check",924                searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo", "yes"]925            }, {926                title: "fas fa-check-circle",927                searchTerms: ["accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]928            }, {929                title: "far fa-check-circle",930                searchTerms: ["accept", "agree", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]931            }, {932                title: "fas fa-check-double",933                searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "notice", "notification", "notify", "ok", "select", "success", "tick", "todo"]934            }, {935                title: "fas fa-check-square",936                searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]937            }, {938                title: "far fa-check-square",939                searchTerms: ["accept", "agree", "checkmark", "confirm", "correct", "done", "ok", "select", "success", "todo", "yes"]940            }, {title: "fas fa-chess", searchTerms: []}, {941                title: "fas fa-chess-bishop",942                searchTerms: []943            }, {title: "fas fa-chess-board", searchTerms: []}, {944                title: "fas fa-chess-king",945                searchTerms: []946            }, {title: "fas fa-chess-knight", searchTerms: []}, {947                title: "fas fa-chess-pawn",948                searchTerms: []949            }, {title: "fas fa-chess-queen", searchTerms: []}, {950                title: "fas fa-chess-rook",951                searchTerms: []952            }, {953                title: "fas fa-chevron-circle-down",954                searchTerms: ["arrow", "dropdown", "menu", "more"]955            }, {956                title: "fas fa-chevron-circle-left",957                searchTerms: ["arrow", "back", "previous"]958            }, {959                title: "fas fa-chevron-circle-right",960                searchTerms: ["arrow", "forward", "next"]961            }, {title: "fas fa-chevron-circle-up", searchTerms: ["arrow"]}, {962                title: "fas fa-chevron-down",963                searchTerms: []964            }, {title: "fas fa-chevron-left", searchTerms: ["back", "bracket", "previous"]}, {965                title: "fas fa-chevron-right",966                searchTerms: ["bracket", "forward", "next"]967            }, {title: "fas fa-chevron-up", searchTerms: []}, {968                title: "fas fa-child",969                searchTerms: []970            }, {title: "fab fa-chrome", searchTerms: ["browser"]}, {971                title: "fas fa-church",972                searchTerms: ["building", "community", "religion"]973            }, {title: "fas fa-circle", searchTerms: ["circle-thin", "dot", "notification"]}, {974                title: "far fa-circle",975                searchTerms: ["circle-thin", "dot", "notification"]976            }, {title: "fas fa-circle-notch", searchTerms: ["circle-o-notch"]}, {977                title: "fas fa-city",978                searchTerms: ["buildings", "busy", "skyscrapers", "urban", "windows"]979            }, {title: "fas fa-clipboard", searchTerms: ["paste"]}, {980                title: "far fa-clipboard",981                searchTerms: ["paste"]982            }, {983                title: "fas fa-clipboard-check",984                searchTerms: ["accept", "agree", "confirm", "done", "ok", "select", "success", "todo", "yes"]985            }, {986                title: "fas fa-clipboard-list",987                searchTerms: ["checklist", "completed", "done", "finished", "intinerary", "ol", "schedule", "todo", "ul"]988            }, {989                title: "fas fa-clock",990                searchTerms: ["date", "late", "schedule", "timer", "timestamp", "watch"]991            }, {992                title: "far fa-clock",993                searchTerms: ["date", "late", "schedule", "timer", "timestamp", "watch"]994            }, {title: "fas fa-clone", searchTerms: ["copy", "duplicate"]}, {995                title: "far fa-clone",996                searchTerms: ["copy", "duplicate"]997            }, {title: "fas fa-closed-captioning", searchTerms: ["cc"]}, {998                title: "far fa-closed-captioning",999                searchTerms: ["cc"]1000            }, {title: "fas fa-cloud", searchTerms: ["save"]}, {1001                title: "fas fa-cloud-download-alt",1002                searchTerms: ["import"]1003            }, {title: "fas fa-cloud-meatball", searchTerms: []}, {1004                title: "fas fa-cloud-moon",1005                searchTerms: ["crescent", "evening", "halloween", "holiday", "lunar", "night", "sky"]1006            }, {title: "fas fa-cloud-moon-rain", searchTerms: []}, {1007                title: "fas fa-cloud-rain",1008                searchTerms: ["precipitation"]1009            }, {1010                title: "fas fa-cloud-showers-heavy",1011                searchTerms: ["precipitation", "rain", "storm"]1012            }, {1013                title: "fas fa-cloud-sun",1014                searchTerms: ["day", "daytime", "fall", "outdoors", "seasonal"]1015            }, {title: "fas fa-cloud-sun-rain", searchTerms: []}, {1016                title: "fas fa-cloud-upload-alt",1017                searchTerms: ["cloud-upload"]1018            }, {title: "fab fa-cloudscale", searchTerms: []}, {1019                title: "fab fa-cloudsmith",1020                searchTerms: []1021            }, {title: "fab fa-cloudversify", searchTerms: []}, {1022                title: "fas fa-cocktail",1023                searchTerms: ["alcohol", "beverage", "drink"]1024            }, {title: "fas fa-code", searchTerms: ["brackets", "html"]}, {1025                title: "fas fa-code-branch",1026                searchTerms: ["branch", "code-fork", "fork", "git", "github", "rebase", "svn", "vcs", "version"]1027            }, {title: "fab fa-codepen", searchTerms: []}, {1028                title: "fab fa-codiepie",1029                searchTerms: []1030            }, {1031                title: "fas fa-coffee",1032                searchTerms: ["beverage", "breakfast", "cafe", "drink", "fall", "morning", "mug", "seasonal", "tea"]1033            }, {title: "fas fa-cog", searchTerms: ["settings"]}, {1034                title: "fas fa-cogs",1035                searchTerms: ["gears", "settings"]1036            }, {title: "fas fa-coins", searchTerms: []}, {1037                title: "fas fa-columns",1038                searchTerms: ["dashboard", "panes", "split"]1039            }, {1040                title: "fas fa-comment",1041                searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1042            }, {1043                title: "far fa-comment",1044                searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1045            }, {1046                title: "fas fa-comment-alt",1047                searchTerms: ["bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1048            }, {1049                title: "far fa-comment-alt",1050                searchTerms: ["bubble", "chat", "commenting", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1051            }, {title: "fas fa-comment-dollar", searchTerms: []}, {1052                title: "fas fa-comment-dots",1053                searchTerms: []1054            }, {title: "far fa-comment-dots", searchTerms: []}, {1055                title: "fas fa-comment-slash",1056                searchTerms: []1057            }, {1058                title: "fas fa-comments",1059                searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1060            }, {1061                title: "far fa-comments",1062                searchTerms: ["bubble", "chat", "conversation", "feedback", "message", "note", "notification", "sms", "speech", "texting"]1063            }, {title: "fas fa-comments-dollar", searchTerms: []}, {1064                title: "fas fa-compact-disc",1065                searchTerms: ["bluray", "cd", "disc", "media"]1066            }, {1067                title: "fas fa-compass",1068                searchTerms: ["directory", "location", "menu", "safari"]1069            }, {1070                title: "far fa-compass",1071                searchTerms: ["directory", "location", "menu", "safari"]1072            }, {1073                title: "fas fa-compress",1074                searchTerms: ["collapse", "combine", "contract", "merge", "smaller"]1075            }, {1076                title: "fas fa-concierge-bell",1077                searchTerms: ["attention", "hotel", "service", "support"]1078            }, {title: "fab fa-connectdevelop", searchTerms: []}, {1079                title: "fab fa-contao",1080                searchTerms: []1081            }, {1082                title: "fas fa-cookie",1083                searchTerms: ["baked good", "chips", "food", "snack", "sweet", "treat"]1084            }, {1085                title: "fas fa-cookie-bite",1086                searchTerms: ["baked good", "bitten", "chips", "eating", "food", "snack", "sweet", "treat"]1087            }, {title: "fas fa-copy", searchTerms: ["clone", "duplicate", "file", "files-o"]}, {1088                title: "far fa-copy",1089                searchTerms: ["clone", "duplicate", "file", "files-o"]1090            }, {title: "fas fa-copyright", searchTerms: []}, {1091                title: "far fa-copyright",1092                searchTerms: []1093            }, {title: "fas fa-couch", searchTerms: ["furniture", "sofa"]}, {1094                title: "fab fa-cpanel",1095                searchTerms: []1096            }, {title: "fab fa-creative-commons", searchTerms: []}, {1097                title: "fab fa-creative-commons-by",1098                searchTerms: []1099            }, {title: "fab fa-creative-commons-nc", searchTerms: []}, {1100                title: "fab fa-creative-commons-nc-eu",1101                searchTerms: []1102            }, {title: "fab fa-creative-commons-nc-jp", searchTerms: []}, {1103                title: "fab fa-creative-commons-nd",1104                searchTerms: []1105            }, {title: "fab fa-creative-commons-pd", searchTerms: []}, {1106                title: "fab fa-creative-commons-pd-alt",1107                searchTerms: []1108            }, {title: "fab fa-creative-commons-remix", searchTerms: []}, {1109                title: "fab fa-creative-commons-sa",1110                searchTerms: []1111            }, {1112                title: "fab fa-creative-commons-sampling",1113                searchTerms: []1114            }, {title: "fab fa-creative-commons-sampling-plus", searchTerms: []}, {1115                title: "fab fa-creative-commons-share",1116                searchTerms: []1117            }, {title: "fab fa-creative-commons-zero", searchTerms: []}, {1118                title: "fas fa-credit-card",1119                searchTerms: ["buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase"]1120            }, {1121                title: "far fa-credit-card",1122                searchTerms: ["buy", "checkout", "credit-card-alt", "debit", "money", "payment", "purchase"]1123            }, {1124                title: "fab fa-critical-role",1125                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]1126            }, {title: "fas fa-crop", searchTerms: ["design"]}, {1127                title: "fas fa-crop-alt",1128                searchTerms: []1129            }, {title: "fas fa-cross", searchTerms: ["catholicism", "christianity"]}, {1130                title: "fas fa-crosshairs",1131                searchTerms: ["gpd", "picker", "position"]1132            }, {1133                title: "fas fa-crow",1134                searchTerms: ["bird", "bullfrog", "fauna", "halloween", "holiday", "toad"]1135            }, {title: "fas fa-crown", searchTerms: []}, {1136                title: "fab fa-css3",1137                searchTerms: ["code"]1138            }, {title: "fab fa-css3-alt", searchTerms: []}, {1139                title: "fas fa-cube",1140                searchTerms: ["package"]1141            }, {title: "fas fa-cubes", searchTerms: ["packages"]}, {1142                title: "fas fa-cut",1143                searchTerms: ["scissors"]1144            }, {title: "fab fa-cuttlefish", searchTerms: []}, {1145                title: "fab fa-d-and-d",1146                searchTerms: []1147            }, {1148                title: "fab fa-d-and-d-beyond",1149                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "gaming", "tabletop"]1150            }, {title: "fab fa-dashcube", searchTerms: []}, {1151                title: "fas fa-database",1152                searchTerms: []1153            }, {title: "fas fa-deaf", searchTerms: []}, {1154                title: "fab fa-delicious",1155                searchTerms: []1156            }, {1157                title: "fas fa-democrat",1158                searchTerms: ["american", "democratic party", "donkey", "election", "left", "left-wing", "liberal", "politics", "usa"]1159            }, {title: "fab fa-deploydog", searchTerms: []}, {1160                title: "fab fa-deskpro",1161                searchTerms: []1162            }, {1163                title: "fas fa-desktop",1164                searchTerms: ["computer", "cpu", "demo", "desktop", "device", "machine", "monitor", "pc", "screen"]1165            }, {title: "fab fa-dev", searchTerms: []}, {1166                title: "fab fa-deviantart",1167                searchTerms: []1168            }, {1169                title: "fas fa-dharmachakra",1170                searchTerms: ["buddhism", "buddhist", "wheel of dharma"]1171            }, {title: "fas fa-diagnoses", searchTerms: []}, {1172                title: "fas fa-dice",1173                searchTerms: ["chance", "gambling", "game", "roll"]1174            }, {1175                title: "fas fa-dice-d20",1176                searchTerms: ["Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll"]1177            }, {1178                title: "fas fa-dice-d6",1179                searchTerms: ["Dungeons & Dragons", "chance", "d&d", "dnd", "fantasy", "gambling", "game", "roll"]1180            }, {title: "fas fa-dice-five", searchTerms: ["chance", "gambling", "game", "roll"]}, {1181                title: "fas fa-dice-four",1182                searchTerms: ["chance", "gambling", "game", "roll"]1183            }, {title: "fas fa-dice-one", searchTerms: ["chance", "gambling", "game", "roll"]}, {1184                title: "fas fa-dice-six",1185                searchTerms: ["chance", "gambling", "game", "roll"]1186            }, {title: "fas fa-dice-three", searchTerms: ["chance", "gambling", "game", "roll"]}, {1187                title: "fas fa-dice-two",1188                searchTerms: ["chance", "gambling", "game", "roll"]1189            }, {title: "fab fa-digg", searchTerms: []}, {1190                title: "fab fa-digital-ocean",1191                searchTerms: []1192            }, {title: "fas fa-digital-tachograph", searchTerms: []}, {1193                title: "fas fa-directions",1194                searchTerms: []1195            }, {title: "fab fa-discord", searchTerms: []}, {1196                title: "fab fa-discourse",1197                searchTerms: []1198            }, {title: "fas fa-divide", searchTerms: []}, {1199                title: "fas fa-dizzy",1200                searchTerms: ["dazed", "disapprove", "emoticon", "face"]1201            }, {title: "far fa-dizzy", searchTerms: ["dazed", "disapprove", "emoticon", "face"]}, {1202                title: "fas fa-dna",1203                searchTerms: ["double helix", "helix"]1204            }, {title: "fab fa-dochub", searchTerms: []}, {title: "fab fa-docker", searchTerms: []}, {1205                title: "fas fa-dog",1206                searchTerms: ["canine", "fauna", "mammmal", "pet", "pooch", "puppy", "woof"]1207            }, {1208                title: "fas fa-dollar-sign",1209                searchTerms: ["$", "dollar-sign", "money", "price", "usd"]1210            }, {title: "fas fa-dolly", searchTerms: []}, {1211                title: "fas fa-dolly-flatbed",1212                searchTerms: []1213            }, {title: "fas fa-donate", searchTerms: ["generosity", "give"]}, {1214                title: "fas fa-door-closed",1215                searchTerms: []1216            }, {title: "fas fa-door-open", searchTerms: []}, {1217                title: "fas fa-dot-circle",1218                searchTerms: ["bullseye", "notification", "target"]1219            }, {title: "far fa-dot-circle", searchTerms: ["bullseye", "notification", "target"]}, {1220                title: "fas fa-dove",1221                searchTerms: ["bird", "fauna", "flying", "peace"]1222            }, {title: "fas fa-download", searchTerms: ["import"]}, {1223                title: "fab fa-draft2digital",1224                searchTerms: []1225            }, {1226                title: "fas fa-drafting-compass",1227                searchTerms: ["mechanical drawing", "plot", "plotting"]1228            }, {1229                title: "fas fa-dragon",1230                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy"]1231            }, {title: "fas fa-draw-polygon", searchTerms: []}, {1232                title: "fab fa-dribbble",1233                searchTerms: []1234            }, {title: "fab fa-dribbble-square", searchTerms: []}, {1235                title: "fab fa-dropbox",1236                searchTerms: []1237            }, {1238                title: "fas fa-drum",1239                searchTerms: ["instrument", "music", "percussion", "snare", "sound"]1240            }, {1241                title: "fas fa-drum-steelpan",1242                searchTerms: ["calypso", "instrument", "music", "percussion", "reggae", "snare", "sound", "steel", "tropical"]1243            }, {title: "fas fa-drumstick-bite", searchTerms: []}, {1244                title: "fab fa-drupal",1245                searchTerms: []1246            }, {1247                title: "fas fa-dumbbell",1248                searchTerms: ["exercise", "gym", "strength", "weight", "weight-lifting"]1249            }, {1250                title: "fas fa-dungeon",1251                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "door", "entrance", "fantasy", "gate"]1252            }, {title: "fab fa-dyalog", searchTerms: []}, {1253                title: "fab fa-earlybirds",1254                searchTerms: []1255            }, {title: "fab fa-ebay", searchTerms: []}, {1256                title: "fab fa-edge",1257                searchTerms: ["browser", "ie"]1258            }, {title: "fas fa-edit", searchTerms: ["edit", "pen", "pencil", "update", "write"]}, {1259                title: "far fa-edit",1260                searchTerms: ["edit", "pen", "pencil", "update", "write"]1261            }, {title: "fas fa-eject", searchTerms: []}, {1262                title: "fab fa-elementor",1263                searchTerms: []1264            }, {1265                title: "fas fa-ellipsis-h",1266                searchTerms: ["dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul"]1267            }, {1268                title: "fas fa-ellipsis-v",1269                searchTerms: ["dots", "drag", "kebab", "list", "menu", "nav", "navigation", "ol", "reorder", "settings", "ul"]1270            }, {title: "fab fa-ello", searchTerms: []}, {title: "fab fa-ember", searchTerms: []}, {1271                title: "fab fa-empire",1272                searchTerms: []1273            }, {1274                title: "fas fa-envelope",1275                searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1276            }, {1277                title: "far fa-envelope",1278                searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1279            }, {1280                title: "fas fa-envelope-open",1281                searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1282            }, {1283                title: "far fa-envelope-open",1284                searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1285            }, {title: "fas fa-envelope-open-text", searchTerms: []}, {1286                title: "fas fa-envelope-square",1287                searchTerms: ["e-mail", "email", "letter", "mail", "message", "notification", "support"]1288            }, {title: "fab fa-envira", searchTerms: ["leaf"]}, {1289                title: "fas fa-equals",1290                searchTerms: []1291            }, {title: "fas fa-eraser", searchTerms: ["delete", "remove"]}, {1292                title: "fab fa-erlang",1293                searchTerms: []1294            }, {title: "fab fa-ethereum", searchTerms: []}, {1295                title: "fab fa-etsy",1296                searchTerms: []1297            }, {title: "fas fa-euro-sign", searchTerms: ["eur"]}, {1298                title: "fas fa-exchange-alt",1299                searchTerms: ["arrow", "arrows", "exchange", "reciprocate", "return", "swap", "transfer"]1300            }, {1301                title: "fas fa-exclamation",1302                searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1303            }, {1304                title: "fas fa-exclamation-circle",1305                searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1306            }, {1307                title: "fas fa-exclamation-triangle",1308                searchTerms: ["alert", "danger", "error", "important", "notice", "notification", "notify", "problem", "warning"]1309            }, {title: "fas fa-expand", searchTerms: ["bigger", "enlarge", "resize"]}, {1310                title: "fas fa-expand-arrows-alt",1311                searchTerms: ["arrows-alt", "bigger", "enlarge", "move", "resize"]1312            }, {title: "fab fa-expeditedssl", searchTerms: []}, {1313                title: "fas fa-external-link-alt",1314                searchTerms: ["external-link", "new", "open"]1315            }, {1316                title: "fas fa-external-link-square-alt",1317                searchTerms: ["external-link-square", "new", "open"]1318            }, {1319                title: "fas fa-eye",1320                searchTerms: ["optic", "see", "seen", "show", "sight", "views", "visible"]1321            }, {1322                title: "far fa-eye",1323                searchTerms: ["optic", "see", "seen", "show", "sight", "views", "visible"]1324            }, {title: "fas fa-eye-dropper", searchTerms: ["eyedropper"]}, {1325                title: "fas fa-eye-slash",1326                searchTerms: ["blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity"]1327            }, {1328                title: "far fa-eye-slash",1329                searchTerms: ["blind", "hide", "show", "toggle", "unseen", "views", "visible", "visiblity"]1330            }, {1331                title: "fab fa-facebook",1332                searchTerms: ["facebook-official", "social network"]1333            }, {title: "fab fa-facebook-f", searchTerms: ["facebook"]}, {1334                title: "fab fa-facebook-messenger",1335                searchTerms: []1336            }, {title: "fab fa-facebook-square", searchTerms: ["social network"]}, {1337                title: "fab fa-fantasy-flight-games",1338                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]1339            }, {1340                title: "fas fa-fast-backward",1341                searchTerms: ["beginning", "first", "previous", "rewind", "start"]1342            }, {title: "fas fa-fast-forward", searchTerms: ["end", "last", "next"]}, {1343                title: "fas fa-fax",1344                searchTerms: []1345            }, {title: "fas fa-feather", searchTerms: ["bird", "light", "plucked", "quill"]}, {1346                title: "fas fa-feather-alt",1347                searchTerms: ["bird", "light", "plucked", "quill"]1348            }, {1349                title: "fas fa-female",1350                searchTerms: ["human", "person", "profile", "user", "woman"]1351            }, {1352                title: "fas fa-fighter-jet",1353                searchTerms: ["airplane", "fast", "fly", "goose", "maverick", "plane", "quick", "top gun", "transportation", "travel"]1354            }, {title: "fas fa-file", searchTerms: ["document", "new", "page", "pdf", "resume"]}, {1355                title: "far fa-file",1356                searchTerms: ["document", "new", "page", "pdf", "resume"]1357            }, {1358                title: "fas fa-file-alt",1359                searchTerms: ["document", "file-text", "invoice", "new", "page", "pdf"]1360            }, {1361                title: "far fa-file-alt",1362                searchTerms: ["document", "file-text", "invoice", "new", "page", "pdf"]1363            }, {1364                title: "fas fa-file-archive",1365                searchTerms: [".zip", "bundle", "compress", "compression", "download", "zip"]1366            }, {1367                title: "far fa-file-archive",1368                searchTerms: [".zip", "bundle", "compress", "compression", "download", "zip"]1369            }, {title: "fas fa-file-audio", searchTerms: []}, {1370                title: "far fa-file-audio",1371                searchTerms: []1372            }, {title: "fas fa-file-code", searchTerms: []}, {1373                title: "far fa-file-code",1374                searchTerms: []1375            }, {1376                title: "fas fa-file-contract",1377                searchTerms: ["agreement", "binding", "document", "legal", "signature"]1378            }, {title: "fas fa-file-csv", searchTerms: ["spreadsheets"]}, {1379                title: "fas fa-file-download",1380                searchTerms: []1381            }, {title: "fas fa-file-excel", searchTerms: []}, {1382                title: "far fa-file-excel",1383                searchTerms: []1384            }, {title: "fas fa-file-export", searchTerms: []}, {1385                title: "fas fa-file-image",1386                searchTerms: []1387            }, {title: "far fa-file-image", searchTerms: []}, {1388                title: "fas fa-file-import",1389                searchTerms: []1390            }, {1391                title: "fas fa-file-invoice",1392                searchTerms: ["bill", "document", "receipt"]1393            }, {1394                title: "fas fa-file-invoice-dollar",1395                searchTerms: ["$", "bill", "document", "dollar-sign", "money", "receipt", "usd"]1396            }, {title: "fas fa-file-medical", searchTerms: []}, {1397                title: "fas fa-file-medical-alt",1398                searchTerms: []1399            }, {title: "fas fa-file-pdf", searchTerms: []}, {1400                title: "far fa-file-pdf",1401                searchTerms: []1402            }, {title: "fas fa-file-powerpoint", searchTerms: []}, {1403                title: "far fa-file-powerpoint",1404                searchTerms: []1405            }, {1406                title: "fas fa-file-prescription",1407                searchTerms: ["drugs", "medical", "medicine", "rx"]1408            }, {1409                title: "fas fa-file-signature",1410                searchTerms: ["John Hancock", "contract", "document", "name"]1411            }, {title: "fas fa-file-upload", searchTerms: []}, {1412                title: "fas fa-file-video",1413                searchTerms: []1414            }, {title: "far fa-file-video", searchTerms: []}, {1415                title: "fas fa-file-word",1416                searchTerms: []1417            }, {title: "far fa-file-word", searchTerms: []}, {1418                title: "fas fa-fill",1419                searchTerms: ["bucket", "color", "paint", "paint bucket"]1420            }, {1421                title: "fas fa-fill-drip",1422                searchTerms: ["bucket", "color", "drop", "paint", "paint bucket", "spill"]1423            }, {title: "fas fa-film", searchTerms: ["movie"]}, {1424                title: "fas fa-filter",1425                searchTerms: ["funnel", "options"]1426            }, {1427                title: "fas fa-fingerprint",1428                searchTerms: ["human", "id", "identification", "lock", "smudge", "touch", "unique", "unlock"]1429            }, {1430                title: "fas fa-fire",1431                searchTerms: ["caliente", "flame", "heat", "hot", "popular"]1432            }, {title: "fas fa-fire-extinguisher", searchTerms: []}, {1433                title: "fab fa-firefox",1434                searchTerms: ["browser"]1435            }, {title: "fas fa-first-aid", searchTerms: []}, {1436                title: "fab fa-first-order",1437                searchTerms: []1438            }, {title: "fab fa-first-order-alt", searchTerms: []}, {1439                title: "fab fa-firstdraft",1440                searchTerms: []1441            }, {title: "fas fa-fish", searchTerms: ["fauna", "gold", "swimming"]}, {1442                title: "fas fa-fist-raised",1443                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "hand", "ki", "monk", "resist", "strength", "unarmed combat"]1444            }, {1445                title: "fas fa-flag",1446                searchTerms: ["country", "notice", "notification", "notify", "pole", "report", "symbol"]1447            }, {1448                title: "far fa-flag",1449                searchTerms: ["country", "notice", "notification", "notify", "pole", "report", "symbol"]1450            }, {1451                title: "fas fa-flag-checkered",1452                searchTerms: ["notice", "notification", "notify", "pole", "racing", "report", "symbol"]1453            }, {1454                title: "fas fa-flag-usa",1455                searchTerms: ["betsy ross", "country", "old glory", "stars", "stripes", "symbol"]1456            }, {title: "fas fa-flask", searchTerms: ["beaker", "experimental", "labs", "science"]}, {1457                title: "fab fa-flickr",1458                searchTerms: []1459            }, {title: "fab fa-flipboard", searchTerms: []}, {1460                title: "fas fa-flushed",1461                searchTerms: ["embarrassed", "emoticon", "face"]1462            }, {title: "far fa-flushed", searchTerms: ["embarrassed", "emoticon", "face"]}, {1463                title: "fab fa-fly",1464                searchTerms: []1465            }, {title: "fas fa-folder", searchTerms: []}, {1466                title: "far fa-folder",1467                searchTerms: []1468            }, {1469                title: "fas fa-folder-minus",1470                searchTerms: ["archive", "delete", "negative", "remove"]1471            }, {title: "fas fa-folder-open", searchTerms: []}, {1472                title: "far fa-folder-open",1473                searchTerms: []1474            }, {title: "fas fa-folder-plus", searchTerms: ["add", "create", "new", "positive"]}, {1475                title: "fas fa-font",1476                searchTerms: ["text"]1477            }, {title: "fab fa-font-awesome", searchTerms: ["meanpath"]}, {1478                title: "fab fa-font-awesome-alt",1479                searchTerms: []1480            }, {title: "fab fa-font-awesome-flag", searchTerms: []}, {1481                title: "far fa-font-awesome-logo-full",1482                searchTerms: []1483            }, {title: "fas fa-font-awesome-logo-full", searchTerms: []}, {1484                title: "fab fa-font-awesome-logo-full",1485                searchTerms: []1486            }, {title: "fab fa-fonticons", searchTerms: []}, {1487                title: "fab fa-fonticons-fi",1488                searchTerms: []1489            }, {title: "fas fa-football-ball", searchTerms: ["fall", "pigskin", "seasonal"]}, {1490                title: "fab fa-fort-awesome",1491                searchTerms: ["castle"]1492            }, {title: "fab fa-fort-awesome-alt", searchTerms: ["castle"]}, {1493                title: "fab fa-forumbee",1494                searchTerms: []1495            }, {title: "fas fa-forward", searchTerms: ["forward", "next"]}, {1496                title: "fab fa-foursquare",1497                searchTerms: []1498            }, {title: "fab fa-free-code-camp", searchTerms: []}, {1499                title: "fab fa-freebsd",1500                searchTerms: []1501            }, {1502                title: "fas fa-frog",1503                searchTerms: ["amphibian", "bullfrog", "fauna", "hop", "kermit", "kiss", "prince", "ribbit", "toad", "wart"]1504            }, {1505                title: "fas fa-frown",1506                searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1507            }, {1508                title: "far fa-frown",1509                searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1510            }, {1511                title: "fas fa-frown-open",1512                searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1513            }, {1514                title: "far fa-frown-open",1515                searchTerms: ["disapprove", "emoticon", "face", "rating", "sad"]1516            }, {title: "fab fa-fulcrum", searchTerms: []}, {1517                title: "fas fa-funnel-dollar",1518                searchTerms: []1519            }, {title: "fas fa-futbol", searchTerms: ["ball", "football", "soccer"]}, {1520                title: "far fa-futbol",1521                searchTerms: ["ball", "football", "soccer"]1522            }, {1523                title: "fab fa-galactic-republic",1524                searchTerms: ["politics", "star wars"]1525            }, {title: "fab fa-galactic-senate", searchTerms: ["star wars"]}, {1526                title: "fas fa-gamepad",1527                searchTerms: ["controller"]1528            }, {title: "fas fa-gas-pump", searchTerms: []}, {1529                title: "fas fa-gavel",1530                searchTerms: ["hammer", "judge", "lawyer", "opinion"]1531            }, {title: "fas fa-gem", searchTerms: ["diamond"]}, {1532                title: "far fa-gem",1533                searchTerms: ["diamond"]1534            }, {title: "fas fa-genderless", searchTerms: []}, {1535                title: "fab fa-get-pocket",1536                searchTerms: []1537            }, {title: "fab fa-gg", searchTerms: []}, {title: "fab fa-gg-circle", searchTerms: []}, {1538                title: "fas fa-ghost",1539                searchTerms: ["apparition", "blinky", "clyde", "floating", "halloween", "holiday", "inky", "pinky", "spirit"]1540            }, {1541                title: "fas fa-gift",1542                searchTerms: ["generosity", "giving", "party", "present", "wrapped"]1543            }, {title: "fab fa-git", searchTerms: []}, {1544                title: "fab fa-git-square",1545                searchTerms: []1546            }, {title: "fab fa-github", searchTerms: ["octocat"]}, {1547                title: "fab fa-github-alt",1548                searchTerms: ["octocat"]1549            }, {title: "fab fa-github-square", searchTerms: ["octocat"]}, {1550                title: "fab fa-gitkraken",1551                searchTerms: []1552            }, {title: "fab fa-gitlab", searchTerms: ["Axosoft"]}, {1553                title: "fab fa-gitter",1554                searchTerms: []1555            }, {1556                title: "fas fa-glass-martini",1557                searchTerms: ["alcohol", "bar", "beverage", "drink", "glass", "liquor", "martini"]1558            }, {title: "fas fa-glass-martini-alt", searchTerms: []}, {1559                title: "fas fa-glasses",1560                searchTerms: ["foureyes", "hipster", "nerd", "reading", "sight", "spectacles"]1561            }, {title: "fab fa-glide", searchTerms: []}, {title: "fab fa-glide-g", searchTerms: []}, {1562                title: "fas fa-globe",1563                searchTerms: ["all", "coordinates", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1564            }, {1565                title: "fas fa-globe-africa",1566                searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1567            }, {1568                title: "fas fa-globe-americas",1569                searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1570            }, {1571                title: "fas fa-globe-asia",1572                searchTerms: ["all", "country", "earth", "global", "gps", "language", "localize", "location", "map", "online", "place", "planet", "translate", "travel", "world"]1573            }, {title: "fab fa-gofore", searchTerms: []}, {1574                title: "fas fa-golf-ball",1575                searchTerms: []1576            }, {title: "fab fa-goodreads", searchTerms: []}, {1577                title: "fab fa-goodreads-g",1578                searchTerms: []1579            }, {title: "fab fa-google", searchTerms: []}, {1580                title: "fab fa-google-drive",1581                searchTerms: []1582            }, {title: "fab fa-google-play", searchTerms: []}, {1583                title: "fab fa-google-plus",1584                searchTerms: ["google-plus-circle", "google-plus-official"]1585            }, {1586                title: "fab fa-google-plus-g",1587                searchTerms: ["google-plus", "social network"]1588            }, {title: "fab fa-google-plus-square", searchTerms: ["social network"]}, {1589                title: "fab fa-google-wallet",1590                searchTerms: []1591            }, {1592                title: "fas fa-gopuram",1593                searchTerms: ["building", "entrance", "hinduism", "temple", "tower"]1594            }, {title: "fas fa-graduation-cap", searchTerms: ["learning", "school", "student"]}, {1595                title: "fab fa-gratipay",1596                searchTerms: ["favorite", "heart", "like", "love"]1597            }, {title: "fab fa-grav", searchTerms: []}, {1598                title: "fas fa-greater-than",1599                searchTerms: []1600            }, {title: "fas fa-greater-than-equal", searchTerms: []}, {1601                title: "fas fa-grimace",1602                searchTerms: ["cringe", "emoticon", "face"]1603            }, {title: "far fa-grimace", searchTerms: ["cringe", "emoticon", "face"]}, {1604                title: "fas fa-grin",1605                searchTerms: ["emoticon", "face", "laugh", "smile"]1606            }, {title: "far fa-grin", searchTerms: ["emoticon", "face", "laugh", "smile"]}, {1607                title: "fas fa-grin-alt",1608                searchTerms: ["emoticon", "face", "laugh", "smile"]1609            }, {title: "far fa-grin-alt", searchTerms: ["emoticon", "face", "laugh", "smile"]}, {1610                title: "fas fa-grin-beam",1611                searchTerms: ["emoticon", "face", "laugh", "smile"]1612            }, {1613                title: "far fa-grin-beam",1614                searchTerms: ["emoticon", "face", "laugh", "smile"]1615            }, {1616                title: "fas fa-grin-beam-sweat",1617                searchTerms: ["emoticon", "face", "smile"]1618            }, {title: "far fa-grin-beam-sweat", searchTerms: ["emoticon", "face", "smile"]}, {1619                title: "fas fa-grin-hearts",1620                searchTerms: ["emoticon", "face", "love", "smile"]1621            }, {1622                title: "far fa-grin-hearts",1623                searchTerms: ["emoticon", "face", "love", "smile"]1624            }, {1625                title: "fas fa-grin-squint",1626                searchTerms: ["emoticon", "face", "laugh", "smile"]1627            }, {1628                title: "far fa-grin-squint",1629                searchTerms: ["emoticon", "face", "laugh", "smile"]1630            }, {1631                title: "fas fa-grin-squint-tears",1632                searchTerms: ["emoticon", "face", "happy", "smile"]1633            }, {1634                title: "far fa-grin-squint-tears",1635                searchTerms: ["emoticon", "face", "happy", "smile"]1636            }, {title: "fas fa-grin-stars", searchTerms: ["emoticon", "face", "star-struck"]}, {1637                title: "far fa-grin-stars",1638                searchTerms: ["emoticon", "face", "star-struck"]1639            }, {title: "fas fa-grin-tears", searchTerms: ["LOL", "emoticon", "face"]}, {1640                title: "far fa-grin-tears",1641                searchTerms: ["LOL", "emoticon", "face"]1642            }, {title: "fas fa-grin-tongue", searchTerms: ["LOL", "emoticon", "face"]}, {1643                title: "far fa-grin-tongue",1644                searchTerms: ["LOL", "emoticon", "face"]1645            }, {1646                title: "fas fa-grin-tongue-squint",1647                searchTerms: ["LOL", "emoticon", "face"]1648            }, {1649                title: "far fa-grin-tongue-squint",1650                searchTerms: ["LOL", "emoticon", "face"]1651            }, {1652                title: "fas fa-grin-tongue-wink",1653                searchTerms: ["LOL", "emoticon", "face"]1654            }, {title: "far fa-grin-tongue-wink", searchTerms: ["LOL", "emoticon", "face"]}, {1655                title: "fas fa-grin-wink",1656                searchTerms: ["emoticon", "face", "flirt", "laugh", "smile"]1657            }, {1658                title: "far fa-grin-wink",1659                searchTerms: ["emoticon", "face", "flirt", "laugh", "smile"]1660            }, {1661                title: "fas fa-grip-horizontal",1662                searchTerms: ["affordance", "drag", "drop", "grab", "handle"]1663            }, {1664                title: "fas fa-grip-vertical",1665                searchTerms: ["affordance", "drag", "drop", "grab", "handle"]1666            }, {title: "fab fa-gripfire", searchTerms: []}, {title: "fab fa-grunt", searchTerms: []}, {1667                title: "fab fa-gulp",1668                searchTerms: []1669            }, {title: "fas fa-h-square", searchTerms: ["hospital", "hotel"]}, {1670                title: "fab fa-hacker-news",1671                searchTerms: []1672            }, {title: "fab fa-hacker-news-square", searchTerms: []}, {1673                title: "fab fa-hackerrank",1674                searchTerms: []1675            }, {1676                title: "fas fa-hammer",1677                searchTerms: ["admin", "fix", "repair", "settings", "tool"]1678            }, {1679                title: "fas fa-hamsa",1680                searchTerms: ["amulet", "christianity", "islam", "jewish", "judaism", "muslim", "protection"]1681            }, {title: "fas fa-hand-holding", searchTerms: []}, {1682                title: "fas fa-hand-holding-heart",1683                searchTerms: []1684            }, {1685                title: "fas fa-hand-holding-usd",1686                searchTerms: ["$", "dollar sign", "donation", "giving", "money", "price"]1687            }, {title: "fas fa-hand-lizard", searchTerms: []}, {1688                title: "far fa-hand-lizard",1689                searchTerms: []1690            }, {title: "fas fa-hand-paper", searchTerms: ["stop"]}, {1691                title: "far fa-hand-paper",1692                searchTerms: ["stop"]1693            }, {title: "fas fa-hand-peace", searchTerms: []}, {1694                title: "far fa-hand-peace",1695                searchTerms: []1696            }, {1697                title: "fas fa-hand-point-down",1698                searchTerms: ["finger", "hand-o-down", "point"]1699            }, {1700                title: "far fa-hand-point-down",1701                searchTerms: ["finger", "hand-o-down", "point"]1702            }, {1703                title: "fas fa-hand-point-left",1704                searchTerms: ["back", "finger", "hand-o-left", "left", "point", "previous"]1705            }, {1706                title: "far fa-hand-point-left",1707                searchTerms: ["back", "finger", "hand-o-left", "left", "point", "previous"]1708            }, {1709                title: "fas fa-hand-point-right",1710                searchTerms: ["finger", "forward", "hand-o-right", "next", "point", "right"]1711            }, {1712                title: "far fa-hand-point-right",1713                searchTerms: ["finger", "forward", "hand-o-right", "next", "point", "right"]1714            }, {1715                title: "fas fa-hand-point-up",1716                searchTerms: ["finger", "hand-o-up", "point"]1717            }, {1718                title: "far fa-hand-point-up",1719                searchTerms: ["finger", "hand-o-up", "point"]1720            }, {title: "fas fa-hand-pointer", searchTerms: ["select"]}, {1721                title: "far fa-hand-pointer",1722                searchTerms: ["select"]1723            }, {title: "fas fa-hand-rock", searchTerms: []}, {1724                title: "far fa-hand-rock",1725                searchTerms: []1726            }, {title: "fas fa-hand-scissors", searchTerms: []}, {1727                title: "far fa-hand-scissors",1728                searchTerms: []1729            }, {title: "fas fa-hand-spock", searchTerms: []}, {1730                title: "far fa-hand-spock",1731                searchTerms: []1732            }, {title: "fas fa-hands", searchTerms: []}, {1733                title: "fas fa-hands-helping",1734                searchTerms: ["aid", "assistance", "partnership", "volunteering"]1735            }, {title: "fas fa-handshake", searchTerms: ["greeting", "partnership"]}, {1736                title: "far fa-handshake",1737                searchTerms: ["greeting", "partnership"]1738            }, {1739                title: "fas fa-hanukiah",1740                searchTerms: ["candle", "hanukkah", "jewish", "judaism", "light"]1741            }, {title: "fas fa-hashtag", searchTerms: []}, {1742                title: "fas fa-hat-wizard",1743                searchTerms: ["Dungeons & Dragons", "buckle", "cloth", "clothing", "d&d", "dnd", "fantasy", "halloween", "holiday", "mage", "magic", "pointy", "witch"]1744            }, {title: "fas fa-haykal", searchTerms: ["bahai", "bahá'Ã", "star"]}, {1745                title: "fas fa-hdd",1746                searchTerms: ["cpu", "hard drive", "harddrive", "machine", "save", "storage"]1747            }, {1748                title: "far fa-hdd",1749                searchTerms: ["cpu", "hard drive", "harddrive", "machine", "save", "storage"]1750            }, {title: "fas fa-heading", searchTerms: ["header"]}, {1751                title: "fas fa-headphones",1752                searchTerms: ["audio", "listen", "music", "sound", "speaker"]1753            }, {1754                title: "fas fa-headphones-alt",1755                searchTerms: ["audio", "listen", "music", "sound", "speaker"]1756            }, {1757                title: "fas fa-headset",1758                searchTerms: ["audio", "gamer", "gaming", "listen", "live chat", "microphone", "shot caller", "sound", "support", "telemarketer"]1759            }, {title: "fas fa-heart", searchTerms: ["favorite", "like", "love"]}, {1760                title: "far fa-heart",1761                searchTerms: ["favorite", "like", "love"]1762            }, {title: "fas fa-heartbeat", searchTerms: ["ekg", "lifeline", "vital signs"]}, {1763                title: "fas fa-helicopter",1764                searchTerms: ["airwolf", "apache", "chopper", "flight", "fly"]1765            }, {1766                title: "fas fa-highlighter",1767                searchTerms: ["edit", "marker", "sharpie", "update", "write"]1768            }, {1769                title: "fas fa-hiking",1770                searchTerms: ["activity", "backpack", "fall", "fitness", "outdoors", "seasonal", "walking"]1771            }, {title: "fas fa-hippo", searchTerms: ["fauna", "hungry", "mammmal"]}, {1772                title: "fab fa-hips",1773                searchTerms: []1774            }, {title: "fab fa-hire-a-helper", searchTerms: []}, {1775                title: "fas fa-history",1776                searchTerms: []1777            }, {title: "fas fa-hockey-puck", searchTerms: []}, {1778                title: "fas fa-home",1779                searchTerms: ["house", "main"]1780            }, {title: "fab fa-hooli", searchTerms: []}, {1781                title: "fab fa-hornbill",1782                searchTerms: []1783            }, {title: "fas fa-horse", searchTerms: ["equus", "fauna", "mammmal", "neigh"]}, {1784                title: "fas fa-hospital",1785                searchTerms: ["building", "emergency room", "medical center"]1786            }, {1787                title: "far fa-hospital",1788                searchTerms: ["building", "emergency room", "medical center"]1789            }, {1790                title: "fas fa-hospital-alt",1791                searchTerms: ["building", "emergency room", "medical center"]1792            }, {title: "fas fa-hospital-symbol", searchTerms: []}, {1793                title: "fas fa-hot-tub",1794                searchTerms: []1795            }, {title: "fas fa-hotel", searchTerms: ["building", "lodging"]}, {1796                title: "fab fa-hotjar",1797                searchTerms: []1798            }, {title: "fas fa-hourglass", searchTerms: []}, {1799                title: "far fa-hourglass",1800                searchTerms: []1801            }, {title: "fas fa-hourglass-end", searchTerms: []}, {1802                title: "fas fa-hourglass-half",1803                searchTerms: []1804            }, {title: "fas fa-hourglass-start", searchTerms: []}, {1805                title: "fas fa-house-damage",1806                searchTerms: ["devastation", "home"]1807            }, {title: "fab fa-houzz", searchTerms: []}, {1808                title: "fas fa-hryvnia",1809                searchTerms: ["money"]1810            }, {title: "fab fa-html5", searchTerms: []}, {1811                title: "fab fa-hubspot",1812                searchTerms: []1813            }, {title: "fas fa-i-cursor", searchTerms: []}, {1814                title: "fas fa-id-badge",1815                searchTerms: []1816            }, {title: "far fa-id-badge", searchTerms: []}, {1817                title: "fas fa-id-card",1818                searchTerms: ["document", "identification", "issued"]1819            }, {1820                title: "far fa-id-card",1821                searchTerms: ["document", "identification", "issued"]1822            }, {title: "fas fa-id-card-alt", searchTerms: ["demographics"]}, {1823                title: "fas fa-image",1824                searchTerms: ["album", "photo", "picture"]1825            }, {title: "far fa-image", searchTerms: ["album", "photo", "picture"]}, {1826                title: "fas fa-images",1827                searchTerms: ["album", "photo", "picture"]1828            }, {title: "far fa-images", searchTerms: ["album", "photo", "picture"]}, {1829                title: "fab fa-imdb",1830                searchTerms: []1831            }, {title: "fas fa-inbox", searchTerms: []}, {1832                title: "fas fa-indent",1833                searchTerms: []1834            }, {title: "fas fa-industry", searchTerms: ["factory", "manufacturing"]}, {1835                title: "fas fa-infinity",1836                searchTerms: []1837            }, {1838                title: "fas fa-info",1839                searchTerms: ["details", "help", "information", "more"]1840            }, {1841                title: "fas fa-info-circle",1842                searchTerms: ["details", "help", "information", "more"]1843            }, {title: "fab fa-instagram", searchTerms: []}, {1844                title: "fab fa-internet-explorer",1845                searchTerms: ["browser", "ie"]1846            }, {title: "fab fa-ioxhost", searchTerms: []}, {1847                title: "fas fa-italic",1848                searchTerms: ["italics"]1849            }, {title: "fab fa-itunes", searchTerms: []}, {1850                title: "fab fa-itunes-note",1851                searchTerms: []1852            }, {title: "fab fa-java", searchTerms: []}, {1853                title: "fas fa-jedi",1854                searchTerms: ["star wars"]1855            }, {title: "fab fa-jedi-order", searchTerms: ["star wars"]}, {1856                title: "fab fa-jenkins",1857                searchTerms: []1858            }, {title: "fab fa-joget", searchTerms: []}, {1859                title: "fas fa-joint",1860                searchTerms: ["blunt", "cannabis", "doobie", "drugs", "marijuana", "roach", "smoke", "smoking", "spliff"]1861            }, {title: "fab fa-joomla", searchTerms: []}, {1862                title: "fas fa-journal-whills",1863                searchTerms: ["book", "jedi", "star wars", "the force"]1864            }, {title: "fab fa-js", searchTerms: []}, {1865                title: "fab fa-js-square",1866                searchTerms: []1867            }, {title: "fab fa-jsfiddle", searchTerms: []}, {1868                title: "fas fa-kaaba",1869                searchTerms: ["building", "cube", "islam", "muslim"]1870            }, {title: "fab fa-kaggle", searchTerms: []}, {1871                title: "fas fa-key",1872                searchTerms: ["password", "unlock"]1873            }, {title: "fab fa-keybase", searchTerms: []}, {1874                title: "fas fa-keyboard",1875                searchTerms: ["input", "type"]1876            }, {title: "far fa-keyboard", searchTerms: ["input", "type"]}, {1877                title: "fab fa-keycdn",1878                searchTerms: []1879            }, {title: "fas fa-khanda", searchTerms: ["chakkar", "sikh", "sikhism", "sword"]}, {1880                title: "fab fa-kickstarter",1881                searchTerms: []1882            }, {title: "fab fa-kickstarter-k", searchTerms: []}, {1883                title: "fas fa-kiss",1884                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1885            }, {1886                title: "far fa-kiss",1887                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1888            }, {1889                title: "fas fa-kiss-beam",1890                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1891            }, {1892                title: "far fa-kiss-beam",1893                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1894            }, {1895                title: "fas fa-kiss-wink-heart",1896                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1897            }, {1898                title: "far fa-kiss-wink-heart",1899                searchTerms: ["beso", "emoticon", "face", "love", "smooch"]1900            }, {title: "fas fa-kiwi-bird", searchTerms: ["bird", "fauna"]}, {1901                title: "fab fa-korvue",1902                searchTerms: []1903            }, {1904                title: "fas fa-landmark",1905                searchTerms: ["building", "historic", "memoroable", "politics"]1906            }, {1907                title: "fas fa-language",1908                searchTerms: ["dialect", "idiom", "localize", "speech", "translate", "vernacular"]1909            }, {1910                title: "fas fa-laptop",1911                searchTerms: ["computer", "cpu", "dell", "demo", "device", "dude you're getting", "mac", "macbook", "machine", "pc"]1912            }, {title: "fas fa-laptop-code", searchTerms: []}, {1913                title: "fab fa-laravel",1914                searchTerms: []1915            }, {title: "fab fa-lastfm", searchTerms: []}, {1916                title: "fab fa-lastfm-square",1917                searchTerms: []1918            }, {title: "fas fa-laugh", searchTerms: ["LOL", "emoticon", "face", "laugh"]}, {1919                title: "far fa-laugh",1920                searchTerms: ["LOL", "emoticon", "face", "laugh"]1921            }, {title: "fas fa-laugh-beam", searchTerms: ["LOL", "emoticon", "face"]}, {1922                title: "far fa-laugh-beam",1923                searchTerms: ["LOL", "emoticon", "face"]1924            }, {title: "fas fa-laugh-squint", searchTerms: ["LOL", "emoticon", "face"]}, {1925                title: "far fa-laugh-squint",1926                searchTerms: ["LOL", "emoticon", "face"]1927            }, {title: "fas fa-laugh-wink", searchTerms: ["LOL", "emoticon", "face"]}, {1928                title: "far fa-laugh-wink",1929                searchTerms: ["LOL", "emoticon", "face"]1930            }, {title: "fas fa-layer-group", searchTerms: ["layers"]}, {1931                title: "fas fa-leaf",1932                searchTerms: ["eco", "flora", "nature", "plant"]1933            }, {title: "fab fa-leanpub", searchTerms: []}, {1934                title: "fas fa-lemon",1935                searchTerms: ["food"]1936            }, {title: "far fa-lemon", searchTerms: ["food"]}, {1937                title: "fab fa-less",1938                searchTerms: []1939            }, {title: "fas fa-less-than", searchTerms: []}, {1940                title: "fas fa-less-than-equal",1941                searchTerms: []1942            }, {title: "fas fa-level-down-alt", searchTerms: ["level-down"]}, {1943                title: "fas fa-level-up-alt",1944                searchTerms: ["level-up"]1945            }, {title: "fas fa-life-ring", searchTerms: ["support"]}, {1946                title: "far fa-life-ring",1947                searchTerms: ["support"]1948            }, {title: "fas fa-lightbulb", searchTerms: ["idea", "inspiration"]}, {1949                title: "far fa-lightbulb",1950                searchTerms: ["idea", "inspiration"]1951            }, {title: "fab fa-line", searchTerms: []}, {1952                title: "fas fa-link",1953                searchTerms: ["chain"]1954            }, {title: "fab fa-linkedin", searchTerms: ["linkedin-square"]}, {1955                title: "fab fa-linkedin-in",1956                searchTerms: ["linkedin"]1957            }, {title: "fab fa-linode", searchTerms: []}, {1958                title: "fab fa-linux",1959                searchTerms: ["tux"]1960            }, {title: "fas fa-lira-sign", searchTerms: ["try", "turkish"]}, {1961                title: "fas fa-list",1962                searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1963            }, {1964                title: "fas fa-list-alt",1965                searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1966            }, {1967                title: "far fa-list-alt",1968                searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]1969            }, {1970                title: "fas fa-list-ol",1971                searchTerms: ["checklist", "list", "numbers", "ol", "todo", "ul"]1972            }, {1973                title: "fas fa-list-ul",1974                searchTerms: ["checklist", "list", "ol", "todo", "ul"]1975            }, {1976                title: "fas fa-location-arrow",1977                searchTerms: ["address", "coordinates", "gps", "location", "map", "place", "where"]1978            }, {title: "fas fa-lock", searchTerms: ["admin", "protect", "security"]}, {1979                title: "fas fa-lock-open",1980                searchTerms: ["admin", "lock", "open", "password", "protect"]1981            }, {1982                title: "fas fa-long-arrow-alt-down",1983                searchTerms: ["long-arrow-down"]1984            }, {1985                title: "fas fa-long-arrow-alt-left",1986                searchTerms: ["back", "long-arrow-left", "previous"]1987            }, {1988                title: "fas fa-long-arrow-alt-right",1989                searchTerms: ["long-arrow-right"]1990            }, {title: "fas fa-long-arrow-alt-up", searchTerms: ["long-arrow-up"]}, {1991                title: "fas fa-low-vision",1992                searchTerms: []1993            }, {title: "fas fa-luggage-cart", searchTerms: []}, {1994                title: "fab fa-lyft",1995                searchTerms: []1996            }, {title: "fab fa-magento", searchTerms: []}, {1997                title: "fas fa-magic",1998                searchTerms: ["autocomplete", "automatic", "mage", "magic", "spell", "witch", "wizard"]1999            }, {title: "fas fa-magnet", searchTerms: []}, {2000                title: "fas fa-mail-bulk",2001                searchTerms: []2002            }, {title: "fab fa-mailchimp", searchTerms: []}, {2003                title: "fas fa-male",2004                searchTerms: ["human", "man", "person", "profile", "user"]2005            }, {title: "fab fa-mandalorian", searchTerms: []}, {2006                title: "fas fa-map",2007                searchTerms: ["coordinates", "location", "paper", "place", "travel"]2008            }, {2009                title: "far fa-map",2010                searchTerms: ["coordinates", "location", "paper", "place", "travel"]2011            }, {2012                title: "fas fa-map-marked",2013                searchTerms: ["address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where"]2014            }, {2015                title: "fas fa-map-marked-alt",2016                searchTerms: ["address", "coordinates", "destination", "gps", "localize", "location", "map", "paper", "pin", "place", "point of interest", "position", "route", "travel", "where"]2017            }, {2018                title: "fas fa-map-marker",2019                searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where"]2020            }, {2021                title: "fas fa-map-marker-alt",2022                searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "pin", "place", "position", "travel", "where"]2023            }, {2024                title: "fas fa-map-pin",2025                searchTerms: ["address", "coordinates", "gps", "localize", "location", "map", "marker", "place", "position", "travel", "where"]2026            }, {title: "fas fa-map-signs", searchTerms: []}, {2027                title: "fab fa-markdown",2028                searchTerms: []2029            }, {title: "fas fa-marker", searchTerms: ["edit", "sharpie", "update", "write"]}, {2030                title: "fas fa-mars",2031                searchTerms: ["male"]2032            }, {title: "fas fa-mars-double", searchTerms: []}, {2033                title: "fas fa-mars-stroke",2034                searchTerms: []2035            }, {title: "fas fa-mars-stroke-h", searchTerms: []}, {2036                title: "fas fa-mars-stroke-v",2037                searchTerms: []2038            }, {2039                title: "fas fa-mask",2040                searchTerms: ["costume", "disguise", "halloween", "holiday", "secret", "super hero"]2041            }, {title: "fab fa-mastodon", searchTerms: []}, {2042                title: "fab fa-maxcdn",2043                searchTerms: []2044            }, {title: "fas fa-medal", searchTerms: []}, {2045                title: "fab fa-medapps",2046                searchTerms: []2047            }, {title: "fab fa-medium", searchTerms: []}, {2048                title: "fab fa-medium-m",2049                searchTerms: []2050            }, {2051                title: "fas fa-medkit",2052                searchTerms: ["first aid", "firstaid", "health", "help", "support"]2053            }, {title: "fab fa-medrt", searchTerms: []}, {2054                title: "fab fa-meetup",2055                searchTerms: []2056            }, {title: "fab fa-megaport", searchTerms: []}, {2057                title: "fas fa-meh",2058                searchTerms: ["emoticon", "face", "neutral", "rating"]2059            }, {title: "far fa-meh", searchTerms: ["emoticon", "face", "neutral", "rating"]}, {2060                title: "fas fa-meh-blank",2061                searchTerms: ["emoticon", "face", "neutral", "rating"]2062            }, {2063                title: "far fa-meh-blank",2064                searchTerms: ["emoticon", "face", "neutral", "rating"]2065            }, {2066                title: "fas fa-meh-rolling-eyes",2067                searchTerms: ["emoticon", "face", "neutral", "rating"]2068            }, {2069                title: "far fa-meh-rolling-eyes",2070                searchTerms: ["emoticon", "face", "neutral", "rating"]2071            }, {title: "fas fa-memory", searchTerms: ["DIMM", "RAM"]}, {2072                title: "fas fa-menorah",2073                searchTerms: ["candle", "hanukkah", "jewish", "judaism", "light"]2074            }, {title: "fas fa-mercury", searchTerms: ["transgender"]}, {2075                title: "fas fa-meteor",2076                searchTerms: []2077            }, {title: "fas fa-microchip", searchTerms: ["cpu", "processor"]}, {2078                title: "fas fa-microphone",2079                searchTerms: ["record", "sound", "voice"]2080            }, {2081                title: "fas fa-microphone-alt",2082                searchTerms: ["record", "sound", "voice"]2083            }, {2084                title: "fas fa-microphone-alt-slash",2085                searchTerms: ["disable", "mute", "record", "sound", "voice"]2086            }, {2087                title: "fas fa-microphone-slash",2088                searchTerms: ["disable", "mute", "record", "sound", "voice"]2089            }, {title: "fas fa-microscope", searchTerms: []}, {2090                title: "fab fa-microsoft",2091                searchTerms: []2092            }, {2093                title: "fas fa-minus",2094                searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2095            }, {2096                title: "fas fa-minus-circle",2097                searchTerms: ["delete", "hide", "negative", "remove", "trash"]2098            }, {2099                title: "fas fa-minus-square",2100                searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2101            }, {2102                title: "far fa-minus-square",2103                searchTerms: ["collapse", "delete", "hide", "minify", "negative", "remove", "trash"]2104            }, {title: "fab fa-mix", searchTerms: []}, {title: "fab fa-mixcloud", searchTerms: []}, {2105                title: "fab fa-mizuni",2106                searchTerms: []2107            }, {2108                title: "fas fa-mobile",2109                searchTerms: ["apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text"]2110            }, {2111                title: "fas fa-mobile-alt",2112                searchTerms: ["apple", "call", "cell phone", "cellphone", "device", "iphone", "number", "screen", "telephone", "text"]2113            }, {title: "fab fa-modx", searchTerms: []}, {2114                title: "fab fa-monero",2115                searchTerms: []2116            }, {2117                title: "fas fa-money-bill",2118                searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2119            }, {2120                title: "fas fa-money-bill-alt",2121                searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2122            }, {2123                title: "far fa-money-bill-alt",2124                searchTerms: ["buy", "cash", "checkout", "money", "payment", "price", "purchase"]2125            }, {title: "fas fa-money-bill-wave", searchTerms: []}, {2126                title: "fas fa-money-bill-wave-alt",2127                searchTerms: []2128            }, {title: "fas fa-money-check", searchTerms: ["bank check", "cheque"]}, {2129                title: "fas fa-money-check-alt",2130                searchTerms: ["bank check", "cheque"]2131            }, {title: "fas fa-monument", searchTerms: ["building", "historic", "memoroable"]}, {2132                title: "fas fa-moon",2133                searchTerms: ["contrast", "crescent", "darker", "lunar", "night"]2134            }, {2135                title: "far fa-moon",2136                searchTerms: ["contrast", "crescent", "darker", "lunar", "night"]2137            }, {2138                title: "fas fa-mortar-pestle",2139                searchTerms: ["crush", "culinary", "grind", "medical", "mix", "spices"]2140            }, {title: "fas fa-mosque", searchTerms: ["building", "islam", "muslim"]}, {2141                title: "fas fa-motorcycle",2142                searchTerms: ["bike", "machine", "transportation", "vehicle"]2143            }, {title: "fas fa-mountain", searchTerms: []}, {2144                title: "fas fa-mouse-pointer",2145                searchTerms: ["select"]2146            }, {title: "fas fa-music", searchTerms: ["note", "sound"]}, {2147                title: "fab fa-napster",2148                searchTerms: []2149            }, {title: "fab fa-neos", searchTerms: []}, {2150                title: "fas fa-network-wired",2151                searchTerms: []2152            }, {title: "fas fa-neuter", searchTerms: []}, {2153                title: "fas fa-newspaper",2154                searchTerms: ["article", "press"]2155            }, {title: "far fa-newspaper", searchTerms: ["article", "press"]}, {2156                title: "fab fa-nimblr",2157                searchTerms: []2158            }, {title: "fab fa-nintendo-switch", searchTerms: []}, {2159                title: "fab fa-node",2160                searchTerms: []2161            }, {title: "fab fa-node-js", searchTerms: []}, {2162                title: "fas fa-not-equal",2163                searchTerms: []2164            }, {title: "fas fa-notes-medical", searchTerms: []}, {2165                title: "fab fa-npm",2166                searchTerms: []2167            }, {title: "fab fa-ns8", searchTerms: []}, {2168                title: "fab fa-nutritionix",2169                searchTerms: []2170            }, {title: "fas fa-object-group", searchTerms: ["design"]}, {2171                title: "far fa-object-group",2172                searchTerms: ["design"]2173            }, {title: "fas fa-object-ungroup", searchTerms: ["design"]}, {2174                title: "far fa-object-ungroup",2175                searchTerms: ["design"]2176            }, {title: "fab fa-odnoklassniki", searchTerms: []}, {2177                title: "fab fa-odnoklassniki-square",2178                searchTerms: []2179            }, {title: "fas fa-oil-can", searchTerms: []}, {2180                title: "fab fa-old-republic",2181                searchTerms: ["politics", "star wars"]2182            }, {title: "fas fa-om", searchTerms: ["buddhism", "hinduism", "jainism", "mantra"]}, {2183                title: "fab fa-opencart",2184                searchTerms: []2185            }, {title: "fab fa-openid", searchTerms: []}, {2186                title: "fab fa-opera",2187                searchTerms: []2188            }, {title: "fab fa-optin-monster", searchTerms: []}, {2189                title: "fab fa-osi",2190                searchTerms: []2191            }, {title: "fas fa-otter", searchTerms: ["fauna", "mammmal"]}, {2192                title: "fas fa-outdent",2193                searchTerms: []2194            }, {title: "fab fa-page4", searchTerms: []}, {2195                title: "fab fa-pagelines",2196                searchTerms: ["eco", "flora", "leaf", "leaves", "nature", "plant", "tree"]2197            }, {title: "fas fa-paint-brush", searchTerms: []}, {2198                title: "fas fa-paint-roller",2199                searchTerms: ["brush", "painting", "tool"]2200            }, {title: "fas fa-palette", searchTerms: ["colors", "painting"]}, {2201                title: "fab fa-palfed",2202                searchTerms: []2203            }, {title: "fas fa-pallet", searchTerms: []}, {2204                title: "fas fa-paper-plane",2205                searchTerms: []2206            }, {title: "far fa-paper-plane", searchTerms: []}, {2207                title: "fas fa-paperclip",2208                searchTerms: ["attachment"]2209            }, {2210                title: "fas fa-parachute-box",2211                searchTerms: ["aid", "assistance", "rescue", "supplies"]2212            }, {title: "fas fa-paragraph", searchTerms: []}, {2213                title: "fas fa-parking",2214                searchTerms: []2215            }, {2216                title: "fas fa-passport",2217                searchTerms: ["document", "identification", "issued"]2218            }, {2219                title: "fas fa-pastafarianism",2220                searchTerms: ["agnosticism", "atheism", "flying spaghetti monster", "fsm"]2221            }, {title: "fas fa-paste", searchTerms: ["clipboard", "copy"]}, {2222                title: "fab fa-patreon",2223                searchTerms: []2224            }, {title: "fas fa-pause", searchTerms: ["wait"]}, {2225                title: "fas fa-pause-circle",2226                searchTerms: []2227            }, {title: "far fa-pause-circle", searchTerms: []}, {2228                title: "fas fa-paw",2229                searchTerms: ["animal", "pet"]2230            }, {title: "fab fa-paypal", searchTerms: []}, {title: "fas fa-peace", searchTerms: []}, {2231                title: "fas fa-pen",2232                searchTerms: ["design", "edit", "update", "write"]2233            }, {title: "fas fa-pen-alt", searchTerms: ["design", "edit", "update", "write"]}, {2234                title: "fas fa-pen-fancy",2235                searchTerms: ["design", "edit", "fountain pen", "update", "write"]2236            }, {2237                title: "fas fa-pen-nib",2238                searchTerms: ["design", "edit", "fountain pen", "update", "write"]2239            }, {2240                title: "fas fa-pen-square",2241                searchTerms: ["edit", "pencil-square", "update", "write"]2242            }, {2243                title: "fas fa-pencil-alt",2244                searchTerms: ["design", "edit", "pencil", "update", "write"]2245            }, {title: "fas fa-pencil-ruler", searchTerms: []}, {2246                title: "fab fa-penny-arcade",2247                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "pax", "tabletop"]2248            }, {title: "fas fa-people-carry", searchTerms: ["movers"]}, {2249                title: "fas fa-percent",2250                searchTerms: []2251            }, {title: "fas fa-percentage", searchTerms: []}, {2252                title: "fab fa-periscope",2253                searchTerms: []2254            }, {2255                title: "fas fa-person-booth",2256                searchTerms: ["changing", "changing room", "election", "human", "person", "vote", "voting"]2257            }, {title: "fab fa-phabricator", searchTerms: []}, {2258                title: "fab fa-phoenix-framework",2259                searchTerms: []2260            }, {title: "fab fa-phoenix-squadron", searchTerms: []}, {2261                title: "fas fa-phone",2262                searchTerms: ["call", "earphone", "number", "support", "telephone", "voice"]2263            }, {title: "fas fa-phone-slash", searchTerms: []}, {2264                title: "fas fa-phone-square",2265                searchTerms: ["call", "number", "support", "telephone", "voice"]2266            }, {title: "fas fa-phone-volume", searchTerms: ["telephone", "volume-control-phone"]}, {2267                title: "fab fa-php",2268                searchTerms: []2269            }, {title: "fab fa-pied-piper", searchTerms: []}, {2270                title: "fab fa-pied-piper-alt",2271                searchTerms: []2272            }, {title: "fab fa-pied-piper-hat", searchTerms: ["clothing"]}, {2273                title: "fab fa-pied-piper-pp",2274                searchTerms: []2275            }, {title: "fas fa-piggy-bank", searchTerms: ["save", "savings"]}, {2276                title: "fas fa-pills",2277                searchTerms: ["drugs", "medicine"]2278            }, {title: "fab fa-pinterest", searchTerms: []}, {2279                title: "fab fa-pinterest-p",2280                searchTerms: []2281            }, {title: "fab fa-pinterest-square", searchTerms: []}, {2282                title: "fas fa-place-of-worship",2283                searchTerms: []2284            }, {2285                title: "fas fa-plane",2286                searchTerms: ["airplane", "destination", "fly", "location", "mode", "travel", "trip"]2287            }, {2288                title: "fas fa-plane-arrival",2289                searchTerms: ["airplane", "arriving", "destination", "fly", "land", "landing", "location", "mode", "travel", "trip"]2290            }, {2291                title: "fas fa-plane-departure",2292                searchTerms: ["airplane", "departing", "destination", "fly", "location", "mode", "take off", "taking off", "travel", "trip"]2293            }, {title: "fas fa-play", searchTerms: ["music", "playing", "sound", "start"]}, {2294                title: "fas fa-play-circle",2295                searchTerms: ["playing", "start"]2296            }, {title: "far fa-play-circle", searchTerms: ["playing", "start"]}, {2297                title: "fab fa-playstation",2298                searchTerms: []2299            }, {title: "fas fa-plug", searchTerms: ["connect", "online", "power"]}, {2300                title: "fas fa-plus",2301                searchTerms: ["add", "create", "expand", "new", "positive"]2302            }, {2303                title: "fas fa-plus-circle",2304                searchTerms: ["add", "create", "expand", "new", "positive"]2305            }, {2306                title: "fas fa-plus-square",2307                searchTerms: ["add", "create", "expand", "new", "positive"]2308            }, {2309                title: "far fa-plus-square",2310                searchTerms: ["add", "create", "expand", "new", "positive"]2311            }, {title: "fas fa-podcast", searchTerms: []}, {2312                title: "fas fa-poll",2313                searchTerms: ["results", "survey", "vote", "voting"]2314            }, {title: "fas fa-poll-h", searchTerms: ["results", "survey", "vote", "voting"]}, {2315                title: "fas fa-poo",2316                searchTerms: []2317            }, {title: "fas fa-poo-storm", searchTerms: ["mess", "poop", "shit"]}, {2318                title: "fas fa-poop",2319                searchTerms: []2320            }, {title: "fas fa-portrait", searchTerms: []}, {2321                title: "fas fa-pound-sign",2322                searchTerms: ["gbp"]2323            }, {title: "fas fa-power-off", searchTerms: ["on", "reboot", "restart"]}, {2324                title: "fas fa-pray",2325                searchTerms: []2326            }, {title: "fas fa-praying-hands", searchTerms: []}, {2327                title: "fas fa-prescription",2328                searchTerms: ["drugs", "medical", "medicine", "rx"]2329            }, {2330                title: "fas fa-prescription-bottle",2331                searchTerms: ["drugs", "medical", "medicine", "rx"]2332            }, {2333                title: "fas fa-prescription-bottle-alt",2334                searchTerms: ["drugs", "medical", "medicine", "rx"]2335            }, {title: "fas fa-print", searchTerms: []}, {2336                title: "fas fa-procedures",2337                searchTerms: []2338            }, {title: "fab fa-product-hunt", searchTerms: []}, {2339                title: "fas fa-project-diagram",2340                searchTerms: []2341            }, {title: "fab fa-pushed", searchTerms: []}, {2342                title: "fas fa-puzzle-piece",2343                searchTerms: ["add-on", "addon", "section"]2344            }, {title: "fab fa-python", searchTerms: []}, {title: "fab fa-qq", searchTerms: []}, {2345                title: "fas fa-qrcode",2346                searchTerms: ["scan"]2347            }, {2348                title: "fas fa-question",2349                searchTerms: ["help", "information", "support", "unknown"]2350            }, {2351                title: "fas fa-question-circle",2352                searchTerms: ["help", "information", "support", "unknown"]2353            }, {2354                title: "far fa-question-circle",2355                searchTerms: ["help", "information", "support", "unknown"]2356            }, {title: "fas fa-quidditch", searchTerms: []}, {2357                title: "fab fa-quinscape",2358                searchTerms: []2359            }, {title: "fab fa-quora", searchTerms: []}, {2360                title: "fas fa-quote-left",2361                searchTerms: []2362            }, {title: "fas fa-quote-right", searchTerms: []}, {2363                title: "fas fa-quran",2364                searchTerms: ["book", "islam", "muslim"]2365            }, {title: "fab fa-r-project", searchTerms: []}, {2366                title: "fas fa-rainbow",2367                searchTerms: []2368            }, {title: "fas fa-random", searchTerms: ["shuffle", "sort"]}, {2369                title: "fab fa-ravelry",2370                searchTerms: []2371            }, {title: "fab fa-react", searchTerms: []}, {2372                title: "fab fa-reacteurope",2373                searchTerms: []2374            }, {title: "fab fa-readme", searchTerms: []}, {2375                title: "fab fa-rebel",2376                searchTerms: []2377            }, {title: "fas fa-receipt", searchTerms: ["check", "invoice", "table"]}, {2378                title: "fas fa-recycle",2379                searchTerms: []2380            }, {title: "fab fa-red-river", searchTerms: []}, {2381                title: "fab fa-reddit",2382                searchTerms: []2383            }, {title: "fab fa-reddit-alien", searchTerms: []}, {2384                title: "fab fa-reddit-square",2385                searchTerms: []2386            }, {title: "fas fa-redo", searchTerms: ["forward", "refresh", "reload", "repeat"]}, {2387                title: "fas fa-redo-alt",2388                searchTerms: ["forward", "refresh", "reload", "repeat"]2389            }, {title: "fas fa-registered", searchTerms: []}, {2390                title: "far fa-registered",2391                searchTerms: []2392            }, {title: "fab fa-renren", searchTerms: []}, {2393                title: "fas fa-reply",2394                searchTerms: []2395            }, {title: "fas fa-reply-all", searchTerms: []}, {2396                title: "fab fa-replyd",2397                searchTerms: []2398            }, {2399                title: "fas fa-republican",2400                searchTerms: ["american", "conservative", "election", "elephant", "politics", "republican party", "right", "right-wing", "usa"]2401            }, {title: "fab fa-researchgate", searchTerms: []}, {2402                title: "fab fa-resolving",2403                searchTerms: []2404            }, {title: "fas fa-retweet", searchTerms: ["refresh", "reload", "share", "swap"]}, {2405                title: "fab fa-rev",2406                searchTerms: []2407            }, {title: "fas fa-ribbon", searchTerms: ["badge", "cause", "lapel", "pin"]}, {2408                title: "fas fa-ring",2409                searchTerms: ["Dungeons & Dragons", "Gollum", "band", "binding", "d&d", "dnd", "fantasy", "jewelry", "precious"]2410            }, {title: "fas fa-road", searchTerms: ["street"]}, {2411                title: "fas fa-robot",2412                searchTerms: []2413            }, {title: "fas fa-rocket", searchTerms: ["app"]}, {2414                title: "fab fa-rocketchat",2415                searchTerms: []2416            }, {title: "fab fa-rockrms", searchTerms: []}, {title: "fas fa-route", searchTerms: []}, {2417                title: "fas fa-rss",2418                searchTerms: ["blog"]2419            }, {title: "fas fa-rss-square", searchTerms: ["blog", "feed"]}, {2420                title: "fas fa-ruble-sign",2421                searchTerms: ["rub"]2422            }, {title: "fas fa-ruler", searchTerms: []}, {2423                title: "fas fa-ruler-combined",2424                searchTerms: []2425            }, {title: "fas fa-ruler-horizontal", searchTerms: []}, {2426                title: "fas fa-ruler-vertical",2427                searchTerms: []2428            }, {title: "fas fa-running", searchTerms: ["jog", "sprint"]}, {2429                title: "fas fa-rupee-sign",2430                searchTerms: ["indian", "inr"]2431            }, {title: "fas fa-sad-cry", searchTerms: ["emoticon", "face", "tear", "tears"]}, {2432                title: "far fa-sad-cry",2433                searchTerms: ["emoticon", "face", "tear", "tears"]2434            }, {title: "fas fa-sad-tear", searchTerms: ["emoticon", "face", "tear", "tears"]}, {2435                title: "far fa-sad-tear",2436                searchTerms: ["emoticon", "face", "tear", "tears"]2437            }, {title: "fab fa-safari", searchTerms: ["browser"]}, {2438                title: "fab fa-sass",2439                searchTerms: []2440            }, {title: "fas fa-save", searchTerms: ["floppy", "floppy-o"]}, {2441                title: "far fa-save",2442                searchTerms: ["floppy", "floppy-o"]2443            }, {title: "fab fa-schlix", searchTerms: []}, {2444                title: "fas fa-school",2445                searchTerms: []2446            }, {2447                title: "fas fa-screwdriver",2448                searchTerms: ["admin", "fix", "repair", "settings", "tool"]2449            }, {title: "fab fa-scribd", searchTerms: []}, {2450                title: "fas fa-scroll",2451                searchTerms: ["Dungeons & Dragons", "announcement", "d&d", "dnd", "fantasy", "paper"]2452            }, {2453                title: "fas fa-search",2454                searchTerms: ["bigger", "enlarge", "magnify", "preview", "zoom"]2455            }, {title: "fas fa-search-dollar", searchTerms: []}, {2456                title: "fas fa-search-location",2457                searchTerms: []2458            }, {2459                title: "fas fa-search-minus",2460                searchTerms: ["minify", "negative", "smaller", "zoom", "zoom out"]2461            }, {2462                title: "fas fa-search-plus",2463                searchTerms: ["bigger", "enlarge", "magnify", "positive", "zoom", "zoom in"]2464            }, {title: "fab fa-searchengin", searchTerms: []}, {2465                title: "fas fa-seedling",2466                searchTerms: []2467            }, {title: "fab fa-sellcast", searchTerms: ["eercast"]}, {2468                title: "fab fa-sellsy",2469                searchTerms: []2470            }, {title: "fas fa-server", searchTerms: ["cpu"]}, {2471                title: "fab fa-servicestack",2472                searchTerms: []2473            }, {title: "fas fa-shapes", searchTerms: ["circle", "square", "triangle"]}, {2474                title: "fas fa-share",2475                searchTerms: []2476            }, {title: "fas fa-share-alt", searchTerms: []}, {2477                title: "fas fa-share-alt-square",2478                searchTerms: []2479            }, {title: "fas fa-share-square", searchTerms: ["send", "social"]}, {2480                title: "far fa-share-square",2481                searchTerms: ["send", "social"]2482            }, {title: "fas fa-shekel-sign", searchTerms: ["ils"]}, {2483                title: "fas fa-shield-alt",2484                searchTerms: ["achievement", "award", "block", "defend", "security", "winner"]2485            }, {title: "fas fa-ship", searchTerms: ["boat", "sea"]}, {2486                title: "fas fa-shipping-fast",2487                searchTerms: []2488            }, {title: "fab fa-shirtsinbulk", searchTerms: []}, {2489                title: "fas fa-shoe-prints",2490                searchTerms: ["feet", "footprints", "steps"]2491            }, {title: "fas fa-shopping-bag", searchTerms: []}, {2492                title: "fas fa-shopping-basket",2493                searchTerms: []2494            }, {2495                title: "fas fa-shopping-cart",2496                searchTerms: ["buy", "checkout", "payment", "purchase"]2497            }, {title: "fab fa-shopware", searchTerms: []}, {2498                title: "fas fa-shower",2499                searchTerms: []2500            }, {2501                title: "fas fa-shuttle-van",2502                searchTerms: ["machine", "public-transportation", "transportation", "vehicle"]2503            }, {title: "fas fa-sign", searchTerms: []}, {2504                title: "fas fa-sign-in-alt",2505                searchTerms: ["arrow", "enter", "join", "log in", "login", "sign in", "sign up", "sign-in", "signin", "signup"]2506            }, {title: "fas fa-sign-language", searchTerms: []}, {2507                title: "fas fa-sign-out-alt",2508                searchTerms: ["arrow", "exit", "leave", "log out", "logout", "sign-out"]2509            }, {title: "fas fa-signal", searchTerms: ["bars", "graph", "online", "status"]}, {2510                title: "fas fa-signature",2511                searchTerms: ["John Hancock", "cursive", "name", "writing"]2512            }, {title: "fab fa-simplybuilt", searchTerms: []}, {2513                title: "fab fa-sistrix",2514                searchTerms: []2515            }, {2516                title: "fas fa-sitemap",2517                searchTerms: ["directory", "hierarchy", "ia", "information architecture", "organization"]2518            }, {title: "fab fa-sith", searchTerms: []}, {2519                title: "fas fa-skull",2520                searchTerms: ["bones", "skeleton", "yorick"]2521            }, {2522                title: "fas fa-skull-crossbones",2523                searchTerms: ["Dungeons & Dragons", "alert", "bones", "d&d", "danger", "dead", "deadly", "death", "dnd", "fantasy", "halloween", "holiday", "jolly-roger", "pirate", "poison", "skeleton", "warning"]2524            }, {title: "fab fa-skyatlas", searchTerms: []}, {2525                title: "fab fa-skype",2526                searchTerms: []2527            }, {title: "fab fa-slack", searchTerms: ["anchor", "hash", "hashtag"]}, {2528                title: "fab fa-slack-hash",2529                searchTerms: ["anchor", "hash", "hashtag"]2530            }, {title: "fas fa-slash", searchTerms: []}, {2531                title: "fas fa-sliders-h",2532                searchTerms: ["settings", "sliders"]2533            }, {title: "fab fa-slideshare", searchTerms: []}, {2534                title: "fas fa-smile",2535                searchTerms: ["approve", "emoticon", "face", "happy", "rating", "satisfied"]2536            }, {2537                title: "far fa-smile",2538                searchTerms: ["approve", "emoticon", "face", "happy", "rating", "satisfied"]2539            }, {2540                title: "fas fa-smile-beam",2541                searchTerms: ["emoticon", "face", "happy", "positive"]2542            }, {2543                title: "far fa-smile-beam",2544                searchTerms: ["emoticon", "face", "happy", "positive"]2545            }, {title: "fas fa-smile-wink", searchTerms: ["emoticon", "face", "happy"]}, {2546                title: "far fa-smile-wink",2547                searchTerms: ["emoticon", "face", "happy"]2548            }, {title: "fas fa-smog", searchTerms: ["dragon"]}, {2549                title: "fas fa-smoking",2550                searchTerms: ["cigarette", "nicotine", "smoking status"]2551            }, {title: "fas fa-smoking-ban", searchTerms: ["no smoking", "non-smoking"]}, {2552                title: "fab fa-snapchat",2553                searchTerms: []2554            }, {title: "fab fa-snapchat-ghost", searchTerms: []}, {2555                title: "fab fa-snapchat-square",2556                searchTerms: []2557            }, {2558                title: "fas fa-snowflake",2559                searchTerms: ["precipitation", "seasonal", "winter"]2560            }, {title: "far fa-snowflake", searchTerms: ["precipitation", "seasonal", "winter"]}, {2561                title: "fas fa-socks",2562                searchTerms: ["business socks", "business time", "flight of the conchords", "wednesday"]2563            }, {2564                title: "fas fa-solar-panel",2565                searchTerms: ["clean", "eco-friendly", "energy", "green", "sun"]2566            }, {title: "fas fa-sort", searchTerms: ["order"]}, {2567                title: "fas fa-sort-alpha-down",2568                searchTerms: ["sort-alpha-asc"]2569            }, {title: "fas fa-sort-alpha-up", searchTerms: ["sort-alpha-desc"]}, {2570                title: "fas fa-sort-amount-down",2571                searchTerms: ["sort-amount-asc"]2572            }, {title: "fas fa-sort-amount-up", searchTerms: ["sort-amount-desc"]}, {2573                title: "fas fa-sort-down",2574                searchTerms: ["arrow", "descending", "sort-desc"]2575            }, {2576                title: "fas fa-sort-numeric-down",2577                searchTerms: ["numbers", "sort-numeric-asc"]2578            }, {title: "fas fa-sort-numeric-up", searchTerms: ["numbers", "sort-numeric-desc"]}, {2579                title: "fas fa-sort-up",2580                searchTerms: ["arrow", "ascending", "sort-asc"]2581            }, {title: "fab fa-soundcloud", searchTerms: []}, {2582                title: "fas fa-spa",2583                searchTerms: ["flora", "mindfullness", "plant", "wellness"]2584            }, {2585                title: "fas fa-space-shuttle",2586                searchTerms: ["astronaut", "machine", "nasa", "rocket", "transportation"]2587            }, {title: "fab fa-speakap", searchTerms: []}, {2588                title: "fas fa-spider",2589                searchTerms: ["arachnid", "bug", "charlotte", "crawl", "eight", "halloween", "holiday"]2590            }, {title: "fas fa-spinner", searchTerms: ["loading", "progress"]}, {2591                title: "fas fa-splotch",2592                searchTerms: []2593            }, {title: "fab fa-spotify", searchTerms: []}, {2594                title: "fas fa-spray-can",2595                searchTerms: []2596            }, {title: "fas fa-square", searchTerms: ["block", "box"]}, {2597                title: "far fa-square",2598                searchTerms: ["block", "box"]2599            }, {title: "fas fa-square-full", searchTerms: []}, {2600                title: "fas fa-square-root-alt",2601                searchTerms: []2602            }, {title: "fab fa-squarespace", searchTerms: []}, {2603                title: "fab fa-stack-exchange",2604                searchTerms: []2605            }, {title: "fab fa-stack-overflow", searchTerms: []}, {2606                title: "fas fa-stamp",2607                searchTerms: []2608            }, {2609                title: "fas fa-star",2610                searchTerms: ["achievement", "award", "favorite", "important", "night", "rating", "score"]2611            }, {2612                title: "far fa-star",2613                searchTerms: ["achievement", "award", "favorite", "important", "night", "rating", "score"]2614            }, {title: "fas fa-star-and-crescent", searchTerms: ["islam", "muslim"]}, {2615                title: "fas fa-star-half",2616                searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2617            }, {2618                title: "far fa-star-half",2619                searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2620            }, {2621                title: "fas fa-star-half-alt",2622                searchTerms: ["achievement", "award", "rating", "score", "star-half-empty", "star-half-full"]2623            }, {title: "fas fa-star-of-david", searchTerms: ["jewish", "judaism"]}, {2624                title: "fas fa-star-of-life",2625                searchTerms: []2626            }, {title: "fab fa-staylinked", searchTerms: []}, {2627                title: "fab fa-steam",2628                searchTerms: []2629            }, {title: "fab fa-steam-square", searchTerms: []}, {2630                title: "fab fa-steam-symbol",2631                searchTerms: []2632            }, {2633                title: "fas fa-step-backward",2634                searchTerms: ["beginning", "first", "previous", "rewind", "start"]2635            }, {title: "fas fa-step-forward", searchTerms: ["end", "last", "next"]}, {2636                title: "fas fa-stethoscope",2637                searchTerms: []2638            }, {title: "fab fa-sticker-mule", searchTerms: []}, {2639                title: "fas fa-sticky-note",2640                searchTerms: []2641            }, {title: "far fa-sticky-note", searchTerms: []}, {2642                title: "fas fa-stop",2643                searchTerms: ["block", "box", "square"]2644            }, {title: "fas fa-stop-circle", searchTerms: []}, {2645                title: "far fa-stop-circle",2646                searchTerms: []2647            }, {title: "fas fa-stopwatch", searchTerms: ["time"]}, {2648                title: "fas fa-store",2649                searchTerms: []2650            }, {title: "fas fa-store-alt", searchTerms: []}, {2651                title: "fab fa-strava",2652                searchTerms: []2653            }, {title: "fas fa-stream", searchTerms: []}, {2654                title: "fas fa-street-view",2655                searchTerms: ["map"]2656            }, {title: "fas fa-strikethrough", searchTerms: []}, {2657                title: "fab fa-stripe",2658                searchTerms: []2659            }, {title: "fab fa-stripe-s", searchTerms: []}, {2660                title: "fas fa-stroopwafel",2661                searchTerms: ["dessert", "food", "sweets", "waffle"]2662            }, {title: "fab fa-studiovinari", searchTerms: []}, {2663                title: "fab fa-stumbleupon",2664                searchTerms: []2665            }, {title: "fab fa-stumbleupon-circle", searchTerms: []}, {2666                title: "fas fa-subscript",2667                searchTerms: []2668            }, {2669                title: "fas fa-subway",2670                searchTerms: ["machine", "railway", "train", "transportation", "vehicle"]2671            }, {2672                title: "fas fa-suitcase",2673                searchTerms: ["baggage", "luggage", "move", "suitcase", "travel", "trip"]2674            }, {title: "fas fa-suitcase-rolling", searchTerms: []}, {2675                title: "fas fa-sun",2676                searchTerms: ["brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather"]2677            }, {2678                title: "far fa-sun",2679                searchTerms: ["brighten", "contrast", "day", "lighter", "sol", "solar", "star", "weather"]2680            }, {title: "fab fa-superpowers", searchTerms: []}, {2681                title: "fas fa-superscript",2682                searchTerms: ["exponential"]2683            }, {title: "fab fa-supple", searchTerms: []}, {2684                title: "fas fa-surprise",2685                searchTerms: ["emoticon", "face", "shocked"]2686            }, {title: "far fa-surprise", searchTerms: ["emoticon", "face", "shocked"]}, {2687                title: "fas fa-swatchbook",2688                searchTerms: []2689            }, {2690                title: "fas fa-swimmer",2691                searchTerms: ["athlete", "head", "man", "person", "water"]2692            }, {title: "fas fa-swimming-pool", searchTerms: ["ladder", "recreation", "water"]}, {2693                title: "fas fa-synagogue",2694                searchTerms: ["building", "jewish", "judaism", "star of david", "temple"]2695            }, {2696                title: "fas fa-sync",2697                searchTerms: ["exchange", "refresh", "reload", "rotate", "swap"]2698            }, {title: "fas fa-sync-alt", searchTerms: ["refresh", "reload", "rotate"]}, {2699                title: "fas fa-syringe",2700                searchTerms: ["immunizations", "needle"]2701            }, {title: "fas fa-table", searchTerms: ["data", "excel", "spreadsheet"]}, {2702                title: "fas fa-table-tennis",2703                searchTerms: []2704            }, {2705                title: "fas fa-tablet",2706                searchTerms: ["apple", "device", "ipad", "kindle", "screen"]2707            }, {2708                title: "fas fa-tablet-alt",2709                searchTerms: ["apple", "device", "ipad", "kindle", "screen"]2710            }, {title: "fas fa-tablets", searchTerms: ["drugs", "medicine"]}, {2711                title: "fas fa-tachometer-alt",2712                searchTerms: ["dashboard", "tachometer"]2713            }, {title: "fas fa-tag", searchTerms: ["label"]}, {2714                title: "fas fa-tags",2715                searchTerms: ["labels"]2716            }, {title: "fas fa-tape", searchTerms: []}, {2717                title: "fas fa-tasks",2718                searchTerms: ["downloading", "downloads", "loading", "progress", "settings"]2719            }, {2720                title: "fas fa-taxi",2721                searchTerms: ["cab", "cabbie", "car", "car service", "lyft", "machine", "transportation", "uber", "vehicle"]2722            }, {title: "fab fa-teamspeak", searchTerms: []}, {2723                title: "fas fa-teeth",2724                searchTerms: []2725            }, {title: "fas fa-teeth-open", searchTerms: []}, {2726                title: "fab fa-telegram",2727                searchTerms: []2728            }, {title: "fab fa-telegram-plane", searchTerms: []}, {2729                title: "fas fa-temperature-high",2730                searchTerms: ["mercury", "thermometer", "warm"]2731            }, {2732                title: "fas fa-temperature-low",2733                searchTerms: ["cool", "mercury", "thermometer"]2734            }, {title: "fab fa-tencent-weibo", searchTerms: []}, {2735                title: "fas fa-terminal",2736                searchTerms: ["code", "command", "console", "prompt"]2737            }, {title: "fas fa-text-height", searchTerms: []}, {2738                title: "fas fa-text-width",2739                searchTerms: []2740            }, {title: "fas fa-th", searchTerms: ["blocks", "boxes", "grid", "squares"]}, {2741                title: "fas fa-th-large",2742                searchTerms: ["blocks", "boxes", "grid", "squares"]2743            }, {2744                title: "fas fa-th-list",2745                searchTerms: ["checklist", "completed", "done", "finished", "ol", "todo", "ul"]2746            }, {title: "fab fa-the-red-yeti", searchTerms: []}, {2747                title: "fas fa-theater-masks",2748                searchTerms: []2749            }, {title: "fab fa-themeco", searchTerms: []}, {2750                title: "fab fa-themeisle",2751                searchTerms: []2752            }, {2753                title: "fas fa-thermometer",2754                searchTerms: ["mercury", "status", "temperature"]2755            }, {2756                title: "fas fa-thermometer-empty",2757                searchTerms: ["mercury", "status", "temperature"]2758            }, {2759                title: "fas fa-thermometer-full",2760                searchTerms: ["fever", "mercury", "status", "temperature"]2761            }, {2762                title: "fas fa-thermometer-half",2763                searchTerms: ["mercury", "status", "temperature"]2764            }, {2765                title: "fas fa-thermometer-quarter",2766                searchTerms: ["mercury", "status", "temperature"]2767            }, {2768                title: "fas fa-thermometer-three-quarters",2769                searchTerms: ["mercury", "status", "temperature"]2770            }, {title: "fab fa-think-peaks", searchTerms: []}, {2771                title: "fas fa-thumbs-down",2772                searchTerms: ["disagree", "disapprove", "dislike", "hand", "thumbs-o-down"]2773            }, {2774                title: "far fa-thumbs-down",2775                searchTerms: ["disagree", "disapprove", "dislike", "hand", "thumbs-o-down"]2776            }, {2777                title: "fas fa-thumbs-up",2778                searchTerms: ["agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude"]2779            }, {2780                title: "far fa-thumbs-up",2781                searchTerms: ["agree", "approve", "favorite", "hand", "like", "ok", "okay", "success", "thumbs-o-up", "yes", "you got it dude"]2782            }, {2783                title: "fas fa-thumbtack",2784                searchTerms: ["coordinates", "location", "marker", "pin", "thumb-tack"]2785            }, {title: "fas fa-ticket-alt", searchTerms: ["ticket"]}, {2786                title: "fas fa-times",2787                searchTerms: ["close", "cross", "error", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2788            }, {2789                title: "fas fa-times-circle",2790                searchTerms: ["close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2791            }, {2792                title: "far fa-times-circle",2793                searchTerms: ["close", "cross", "exit", "incorrect", "notice", "notification", "notify", "problem", "wrong", "x"]2794            }, {2795                title: "fas fa-tint",2796                searchTerms: ["drop", "droplet", "raindrop", "waterdrop"]2797            }, {title: "fas fa-tint-slash", searchTerms: []}, {2798                title: "fas fa-tired",2799                searchTerms: ["emoticon", "face", "grumpy"]2800            }, {title: "far fa-tired", searchTerms: ["emoticon", "face", "grumpy"]}, {2801                title: "fas fa-toggle-off",2802                searchTerms: ["switch"]2803            }, {title: "fas fa-toggle-on", searchTerms: ["switch"]}, {2804                title: "fas fa-toilet-paper",2805                searchTerms: ["bathroom", "halloween", "holiday", "lavatory", "prank", "restroom", "roll"]2806            }, {2807                title: "fas fa-toolbox",2808                searchTerms: ["admin", "container", "fix", "repair", "settings", "tools"]2809            }, {2810                title: "fas fa-tooth",2811                searchTerms: ["bicuspid", "dental", "molar", "mouth", "teeth"]2812            }, {title: "fas fa-torah", searchTerms: ["book", "jewish", "judaism"]}, {2813                title: "fas fa-torii-gate",2814                searchTerms: ["building", "shintoism"]2815            }, {title: "fas fa-tractor", searchTerms: []}, {2816                title: "fab fa-trade-federation",2817                searchTerms: []2818            }, {title: "fas fa-trademark", searchTerms: []}, {2819                title: "fas fa-traffic-light",2820                searchTerms: []2821            }, {title: "fas fa-train", searchTerms: ["bullet", "locomotive", "railway"]}, {2822                title: "fas fa-transgender",2823                searchTerms: ["intersex"]2824            }, {title: "fas fa-transgender-alt", searchTerms: []}, {2825                title: "fas fa-trash",2826                searchTerms: ["delete", "garbage", "hide", "remove"]2827            }, {2828                title: "fas fa-trash-alt",2829                searchTerms: ["delete", "garbage", "hide", "remove", "trash", "trash-o"]2830            }, {2831                title: "far fa-trash-alt",2832                searchTerms: ["delete", "garbage", "hide", "remove", "trash", "trash-o"]2833            }, {2834                title: "fas fa-tree",2835                searchTerms: ["bark", "fall", "flora", "forest", "nature", "plant", "seasonal"]2836            }, {title: "fab fa-trello", searchTerms: []}, {2837                title: "fab fa-tripadvisor",2838                searchTerms: []2839            }, {2840                title: "fas fa-trophy",2841                searchTerms: ["achievement", "award", "cup", "game", "winner"]2842            }, {title: "fas fa-truck", searchTerms: ["delivery", "shipping"]}, {2843                title: "fas fa-truck-loading",2844                searchTerms: []2845            }, {title: "fas fa-truck-monster", searchTerms: []}, {2846                title: "fas fa-truck-moving",2847                searchTerms: []2848            }, {title: "fas fa-truck-pickup", searchTerms: []}, {2849                title: "fas fa-tshirt",2850                searchTerms: ["cloth", "clothing"]2851            }, {title: "fas fa-tty", searchTerms: []}, {2852                title: "fab fa-tumblr",2853                searchTerms: []2854            }, {title: "fab fa-tumblr-square", searchTerms: []}, {2855                title: "fas fa-tv",2856                searchTerms: ["computer", "display", "monitor", "television"]2857            }, {title: "fab fa-twitch", searchTerms: []}, {2858                title: "fab fa-twitter",2859                searchTerms: ["social network", "tweet"]2860            }, {title: "fab fa-twitter-square", searchTerms: ["social network", "tweet"]}, {2861                title: "fab fa-typo3",2862                searchTerms: []2863            }, {title: "fab fa-uber", searchTerms: []}, {title: "fab fa-uikit", searchTerms: []}, {2864                title: "fas fa-umbrella",2865                searchTerms: ["protection", "rain"]2866            }, {2867                title: "fas fa-umbrella-beach",2868                searchTerms: ["protection", "recreation", "sun"]2869            }, {title: "fas fa-underline", searchTerms: []}, {2870                title: "fas fa-undo",2871                searchTerms: ["back", "control z", "exchange", "oops", "return", "rotate", "swap"]2872            }, {2873                title: "fas fa-undo-alt",2874                searchTerms: ["back", "control z", "exchange", "oops", "return", "swap"]2875            }, {title: "fab fa-uniregistry", searchTerms: []}, {2876                title: "fas fa-universal-access",2877                searchTerms: []2878            }, {title: "fas fa-university", searchTerms: ["bank", "institution"]}, {2879                title: "fas fa-unlink",2880                searchTerms: ["chain", "chain-broken", "remove"]2881            }, {title: "fas fa-unlock", searchTerms: ["admin", "lock", "password", "protect"]}, {2882                title: "fas fa-unlock-alt",2883                searchTerms: ["admin", "lock", "password", "protect"]2884            }, {title: "fab fa-untappd", searchTerms: []}, {2885                title: "fas fa-upload",2886                searchTerms: ["export", "publish"]2887            }, {title: "fab fa-usb", searchTerms: []}, {2888                title: "fas fa-user",2889                searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2890            }, {2891                title: "far fa-user",2892                searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2893            }, {2894                title: "fas fa-user-alt",2895                searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2896            }, {title: "fas fa-user-alt-slash", searchTerms: []}, {2897                title: "fas fa-user-astronaut",2898                searchTerms: ["avatar", "clothing", "cosmonaut", "space", "suit"]2899            }, {title: "fas fa-user-check", searchTerms: []}, {2900                title: "fas fa-user-circle",2901                searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2902            }, {2903                title: "far fa-user-circle",2904                searchTerms: ["account", "avatar", "head", "human", "man", "person", "profile"]2905            }, {title: "fas fa-user-clock", searchTerms: []}, {2906                title: "fas fa-user-cog",2907                searchTerms: []2908            }, {title: "fas fa-user-edit", searchTerms: []}, {2909                title: "fas fa-user-friends",2910                searchTerms: []2911            }, {2912                title: "fas fa-user-graduate",2913                searchTerms: ["cap", "clothing", "commencement", "gown", "graduation", "student"]2914            }, {title: "fas fa-user-injured", searchTerms: ["cast", "ouch", "sling"]}, {2915                title: "fas fa-user-lock",2916                searchTerms: []2917            }, {2918                title: "fas fa-user-md",2919                searchTerms: ["doctor", "job", "medical", "nurse", "occupation", "profile"]2920            }, {title: "fas fa-user-minus", searchTerms: ["delete", "negative", "remove"]}, {2921                title: "fas fa-user-ninja",2922                searchTerms: ["assassin", "avatar", "dangerous", "deadly", "sneaky"]2923            }, {title: "fas fa-user-plus", searchTerms: ["positive", "sign up", "signup"]}, {2924                title: "fas fa-user-secret",2925                searchTerms: ["clothing", "coat", "hat", "incognito", "privacy", "spy", "whisper"]2926            }, {title: "fas fa-user-shield", searchTerms: []}, {2927                title: "fas fa-user-slash",2928                searchTerms: ["ban", "remove"]2929            }, {title: "fas fa-user-tag", searchTerms: []}, {2930                title: "fas fa-user-tie",2931                searchTerms: ["avatar", "business", "clothing", "formal"]2932            }, {title: "fas fa-user-times", searchTerms: ["archive", "delete", "remove", "x"]}, {2933                title: "fas fa-users",2934                searchTerms: ["people", "persons", "profiles"]2935            }, {title: "fas fa-users-cog", searchTerms: []}, {2936                title: "fab fa-ussunnah",2937                searchTerms: []2938            }, {title: "fas fa-utensil-spoon", searchTerms: ["spoon"]}, {2939                title: "fas fa-utensils",2940                searchTerms: ["cutlery", "dinner", "eat", "food", "knife", "restaurant", "spoon"]2941            }, {title: "fab fa-vaadin", searchTerms: []}, {2942                title: "fas fa-vector-square",2943                searchTerms: ["anchors", "lines", "object"]2944            }, {title: "fas fa-venus", searchTerms: ["female"]}, {2945                title: "fas fa-venus-double",2946                searchTerms: []2947            }, {title: "fas fa-venus-mars", searchTerms: []}, {2948                title: "fab fa-viacoin",2949                searchTerms: []2950            }, {title: "fab fa-viadeo", searchTerms: []}, {2951                title: "fab fa-viadeo-square",2952                searchTerms: []2953            }, {title: "fas fa-vial", searchTerms: ["test tube"]}, {2954                title: "fas fa-vials",2955                searchTerms: ["lab results", "test tubes"]2956            }, {title: "fab fa-viber", searchTerms: []}, {2957                title: "fas fa-video",2958                searchTerms: ["camera", "film", "movie", "record", "video-camera"]2959            }, {title: "fas fa-video-slash", searchTerms: []}, {2960                title: "fas fa-vihara",2961                searchTerms: ["buddhism", "buddhist", "building", "monastery"]2962            }, {title: "fab fa-vimeo", searchTerms: []}, {2963                title: "fab fa-vimeo-square",2964                searchTerms: []2965            }, {title: "fab fa-vimeo-v", searchTerms: ["vimeo"]}, {2966                title: "fab fa-vine",2967                searchTerms: []2968            }, {title: "fab fa-vk", searchTerms: []}, {2969                title: "fab fa-vnv",2970                searchTerms: []2971            }, {title: "fas fa-volleyball-ball", searchTerms: []}, {2972                title: "fas fa-volume-down",2973                searchTerms: ["audio", "lower", "music", "quieter", "sound", "speaker"]2974            }, {title: "fas fa-volume-mute", searchTerms: []}, {2975                title: "fas fa-volume-off",2976                searchTerms: ["audio", "music", "mute", "sound"]2977            }, {2978                title: "fas fa-volume-up",2979                searchTerms: ["audio", "higher", "louder", "music", "sound", "speaker"]2980            }, {2981                title: "fas fa-vote-yea",2982                searchTerms: ["accept", "cast", "election", "politics", "positive", "yes"]2983            }, {title: "fas fa-vr-cardboard", searchTerms: ["google", "reality", "virtual"]}, {2984                title: "fab fa-vuejs",2985                searchTerms: []2986            }, {title: "fas fa-walking", searchTerms: []}, {2987                title: "fas fa-wallet",2988                searchTerms: []2989            }, {title: "fas fa-warehouse", searchTerms: []}, {2990                title: "fas fa-water",2991                searchTerms: []2992            }, {title: "fab fa-weebly", searchTerms: []}, {title: "fab fa-weibo", searchTerms: []}, {2993                title: "fas fa-weight",2994                searchTerms: ["measurement", "scale", "weight"]2995            }, {title: "fas fa-weight-hanging", searchTerms: ["anvil", "heavy", "measurement"]}, {2996                title: "fab fa-weixin",2997                searchTerms: []2998            }, {title: "fab fa-whatsapp", searchTerms: []}, {2999                title: "fab fa-whatsapp-square",3000                searchTerms: []3001            }, {title: "fas fa-wheelchair", searchTerms: ["handicap", "person"]}, {3002                title: "fab fa-whmcs",3003                searchTerms: []3004            }, {title: "fas fa-wifi", searchTerms: []}, {3005                title: "fab fa-wikipedia-w",3006                searchTerms: []3007            }, {3008                title: "fas fa-wind",3009                searchTerms: ["air", "blow", "breeze", "fall", "seasonal"]3010            }, {title: "fas fa-window-close", searchTerms: []}, {3011                title: "far fa-window-close",3012                searchTerms: []3013            }, {title: "fas fa-window-maximize", searchTerms: []}, {3014                title: "far fa-window-maximize",3015                searchTerms: []3016            }, {title: "fas fa-window-minimize", searchTerms: []}, {3017                title: "far fa-window-minimize",3018                searchTerms: []3019            }, {title: "fas fa-window-restore", searchTerms: []}, {3020                title: "far fa-window-restore",3021                searchTerms: []3022            }, {title: "fab fa-windows", searchTerms: ["microsoft"]}, {3023                title: "fas fa-wine-bottle",3024                searchTerms: ["alcohol", "beverage", "drink", "glass", "grapes"]3025            }, {3026                title: "fas fa-wine-glass",3027                searchTerms: ["alcohol", "beverage", "drink", "grapes"]3028            }, {3029                title: "fas fa-wine-glass-alt",3030                searchTerms: ["alcohol", "beverage", "drink", "grapes"]3031            }, {title: "fab fa-wix", searchTerms: []}, {3032                title: "fab fa-wizards-of-the-coast",3033                searchTerms: ["Dungeons & Dragons", "d&d", "dnd", "fantasy", "game", "gaming", "tabletop"]3034            }, {title: "fab fa-wolf-pack-battalion", searchTerms: []}, {3035                title: "fas fa-won-sign",3036                searchTerms: ["krw"]3037            }, {title: "fab fa-wordpress", searchTerms: []}, {3038                title: "fab fa-wordpress-simple",3039                searchTerms: []3040            }, {title: "fab fa-wpbeginner", searchTerms: []}, {3041                title: "fab fa-wpexplorer",3042                searchTerms: []3043            }, {title: "fab fa-wpforms", searchTerms: []}, {3044                title: "fab fa-wpressr",3045                searchTerms: ["rendact"]3046            }, {3047                title: "fas fa-wrench",3048                searchTerms: ["fix", "settings", "spanner", "tool", "update"]3049            }, {title: "fas fa-x-ray", searchTerms: ["radiological images", "radiology"]}, {3050                title: "fab fa-xbox",3051                searchTerms: []3052            }, {title: "fab fa-xing", searchTerms: []}, {3053                title: "fab fa-xing-square",3054                searchTerms: []3055            }, {title: "fab fa-y-combinator", searchTerms: []}, {3056                title: "fab fa-yahoo",3057                searchTerms: []3058            }, {title: "fab fa-yandex", searchTerms: []}, {3059                title: "fab fa-yandex-international",3060                searchTerms: []3061            }, {title: "fab fa-yelp", searchTerms: []}, {3062                title: "fas fa-yen-sign",3063                searchTerms: ["jpy", "money"]3064            }, {title: "fas fa-yin-yang", searchTerms: ["daoism", "opposites", "taoism"]}, {3065                title: "fab fa-yoast",3066                searchTerms: []3067            }, {3068                title: "fab fa-youtube",3069                searchTerms: ["film", "video", "youtube-play", "youtube-square"]3070            }, {title: "fab fa-youtube-square", searchTerms: []}, {title: "fab fa-zhihu", searchTerms: []}]3071    })...AdvancedSearchController.js
Source:AdvancedSearchController.js  
1/*2 * Copyright (C) 2011 Google Inc. All rights reserved.3 *4 * Redistribution and use in source and binary forms, with or without5 * modification, are permitted provided that the following conditions are6 * met:7 *8 * 1. Redistributions of source code must retain the above copyright9 * notice, this list of conditions and the following disclaimer.10 *11 * 2. Redistributions in binary form must reproduce the above12 * copyright notice, this list of conditions and the following disclaimer13 * in the documentation and/or other materials provided with the14 * distribution.15 *16 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.20 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.27 */28/**29 * @constructor30 */31WebInspector.AdvancedSearchController = function()32{33    this._shortcut = WebInspector.AdvancedSearchController.createShortcut();34    this._searchId = 0;35    36    WebInspector.settings.advancedSearchConfig = WebInspector.settings.createSetting("advancedSearchConfig", new WebInspector.SearchConfig("", true, false));37    38    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);39}40WebInspector.AdvancedSearchController.createShortcut = function()41{42    if (WebInspector.isMac())43        return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Meta | WebInspector.KeyboardShortcut.Modifiers.Alt);44    else45        return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Ctrl | WebInspector.KeyboardShortcut.Modifiers.Shift);46}47WebInspector.AdvancedSearchController.prototype = {48    /**49     * @param {Event} event50     */51    handleShortcut: function(event)52    {53        if (WebInspector.KeyboardShortcut.makeKeyFromEvent(event) === this._shortcut.key) {54            this.show();55            event.handled = true;56        }57    },58    _frameNavigated: function()59    {60        this.resetSearch();61    },62    /**63     * @param {WebInspector.SearchScope} searchScope64     */65    registerSearchScope: function(searchScope)66    {67        // FIXME: implement multiple search scopes.68        this._searchScope = searchScope;69    },70    show: function()71    {72        if (!this._searchView)73            this._searchView = new WebInspector.SearchView(this);74        75        if (this._searchView.isShowing())76            this._searchView.focus();77        else78            WebInspector.showViewInDrawer(this._searchView);79    },80    close: function()81    {82        this.stopSearch();83        WebInspector.closeDrawerView();84    },85    /**86     * @param {number} searchId87     * @param {Object} searchResult88     */89    _onSearchResult: function(searchId, searchResult)90    {91        if (searchId !== this._searchId)92            return;93        this._searchView.addSearchResult(searchResult);94        if (!searchResult.searchMatches.length)95            return;96        97        if (!this._searchResultsPane) 98            this._searchResultsPane = this._currentSearchScope.createSearchResultsPane(this._searchConfig);        99        this._searchView.resultsPane = this._searchResultsPane; 100        this._searchResultsPane.addSearchResult(searchResult);101    },102    103    /**104     * @param {number} searchId105     * @param {boolean} finished106     */107    _onSearchFinished: function(searchId, finished)108    {109        if (searchId !== this._searchId)110            return;111        if (!this._searchResultsPane)112            this._searchView.nothingFound();113        114        this._searchView.searchFinished(finished);115    },116    117    /**118     * @param {WebInspector.SearchConfig} searchConfig119     */120    startSearch: function(searchConfig)121    {122        this.resetSearch();123        ++this._searchId;124        this._searchConfig = searchConfig;125        // FIXME: this._currentSearchScope should be initialized based on searchConfig126        this._currentSearchScope = this._searchScope;127        var totalSearchResultsCount = this._currentSearchScope.performSearch(searchConfig, this._onSearchResult.bind(this, this._searchId), this._onSearchFinished.bind(this, this._searchId));128        this._searchView.searchStarted(totalSearchResultsCount);129    },130    131    resetSearch: function()132    {133        this.stopSearch();134        if (this._searchResultsPane) {135            this._searchView.resetResults();136            delete this._searchResultsPane;137        }138    },139    140    stopSearch: function()141    {142        if (this._currentSearchScope)143            this._currentSearchScope.stopSearch();144    }145}146/**147 * @constructor148 * @extends {WebInspector.View}149 * @param {WebInspector.AdvancedSearchController} controller150 */151WebInspector.SearchView = function(controller)152{153    WebInspector.View.call(this);154    this.registerRequiredCSS("textViewer.css");155    156    this._controller = controller;157    this.element.className = "search-view";158    this._searchPanelElement = this.element.createChild("div");159    this._searchPanelElement.tabIndex = 0;160    this._searchPanelElement.className = "search-panel";161    this._searchPanelElement.addEventListener("keydown", this._onKeyDown.bind(this), false);162    163    this._searchResultsElement = this.element.createChild("div");164    this._searchResultsElement.className = "search-results";165    166    this._search = this._searchPanelElement.createChild("input");167    this._search.setAttribute("type", "search");168    this._search.addStyleClass("search-config-search");169    this._search.setAttribute("results", "0");170    this._search.setAttribute("size", 20);171    this._ignoreCaseLabel = this._searchPanelElement.createChild("label");172    this._ignoreCaseLabel.addStyleClass("search-config-label");173    this._ignoreCaseCheckbox = this._ignoreCaseLabel.createChild("input");174    this._ignoreCaseCheckbox.setAttribute("type", "checkbox");175    this._ignoreCaseCheckbox.addStyleClass("search-config-checkbox");176    this._ignoreCaseLabel.appendChild(document.createTextNode(WebInspector.UIString("Ignore case")));177    178    this._regexLabel = this._searchPanelElement.createChild("label");179    this._regexLabel.addStyleClass("search-config-label");180    this._regexCheckbox = this._regexLabel.createChild("input");181    this._regexCheckbox.setAttribute("type", "checkbox");182    this._regexCheckbox.addStyleClass("search-config-checkbox");183    this._regexLabel.appendChild(document.createTextNode(WebInspector.UIString("Regular expression")));184    185    this._searchDoneButton = this._searchPanelElement.createChild("button");186    this._searchDoneButton.textContent = WebInspector.UIString("Close");187    this._searchDoneButton.addStyleClass("search-close-button");188    this._searchDoneButton.addEventListener("click", this._closeButtonPressed.bind(this));189    190    this._searchStatusBarElement = document.createElement("div");191    this._searchStatusBarElement.className = "search-status-bar-item";192    this._searchMessageElement = this._searchStatusBarElement.createChild("div");193    this._searchMessageElement.className = "search-status-bar-message";194    this._searchProgressElement = document.createElement("progress");195    this._searchProgressElement.className = "search-status-bar-progress";196    197    this._searchStopButtonItem = document.createElement("div");198    this._searchStopButtonItem.className = "search-status-bar-stop-button-item";199    this._searchStopStatusBarButton = new WebInspector.StatusBarButton(WebInspector.UIString("Stop search"), "search-status-bar-stop-button");200    this._searchStopButtonItem.appendChild(this._searchStopStatusBarButton.element);201    this._searchStopStatusBarButton.addEventListener("click", this._searchStopButtonPressed, this);202    203    this._searchResultsMessageElement = document.createElement("span");204    this._searchResultsMessageElement.className = "search-results-status-bar-message";205    this._load();206}207// Number of recent search queries to store.208WebInspector.SearchView.maxQueriesCount = 20;209WebInspector.SearchView.prototype = {210    /**211     * @return {Array.<Element>}212     */213    get statusBarItems()214    {215        return [this._searchStatusBarElement];216    },217    /**218     * @return {Element}219     */220    get counterElement()221    {222        return this._searchResultsMessageElement;223    },224    /**225     * @return {WebInspector.SearchConfig}226     */227    get searchConfig()228    {229        return new WebInspector.SearchConfig(this._search.value, this._ignoreCaseCheckbox.checked, this._regexCheckbox.checked);230    },231    232    /**233     * @type {WebInspector.SearchResultsPane}234     */235    set resultsPane(resultsPane)236    {237        this.resetResults();238        this._searchResultsElement.appendChild(resultsPane.element);239    },240    241    /**242     * @param {number} totalSearchResultsCount243     */244    searchStarted: function(totalSearchResultsCount)245    {246        this.resetResults();247        this._resetCounters();248        249        this._totalSearchResultsCount = totalSearchResultsCount;250        this._searchMessageElement.textContent = WebInspector.UIString("Searching...");251        this._searchStatusBarElement.appendChild(this._searchProgressElement);252        this._searchStatusBarElement.appendChild(this._searchStopButtonItem);253        this._updateSearchProgress();254        255        this._updateSearchResultsMessage();256        257        if (!this._searchingView)258            this._searchingView = new WebInspector.EmptyView(WebInspector.UIString("Searching..."));259        this._searchingView.show(this._searchResultsElement);260    },261    _updateSearchResultsMessage: function()262    {263        if (this._searchMatchesCount && this._searchResultsCount)264            this._searchResultsMessageElement.textContent = WebInspector.UIString("Found %d matches in %d files.", this._searchMatchesCount, this._nonEmptySearchResultsCount);265        else266            this._searchResultsMessageElement.textContent = "";267    },268    _updateSearchProgress: function()269    {270        this._searchProgressElement.setAttribute("max", this._totalSearchResultsCount);271        this._searchProgressElement.setAttribute("value", this._searchResultsCount);272    },273    resetResults: function()274    {275        if (this._searchingView)276            this._searchingView.detach();277        if (this._notFoundView)278            this._notFoundView.detach();279        this._searchResultsElement.removeChildren();280    },281    _resetCounters: function()282    {283        this._searchMatchesCount = 0;284        this._searchResultsCount = 0;285        this._nonEmptySearchResultsCount = 0;286    },287    nothingFound: function()288    {289        this.resetResults();290        if (!this._notFoundView)291            this._notFoundView = new WebInspector.EmptyView(WebInspector.UIString("No matches found."));292        this._notFoundView.show(this._searchResultsElement);293        this._searchResultsMessageElement.textContent = WebInspector.UIString("No matches found.");294    },295    /**296     * @param {Object} searchResult297     */298    addSearchResult: function(searchResult)299    {300        this._searchMatchesCount += searchResult.searchMatches.length;301        this._searchResultsCount++;302        if (searchResult.searchMatches.length)303            this._nonEmptySearchResultsCount++;304        this._updateSearchResultsMessage();305        this._updateSearchProgress();306    },307    /**308     * @param {boolean} finished309     */310    searchFinished: function(finished)311    {312        this._searchMessageElement.textContent = finished ? WebInspector.UIString("Search finished.") : WebInspector.UIString("Search interrupted.");313        this._searchStatusBarElement.removeChild(this._searchProgressElement);314        this._searchStatusBarElement.removeChild(this._searchStopButtonItem);315    },316    focus: function()317    {318        WebInspector.setCurrentFocusElement(this._search);319        this._search.select();320    },321    wasShown: function()322    {323        this.focus();324    },325    wasHidden: function()326    {327        this._controller.stopSearch();328    },329    /**330     * @param {Event} event331     */332    _onKeyDown: function(event)333    {334        switch (event.keyCode) {335        case WebInspector.KeyboardShortcut.Keys.Enter.code:336            this._onAction();337            break;338        case WebInspector.KeyboardShortcut.Keys.Esc.code:339            this._controller.close();340            event.consume(true);341            break;342        }        343    },344    345    _save: function()346    {347        var searchConfig = new WebInspector.SearchConfig(this.searchConfig.query, this.searchConfig.ignoreCase, this.searchConfig.isRegex); 348        WebInspector.settings.advancedSearchConfig.set(searchConfig);349    },350    351    _load: function()352    {353        var searchConfig = WebInspector.settings.advancedSearchConfig.get();354        this._search.value = searchConfig.query;355        this._ignoreCaseCheckbox.checked = searchConfig.ignoreCase;356        this._regexCheckbox.checked = searchConfig.isRegex;357    },358    _closeButtonPressed: function()359    {360        this._controller.close();361    },362    _searchStopButtonPressed: function()363    {364        this._controller.stopSearch();365        this.focus();366    },367    368    _onAction: function()369    {370        if (!this.searchConfig.query || !this.searchConfig.query.length)371            return;372        373        this._save();374        this._controller.startSearch(this.searchConfig);375    }376}377WebInspector.SearchView.prototype.__proto__ = WebInspector.View.prototype;378/**379 * @constructor380 * @param {string} query381 * @param {boolean} ignoreCase382 * @param {boolean} isRegex383 */384WebInspector.SearchConfig = function(query, ignoreCase, isRegex)385{386    this.query = query;387    this.ignoreCase = ignoreCase;388    this.isRegex = isRegex;389}390/**391 * @interface392 */393WebInspector.SearchScope = function()394{395}396WebInspector.SearchScope.prototype = {397    /**398     * @param {WebInspector.SearchConfig} searchConfig399     * @param {function(Object)} searchResultCallback400     * @param {function(boolean)} searchFinishedCallback401     */402    performSearch: function(searchConfig, searchResultCallback, searchFinishedCallback) { },403    stopSearch: function() { },404    405    /**406     * @param {WebInspector.SearchConfig} searchConfig407     * @return {WebInspector.SearchResultsPane}408     */409    createSearchResultsPane: function(searchConfig) { }410}411/**412 * @constructor413 * @param {WebInspector.SearchConfig} searchConfig414 */415WebInspector.SearchResultsPane = function(searchConfig)416{417    this._searchConfig = searchConfig;418    this.element = document.createElement("div");419}420WebInspector.SearchResultsPane.prototype = {421    /**422     * @return {WebInspector.SearchConfig}423     */424    get searchConfig()425    {426        return this._searchConfig;427    },428    /**429     * @param {Object} searchResult430     */431    addSearchResult: function(searchResult) { }432}433/**434 * @constructor435 * @extends {WebInspector.SearchResultsPane} 436 * @param {WebInspector.SearchConfig} searchConfig437 */438WebInspector.FileBasedSearchResultsPane = function(searchConfig)439{440    WebInspector.SearchResultsPane.call(this, searchConfig);441    442    this._searchResults = [];443    this.element.id ="search-results-pane-file-based";444    445    this._treeOutlineElement = document.createElement("ol");446    this._treeOutlineElement.className = "outline-disclosure";447    this._treeOutlineElement.addStyleClass("search-results-outline-disclosure");448    this.element.appendChild(this._treeOutlineElement);449    this._treeOutline = new TreeOutline(this._treeOutlineElement);450    451    this._matchesExpandedCount = 0;452}453WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount = 20;454WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce = 20;455WebInspector.FileBasedSearchResultsPane.prototype = {456    /**457     * @param {Object} file458     * @param {number} lineNumber459     * @param {number} columnNumber460     * @return {Element}461     */462    createAnchor: function(file, lineNumber, columnNumber) { },463    /**464     * @param {Object} file465     * @return {string}466     */467    fileName: function(file) { },468    /**469     * @param {Object} searchResult470     */471    addSearchResult: function(searchResult)472    {473        this._searchResults.push(searchResult);474        var file = searchResult.file;475        var fileName = this.fileName(file);476        var searchMatches = searchResult.searchMatches;477        var fileTreeElement = this._addFileTreeElement(fileName, searchMatches.length, this._searchResults.length - 1);478    },479    /**480     * @param {Object} searchResult481     * @param {TreeElement} fileTreeElement482     */483    _fileTreeElementExpanded: function(searchResult, fileTreeElement)484    {485        if (fileTreeElement._initialized)486            return;487        488        var toIndex = Math.min(searchResult.searchMatches.length, WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce);489        if (toIndex < searchResult.searchMatches.length) {490            this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex - 1);491            this._appendShowMoreMatchesElement(fileTreeElement, searchResult, toIndex - 1);492        } else493            this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex);494        495        fileTreeElement._initialized = true;496    },497    /**498     * @param {TreeElement} fileTreeElement499     * @param {Object} searchResult500     * @param {number} fromIndex501     * @param {number} toIndex502     */503    _appendSearchMatches: function(fileTreeElement, searchResult, fromIndex, toIndex)504    {505        var file = searchResult.file;506        var fileName = this.fileName(file);507        var searchMatches = searchResult.searchMatches;508        509        var regex = createSearchRegex(this._searchConfig.query, !this._searchConfig.ignoreCase, this._searchConfig.isRegex);510        for (var i = fromIndex; i < toIndex; ++i) {511            var lineNumber = searchMatches[i].lineNumber;512            var lineContent = searchMatches[i].lineContent;513            var matchRanges = this._regexMatchRanges(lineContent, regex);514            515            var anchor = this.createAnchor(file, lineNumber, matchRanges[0].offset);516            517            var numberString = numberToStringWithSpacesPadding(lineNumber + 1, 4);518            var lineNumberSpan = document.createElement("span");519            lineNumberSpan.addStyleClass("webkit-line-number");520            lineNumberSpan.addStyleClass("search-match-line-number");521            lineNumberSpan.textContent = numberString;522            anchor.appendChild(lineNumberSpan);523            524            var contentSpan = this._createContentSpan(lineContent, matchRanges);525            anchor.appendChild(contentSpan);526            527            var searchMatchElement = new TreeElement("", null, false);528            fileTreeElement.appendChild(searchMatchElement);529            searchMatchElement.listItemElement.className = "search-match";530            searchMatchElement.listItemElement.appendChild(anchor);531        }532    },533    /**534     * @param {TreeElement} fileTreeElement535     * @param {Object} searchResult536     * @param {number} startMatchIndex537     */538    _appendShowMoreMatchesElement: function(fileTreeElement, searchResult, startMatchIndex)539    {540        var matchesLeftCount = searchResult.searchMatches.length - startMatchIndex;541        var showMoreMatchesText = WebInspector.UIString("Show all matches (%d more).", matchesLeftCount);542        var showMoreMatchesElement = new TreeElement(showMoreMatchesText, null, false);543        fileTreeElement.appendChild(showMoreMatchesElement);544        showMoreMatchesElement.listItemElement.addStyleClass("show-more-matches");545        showMoreMatchesElement.onselect = this._showMoreMatchesElementSelected.bind(this, searchResult, startMatchIndex);546    },547    /**548     * @param {Object} searchResult549     * @param {number} startMatchIndex550     * @param {TreeElement} showMoreMatchesElement551     */552    _showMoreMatchesElementSelected: function(searchResult, startMatchIndex, showMoreMatchesElement)553    {554        var fileTreeElement = showMoreMatchesElement.parent;555        fileTreeElement.removeChild(showMoreMatchesElement);556        this._appendSearchMatches(fileTreeElement, searchResult, startMatchIndex, searchResult.searchMatches.length);557    },558    /**559     * @param {string} fileName560     * @param {number} searchMatchesCount561     * @param {number} searchResultIndex562     */563    _addFileTreeElement: function(fileName, searchMatchesCount, searchResultIndex)564    {565        var fileTreeElement = new TreeElement("", null, true);566        fileTreeElement.toggleOnClick = true;567        fileTreeElement.selectable = false;568        this._treeOutline.appendChild(fileTreeElement);569        fileTreeElement.listItemElement.addStyleClass("search-result");570        var fileNameSpan = document.createElement("span");571        fileNameSpan.className = "search-result-file-name";572        fileNameSpan.textContent = fileName;573        fileTreeElement.listItemElement.appendChild(fileNameSpan);574        var matchesCountSpan = document.createElement("span");575        matchesCountSpan.className = "search-result-matches-count";576        if (searchMatchesCount === 1)577            matchesCountSpan.textContent = WebInspector.UIString("(%d match)", searchMatchesCount);578        else579            matchesCountSpan.textContent = WebInspector.UIString("(%d matches)", searchMatchesCount);580        581        fileTreeElement.listItemElement.appendChild(matchesCountSpan);582        583        var searchResult = this._searchResults[searchResultIndex];584        fileTreeElement.onexpand = this._fileTreeElementExpanded.bind(this, searchResult);585        // Expand until at least certain amount of matches is expanded.586        if (this._matchesExpandedCount < WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount)587            fileTreeElement.expand();588        this._matchesExpandedCount += searchResult.searchMatches.length;589        return fileTreeElement; 590    },591    /**592     * @param {string} lineContent593     * @param {RegExp} regex594     * @return {Array.<Object>}595     */596    _regexMatchRanges: function(lineContent, regex)597    {598        regex.lastIndex = 0;599        var match;600        var offset = 0;601        var matchRanges = [];602        while ((regex.lastIndex < lineContent.length) && (match = regex.exec(lineContent)))603            matchRanges.push({ offset: match.index, length: match[0].length });604        605        return matchRanges;606    },607    608    /**609     * @param {string} lineContent610     * @param {Array.<Object>} matchRanges611     */612    _createContentSpan: function(lineContent, matchRanges)613    {614        var contentSpan = document.createElement("span");615        contentSpan.className = "search-match-content";616        contentSpan.textContent = lineContent;617        WebInspector.highlightRangesWithStyleClass(contentSpan, matchRanges, "highlighted-match");618        return contentSpan;619    }620}621WebInspector.FileBasedSearchResultsPane.prototype.__proto__ = WebInspector.SearchResultsPane.prototype;622/**623 * @constructor624 * @param {Object} file625 * @param {Array.<Object>} searchMatches626 */627WebInspector.FileBasedSearchResultsPane.SearchResult = function(file, searchMatches) {628    this.file = file;629    this.searchMatches = searchMatches;630}631/**632 * @type {WebInspector.AdvancedSearchController}633 */...views.py
Source:views.py  
1import os23from api.utils import Documen_job4import operator5BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))6import pandas as pd7from django.db.models import Q8from django.shortcuts import render, redirect9from django.http import HttpResponse10from django.views import View11from django.http import JsonResponse12from collector.models import Innovation13from searchBar.models import SearchResult, KeywordSearch, Category, Keyword_category, company_info14import json15import csv16import wget17from datetime import datetime as dt1819my_api_key = ''20my_cse_id = ''212223# Create your views here.24class SearchView(View):25    template_name = "searchBar/searchBar.html"26    Return_template = "searchBar/searchResult.html"2728    def get(self, request):29        if request.user.is_authenticated:30            user = request.user.username31            category_result = Category.objects.all()32            return render(request, self.template_name, {'user': user, 'category_result': category_result})3334    def post(self, request):35        if request.user.is_authenticated:36            user = request.user.username37            if 'search' in request.POST:38                for type in request.POST.getlist('type'):39                    for Key_word in request.POST.getlist('Search_Anything'):40                        Description = request.POST.get('Desc_Search')41                        filter_type = type42                        store_Keyword = KeywordSearch(keyWord=Key_word, description=Description, filter=filter_type, status=4)43                        store_Keyword.save()44                        categories = request.POST.getlist('category')45                        categories.append('OTHERS')46                        for category in categories:47                            store_category = Keyword_category(name=category.upper(), keywordId=store_Keyword)48                            store_category.save()49                """Run BackGround Job For Panding Task"""50                Keyword_result = KeywordSearch.objects.filter(status=4).values()51                for filter in Keyword_result:52                    del filter["created_at"]53                    del filter["updated_at"]54                    keyword_searchId = KeywordSearch.objects.get(pk=filter['id'])55                    keyword_searchId.status = 056                    keyword_searchId.save()57                    create_lists = [filter]58                    Documen_job(create_lists)59                return redirect("searchResult")6061class SearchResultView(View):62    template_name = "searchBar/searchResult.html"6364    def get(self, request):65        if request.user.is_authenticated:66            user = request.user.username67            Keyword_result = KeywordSearch.objects.all().order_by('id')68            final_result = []69            for result in Keyword_result:7071                types_of_text = SearchResult.objects.filter(keywordId_id=result.id).values_list('type_of_text',72                                                                                                flat=True).distinct()73                total_company_result = company_info.objects.filter(keywordId=result.id).values_list('company_url',74                                                                                                flat=True).distinct()75                total_stored_result = SearchResult.objects.filter(keywordId_id=result.id).values_list('url',76                                                                                                flat=True).distinct()77                78                result.total_stored_result = len(total_stored_result) + len(total_company_result)7980                if result.total_crawled_result is not None:81                    result.total_crawled_result -= len(total_company_result)82                83                r = list(types_of_text[:1])84                if r:85                    result.types_of_text = r[0]86                else:87                    result.types_of_text = "TECHNOLOGY"88                if result.status == 0:89                    result.status = 'Pending'90                elif result.status == 1:91                    result.status = 'Running'92                elif result.status == 2:93                    result.status = 'Completed'94                    result.total_crawled_result = result.total_stored_result95                final_result.append(result)96            return render(request, self.template_name, {'params': final_result})9798    def post(self, request):99100        if 'load' in request.POST:101            Keyword_result = KeywordSearch.objects.filter(status=0).values()102            # print(Keyword_result)103            keywords_data = []104            for filter in Keyword_result:105                if filter['filter'] == 'Document':106                    pass107                    # document_Crawl(Keyword_result)108                elif filter['filter'] == 'Website':109                    keywords_data.append(filter)110            # test_crawl(keywords_data)111            Documen_job(keywords_data)112            return redirect("searchResult")113        else:114            selected_tests = request.POST['test_list_ids']115            selected_tests = json.loads(selected_tests)116            for i, test in enumerate(selected_tests):117                delete_records = KeywordSearch.objects.get(id=test)118                delete_records.delete()119        return HttpResponse("success")120121class result(View):122    def get(self, request):123        searches = request.GET['search']124        matches = Innovation.objects.all().order_by("title").filter(Q(title__contains=searches)).values()125        return JsonResponse({"models_to_return": list(matches)})126127128class updateResult(View):129    def get(self, request):130        Keyword_result = KeywordSearch.objects.all().values()131        object_result = []132133        for result in Keyword_result:134            if result['status'] == 0:135                result['status'] = 'Pending'136            elif result['status'] == 1:137                result['status'] = 'Running'138            elif result['status'] == 2:139                result['status'] = 'Completed'140            object_result.append(result)141        return JsonResponse({"models_to_return": list(object_result)})142143144class filterResult(View):145    template_name = "searchBar/searchResult.html"146147    def get(self, request, status_id):148        result_list = KeywordSearch.objects.filter(status=status_id).values()149        final_result = []150        for result in result_list:151            if result['status'] == 0:152                result['status'] = 'Pending'153            elif result['status'] == 1:154                result['status'] = 'Running'155            elif result['status'] == 2:156                result['status'] = 'Completed'157            final_result.append(result)158        return render(request, self.template_name, {'params': final_result})159160161"""New Overview page Response"""162163164class SearchListView(View):165    template_name1 = "searchBar/searchList.html"166    template_name2 = "searchBar/weboverview_ref.html"167168    def get(self, request, search_id):169        keywordSearchResult = KeywordSearch.objects.get(id=search_id)170        """Get All Type Of Url_extension"""171        extract_url_extension_type = SearchResult.objects.filter(keywordId_id=search_id).values_list(172            'url_extension_type', flat=True).distinct()173        """Get Keyword_Id To find Results"""174        SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()175        """Get Type_of_text"""176        types_of_text = SearchResult.objects.filter(keywordId_id=search_id).values_list('type_of_text',177                                                                                        flat=True).distinct()178        custom_result = {}179180        for filter in extract_url_extension_type:181            filterResults = SearchResult.objects.filter(182                Q(keywordId_id=search_id) & Q(url_extension_type=filter)).values()183            custom_result[filter] = filterResults184        """ Finding Company_Info Witch Stores From Google Map Api"""185        company_data = company_info.objects.filter(keywordId_id=search_id).values()186        return render(request, self.template_name2,187                      {'result': SearchResults, 'finalResult': custom_result, 'keywordSearch': keywordSearchResult,188                       'types_of_text': types_of_text, 'url_extension': extract_url_extension_type, 'select_type': '',189                       'company_details': company_data})190191192"""Replica"""193194195class SearchListTypeView(View):196    template_name1 = "searchBar/searchList.html"197    template_name2 = "searchBar/weboverview_ref.html"198199    def get(self, request, search_id, type):200        keywordSearchResult = KeywordSearch.objects.get(id=search_id)201        desc_is_null = False202        if not keywordSearchResult.description:203            desc_is_null = True204        """Get All Type Of Url_extension"""205        extract_url_extension_type = SearchResult.objects.filter(keywordId_id=search_id).values_list(206            'url_extension_type', flat=True).distinct()207        """Get Keyword_Id To find Results"""208        SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()209        """Get Type_of_text"""210        types_of_text = SearchResult.objects.filter(keywordId_id=search_id).values_list('type_of_text',211                                                                                        flat=True).distinct()212213        custom_result = {}214        for filter in extract_url_extension_type:215            filterResults = SearchResult.objects.filter(216                Q(keywordId_id=search_id) & Q(url_extension_type=filter) & Q(type_of_text=type)).order_by(217                '-matched_similarity').values()218            custom_result[filter] = filterResults219        """Finding Company_Info Witch Stores From Google Map Api"""220        company_data = company_info.objects.filter(keywordId_id=search_id).order_by('-matched_similarity').values()221222        return render(request, self.template_name2,223                      {'result': SearchResults, 'finalResult': custom_result, 'keywordSearch': keywordSearchResult,224                       'types_of_text': types_of_text, 'url_extension': extract_url_extension_type,225                       'select_type': type, 'company_details': company_data, 'desc_is_null': desc_is_null})226227228"""Old_Overview page Response"""229230231# class SearchListView(View):232#     template_name1 = "searchBar/searchList.html"233#     template_name2 = "searchBar/weboverview.html"234#235#     def get(self, request, search_id):236#         keywordSearchResult = KeywordSearch.objects.get(id=search_id)237#         SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()238#         return render(request, self.template_name2, {'result': SearchResults, 'keywordSearch': keywordSearchResult})239240241class ExportCsvView(View):242243    def post(self, request):244        fileName = request.POST['filename'] + '.csv'245        filePath = 'media/' + fileName246        search_id = request.POST['search_id']247        company_search_id = request.POST['company_startup_id']248        check_all_ids = request.POST['check_all_ids']249        search_ids = json.loads(search_id)250        allcheck_ids = json.loads(check_all_ids)251        print(allcheck_ids)252        company_search_ids = json.loads(company_search_id)253254        """Extracting_data For all checked_id with Type"""255        search_result_id_list = []256        for allcheck_id in allcheck_ids:257            SearchResults = SearchResult.objects.filter(keywordId=allcheck_id['keyword_id'],258                                                        url_extension_type=allcheck_id['type'],type_of_text=allcheck_id['types_of_text'],).values_list('id',259                                                                                                            flat=True).distinct().order_by('-matched_similarity')260            for id in SearchResults:261                search_result_id_list.append(id)262        """combine Two search id least"""263        all_searchid = search_result_id_list + search_ids264        """Removing same Id's from list and creating Final list of id's"""265        final_search_ids = []266        for id in all_searchid:267            if int(id) not in final_search_ids:268                final_search_ids.append(id)269        """Writing the csv file"""270        with open(filePath, 'w', newline='') as file:271            writer = csv.writer(file, quoting=csv.QUOTE_NONNUMERIC, delimiter=';')272            writer.writerow(273                ["Title", "URL", "Description", "Type", "Category", "Subcategory", "Rating"])274            275            276            for ids in final_search_ids:277                searchResult = SearchResult.objects.get(pk=ids)278                keywordSearchResult = KeywordSearch.objects.get(pk=searchResult.keywordId_id)279                writer.writerow(280                    [searchResult.title, searchResult.url, searchResult.description, keywordSearchResult.filter,281                     searchResult.type_of_text, searchResult.url_extension_type, searchResult.matched_similarity])282        283            284            for company_id in company_search_ids:285                searchResult = SearchResult.objects.get(pk=company_id)286                keywordSearchResult = KeywordSearch.objects.get(pk=searchResult.keywordId_id)287                company_details = company_info.objects.get(searchResultId=company_id)288                writer.writerow(289                    [company_details.company_name, company_details.company_url, searchResult.description,290                     keywordSearchResult.filter,291                     searchResult.type_of_text,"COMPANY / STARTUP" , keywordSearchResult.spin])292293            294            return JsonResponse({"filePath": filePath, "fileName": fileName})295296297class DownloadServerView(View):298299    def post(self, request):300        test = '%d%m%Y'301        dte = dt.now().strftime(test)302        fileName = "innovation{}.xlsx".format(dte)303        filePath = 'media/searchresult/' + fileName304        search_id = request.POST['search_id']305        search_ids = json.loads(search_id)306307        with open(filePath, 'w') as file:308            writer = csv.writer(file, )309            writer.writerow(["Title", "URL", "Description"])310            for ids in search_ids:311                searchResult = SearchResult.objects.get(pk=ids)312                writer.writerow([searchResult.title, searchResult.url, searchResult.description])313            return JsonResponse({"filePath": filePath, "fileName": fileName})314315316class DownloadLocallyView(View):317318    def post(self, request):319        innvoation_id = request.POST['innvoation_id']320        # fileName = "innovation{}.xlsx".format(innvoation_id)321        fileName = "innovation_{}.xlsx".format(innvoation_id)322        filePath = 'media/downloadLocally/' + fileName323        search_id = request.POST['search_id']324        search_ids = json.loads(search_id)325        if len(search_id) > 2:326            with open(filePath, 'w') as file:327                writer = csv.writer(file, )328                writer.writerow(["Title", "URL", "Description"])329                # data showing based on search ids330                for ids in search_ids:331                    searchResult = SearchResult.objects.get(pk=ids)332                    writer.writerow([searchResult.title, searchResult.url, searchResult.description])333334        else:335            with open(filePath, 'w') as file:336                # data showing based on innovation id337                writer = csv.writer(file, )338                writer.writerow(["Title", "URL", "Description"])339                searchResultData = SearchResult.objects.filter(keywordId_id=innvoation_id)340                for search in searchResultData:341                    writer.writerow([search.title, search.url, search.description])342343        return JsonResponse({"filePath": filePath, "fileName": fileName})344345346class DownloadFile(View):347348    def post(self, request):349        url = request.POST['linkUrls']350        fileName = request.POST['fileName'];351        filePath = 'media/downloadFileTempLocally/' + request.POST['fileName']352        wget.download(url, filePath)353        return JsonResponse({"filePath": filePath, "fileName": fileName})354355356def delete_duplicate_link(search_id):357    keywordSearchResult = KeywordSearch.objects.get(id=search_id)358    SearchResults = SearchResult.objects.filter(keywordId_id=search_id).values()359    y = []360    t = []361    z = []362    for a in SearchResults:363        if not a["url"] in y:364            y.append(a["url"])365        else:366            t.append(a["url"])367            z.append(a["id"])368            urldel = SearchResult.objects.get(id=a["id"])369            urldel.delete()370
...test_search.py
Source:test_search.py  
...70            'time-ms': 2,71            'cpu-time-ms': 072        }73    }74    def test_cloudsearch_qsearch(self):75        search = SearchConnection(endpoint=HOSTNAME)76        search.search(q='Test')77        args = self.get_args(HTTPretty.last_request.raw_requestline)78        self.assertEqual(args[b'q'], [b"Test"])79        self.assertEqual(args[b'start'], [b"0"])80        self.assertEqual(args[b'size'], [b"10"])81    def test_cloudsearch_bqsearch(self):82        search = SearchConnection(endpoint=HOSTNAME)83        search.search(bq="'Test'")84        args = self.get_args(HTTPretty.last_request.raw_requestline)85        self.assertEqual(args[b'bq'], [b"'Test'"])86    def test_cloudsearch_search_details(self):87        search = SearchConnection(endpoint=HOSTNAME)88        search.search(q='Test', size=50, start=20)89        args = self.get_args(HTTPretty.last_request.raw_requestline)90        self.assertEqual(args[b'q'], [b"Test"])91        self.assertEqual(args[b'size'], [b"50"])92        self.assertEqual(args[b'start'], [b"20"])93    def test_cloudsearch_facet_single(self):94        search = SearchConnection(endpoint=HOSTNAME)95        search.search(q='Test', facet=["Author"])96        args = self.get_args(HTTPretty.last_request.raw_requestline)97        self.assertEqual(args[b'facet'], [b"Author"])98    def test_cloudsearch_facet_multiple(self):99        search = SearchConnection(endpoint=HOSTNAME)100        search.search(q='Test', facet=["author", "cat"])101        args = self.get_args(HTTPretty.last_request.raw_requestline)102        self.assertEqual(args[b'facet'], [b"author,cat"])103    def test_cloudsearch_facet_constraint_single(self):104        search = SearchConnection(endpoint=HOSTNAME)105        search.search(106            q='Test',107            facet_constraints={'author': "'John Smith','Mark Smith'"})108        args = self.get_args(HTTPretty.last_request.raw_requestline)109        self.assertEqual(args[b'facet-author-constraints'],110                         [b"'John Smith','Mark Smith'"])111    def test_cloudsearch_facet_constraint_multiple(self):112        search = SearchConnection(endpoint=HOSTNAME)113        search.search(114            q='Test',115            facet_constraints={'author': "'John Smith','Mark Smith'",116                               'category': "'News','Reviews'"})117        args = self.get_args(HTTPretty.last_request.raw_requestline)118        self.assertEqual(args[b'facet-author-constraints'],119                         [b"'John Smith','Mark Smith'"])120        self.assertEqual(args[b'facet-category-constraints'],121                         [b"'News','Reviews'"])122    def test_cloudsearch_facet_sort_single(self):123        search = SearchConnection(endpoint=HOSTNAME)124        search.search(q='Test', facet_sort={'author': 'alpha'})125        args = self.get_args(HTTPretty.last_request.raw_requestline)126        self.assertEqual(args[b'facet-author-sort'], [b'alpha'])127    def test_cloudsearch_facet_sort_multiple(self):128        search = SearchConnection(endpoint=HOSTNAME)129        search.search(q='Test', facet_sort={'author': 'alpha',130                                            'cat': 'count'})131        args = self.get_args(HTTPretty.last_request.raw_requestline)132        self.assertEqual(args[b'facet-author-sort'], [b'alpha'])133        self.assertEqual(args[b'facet-cat-sort'], [b'count'])134    def test_cloudsearch_top_n_single(self):135        search = SearchConnection(endpoint=HOSTNAME)136        search.search(q='Test', facet_top_n={'author': 5})137        args = self.get_args(HTTPretty.last_request.raw_requestline)138        self.assertEqual(args[b'facet-author-top-n'], [b'5'])139    def test_cloudsearch_top_n_multiple(self):140        search = SearchConnection(endpoint=HOSTNAME)141        search.search(q='Test', facet_top_n={'author': 5, 'cat': 10})142        args = self.get_args(HTTPretty.last_request.raw_requestline)143        self.assertEqual(args[b'facet-author-top-n'], [b'5'])144        self.assertEqual(args[b'facet-cat-top-n'], [b'10'])145    def test_cloudsearch_rank_single(self):146        search = SearchConnection(endpoint=HOSTNAME)147        search.search(q='Test', rank=["date"])148        args = self.get_args(HTTPretty.last_request.raw_requestline)149        self.assertEqual(args[b'rank'], [b'date'])150    def test_cloudsearch_rank_multiple(self):151        search = SearchConnection(endpoint=HOSTNAME)152        search.search(q='Test', rank=["date", "score"])153        args = self.get_args(HTTPretty.last_request.raw_requestline)154        self.assertEqual(args[b'rank'], [b'date,score'])155    def test_cloudsearch_result_fields_single(self):156        search = SearchConnection(endpoint=HOSTNAME)157        search.search(q='Test', return_fields=['author'])158        args = self.get_args(HTTPretty.last_request.raw_requestline)159        self.assertEqual(args[b'return-fields'], [b'author'])160    def test_cloudsearch_result_fields_multiple(self):161        search = SearchConnection(endpoint=HOSTNAME)162        search.search(q='Test', return_fields=['author', 'title'])163        args = self.get_args(HTTPretty.last_request.raw_requestline)164        self.assertEqual(args[b'return-fields'], [b'author,title'])165    def test_cloudsearch_t_field_single(self):166        search = SearchConnection(endpoint=HOSTNAME)167        search.search(q='Test', t={'year': '2001..2007'})168        args = self.get_args(HTTPretty.last_request.raw_requestline)169        self.assertEqual(args[b't-year'], [b'2001..2007'])170    def test_cloudsearch_t_field_multiple(self):171        search = SearchConnection(endpoint=HOSTNAME)172        search.search(q='Test', t={'year': '2001..2007', 'score': '10..50'})173        args = self.get_args(HTTPretty.last_request.raw_requestline)174        self.assertEqual(args[b't-year'], [b'2001..2007'])175        self.assertEqual(args[b't-score'], [b'10..50'])176    def test_cloudsearch_results_meta(self):177        """Check returned metadata is parsed correctly"""178        search = SearchConnection(endpoint=HOSTNAME)179        results = search.search(q='Test')180        # These rely on the default response which is fed into HTTPretty181        self.assertEqual(results.rank, "-text_relevance")182        self.assertEqual(results.match_expression, "Test")183    def test_cloudsearch_results_info(self):184        """Check num_pages_needed is calculated correctly"""185        search = SearchConnection(endpoint=HOSTNAME)186        results = search.search(q='Test')187        # This relies on the default response which is fed into HTTPretty188        self.assertEqual(results.num_pages_needed, 3.0)189    def test_cloudsearch_results_matched(self):190        """191        Check that information objects are passed back through the API192        correctly.193        """194        search = SearchConnection(endpoint=HOSTNAME)195        query = search.build_query(q='Test')196        results = search(query)197        self.assertEqual(results.search_service, search)198        self.assertEqual(results.query, query)199    def test_cloudsearch_results_hits(self):200        """Check that documents are parsed properly from AWS"""201        search = SearchConnection(endpoint=HOSTNAME)202        results = search.search(q='Test')203        hits = list(map(lambda x: x['id'], results.docs))204        # This relies on the default response which is fed into HTTPretty205        self.assertEqual(206            hits, ["12341", "12342", "12343", "12344",207                   "12345", "12346", "12347"])208    def test_cloudsearch_results_iterator(self):209        """Check the results iterator"""210        search = SearchConnection(endpoint=HOSTNAME)211        results = search.search(q='Test')212        results_correct = iter(["12341", "12342", "12343", "12344",213                                "12345", "12346", "12347"])214        for x in results:215            self.assertEqual(x['id'], next(results_correct))216    def test_cloudsearch_results_internal_consistancy(self):217        """Check the documents length matches the iterator details"""218        search = SearchConnection(endpoint=HOSTNAME)219        results = search.search(q='Test')220        self.assertEqual(len(results), len(results.docs))221    def test_cloudsearch_search_nextpage(self):222        """Check next page query is correct"""223        search = SearchConnection(endpoint=HOSTNAME)224        query1 = search.build_query(q='Test')225        query2 = search.build_query(q='Test')226        results = search(query2)227        self.assertEqual(results.next_page().query.start,228                         query1.start + query1.size)229        self.assertEqual(query1.q, query2.q)230class CloudSearchSearchFacetTest(CloudSearchSearchBaseTest):231    response = {232        'rank': '-text_relevance',233        'match-expr': "Test",234        'hits': {235            'found': 30,236            'start': 0,237            'hit': CloudSearchSearchBaseTest.hits238            },239        'info': {240            'rid': 'b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08',241            'time-ms': 2,242            'cpu-time-ms': 0243        },244        'facets': {245            'tags': {},246            'animals': {'constraints': [{'count': '2', 'value': 'fish'}, {'count': '1', 'value': 'lions'}]},247        }248    }249    def test_cloudsearch_search_facets(self):250        #self.response['facets'] = {'tags': {}}251        search = SearchConnection(endpoint=HOSTNAME)252        results = search.search(q='Test', facet=['tags'])253        self.assertTrue('tags' not in results.facets)254        self.assertEqual(results.facets['animals'], {u'lions': u'1', u'fish': u'2'})255class CloudSearchNonJsonTest(CloudSearchSearchBaseTest):256    response = b'<html><body><h1>500 Internal Server Error</h1></body></html>'257    response_status = 500258    content_type = 'text/xml'259    def test_response(self):260        search = SearchConnection(endpoint=HOSTNAME)261        with self.assertRaises(SearchServiceException):262            search.search(q='Test')263class CloudSearchUnauthorizedTest(CloudSearchSearchBaseTest):264    response = b'<html><body><h1>403 Forbidden</h1>foo bar baz</body></html>'265    response_status = 403266    content_type = 'text/html'267    def test_response(self):268        search = SearchConnection(endpoint=HOSTNAME)269        with self.assertRaisesRegexp(SearchServiceException, 'foo bar baz'):270            search.search(q='Test')271class FakeResponse(object):272    status_code = 405273    content = b''274class CloudSearchConnectionTest(unittest.TestCase):275    cloudsearch = True276    def setUp(self):277        super(CloudSearchConnectionTest, self).setUp()278        self.conn = SearchConnection(279            endpoint='test-domain.cloudsearch.amazonaws.com'280        )281    def test_expose_additional_error_info(self):282        mpo = mock.patch.object283        fake = FakeResponse()284        fake.content = b'Nopenopenope'285        # First, in the case of a non-JSON, non-403 error.286        with mpo(requests, 'get', return_value=fake) as mock_request:287            with self.assertRaises(SearchServiceException) as cm:288                self.conn.search(q='not_gonna_happen')289            self.assertTrue('non-json response' in str(cm.exception))290            self.assertTrue('Nopenopenope' in str(cm.exception))291        # Then with JSON & an 'error' key within.292        fake.content = json.dumps({293            'error': "Something went wrong. Oops."294        }).encode('utf-8')295        with mpo(requests, 'get', return_value=fake) as mock_request:296            with self.assertRaises(SearchServiceException) as cm:297                self.conn.search(q='no_luck_here')298            self.assertTrue('Unknown error' in str(cm.exception))...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
