PageSourceSearch

https://carteco-ess.org/fonts/fontawesome-5/js/fontawesome.js

js carteco-ess.org collected 2026-09-26 03:26:47 UTC 75,115 bytes, 2,384 lines download raw bytes

vendor: 56,219 bytes, lines 1-1937
1(function () {
2  'use strict';
3
4  function _typeof(obj) {
5    if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
6      _typeof = function (obj) {
7        return typeof obj;
8      };
9    } else {
10      _typeof = function (obj) {
11        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
12      };
13    }
14
15    return _typeof(obj);
16  }
17
18  function _classCallCheck(instance, Constructor) {
19    if (!(instance instanceof Constructor)) {
20      throw new TypeError("Cannot call a class as a function");
21    }
22  }
23
24  function _defineProperties(target, props) {
25    for (var i = 0; i < props.length; i++) {
26      var descriptor = props[i];
27      descriptor.enumerable = descriptor.enumerable || false;
28      descriptor.configurable = true;
29      if ("value" in descriptor) descriptor.writable = true;
30      Object.defineProperty(target, descriptor.key, descriptor);
31    }
32  }
33
34  function _createClass(Constructor, protoProps, staticProps) {
35    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
36    if (staticProps) _defineProperties(Constructor, staticProps);
37    return Constructor;
38  }
39
40  function _defineProperty(obj, key, value) {
41    if (key in obj) {
42      Object.defineProperty(obj, key, {
43        value: value,
44        enumerable: true,
45        configurable: true,
46        writable: true
47      });
48    } else {
49      obj[key] = value;
50    }
51
52    return obj;
53  }
54
55  function _objectSpread(target) {
56    for (var i = 1; i < arguments.length; i++) {
57      var source = arguments[i] != null ? arguments[i] : {};
58      var ownKeys = Object.keys(source);
59
60      if (typeof Object.getOwnPropertySymbols === 'function') {
61        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
62          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
63        }));
64      }
65
66      ownKeys.forEach(function (key) {
67        _defineProperty(target, key, source[key]);
68      });
69    }
70
71    return target;
72  }
73
74  function _slicedToArray(arr, i) {
75    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
76  }
77
78  function _toConsumableArray(arr) {
79    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
80  }
81
82  function _arrayWithoutHoles(arr) {
83    if (Array.isArray(arr)) {
84      for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
85
86      return arr2;
87    }
88  }
89
90  function _arrayWithHoles(arr) {
91    if (Array.isArray(arr)) return arr;
92  }
93
94  function _iterableToArray(iter) {
95    if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
96  }
97
98  function _iterableToArrayLimit(arr, i) {
99    var _arr = [];
100    var _n = true;
101    var _d = false;
102    var _e = undefined;
103
104    try {
105      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
106        _arr.push(_s.value);
107
108        if (i && _arr.length === i) break;
109      }
110    } catch (err) {
111      _d = true;
112      _e = err;
113    } finally {
114      try {
115        if (!_n && _i["return"] != null) _i["return"]();
116      } finally {
117        if (_d) throw _e;
118      }
119    }
120
121    return _arr;
122  }
123
124  function _nonIterableSpread() {
125    throw new TypeError("Invalid attempt to spread non-iterable instance");
126  }
127
128  function _nonIterableRest() {
129    throw new TypeError("Invalid attempt to destructure non-iterable instance");
130  }
131
132  var noop = function noop() {};
133
134  var _WINDOW = {};
135  var _DOCUMENT = {};
136  var _MUTATION_OBSERVER = null;
137  var _PERFORMANCE = {
138    mark: noop,
139    measure: noop
140  };
141
142  try {
143    if (typeof window !== 'undefined') _WINDOW = window;
144    if (typeof document !== 'undefined') _DOCUMENT = document;
145    if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;
146    if (typeof performance !== 'undefined') _PERFORMANCE = performance;
147  } catch (e) {}
148
149  var _ref = _WINDOW.navigator || {},
150      _ref$userAgent = _ref.userAgent,
151      userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
152
153  var WINDOW = _WINDOW;
154  var DOCUMENT = _DOCUMENT;
155  var MUTATION_OBSERVER = _MUTATION_OBSERVER;
156  var PERFORMANCE = _PERFORMANCE;
157  var IS_BROWSER = !!WINDOW.document;
158  var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
159  var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
160
161  var NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';
162  var UNITS_IN_GRID = 16;
163  var DEFAULT_FAMILY_PREFIX = 'fa';
164  var DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';
165  var DATA_FA_I2SVG = 'data-fa-i2svg';
166  var DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';
167  var DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';
168  var DATA_PREFIX = 'data-prefix';
169  var DATA_ICON = 'data-icon';
170  var HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';
171  var TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];
172  var PRODUCTION = function () {
173    try {
174      return "production" === 'production';
175    } catch (e) {
176      return false;
177    }
178  }();
179  var PREFIX_TO_STYLE = {
180    'fas': 'solid',
181    'far': 'regular',
182    'fal': 'light',
183    'fab': 'brands',
184    'fa': 'solid'
185  };
186  var STYLE_TO_PREFIX = {
187    'solid': 'fas',
188    'regular': 'far',
189    'light': 'fal',
190    'brands': 'fab'
191  };
192  var LAYERS_TEXT_CLASSNAME = 'fa-layers-text';
193  var FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Brands|Free|Pro)/;
194  var FONT_WEIGHT_TO_PREFIX = {
195    '900': 'fas',
196    '400': 'far',
197    'normal': 'far',
198    '300': 'fal'
199  };
200  var oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
201  var oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);
202  var ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];
203  var RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter'].concat(oneToTen.map(function (n) {
204    return "".concat(n, "x");
205  })).concat(oneToTwenty.map(function (n) {
206    return "w-".concat(n);
207  }));
208
209  var initial = WINDOW.FontAwesomeConfig || {};
210
211  function getAttrConfig(attr) {
212    var element = DOCUMENT.querySelector('script[' + attr + ']');
213
214    if (element) {
215      return element.getAttribute(attr);
216    }
217  }
218
219  function coerce(val) {
220    // Getting an empty string will occur if the attribute is set on the HTML tag but without a value
221    // We'll assume that this is an indication that it should be toggled to true
222    // For example <script data-search-pseudo-elements src="..."></script>
223    if (val === '') return true;
224    if (val === 'false') return false;
225    if (val === 'true') return true;
226    return val;
227  }
228
229  if (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {
230    var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];
231    attrs.forEach(function (_ref) {
232      var _ref2 = _slicedToArray(_ref, 2),
233          attr = _ref2[0],
234          key = _ref2[1];
235
236      var val = coerce(getAttrConfig(attr));
237
238      if (val !== undefined && val !== null) {
239        initial[key] = val;
240      }
241    });
242  }
243
244  var _default = {
245    familyPrefix: DEFAULT_FAMILY_PREFIX,
246    replacementClass: DEFAULT_REPLACEMENT_CLASS,
247    autoReplaceSvg: true,
248    autoAddCss: true,
249    autoA11y: true,
250    searchPseudoElements: false,
251    observeMutations: true,
252    keepOriginalSource: true,
253    measurePerformance: false,
254    showMissingIcons: true
255  };
256
257  var _config = _objectSpread({}, _default, initial);
258
259  if (!_config.autoReplaceSvg) _config.observeMutations = false;
260
261  var config = _objectSpread({}, _config);
262
263  WINDOW.FontAwesomeConfig = config;
264
265  var w = WINDOW || {};
266  if (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};
267  if (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};
268  if (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};
269  if (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];
270  var namespace = w[NAMESPACE_IDENTIFIER];
271
272  var functions = [];
273
274  var listener = function listener() {
275    DOCUMENT.removeEventListener('DOMContentLoaded', listener);
276    loaded = 1;
277    functions.map(function (fn) {
278      return fn();
279    });
280  };
281
282  var loaded = false;
283
284  if (IS_DOM) {
285    loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
286    if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
287  }
288
289  function domready (fn) {
290    if (!IS_DOM) return;
291    loaded ? setTimeout(fn, 0) : functions.push(fn);
292  }
293
294  var PENDING = 'pending';
295  var SETTLED = 'settled';
296  var FULFILLED = 'fulfilled';
297  var REJECTED = 'rejected';
298
299  var NOOP = function NOOP() {};
300
301  var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
302  var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
303  var asyncQueue = [];
304  var asyncTimer;
305
306  function asyncFlush() {
307    // run promise callbacks
308    for (var i = 0; i < asyncQueue.length; i++) {
309      asyncQueue[i][0](asyncQueue[i][1]);
310    } // reset async asyncQueue
311
312
313    asyncQueue = [];
314    asyncTimer = false;
315  }
316
317  function asyncCall(callback, arg) {
318    asyncQueue.push([callback, arg]);
319
320    if (!asyncTimer) {
321      asyncTimer = true;
322      asyncSetTimer(asyncFlush, 0);
323    }
324  }
325
326  function invokeResolver(resolver, promise) {
327    function resolvePromise(value) {
328      resolve(promise, value);
329    }
330
331    function rejectPromise(reason) {
332      reject(promise, reason);
333    }
334
335    try {
336      resolver(resolvePromise, rejectPromise);
337    } catch (e) {
338      rejectPromise(e);
339    }
340  }
341
342  function invokeCallback(subscriber) {
343    var owner = subscriber.owner;
344    var settled = owner._state;
345    var value = owner._data;
346    var callback = subscriber[settled];
347    var promise = subscriber.then;
348
349    if (typeof callback === 'function') {
350      settled = FULFILLED;
351
352      try {
353        value = callback(value);
354      } catch (e) {
355        reject(promise, e);
356      }
357    }
358
359    if (!handleThenable(promise, value)) {
360      if (settled === FULFILLED) {
361        resolve(promise, value);
362      }
363
364      if (settled === REJECTED) {
365        reject(promise, value);
366      }
367    }
368  }
369
370  function handleThenable(promise, value) {
371    var resolved;
372
373    try {
374      if (promise === value) {
375        throw new TypeError('A promises callback cannot return that same promise.');
376      }
377
378      if (value && (typeof value === 'function' || _typeof(value) === 'object')) {
379        // then should be retrieved only once
380        var then = value.then;
381
382        if (typeof then === 'function') {
383          then.call(value, function (val) {
384            if (!resolved) {
385              resolved = true;
386
387              if (value === val) {
388                fulfill(promise, val);
389              } else {
390                resolve(promise, val);
391              }
392            }
393          }, function (reason) {
394            if (!resolved) {
395              resolved = true;
396              reject(promise, reason);
397            }
398          });
399          return true;
400        }
401      }
402    } catch (e) {
403      if (!resolved) {
404        reject(promise, e);
405      }
406
407      return true;
408    }
409
410    return false;
411  }
412
413  function resolve(promise, value) {
414    if (promise === value || !handleThenable(promise, value)) {
415      fulfill(promise, value);
416    }
417  }
418
419  function fulfill(promise, value) {
420    if (promise._state === PENDING) {
421      promise._state = SETTLED;
422      promise._data = value;
423      asyncCall(publishFulfillment, promise);
424    }
425  }
426
427  function reject(promise, reason) {
428    if (promise._state === PENDING) {
429      promise._state = SETTLED;
430      promise._data = reason;
431      asyncCall(publishRejection, promise);
432    }
433  }
434
435  function publish(promise) {
436    promise._then = promise._then.forEach(invokeCallback);
437  }
438
439  function publishFulfillment(promise) {
440    promise._state = FULFILLED;
441    publish(promise);
442  }
443
444  function publishRejection(promise) {
445    promise._state = REJECTED;
446    publish(promise);
447
448    if (!promise._handled && isNode) {
449      global.process.emit('unhandledRejection', promise._data, promise);
450    }
451  }
452
453  function notifyRejectionHandled(promise) {
454    global.process.emit('rejectionHandled', promise);
455  }
456  /**
457   * @class
458   */
459
460
461  function P(resolver) {
462    if (typeof resolver !== 'function') {
463      throw new TypeError('Promise resolver ' + resolver + ' is not a function');
464    }
465
466    if (this instanceof P === false) {
467      throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
468    }
469
470    this._then = [];
471    invokeResolver(resolver, this);
472  }
473
474  P.prototype = {
475    constructor: P,
476    _state: PENDING,
477    _then: null,
478    _data: undefined,
479    _handled: false,
480    then: function then(onFulfillment, onRejection) {
481      var subscriber = {
482        owner: this,
483        then: new this.constructor(NOOP),
484        fulfilled: onFulfillment,
485        rejected: onRejection
486      };
487
488      if ((onRejection || onFulfillment) && !this._handled) {
489        this._handled = true;
490
491        if (this._state === REJECTED && isNode) {
492          asyncCall(notifyRejectionHandled, this);
493        }
494      }
495
496      if (this._state === FULFILLED || this._state === REJECTED) {
497        // already resolved, call callback async
498        asyncCall(invokeCallback, subscriber);
499      } else {
500        // subscribe
501        this._then.push(subscriber);
502      }
503
504      return subscriber.then;
505    },
506    catch: function _catch(onRejection) {
507      return this.then(null, onRejection);
508    }
509  };
510
511  P.all = function (promises) {
512    if (!Array.isArray(promises)) {
513      throw new TypeError('You must pass an array to Promise.all().');
514    }
515
516    return new P(function (resolve, reject) {
517      var results = [];
518      var remaining = 0;
519
520      function resolver(index) {
521        remaining++;
522        return function (value) {
523          results[index] = value;
524
525          if (! --remaining) {
526            resolve(results);
527          }
528        };
529      }
530
531      for (var i = 0, promise; i < promises.length; i++) {
532        promise = promises[i];
533
534        if (promise && typeof promise.then === 'function') {
535          promise.then(resolver(i), reject);
536        } else {
537          results[i] = promise;
538        }
539      }
540
541      if (!remaining) {
542        resolve(results);
543      }
544    });
545  };
546
547  P.race = function (promises) {
548    if (!Array.isArray(promises)) {
549      throw new TypeError('You must pass an array to Promise.race().');
550    }
551
552    return new P(function (resolve, reject) {
553      for (var i = 0, promise; i < promises.length; i++) {
554        promise = promises[i];
555
556        if (promise && typeof promise.then === 'function') {
557          promise.then(resolve, reject);
558        } else {
559          resolve(promise);
560        }
561      }
562    });
563  };
564
565  P.resolve = function (value) {
566    if (value && _typeof(value) === 'object' && value.constructor === P) {
567      return value;
568    }
569
570    return new P(function (resolve) {
571      resolve(value);
572    });
573  };
574
575  P.reject = function (reason) {
576    return new P(function (resolve, reject) {
577      reject(reason);
578    });
579  };
580
581  var picked = typeof Promise === 'function' ? Promise : P;
582
583  var d = UNITS_IN_GRID;
584  var meaninglessTransform = {
585    size: 16,
586    x: 0,
587    y: 0,
588    rotate: 0,
589    flipX: false,
590    flipY: false
591  };
592
593  function isReserved(name) {
594    return ~RESERVED_CLASSES.indexOf(name);
595  }
596
597  function bunker(fn) {
598    try {
599      fn();
600    } catch (e) {
601      if (!PRODUCTION) {
602        throw e;
603      }
604    }
605  }
606  function insertCss(css) {
607    if (!css || !IS_DOM) {
608      return;
609    }
610
611    var style = DOCUMENT.createElement('style');
612    style.setAttribute('type', 'text/css');
613    style.innerHTML = css;
614    var headChildren = DOCUMENT.head.childNodes;
615    var beforeChild = null;
616
617    for (var i = headChildren.length - 1; i > -1; i--) {
618      var child = headChildren[i];
619      var tagName = (child.tagName || '').toUpperCase();
620
621      if (['STYLE', 'LINK'].indexOf(tagName) > -1) {
622        beforeChild = child;
623      }
624    }
625
626    DOCUMENT.head.insertBefore(style, beforeChild);
627    return css;
628  }
629  var idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
630  function nextUniqueId() {
631    var size = 12;
632    var id = '';
633
634    while (size-- > 0) {
635      id += idPool[Math.random() * 62 | 0];
636    }
637
638    return id;
639  }
640  function toArray(obj) {
641    var array = [];
642
643    for (var i = (obj || []).length >>> 0; i--;) {
644      array[i] = obj[i];
645    }
646
647    return array;
648  }
649  function classArray(node) {
650    if (node.classList) {
651      return toArray(node.classList);
652    } else {
653      return (node.getAttribute('class') || '').split(' ').filter(function (i) {
654        return i;
655      });
656    }
657  }
658  function getIconName(familyPrefix, cls) {
659    var parts = cls.split('-');
660    var prefix = parts[0];
661    var iconName = parts.slice(1).join('-');
662
663    if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {
664      return iconName;
665    } else {
666      return null;
667    }
668  }
669  function htmlEscape(str) {
670    return "".concat(str).replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
671  }
672  function joinAttributes(attributes) {
673    return Object.keys(attributes || {}).reduce(function (acc, attributeName) {
674      return acc + "".concat(attributeName, "=\"").concat(htmlEscape(attributes[attributeName]), "\" ");
675    }, '').trim();
676  }
677  function joinStyles(styles) {
678    return Object.keys(styles || {}).reduce(function (acc, styleName) {
679      return acc + "".concat(styleName, ": ").concat(styles[styleName], ";");
680    }, '');
681  }
682  function transformIsMeaningful(transform) {
683    return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;
684  }
685  function transformForSvg(_ref) {
686    var transform = _ref.transform,
687        containerWidth = _ref.containerWidth,
688        iconWidth = _ref.iconWidth;
689    var outer = {
690      transform: "translate(".concat(containerWidth / 2, " 256)")
691    };
692    var innerTranslate = "translate(".concat(transform.x * 32, ", ").concat(transform.y * 32, ") ");
693    var innerScale = "scale(".concat(transform.size / 16 * (transform.flipX ? -1 : 1), ", ").concat(transform.size / 16 * (transform.flipY ? -1 : 1), ") ");
694    var innerRotate = "rotate(".concat(transform.rotate, " 0 0)");
695    var inner = {
696      transform: "".concat(innerTranslate, " ").concat(innerScale, " ").concat(innerRotate)
697    };
698    var path = {
699      transform: "translate(".concat(iconWidth / 2 * -1, " -256)")
700    };
701    return {
702      outer: outer,
703      inner: inner,
704      path: path
705    };
706  }
707  function transformForCss(_ref2) {
708    var transform = _ref2.transform,
709        _ref2$width = _ref2.width,
710        width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,
711        _ref2$height = _ref2.height,
712        height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,
713        _ref2$startCentered = _ref2.startCentered,
714        startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;
715    var val = '';
716
717    if (startCentered && IS_IE) {
718      val += "translate(".concat(transform.x / d - width / 2, "em, ").concat(transform.y / d - height / 2, "em) ");
719    } else if (startCentered) {
720      val += "translate(calc(-50% + ".concat(transform.x / d, "em), calc(-50% + ").concat(transform.y / d, "em)) ");
721    } else {
722      val += "translate(".concat(transform.x / d, "em, ").concat(transform.y / d, "em) ");
723    }
724
725    val += "scale(".concat(transform.size / d * (transform.flipX ? -1 : 1), ", ").concat(transform.size / d * (transform.flipY ? -1 : 1), ") ");
726    val += "rotate(".concat(transform.rotate, "deg) ");
727    return val;
728  }
729
730  var ALL_SPACE = {
731    x: 0,
732    y: 0,
733    width: '100%',
734    height: '100%'
735  };
736  function makeIconMasking (_ref) {
737    var children = _ref.children,
738        attributes = _ref.attributes,
739        main = _ref.main,
740        mask = _ref.mask,
741        transform = _ref.transform;
742    var mainWidth = main.width,
743        mainPath = main.icon;
744    var maskWidth = mask.width,
745        maskPath = mask.icon;
746    var trans = transformForSvg({
747      transform: transform,
748      containerWidth: maskWidth,
749      iconWidth: mainWidth
750    });
751    var maskRect = {
752      tag: 'rect',
753      attributes: _objectSpread({}, ALL_SPACE, {
754        fill: 'white'
755      })
756    };
757    var maskInnerGroup = {
758      tag: 'g',
759      attributes: _objectSpread({}, trans.inner),
760      children: [{
761        tag: 'path',
762        attributes: _objectSpread({}, mainPath.attributes, trans.path, {
763          fill: 'black'
764        })
765      }]
766    };
767    var maskOuterGroup = {
768      tag: 'g',
769      attributes: _objectSpread({}, trans.outer),
770      children: [maskInnerGroup]
771    };
772    var maskId = "mask-".concat(nextUniqueId());
773    var clipId = "clip-".concat(nextUniqueId());
774    var maskTag = {
775      tag: 'mask',
776      attributes: _objectSpread({}, ALL_SPACE, {
777        id: maskId,
778        maskUnits: 'userSpaceOnUse',
779        maskContentUnits: 'userSpaceOnUse'
780      }),
781      children: [maskRect, maskOuterGroup]
782    };
783    var defs = {
784      tag: 'defs',
785      children: [{
786        tag: 'clipPath',
787        attributes: {
788          id: clipId
789        },
790        children: [maskPath]
791      }, maskTag]
792    };
793    children.push(defs, {
794      tag: 'rect',
795      attributes: _objectSpread({
796        fill: 'currentColor',
797        'clip-path': "url(#".concat(clipId, ")"),
798        mask: "url(#".concat(maskId, ")")
799      }, ALL_SPACE)
800    });
801    return {
802      children: children,
803      attributes: attributes
804    };
805  }
806
807  function makeIconStandard (_ref) {
808    var children = _ref.children,
809        attributes = _ref.attributes,
810        main = _ref.main,
811        transform = _ref.transform,
812        styles = _ref.styles;
813    var styleString = joinStyles(styles);
814
815    if (styleString.length > 0) {
816      attributes['style'] = styleString;
817    }
818
819    if (transformIsMeaningful(transform)) {
820      var trans = transformForSvg({
821        transform: transform,
822        containerWidth: main.width,
823        iconWidth: main.width
824      });
825      children.push({
826        tag: 'g',
827        attributes: _objectSpread({}, trans.outer),
828        children: [{
829          tag: 'g',
830          attributes: _objectSpread({}, trans.inner),
831          children: [{
832            tag: main.icon.tag,
833            children: main.icon.children,
834            attributes: _objectSpread({}, main.icon.attributes, trans.path)
835          }]
836        }]
837      });
838    } else {
839      children.push(main.icon);
840    }
841
842    return {
843      children: children,
844      attributes: attributes
845    };
846  }
847
848  function asIcon (_ref) {
849    var children = _ref.children,
850        main = _ref.main,
851        mask = _ref.mask,
852        attributes = _ref.attributes,
853        styles = _ref.styles,
854        transform = _ref.transform;
855
856    if (transformIsMeaningful(transform) && main.found && !mask.found) {
857      var width = main.width,
858          height = main.height;
859      var offset = {
860        x: width / height / 2,
861        y: 0.5
862      };
863      attributes['style'] = joinStyles(_objectSpread({}, styles, {
864        'transform-origin': "".concat(offset.x + transform.x / 16, "em ").concat(offset.y + transform.y / 16, "em")
865      }));
866    }
867
868    return [{
869      tag: 'svg',
870      attributes: attributes,
871      children: children
872    }];
873  }
874
875  function asSymbol (_ref) {
876    var prefix = _ref.prefix,
877        iconName = _ref.iconName,
878        children = _ref.children,
879        attributes = _ref.attributes,
880        symbol = _ref.symbol;
881    var id = symbol === true ? "".concat(prefix, "-").concat(config.familyPrefix, "-").concat(iconName) : symbol;
882    return [{
883      tag: 'svg',
884      attributes: {
885        style: 'display: none;'
886      },
887      children: [{
888        tag: 'symbol',
889        attributes: _objectSpread({}, attributes, {
890          id: id
891        }),
892        children: children
893      }]
894    }];
895  }
896
897  function makeInlineSvgAbstract(params) {
898    var _params$icons = params.icons,
899        main = _params$icons.main,
900        mask = _params$icons.mask,
901        prefix = params.prefix,
902        iconName = params.iconName,
903        transform = params.transform,
904        symbol = params.symbol,
905        title = params.title,
906        extra = params.extra,
907        _params$watchable = params.watchable,
908        watchable = _params$watchable === void 0 ? false : _params$watchable;
909
910    var _ref = mask.found ? mask : main,
911        width = _ref.width,
912        height = _ref.height;
913
914    var widthClass = "fa-w-".concat(Math.ceil(width / height * 16));
915    var attrClass = [config.replacementClass, iconName ? "".concat(config.familyPrefix, "-").concat(iconName) : '', widthClass].filter(function (c) {
916      return extra.classes.indexOf(c) === -1;
917    }).concat(extra.classes).join(' ');
918    var content = {
919      children: [],
920      attributes: _objectSpread({}, extra.attributes, {
921        'data-prefix': prefix,
922        'data-icon': iconName,
923        'class': attrClass,
924        'role': 'img',
925        'xmlns': 'http://www.w3.org/2000/svg',
926        'viewBox': "0 0 ".concat(width, " ").concat(height)
927      })
928    };
929
930    if (watchable) {
931      content.attributes[DATA_FA_I2SVG] = '';
932    }
933
934    if (title) content.children.push({
935      tag: 'title',
936      attributes: {
937        id: content.attributes['aria-labelledby'] || "title-".concat(nextUniqueId())
938      },
939      children: [title]
940    });
941
942    var args = _objectSpread({}, content, {
943      prefix: prefix,
944      iconName: iconName,
945      main: main,
946      mask: mask,
947      transform: transform,
948      symbol: symbol,
949      styles: extra.styles
950    });
951
952    var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),
953        children = _ref2.children,
954        attributes = _ref2.attributes;
955
956    args.children = children;
957    args.attributes = attributes;
958
959    if (symbol) {
960      return asSymbol(args);
961    } else {
962      return asIcon(args);
963    }
964  }
965  function makeLayersTextAbstract(params) {
966    var content = params.content,
967        width = params.width,
968        height = params.height,
969        transform = params.transform,
970        title = params.title,
971        extra = params.extra,
972        _params$watchable2 = params.watchable,
973        watchable = _params$watchable2 === void 0 ? false : _params$watchable2;
974
975    var attributes = _objectSpread({}, extra.attributes, title ? {
976      'title': title
977    } : {}, {
978      'class': extra.classes.join(' ')
979    });
980
981    if (watchable) {
982      attributes[DATA_FA_I2SVG] = '';
983    }
984
985    var styles = _objectSpread({}, extra.styles);
986
987    if (transformIsMeaningful(transform)) {
988      styles['transform'] = transformForCss({
989        transform: transform,
990        startCentered: true,
991        width: width,
992        height: height
993      });
994      styles['-webkit-transform'] = styles['transform'];
995    }
996
997    var styleString = joinStyles(styles);
998
999    if (styleString.length > 0) {
1000      attributes['style'] = styleString;
1001    }
1002
1003    var val = [];
1004    val.push({
1005      tag: 'span',
1006      attributes: attributes,
1007      children: [content]
1008    });
1009
1010    if (title) {
1011      val.push({
1012        tag: 'span',
1013        attributes: {
1014          class: 'sr-only'
1015        },
1016        children: [title]
1017      });
1018    }
1019
1020    return val;
1021  }
1022  function makeLayersCounterAbstract(params) {
1023    var content = params.content,
1024        title = params.title,
1025        extra = params.extra;
1026
1027    var attributes = _objectSpread({}, extra.attributes, title ? {
1028      'title': title
1029    } : {}, {
1030      'class': extra.classes.join(' ')
1031    });
1032
1033    var styleString = joinStyles(extra.styles);
1034
1035    if (styleString.length > 0) {
1036      attributes['style'] = styleString;
1037    }
1038
1039    var val = [];
1040    val.push({
1041      tag: 'span',
1042      attributes: attributes,
1043      children: [content]
1044    });
1045
1046    if (title) {
1047      val.push({
1048        tag: 'span',
1049        attributes: {
1050          class: 'sr-only'
1051        },
1052        children: [title]
1053      });
1054    }
1055
1056    return val;
1057  }
1058
1059  var noop$1 = function noop() {};
1060
1061  var p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {
1062    mark: noop$1,
1063    measure: noop$1
1064  };
1065  var preamble = "FA \"5.7.1\"";
1066
1067  var begin = function begin(name) {
1068    p.mark("".concat(preamble, " ").concat(name, " begins"));
1069    return function () {
1070      return end(name);
1071    };
1072  };
1073
1074  var end = function end(name) {
1075    p.mark("".concat(preamble, " ").concat(name, " ends"));
1076    p.measure("".concat(preamble, " ").concat(name), "".concat(preamble, " ").concat(name, " begins"), "".concat(preamble, " ").concat(name, " ends"));
1077  };
1078
1079  var perf = {
1080    begin: begin,
1081    end: end
1082  };
1083
1084  /**
1085   * Internal helper to bind a function known to have 4 arguments
1086   * to a given context.
1087   */
1088
1089  var bindInternal4 = function bindInternal4(func, thisContext) {
1090    return function (a, b, c, d) {
1091      return func.call(thisContext, a, b, c, d);
1092    };
1093  };
1094
1095  /**
1096   * # Reduce
1097   *
1098   * A fast object `.reduce()` implementation.
1099   *
1100   * @param  {Object}   subject      The object to reduce over.
1101   * @param  {Function} fn           The reducer function.
1102   * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].
1103   * @param  {Object}   thisContext  The context for the reducer.
1104   * @return {mixed}                 The final result.
1105   */
1106
1107
1108  var reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {
1109    var keys = Object.keys(subject),
1110        length = keys.length,
1111        iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,
1112        i,
1113        key,
1114        result;
1115
1116    if (initialValue === undefined) {
1117      i = 1;
1118      result = subject[keys[0]];
1119    } else {
1120      i = 0;
1121      result = initialValue;
1122    }
1123
1124    for (; i < length; i++) {
1125      key = keys[i];
1126      result = iterator(result, subject[key], key, subject);
1127    }
1128
1129    return result;
1130  };
1131
1132  function defineIcons(prefix, icons) {
1133    var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1134    var _params$skipHooks = params.skipHooks,
1135        skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;
1136    var normalized = Object.keys(icons).reduce(function (acc, iconName) {
1137      var icon = icons[iconName];
1138      var expanded = !!icon.icon;
1139
1140      if (expanded) {
1141        acc[icon.iconName] = icon.icon;
1142      } else {
1143        acc[iconName] = icon;
1144      }
1145
1146      return acc;
1147    }, {});
1148
1149    if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {
1150      namespace.hooks.addPack(prefix, normalized);
1151    } else {
1152      namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);
1153    }
1154    /**
1155     * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
1156     * of new styles we needed to differentiate between them. Prefix `fa` is now an alias
1157     * for `fas` so we'll easy the upgrade process for our users by automatically defining
1158     * this as well.
1159     */
1160
1161
1162    if (prefix === 'fas') {
1163      defineIcons('fa', icons);
1164    }
1165  }
1166
1167  var styles = namespace.styles,
1168      shims = namespace.shims;
1169  var _byUnicode = {};
1170  var _byLigature = {};
1171  var _byOldName = {};
1172  var build = function build() {
1173    var lookup = function lookup(reducer) {
1174      return reduce(styles, function (o, style, prefix) {
1175        o[prefix] = reduce(style, reducer, {});
1176        return o;
1177      }, {});
1178    };
1179
1180    _byUnicode = lookup(function (acc, icon, iconName) {
1181      if (icon[3]) {
1182        acc[icon[3]] = iconName;
1183      }
1184
1185      return acc;
1186    });
1187    _byLigature = lookup(function (acc, icon, iconName) {
1188      var ligatures = icon[2];
1189      acc[iconName] = iconName;
1190      ligatures.forEach(function (ligature) {
1191        acc[ligature] = iconName;
1192      });
1193      return acc;
1194    });
1195    var hasRegular = 'far' in styles;
1196    _byOldName = reduce(shims, function (acc, shim) {
1197      var oldName = shim[0];
1198      var prefix = shim[1];
1199      var iconName = shim[2];
1200
1201      if (prefix === 'far' && !hasRegular) {
1202        prefix = 'fas';
1203      }
1204
1205      acc[oldName] = {
1206        prefix: prefix,
1207        iconName: iconName
1208      };
1209      return acc;
1210    }, {});
1211  };
1212  build();
1213  function byUnicode(prefix, unicode) {
1214    return _byUnicode[prefix][unicode];
1215  }
1216  function byLigature(prefix, ligature) {
1217    return _byLigature[prefix][ligature];
1218  }
1219  function byOldName(name) {
1220    return _byOldName[name] || {
1221      prefix: null,
1222      iconName: null
1223    };
1224  }
1225
1226  var styles$1 = namespace.styles;
1227  var emptyCanonicalIcon = function emptyCanonicalIcon() {
1228    return {
1229      prefix: null,
1230      iconName: null,
1231      rest: []
1232    };
1233  };
1234  function getCanonicalIcon(values) {
1235    return values.reduce(function (acc, cls) {
1236      var iconName = getIconName(config.familyPrefix, cls);
1237
1238      if (styles$1[cls]) {
1239        acc.prefix = cls;
1240      } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fab', 'fa'].indexOf(cls) > -1) {
1241        acc.prefix = cls;
1242      } else if (iconName) {
1243        var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};
1244        acc.iconName = shim.iconName || iconName;
1245        acc.prefix = shim.prefix || acc.prefix;
1246      } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {
1247        acc.rest.push(cls);
1248      }
1249
1250      return acc;
1251    }, emptyCanonicalIcon());
1252  }
1253  function iconFromMapping(mapping, prefix, iconName) {
1254    if (mapping && mapping[prefix] && mapping[prefix][iconName]) {
1255      return {
1256        prefix: prefix,
1257        iconName: iconName,
1258        icon: mapping[prefix][iconName]
1259      };
1260    }
1261  }
1262
1263  function toHtml(abstractNodes) {
1264    var tag = abstractNodes.tag,
1265        _abstractNodes$attrib = abstractNodes.attributes,
1266        attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,
1267        _abstractNodes$childr = abstractNodes.children,
1268        children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;
1269
1270    if (typeof abstractNodes === 'string') {
1271      return htmlEscape(abstractNodes);
1272    } else {
1273      return "<".concat(tag, " ").concat(joinAttributes(attributes), ">").concat(children.map(toHtml).join(''), "</").concat(tag, ">");
1274    }
1275  }
1276
1277  var noop$2 = function noop() {};
1278
1279  function isWatched(node) {
1280    var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;
1281    return typeof i2svg === 'string';
1282  }
1283
1284  function getMutator() {
1285    if (config.autoReplaceSvg === true) {
1286      return mutators.replace;
1287    }
1288
1289    var mutator = mutators[config.autoReplaceSvg];
1290    return mutator || mutators.replace;
1291  }
1292
1293  var mutators = {
1294    replace: function replace(mutation) {
1295      var node = mutation[0];
1296      var abstract = mutation[1];
1297      var newOuterHTML = abstract.map(function (a) {
1298        return toHtml(a);
1299      }).join('\n');
1300
1301      if (node.parentNode && node.outerHTML) {
1302        node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? "<!-- ".concat(node.outerHTML, " -->") : '');
1303      } else if (node.parentNode) {
1304        var newNode = document.createElement('span');
1305        node.parentNode.replaceChild(newNode, node);
1306        newNode.outerHTML = newOuterHTML;
1307      }
1308    },
1309    nest: function nest(mutation) {
1310      var node = mutation[0];
1311      var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.
1312      // Short-circuit to the standard replacement
1313
1314      if (~classArray(node).indexOf(config.replacementClass)) {
1315        return mutators.replace(mutation);
1316      }
1317
1318      var forSvg = new RegExp("".concat(config.familyPrefix, "-.*"));
1319      delete abstract[0].attributes.style;
1320      var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {
1321        if (cls === config.replacementClass || cls.match(forSvg)) {
1322          acc.toSvg.push(cls);
1323        } else {
1324          acc.toNode.push(cls);
1325        }
1326
1327        return acc;
1328      }, {
1329        toNode: [],
1330        toSvg: []
1331      });
1332      abstract[0].attributes.class = splitClasses.toSvg.join(' ');
1333      var newInnerHTML = abstract.map(function (a) {
1334        return toHtml(a);
1335      }).join('\n');
1336      node.setAttribute('class', splitClasses.toNode.join(' '));
1337      node.setAttribute(DATA_FA_I2SVG, '');
1338      node.innerHTML = newInnerHTML;
1339    }
1340  };
1341  function perform(mutations, callback) {
1342    var callbackFunction = typeof callback === 'function' ? callback : noop$2;
1343
1344    if (mutations.length === 0) {
1345      callbackFunction();
1346    } else {
1347      var frame = WINDOW.requestAnimationFrame || function (op) {
1348        return op();
1349      };
1350
1351      frame(function () {
1352        var mutator = getMutator();
1353        var mark = perf.begin('mutate');
1354        mutations.map(mutator);
1355        mark();
1356        callbackFunction();
1357      });
1358    }
1359  }
1360  var disabled = false;
1361  function disableObservation() {
1362    disabled = true;
1363  }
1364  function enableObservation() {
1365    disabled = false;
1366  }
1367  var mo = null;
1368  function observe(options) {
1369    if (!MUTATION_OBSERVER) {
1370      return;
1371    }
1372
1373    if (!config.observeMutations) {
1374      return;
1375    }
1376
1377    var treeCallback = options.treeCallback,
1378        nodeCallback = options.nodeCallback,
1379        pseudoElementsCallback = options.pseudoElementsCallback,
1380        _options$observeMutat = options.observeMutationsRoot,
1381        observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;
1382    mo = new MUTATION_OBSERVER(function (objects) {
1383      if (disabled) return;
1384      toArray(objects).forEach(function (mutationRecord) {
1385        if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {
1386          if (config.searchPseudoElements) {
1387            pseudoElementsCallback(mutationRecord.target);
1388          }
1389
1390          treeCallback(mutationRecord.target);
1391        }
1392
1393        if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {
1394          pseudoElementsCallback(mutationRecord.target.parentNode);
1395        }
1396
1397        if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {
1398          if (mutationRecord.attributeName === 'class') {
1399            var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),
1400                prefix = _getCanonicalIcon.prefix,
1401                iconName = _getCanonicalIcon.iconName;
1402
1403            if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);
1404            if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);
1405          } else {
1406            nodeCallback(mutationRecord.target);
1407          }
1408        }
1409      });
1410    });
1411    if (!IS_DOM) return;
1412    mo.observe(observeMutationsRoot, {
1413      childList: true,
1414      attributes: true,
1415      characterData: true,
1416      subtree: true
1417    });
1418  }
1419  function disconnect() {
1420    if (!mo) return;
1421    mo.disconnect();
1422  }
1423
1424  function styleParser (node) {
1425    var style = node.getAttribute('style');
1426    var val = [];
1427
1428    if (style) {
1429      val = style.split(';').reduce(function (acc, style) {
1430        var styles = style.split(':');
1431        var prop = styles[0];
1432        var value = styles.slice(1);
1433
1434        if (prop && value.length > 0) {
1435          acc[prop] = value.join(':').trim();
1436        }
1437
1438        return acc;
1439      }, {});
1440    }
1441
1442    return val;
1443  }
1444
1445  function toHex(unicode) {
1446    var result = '';
1447
1448    for (var i = 0; i < unicode.length; i++) {
1449      var hex = unicode.charCodeAt(i).toString(16);
1450      result += ('000' + hex).slice(-4);
1451    }
1452
1453    return result;
1454  }
1455
1456  function classParser (node) {
1457    var existingPrefix = node.getAttribute('data-prefix');
1458    var existingIconName = node.getAttribute('data-icon');
1459    var innerText = node.innerText !== undefined ? node.innerText.trim() : '';
1460    var val = getCanonicalIcon(classArray(node));
1461
1462    if (existingPrefix && existingIconName) {
1463      val.prefix = existingPrefix;
1464      val.iconName = existingIconName;
1465    }
1466
1467    if (val.prefix && innerText.length > 1) {
1468      val.iconName = byLigature(val.prefix, node.innerText);
1469    } else if (val.prefix && innerText.length === 1) {
1470      val.iconName = byUnicode(val.prefix, toHex(node.innerText));
1471    }
1472
1473    return val;
1474  }
1475
1476  var parseTransformString = function parseTransformString(transformString) {
1477    var transform = {
1478      size: 16,
1479      x: 0,
1480      y: 0,
1481      flipX: false,
1482      flipY: false,
1483      rotate: 0
1484    };
1485
1486    if (!transformString) {
1487      return transform;
1488    } else {
1489      return transformString.toLowerCase().split(' ').reduce(function (acc, n) {
1490        var parts = n.toLowerCase().split('-');
1491        var first = parts[0];
1492        var rest = parts.slice(1).join('-');
1493
1494        if (first && rest === 'h') {
1495          acc.flipX = true;
1496          return acc;
1497        }
1498
1499        if (first && rest === 'v') {
1500          acc.flipY = true;
1501          return acc;
1502        }
1503
1504        rest = parseFloat(rest);
1505
1506        if (isNaN(rest)) {
1507          return acc;
1508        }
1509
1510        switch (first) {
1511          case 'grow':
1512            acc.size = acc.size + rest;
1513            break;
1514
1515          case 'shrink':
1516            acc.size = acc.size - rest;
1517            break;
1518
1519          case 'left':
1520            acc.x = acc.x - rest;
1521            break;
1522
1523          case 'right':
1524            acc.x = acc.x + rest;
1525            break;
1526
1527          case 'up':
1528            acc.y = acc.y - rest;
1529            break;
1530
1531          case 'down':
1532            acc.y = acc.y + rest;
1533            break;
1534
1535          case 'rotate':
1536            acc.rotate = acc.rotate + rest;
1537            break;
1538        }
1539
1540        return acc;
1541      }, transform);
1542    }
1543  };
1544  function transformParser (node) {
1545    return parseTransformString(node.getAttribute('data-fa-transform'));
1546  }
1547
1548  function symbolParser (node) {
1549    var symbol = node.getAttribute('data-fa-symbol');
1550    return symbol === null ? false : symbol === '' ? true : symbol;
1551  }
1552
1553  function attributesParser (node) {
1554    var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {
1555      if (acc.name !== 'class' && acc.name !== 'style') {
1556        acc[attr.name] = attr.value;
1557      }
1558
1559      return acc;
1560    }, {});
1561    var title = node.getAttribute('title');
1562
1563    if (config.autoA11y) {
1564      if (title) {
1565        extraAttributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(nextUniqueId());
1566      } else {
1567        extraAttributes['aria-hidden'] = 'true';
1568        extraAttributes['focusable'] = 'false';
1569      }
1570    }
1571
1572    return extraAttributes;
1573  }
1574
1575  function maskParser (node) {
1576    var mask = node.getAttribute('data-fa-mask');
1577
1578    if (!mask) {
1579      return emptyCanonicalIcon();
1580    } else {
1581      return getCanonicalIcon(mask.split(' ').map(function (i) {
1582        return i.trim();
1583      }));
1584    }
1585  }
1586
1587  function blankMeta() {
1588    return {
1589      iconName: null,
1590      title: null,
1591      prefix: null,
1592      transform: meaninglessTransform,
1593      symbol: false,
1594      mask: null,
1595      extra: {
1596        classes: [],
1597        styles: {},
1598        attributes: {}
1599      }
1600    };
1601  }
1602  function parseMeta(node) {
1603    var _classParser = classParser(node),
1604        iconName = _classParser.iconName,
1605        prefix = _classParser.prefix,
1606        extraClasses = _classParser.rest;
1607
1608    var extraStyles = styleParser(node);
1609    var transform = transformParser(node);
1610    var symbol = symbolParser(node);
1611    var extraAttributes = attributesParser(node);
1612    var mask = maskParser(node);
1613    return {
1614      iconName: iconName,
1615      title: node.getAttribute('title'),
1616      prefix: prefix,
1617      transform: transform,
1618      symbol: symbol,
1619      mask: mask,
1620      extra: {
1621        classes: extraClasses,
1622        styles: extraStyles,
1623        attributes: extraAttributes
1624      }
1625    };
1626  }
1627
1628  function MissingIcon(error) {
1629    this.name = 'MissingIcon';
1630    this.message = error || 'Icon unavailable';
1631    this.stack = new Error().stack;
1632  }
1633  MissingIcon.prototype = Object.create(Error.prototype);
1634  MissingIcon.prototype.constructor = MissingIcon;
1635
1636  var FILL = {
1637    fill: 'currentColor'
1638  };
1639  var ANIMATION_BASE = {
1640    attributeType: 'XML',
1641    repeatCount: 'indefinite',
1642    dur: '2s'
1643  };
1644  var RING = {
1645    tag: 'path',
1646    attributes: _objectSpread({}, FILL, {
1647      d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'
1648    })
1649  };
1650
1651  var OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {
1652    attributeName: 'opacity'
1653  });
1654
1655  var DOT = {
1656    tag: 'circle',
1657    attributes: _objectSpread({}, FILL, {
1658      cx: '256',
1659      cy: '364',
1660      r: '28'
1661    }),
1662    children: [{
1663      tag: 'animate',
1664      attributes: _objectSpread({}, ANIMATION_BASE, {
1665        attributeName: 'r',
1666        values: '28;14;28;28;14;28;'
1667      })
1668    }, {
1669      tag: 'animate',
1670      attributes: _objectSpread({}, OPACITY_ANIMATE, {
1671        values: '1;0;1;1;0;1;'
1672      })
1673    }]
1674  };
1675  var QUESTION = {
1676    tag: 'path',
1677    attributes: _objectSpread({}, FILL, {
1678      opacity: '1',
1679      d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'
1680    }),
1681    children: [{
1682      tag: 'animate',
1683      attributes: _objectSpread({}, OPACITY_ANIMATE, {
1684        values: '1;0;0;0;0;1;'
1685      })
1686    }]
1687  };
1688  var EXCLAMATION = {
1689    tag: 'path',
1690    attributes: _objectSpread({}, FILL, {
1691      opacity: '0',
1692      d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'
1693    }),
1694    children: [{
1695      tag: 'animate',
1696      attributes: _objectSpread({}, OPACITY_ANIMATE, {
1697        values: '0;0;1;1;0;0;'
1698      })
1699    }]
1700  };
1701  var missing = {
1702    tag: 'g',
1703    children: [RING, DOT, QUESTION, EXCLAMATION]
1704  };
1705
1706  var styles$2 = namespace.styles;
1707  function findIcon(iconName, prefix) {
1708    return new picked(function (resolve, reject) {
1709      var val = {
1710        found: false,
1711        width: 512,
1712        height: 512,
1713        icon: missing
1714      };
1715
1716      if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {
1717        var icon = styles$2[prefix][iconName];
1718        var width = icon[0];
1719        var height = icon[1];
1720        var vectorData = icon.slice(4);
1721        val = {
1722          found: true,
1723          width: width,
1724          height: height,
1725          icon: {
1726            tag: 'path',
1727            attributes: {
1728              fill: 'currentColor',
1729              d: vectorData[0]
1730            }
1731          }
1732        };
1733        return resolve(val);
1734      }
1735
1736      if (iconName && prefix && !config.showMissingIcons) {
1737        reject(new MissingIcon("Icon is missing for prefix ".concat(prefix, " with icon name ").concat(iconName)));
1738      } else {
1739        resolve(val);
1740      }
1741    });
1742  }
1743
1744  var styles$3 = namespace.styles;
1745
1746  function generateSvgReplacementMutation(node, nodeMeta) {
1747    var iconName = nodeMeta.iconName,
1748        title = nodeMeta.title,
1749        prefix = nodeMeta.prefix,
1750        transform = nodeMeta.transform,
1751        symbol = nodeMeta.symbol,
1752        mask = nodeMeta.mask,
1753        extra = nodeMeta.extra;
1754    return new picked(function (resolve, reject) {
1755      picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {
1756        var _ref2 = _slicedToArray(_ref, 2),
1757            main = _ref2[0],
1758            mask = _ref2[1];
1759
1760        resolve([node, makeInlineSvgAbstract({
1761          icons: {
1762            main: main,
1763            mask: mask
1764          },
1765          prefix: prefix,
1766          iconName: iconName,
1767          transform: transform,
1768          symbol: symbol,
1769          mask: mask,
1770          title: title,
1771          extra: extra,
1772          watchable: true
1773        })]);
1774      });
1775    });
1776  }
1777
1778  function generateLayersText(node, nodeMeta) {
1779    var title = nodeMeta.title,
1780        transform = nodeMeta.transform,
1781        extra = nodeMeta.extra;
1782    var width = null;
1783    var height = null;
1784
1785    if (IS_IE) {
1786      var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);
1787      var boundingClientRect = node.getBoundingClientRect();
1788      width = boundingClientRect.width / computedFontSize;
1789      height = boundingClientRect.height / computedFontSize;
1790    }
1791
1792    if (config.autoA11y && !title) {
1793      extra.attributes['aria-hidden'] = 'true';
1794    }
1795
1796    return picked.resolve([node, makeLayersTextAbstract({
1797      content: node.innerHTML,
1798      width: width,
1799      height: height,
1800      transform: transform,
1801      title: title,
1802      extra: extra,
1803      watchable: true
1804    })]);
1805  }
1806
1807  function generateMutation(node) {
1808    var nodeMeta = parseMeta(node);
1809
1810    if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {
1811      return generateLayersText(node, nodeMeta);
1812    } else {
1813      return generateSvgReplacementMutation(node, nodeMeta);
1814    }
1815  }
1816
1817  function onTree(root) {
1818    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1819    if (!IS_DOM) return;
1820    var htmlClassList = DOCUMENT.documentElement.classList;
1821
1822    var hclAdd = function hclAdd(suffix) {
1823      return htmlClassList.add("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
1824    };
1825
1826    var hclRemove = function hclRemove(suffix) {
1827      return htmlClassList.remove("".concat(HTML_CLASS_I2SVG_BASE_CLASS, "-").concat(suffix));
1828    };
1829
1830    var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);
1831    var prefixesDomQuery = [".".concat(LAYERS_TEXT_CLASSNAME, ":not([").concat(DATA_FA_I2SVG, "])")].concat(prefixes.map(function (p) {
1832      return ".".concat(p, ":not([").concat(DATA_FA_I2SVG, "])");
1833    })).join(', ');
1834
1835    if (prefixesDomQuery.length === 0) {
1836      return;
1837    }
1838
1839    var candidates = toArray(root.querySelectorAll(prefixesDomQuery));
1840
1841    if (candidates.length > 0) {
1842      hclAdd('pending');
1843      hclRemove('complete');
1844    } else {
1845      return;
1846    }
1847
1848    var mark = perf.begin('onTree');
1849    var mutations = candidates.reduce(function (acc, node) {
1850      try {
1851        var mutation = generateMutation(node);
1852
1853        if (mutation) {
1854          acc.push(mutation);
1855        }
1856      } catch (e) {
1857        if (!PRODUCTION) {
1858          if (e instanceof MissingIcon) {
1859            console.error(e);
1860          }
1861        }
1862      }
1863
1864      return acc;
1865    }, []);
1866    return new picked(function (resolve, reject) {
1867      picked.all(mutations).then(function (resolvedMutations) {
1868        perform(resolvedMutations, function () {
1869          hclAdd('active');
1870          hclAdd('complete');
1871          hclRemove('pending');
1872          if (typeof callback === 'function') callback();
1873          mark();
1874          resolve();
1875        });
1876      }).catch(function () {
1877        mark();
1878        reject();
1879      });
1880    });
1881  }
1882  function onNode(node) {
1883    var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1884    generateMutation(node).then(function (mutation) {
1885      if (mutation) {
1886        perform([mutation], callback);
1887      }
1888    });
1889  }
1890
1891  function replaceForPosition(node, position) {
1892    var pendingAttribute = "".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));
1893    return new picked(function (resolve, reject) {
1894      if (node.getAttribute(pendingAttribute) !== null) {
1895        // This node is already being processed
1896        return resolve();
1897      }
1898
1899      var children = toArray(node.children);
1900      var alreadyProcessedPseudoElement = children.filter(function (c) {
1901        return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;
1902      })[0];
1903      var styles = WINDOW.getComputedStyle(node, position);
1904      var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);
1905      var fontWeight = styles.getPropertyValue('font-weight');
1906
1907      if (alreadyProcessedPseudoElement && !fontFamily) {
1908        // If we've already processed it but the current computed style does not result in a font-family,
1909        // that probably means that a class name that was previously present to make the icon has been
1910        // removed. So we now should delete the icon.
1911        node.removeChild(alreadyProcessedPseudoElement);
1912        return resolve();
1913      } else if (fontFamily) {
1914        var content = styles.getPropertyValue('content');
1915        var prefix = ~['Light', 'Regular', 'Solid', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];
1916        var iconName = byUnicode(prefix, toHex(content.length === 3 ? content.substr(1, 1) : content)); // Only convert the pseudo element in this :before/:after position into an icon if we haven't
1917        // already done so with the same prefix and iconName
1918
1919        if (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconName) {
1920          node.setAttribute(pendingAttribute, iconName);
1921
1922          if (alreadyProcessedPseudoElement) {
1923            // Delete the old one, since we're replacing it with a new one
1924            node.removeChild(alreadyProcessedPseudoElement);
1925          }
1926
1927          var meta = blankMeta();
1928          var extra = meta.extra;
1929          extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;
1930          findIcon(iconName, prefix).then(function (main) {
1931            var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {
1932              icons: {
1933                main: main,
1934                mask: emptyCanonicalIcon()
1935              },
1936              prefix: prefix,
1937              iconName: iconName
vendor: 6,802 bytes, lines 1937-1990
1937,
1938              extra: extra,
1939              watchable: true
1940            }));
1941            var element = DOCUMENT.createElement('svg');
1942
1943            if (position === ':before') {
1944              node.insertBefore(element, node.firstChild);
1945            } else {
1946              node.appendChild(element);
1947            }
1948
1949            element.outerHTML = abstract.map(function (a) {
1950              return toHtml(a);
1951            }).join('\n');
1952            node.removeAttribute(pendingAttribute);
1953            resolve();
1954          }).catch(reject);
1955        } else {
1956          resolve();
1957        }
1958      } else {
1959        resolve();
1960      }
1961    });
1962  }
1963
1964  function replace(node) {
1965    return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);
1966  }
1967
1968  function processable(node) {
1969    return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');
1970  }
1971
1972  function searchPseudoElements (root) {
1973    if (!IS_DOM) return;
1974    return new picked(function (resolve, reject) {
1975      var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);
1976      var end = perf.begin('searchPseudoElements');
1977      disableObservation();
1978      picked.all(operations).then(function () {
1979        end();
1980        enableObservation();
1981        resolve();
1982      }).catch(function () {
1983        end();
1984        enableObservation();
1985        reject();
1986      });
1987    });
1988  }
1989
1990  var baseStyles = "svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}
vendor: 12,094 bytes, lines 1990-2384
1990";
1991
1992  function css () {
1993    var dfp = DEFAULT_FAMILY_PREFIX;
1994    var drc = DEFAULT_REPLACEMENT_CLASS;
1995    var fp = config.familyPrefix;
1996    var rc = config.replacementClass;
1997    var s = baseStyles;
1998
1999    if (fp !== dfp || rc !== drc) {
2000      var dPatt = new RegExp("\\.".concat(dfp, "\\-"), 'g');
2001      var rPatt = new RegExp("\\.".concat(drc), 'g');
2002      s = s.replace(dPatt, ".".concat(fp, "-")).replace(rPatt, ".".concat(rc));
2003    }
2004
2005    return s;
2006  }
2007
2008  var Library =
2009  /*#__PURE__*/
2010  function () {
2011    function Library() {
2012      _classCallCheck(this, Library);
2013
2014      this.definitions = {};
2015    }
2016
2017    _createClass(Library, [{
2018      key: "add",
2019      value: function add() {
2020        var _this = this;
2021
2022        for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {
2023          definitions[_key] = arguments[_key];
2024        }
2025
2026        var additions = definitions.reduce(this._pullDefinitions, {});
2027        Object.keys(additions).forEach(function (key) {
2028          _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);
2029          defineIcons(key, additions[key]);
2030          build();
2031        });
2032      }
2033    }, {
2034      key: "reset",
2035      value: function reset() {
2036        this.definitions = {};
2037      }
2038    }, {
2039      key: "_pullDefinitions",
2040      value: function _pullDefinitions(additions, definition) {
2041        var normalized = definition.prefix && definition.iconName && definition.icon ? {
2042          0: definition
2043        } : definition;
2044        Object.keys(normalized).map(function (key) {
2045          var _normalized$key = normalized[key],
2046              prefix = _normalized$key.prefix,
2047              iconName = _normalized$key.iconName,
2048              icon = _normalized$key.icon;
2049          if (!additions[prefix]) additions[prefix] = {};
2050          additions[prefix][iconName] = icon;
2051        });
2052        return additions;
2053      }
2054    }]);
2055
2056    return Library;
2057  }();
2058
2059  function prepIcon(icon) {
2060    var width = icon[0];
2061    var height = icon[1];
2062    var vectorData = icon.slice(4);
2063    return {
2064      found: true,
2065      width: width,
2066      height: height,
2067      icon: {
2068        tag: 'path',
2069        attributes: {
2070          fill: 'currentColor',
2071          d: vectorData[0]
2072        }
2073      }
2074    };
2075  }
2076
2077  function ensureCss() {
2078    if (config.autoAddCss && !_cssInserted) {
2079      insertCss(css());
2080
2081      _cssInserted = true;
2082    }
2083  }
2084
2085  function apiObject(val, abstractCreator) {
2086    Object.defineProperty(val, 'abstract', {
2087      get: abstractCreator
2088    });
2089    Object.defineProperty(val, 'html', {
2090      get: function get() {
2091        return val.abstract.map(function (a) {
2092          return toHtml(a);
2093        });
2094      }
2095    });
2096    Object.defineProperty(val, 'node', {
2097      get: function get() {
2098        if (!IS_DOM) return;
2099        var container = DOCUMENT.createElement('div');
2100        container.innerHTML = val.html;
2101        return container.children;
2102      }
2103    });
2104    return val;
2105  }
2106
2107  function findIconDefinition(iconLookup) {
2108    var _iconLookup$prefix = iconLookup.prefix,
2109        prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
2110        iconName = iconLookup.iconName;
2111    if (!iconName) return;
2112    return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
2113  }
2114
2115  function resolveIcons(next) {
2116    return function (maybeIconDefinition) {
2117      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2118      var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});
2119      var mask = params.mask;
2120
2121      if (mask) {
2122        mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});
2123      }
2124
2125      return next(iconDefinition, _objectSpread({}, params, {
2126        mask: mask
2127      }));
2128    };
2129  }
2130
2131  var library = new Library();
2132  var noAuto = function noAuto() {
2133    config.autoReplaceSvg = false;
2134    config.observeMutations = false;
2135    disconnect();
2136  };
2137  var _cssInserted = false;
2138  var dom = {
2139    i2svg: function i2svg() {
2140      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2141
2142      if (IS_DOM) {
2143        ensureCss();
2144        var _params$node = params.node,
2145            node = _params$node === void 0 ? DOCUMENT : _params$node,
2146            _params$callback = params.callback,
2147            callback = _params$callback === void 0 ? function () {} : _params$callback;
2148
2149        if (config.searchPseudoElements) {
2150          searchPseudoElements(node);
2151        }
2152
2153        return onTree(node, callback);
2154      } else {
2155        return picked.reject('Operation requires a DOM of some kind.');
2156      }
2157    },
2158    css: css,
2159    insertCss: function insertCss$$1() {
2160      if (!_cssInserted) {
2161        insertCss(css());
2162
2163        _cssInserted = true;
2164      }
2165    },
2166    watch: function watch() {
2167      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2168      var autoReplaceSvgRoot = params.autoReplaceSvgRoot,
2169          observeMutationsRoot = params.observeMutationsRoot;
2170
2171      if (config.autoReplaceSvg === false) {
2172        config.autoReplaceSvg = true;
2173      }
2174
2175      config.observeMutations = true;
2176      domready(function () {
2177        autoReplace({
2178          autoReplaceSvgRoot: autoReplaceSvgRoot
2179        });
2180        observe({
2181          treeCallback: onTree,
2182          nodeCallback: onNode,
2183          pseudoElementsCallback: searchPseudoElements,
2184          observeMutationsRoot: observeMutationsRoot
2185        });
2186      });
2187    }
2188  };
2189  var parse = {
2190    transform: function transform(transformString) {
2191      return parseTransformString(transformString);
2192    }
2193  };
2194  var icon = resolveIcons(function (iconDefinition) {
2195    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2196    var _params$transform = params.transform,
2197        transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,
2198        _params$symbol = params.symbol,
2199        symbol = _params$symbol === void 0 ? false : _params$symbol,
2200        _params$mask = params.mask,
2201        mask = _params$mask === void 0 ? null : _params$mask,
2202        _params$title = params.title,
2203        title = _params$title === void 0 ? null : _params$title,
2204        _params$classes = params.classes,
2205        classes = _params$classes === void 0 ? [] : _params$classes,
2206        _params$attributes = params.attributes,
2207        attributes = _params$attributes === void 0 ? {} : _params$attributes,
2208        _params$styles = params.styles,
2209        styles = _params$styles === void 0 ? {} : _params$styles;
2210    if (!iconDefinition) return;
2211    var prefix = iconDefinition.prefix,
2212        iconName = iconDefinition.iconName,
2213        icon = iconDefinition.icon;
2214    return apiObject(_objectSpread({
2215      type: 'icon'
2216    }, iconDefinition), function () {
2217      ensureCss();
2218
2219      if (config.autoA11y) {
2220        if (title) {
2221          attributes['aria-labelledby'] = "".concat(config.replacementClass, "-title-").concat(nextUniqueId());
2222        } else {
2223          attributes['aria-hidden'] = 'true';
2224          attributes['focusable'] = 'false';
2225        }
2226      }
2227
2228      return makeInlineSvgAbstract({
2229        icons: {
2230          main: prepIcon(icon),
2231          mask: mask ? prepIcon(mask.icon) : {
2232            found: false,
2233            width: null,
2234            height: null,
2235            icon: {}
2236          }
2237        },
2238        prefix: prefix,
2239        iconName: iconName,
2240        transform: _objectSpread({}, meaninglessTransform, transform),
2241        symbol: symbol,
2242        title: title,
2243        extra: {
2244          attributes: attributes,
2245          styles: styles,
2246          classes: classes
2247        }
2248      });
2249    });
2250  });
2251  var text = function text(content) {
2252    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2253    var _params$transform2 = params.transform,
2254        transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,
2255        _params$title2 = params.title,
2256        title = _params$title2 === void 0 ? null : _params$title2,
2257        _params$classes2 = params.classes,
2258        classes = _params$classes2 === void 0 ? [] : _params$classes2,
2259        _params$attributes2 = params.attributes,
2260        attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,
2261        _params$styles2 = params.styles,
2262        styles = _params$styles2 === void 0 ? {} : _params$styles2;
2263    return apiObject({
2264      type: 'text',
2265      content: content
2266    }, function () {
2267      ensureCss();
2268      return makeLayersTextAbstract({
2269        content: content,
2270        transform: _objectSpread({}, meaninglessTransform, transform),
2271        title: title,
2272        extra: {
2273          attributes: attributes,
2274          styles: styles,
2275          classes: ["".concat(config.familyPrefix, "-layers-text")].concat(_toConsumableArray(classes))
2276        }
2277      });
2278    });
2279  };
2280  var counter = function counter(content) {
2281    var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2282    var _params$title3 = params.title,
2283        title = _params$title3 === void 0 ? null : _params$title3,
2284        _params$classes3 = params.classes,
2285        classes = _params$classes3 === void 0 ? [] : _params$classes3,
2286        _params$attributes3 = params.attributes,
2287        attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,
2288        _params$styles3 = params.styles,
2289        styles = _params$styles3 === void 0 ? {} : _params$styles3;
2290    return apiObject({
2291      type: 'counter',
2292      content: content
2293    }, function () {
2294      ensureCss();
2295      return makeLayersCounterAbstract({
2296        content: content.toString(),
2297        title: title,
2298        extra: {
2299          attributes: attributes,
2300          styles: styles,
2301          classes: ["".concat(config.familyPrefix, "-layers-counter")].concat(_toConsumableArray(classes))
2302        }
2303      });
2304    });
2305  };
2306  var layer = function layer(assembler) {
2307    return apiObject({
2308      type: 'layer'
2309    }, function () {
2310      ensureCss();
2311      var children = [];
2312      assembler(function (args) {
2313        Array.isArray(args) ? args.map(function (a) {
2314          children = children.concat(a.abstract);
2315        }) : children = children.concat(args.abstract);
2316      });
2317      return [{
2318        tag: 'span',
2319        attributes: {
2320          class: "".concat(config.familyPrefix, "-layers")
2321        },
2322        children: children
2323      }];
2324    });
2325  };
2326  var api = {
2327    noAuto: noAuto,
2328    config: config,
2329    dom: dom,
2330    library: library,
2331    parse: parse,
2332    findIconDefinition: findIconDefinition,
2333    icon: icon,
2334    text: text,
2335    counter: counter,
2336    layer: layer,
2337    toHtml: toHtml
2338  };
2339
2340  var autoReplace = function autoReplace() {
2341    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2342    var _params$autoReplaceSv = params.autoReplaceSvgRoot,
2343        autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;
2344    if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({
2345      node: autoReplaceSvgRoot
2346    });
2347  };
2348
2349  function bootstrap() {
2350    if (IS_BROWSER) {
2351      if (!WINDOW.FontAwesome) {
2352        WINDOW.FontAwesome = api;
2353      }
2354
2355      domready(function () {
2356        autoReplace();
2357        observe({
2358          treeCallback: onTree,
2359          nodeCallback: onNode,
2360          pseudoElementsCallback: searchPseudoElements
2361        });
2362      });
2363    }
2364
2365    namespace.hooks = _objectSpread({}, namespace.hooks, {
2366      addPack: function addPack(prefix, icons) {
2367        namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, icons);
2368        build();
2369        autoReplace();
2370      },
2371      addShims: function addShims(shims) {
2372        var _namespace$shims;
2373
2374        (_namespace$shims = namespace.shims).push.apply(_namespace$shims, _toConsumableArray(shims));
2375
2376        build();
2377        autoReplace();
2378      }
2379    });
2380  }
2381
2382  bunker(bootstrap);
2383
2384}());

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.