PageSourceSearch

https://bjelasnica.ba/wp-content/themes/bjelas20/public/js/main.js

js bjelasnica.ba collected 2026-10-02 18:00:55 UTC 366,441 bytes, 11,727 lines download raw bytes

1(function () {
2'use strict';
3
4var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
5
6
7
8
9
10function createCommonjsModule(fn, module) {
11	return module = { exports: {} }, fn(module, module.exports), module.exports;
12}
13
14var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
15  return typeof obj;
16} : function (obj) {
17  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
18};
19
20
21
22
23
24var asyncGenerator = function () {
25  function AwaitValue(value) {
26    this.value = value;
27  }
28
29  function AsyncGenerator(gen) {
30    var front, back;
31
32    function send(key, arg) {
33      return new Promise(function (resolve, reject) {
34        var request = {
35          key: key,
36          arg: arg,
37          resolve: resolve,
38          reject: reject,
39          next: null
40        };
41
42        if (back) {
43          back = back.next = request;
44        } else {
45          front = back = request;
46          resume(key, arg);
47        }
48      });
49    }
50
51    function resume(key, arg) {
52      try {
53        var result = gen[key](arg);
54        var value = result.value;
55
56        if (value instanceof AwaitValue) {
57          Promise.resolve(value.value).then(function (arg) {
58            resume("next", arg);
59          }, function (arg) {
60            resume("throw", arg);
61          });
62        } else {
63          settle(result.done ? "return" : "normal", result.value);
64        }
65      } catch (err) {
66        settle("throw", err);
67      }
68    }
69
70    function settle(type, value) {
71      switch (type) {
72        case "return":
73          front.resolve({
74            value: value,
75            done: true
76          });
77          break;
78
79        case "throw":
80          front.reject(value);
81          break;
82
83        default:
84          front.resolve({
85            value: value,
86            done: false
87          });
88          break;
89      }
90
91      front = front.next;
92
93      if (front) {
94        resume(front.key, front.arg);
95      } else {
96        back = null;
97      }
98    }
99
100    this._invoke = send;
101
102    if (typeof gen.return !== "function") {
103      this.return = undefined;
104    }
105  }
106
107  if (typeof Symbol === "function" && Symbol.asyncIterator) {
108    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
109      return this;
110    };
111  }
112
113  AsyncGenerator.prototype.next = function (arg) {
114    return this._invoke("next", arg);
115  };
116
117  AsyncGenerator.prototype.throw = function (arg) {
118    return this._invoke("throw", arg);
119  };
120
121  AsyncGenerator.prototype.return = function (arg) {
122    return this._invoke("return", arg);
123  };
124
125  return {
126    wrap: function (fn) {
127      return function () {
128        return new AsyncGenerator(fn.apply(this, arguments));
129      };
130    },
131    await: function (value) {
132      return new AwaitValue(value);
133    }
134  };
135}();
136
137var uikit = createCommonjsModule(function (module, exports) {
138  /*! UIkit 3.5.7 | https://www.getuikit.com | (c) 2014 - 2020 YOOtheme | MIT License */
139
140  (function (global, factory) {
141    module.exports = factory();
142  })(commonjsGlobal, function () {
143    'use strict';
144
145    var objPrototype = Object.prototype;
146    var hasOwnProperty = objPrototype.hasOwnProperty;
147
148    function hasOwn(obj, key) {
149      return hasOwnProperty.call(obj, key);
150    }
151
152    var hyphenateCache = {};
153    var hyphenateRe = /([a-z\d])([A-Z])/g;
154
155    function hyphenate(str) {
156
157      if (!(str in hyphenateCache)) {
158        hyphenateCache[str] = str.replace(hyphenateRe, '$1-$2').toLowerCase();
159      }
160
161      return hyphenateCache[str];
162    }
163
164    var camelizeRe = /-(\w)/g;
165
166    function camelize(str) {
167      return str.replace(camelizeRe, toUpper);
168    }
169
170    function toUpper(_, c) {
171      return c ? c.toUpperCase() : '';
172    }
173
174    function ucfirst(str) {
175      return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';
176    }
177
178    var strPrototype = String.prototype;
179    var startsWithFn = strPrototype.startsWith || function (search) {
180      return this.lastIndexOf(search, 0) === 0;
181    };
182
183    function startsWith(str, search) {
184      return startsWithFn.call(str, search);
185    }
186
187    var endsWithFn = strPrototype.endsWith || function (search) {
188      return this.substr(-search.length) === search;
189    };
190
191    function endsWith(str, search) {
192      return endsWithFn.call(str, search);
193    }
194
195    var arrPrototype = Array.prototype;
196
197    var includesFn = function includesFn(search, i) {
198      return !!~this.indexOf(search, i);
199    };
200    var includesStr = strPrototype.includes || includesFn;
201    var includesArray = arrPrototype.includes || includesFn;
202
203    function includes(obj, search) {
204      return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);
205    }
206
207    var findIndexFn = arrPrototype.findIndex || function (predicate) {
208      var arguments$1 = arguments;
209
210      for (var i = 0; i < this.length; i++) {
211        if (predicate.call(arguments$1[1], this[i], i, this)) {
212          return i;
213        }
214      }
215      return -1;
216    };
217
218    function findIndex(array, predicate) {
219      return findIndexFn.call(array, predicate);
220    }
221
222    var isArray = Array.isArray;
223
224    function isFunction(obj) {
225      return typeof obj === 'function';
226    }
227
228    function isObject(obj) {
229      return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';
230    }
231
232    var toString = objPrototype.toString;
233    function isPlainObject(obj) {
234      return toString.call(obj) === '[object Object]';
235    }
236
237    function isWindow(obj) {
238      return isObject(obj) && obj === obj.window;
239    }
240
241    function isDocument(obj) {
242      return isObject(obj) && obj.nodeType === 9;
243    }
244
245    function isJQuery(obj) {
246      return isObject(obj) && !!obj.jquery;
247    }
248
249    function isNode(obj) {
250      return isObject(obj) && obj.nodeType >= 1;
251    }
252
253    function isElement(obj) {
254      return isObject(obj) && obj.nodeType === 1;
255    }
256
257    function isNodeCollection(obj) {
258      return toString.call(obj).match(/^\[object (NodeList|HTMLCollection)\]$/);
259    }
260
261    function isBoolean(value) {
262      return typeof value === 'boolean';
263    }
264
265    function isString(value) {
266      return typeof value === 'string';
267    }
268
269    function isNumber(value) {
270      return typeof value === 'number';
271    }
272
273    function isNumeric(value) {
274      return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));
275    }
276
277    function isEmpty(obj) {
278      return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);
279    }
280
281    function isUndefined(value) {
282      return value === void 0;
283    }
284
285    function toBoolean(value) {
286      return isBoolean(value) ? value : value === 'true' || value === '1' || value === '' ? true : value === 'false' || value === '0' ? false : value;
287    }
288
289    function toNumber(value) {
290      var number = Number(value);
291      return !isNaN(number) ? number : false;
292    }
293
294    function toFloat(value) {
295      return parseFloat(value) || 0;
296    }
297
298    function toNode(element) {
299      return isNode(element) ? element : isNodeCollection(element) || isJQuery(element) ? element[0] : isArray(element) ? toNode(element[0]) : null;
300    }
301
302    function toNodes(element) {
303      return isNode(element) ? [element] : isNodeCollection(element) ? arrPrototype.slice.call(element) : isArray(element) ? element.map(toNode).filter(Boolean) : isJQuery(element) ? element.toArray() : [];
304    }
305
306    function toWindow(element) {
307      if (isWindow(element)) {
308        return element;
309      }
310
311      element = toNode(element);
312
313      return element ? (isDocument(element) ? element : element.ownerDocument).defaultView : window;
314    }
315
316    function toList(value) {
317      return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\))/).map(function (value) {
318        return isNumeric(value) ? toNumber(value) : toBoolean(value.trim());
319      }) : [value];
320    }
321
322    function toMs(time) {
323      return !time ? 0 : endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000;
324    }
325
326    function isEqual(value, other) {
327      return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, function (val, key) {
328        return val === other[key];
329      });
330    }
331
332    function swap(value, a, b) {
333      return value.replace(new RegExp(a + "|" + b, 'g'), function (match) {
334        return match === a ? b : a;
335      });
336    }
337
338    var assign = Object.assign || function (target) {
339      var args = [],
340          len = arguments.length - 1;
341      while (len-- > 0) {
342        args[len] = arguments[len + 1];
343      }target = Object(target);
344      for (var i = 0; i < args.length; i++) {
345        var source = args[i];
346        if (source !== null) {
347          for (var key in source) {
348            if (hasOwn(source, key)) {
349              target[key] = source[key];
350            }
351          }
352        }
353      }
354      return target;
355    };
356
357    function last(array) {
358      return array[array.length - 1];
359    }
360
361    function each(obj, cb) {
362      for (var key in obj) {
363        if (false === cb(obj[key], key)) {
364          return false;
365        }
366      }
367      return true;
368    }
369
370    function sortBy(array, prop) {
371      return array.sort(function (ref, ref$1) {
372        var propA = ref[prop];if (propA === void 0) propA = 0;
373        var propB = ref$1[prop];if (propB === void 0) propB = 0;
374
375        return propA > propB ? 1 : propB > propA ? -1 : 0;
376      });
377    }
378
379    function uniqueBy(array, prop) {
380      var seen = new Set();
381      return array.filter(function (ref) {
382        var check = ref[prop];
383
384        return seen.has(check) ? false : seen.add(check) || true;
385      } // IE 11 does not return the Set object
386      );
387    }
388
389    function clamp(number, min, max) {
390      if (min === void 0) min = 0;
391      if (max === void 0) max = 1;
392
393      return Math.min(Math.max(toNumber(number) || 0, min), max);
394    }
395
396    function noop() {}
397
398    function intersectRect(r1, r2) {
399      return r1.left < r2.right && r1.right > r2.left && r1.top < r2.bottom && r1.bottom > r2.top;
400    }
401
402    function pointInRect(point, rect) {
403      return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;
404    }
405
406    var Dimensions = {
407
408      ratio: function ratio(dimensions, prop, value) {
409        var obj;
410
411        var aProp = prop === 'width' ? 'height' : 'width';
412
413        return obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj;
414      },
415
416      contain: function contain(dimensions, maxDimensions) {
417        var this$1 = this;
418
419        dimensions = assign({}, dimensions);
420
421        each(dimensions, function (_, prop) {
422          return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;
423        });
424
425        return dimensions;
426      },
427
428      cover: function cover(dimensions, maxDimensions) {
429        var this$1 = this;
430
431        dimensions = this.contain(dimensions, maxDimensions);
432
433        each(dimensions, function (_, prop) {
434          return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;
435        });
436
437        return dimensions;
438      }
439
440    };
441
442    function attr(element, name, value) {
443
444      if (isObject(name)) {
445        for (var key in name) {
446          attr(element, key, name[key]);
447        }
448        return;
449      }
450
451      if (isUndefined(value)) {
452        element = toNode(element);
453        return element && element.getAttribute(name);
454      } else {
455        toNodes(element).forEach(function (element) {
456
457          if (isFunction(value)) {
458            value = value.call(element, attr(element, name));
459          }
460
461          if (value === null) {
462            removeAttr(element, name);
463          } else {
464            element.setAttribute(name, value);
465          }
466        });
467      }
468    }
469
470    function hasAttr(element, name) {
471      return toNodes(element).some(function (element) {
472        return element.hasAttribute(name);
473      });
474    }
475
476    function removeAttr(element, name) {
477      element = toNodes(element);
478      name.split(' ').forEach(function (name) {
479        return element.forEach(function (element) {
480          return element.hasAttribute(name) && element.removeAttribute(name);
481        });
482      });
483    }
484
485    function data(element, attribute) {
486      for (var i = 0, attrs = [attribute, "data-" + attribute]; i < attrs.length; i++) {
487        if (hasAttr(element, attrs[i])) {
488          return attr(element, attrs[i]);
489        }
490      }
491    }
492
493    /* global DocumentTouch */
494
495    var inBrowser = typeof window !== 'undefined';
496    var isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent);
497    var isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';
498
499    var hasTouchEvents = inBrowser && 'ontouchstart' in window;
500    var hasPointerEvents = inBrowser && window.PointerEvent;
501    var hasTouch = inBrowser && (hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints); // IE >=11
502
503    var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';
504    var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';
505    var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';
506    var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';
507    var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';
508    var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';
509
510    function query(selector, context) {
511      return toNode(selector) || find(selector, getContext(selector, context));
512    }
513
514    function queryAll(selector, context) {
515      var nodes = toNodes(selector);
516      return nodes.length && nodes || findAll(selector, getContext(selector, context));
517    }
518
519    function getContext(selector, context) {
520      if (context === void 0) context = document;
521
522      return isContextSelector(selector) || isDocument(context) ? context : context.ownerDocument;
523    }
524
525    function find(selector, context) {
526      return toNode(_query(selector, context, 'querySelector'));
527    }
528
529    function findAll(selector, context) {
530      return toNodes(_query(selector, context, 'querySelectorAll'));
531    }
532
533    function _query(selector, context, queryFn) {
534      if (context === void 0) context = document;
535
536      if (!selector || !isString(selector)) {
537        return null;
538      }
539
540      selector = selector.replace(contextSanitizeRe, '$1 *');
541
542      var removes;
543
544      if (isContextSelector(selector)) {
545
546        removes = [];
547
548        selector = splitSelector(selector).map(function (selector, i) {
549
550          var ctx = context;
551
552          if (selector[0] === '!') {
553
554            var selectors = selector.substr(1).trim().split(' ');
555            ctx = closest(parent(context), selectors[0]);
556            selector = selectors.slice(1).join(' ').trim();
557          }
558
559          if (selector[0] === '-') {
560
561            var selectors$1 = selector.substr(1).trim().split(' ');
562            var prev = (ctx || context).previousElementSibling;
563            ctx = matches(prev, selector.substr(1)) ? prev : null;
564            selector = selectors$1.slice(1).join(' ');
565          }
566
567          if (!ctx) {
568            return null;
569          }
570
571          if (!ctx.id) {
572            ctx.id = "uk-" + Date.now() + i;
573            removes.push(function () {
574              return removeAttr(ctx, 'id');
575            });
576          }
577
578          return "#" + escape(ctx.id) + " " + selector;
579        }
579).filter(Boolean).join(',');
580
581        context = document;
582      }
583
584      try {
585
586        return context[queryFn](selector);
587      } catch (e) {
588
589        return null;
590      } finally {
591
592        removes && removes.forEach(function (remove) {
593          return remove();
594        });
595      }
596    }
597
598    var contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/;
599    var contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
600
601    function isContextSelector(selector) {
602      return isString(selector) && selector.match(contextSelectorRe);
603    }
604
605    var selectorRe = /.*?[^\\](?:,|$)/g;
606
607    function splitSelector(selector) {
608      return selector.match(selectorRe).map(function (selector) {
609        return selector.replace(/,$/, '').trim();
610      });
611    }
612
613    var elProto = inBrowser ? Element.prototype : {};
614    var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop;
615
616    function matches(element, selector) {
617      return toNodes(element).some(function (element) {
618        return matchesFn.call(element, selector);
619      });
620    }
621
622    var closestFn = elProto.closest || function (selector) {
623      var ancestor = this;
624
625      do {
626
627        if (matches(ancestor, selector)) {
628          return ancestor;
629        }
630      } while (ancestor = parent(ancestor));
631    };
632
633    function closest(element, selector) {
634
635      if (startsWith(selector, '>')) {
636        selector = selector.slice(1);
637      }
638
639      return isElement(element) ? closestFn.call(element, selector) : toNodes(element).map(function (element) {
640        return closest(element, selector);
641      }).filter(Boolean);
642    }
643
644    function parent(element) {
645      element = toNode(element);
646      return element && isElement(element.parentNode) && element.parentNode;
647    }
648
649    var escapeFn = inBrowser && window.CSS && CSS.escape || function (css) {
650      return css.replace(/([^\x7f-\uFFFF\w-])/g, function (match) {
651        return "\\" + match;
652      });
653    };
654    function escape(css) {
655      return isString(css) ? escapeFn.call(null, css) : '';
656    }
657
658    var voidElements = {
659      area: true,
660      base: true,
661      br: true,
662      col: true,
663      embed: true,
664      hr: true,
665      img: true,
666      input: true,
667      keygen: true,
668      link: true,
669      menuitem: true,
670      meta: true,
671      param: true,
672      source: true,
673      track: true,
674      wbr: true
675    };
676    function isVoidElement(element) {
677      return toNodes(element).some(function (element) {
678        return voidElements[element.tagName.toLowerCase()];
679      });
680    }
681
682    function isVisible(element) {
683      return toNodes(element).some(function (element) {
684        return element.offsetWidth || element.offsetHeight || element.getClientRects().length;
685      });
686    }
687
688    var selInput = 'input,select,textarea,button';
689    function isInput(element) {
690      return toNodes(element).some(function (element) {
691        return matches(element, selInput);
692      });
693    }
694
695    function filter(element, selector) {
696      return toNodes(element).filter(function (element) {
697        return matches(element, selector);
698      });
699    }
700
701    function within(element, selector) {
702      return !isString(selector) ? element === selector || (isDocument(selector) ? selector.documentElement : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains
703      : matches(element, selector) || !!closest(element, selector);
704    }
705
706    function parents(element, selector) {
707      var elements = [];
708
709      while (element = parent(element)) {
710        if (!selector || matches(element, selector)) {
711          elements.push(element);
712        }
713      }
714
715      return elements;
716    }
717
718    function _children(element, selector) {
719      element = toNode(element);
720      var children = element ? toNodes(element.children) : [];
721      return selector ? filter(children, selector) : children;
722    }
723
724    function on() {
725      var args = [],
726          len = arguments.length;
727      while (len--) {
728        args[len] = arguments[len];
729      }var ref = getArgs(args);
730      var targets = ref[0];
731      var type = ref[1];
732      var selector = ref[2];
733      var listener = ref[3];
734      var useCapture = ref[4];
735
736      targets = toEventTargets(targets);
737
738      if (listener.length > 1) {
739        listener = detail(listener);
740      }
741
742      if (useCapture && useCapture.self) {
743        listener = selfFilter(listener);
744      }
745
746      if (selector) {
747        listener = delegate(targets, selector, listener);
748      }
749
750      useCapture = useCaptureFilter(useCapture);
751
752      type.split(' ').forEach(function (type) {
753        return targets.forEach(function (target) {
754          return target.addEventListener(type, listener, useCapture);
755        });
756      });
757      return function () {
758        return off(targets, type, listener, useCapture);
759      };
760    }
761
762    function off(targets, type, listener, useCapture) {
763      if (useCapture === void 0) useCapture = false;
764
765      useCapture = useCaptureFilter(useCapture);
766      targets = toEventTargets(targets);
767      type.split(' ').forEach(function (type) {
768        return targets.forEach(function (target) {
769          return target.removeEventListener(type, listener, useCapture);
770        });
771      });
772    }
773
774    function once() {
775      var args = [],
776          len = arguments.length;
777      while (len--) {
778        args[len] = arguments[len];
779      }var ref = getArgs(args);
780      var element = ref[0];
781      var type = ref[1];
782      var selector = ref[2];
783      var listener = ref[3];
784      var useCapture = ref[4];
785      var condition = ref[5];
786      var off = on(element, type, selector, function (e) {
787        var result = !condition || condition(e);
788        if (result) {
789          off();
790          listener(e, result);
791        }
792      }, useCapture);
793
794      return off;
795    }
796
797    function trigger(targets, event, detail) {
798      return toEventTargets(targets).reduce(function (notCanceled, target) {
799        return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail));
800      }, true);
801    }
802
803    function createEvent(e, bubbles, cancelable, detail) {
804      if (bubbles === void 0) bubbles = true;
805      if (cancelable === void 0) cancelable = false;
806
807      if (isString(e)) {
808        var event = document.createEvent('CustomEvent'); // IE 11
809        event.initCustomEvent(e, bubbles, cancelable, detail);
810        e = event;
811      }
812
813      return e;
814    }
815
816    function getArgs(args) {
817      if (isFunction(args[2])) {
818        args.splice(2, 0, false);
819      }
820      return args;
821    }
822
823    function delegate(delegates, selector, listener) {
824      var this$1 = this;
825
826      return function (e) {
827
828        delegates.forEach(function (delegate) {
829
830          var current = selector[0] === '>' ? findAll(selector, delegate).reverse().filter(function (element) {
831            return within(e.target, element);
832          })[0] : closest(e.target, selector);
833
834          if (current) {
835            e.delegate = delegate;
836            e.current = current;
837
838            listener.call(this$1, e);
839          }
840        });
841      };
842    }
843
844    function detail(listener) {
845      return function (e) {
846        return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e);
847      };
848    }
849
850    function selfFilter(listener) {
851      return function (e) {
852        if (e.target === e.currentTarget || e.target === e.current) {
853          return listener.call(null, e);
854        }
855      };
856    }
857
858    function useCaptureFilter(options) {
859      return options && isIE && !isBoolean(options) ? !!options.capture : options;
860    }
861
862    function isEventTarget(target) {
863      return target && 'addEventListener' in target;
864    }
865
866    function toEventTarget(target) {
867      return isEventTarget(target) ? target : toNode(target);
868    }
869
870    function toEventTargets(target) {
871      return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target);
872    }
873
874    function isTouch(e) {
875      return e.pointerType === 'touch' || !!e.touches;
876    }
877
878    function getEventPos(e) {
879      var touches = e.touches;
880      var changedTouches = e.changedTouches;
881      var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;
882      var x = ref.clientX;
883      var y = ref.clientY;
884
885      return { x: x, y: y };
886    }
887
888    /* global setImmediate */
889
890    var Promise = inBrowser && window.Promise || PromiseFn;
891
892    var Deferred = function Deferred() {
893      var this$1 = this;
894
895      this.promise = new Promise(function (resolve, reject) {
896        this$1.reject = reject;
897        this$1.resolve = resolve;
898      });
899    };
900
901    /**
902     * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)
903     */
904
905    var RESOLVED = 0;
906    var REJECTED = 1;
907    var PENDING = 2;
908
909    var async = inBrowser && window.setImmediate || setTimeout;
910
911    function PromiseFn(executor) {
912
913      this.state = PENDING;
914      this.value = undefined;
915      this.deferred = [];
916
917      var promise = this;
918
919      try {
920        executor(function (x) {
921          promise.resolve(x);
922        }, function (r) {
923          promise.reject(r);
924        });
925      } catch (e) {
926        promise.reject(e);
927      }
928    }
929
930    PromiseFn.reject = function (r) {
931      return new PromiseFn(function (resolve, reject) {
932        reject(r);
933      });
934    };
935
936    PromiseFn.resolve = function (x) {
937      return new PromiseFn(function (resolve, reject) {
938        resolve(x);
939      });
940    };
941
942    PromiseFn.all = function all(iterable) {
943      return new PromiseFn(function (resolve, reject) {
944        var result = [];
945        var count = 0;
946
947        if (iterable.length === 0) {
948          resolve(result);
949        }
950
951        function resolver(i) {
952          return function (x) {
953            result[i] = x;
954            count += 1;
955
956            if (count === iterable.length) {
957              resolve(result);
958            }
959          };
960        }
961
962        for (var i = 0; i < iterable.length; i += 1) {
963          PromiseFn.resolve(iterable[i]).then(resolver(i), reject);
964        }
965      });
966    };
967
968    PromiseFn.race = function race(iterable) {
969      return new PromiseFn(function (resolve, reject) {
970        for (var i = 0; i < iterable.length; i += 1) {
971          PromiseFn.resolve(iterable[i]).then(resolve, reject);
972        }
973      });
974    };
975
976    var p = PromiseFn.prototype;
977
978    p.resolve = function resolve(x) {
979      var promise = this;
980
981      if (promise.state === PENDING) {
982        if (x === promise) {
983          throw new TypeError('Promise settled with itself.');
984        }
985
986        var called = false;
987
988        try {
989          var then = x && x.then;
990
991          if (x !== null && isObject(x) && isFunction(then)) {
992            then.call(x, function (x) {
993              if (!called) {
994                promise.resolve(x);
995              }
996              called = true;
997            }, function (r) {
998              if (!called) {
999                promise.reject(r);
1000              }
1001              called = true;
1002            });
1003            return;
1004          }
1005        } catch (e) {
1006          if (!called) {
1007            promise.reject(e);
1008          }
1009          return;
1010        }
1011
1012        promise.state = RESOLVED;
1013        promise.value = x;
1014        promise.notify();
1015      }
1016    };
1017
1018    p.reject = function reject(reason) {
1019      var promise = this;
1020
1021      if (promise.state === PENDING) {
1022        if (reason === promise) {
1023          throw new TypeError('Promise settled with itself.');
1024        }
1025
1026        promise.state = REJECTED;
1027        promise.value = reason;
1028        promise.notify();
1029      }
1030    };
1031
1032    p.notify = function notify() {
1033      var this$1 = this;
1034
1035      async(function () {
1036        if (this$1.state !== PENDING) {
1037          while (this$1.deferred.length) {
1038            var ref = this$1.deferred.shift();
1039            var onResolved = ref[0];
1040            var onRejected = ref[1];
1041            var resolve = ref[2];
1042            var reject = ref[3];
1043
1044            try {
1045              if (this$1.state === RESOLVED) {
1046                if (isFunction(onResolved)) {
1047                  resolve(onResolved.call(undefined, this$1.value));
1048                } else {
1049                  resolve(this$1.value);
1050                }
1051              } else if (this$1.state === REJECTED) {
1052                if (isFunction(onRejected)) {
1053                  resolve(onRejected.call(undefined, this$1.value));
1054                } else {
1055                  reject(this$1.value);
1056                }
1057              }
1058            } catch (e) {
1059              reject(e);
1060            }
1061          }
1062        }
1063      });
1064    };
1065
1066    p.then = function then(onResolved, onRejected) {
1067      var this$1 = this;
1068
1069      return new PromiseFn(function (resolve, reject) {
1070        this$1.deferred.push([onResolved, onRejected, resolve, reject]);
1071        this$1.notify();
1072      });
1073    };
1074
1075    p.catch = function (onRejected) {
1076      return this.then(undefined, onRejected);
1077    };
1078
1079    function ajax(url, options) {
1080      return new Promise(function (resolve, reject) {
1081
1082        var env = assign({
1083          data: null,
1084          method: 'GET',
1085          headers: {},
1086          xhr: new XMLHttpRequest(),
1087          beforeSend: noop,
1088          responseType: ''
1089        }, options);
1090
1091        env.beforeSend(env);
1092
1093        var xhr = env.xhr;
1094
1095        for (var prop in env) {
1096          if (prop in xhr) {
1097            try {
1098
1099              xhr[prop] = env[prop];
1100            } catch (e) {}
1101          }
1102        }
1103
1104        xhr.open(env.method.toUpperCase(), url);
1105
1106        for (var header in env.headers) {
1107          xhr.setRequestHeader(header, env.headers[header]);
1108        }
1109
1110        on(xhr, 'load', function () {
1111
1112          if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
1113
1114            // IE 11 does not support responseType 'json'
1115            if (env.responseType === 'json' && isString(xhr.response)) {
1116              xhr = assign(copyXhr(xhr), { response: JSON.parse(xhr.response) });
1117            }
1118
1119            resolve(xhr);
1120          } else {
1121            reject(assign(Error(xhr.statusText), {
1122              xhr: xhr,
1123              status: xhr.status
1124            }));
1125          }
1126        });
1127
1128        on(xhr, 'error', function () {
1129          return reject(assign(Error('Network Error'), { xhr: xhr }));
1130        });
1131        on(xhr, 'timeout', function () {
1132          return reject(assign(Error('Network Timeout'), { xhr: xhr }));
1133        });
1134
1135        xhr.send(env.data);
1136      });
1137    }
1138
1139    function getImage(src, srcset, sizes) {
1140
1141      return new Promise(function (resolve, reject) {
1142        var img = new Image();
1143
1144        img.onerror = function (e) {
1145          return reject(e);
1146        };
1147        img.onload = function () {
1148          return resolve(img);
1149        };
1150
1151        sizes && (img.sizes = sizes);
1152        srcset && (img.srcset = srcset);
1153        img.src = src;
1154      });
1155    }
1156
1157    function copyXhr(source) {
1158      var target = {};
1159      for (var key in source) {
1160        target[key] = source[key];
1161      }
1162      return target;
1163    }
1164
1165    function ready(fn) {
1166
1167      if (document.readyState !== 'loading') {
1168        fn();
1169        return;
1170      }
1171
1172      var unbind = on(document, 'DOMContentLoaded', function () {
1173        unbind();
1174        fn();
1175      });
1176    }
1177
1178    function index(element, ref) {
1179      return ref ? toNodes(element).indexOf(toNode(ref)) : _children(parent(element)).indexOf(element);
1180    }
1181
1182    function _getIndex(i, elements, current, finite) {
1183      if (current === void 0) current = 0;
1184      if (finite === void 0) finite = false;
1185
1186      elements = toNodes(elements);
1187
1188      var length = elements.length;
1189
1190      i = isNumeric(i) ? toNumber(i) : i === 'next' ? current + 1 : i === 'previous' ? current - 1 : index(elements, i);
1191
1192      if (finite) {
1193        return clamp(i, 0, length - 1);
1194      }
1195
1196      i %= length;
1197
1198      return i < 0 ? i + length : i;
1199    }
1200
1201    function empty(element) {
1202      element = $(element);
1203      element.innerHTML = '';
1204      return element;
1205    }
1206
1207    function html(parent, html) {
1208      parent = $(parent);
1209      return isUndefined(html) ? parent.innerHTML : append(parent.hasChildNodes() ? empty(parent) : parent, html);
1210    }
1211
1212    function prepend(parent, element) {
1213
1214      parent = $(parent);
1215
1216      if (!parent.hasChildNodes()) {
1217        return append(parent, element);
1218      } else {
1219        return insertNodes(element, function (element) {
1220          return parent.insertBefore(element, parent.firstChild);
1221        });
1222      }
1223    }
1224
1225    function append(parent, element) {
1226      parent = $(parent);
1227      return insertNodes(element, function (element) {
1228        return parent.appendChild(element);
1229      });
1230    }
1231
1232    function before(ref, element) {
1233      ref = $(ref);
1234      return insertNodes(element, function (element) {
1235        return ref.parentNode.insertBefore(element, ref);
1236      });
1237    }
1238
1239    function after(ref, element) {
1240      ref = $(ref);
1241      return insertNodes(element, function (element) {
1242        return ref.nextSibling ? before(ref.nextSibling, element) : append(ref.parentNode, element);
1243      });
1244    }
1245
1246    function insertNodes(element, fn) {
1247      element = isString(element) ? fragment(element) : element;
1248      return element ? 'length' in element ? toNodes(element).map(fn) : fn(element) : null;
1249    }
1250
1251    function _remove(element) {
1252      toNodes(element).map(function (element) {
1253        return element.parentNode && element.parentNode.removeChild(element);
1254      });
1255    }
1256
1257    function wrapAll(element, structure) {
1258
1259      structure = toNode(before(element, structure));
1260
1261      while (structure.firstChild) {
1262        structure = structure.firstChild;
1263      }
1264
1265      append(structure, element);
1266
1267      return structure;
1268    }
1269
1270    function wrapInner(element, structure) {
1271      return toNodes(toNodes(element).map(function (element) {
1272        return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure);
1273      }));
1274    }
1275
1276    function unwrap(element) {
1277      toNodes(element).map(parent).filter(function (value, index, self) {
1278        return self.indexOf(value) === index;
1279      }
1279).forEach(function (parent) {
1280        before(parent, parent.childNodes);
1281        _remove(parent);
1282      });
1283    }
1284
1285    var fragmentRe = /^\s*<(\w+|!)[^>]*>/;
1286    var singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
1287
1288    function fragment(html) {
1289
1290      var matches = singleTagRe.exec(html);
1291      if (matches) {
1292        return document.createElement(matches[1]);
1293      }
1294
1295      var container = document.createElement('div');
1296      if (fragmentRe.test(html)) {
1297        container.insertAdjacentHTML('beforeend', html.trim());
1298      } else {
1299        container.textContent = html;
1300      }
1301
1302      return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;
1303    }
1304
1305    function apply(node, fn) {
1306
1307      if (!isElement(node)) {
1308        return;
1309      }
1310
1311      fn(node);
1312      node = node.firstElementChild;
1313      while (node) {
1314        var next = node.nextElementSibling;
1315        apply(node, fn);
1316        node = next;
1317      }
1318    }
1319
1320    function $(selector, context) {
1321      return !isString(selector) ? toNode(selector) : isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);
1322    }
1323
1324    function $$(selector, context) {
1325      return !isString(selector) ? toNodes(selector) : isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);
1326    }
1327
1328    function isHtml(str) {
1329      return str[0] === '<' || str.match(/^\s*</);
1330    }
1331
1332    function addClass(element) {
1333      var args = [],
1334          len = arguments.length - 1;
1335      while (len-- > 0) {
1336        args[len] = arguments[len + 1];
1337      }apply$1(element, args, 'add');
1338    }
1339
1340    function removeClass(element) {
1341      var args = [],
1342          len = arguments.length - 1;
1343      while (len-- > 0) {
1344        args[len] = arguments[len + 1];
1345      }apply$1(element, args, 'remove');
1346    }
1347
1348    function removeClasses(element, cls) {
1349      attr(element, 'class', function (value) {
1350        return (value || '').replace(new RegExp("\\b" + cls + "\\b", 'g'), '');
1351      });
1352    }
1353
1354    function replaceClass(element) {
1355      var args = [],
1356          len = arguments.length - 1;
1357      while (len-- > 0) {
1358        args[len] = arguments[len + 1];
1359      }args[0] && removeClass(element, args[0]);
1360      args[1] && addClass(element, args[1]);
1361    }
1362
1363    function hasClass(element, cls) {
1364      return cls && toNodes(element).some(function (element) {
1365        return element.classList.contains(cls.split(' ')[0]);
1366      });
1367    }
1368
1369    function toggleClass(element) {
1370      var args = [],
1371          len = arguments.length - 1;
1372      while (len-- > 0) {
1373        args[len] = arguments[len + 1];
1374      }if (!args.length) {
1375        return;
1376      }
1377
1378      args = getArgs$1(args);
1379
1380      var force = !isString(last(args)) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false
1381
1382      args = args.filter(Boolean);
1383
1384      toNodes(element).forEach(function (ref) {
1385        var classList = ref.classList;
1386
1387        for (var i = 0; i < args.length; i++) {
1388          supports.Force ? classList.toggle.apply(classList, [args[i]].concat(force)) : classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]);
1389        }
1390      });
1391    }
1392
1393    function apply$1(element, args, fn) {
1394      args = getArgs$1(args).filter(Boolean);
1395
1396      args.length && toNodes(element).forEach(function (ref) {
1397        var classList = ref.classList;
1398
1399        supports.Multiple ? classList[fn].apply(classList, args) : args.forEach(function (cls) {
1400          return classList[fn](cls);
1401        });
1402      });
1403    }
1404
1405    function getArgs$1(args) {
1406      return args.reduce(function (args, arg) {
1407        return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg);
1408      }, []);
1409    }
1410
1411    // IE 11
1412    var supports = {
1413
1414      get Multiple() {
1415        return this.get('_multiple');
1416      },
1417
1418      get Force() {
1419        return this.get('_force');
1420      },
1421
1422      get: function get$$1(key) {
1423
1424        if (!hasOwn(this, key)) {
1425          var ref = document.createElement('_');
1426          var classList = ref.classList;
1427          classList.add('a', 'b');
1428          classList.toggle('c', false);
1429          this._multiple = classList.contains('b');
1430          this._force = !classList.contains('c');
1431        }
1432
1433        return this[key];
1434      }
1435
1436    };
1437
1438    var cssNumber = {
1439      'animation-iteration-count': true,
1440      'column-count': true,
1441      'fill-opacity': true,
1442      'flex-grow': true,
1443      'flex-shrink': true,
1444      'font-weight': true,
1445      'line-height': true,
1446      'opacity': true,
1447      'order': true,
1448      'orphans': true,
1449      'stroke-dasharray': true,
1450      'stroke-dashoffset': true,
1451      'widows': true,
1452      'z-index': true,
1453      'zoom': true
1454    };
1455
1456    function css(element, property, value) {
1457
1458      return toNodes(element).map(function (element) {
1459
1460        if (isString(property)) {
1461
1462          property = propName(property);
1463
1464          if (isUndefined(value)) {
1465            return getStyle(element, property);
1466          } else if (!value && !isNumber(value)) {
1467            element.style.removeProperty(property);
1468          } else {
1469            element.style[property] = isNumeric(value) && !cssNumber[property] ? value + "px" : value;
1470          }
1471        } else if (isArray(property)) {
1472
1473          var styles = getStyles(element);
1474
1475          return property.reduce(function (props, property) {
1476            props[property] = styles[propName(property)];
1477            return props;
1478          }, {});
1479        } else if (isObject(property)) {
1480          each(property, function (value, property) {
1481            return css(element, property, value);
1482          });
1483        }
1484
1485        return element;
1486      })[0];
1487    }
1488
1489    function getStyles(element, pseudoElt) {
1490      element = toNode(element);
1491      return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);
1492    }
1493
1494    function getStyle(element, property, pseudoElt) {
1495      return getStyles(element, pseudoElt)[property];
1496    }
1497
1498    var vars = {};
1499
1500    function getCssVar(name) {
1501
1502      var docEl = document.documentElement;
1503
1504      if (!isIE) {
1505        return getStyles(docEl).getPropertyValue("--uk-" + name);
1506      }
1507
1508      if (!(name in vars)) {
1509
1510        /* usage in css: .uk-name:before { content:"xyz" } */
1511
1512        var element = append(docEl, document.createElement('div'));
1513
1514        addClass(element, "uk-" + name);
1515
1516        vars[name] = getStyle(element, 'content', ':before').replace(/^["'](.*)["']$/, '$1');
1517
1518        _remove(element);
1519      }
1520
1521      return vars[name];
1522    }
1523
1524    var cssProps = {};
1525
1526    function propName(name) {
1527
1528      var ret = cssProps[name];
1529      if (!ret) {
1530        ret = cssProps[name] = vendorPropName(name) || name;
1531      }
1532      return ret;
1533    }
1534
1535    var cssPrefixes = ['webkit', 'moz', 'ms'];
1536
1537    function vendorPropName(name) {
1538
1539      name = hyphenate(name);
1540
1541      var ref = document.documentElement;
1542      var style = ref.style;
1543
1544      if (name in style) {
1545        return name;
1546      }
1547
1548      var i = cssPrefixes.length,
1549          prefixedName;
1550
1551      while (i--) {
1552        prefixedName = "-" + cssPrefixes[i] + "-" + name;
1553        if (prefixedName in style) {
1554          return prefixedName;
1555        }
1556      }
1557    }
1558
1559    function transition(element, props, duration, timing) {
1560      if (duration === void 0) duration = 400;
1561      if (timing === void 0) timing = 'linear';
1562
1563      return Promise.all(toNodes(element).map(function (element) {
1564        return new Promise(function (resolve, reject) {
1565
1566          for (var name in props) {
1567            var value = css(element, name);
1568            if (value === '') {
1569              css(element, name, value);
1570            }
1571          }
1572
1573          var timer = setTimeout(function () {
1574            return trigger(element, 'transitionend');
1575          }, duration);
1576
1577          once(element, 'transitionend transitioncanceled', function (ref) {
1578            var type = ref.type;
1579
1580            clearTimeout(timer);
1581            removeClass(element, 'uk-transition');
1582            css(element, {
1583              transitionProperty: '',
1584              transitionDuration: '',
1585              transitionTimingFunction: ''
1586            });
1587            type === 'transitioncanceled' ? reject() : resolve();
1588          }, { self: true });
1589
1590          addClass(element, 'uk-transition');
1591          css(element, assign({
1592            transitionProperty: Object.keys(props).map(propName).join(','),
1593            transitionDuration: duration + "ms",
1594            transitionTimingFunction: timing
1595          }, props));
1596        });
1597      }));
1598    }
1599
1600    var Transition = {
1601
1602      start: transition,
1603
1604      stop: function stop(element) {
1605        trigger(element, 'transitionend');
1606        return Promise.resolve();
1607      },
1608
1609      cancel: function cancel(element) {
1610        trigger(element, 'transitioncanceled');
1611      },
1612
1613      inProgress: function inProgress(element) {
1614        return hasClass(element, 'uk-transition');
1615      }
1616
1617    };
1618
1619    var animationPrefix = 'uk-animation-';
1620
1621    function animate(element, animation, duration, origin, out) {
1622      if (duration === void 0) duration = 200;
1623
1624      return Promise.all(toNodes(element).map(function (element) {
1625        return new Promise(function (resolve, reject) {
1626
1627          trigger(element, 'animationcanceled');
1628          var timer = setTimeout(function () {
1629            return trigger(element, 'animationend');
1630          }, duration);
1631
1632          once(element, 'animationend animationcanceled', function (ref) {
1633            var type = ref.type;
1634
1635            clearTimeout(timer);
1636
1637            type === 'animationcanceled' ? reject() : resolve();
1638
1639            css(element, 'animationDuration', '');
1640            removeClasses(element, animationPrefix + "\\S*");
1641          }, { self: true });
1642
1643          css(element, 'animationDuration', duration + "ms");
1644          addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));
1645
1646          if (startsWith(animation, animationPrefix)) {
1647            addClass(element, origin && "uk-transform-origin-" + origin, out && animationPrefix + "reverse");
1648          }
1649        });
1650      }));
1651    }
1652
1653    var _inProgress = new RegExp(animationPrefix + "(enter|leave)");
1654    var Animation = {
1655
1656      in: animate,
1657
1658      out: function out(element, animation, duration, origin) {
1659        return animate(element, animation, duration, origin, true);
1660      },
1661
1662      inProgress: function inProgress(element) {
1663        return _inProgress.test(attr(element, 'class'));
1664      },
1665
1666      cancel: function cancel(element) {
1667        trigger(element, 'animationcanceled');
1668      }
1669
1670    };
1671
1672    var dirs = {
1673      width: ['x', 'left', 'right'],
1674      height: ['y', 'top', 'bottom']
1675    };
1676
1677    function _positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {
1678
1679      elAttach = getPos(elAttach);
1680      targetAttach = getPos(targetAttach);
1681
1682      var flipped = { element: elAttach, target: targetAttach };
1683
1684      if (!element || !target) {
1685        return flipped;
1686      }
1687
1688      var dim = getDimensions(element);
1689      var targetDim = getDimensions(target);
1690      var position = targetDim;
1691
1692      moveTo(position, elAttach, dim, -1);
1693      moveTo(position, targetAttach, targetDim, 1);
1694
1695      elOffset = getOffsets(elOffset, dim.width, dim.height);
1696      targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);
1697
1698      elOffset['x'] += targetOffset['x'];
1699      elOffset['y'] += targetOffset['y'];
1700
1701      position.left += elOffset['x'];
1702      position.top += elOffset['y'];
1703
1704      if (flip) {
1705
1706        var boundaries = [getDimensions(toWindow(element))];
1707
1708        if (boundary) {
1709          boundaries.unshift(getDimensions(boundary));
1710        }
1711
1712        each(dirs, function (ref, prop) {
1713          var dir = ref[0];
1714          var align = ref[1];
1715          var alignFlip = ref[2];
1716
1717          if (!(flip === true || includes(flip, dir))) {
1718            return;
1719          }
1720
1721          boundaries.some(function (boundary) {
1722
1723            var elemOffset = elAttach[dir] === align ? -dim[prop] : elAttach[dir] === alignFlip ? dim[prop] : 0;
1724
1725            var targetOffset = targetAttach[dir] === align ? targetDim[prop] : targetAttach[dir] === alignFlip ? -targetDim[prop] : 0;
1726
1727            if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {
1728
1729              var centerOffset = dim[prop] / 2;
1730              var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;
1731
1732              return elAttach[dir] === 'center' && (apply(centerOffset, centerTargetOffset) || apply(-centerOffset, -centerTargetOffset)) || apply(elemOffset, targetOffset);
1733            }
1734
1735            function apply(elemOffset, targetOffset) {
1736
1737              var newVal = toFloat((position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4));
1738
1739              if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {
1740                position[align] = newVal;
1741
1742                ['element', 'target'].forEach(function (el) {
1743                  flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs[prop][1] ? dirs[prop][2] : dirs[prop][1];
1744                });
1745
1746                return true;
1747              }
1748            }
1749          });
1750        });
1751      }
1752
1753      offset(element, position);
1754
1755      return flipped;
1756    }
1757
1758    function offset(element, coordinates) {
1759
1760      if (!coordinates) {
1761        return getDimensions(element);
1762      }
1763
1764      var currentOffset = getDimensions(element);
1765      var pos = css(element, 'position');
1766
1767      ['left', 'top'].forEach(function (prop) {
1768        if (prop in coordinates) {
1769          var value = css(element, prop);
1770          css(element, prop, coordinates[prop] - currentOffset[prop] + toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value));
1771        }
1772      });
1773    }
1774
1775    function getDimensions(element) {
1776
1777      if (!element) {
1778        return {};
1779      }
1780
1781      var ref = toWindow(element);
1782      var top = ref.pageYOffset;
1783      var left = ref.pageXOffset;
1784
1785      if (isWindow(element)) {
1786
1787        var height = element.innerHeight;
1788        var width = element.innerWidth;
1789
1790        return {
1791          top: top,
1792          left: left,
1793          height: height,
1794          width: width,
1795          bottom: top + height,
1796          right: left + width
1797        };
1798      }
1799
1800      var style, hidden;
1801
1802      if (!isVisible(element) && css(element, 'display') === 'none') {
1803
1804        style = attr(element, 'style');
1805        hidden = attr(element, 'hidden');
1806
1807        attr(element, {
1808          style: (style || '') + ";display:block !important;",
1809          hidden: null
1810        });
1811      }
1812
1813      element = toNode(element);
1814
1815      var rect = element.getBoundingClientRect();
1816
1817      if (!isUndefined(style)) {
1818        attr(element, { style: style, hidden: hidden });
1819      }
1820
1821      return {
1822        height: rect.height,
1823        width: rect.width,
1824        top: rect.top + top,
1825        left: rect.left + left,
1826        bottom: rect.bottom + top,
1827        right: rect.right + left
1828      };
1829    }
1830
1831    function position(element, parent) {
1832
1833      parent = parent || (toNode(element) || {}).offsetParent || toWindow(element).document.documentElement;
1834
1835      var elementOffset = offset(element);
1836      var parentOffset = offset(parent);
1837
1838      return {
1839        top: elementOffset.top - parentOffset.top - toFloat(css(parent, 'borderTopWidth')),
1840        left: elementOffset.left - parentOffset.left - toFloat(css(parent, 'borderLeftWidth'))
1841      };
1842    }
1843
1844    function offsetPosition(element) {
1845      var offset = [0, 0];
1846
1847      element = toNode(element);
1848
1849      do {
1850
1851        offset[0] += element.offsetTop;
1852        offset[1] += element.offsetLeft;
1853
1854        if (css(element, 'position') === 'fixed') {
1855          var win = toWindow(element);
1856          offset[0] += win.pageYOffset;
1857          offset[1] += win.pageXOffset;
1858          return offset;
1859        }
1860      } while (element = element.offsetParent);
1861
1862      return offset;
1863    }
1864
1865    var height = dimension('height');
1866    var width = dimension('width');
1867
1868    function dimension(prop) {
1869      var propName = ucfirst(prop);
1870      return function (element, value) {
1871
1872        if (isUndefined(value)) {
1873
1874          if (isWindow(element)) {
1875            return element["inner" + propName];
1876          }
1877
1878          if (isDocument(element)) {
1879            var doc = element.documentElement;
1880            return Math.max(doc["offset" + propName], doc["scroll" + propName]);
1881          }
1882
1883          element = toNode(element);
1884
1885          value = css(element, prop);
1886          value = value === 'auto' ? element["offset" + propName] : toFloat(value) || 0;
1887
1888          return value - boxModelAdjust(element, prop);
1889        } else {
1890
1891          css(element, prop, !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px');
1892        }
1893      };
1894    }
1895
1896    function boxModelAdjust(element, prop, sizing) {
1897      if (sizing === void 0) sizing = 'border-box';
1898
1899      return css(element, 'boxSizing') === sizing ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) {
1900        return value + toFloat(css(element, "padding" + prop)) + toFloat(css(element, "border" + prop + "Width"));
1901      }, 0) : 0;
1902    }
1903
1904    function moveTo(position, attach, dim, factor) {
1905      each(dirs, function (ref, prop) {
1906        var dir = ref[0];
1907        var align = ref[1];
1908        var alignFlip = ref[2];
1909
1910        if (attach[dir] === alignFlip) {
1911          position[align] += dim[prop] * factor;
1912        } else if (attach[dir] === 'center') {
1913          position[align] += dim[prop] * factor / 2;
1914        }
1915      });
1916    }
1917
1918    function getPos(pos) {
1919
1920      var x = /left|center|right/;
1921      var y = /top|center|bottom/;
1922
1923      pos = (pos || '').split(' ');
1924
1925      if (pos.length === 1) {
1926        pos = x.test(pos[0]) ? pos.concat('center') : y.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center'];
1927      }
1928
1929      return {
1930        x: x.test(pos[0]) ? pos[0] : 'center',
1931        y: y.test(pos[1]) ? pos[1] : 'center'
1932      };
1933    }
1934
1935    function getOffsets(offsets, width, height) {
1936
1937      var ref = (offsets || '').split(' ');
1938      var x = ref[0];
1939      var y = ref[1];
1940
1941      return {
1942        x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,
1943        y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0
1944      };
1945    }
1946
1947    function flipPosition(pos) {
1948      switch (pos) {
1949        case 'left':
1950          return 'right';
1951        case 'right':
1952          return 'left';
1953        case 'top':
1954          return 'bottom';
1955        case 'bottom':
1956          return 'top';
1957        default:
1958          return pos;
1959      }
1960    }
1961
1962    function toPx(value, property, element) {
1963      if (property === void 0) property = 'width';
1964      if (element === void 0) element = window;
1965
1966      return isNumeric(value) ? +value : endsWith(value, 'vh') ? percent(height(toWindow(element)), value) : endsWith(value, 'vw') ? percent(width(toWindow(element)), value) : endsWith(value, '%') ? percent(getDimensions(element)[property], value) : toFloat(value);
1967    }
1968
1969    function percent(base, value) {
1970      return base * toFloat(value) / 100;
1971    }
1972
1973    /*
1974        Based on:
1975        Copyright (c) 2016 Wilson Page [email protected]
1976        https://github.com/wilsonpage/fastdom
1977    */
1978
1979    var fastdom = {
1980
1981      reads: [],
1982      writes: [],
1983
1984      read: function read(task) {
1985        this.reads.push(task);
1986        scheduleFlush();
1987        return task;
1988      },
1989
1990      write: function write(task) {
1991        this.writes.push(task);
1992        scheduleFlush();
1993        return task;
1994      },
1995
1996      clear: function clear(task) {
1997        return remove$1(this.reads, task) || remove$1(this.writes, task);
1998      },
1999
2000      flush: flush
2001
2002    };
2003
2004    function flush(recursion) {
2005      if (recursion === void 0) recursion = 1;
2006
2007      runTasks(fastdom.reads);
2008      runTasks(fastdom.writes.splice(0, fastdom.writes.length));
2009
2010      fastdom.scheduled = false;
2011
2012      if (fastdom.reads.length || fastdom.writes.length) {
2013        scheduleFlush(recursion + 1);
2014      }
2015    }
2016
2017    var RECURSION_LIMIT = 4;
2018    function scheduleFlush(recursion) {
2019
2020      if (fastdom.scheduled) {
2021        return;
2022      }
2023
2024      fastdom.scheduled = true;
2025      if (recursion && recursion < RECURSION_LIMIT) {
2026        Promise.resolve().then(function () {
2027          return flush(recursion);
2028        });
2029      } else {
2030        requestAnimationFrame(function () {
2031          return flush();
2032        });
2033      }
2034    }
2035
2036    function runTasks(tasks) {
2037      var task;
2038      while (task = tasks.shift()) {
2039        task();
2040      }
2041    }
2042
2043    function remove$1(array, item) {
2044      var index = array.indexOf(item);
2045      return !!~index && !!array.splice(index, 1);
2046    }
2047
2048    function MouseTracker() {}
2049
2050    MouseTracker.prototype = {
2051
2052      positions: [],
2053
2054      init: function init() {
2055        var this$1 = this;
2056
2057        this.positions = [];
2058
2059        var position;
2060        this.unbind = on(document, 'mousemove', function (e) {
2061          return position = getEventPos(e);
2062        });
2063        this.interval = setInterval(function () {
2064
2065          if (!position) {
2066            return;
2067          }
2068
2069          this$1.positions.push(position);
2070
2071          if (this$1.positions.length > 5) {
2072            this$1.positions.shift();
2073          }
2074        }, 50);
2075      },
2076
2077      cancel: function cancel() {
2078        this.unbind && this.unbind();
2079        this.interval && clearInterval(this.interval);
2080      },
2081
2082      movesTo: function movesTo(target) {
2083
2084        if (this.positions.length < 2) {
2085          return false;
2086        }
2087
2088        var p = target.getBoundingClientRect();
2089        var left = p.left;
2090        var right = p.right;
2091        var top = p.top;
2092        var bottom = p.bottom;
2093
2094        var ref = this.positions;
2095        var prevPosition = ref[0];
2096        var position = last(this.positions);
2097        var path = [prevPosition, position];
2098
2099        if (pointInRect(position, p)) {
2100          return false;
2101        }
2102
2103        var diagonals = [[{ x: left, y: top }, { x: right, y: bottom }], [{ x: left, y: bottom }, { x: right, y: top }]];
2104
2105        return diagonals.some(function (diagonal) {
2106          var intersection = intersect(path, diagonal);
2107          return intersection && pointInRect(intersection, p);
2108        });
2109      }
2110
2111    };
2112
2113    // Inspired by http://paulbourke.net/geometry/pointlineplane/
2114    function intersect(ref, ref$1) {
2115      var ref_0 = ref[0];
2116      var x1 = ref_0.x;
2117      var y1 = ref_0.y;
2118      var ref_1 = ref[1];
2119      var x2 = ref_1.x;
2120      var y2 = ref_1.y;
2121      var ref$1_0 = ref$1[0];
2122      var x3 = ref$1_0.x;
2123      var y3 = ref$1_0.y;
2124      var ref$1_1 = ref$1[1];
2125      var x4 = ref$1_1.x;
2126      var y4 = ref$1_1.y;
2127
2128      var denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);
2129
2130      // Lines are parallel
2131      if (denominator === 0) {
2132        return false;
2133      }
2134
2135      var ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;
2136
2137      if (ua < 0) {
2138        return false;
2139      }
2140
2141      // Return an object with the x and y coordinates of the intersection
2142      return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) };
2143    }
2144
2145    var strats = {};
2146
2147    strats.events = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat;
2148
2149    // args strategy
2150    strats.args = function (parentVal, childVal) {
2151      return childVal !== false && concatStrat(childVal || parentVal);
2152    };
2153
2154    // update strategy
2155    strats.update = function (parentVal, childVal) {
2156      return sortBy(concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal), 'order');
2157    };
2158
2159    // property strategy
2160    strats.props = function (parentVal, childVal) {
2161
2162      if (isArray(childVal)) {
2163        childVal = childVal.reduce(function (value, key) {
2164          value[key] = String;
2165          return value;
2166        }, {});
2167      }
2168
2169      return strats.methods(parentVal, childVal);
2170    };
2171
2172    // extend strategy
2173    strats.computed = strats.methods = function (parentVal, childVal) {
2174      return childVal ? parentVal ? assign({}, parentVal, childVal) : childVal : parentVal;
2175    };
2176
2177    // data strategy
2178    strats.data = function (parentVal, childVal, vm) {
2179
2180      if (!vm) {
2181
2182        if (!childVal) {
2183          return parentVal;
2184        }
2185
2186        if (!parentVal) {
2187          return childVal;
2188        }
2189
2190        return function (vm) {
2191          return mergeFnData(parentVal, childVal, vm);
2192        };
2193      }
2194
2195      return mergeFnData(parentVal, childVal, vm);
2196    };
2197
2198    function mergeFnData(parentVal, childVal, vm) {
2199      return strats.computed(isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal, isFunction(childVal) ? childVal.call(vm, vm) : childVal);
2200    }
2201
2202    // concat strategy
2203    function concatStrat(parentVal, childVal) {
2204
2205      parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;
2206
2207      return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;
2208    }
2209
2210    // default strategy
2211    function defaultStrat(parentVal, childVal) {
2212      return isUndefined(childVal) ? parentVal : childVal;
2213    }
2214
2215    function mergeOptions(parent, child, vm) {
2216
2217      var options = {};
2218
2219      if (isFunction(child)) {
2220        child = child.options;
2221      }
2222
2223      if (child.extends) {
2224        parent = mergeOptions(parent, child.extends, vm);
2225      }
2226
2227      if (child.mixins) {
2228        for (var i = 0, l = child.mixins.length; i < l; i++) {
2229          parent = mergeOptions(parent, child.mixins[i], vm);
2230        }
2231      }
2232
2233      for (var key in parent) {
2234        mergeKey(key);
2235      }
2236
2237      for (var key$1 in child) {
2238        if (!hasOwn(parent, key$1)) {
2239          mergeKey(key$1);
2240        }
2241      }
2242
2243      function mergeKey(key) {
2244        options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);
2245      }
2246
2247      return options;
2248    }
2249
2250    function parseOptions(options, args) {
2251      var obj;
2252
2253      if (args === void 0) args = [];
2254
2255      try {
2256
2257        return !options ? {} : startsWith(options, '{') ? JSON.parse(options) : args.length && !includes(options, ':') ? (obj = {}, obj[args[0]] = options, obj) : options.split(';').reduce(function (options, option) {
2258          var ref = option.split(/:(.*)/);
2259          var key = ref[0];
2260          var value = ref[1];
2261          if (key && !isUndefined(value)) {
2262            options[key.trim()] = value.trim();
2263          }
2264          return options;
2265        }, {});
2266      } catch (e) {
2267        return {};
2268      }
2269    }
2270
2271    function play(el) {
2272
2273      if (isIFrame(el)) {
2274        call(el, { func: 'playVideo', method: 'play' });
2275      }
2276
2277      if (isHTML5(el)) {
2278        try {
2279          el.play().catch(noop);
2280        } catch (e) {}
2281      }
2282    }
2283
2284    function pause(el) {
2285
2286      if (isIFrame(el)) {
2287        call(el, { func: 'pauseVideo', method: 'pause' });
2288      }
2289
2290      if (isHTML5(el)) {
2291        el.pause();
2292      }
2293    }
2294
2295    function mute(el) {
2296
2297      if (isIFrame(el)) {
2298        call(el, { func: 'mute', method: 'setVolume', value: 0 });
2299      }
2300
2301      if (isHTML5(el)) {
2302        el.muted = true;
2303        attr(el, 'muted', '');
2304      }
2305    }
2306
2307    function isHTML5(el) {
2308      return el && el.tagName === 'VIDEO';
2309    }
2310
2311    function isIFrame(el) {
2312      return el && el.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el));
2313    }
2314
2315    function isYoutube(el) {
2316      return !!el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/);
2317    }
2318
2319    function isVimeo(el) {
2320      return !!el.src.match(/vimeo\.com\/video\/.*/);
2321    }
2322
2323    function call(el, cmd) {
2324      enableApi(el).then(function () {
2325        return post(el, cmd);
2326      });
2327    }
2328
2329    function post(el, cmd) {
2330      try {
2331        el.contentWindow.postMessage(JSON.stringify(assign({ event: 'command' }, cmd)), '*');
2332      } catch (e) {}
2333    }
2334
2335    var stateKey = '_ukPlayer';
2336    var counter = 0;
2337    function enableApi(el) {
2338
2339      if (el[stateKey]) {
2340        return el[stateKey];
2341      }
2342
2343      var youtube = isYoutube(el);
2344      var vimeo = isVimeo(el);
2345
2346      var id = ++counter;
2347      var poller;
2348
2349      return el[stateKey] = new Promise(function (resolve) {
2350
2351        youtube && once(el, 'load', function () {
2352          var listener = function listener() {
2353            return post(el, { event: 'listening', id: id });
2354          };
2355          poller = setInterval(listener, 100);
2356          listener();
2357        });
2358
2359        once(window, 'message', resolve, false, function (ref) {
2360          var data = ref.data;
2361
2362          try {
2363            data = JSON.parse(data);
2364            return data && (youtube && data.id === id && data.event === 'onReady' || vimeo && Number(data.player_id) === id);
2365          } catch (e) {}
2366        });
2367
2368        attr(el, 'src', "" + el.src + (includes(el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : "api=1&player_id=" + id));
2369      }).then(function () {
2370        return clearInterval(poller);
2371      });
2372    }
2373
2374    function isInView(element, offsetTop, offsetLeft) {
2375      if (offsetTop === void 0) offsetTop = 0;
2376      if (offsetLeft === void 0) offsetLeft = 0;
2377
2378      if (!isVisible(element)) {
2379        return false;
2380      }
2381
2382      var parents = overflowParents(element);
2383
2384      return parents.every(function (parent, i) {
2385
2386        var client = offset(parents[i + 1] || element);
2387        var ref = offset(getViewport(parent));
2388        var top = ref.top;
2389        var left = ref.left;
2390        var bottom = ref.bottom;
2391        var right = ref.right;
2392
2393        return intersectRect(client, {
2394          top: top - offsetTop,
2395          left: left - offsetLeft,
2396          bottom: bottom + offsetTop,
2397          right: right + offsetLeft
2398        });
2399      });
2400    }
2401
2402    function scrollTop(element, top) {
2403
2404      if (isWindow(element) || isDocument(element)) {
2405        element = getScrollingElement(element);
2406      } else {
2407        element = toNode(element);
2408      }
2409
2410      element.scrollTop = top;
2411    }
2412
2413    function scrollIntoView(element, ref) {
2414      if (ref === void 0) ref = {};
2415      var offsetBy = ref.offset;if (offsetBy === void 0) offsetBy = 0;
2416
2417      if (!isVisible(element)) {
2418        return;
2419      }
2420
2421      var parents = overflowParents(element).concat(element);
2422
2423      var promise = Promise.resolve();
2424      var loop = function loop(i) {
2425        promise = promise.then(function () {
2426          return new Promise(function (resolve) {
2427
2428            var scrollElement = parents[i];
2429            var element = parents[i + 1];
2430
2431            var scroll = scrollElement.scrollTop;
2432            var top = Math.ceil(position(element, getViewport(scrollElement)).top - offsetBy);
2433            var duration = getDuration(Math.abs(top));
2434
2435            var start = Date.now();
2436            var step = function step() {
2437
2438              var percent = ease(clamp((Date.now() - start) / duration));
2439
2440              scrollTop(scrollElement, scroll + top * percent);
2441
2442              // scroll more if we have not reached our destination
2443              if (percent !== 1) {
2444                requestAnimationFrame(step);
2445              } else {
2446                resolve();
2447              }
2448            };
2449
2450            step();
2451          });
2452        });
2453      };
2454
2455      for (var i = 0; i < parents.length - 1; i++) {
2456        loop(i);
2457      }return promise;
2458
2459      function getDuration(dist) {
2460        return 40 * Math.pow(dist, .375);
2461      }
2462
2463      function ease(k) {
2464        return 0.5 * (1 - Math.cos(Math.PI * k));
2465      }
2466    }
2467
2468    function scrolledOver(element, heightOffset) {
2469      if (heightOffset === void 0) heightOffset = 0;
2470
2471      if (!isVisible(element)) {
2472        return 0;
2473      }
2474
2475      var scrollElement = last(scrollParents(element));
2476      var scrollHeight = scrollElement.scrollHeight;
2477      var scrollTop = scrollElement.scrollTop;
2478      var viewport = getViewport(scrollElement);
2479      var viewportHeight = offset(viewport).height;
2480      var viewportTop = offsetPosition(element)[0] - scrollTop - offsetPosition(scrollElement)[0];
2481      var viewportDist = Math.min(viewportHeight, viewportTop + scrollTop);
2482
2483      var top = viewportTop - viewportDist;
2484      var dist = Math.min(offset(element).height + heightOffset + viewportDist, scrollHeight - (viewportTop + scrollTop), scrollHeight - viewportHeight);
2485
2486      return clamp(-1 * top / dist);
2487    }
2488
2489    function scrollParents(element, overflowRe) {
2490      if (overflowRe === void 0) overflowRe = /auto|scroll/;
2491
2492      var scrollEl = getScrollingElement(element);
2493      var scrollParents = parents(element).filter(function (parent) {
2494        return parent === scrollEl || overflowRe.test(css(parent, 'overflow')) && parent.scrollHeight > Math.round(offset(parent).height);
2495      }).reverse();
2496      return scrollParents.length ? scrollParents : [scrollEl];
2497    }
2498
2499    function getViewport(scrollElement) {
2500      return scrollElement === getScrollingElement(scrollElement) ? window : scrollElement;
2501    }
2502
2503    function overflowParents(element) {
2504      return scrollParents(element, /auto|scroll|hidden/);
2505    }
2506
2507    function getScrollingElement(element) {
2508      var ref = toWindow(element);
2509      var document = ref.document;
2510      return document.scrollingElement || document.documentElement;
2511    }
2512
2513    var IntersectionObserver = inBrowser && window.IntersectionObserver || /*@__PURE__*/function () {
2514      function IntersectionObserverClass(callback, ref) {
2515        var this$1 = this;
2516        if (ref === void 0) ref = {};
2517        var rootMargin = ref.rootMargin;if (rootMargin === void 0) rootMargin = '0 0';
2518
2519        this.targets = [];
2520
2521        var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat);
2522        var offsetTop = ref$1[0];
2523        var offsetLeft = ref$1[1];
2524
2525        this.offsetTop = offsetTop;
2526        this.offsetLeft = offsetLeft;
2527
2528        var pending;
2529        this.apply = function () {
2530
2531          if (pending) {
2532            return;
2533          }
2534
2535          pending = requestAnimationFrame(function () {
2536            return setTimeout(function () {
2537              var records = this$1.takeRecords();
2538
2539              if (records.length) {
2540                callback(records, this$1);
2541              }
2542
2543              pending = false;
2544            });
2545          });
2546        };
2547
2548        this.off = on(window, 'scroll resize load', this.apply, { passive: true, capture: true });
2549      }
2550
2551      IntersectionObserverClass.prototype.takeRecords = function () {
2552        var this$1 = this;
2553
2554        return this.targets.filter(function (entry) {
2555
2556          var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft);
2557
2558          if (entry.isIntersecting === null || inView ^ entry.isIntersecting) {
2559            entry.isIntersecting = inView;
2560            return true;
2561          }
2562        });
2563      };
2564
2565      IntersectionObserverClass.prototype.observe = function (target) {
2566        this.targets.push({
2567          target: target,
2568          isIntersecting: null
2569        });
2570        this.apply();
2571      };
2572
2573      IntersectionObserverClass.prototype.disconnect = function () {
2574        this.targets = [];
2575        this.off();
2576      };
2577
2578      return IntersectionObserverClass;
2579    }();
2580
2581    var util = /*#__PURE__*/Object.freeze({
2582      __proto__: null,
2583      ajax: ajax,
2584      getImage: getImage,
2585      transition: transition,
2586      Transition: Transition,
2587      animate: animate,
2588      Animation: Animation,
2589      attr: attr,
2590      hasAttr: hasAttr,
2591      removeAttr: removeAttr,
2592      data: data,
2593      addClass: addClass,
2594      removeClass: removeClass,
2595      removeClasses: removeClasses,
2596      replaceClass: replaceClass,
2597      hasClass: hasClass,
2598      toggleClass: toggleClass,
2599      positionAt: _positionAt,
2600      offset: offset,
2601      position: position,
2602      offsetPosition: offsetPosition,
2603      height: height,
2604      width: width,
2605      boxModelAdjust: boxModelAdjust,
2606      flipPosition: flipPosition,
2607      toPx: toPx,
2608      ready: ready,
2609      index: index,
2610      getIndex: _getIndex,
2611      empty: empty,
2612      html: html,
2613      prepend: prepend,
2614      append: append,
2615      before: before,
2616      after: after,
2617      remove: _remove,
2618      wrapAll: wrapAll,
2619      wrapInner: wrapInner,
2620      unwrap: unwrap,
2621      fragment: fragment,
2622      apply: apply,
2623      $: $,
2624      $$: $$,
2625      inBrowser: inBrowser,
2626      isIE: isIE,
2627      isRtl: isRtl,
2628      hasTouch: hasTouch,
2629      pointerDown: pointerDown,
2630      pointerMove: pointerMove,
2631      pointerUp: pointerUp,
2632      pointerEnter: pointerEnter,
2633      pointerLeave: pointerLeave,
2634      pointerCancel: pointerCancel,
2635      on: on,
2636      off: off,
2637      once: once,
2638      trigger: trigger,
2639      createEvent: createEvent,
2640      toEventTargets: toEventTargets,
2641      isTouch: isTouch,
2642      getEventPos: getEventPos,
2643      fastdom: fastdom,
2644      isVoidElement: isVoidElement,
2645      isVisible: isVisible,
2646      selInput: selInput,
2647      isInput: isInput,
2648      filter: filter,
2649      within: within,
2650      parents: parents,
2651      children: _children,
2652      hasOwn: hasOwn,
2653      hyphenate: hyphenate,
2654      camelize: camelize,
2655      ucfirst: ucfirst,
2656      startsWith: startsWith,
2657      endsWith: endsWith,
2658      includes: includes,
2659      findIndex: findIndex,
2660      isArray: isArray,
2661      isFunction: isFunction,
2662      isObject: isObject,
2663      isPlainObject: isPlainObject,
2664      isWindow: isWindow,
2665      isDocument: isDocument,
2666      isJQuery: isJQuery,
2667      isNode: isNode,
2668      isElement: isElement,
2669      isNodeCollection: isNodeCollection,
2670      isBoolean: isBoolean,
2671      isString: isString,
2672      isNumber: isNumber,
2673      isNumeric: isNumeric,
2674      isEmpty: isEmpty,
2675      isUndefined: isUndefined,
2676      toBoolean: toBoolean,
2677      toNumber: toNumber,
2678      toFloat: toFloat,
2679      toNode: toNode,
2680      toNodes: toNodes,
2681      toWindow: toWindow,
2682      toList: toList,
2683      toMs: toMs,
2684      isEqual: isEqual,
2685      swap: swap,
2686      assign: assign,
2687      last: last,
2688      each: each,
2689      sortBy: sortBy,
2690      uniqueBy: uniqueBy,
2691      clamp: clamp,
2692      noop: noop,
2693      intersectRect: intersectRect,
2694      pointInRect: pointInRect,
2695      Dimensions: Dimensions,
2696      MouseTracker: MouseTracker,
2697      mergeOptions: mergeOptions,
2698      parseOptions: parseOptions,
2699      play: play,
2700      pause: pause,
2701      mute: mute,
2702      Promise: Promise,
2703      Deferred: Deferred,
2704      IntersectionObserver: IntersectionObserver,
2705      query: query,
2706      queryAll: queryAll,
2707      find: find,
2708      findAll: findAll,
2709      matches: matches,
2710      closest: closest,
2711      parent: parent,
2712      escape: escape,
2713      css: css,
2714      getStyles: getStyles,
2715      getStyle: getStyle,
2716      getCssVar: getCssVar,
2717      propName: propName,
2718      isInView: isInView,
2719      scrollTop: scrollTop,
2720      scrollIntoView: scrollIntoView,
2721      scrolledOver: scrolledOver,
2722      scrollParents: scrollParents,
2723      getViewport: getViewport
2724    });
2725
2726    function globalAPI(UIkit) {
2727
2728      var DATA = UIkit.data;
2729
2730      UIkit.use = function (plugin) {
2731
2732        if (plugin.installed) {
2733          return;
2734        }
2735
2736        plugin.call(null, this);
2737        plugin.installed = true;
2738
2739        return this;
2740      };
2741
2742      UIkit.mixin = function (mixin, component) {
2743        component = (isString(component) ? UIkit.component(component) : component) || this;
2744        component.options = mergeOptions(component.options, mixin);
2745      };
2746
2747      UIkit.extend = function (options) {
2748
2749        options = options || {};
2750
2751        var Super = this;
2752        var Sub = function UIkitComponent(options) {
2753          this._init(options);
2754        };
2755
2756        Sub.prototype = Object.create(Super.prototype);
2757        Sub.prototype.constructor = Sub;
2758        Sub.options = mergeOptions(Super.options, options);
2759
2760        Sub.super = Super;
2761        Sub.extend = Super.extend;
2762
2763        return Sub;
2764      };
2765
2766      UIkit.update = function (element, e) {
2767
2768        element = element ? toNode(element) : document.body;
2769
2770        parents(element).reverse().forEach(function (element) {
2771          return update(element[DATA], e);
2772        });
2773        apply(element, function (element) {
2774          return update(element[DATA], e);
2775        });
2776      };
2777
2778      var container;
2779      Object.defineProperty(UIkit, 'container', {
2780
2781        get: function get$$1() {
2782          return container || document.body;
2783        },
2784
2785        set: function set$$1(element) {
2786          container = $(element);
2787        }
2788
2789      });
2790
2791      function update(data, e) {
2792
2793        if (!data) {
2794          return;
2795        }
2796
2797        for (var name in data) {
2798          if (data[name]._connected) {
2799            data[name]._callUpdate(e);
2800          }
2801        }
2802      }
2803    }
2804
2805    function hooksAPI(UIkit) {
2806
2807      UIkit.prototype._callHook = function (hook) {
2808        var this$1 = this;
2809
2810        var handlers = this.$options[hook];
2811
2812        if (handlers) {
2813          handlers.forEach(function (handler) {
2814            return handler.call(this$1);
2815          });
2816        }
2817      };
2818
2819      UIkit.prototype._callConnected = function () {
2820
2821        if (this._connected) {
2822          return;
2823        }
2824
2825        this._data = {};
2826        this._computeds = {};
2827        this._frames = { reads: {}, writes: {} };
2828
2829        this._initProps();
2830
2831        this._callHook('beforeConnect');
2832        this._connected = true;
2833
2834        this._initEvents();
2835        this._initObserver();
2836
2837        this._callHook('connected');
2838        this._callUpdate();
2839      };
2840
2841      UIkit.prototype._callDisconnected = function () {
2842
2843        if (!this._connected) {
2844          return;
2845        }
2846
2847        this._callHook('beforeDisconnect');
2848
2849        if (this._observer) {
2850          this._observer.disconnect();
2851          this._observer = null;
2852        }
2853
2854        this._unbindEvents();
2855        this._callHook('disconnected');
2856
2857        this._connected = false;
2858      };
2859
2860      UIkit.prototype._callUpdate = function (e) {
2861        var this$1 = this;
2862        if (e === void 0) e = 'update';
2863
2864        var type = e.type || e;
2865
2866        if (includes(['update', 'resize'], type)) {
2867          this._callWatches();
2868        }
2869
2870        var updates = this.$options.update;
2871        var ref = this._frames;
2872        var reads = ref.reads;
2873        var writes = ref.writes;
2874
2875        if (!updates) {
2876          return;
2877        }
2878
2879        updates.forEach(function (ref, i) {
2880          var read = ref.read;
2881          var write = ref.write;
2882          var events = ref.events;
2883
2884          if (type !== 'update' && !includes(events, type)) {
2885            return;
2886          }
2887
2888          if (read && !includes(fastdom.reads, reads[i])) {
2889            reads[i] = fastdom.read(function () {
2890
2891              var result = this$1._connected && read.call(this$1, this$1._data, type);
2892
2893              if (result === false && write) {
2894                fastdom.clear(writes[i]);
2895              } else if (isPlainObject(result)) {
2896                assign(this$1._data, result);
2897              }
2898            });
2899          }
2900
2901          if (write && !includes(fastdom.writes, writes[i])) {
2902            writes[i] = fastdom.write(function () {
2903              return this$1._connected && write.call(this$1, this$1._data, type);
2904            });
2905          }
2906        });
2907      };
2908
2909      UIkit.prototype._callWatches = function () {
2910        var this$1 = this;
2911
2912        var ref = this;
2913        var _frames = ref._frames;
2914
2915        if (_frames._watch) {
2916          return;
2917        }
2918
2919        var initital = !hasOwn(_frames, '_watch');
2920
2921        _frames._watch = fastdom.read(function () {
2922
2923          if (!this$1._connected) {
2924            return;
2925          }
2926
2927          var ref = this$1;
2928          var computed = ref.$options.computed;
2929          var _computeds = ref._computeds;
2930
2931          for (var key in computed) {
2932
2933            var hasPrev = hasOwn(_computeds, key);
2934            var prev = _computeds[key];
2935
2936            delete _computeds[key];
2937
2938            var ref$1 = computed[key];
2939            var watch = ref$1.watch;
2940            var immediate = ref$1.immediate;
2941            if (watch && (initital && immediate || hasPrev && !isEqual(prev, this$1[key]))) {
2942              watch.call(this$1, this$1[key], prev);
2943            }
2944          }
2945
2946          _frames._watch = null;
2947        });
2948      };
2949    }
2950
2951    function stateAPI(UIkit) {
2952
2953      var uid = 0;
2954
2955      UIkit.prototype._init = function (options) {
2956
2957        options = options || {};
2958        options.data = normalizeData(options, this.constructor.options);
2959
2960        this.$options = mergeOptions(this.constructor.options, options, this);
2961        this.$el = null;
2962        this.$props = {};
2963
2964        this._uid = uid++;
2965        this._initData();
2966        this._initMethods();
2967        this._initComputeds();
2968        this._callHook('created');
2969
2970        if (options.el) {
2971          this.$mount(options.el);
2972        }
2973      };
2974
2975      UIkit.prototype._initData = function () {
2976
2977        var ref = this.$options;
2978        var data = ref.data;if (data === void 0) data = {};
2979
2980        for (var key in data) {
2981          this.$props[key] = this[key] = data[key];
2982        }
2983      };
2984
2985      UIkit.prototype._initMethods = function () {
2986
2987        var ref = this.$options;
2988        var methods = ref.methods;
2989
2990        if (methods) {
2991          for (var key in methods) {
2992            this[key] = methods[key].bind(this);
2993          }
2994        }
2995      };
2996
2997      UIkit.prototype._initComputeds = function () {
2998
2999        var ref = this.$options;
3000        var computed = ref.computed;
3001
3002        this._computeds = {};
3003
3004        if (computed) {
3005          for (var key in computed) {
3006            registerComputed(this, key, computed[key]);
3007          }
3008        }
3009      };
3010
3011      UIkit.prototype._initProps = function (props) {
3012
3013        var key;
3014
3015        props = props || getProps(this.$options, this.$name);
3016
3017        for (key in props) {
3018          if (!isUndefined(props[key])) {
3019            this.$props[key] = props[key];
3020          }
3021        }
3022
3023        var exclude = [this.$options.computed, this.$options.methods];
3024        for (key in this.$props) {
3025          if (key in props && notIn(exclude, key)) {
3026            this[key] = this.$props[key];
3027          }
3028        }
3029      };
3030
3031      UIkit.prototype._initEvents = function () {
3032        var this$1 = this;
3033
3034        this._events = [];
3035
3036        var ref = this.$options;
3037        var events = ref.events;
3038
3039        if (events) {
3040
3041          events.forEach(function (event) {
3042
3043            if (!hasOwn(event, 'handler')) {
3044              for (var key in event) {
3045                registerEvent(this$1, event[key], key);
3046              }
3047            } else {
3048              registerEvent(this$1, event);
3049            }
3050          });
3051        }
3052      };
3053
3054      UIkit.prototype._unbindEvents = function () {
3055        this._events.forEach(function (unbind) {
3056          return unbind();
3057        });
3058        delete this._events;
3059      };
3060
3061      UIkit.prototype._initObserver = function () {
3062        var this$1 = this;
3063
3064        var ref = this.$options;
3065        var attrs = ref.attrs;
3066        var props = ref.props;
3067        var el = ref.el;
3068        if (this._observer || !props || attrs === false) {
3069          return;
3070        }
3071
3072        attrs = isArray(attrs) ? attrs : Object.keys(props);
3073
3074        this._observer = new MutationObserver(function (records) {
3075          var data = getProps(this$1.$options, this$1.$name);
3076          if (records.some(function (ref) {
3077            var attributeName = ref.attributeName;
3078
3079            var prop = attributeName.replace('data-', '');
3080            return (prop === this$1.$name ? attrs : [camelize(prop), camelize(attributeName)]).some(function (prop) {
3081              return !isUndefined(data[prop]) && data[prop] !== this$1.$props[prop];
3082            });
3083          })) {
3084            this$1.$reset();
3085          }
3086        });
3087
3088        var filter = attrs.map(function (key) {
3089          return hyphenate(key);
3090        }).concat(this.$name);
3091
3092        this._observer.observe(el, {
3093          attributes: true,
3094          attributeFilter: filter.concat(filter.map(function (key) {
3095            return "data-" + key;
3096          }))
3097        });
3098      };
3099
3100      function getProps(opts, name) {
3101
3102        var data$1 = {};
3103        var args = opts.args;if (args === void 0) args = [];
3104        var props = opts.props;if (props === void 0) props = {};
3105        var el = opts.el;
3106
3107        if (!props) {
3108          return data$1;
3109        }
3110
3111        for (var key in props) {
3112          var prop = hyphenate(key);
3113          var value = data(el, prop);
3114
3115          if (isUndefined(value)) {
3116            continue;
3117          }
3118
3119          value = props[key] === Boolean && value === '' ? true : coerce(props[key], value);
3120
3121          if (prop === 'target' && (!value || startsWith(value, '_'))) {
3122            continue;
3123          }
3124
3125          data$1[key] = value;
3126        }
3127
3128        var options = parseOptions(data(el, name), args);
3129
3130        for (var key$1 in options) {
3131          var prop$1 = camelize(key$1);
3132          if (props[prop$1] !== undefined) {
3133            data$1[prop$1] = coerce(props[prop$1], options[key$1]);
3134          }
3135        }
3136
3137        return data$1;
3138      }
3139
3140      function registerComputed(component, key, cb) {
3141        Object.defineProperty(component, key, {
3142
3143          enumerable: true,
3144
3145          get: function get$$1() {
3146
3147            var _computeds = component._computeds;
3148            var $props = component.$props;
3149            var $el = component.$el;
3150
3151            if (!hasOwn(_computeds, key)) {
3152              _computeds[key] = (cb.get || cb).call(component, $props, $el);
3153            }
3154
3155            return _computeds[key];
3156          },
3157
3158          set: function set$$1(value) {
3159
3160            var _computeds = component._computeds;
3161
3162            _computeds[key] = cb.set ? cb.set.call(component, value) : value;
3163
3164            if (isUndefined(_computeds[key])) {
3165              delete _computeds[key];
3166            }
3167          }
3168
3169        });
3170      }
3171
3172      function registerEvent(component, event, key) {
3173
3174        if (!isPlainObject(event)) {
3175          event = { name: key, handler: event };
3176        }
3177
3178        var name = event.name;
3179        var el = event.el;
3180        var handler = event.handler;
3181        var capture = event.capture;
3182        var passive = event.passive;
3183        var delegate = event.delegate;
3184        var filter = event.filter;
3185        var self = event.self;
3186        el = isFunction(el) ? el.call(component) : el || component.$el;
3187
3188        if (isArray(el)) {
3189          el.forEach(function (el) {
3190            return registerEvent(component, assign({}, event, { el: el }), key);
3191          });
3192          return;
3193        }
3194
3195        if (!el || filter && !filter.call(component)) {
3196          return;
3197        }
3198
3199        component._events.push(on(el, name, !delegate ? null : isString(delegate) ? delegate : delegate.call(component), isString(handler) ? component[handler] : handler.bind(component), { passive: passive, capture: capture, self: self }));
3200      }
3201
3202      function notIn(options, key) {
3203        return options.every(function (arr) {
3204          return !arr || !hasOwn(arr, key);
3205        });
3206      }
3207
3208      function coerce(type, value) {
3209
3210        if (type === Boolean) {
3211          return toBoolean(value);
3212        } else if (type === Number) {
3213          return toNumber(value);
3214        } else if (type === 'list') {
3215          return toList(value);
3216        }
3217
3218        return type ? type(value) : value;
3219      }
3220
3221      function normalizeData(ref, ref$1) {
3222        var data = ref.data;
3223        var args = ref$1.args;
3224        var props = ref$1.props;if (props === void 0) props = {};
3225
3226        data = isArray(data) ? !isEmpty(args) ? data.slice(0, args.length).reduce(function (data, value, index) {
3227          if (isPlainObject(value)) {
3228            assign(data, value);
3229          } else {
3230            data[args[index]] = value;
3231          }
3232          return data;
3233        }, {}) : undefined : data;
3234
3235        if (data) {
3236          for (var key in data) {
3237            if (isUndefined(data[key])) {
3238              delete data[key];
3239            } else {
3240              data[key] = props[key] ? coerce(props[key], data[key]) : data[key];
3241            }
3242          }
3243        }
3244
3245        return data;
3246      }
3247    }
3248
3249    function instanceAPI(UIkit) {
3250
3251      var DATA = UIkit.data;
3252
3253      UIkit.prototype.$create = function (component, element, data) {
3254        return UIkit[component](element, data);
3255      };
3256
3257      UIkit.prototype.$mount = function (el) {
3258
3259        var ref = this.$options;
3260        var name = ref.name;
3261
3262        if (!el[DATA]) {
3263          el[DATA] = {};
3264        }
3265
3266        if (el[DATA][name]) {
3267          return;
3268        }
3269
3270        el[DATA][name] = this;
3271
3272        this.$el = this.$options.el = this.$options.el || el;
3273
3274        if (within(el, document)) {
3275          this._callConnected();
3276        }
3277      };
3278
3279      UIkit.prototype.$reset = function () {
3280        this._callDisconnected();
3281        this._callConnected();
3282      };
3283
3284      UIkit.prototype.$destroy = function (removeEl) {
3285        if (removeEl === void 0) removeEl = false;
3286
3287        var ref = this.$options;
3288        var el = ref.el;
3289        var name = ref.name;
3290
3291        if (el) {
3292          this._callDisconnected();
3293        }
3294
3295        this._callHook('destroy');
3296
3297        if (!el || !el[DATA]) {
3298          return;
3299        }
3300
3301        delete el[DATA][name];
3302
3303        if (!isEmpty(el[DATA])) {
3304          delete el[DATA];
3305        }
3306
3307        if (removeEl) {
3308          _remove(this.$el);
3309        }
3310      };
3311
3312      UIkit.prototype.$emit = function (e) {
3313        this._callUpdate(e);
3314      };
3315
3316      UIkit.prototype.$update = function (element, e) {
3317        if (element === void 0) element = this.$el;
3318
3319        UIkit.update(element, e);
3320      };
3321
3322      UIkit.prototype.$getComponent = UIkit.getComponent;
3323
3324      var names = {};
3325      Object.defineProperties(UIkit.prototype, {
3326
3327        $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),
3328
3329        $name: {
3330
3331          get: function get$$1() {
3332            var ref = this.$options;
3333            var name = ref.name;
3334
3335            if (!names[name]) {
3336              names[name] = UIkit.prefix + hyphenate(name);
3337            }
3338
3339            return names[name];
3340          }
3341
3342        }
3343
3344      });
3345    }
3346
3347    function componentAPI(UIkit) {
3348
3349      var DATA = UIkit.data;
3350
3351      var components = {};
3352
3353      UIkit.component = function (name, options) {
3354
3355        var id = hyphenate(name);
3356
3357        name = camelize(id);
3358
3359        if (!options) {
3360
3361          if (isPlainObject(components[name])) {
3362            components[name] = UIkit.extend(components[name]);
3363          }
3364
3365          return components[name];
3366        }
3367
3368        UIkit[name] = function (element, data) {
3369          var i = arguments.length,
3370              argsArray = Array(i);
3371          while (i--) {
3372            argsArray[i] = arguments[i];
3373          }var component = UIkit.component(name);
3374
3375          return component.options.functional ? new component({ data: isPlainObject(element) ? element : [].concat(argsArray) }) : !element ? init(element) : $$(element).map(init)[0];
3376
3377          function init(element) {
3378
3379            var instance = UIkit.getComponent(element, name);
3380
3381            if (instance) {
3382              if (!data) {
3383                return instance;
3384              } else {
3385                instance.$destroy();
3386              }
3387            }
3388
3389            return new component({ el: element, data: data });
3390          }
3391        };
3392
3393        var opt = isPlainObject(options) ? assign({}, options) : options.options;
3394
3395        opt.name = name;
3396
3397        if (opt.install) {
3398          opt.install(UIkit, opt, name);
3399        }
3400
3401        if (UIkit._initialized && !opt.functional) {
3402          fastdom.read(function () {
3403            return UIkit[name]("[uk-" + id + "],[data-uk-" + id + "]");
3404          });
3405        }
3406
3407        return components[name] = isPlainObject(options) ? opt : options;
3408      };
3409
3410      UIkit.getComponents = function (element) {
3411        return element && element[DATA] || {};
3412      };
3413      UIkit.getComponent = function (element, name) {
3414        return UIkit.getComponents(element)[name];
3415      };
3416
3417      UIkit.connect = function (node) {
3418
3419        if (node[DATA]) {
3420          for (var name in node[DATA]) {
3421            node[DATA][name]._callConnected();
3422          }
3423        }
3424
3425        for (var i = 0; i < node.attributes.length; i++) {
3426
3427          var name$1 = getComponentName(node.attributes[i].name);
3428
3429          if (name$1 && name$1 in components) {
3430            UIkit[name$1](node);
3431          }
3432        }
3433      };
3434
3435      UIkit.disconnect = function (node) {
3436        for (var name in node[DATA]) {
3437          node[DATA][name]._callDisconnected();
3438        }
3439      };
3440    }
3441
3442    function getComponentName(attribute) {
3443      return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') ? camelize(attribute.replace('data-uk-', '').replace('uk-', '')) : false;
3444    }
3445
3446    var UIkit = function UIkit(options) {
3447      this._init(options);
3448    };
3449
3450    UIkit.util = util;
3451    UIkit.data = '__uikit__';
3452    UIkit.prefix = 'uk-';
3453    UIkit.options = {};
3454    UIkit.version = '3.5.7';
3455
3456    globalAPI(UIkit);
3457    hooksAPI(UIkit);
3458    stateAPI(UIkit);
3459    componentAPI(UIkit);
3460    instanceAPI(UIkit);
3461
3462    function Core(UIkit) {
3463
3464      inBrowser && ready(function () {
3465
3466        UIkit.update();
3467        on(window, 'load resize', function () {
3468          return UIkit.update(null, 'resize');
3469        });
3470        on(document, 'loadedmetadata load', function (ref) {
3471          var target = ref.target;
3472
3473          return UIkit.update(target, 'resize');
3474        }, true);
3475
3476        // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)
3477        var pending;
3478        on(window, 'scroll', function (e) {
3479
3480          if (pending) {
3481            return;
3482          }
3483          pending = true;
3484          fastdom.write(function () {
3485            return pending = false;
3486          });
3487
3488          UIkit.update(null, e.type);
3489        }, { passive: true, capture: true });
3490
3491        var started = 0;
3492        on(document, 'animationstart', function (ref) {
3493          var target = ref.target;
3494
3495          if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {
3496
3497            started++;
3498            css(document.body, 'overflowX', 'hidden');
3499            setTimeout(function () {
3500              if (! --started) {
3501                css(document.body, 'overflowX', '');
3502              }
3503            }, toMs(css(target, 'animationDuration')) + 100);
3504          }
3505        }, true);
3506
3507        var off;
3508        on(document, pointerDown, function (e) {
3509
3510          off && off();
3511
3512          if (!isTouch(e)) {
3513            return;
3514          }
3515
3516          // Handle Swipe Gesture
3517          var pos = getEventPos(e);
3518          var target = 'tagName' in e.target ? e.target : e.target.parentNode;
3519          off = once(document, pointerUp + " " + pointerCancel, function (e) {
3520
3521            var ref = getEventPos(e);
3522            var x = ref.x;
3523            var y = ref.y;
3524
3525            // swipe
3526            if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {
3527
3528              setTimeout(function () {
3529                trigger(target, 'swipe');
3530                trigger(target, "swipe" + swipeDirection(pos.x, pos.y, x, y));
3531              });
3532            }
3533          });
3534        }, { passive: true });
3535      });
3536    }
3537
3538    function swipeDirection(x1, y1, x2, y2) {
3539      return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down';
3540    }
3541
3542    function boot(UIkit) {
3543
3544      var connect = UIkit.connect;
3545      var disconnect = UIkit.disconnect;
3546
3547      if (!inBrowser || !window.MutationObserver) {
3548        return;
3549      }
3550
3551      fastdom.read(init);
3552
3553      function init() {
3554
3555        if (document.body) {
3556          apply(document.body, connect);
3557        }
3558
3559        new MutationObserver(function (mutations) {
3560          var updates = [];
3561          mutations.forEach(function (mutation) {
3562            return applyMutation(mutation, updates);
3563          });
3564          updates.forEach(function (el) {
3565            return UIkit.update(el);
3566          });
3567        }).observe(document, {
3568          childList: true,
3569          subtree: true,
3570          characterData: true,
3571          attributes: true
3572        });
3573
3574        UIkit._initialized = true;
3575      }
3576
3577      function applyMutation(mutation, updates) {
3578
3579        var target = mutation.target;
3580        var type = mutation.type;
3581
3582        var update = type !== 'attributes' ? applyChildList(mutation) : applyAttribute(mutation);
3583
3584        if (update && !updates.some(function (element) {
3585          return element.contains(target);
3586        })) {
3587          updates.push(target.contains ? target : target.parentNode); // IE 11 text node does not implement contains
3588        }
3589      }
3590
3591      function applyAttribute(ref) {
3592        var target = ref.target;
3593        var attributeName = ref.attributeName;
3594
3595        if (attributeName === 'href') {
3596          return true;
3597        }
3598
3599        var name = getComponentName(attributeName);
3600
3601        if (!name || !(name in UIkit)) {
3602          return;
3603        }
3604
3605        if (hasAttr(target, attributeName)) {
3606          UIkit[name](target);
3607          return true;
3608        }
3609
3610        var component = UIkit.getComponent(target, name);
3611
3612        if (component) {
3613          component.$destroy();
3614          return true;
3615        }
3616      }
3617
3618      function applyChildList(ref) {
3619        var addedNodes = ref.addedNodes;
3620        var removedNodes = ref.removedNodes;
3621
3622        for (var i = 0; i < addedNodes.length; i++) {
3623          apply(addedNodes[i], connect);
3624        }
3625
3626        for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {
3627          apply(removedNodes[i$1], disconnect);
3628        }
3629
3630        return true;
3631      }
3632    }
3633
3634    var Class = {
3635
3636      connected: function connected() {
3637        !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);
3638      }
3639
3640    };
3641
3642    var Togglable = {
3643
3644      props: {
3645        cls: Boolean,
3646        animation: 'list',
3647        duration: Number,
3648        origin: String,
3649        transition: String
3650      },
3651
3652      data: {
3653        cls: false,
3654        animation: [false],
3655        duration: 200,
3656        origin: false,
3657        transition: 'linear',
3658
3659        initProps: {
3660          overflow: '',
3661          height: '',
3662          paddingTop: '',
3663          paddingBottom: '',
3664          marginTop: '',
3665          marginBottom: ''
3666        },
3667
3668        hideProps: {
3669          overflow: 'hidden',
3670          height: 0,
3671          paddingTop: 0,
3672          paddingBottom: 0,
3673          marginTop: 0,
3674          marginBottom: 0
3675        }
3676
3677      },
3678
3679      computed: {
3680
3681        hasAnimation: function hasAnimation(ref) {
3682          var animation = ref.animation;
3683
3684          return !!animation[0];
3685        },
3686
3687        hasTransition: function hasTransition(ref) {
3688          var animation = ref.animation;
3689
3690          return this.hasAnimation && animation[0] === true;
3691        }
3692
3693      },
3694
3695      methods: {
3696
3697        toggleElement: function toggleElement(targets, show, animate) {
3698          var this$1 = this;
3699
3700          return Promise.all(toNodes(targets).map(function (el) {
3701            return new Promise(function (resolve) {
3702              return this$1._toggleElement(el, show, animate).then(resolve, noop);
3703            });
3704          }));
3705        },
3706
3707        isToggled: function isToggled(el) {
3708          var nodes = toNodes(el || this.$el);
3709          return this.cls ? hasClass(nodes, this.cls.split(' ')[0]) : !hasAttr(nodes, 'hidden');
3710        },
3711
3712        updateAria: function updateAria(el) {
3713          if (this.cls === false) {
3714            attr(el, 'aria-hidden', !this.isToggled(el));
3715          }
3716        },
3717
3718        _toggleElement: function _toggleElement(el, show, animate) {
3719          var this$1 = this;
3720
3721          show = isBoolean(show) ? show : Animation.inProgress(el) ? hasClass(el, 'uk-animation-leave') : Transition.inProgress(el) ? el.style.height === '0px' : !this.isToggled(el);
3722
3723          if (!trigger(el, "before" + (show ? 'show' : 'hide'), [this])) {
3724            return Promise.reject();
3725          }
3726
3727          var promise = (isFunction(animate) ? animate : animate === false || !this.hasAnimation ? this._toggle : this.hasTransition ? toggleHeight(this) : toggleAnimation(this))(el, show);
3728
3729          trigger(el, show ? 'show' : 'hide', [this]);
3730
3731          var final = function final() {
3732            trigger(el, show ? 'shown' : 'hidden', [this$1]);
3733            this$1.$update(el);
3734          };
3735
3736          return (promise || Promise.resolve()).then(final);
3737        },
3738
3739        _toggle: function _toggle(el, toggled) {
3740
3741          if (!el) {
3742            return;
3743          }
3744
3745          toggled = Boolean(toggled);
3746
3747          var changed;
3748          if (this.cls) {
3749            changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);
3750            changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);
3751          } else {
3752            changed = toggled === hasAttr(el, 'hidden');
3753            changed && attr(el, 'hidden', !toggled ? '' : null);
3754          }
3755
3756          $$('[autofocus]', el).some(function (el) {
3757            return isVisible(el) ? el.focus() || true : el.blur();
3758          });
3759
3760          this.updateAria(el);
3761
3762          if (changed) {
3763            trigger(el, 'toggled', [this]);
3764            this.$update(el);
3765          }
3766        }
3767
3768      }
3769
3770    };
3771
3772    function toggleHeight(ref) {
3773      var isToggled = ref.isToggled;
3774      var duration = ref.duration;
3775      var initProps = ref.initProps;
3776      var hideProps = ref.hideProps;
3777      var transition = ref.transition;
3778      var _toggle = ref._toggle;
3779
3780      return function (el, show) {
3781
3782        var inProgress = Transition.inProgress(el);
3783        var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;
3784        var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;
3785
3786        Transition.cancel(el);
3787
3788        if (!isToggled(el)) {
3789          _toggle(el, true);
3790        }
3791
3792        height(el, '');
3793
3794        // Update child components first
3795        fastdom.flush();
3796
3797        var endHeight = height(el) + (inProgress ? 0 : inner);
3798        height(el, currentHeight);
3799
3800        return (show ? Transition.start(el, assign({}, initProps, { overflow: 'hidden', height: endHeight }), Math.round(duration * (1 - currentHeight / endHeight)), transition) : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () {
3801          return _toggle(el, false);
3802        })).then(function () {
3803          return css(el, initProps);
3804        });
3805      };
3806    }
3807
3808    function toggleAnimation(cmp) {
3809      return function (el, show) {
3810
3811        Animation.cancel(el);
3812
3813        var animation = cmp.animation;
3814        var duration = cmp.duration;
3815        var _toggle = cmp._toggle;
3816
3817        if (show) {
3818          _toggle(el, true);
3819          return Animation.in(el, animation[0], duration, cmp.origin);
3820        }
3821
3822        return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(function () {
3823          return _toggle(el, false);
3824        });
3825      };
3826    }
3827
3828    var Accordion = {
3829
3830      mixins: [Class, Togglable],
3831
3832      props: {
3833        targets: String,
3834        active: null,
3835        collapsible: Boolean,
3836        multiple: Boolean,
3837        toggle: String,
3838        content: String,
3839        transition: String,
3840        offset: Number
3841      },
3842
3843      data: {
3844        targets: '> *',
3845        active: false,
3846        animation: [true],
3847        collapsible: true,
3848        multiple: false,
3849        clsOpen: 'uk-open',
3850        toggle: '> .uk-accordion-title',
3851        content: '> .uk-accordion-content',
3852        transition: 'ease',
3853        offset: 0
3854      },
3855
3856      computed: {
3857
3858        items: {
3859
3860          get: function get$$1(ref, $el) {
3861            var targets = ref.targets;
3862
3863            return $$(targets, $el);
3864          },
3865
3866          watch: function watch(items, prev) {
3867            var this$1 = this;
3868
3869            items.forEach(function (el) {
3870              return hide($(this$1.content, el), !hasClass(el, this$1.clsOpen));
3871            });
3872
3873            if (prev || hasClass(items, this.clsOpen)) {
3874              return;
3875            }
3876
3877            var active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0];
3878
3879            if (active) {
3880              this.toggle(active, false);
3881            }
3882          },
3883
3884          immediate: true
3885
3886        }
3887
3888      },
3889
3890      events: [{
3891
3892        name: 'click',
3893
3894        delegate: function delegate() {
3895          return this.targets + " " + this.$props.toggle;
3896        },
3897
3898        handler: function handler(e) {
3899          e.preventDefault();
3900          this.toggle(index($$(this.targets + " " + this.$props.toggle, this.$el), e.current));
3901        }
3902
3903      }],
3904
3905      methods: {
3906
3907        toggle: function toggle(item, animate) {
3908          var this$1 = this;
3909
3910          var items = [this.items[_getIndex(item, this.items)]];
3911          var activeItems = filter(this.items, "." + this.clsOpen);
3912
3913          if (!this.multiple && !includes(activeItems, items[0])) {
3914            items = items.concat(activeItems);
3915          }
3916
3917          if (!this.collapsible && activeItems.length < 2 && !filter(items, ":not(." + this.clsOpen + ")").length) {
3918            return;
3919          }
3920
3921          items.forEach(function (el) {
3922            return this$1.toggleElement(el, !hasClass(el, this$1.clsOpen), function (el, show) {
3923
3924              toggleClass(el, this$1.clsOpen, show);
3925
3926              var content = $("" + (el._wrapper ? '> * ' : '') + this$1.content, el);
3927
3928              if (animate === false || !this$1.hasTransition) {
3929                hide(content, !show);
3930                return;
3931              }
3932
3933              if (!el._wrapper) {
3934                el._wrapper = wrapAll(content, "<div" + (show ? ' hidden' : '') + ">");
3935              }
3936
3937              hide(content, false);
3938              return toggleHeight(this$1)(el._wrapper, show).then(function () {
3939                hide(content, !show);
3940                delete el._wrapper;
3941                unwrap(content);
3942
3943                if (show) {
3944                  var toggle = $(this$1.$props.toggle, el);
3945                  if (!isInView(toggle)) {
3946                    scrollIntoView(toggle, { offset: this$1.offset });
3947                  }
3948                }
3949              });
3950            });
3951          });
3952        }
3953
3954      }
3955
3956    };
3957
3958    function hide(el, hide) {
3959      attr(el, 'hidden', hide ? '' : null);
3960    }
3961
3962    var alert = {
3963
3964      mixins: [Class, Togglable],
3965
3966      args: 'animation',
3967
3968      props: {
3969        close: String
3970      },
3971
3972      data: {
3973        animation: [true],
3974        selClose: '.uk-alert-close',
3975        duration: 150,
3976        hideProps: assign({ opacity: 0 }, Togglable.data.hideProps)
3977      },
3978
3979      events: [{
3980
3981        name: 'click',
3982
3983        delegate: function delegate() {
3984          return this.selClose;
3985        },
3986
3987        handler: function handler(e) {
3988          e.preventDefault();
3989          this.close();
3990        }
3991
3992      }],
3993
3994      methods: {
3995
3996        close: function close() {
3997          var this$1 = this;
3998
3999          this.toggleElement(this.$el).then(function () {
4000            return this$1.$destroy(true);
4001          });
4002        }
4003
4004      }
4005
4006    };
4007
4008    var Video = {
4009
4010      args: 'autoplay',
4011
4012      props: {
4013        automute: Boolean,
4014        autoplay: Boolean
4015      },
4016
4017      data: {
4018        automute: false,
4019        autoplay: true
4020      },
4021
4022      computed: {
4023
4024        inView: function inView(ref) {
4025          var autoplay = ref.autoplay;
4026
4027          return autoplay === 'inview';
4028        }
4029
4030      },
4031
4032      connected: function connected() {
4033
4034        if (this.inView && !hasAttr(this.$el, 'preload')) {
4035          this.$el.preload = 'none';
4036        }
4037
4038        if (this.automute) {
4039          mute(this.$el);
4040        }
4041      },
4042
4043      update: {
4044
4045        read: function read() {
4046          return {
4047            visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',
4048            inView: this.inView && isInView(this.$el)
4049          };
4050        },
4051
4052        write: function write(ref) {
4053          var visible = ref.visible;
4054          var inView = ref.inView;
4055
4056          if (!visible || this.inView && !inView) {
4057            pause(this.$el);
4058          } else if (this.autoplay === true || this.inView && inView) {
4059            play(this.$el);
4060          }
4061        },
4062
4063        events: ['resize', 'scroll']
4064
4065      }
4066
4067    };
4068
4069    var cover = {
4070
4071      mixins: [Class, Video],
4072
4073      props: {
4074        width: Number,
4075        height: Number
4076      },
4077
4078      data: {
4079        automute: true
4080      },
4081
4082      update: {
4083
4084        read: function read() {
4085
4086          var el = this.$el;
4087          var ref = getPositionedParent(el) || el.parentNode;
4088          var height = ref.offsetHeight;
4089          var width = ref.offsetWidth;
4090          var dim = Dimensions.cover({
4091            width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,
4092            height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight
4093          }, {
4094            width: width + (width % 2 ? 1 : 0),
4095            height: height + (height % 2 ? 1 : 0)
4096          });
4097
4098          if (!dim.width || !dim.height) {
4099            return false;
4100          }
4101
4102          return dim;
4103        },
4104
4105        write: function write(ref) {
4106          var height = ref.height;
4107          var width = ref.width;
4108
4109          css(this.$el, { height: height, width: width });
4110        },
4111
4112        events: ['resize']
4113
4114      }
4115
4116    };
4117
4118    function getPositionedParent(el) {
4119      while (el = parent(el)) {
4120        if (css(el, 'position') !== 'static') {
4121          return el;
4122        }
4123      }
4124    }
4125
4126    var Position = {
4127
4128      props: {
4129        pos: String,
4130        offset: null,
4131        flip: Boolean,
4132        clsPos: String
4133      },
4134
4135      data: {
4136        pos: "bottom-" + (!isRtl ? 'left' : 'right'),
4137        flip: true,
4138        offset: false,
4139        clsPos: ''
4140      },
4141
4142      computed: {
4143
4144        pos: function pos(ref) {
4145          var pos = ref.pos;
4146
4147          return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');
4148        },
4149
4150        dir: function dir() {
4151          return this.pos[0];
4152        },
4153
4154        align: function align() {
4155          return this.pos[1];
4156        }
4157
4158      },
4159
4160      methods: {
4161
4162        positionAt: function positionAt(element, target, boundary) {
4163
4164          removeClasses(element, this.clsPos + "-(top|bottom|left|right)(-[a-z]+)?");
4165
4166          var node;
4167          var ref = this;
4168          var offset$1 = ref.offset;
4169          var axis = this.getAxis();
4170
4171          if (!isNumeric(offset$1)) {
4172            node = $(offset$1);
4173            offset$1 = node ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom'] : 0;
4174          }
4175
4176          var ref$1 = _positionAt(element, target, axis === 'x' ? flipPosition(this.dir) + " " + this.align : this.align + " " + flipPosition(this.dir), axis === 'x' ? this.dir + " " + this.align : this.align + " " + this.dir, axis === 'x' ? "" + (this.dir === 'left' ? -offset$1 : offset$1) : " " + (this.dir === 'top' ? -offset$1 : offset$1), null, this.flip, boundary).target;
4177          var x = ref$1.x;
4178          var y = ref$1.y;
4179
4180          this.dir = axis === 'x' ? x : y;
4181          this.align = axis === 'x' ? y : x;
4182
4183          toggleClass(element, this.clsPos + "-" + this.dir + "-" + this.align, this.offset === false);
4184        },
4185
4186        getAxis: function getAxis() {
4187          return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';
4188        }
4189
4190      }
4191
4192    };
4193
4194    var active;
4195
4196    var drop = {
4197
4198      mixins: [Position, Togglable],
4199
4200      args: 'pos',
4201
4202      props: {
4203        mode: 'list',
4204        toggle: Boolean,
4205        boundary: Boolean,
4206        boundaryAlign: Boolean,
4207        delayShow: Number,
4208        delayHide: Number,
4209        clsDrop: String
4210      },
4211
4212      data: {
4213        mode: ['click', 'hover'],
4214        toggle: '- *',
4215        boundary: inBrowser && window,
4216        boundaryAlign: false,
4217        delayShow: 0,
4218        delayHide: 800,
4219        clsDrop: false,
4220        animation: ['uk-animation-fade'],
4221        cls: 'uk-open'
4222      },
4223
4224      computed: {
4225
4226        boundary: function boundary(ref, $el) {
4227          var boundary = ref.boundary;
4228
4229          return query(boundary, $el);
4230        },
4231
4232        clsDrop: function clsDrop(ref) {
4233          var clsDrop = ref.clsDrop;
4234
4235          return clsDrop || "uk-" + this.$options.name;
4236        },
4237
4238        clsPos: function clsPos() {
4239          return this.clsDrop;
4240        }
4241
4242      },
4243
4244      created: function created() {
4245        this.tracker = new MouseTracker();
4246      },
4247
4248      connected: function connected() {
4249
4250        addClass(this.$el, this.clsDrop);
4251
4252        var ref = this.$props;
4253        var toggle = ref.toggle;
4254        this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {
4255          target: this.$el,
4256          mode: this.mode
4257        });
4258
4259        !this.toggle && trigger(this.$el, 'updatearia');
4260      },
4261
4262      disconnected: function disconnected() {
4263        if (this.isActive()) {
4264          active = null;
4265        }
4266      },
4267
4268      events: [{
4269
4270        name: 'click',
4271
4272        delegate: function delegate() {
4273          return "." + this.clsDrop + "-close";
4274        },
4275
4276        handler: function handler(e) {
4277          e.preventDefault();
4278          this.hide(false);
4279        }
4280
4281      }, {
4282
4283        name: 'click',
4284
4285        delegate: function delegate() {
4286          return 'a[href^="#"]';
4287        },
4288
4289        handler: function handler(ref) {
4290          var defaultPrevented = ref.defaultPrevented;
4291          var hash = ref.current.hash;
4292
4293          if (!defaultPrevented && hash && !within(hash, this.$el)) {
4294            this.hide(false);
4295          }
4296        }
4297
4298      }, {
4299
4300        name: 'beforescroll',
4301
4302        handler: function handler() {
4303          this.hide(false);
4304        }
4305
4306      }, {
4307
4308        name: 'toggle',
4309
4310        self: true,
4311
4312        handler: function handler(e, toggle) {
4313
4314          e.preventDefault();
4315
4316          if (this.isToggled()) {
4317            this.hide(false);
4318          } else {
4319            this.show(toggle, false);
4320          }
4321        }
4322
4323      }, {
4324
4325        name: 'toggleshow',
4326
4327        self: true,
4328
4329        handler: function handler(e, toggle) {
4330          e.preventDefault();
4331          this.show(toggle);
4332        }
4333
4334      }, {
4335
4336        name: 'togglehide',
4337
4338        self: true,
4339
4340        handler: function handler(e) {
4341          e.preventDefault();
4342          this.hide();
4343        }
4344
4345      }, {
4346
4347        name: pointerEnter,
4348
4349        filter: function filter() {
4350          return includes(this.mode, 'hover');
4351        },
4352
4353        handler: function handler(e) {
4354          if (!isTouch(e)) {
4355            this.clearTimers();
4356          }
4357        }
4358
4359      }, {
4360
4361        name: pointerLeave,
4362
4363        filter: function filter() {
4364          return includes(this.mode, 'hover');
4365        },
4366
4367        handler: function handler(e) {
4368          if (!isTouch(e) && e.relatedTarget) {
4369            this.hide();
4370          }
4371        }
4372
4373      }, {
4374
4375        name: 'toggled',
4376
4377        self: true,
4378
4379        handler: function handler() {
4380
4381          if (!this.isToggled()) {
4382            return;
4383          }
4384
4385          this.clearTimers();
4386          this.position();
4387        }
4388
4389      }, {
4390
4391        name: 'show',
4392
4393        self: true,
4394
4395        handler: function handler() {
4396          var this$1 = this;
4397
4398          active = this;
4399
4400          this.tracker.init();
4401          trigger(this.$el, 'updatearia');
4402
4403          once(this.$el, 'hide', on(document, pointerDown, function (ref) {
4404            var target = ref.target;
4405
4406            return !within(target, this$1.$el) && once(document, pointerUp + " " + pointerCancel + " scroll", function (ref) {
4407              var defaultPrevented = ref.defaultPrevented;
4408              var type = ref.type;
4409              var newTarget = ref.target;
4410
4411              if (!defaultPrevented && type === pointerUp && target === newTarget && !(this$1.toggle && within(target, this$1.toggle.$el))) {
4412                this$1.hide(false);
4413              }
4414            }, true);
4415          }), { self: true });
4416
4417          once(this.$el, 'hide', on(document, 'keydown', function (e) {
4418            if (e.keyCode === 27) {
4419              e.preventDefault();
4420              this$1.hide(false);
4421            }
4422          }), { self: true });
4423        }
4424
4425      }, {
4426
4427        name: 'beforehide',
4428
4429        self: true,
4430
4431        handler: function handler() {
4432          this.clearTimers();
4433        }
4434
4435      }, {
4436
4437        name: 'hide',
4438
4439        handler: function handler(ref) {
4440          var target = ref.target;
4441
4442          if (this.$el !== target) {
4443            active = active === null && within(target, this.$el) && this.isToggled() ? this 
4443: active;
4444            return;
4445          }
4446
4447          active = this.isActive() ? null : active;
4448          trigger(this.$el, 'updatearia');
4449          this.tracker.cancel();
4450        }
4451
4452      }, {
4453
4454        name: 'updatearia',
4455
4456        self: true,
4457
4458        handler: function handler(e, toggle) {
4459
4460          e.preventDefault();
4461
4462          this.updateAria(this.$el);
4463
4464          if (toggle || this.toggle) {
4465            attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled());
4466            toggleClass(this.toggle.$el, this.cls, this.isToggled());
4467          }
4468        }
4469      }],
4470
4471      update: {
4472
4473        write: function write() {
4474
4475          if (this.isToggled() && !Animation.inProgress(this.$el)) {
4476            this.position();
4477          }
4478        },
4479
4480        events: ['resize']
4481
4482      },
4483
4484      methods: {
4485
4486        show: function show(toggle, delay) {
4487          var this$1 = this;
4488          if (toggle === void 0) toggle = this.toggle;
4489          if (delay === void 0) delay = true;
4490
4491          if (this.isToggled() && toggle && this.toggle && toggle.$el !== this.toggle.$el) {
4492            this.hide(false);
4493          }
4494
4495          this.toggle = toggle;
4496
4497          this.clearTimers();
4498
4499          if (this.isActive()) {
4500            return;
4501          }
4502
4503          if (active) {
4504
4505            if (delay && active.isDelaying) {
4506              this.showTimer = setTimeout(this.show, 10);
4507              return;
4508            }
4509
4510            var prev;
4511            while (active && prev !== active && !within(this.$el, active.$el)) {
4512              prev = active;
4513              active.hide(false);
4514            }
4515          }
4516
4517          this.showTimer = setTimeout(function () {
4518            return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true);
4519          }, delay && this.delayShow || 0);
4520        },
4521
4522        hide: function hide(delay) {
4523          var this$1 = this;
4524          if (delay === void 0) delay = true;
4525
4526          var hide = function hide() {
4527            return this$1.toggleElement(this$1.$el, false, false);
4528          };
4529
4530          this.clearTimers();
4531
4532          this.isDelaying = getPositionedElements(this.$el).some(function (el) {
4533            return this$1.tracker.movesTo(el);
4534          });
4535
4536          if (delay && this.isDelaying) {
4537            this.hideTimer = setTimeout(this.hide, 50);
4538          } else if (delay && this.delayHide) {
4539            this.hideTimer = setTimeout(hide, this.delayHide);
4540          } else {
4541            hide();
4542          }
4543        },
4544
4545        clearTimers: function clearTimers() {
4546          clearTimeout(this.showTimer);
4547          clearTimeout(this.hideTimer);
4548          this.showTimer = null;
4549          this.hideTimer = null;
4550          this.isDelaying = false;
4551        },
4552
4553        isActive: function isActive() {
4554          return active === this;
4555        },
4556
4557        position: function position() {
4558
4559          removeClass(this.$el, this.clsDrop + "-stack");
4560          toggleClass(this.$el, this.clsDrop + "-boundary", this.boundaryAlign);
4561
4562          var boundary = offset(this.boundary);
4563          var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);
4564
4565          if (this.align === 'justify') {
4566            var prop = this.getAxis() === 'y' ? 'width' : 'height';
4567            css(this.$el, prop, alignTo[prop]);
4568          } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {
4569            addClass(this.$el, this.clsDrop + "-stack");
4570          }
4571
4572          this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);
4573        }
4574
4575      }
4576
4577    };
4578
4579    function getPositionedElements(el) {
4580      var result = [];
4581      apply(el, function (el) {
4582        return css(el, 'position') !== 'static' && result.push(el);
4583      });
4584      return result;
4585    }
4586
4587    var formCustom = {
4588
4589      mixins: [Class],
4590
4591      args: 'target',
4592
4593      props: {
4594        target: Boolean
4595      },
4596
4597      data: {
4598        target: false
4599      },
4600
4601      computed: {
4602
4603        input: function input(_, $el) {
4604          return $(selInput, $el);
4605        },
4606
4607        state: function state() {
4608          return this.input.nextElementSibling;
4609        },
4610
4611        target: function target(ref, $el) {
4612          var target = ref.target;
4613
4614          return target && (target === true && this.input.parentNode === $el && this.input.nextElementSibling || query(target, $el));
4615        }
4616
4617      },
4618
4619      update: function update() {
4620
4621        var ref = this;
4622        var target = ref.target;
4623        var input = ref.input;
4624
4625        if (!target) {
4626          return;
4627        }
4628
4629        var option;
4630        var prop = isInput(target) ? 'value' : 'textContent';
4631        var prev = target[prop];
4632        var value = input.files && input.files[0] ? input.files[0].name : matches(input, 'select') && (option = $$('option', input).filter(function (el) {
4633          return el.selected;
4634        })[0]) // eslint-disable-line prefer-destructuring
4635        ? option.textContent : input.value;
4636
4637        if (prev !== value) {
4638          target[prop] = value;
4639        }
4640      },
4641
4642      events: [{
4643        name: 'change',
4644
4645        handler: function handler() {
4646          this.$update();
4647        }
4648      }, {
4649        name: 'reset',
4650
4651        el: function el() {
4652          return closest(this.$el, 'form');
4653        },
4654
4655        handler: function handler() {
4656          this.$update();
4657        }
4658      }]
4659
4660    };
4661
4662    // Deprecated
4663    var gif = {
4664
4665      update: {
4666
4667        read: function read(data) {
4668
4669          var inview = isInView(this.$el);
4670
4671          if (!inview || data.isInView === inview) {
4672            return false;
4673          }
4674
4675          data.isInView = inview;
4676        },
4677
4678        write: function write() {
4679          this.$el.src = '' + this.$el.src; // force self-assign
4680        },
4681
4682        events: ['scroll', 'resize']
4683      }
4684
4685    };
4686
4687    var Margin = {
4688
4689      props: {
4690        margin: String,
4691        firstColumn: Boolean
4692      },
4693
4694      data: {
4695        margin: 'uk-margin-small-top',
4696        firstColumn: 'uk-first-column'
4697      },
4698
4699      update: {
4700
4701        read: function read() {
4702
4703          var rows = getRows(this.$el.children);
4704
4705          return {
4706            rows: rows,
4707            columns: getColumns(rows)
4708          };
4709        },
4710
4711        write: function write(ref) {
4712          var this$1 = this;
4713          var columns = ref.columns;
4714          var rows = ref.rows;
4715
4716          rows.forEach(function (row, i) {
4717            return row.forEach(function (el) {
4718              toggleClass(el, this$1.margin, i !== 0);
4719              toggleClass(el, this$1.firstColumn, includes(columns[0], el));
4720            });
4721          });
4722        },
4723
4724        events: ['resize']
4725
4726      }
4727
4728    };
4729
4730    function getRows(items) {
4731      return sortBy$1(items, 'top', 'bottom');
4732    }
4733
4734    function getColumns(rows) {
4735
4736      var columns = [[]];
4737
4738      rows.forEach(function (row) {
4739        return sortBy$1(row, 'left', 'right').forEach(function (column, i) {
4740          return columns[i] = !columns[i] ? column : columns[i].concat(column);
4741        });
4742      });
4743
4744      return isRtl ? columns.reverse() : columns;
4745    }
4746
4747    function sortBy$1(items, startProp, endProp) {
4748
4749      var sorted = [[]];
4750
4751      for (var i = 0; i < items.length; i++) {
4752
4753        var el = items[i];
4754
4755        if (!isVisible(el)) {
4756          continue;
4757        }
4758
4759        var dim = getOffset(el);
4760
4761        for (var j = sorted.length - 1; j >= 0; j--) {
4762
4763          var current = sorted[j];
4764
4765          if (!current[0]) {
4766            current.push(el);
4767            break;
4768          }
4769
4770          var startDim = void 0;
4771          if (current[0].offsetParent === el.offsetParent) {
4772            startDim = getOffset(current[0]);
4773          } else {
4774            dim = getOffset(el, true);
4775            startDim = getOffset(current[0], true);
4776          }
4777
4778          if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {
4779            sorted.push([el]);
4780            break;
4781          }
4782
4783          if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {
4784            current.push(el);
4785            break;
4786          }
4787
4788          if (j === 0) {
4789            sorted.unshift([el]);
4790            break;
4791          }
4792        }
4793      }
4794
4795      return sorted;
4796    }
4797
4798    function getOffset(element, offset) {
4799      var assign;
4800
4801      if (offset === void 0) offset = false;
4802
4803      var offsetTop = element.offsetTop;
4804      var offsetLeft = element.offsetLeft;
4805      var offsetHeight = element.offsetHeight;
4806      var offsetWidth = element.offsetWidth;
4807
4808      if (offset) {
4809        assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1];
4810      }
4811
4812      return {
4813        top: offsetTop,
4814        left: offsetLeft,
4815        bottom: offsetTop + offsetHeight,
4816        right: offsetLeft + offsetWidth
4817      };
4818    }
4819
4820    var grid = {
4821
4822      extends: Margin,
4823
4824      mixins: [Class],
4825
4826      name: 'grid',
4827
4828      props: {
4829        masonry: Boolean,
4830        parallax: Number
4831      },
4832
4833      data: {
4834        margin: 'uk-grid-margin',
4835        clsStack: 'uk-grid-stack',
4836        masonry: false,
4837        parallax: 0
4838      },
4839
4840      connected: function connected() {
4841        this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');
4842      },
4843
4844      update: [{
4845
4846        write: function write(ref) {
4847          var columns = ref.columns;
4848
4849          toggleClass(this.$el, this.clsStack, columns.length < 2);
4850        },
4851
4852        events: ['resize']
4853
4854      }, {
4855
4856        read: function read(ref) {
4857          var columns = ref.columns;
4858          var rows = ref.rows;
4859
4860          var nodes = _children(this.$el);
4861
4862          if (!nodes.length || !this.masonry && !this.parallax) {
4863            return false;
4864          }
4865
4866          var transitionInProgress = nodes.some(Transition.inProgress);
4867          var translates = false;
4868
4869          var columnHeights = getColumnHeights(columns);
4870          var margin = getMarginTop(nodes, this.margin) * (rows.length - 1);
4871          var elHeight = Math.max.apply(Math, columnHeights) + margin;
4872
4873          if (this.masonry) {
4874            columns = columns.map(function (column) {
4875              return sortBy(column, 'offsetTop');
4876            });
4877            translates = getTranslates(rows, columns);
4878          }
4879
4880          var padding = Math.abs(this.parallax);
4881          if (padding) {
4882            padding = columnHeights.reduce(function (newPadding, hgt, i) {
4883              return Math.max(newPadding, hgt + margin + (i % 2 ? padding : padding / 8) - elHeight);
4884            }, 0);
4885          }
4886
4887          return { padding: padding, columns: columns, translates: translates, height: transitionInProgress ? false : this.masonry ? elHeight : '' };
4888        },
4889
4890        write: function write(ref) {
4891          var height = ref.height;
4892          var padding = ref.padding;
4893
4894          css(this.$el, 'paddingBottom', padding || '');
4895          height !== false && css(this.$el, 'height', height);
4896        },
4897
4898        events: ['resize']
4899
4900      }, {
4901
4902        read: function read(ref) {
4903          var height$1 = ref.height;
4904
4905          return {
4906            scrolled: this.parallax ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * Math.abs(this.parallax) : false
4907          };
4908        },
4909
4910        write: function write(ref) {
4911          var columns = ref.columns;
4912          var scrolled = ref.scrolled;
4913          var translates = ref.translates;
4914
4915          if (scrolled === false && !translates) {
4916            return;
4917          }
4918
4919          columns.forEach(function (column, i) {
4920            return column.forEach(function (el, j) {
4921              return css(el, 'transform', !scrolled && !translates ? '' : "translateY(" + ((translates && -translates[i][j]) + (scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)) + "px)");
4922            });
4923          });
4924        },
4925
4926        events: ['scroll', 'resize']
4927
4928      }]
4929
4930    };
4931
4932    function getTranslates(rows, columns) {
4933
4934      var rowHeights = rows.map(function (row) {
4935        return Math.max.apply(Math, row.map(function (el) {
4936          return el.offsetHeight;
4937        }));
4938      });
4939
4940      return columns.map(function (elements) {
4941        var prev = 0;
4942        return elements.map(function (element, row) {
4943          return prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0;
4944        });
4945      });
4946    }
4947
4948    function getMarginTop(nodes, cls) {
4949
4950      var ref = nodes.filter(function (el) {
4951        return hasClass(el, cls);
4952      });
4953      var node = ref[0];
4954
4955      return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));
4956    }
4957
4958    function getColumnHeights(columns) {
4959      return columns.map(function (column) {
4960        return column.reduce(function (sum, el) {
4961          return sum + el.offsetHeight;
4962        }, 0);
4963      });
4964    }
4965
4966    // IE 11 fix (min-height on a flex container won't apply to its flex items)
4967    var FlexBug = isIE ? {
4968
4969      props: {
4970        selMinHeight: String
4971      },
4972
4973      data: {
4974        selMinHeight: false,
4975        forceHeight: false
4976      },
4977
4978      computed: {
4979
4980        elements: function elements(ref, $el) {
4981          var selMinHeight = ref.selMinHeight;
4982
4983          return selMinHeight ? $$(selMinHeight, $el) : [$el];
4984        }
4985
4986      },
4987
4988      update: [{
4989
4990        read: function read() {
4991          css(this.elements, 'height', '');
4992        },
4993
4994        order: -5,
4995
4996        events: ['resize']
4997
4998      }, {
4999
5000        write: function write() {
5001          var this$1 = this;
5002
5003          this.elements.forEach(function (el) {
5004            var height = toFloat(css(el, 'minHeight'));
5005            if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust(el, 'height', 'content-box')) >= el.offsetHeight)) {
5006              css(el, 'height', height);
5007            }
5008          });
5009        },
5010
5011        order: 5,
5012
5013        events: ['resize']
5014
5015      }]
5016
5017    } : {};
5018
5019    var heightMatch = {
5020
5021      mixins: [FlexBug],
5022
5023      args: 'target',
5024
5025      props: {
5026        target: String,
5027        row: Boolean
5028      },
5029
5030      data: {
5031        target: '> *',
5032        row: true,
5033        forceHeight: true
5034      },
5035
5036      computed: {
5037
5038        elements: function elements(ref, $el) {
5039          var target = ref.target;
5040
5041          return $$(target, $el);
5042        }
5043
5044      },
5045
5046      update: {
5047
5048        read: function read() {
5049          return {
5050            rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)
5051          };
5052        },
5053
5054        write: function write(ref) {
5055          var rows = ref.rows;
5056
5057          rows.forEach(function (ref) {
5058            var heights = ref.heights;
5059            var elements = ref.elements;
5060
5061            return elements.forEach(function (el, i) {
5062              return css(el, 'minHeight', heights[i]);
5063            });
5064          });
5065        },
5066
5067        events: ['resize']
5068
5069      }
5070
5071    };
5072
5073    function match(elements) {
5074      var assign;
5075
5076      if (elements.length < 2) {
5077        return { heights: [''], elements: elements };
5078      }
5079
5080      var ref = getHeights(elements);
5081      var heights = ref.heights;
5082      var max = ref.max;
5083      var hasMinHeight = elements.some(function (el) {
5084        return el.style.minHeight;
5085      });
5086      var hasShrunk = elements.some(function (el, i) {
5087        return !el.style.minHeight && heights[i] < max;
5088      });
5089
5090      if (hasMinHeight && hasShrunk) {
5091        css(elements, 'minHeight', '');
5092        assign = getHeights(elements), heights = assign.heights, max = assign.max;
5093      }
5094
5095      heights = elements.map(function (el, i) {
5096        return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max;
5097      });
5098
5099      return { heights: heights, elements: elements };
5100    }
5101
5102    function getHeights(elements) {
5103      var heights = elements.map(function (el) {
5104        return offset(el).height - boxModelAdjust(el, 'height', 'content-box');
5105      });
5106      var max = Math.max.apply(null, heights);
5107
5108      return { heights: heights, max: max };
5109    }
5110
5111    var heightViewport = {
5112
5113      mixins: [FlexBug],
5114
5115      props: {
5116        expand: Boolean,
5117        offsetTop: Boolean,
5118        offsetBottom: Boolean,
5119        minHeight: Number
5120      },
5121
5122      data: {
5123        expand: false,
5124        offsetTop: false,
5125        offsetBottom: false,
5126        minHeight: 0
5127      },
5128
5129      update: {
5130
5131        read: function read(ref) {
5132          var prev = ref.minHeight;
5133
5134          if (!isVisible(this.$el)) {
5135            return false;
5136          }
5137
5138          var minHeight = '';
5139          var box = boxModelAdjust(this.$el, 'height', 'content-box');
5140
5141          if (this.expand) {
5142
5143            this.$el.dataset.heightExpand = '';
5144
5145            if ($('[data-height-expand]') !== this.$el) {
5146              return false;
5147            }
5148
5149            minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || '';
5150          } else {
5151
5152            // on mobile devices (iOS and Android) window.innerHeight !== 100vh
5153            minHeight = 'calc(100vh';
5154
5155            if (this.offsetTop) {
5156
5157              var ref$1 = offset(this.$el);
5158              var top = ref$1.top;
5159              minHeight += top > 0 && top < height(window) / 2 ? " - " + top + "px" : '';
5160            }
5161
5162            if (this.offsetBottom === true) {
5163
5164              minHeight += " - " + offsetHeight(this.$el.nextElementSibling) + "px";
5165            } else if (isNumeric(this.offsetBottom)) {
5166
5167              minHeight += " - " + this.offsetBottom + "vh";
5168            } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {
5169
5170              minHeight += " - " + toFloat(this.offsetBottom) + "px";
5171            } else if (isString(this.offsetBottom)) {
5172
5173              minHeight += " - " + offsetHeight(query(this.offsetBottom, this.$el)) + "px";
5174            }
5175
5176            minHeight += (box ? " - " + box + "px" : '') + ")";
5177          }
5178
5179          return { minHeight: minHeight, prev: prev };
5180        },
5181
5182        write: function write(ref) {
5183          var minHeight = ref.minHeight;
5184          var prev = ref.prev;
5185
5186          css(this.$el, { minHeight: minHeight });
5187
5188          if (minHeight !== prev) {
5189            this.$update(this.$el, 'resize');
5190          }
5191
5192          if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {
5193            css(this.$el, 'minHeight', this.minHeight);
5194          }
5195        },
5196
5197        events: ['resize']
5198
5199      }
5200
5201    };
5202
5203    function offsetHeight(el) {
5204      return el && offset(el).height || 0;
5205    }
5206
5207    var SVG = {
5208
5209      args: 'src',
5210
5211      props: {
5212        id: Boolean,
5213        icon: String,
5214        src: String,
5215        style: String,
5216        width: Number,
5217        height: Number,
5218        ratio: Number,
5219        class: String,
5220        strokeAnimation: Boolean,
5221        focusable: Boolean, // IE 11
5222        attributes: 'list'
5223      },
5224
5225      data: {
5226        ratio: 1,
5227        include: ['style', 'class', 'focusable'],
5228        class: '',
5229        strokeAnimation: false
5230      },
5231
5232      beforeConnect: function beforeConnect() {
5233        this.class += ' uk-svg';
5234      },
5235
5236      connected: function connected() {
5237        var this$1 = this;
5238        var assign;
5239
5240        if (!this.icon && includes(this.src, '#')) {
5241          assign = this.src.split('#'), this.src = assign[0], this.icon = assign[1];
5242        }
5243
5244        this.svg = this.getSvg().then(function (el) {
5245          this$1.applyAttributes(el);
5246          return this$1.svgEl = insertSVG(el, this$1.$el);
5247        }, noop);
5248      },
5249
5250      disconnected: function disconnected() {
5251        var this$1 = this;
5252
5253        if (isVoidElement(this.$el)) {
5254          attr(this.$el, 'hidden', null);
5255        }
5256
5257        if (this.svg) {
5258          this.svg.then(function (svg) {
5259            return (!this$1._connected || svg !== this$1.svgEl) && _remove(svg);
5260          }, noop);
5261        }
5262
5263        this.svg = this.svgEl = null;
5264      },
5265
5266      update: {
5267
5268        read: function read() {
5269          return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));
5270        },
5271
5272        write: function write() {
5273          applyAnimation(this.svgEl);
5274        },
5275
5276        type: ['resize']
5277
5278      },
5279
5280      methods: {
5281
5282        getSvg: function getSvg() {
5283          var this$1 = this;
5284
5285          return loadSVG(this.src).then(function (svg) {
5286            return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.');
5287          });
5288        },
5289
5290        applyAttributes: function applyAttributes(el) {
5291          var this$1 = this;
5292
5293          for (var prop in this.$options.props) {
5294            if (this[prop] && includes(this.include, prop)) {
5295              attr(el, prop, this[prop]);
5296            }
5297          }
5298
5299          for (var attribute in this.attributes) {
5300            var ref = this.attributes[attribute].split(':', 2);
5301            var prop$1 = ref[0];
5302            var value = ref[1];
5303            attr(el, prop$1, value);
5304          }
5305
5306          if (!this.id) {
5307            removeAttr(el, 'id');
5308          }
5309
5310          var props = ['width', 'height'];
5311          var dimensions = [this.width, this.height];
5312
5313          if (!dimensions.some(function (val) {
5314            return val;
5315          })) {
5316            dimensions = props.map(function (prop) {
5317              return attr(el, prop);
5318            });
5319          }
5320
5321          var viewBox = attr(el, 'viewBox');
5322          if (viewBox && !dimensions.some(function (val) {
5323            return val;
5324          })) {
5325            dimensions = viewBox.split(' ').slice(2);
5326          }
5327
5328          dimensions.forEach(function (val, i) {
5329            val = (val | 0) * this$1.ratio;
5330            val && attr(el, props[i], val);
5331
5332            if (val && !dimensions[i ^ 1]) {
5333              removeAttr(el, props[i ^ 1]);
5334            }
5335          });
5336
5337          attr(el, 'data-svg', this.icon || this.src);
5338        }
5339
5340      }
5341
5342    };
5343
5344    var svgs = {};
5345
5346    function loadSVG(src) {
5347
5348      if (svgs[src]) {
5349        return svgs[src];
5350      }
5351
5352      return svgs[src] = new Promise(function (resolve, reject) {
5353
5354        if (!src) {
5355          reject();
5356          return;
5357        }
5358
5359        if (startsWith(src, 'data:')) {
5360          resolve(decodeURIComponent(src.split(',')[1]));
5361        } else {
5362
5363          ajax(src).then(function (xhr) {
5364            return resolve(xhr.response);
5365          }, function () {
5366            return reject('SVG not found.');
5367          });
5368        }
5369      });
5370    }
5371
5372    function parseSVG(svg, icon) {
5373
5374      if (icon && includes(svg, '<symbol')) {
5375        svg = parseSymbols(svg, icon) || svg;
5376      }
5377
5378      svg = $(svg.substr(svg.indexOf('<svg')));
5379      return svg && svg.hasChildNodes() && svg;
5380    }
5381
5382    var symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g;
5383    var symbols = {};
5384
5385    function parseSymbols(svg, icon) {
5386
5387      if (!symbols[svg]) {
5388
5389        symbols[svg] = {};
5390
5391        symbolRe.lastIndex = 0;
5392
5393        var match;
5394        while (match = symbolRe.exec(svg)) {
5395          symbols[svg][match[3]] = "<svg xmlns=\"http://www.w3.org/2000/svg\"" + match[1] + "svg>";
5396        }
5397      }
5398
5399      return symbols[svg][icon];
5400    }
5401
5402    function applyAnimation(el) {
5403
5404      var length = getMaxPathLength(el);
5405
5406      if (length) {
5407        el.style.setProperty('--uk-animation-stroke', length);
5408      }
5409    }
5410
5411    function getMaxPathLength(el) {
5412      return Math.ceil(Math.max.apply(Math, [0].concat($$('[stroke]', el).map(function (stroke) {
5413        try {
5414          return stroke.getTotalLength();
5415        } catch (e) {
5416          return 0;
5417        }
5418      }))));
5419    }
5420
5421    function insertSVG(el, root) {
5422
5423      if (isVoidElement(root) || root.tagName === 'CANVAS') {
5424
5425        attr(root, 'hidden', true);
5426
5427        var next = root.nextElementSibling;
5428        return equals(el, next) ? next : after(root, el);
5429      }
5430
5431      var last = root.lastElementChild;
5432      return equals(el, last) ? last : append(root, el);
5433    }
5434
5435    function equals(el, other) {
5436      return attr(el, 'data-svg') === attr(other, 'data-svg');
5437    }
5438
5439    var closeIcon = "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>";
5440
5441    var closeLarge = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>";
5442
5443    var marker = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>";
5444
5445    var navbarToggleIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>";
5446
5447    var overlayIcon = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>";
5448
5449    var paginationNext = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>";
5450
5451    var paginationPrevious = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>";
5452
5453    var searchIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>";
5454
5455    var searchLarge = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>";
5456
5457    var searchNavbar = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>";
5458
5459    var slidenavNext = "<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>";
5460
5461    var slidenavNextLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>";
5462
5463    var slidenavPrevious = "<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>";
5464
5465    var slidenavPreviousLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>";
5466
5467    var spinner = "<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>";
5468
5469    var totop = "<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>";
5470
5471    var icons = {
5472      spinner: spinner,
5473      totop: totop,
5474      marker: marker,
5475      'close-icon': closeIcon,
5476      'close-large': closeLarge,
5477      'navbar-toggle-icon': navbarToggleIcon,
5478      'overlay-icon': overlayIcon,
5479      'pagination-next': paginationNext,
5480      'pagination-previous': paginationPrevious,
5481      'search-icon': searchIcon,
5482      'search-large': searchLarge,
5483      'search-navbar': searchNavbar,
5484      'slidenav-next': slidenavNext,
5485      'slidenav-next-large': slidenavNextLarge,
5486      'slidenav-previous': slidenavPrevious,
5487      'slidenav-previous-large': slidenavPreviousLarge
5488    };
5489
5490    var Icon = {
5491
5492      install: install,
5493
5494      extends: SVG,
5495
5496      args: 'icon',
5497
5498      props: ['icon'],
5499
5500      data: {
5501        include: ['focusable']
5502      },
5503
5504      isIcon: true,
5505
5506      beforeConnect: function beforeConnect() {
5507        addClass(this.$el, 'uk-icon');
5508      },
5509
5510      methods: {
5511
5512        getSvg: function getSvg() {
5513
5514          var icon = getIcon(this.icon);
5515
5516          if (!icon) {
5517            return Promise.reject('Icon not found.');
5518          }
5519
5520          return Promise.resolve(icon);
5521        }
5522
5523      }
5524
5525    };
5526
5527    var IconComponent = {
5528
5529      args: false,
5530
5531      extends: Icon,
5532
5533      data: function data(vm) {
5534        return {
5535          icon: hyphenate(vm.constructor.options.name)
5536        };
5537      },
5538
5539      beforeConnect: function beforeConnect() {
5540        addClass(this.$el, this.$name);
5541      }
5542
5543    };
5544
5545    var Slidenav = {
5546
5547      extends: IconComponent,
5548
5549      beforeConnect: function beforeConnect() {
5550        addClass(this.$el, 'uk-slidenav');
5551      },
5552
5553      computed: {
5554
5555        icon: function icon(ref, $el) {
5556          var icon = ref.icon;
5557
5558          return hasClass($el, 'uk-slidenav-large') ? icon + "-large" : icon;
5559        }
5560
5561      }
5562
5563    };
5564
5565    var Search = {
5566
5567      extends: IconComponent,
5568
5569      computed: {
5570
5571        icon: function icon(ref, $el) {
5572          var icon = ref.icon;
5573
5574          return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length ? 'search-large' : parents($el, '.uk-search-navbar').length ? 'search-navbar' : icon;
5575        }
5576
5577      }
5578
5579    };
5580
5581    var Close = {
5582
5583      extends: IconComponent,
5584
5585      computed: {
5586
5587        icon: function icon() {
5588          return "close-" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon');
5589        }
5590
5591      }
5592
5593    };
5594
5595    var Spinner = {
5596
5597      extends: IconComponent,
5598
5599      connected: function connected() {
5600        var this$1 = this;
5601
5602        this.svg.then(function (svg) {
5603          return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio);
5604        }, noop);
5605      }
5606
5607    };
5608
5609    var parsed = {};
5610    function install(UIkit) {
5611      UIkit.icon.add = function (name, svg) {
5612        var obj;
5613
5614        var added = isString(name) ? (obj = {}, obj[name] = svg, obj) : name;
5615        each(added, function (svg, name) {
5616          icons[name] = svg;
5617          delete parsed[name];
5618        });
5619
5620        if (UIkit._initialized) {
5621          apply(document.body, function (el) {
5622            return each(UIkit.getComponents(el), function (cmp) {
5623              cmp.$options.isIcon && cmp.icon in added && cmp.$reset();
5624            });
5625          });
5626        }
5627      };
5628    }
5629
5630    function getIcon(icon) {
5631
5632      if (!icons[icon]) {
5633        return null;
5634      }
5635
5636      if (!parsed[icon]) {
5637        parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim());
5638      }
5639
5640      return parsed[icon].cloneNode(true);
5641    }
5642
5643    function applyRtl(icon) {
5644      return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;
5645    }
5646
5647    var img = {
5648
5649      args: 'dataSrc',
5650
5651      props: {
5652        dataSrc: String,
5653        dataSrcset: Boolean,
5654        sizes: String,
5655        width: Number,
5656        height: Number,
5657        offsetTop: String,
5658        offsetLeft: String,
5659        target: String
5660      },
5661
5662      data: {
5663        dataSrc: '',
5664        dataSrcset: false,
5665        sizes: false,
5666        width: false,
5667        height: false,
5668        offsetTop: '50vh',
5669        offsetLeft: 0,
5670        target: false
5671      },
5672
5673      computed: {
5674
5675        cacheKey: function cacheKey(ref) {
5676          var dataSrc = ref.dataSrc;
5677
5678          return this.$name + "." + dataSrc;
5679        },
5680
5681        width: function width(ref) {
5682          var width = ref.width;
5683          var dataWidth = ref.dataWidth;
5684
5685          return width || dataWidth;
5686        },
5687
5688        height: function height(ref) {
5689          var height = ref.height;
5690          var dataHeight = ref.dataHeight;
5691
5692          return height || dataHeight;
5693        },
5694
5695        sizes: function sizes(ref) {
5696          var sizes = ref.sizes;
5697          var dataSizes = ref.dataSizes;
5698
5699          return sizes || dataSizes;
5700        },
5701
5702        isImg: function isImg(_, $el) {
5703          return _isImg($el);
5704        },
5705
5706        target: {
5707
5708          get: function get$$1(ref) {
5709            var target = ref.target;
5710
5711            return [this.$el].concat(queryAll(target, this.$el));
5712          },
5713
5714          watch: function watch() {
5715            this.observe();
5716          }
5717
5718        },
5719
5720        offsetTop: function offsetTop(ref) {
5721          var offsetTop = ref.offsetTop;
5722
5723          return toPx(offsetTop, 'height');
5724        },
5725
5726        offsetLeft: function offsetLeft(ref) {
5727          var offsetLeft = ref.offsetLeft;
5728
5729          return toPx(offsetLeft, 'width');
5730        }
5731
5732      },
5733
5734      connected: function connected() {
5735
5736        if (storage[this.cacheKey]) {
5737          setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);
5738        } else if (this.isImg && this.width && this.height) {
5739          setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));
5740        }
5741
5742        this.observer = new IntersectionObserver(this.load, {
5743          rootMargin: this.offsetTop + "px " + this.offsetLeft + "px"
5744        });
5745
5746        requestAnimationFrame(this.observe);
5747      },
5748
5749      disconnected: function disconnected() {
5750        this.observer.disconnect();
5751      },
5752
5753      update: {
5754
5755        read: function read(ref) {
5756          var this$1 = this;
5757          var image = ref.image;
5758
5759          if (!image && document.readyState === 'complete') {
5760            this.load(this.observer.takeRecords());
5761          }
5762
5763          if (this.isImg) {
5764            return false;
5765          }
5766
5767          image && image.then(function (img) {
5768            return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img));
5769          });
5770        },
5771
5772        write: function write(data) {
5773
5774          if (this.dataSrcset && window.devicePixelRatio !== 1) {
5775
5776            var bgSize = css(this.$el, 'backgroundSize');
5777            if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
5778              data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
5779              css(this.$el, 'backgroundSize', data.bgSize + "px");
5780            }
5781          }
5782        },
5783
5784        events: ['resize']
5785
5786      },
5787
5788      methods: {
5789
5790        load: function load(entries) {
5791          var this$1 = this;
5792
5793          // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
5794          if (!entries.some(function (entry) {
5795            return isUndefined(entry.isIntersecting) || entry.isIntersecting;
5796          })) {
5797            return;
5798          }
5799
5800          this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {
5801
5802            setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);
5803            storage[this$1.cacheKey] = currentSrc(img);
5804            return img;
5805          }, function (e) {
5806            return trigger(this$1.$el, new e.constructor(e.type, e));
5807          });
5808
5809          this.observer.disconnect();
5810        },
5811
5812        observe: function observe() {
5813          var this$1 = this;
5814
5815          if (this._connected && !this._data.image) {
5816            this.target.forEach(function (el) {
5817              return this$1.observer.observe(el);
5818            });
5819          }
5820        }
5821
5822      }
5823
5824    };
5825
5826    function setSrcAttrs(el, src, srcset, sizes) {
5827
5828      if (_isImg(el)) {
5829        sizes && (el.sizes = sizes);
5830        srcset && (el.srcset = srcset);
5831        src && (el.src = src);
5832      } else if (src) {
5833
5834        var change = !includes(el.style.backgroundImage, src);
5835        if (change) {
5836          css(el, 'backgroundImage', "url(" + escape(src) + ")");
5837          trigger(el, createEvent('load', false));
5838        }
5839      }
5840    }
5841
5842    function getPlaceholderImage(width, height, sizes) {
5843      var assign;
5844
5845      if (sizes) {
5846        assign = Dimensions.ratio({ width: width, height: height }, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height;
5847      }
5848
5849      return "data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" + width + "\" height=\"" + height + "\"></svg>";
5850    }
5851
5852    var sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
5853    function sizesToPixel(sizes) {
5854      var matches;
5855
5856      sizesRe.lastIndex = 0;
5857
5858      while (matches = sizesRe.exec(sizes)) {
5859        if (!matches[1] || window.matchMedia(matches[1]).matches) {
5860          matches = evaluateSize(matches[2]);
5861          break;
5862        }
5863      }
5864
5865      return matches || '100vw';
5866    }
5867
5868    var sizeRe = /\d+(?:\w+|%)/g;
5869    var additionRe = /[+-]?(\d+)/g;
5870    function evaluateSize(size) {
5871      return startsWith(size, 'calc') ? size.substring(5, size.length - 1).replace(sizeRe, function (size) {
5872        return toPx(size);
5873      }).replace(/ /g, '').match(additionRe).reduce(function (a, b) {
5874        return a + +b;
5875      }, 0) : size;
5876    }
5877
5878    var srcSetRe = /\s+\d+w\s*(?:,|$)/g;
5879    function getSourceSize(srcset, sizes) {
5880      var srcSize = toPx(sizesToPixel(sizes));
5881      var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) {
5882        return a - b;
5883      });
5884
5885      return descriptors.filter(function (size) {
5886        return size >= srcSize;
5887      })[0] || descriptors.pop() || '';
5888    }
5889
5890    function _isImg(el) {
5891      return el.tagName === 'IMG';
5892    }
5893
5894    function currentSrc(el) {
5895      return el.currentSrc || el.src;
5896    }
5897
5898    var key = '__test__';
5899    var storage;
5900
5901    // workaround for Safari's private browsing mode and accessing sessionStorage in Blink
5902    try {
5903      storage = window.sessionStorage || {};
5904      storage[key] = 1;
5905      delete storage[key];
5906    } catch (e) {
5907      storage = {};
5908    }
5909
5910    var Media = {
5911
5912      props: {
5913        media: Boolean
5914      },
5915
5916      data: {
5917        media: false
5918      },
5919
5920      computed: {
5921
5922        matchMedia: function matchMedia() {
5923          var media = toMedia(this.media);
5924          return !media || window.matchMedia(media).matches;
5925        }
5926
5927      }
5928
5929    };
5930
5931    function toMedia(value) {
5932
5933      if (isString(value)) {
5934        if (value[0] === '@') {
5935          var name = "breakpoint-" + value.substr(1);
5936          value = toFloat(getCssVar(name));
5937        } else if (isNaN(value)) {
5938          return value;
5939        }
5940      }
5941
5942      return value && !isNaN(value) ? "(min-width: " + value + "px)" : false;
5943    }
5944
5945    var leader = {
5946
5947      mixins: [Class, Media],
5948
5949      props: {
5950        fill: String
5951      },
5952
5953      data: {
5954        fill: '',
5955        clsWrapper: 'uk-leader-fill',
5956        clsHide: 'uk-leader-hide',
5957        attrFill: 'data-fill'
5958      },
5959
5960      computed: {
5961
5962        fill: function fill(ref) {
5963          var fill = ref.fill;
5964
5965          return fill || getCssVar('leader-fill-content');
5966        }
5967
5968      },
5969
5970      connected: function connected() {
5971        var assign;
5972
5973        assign = wrapInner(this.$el, "<span class=\"" + this.clsWrapper + "\">"), this.wrapper = assign[0];
5974      },
5975
5976      disconnected: function disconnected() {
5977        unwrap(this.wrapper.childNodes);
5978      },
5979
5980      update: {
5981
5982        read: function read(ref) {
5983          var changed = ref.changed;
5984          var width = ref.width;
5985
5986          var prev = width;
5987
5988          width = Math.floor(this.$el.offsetWidth / 2);
5989
5990          return {
5991            width: width,
5992            fill: this.fill,
5993            changed: changed || prev !== width,
5994            hide: !this.matchMedia
5995          };
5996        },
5997
5998        write: function write(data) {
5999
6000          toggleClass(this.wrapper, this.clsHide, data.hide);
6001
6002          if (data.changed) {
6003            data.changed = false;
6004            attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));
6005          }
6006        },
6007
6008        events: ['resize']
6009
6010      }
6011
6012    };
6013
6014    var Container = {
6015
6016      props: {
6017        container: Boolean
6018      },
6019
6020      data: {
6021        container: true
6022      },
6023
6024      computed: {
6025
6026        container: function container(ref) {
6027          var container = ref.container;
6028
6029          return container === true && this.$container || container && $(container);
6030        }
6031
6032      }
6033
6034    };
6035
6036    var active$1 = [];
6037
6038    var Modal = {
6039
6040      mixins: [Class, Container, Togglable],
6041
6042      props: {
6043        selPanel: String,
6044        selClose: String,
6045        escClose: Boolean,
6046        bgClose: Boolean,
6047        stack: Boolean
6048      },
6049
6050      data: {
6051        cls: 'uk-open',
6052        escClose: true,
6053        bgClose: true,
6054        overlay: true,
6055        stack: false
6056      },
6057
6058      computed: {
6059
6060        panel: function panel(ref, $el) {
6061          var selPanel = ref.selPanel;
6062
6063          return $(selPanel, $el);
6064        },
6065
6066        transitionElement: function transitionElement() {
6067          return this.panel;
6068        },
6069
6070        bgClose: function bgClose(ref) {
6071          var bgClose = ref.bgClose;
6072
6073          return bgClose && this.panel;
6074        }
6075
6076      },
6077
6078      beforeDisconnect: function beforeDisconnect() {
6079        if (this.isToggled()) {
6080          this.toggleElement(this.$el, false, false);
6081        }
6082      },
6083
6084      events: [{
6085
6086        name: 'click',
6087
6088        delegate: function delegate() {
6089          return this.selClose;
6090        },
6091
6092        handler: function handler(e) {
6093          e.preventDefault();
6094          this.hide();
6095        }
6096
6097      }, {
6098
6099        name: 'toggle',
6100
6101        self: true,
6102
6103        handler: function handler(e) {
6104
6105          if (e.defaultPrevented) {
6106            return;
6107          }
6108
6109          e.preventDefault();
6110
6111          if (this.isToggled() === includes(active$1, this)) {
6112            this.toggle();
6113          }
6114        }
6115
6116      }, {
6117        name: 'beforeshow',
6118
6119        self: true,
6120
6121        handler: function handler(e) {
6122
6123          if (includes(active$1, this)) {
6124            return false;
6125          }
6126
6127          if (!this.stack && active$1.length) {
6128            Promise.all(active$1.map(function (modal) {
6129              return modal.hide();
6130            })).then(this.show);
6131            e.preventDefault();
6132          } else {
6133            active$1.push(this);
6134          }
6135        }
6136
6137      }, {
6138
6139        name: 'show',
6140
6141        self: true,
6142
6143        handler: function handler() {
6144          var this$1 = this;
6145
6146          if (width(window) - width(document) && this.overlay) {
6147            css(document.body, 'overflowY', 'scroll');
6148          }
6149
6150          if (this.stack) {
6151            css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active$1.length);
6152          }
6153
6154          addClass(document.documentElement, this.clsPage);
6155
6156          if (this.bgClose) {
6157            once(this.$el, 'hide', on(document, pointerDown, function (ref) {
6158              var target = ref.target;
6159
6160              if (last(active$1) !== this$1 || this$1.overlay && !within(target, this$1.$el) || within(target, this$1.panel)) {
6161                return;
6162              }
6163
6164              once(document, pointerUp + " " + pointerCancel + " scroll", function (ref) {
6165                var defaultPrevented = ref.defaultPrevented;
6166                var type = ref.type;
6167                var newTarget = ref.target;
6168
6169                if (!defaultPrevented && type === pointerUp && target === newTarget) {
6170                  this$1.hide();
6171                }
6172              }, true);
6173            }), { self: true });
6174          }
6175
6176          if (this.escClose) {
6177            once(this.$el, 'hide', on(document, 'keydown', function (e) {
6178              if (e.keyCode === 27 && last(active$1) === this$1) {
6179                e.preventDefault();
6180                this$1.hide();
6181              }
6182            }), { self: true });
6183          }
6184        }
6185
6186      }, {
6187
6188        name: 'hidden',
6189
6190        self: true,
6191
6192        handler: function handler() {
6193          var this$1 = this;
6194
6195          active$1.splice(active$1.indexOf(this), 1);
6196
6197          if (!active$1.length) {
6198            css(document.body, 'overflowY', '');
6199          }
6200
6201          css(this.$el, 'zIndex', '');
6202
6203          if (!active$1.some(function (modal) {
6204            return modal.clsPage === this$1.clsPage;
6205          })) {
6206            removeClass(document.documentElement, this.clsPage);
6207          }
6208        }
6209
6210      }],
6211
6212      methods: {
6213
6214        toggle: function toggle() {
6215          return this.isToggled() ? this.hide() : this.show();
6216        },
6217
6218        show: function show() {
6219          var this$1 = this;
6220
6221          if (this.container && this.$el.parentNode !== this.container) {
6222            append(this.container, this.$el);
6223            return new Promise(function (resolve) {
6224              return requestAnimationFrame(function () {
6225                return this$1.show().then(resolve);
6226              });
6227            });
6228          }
6229
6230          return this.toggleElement(this.$el, true, animate$1(this));
6231        },
6232
6233        hide: function hide() {
6234          return this.toggleElement(this.$el, false, animate$1(this));
6235        }
6236
6237      }
6238
6239    };
6240
6241    function animate$1(ref) {
6242      var transitionElement = ref.transitionElement;
6243      var _toggle = ref._toggle;
6244
6245      return function (el, show) {
6246        return new Promise(function (resolve, reject) {
6247          return once(el, 'show hide', function () {
6248            el._reject && el._reject();
6249            el._reject = reject;
6250
6251            _toggle(el, show);
6252
6253            var off = once(transitionElement, 'transitionstart', function () {
6254              once(transitionElement, 'transitionend transitioncancel', resolve, { self: true });
6255              clearTimeout(timer);
6256            }, { self: true });
6257
6258            var timer = setTimeout(function () {
6259              off();
6260              resolve();
6261            }, toMs(css(transitionElement, 'transitionDuration')));
6262          });
6263        });
6264      };
6265    }
6266
6267    var modal = {
6268
6269      install: install$1,
6270
6271      mixins: [Modal],
6272
6273      data: {
6274        clsPage: 'uk-modal-page',
6275        selPanel: '.uk-modal-dialog',
6276        selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'
6277      },
6278
6279      events: [{
6280        name: 'show',
6281
6282        self: true,
6283
6284        handler: function handler() {
6285
6286          if (hasClass(this.panel, 'uk-margin-auto-vertical')) {
6287            addClass(this.$el, 'uk-flex');
6288          } else {
6289            css(this.$el, 'display', 'block');
6290          }
6291
6292          height(this.$el); // force reflow
6293        }
6294      }, {
6295        name: 'hidden',
6296
6297        self: true,
6298
6299        handler: function handler() {
6300
6301          css(this.$el, 'display', '');
6302          removeClass(this.$el, 'uk-flex');
6303        }
6304      }]
6305
6306    };
6307
6308    function install$1(ref) {
6309      var modal = ref.modal;
6310
6311      modal.dialog = function (content, options) {
6312
6313        var dialog = modal("<div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">" + content + "</div> </div>", options);
6314
6315        dialog.show();
6316
6317        on(dialog.$el, 'hidden', function () {
6318          return Promise.resolve().then(function () {
6319            return dialog.$destroy(true);
6320          });
6321        }, { self: true });
6322
6323        return dialog;
6324      };
6325
6326      modal.alert = function (message, options) {
6327        return openDialog(function (ref) {
6328          var labels = ref.labels;
6329
6330          return "<div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" + labels.ok + "</button> </div>";
6331        }, options, function (deferred) {
6332          return deferred.resolve();
6333        });
6334      };
6335
6336      modal.confirm = function (message, options) {
6337        return openDialog(function (ref) {
6338          var labels = ref.labels;
6339
6340          return "<form> <div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + labels.cancel + "</button> <button class=\"uk-button uk-button-primary\" autofocus>" + labels.ok + "</button> </div> </form>";
6341        }, options, function (deferred) {
6342          return deferred.reject();
6343        });
6344      };
6345
6346      modal.prompt = function (message, value, options) {
6347        return openDialog(function (ref) {
6348          var labels = ref.labels;
6349
6350          return "<form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>" + (isString(message) ? message : html(message)) + "</label> <input class=\"uk-input\" value=\"" + (value || '') + "\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + labels.cancel + "</button> <button class=\"uk-button uk-button-primary\">" + labels.ok + "</button> </div> </form>";
6351        }, options, function (deferred) {
6352          return deferred.resolve(null);
6353        }, function (dialog) {
6354          return $('input', dialog.$el).value;
6355        });
6356      };
6357
6358      modal.labels = {
6359        ok: 'Ok',
6360        cancel: 'Cancel'
6361      };
6362
6363      function openDialog(tmpl, options, hideFn, submitFn) {
6364
6365        options = assign({ bgClose: false, escClose: true, labels: modal.labels }, options);
6366
6367        var dialog = modal.dialog(tmpl(options), options);
6368        var deferred = new Deferred();
6369
6370        var resolved = false;
6371
6372        on(dialog.$el, 'submit', 'form', function (e) {
6373          e.preventDefault();
6374          deferred.resolve(submitFn && submitFn(dialog));
6375          resolved = true;
6376          dialog.hide();
6377        });
6378
6379        on(dialog.$el, 'hide', function () {
6380          return !resolved && hideFn(deferred);
6381        });
6382
6383        deferred.promise.dialog = dialog;
6384
6385        return deferred.promise;
6386      }
6387    }
6388
6389    var nav = {
6390
6391      extends: Accordion,
6392
6393      data: {
6394        targets: '> .uk-parent',
6395        toggle: '> a',
6396        content: '> ul'
6397      }
6398
6399    };
6400
6401    var navbar = {
6402
6403      mixins: [Class, FlexBug],
6404
6405      props: {
6406        dropdown: String,
6407        mode: 'list',
6408        align: String,
6409        offset: Number,
6410        boundary: Boolean,
6411        boundaryAlign: Boolean,
6412        clsDrop: String,
6413        delayShow: Number,
6414        delayHide: Number,
6415        dropbar: Boolean,
6416        dropbarMode: String,
6417        dropbarAnchor: Boolean,
6418        duration: Number
6419      },
6420
6421      data: {
6422        dropdown: '.uk-navbar-nav > li',
6423        align: !isRtl ? 'left' : 'right',
6424        clsDrop: 'uk-navbar-dropdown',
6425        mode: undefined,
6426        offset: undefined,
6427        delayShow: undefined,
6428        delayHide: undefined,
6429        boundaryAlign: undefined,
6430        flip: 'x',
6431        boundary: true,
6432        dropbar: false,
6433        dropbarMode: 'slide',
6434        dropbarAnchor: false,
6435        duration: 200,
6436        forceHeight: true,
6437        selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'
6438      },
6439
6440      computed: {
6441
6442        boundary: function boundary(ref, $el) {
6443          var boundary = ref.boundary;
6444          var boundaryAlign = ref.boundaryAlign;
6445
6446          return boundary === true || boundaryAlign ? $el : boundary;
6447        },
6448
6449        dropbarAnchor: function dropbarAnchor(ref, $el) {
6450          var dropbarAnchor = ref.dropbarAnchor;
6451
6452          return query(dropbarAnchor, $el);
6453        },
6454
6455        pos: function pos(ref) {
6456          var align = ref.align;
6457
6458          return "bottom-" + align;
6459        },
6460
6461        dropbar: {
6462
6463          get: function get$$1(ref) {
6464            var dropbar = ref.dropbar;
6465
6466            if (!dropbar) {
6467              return null;
6468            }
6469
6470            dropbar = this._dropbar || query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el);
6471
6472            return dropbar ? dropbar : this._dropbar = $('<div></div>');
6473          },
6474
6475          watch: function watch(dropbar) {
6476            addClass(dropbar, 'uk-navbar-dropbar');
6477          },
6478
6479          immediate: true
6480
6481        },
6482
6483        dropdowns: {
6484
6485          get: function get$$1(ref, $el) {
6486            var dropdown = ref.dropdown;
6487            var clsDrop = ref.clsDrop;
6488
6489            return $$(dropdown + " ." + clsDrop, $el);
6490          },
6491
6492          watch: function watch(dropdowns) {
6493            var this$1 = this;
6494
6495            this.$create('drop', dropdowns.filter(function (el) {
6496              return !this$1.getDropdown(el);
6497            }), assign({}, this.$props, { boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset }));
6498          },
6499
6500          immediate: true
6501
6502        }
6503
6504      },
6505
6506      disconnected: function disconnected() {
6507        this.dropbar && _remove(this.dropbar);
6508        delete this._dropbar;
6509      },
6510
6511      events: [{
6512        name: 'mouseover',
6513
6514        delegate: function delegate() {
6515          return this.dropdown;
6516        },
6517
6518        handler: function handler(ref) {
6519          var current = ref.current;
6520
6521          var active = this.getActive();
6522          if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {
6523            active.hide(false);
6524          }
6525        }
6526
6527      }, {
6528        name: 'mouseleave',
6529
6530        el: function el() {
6531          return this.dropbar;
6532        },
6533
6534        handler: function handler() {
6535          var active = this.getActive();
6536
6537          if (active && !this.dropdowns.some(function (el) {
6538            return matches(el, ':hover');
6539          })) {
6540            active.hide();
6541          }
6542        }
6543      }, {
6544        name: 'beforeshow',
6545
6546        capture: true,
6547
6548        filter: function filter() {
6549          return this.dropbar;
6550        },
6551
6552        handler: function handler() {
6553
6554          if (!this.dropbar.parentNode) {
6555            after(this.dropbarAnchor || this.$el, this.dropbar);
6556          }
6557        }
6558      }, {
6559        name: 'show',
6560
6561        filter: function filter() {
6562          return this.dropbar;
6563        },
6564
6565        handler: function handler(_, ref) {
6566          var $el = ref.$el;
6567          var dir = ref.dir;
6568
6569          if (this.dropbarMode === 'slide') {
6570            addClass(this.dropbar, 'uk-navbar-dropbar-slide');
6571          }
6572
6573          this.clsDrop && addClass($el, this.clsDrop + "-dropbar");
6574
6575          if (dir === 'bottom') {
6576            this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);
6577          }
6578        }
6579      }, {
6580        name: 'beforehide',
6581
6582        filter: function filter() {
6583          return this.dropbar;
6584        },
6585
6586        handler: function handler(e, ref) {
6587          var $el = ref.$el;
6588
6589          var active = this.getActive();
6590
6591          if (matches(this.dropbar, ':hover') && active && active.$el === $el) {
6592            e.preventDefault();
6593          }
6594        }
6595      }, {
6596        name: 'hide',
6597
6598        filter: function filter() {
6599          return this.dropbar;
6600        },
6601
6602        handler: function handler(_, ref) {
6603          var $el = ref.$el;
6604
6605          var active = this.getActive();
6606
6607          if (!active || active && active.$el === $el) {
6608            this.transitionTo(0);
6609          }
6610        }
6611      }],
6612
6613      methods: {
6614
6615        getActive: function getActive() {
6616          var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) {
6617            return drop && drop.isActive();
6618          });
6619          var active = ref[0];
6620          return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;
6621        },
6622
6623        transitionTo: function transitionTo(newHeight, el) {
6624          var this$1 = this;
6625
6626          var ref = this;
6627          var dropbar = ref.dropbar;
6628          var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;
6629
6630          el = oldHeight < newHeight && el;
6631
6632          css(el, 'clip', "rect(0," + el.offsetWidth + "px," + oldHeight + "px,0
6632)");
6633
6634          height(dropbar, oldHeight);
6635
6636          Transition.cancel([el, dropbar]);
6637          return Promise.all([Transition.start(dropbar, { height: newHeight }, this.duration), Transition.start(el, { clip: "rect(0," + el.offsetWidth + "px," + newHeight + "px,0)" }, this.duration)]).catch(noop).then(function () {
6638            css(el, { clip: '' });
6639            this$1.$update(dropbar);
6640          });
6641        },
6642
6643        getDropdown: function getDropdown(el) {
6644          return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');
6645        }
6646
6647      }
6648
6649    };
6650
6651    var offcanvas = {
6652
6653      mixins: [Modal],
6654
6655      args: 'mode',
6656
6657      props: {
6658        mode: String,
6659        flip: Boolean,
6660        overlay: Boolean
6661      },
6662
6663      data: {
6664        mode: 'slide',
6665        flip: false,
6666        overlay: false,
6667        clsPage: 'uk-offcanvas-page',
6668        clsContainer: 'uk-offcanvas-container',
6669        selPanel: '.uk-offcanvas-bar',
6670        clsFlip: 'uk-offcanvas-flip',
6671        clsContainerAnimation: 'uk-offcanvas-container-animation',
6672        clsSidebarAnimation: 'uk-offcanvas-bar-animation',
6673        clsMode: 'uk-offcanvas',
6674        clsOverlay: 'uk-offcanvas-overlay',
6675        selClose: '.uk-offcanvas-close',
6676        container: false
6677      },
6678
6679      computed: {
6680
6681        clsFlip: function clsFlip(ref) {
6682          var flip = ref.flip;
6683          var clsFlip = ref.clsFlip;
6684
6685          return flip ? clsFlip : '';
6686        },
6687
6688        clsOverlay: function clsOverlay(ref) {
6689          var overlay = ref.overlay;
6690          var clsOverlay = ref.clsOverlay;
6691
6692          return overlay ? clsOverlay : '';
6693        },
6694
6695        clsMode: function clsMode(ref) {
6696          var mode = ref.mode;
6697          var clsMode = ref.clsMode;
6698
6699          return clsMode + "-" + mode;
6700        },
6701
6702        clsSidebarAnimation: function clsSidebarAnimation(ref) {
6703          var mode = ref.mode;
6704          var clsSidebarAnimation = ref.clsSidebarAnimation;
6705
6706          return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;
6707        },
6708
6709        clsContainerAnimation: function clsContainerAnimation(ref) {
6710          var mode = ref.mode;
6711          var clsContainerAnimation = ref.clsContainerAnimation;
6712
6713          return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;
6714        },
6715
6716        transitionElement: function transitionElement(ref) {
6717          var mode = ref.mode;
6718
6719          return mode === 'reveal' ? this.panel.parentNode : this.panel;
6720        }
6721
6722      },
6723
6724      events: [{
6725
6726        name: 'click',
6727
6728        delegate: function delegate() {
6729          return 'a[href^="#"]';
6730        },
6731
6732        handler: function handler(ref) {
6733          var hash = ref.current.hash;
6734          var defaultPrevented = ref.defaultPrevented;
6735
6736          if (!defaultPrevented && hash && $(hash, document.body)) {
6737            this.hide();
6738          }
6739        }
6740
6741      }, {
6742        name: 'touchstart',
6743
6744        passive: true,
6745
6746        el: function el() {
6747          return this.panel;
6748        },
6749
6750        handler: function handler(ref) {
6751          var targetTouches = ref.targetTouches;
6752
6753          if (targetTouches.length === 1) {
6754            this.clientY = targetTouches[0].clientY;
6755          }
6756        }
6757
6758      }, {
6759        name: 'touchmove',
6760
6761        self: true,
6762        passive: false,
6763
6764        filter: function filter() {
6765          return this.overlay;
6766        },
6767
6768        handler: function handler(e) {
6769          e.cancelable && e.preventDefault();
6770        }
6771
6772      }, {
6773        name: 'touchmove',
6774
6775        passive: false,
6776
6777        el: function el() {
6778          return this.panel;
6779        },
6780
6781        handler: function handler(e) {
6782
6783          if (e.targetTouches.length !== 1) {
6784            return;
6785          }
6786
6787          var clientY = event.targetTouches[0].clientY - this.clientY;
6788          var ref = this.panel;
6789          var scrollTop = ref.scrollTop;
6790          var scrollHeight = ref.scrollHeight;
6791          var clientHeight = ref.clientHeight;
6792
6793          if (clientHeight >= scrollHeight || scrollTop === 0 && clientY > 0 || scrollHeight - scrollTop <= clientHeight && clientY < 0) {
6794            e.cancelable && e.preventDefault();
6795          }
6796        }
6797
6798      }, {
6799        name: 'show',
6800
6801        self: true,
6802
6803        handler: function handler() {
6804
6805          if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) {
6806            wrapAll(this.panel, '<div>');
6807            addClass(this.panel.parentNode, this.clsMode);
6808          }
6809
6810          css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');
6811          addClass(document.body, this.clsContainer, this.clsFlip);
6812          css(document.body, 'touch-action', 'pan-y pinch-zoom');
6813          css(this.$el, 'display', 'block');
6814          addClass(this.$el, this.clsOverlay);
6815          addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');
6816
6817          height(document.body); // force reflow
6818          addClass(document.body, this.clsContainerAnimation);
6819
6820          this.clsContainerAnimation && suppressUserScale();
6821        }
6822      }, {
6823        name: 'hide',
6824
6825        self: true,
6826
6827        handler: function handler() {
6828          removeClass(document.body, this.clsContainerAnimation);
6829          css(document.body, 'touch-action', '');
6830        }
6831      }, {
6832        name: 'hidden',
6833
6834        self: true,
6835
6836        handler: function handler() {
6837
6838          this.clsContainerAnimation && resumeUserScale();
6839
6840          if (this.mode === 'reveal') {
6841            unwrap(this.panel);
6842          }
6843
6844          removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);
6845          removeClass(this.$el, this.clsOverlay);
6846          css(this.$el, 'display', '');
6847          removeClass(document.body, this.clsContainer, this.clsFlip);
6848
6849          css(document.documentElement, 'overflowY', '');
6850        }
6851      }, {
6852        name: 'swipeLeft swipeRight',
6853
6854        handler: function handler(e) {
6855
6856          if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {
6857            this.hide();
6858          }
6859        }
6860      }]
6861
6862    };
6863
6864    // Chrome in responsive mode zooms page upon opening offcanvas
6865    function suppressUserScale() {
6866      getViewport$1().content += ',user-scalable=0';
6867    }
6868
6869    function resumeUserScale() {
6870      var viewport = getViewport$1();
6871      viewport.content = viewport.content.replace(/,user-scalable=0$/, '');
6872    }
6873
6874    function getViewport$1() {
6875      return $('meta[name="viewport"]', document.head) || append(document.head, '<meta name="viewport">');
6876    }
6877
6878    var overflowAuto = {
6879
6880      mixins: [Class],
6881
6882      props: {
6883        selContainer: String,
6884        selContent: String
6885      },
6886
6887      data: {
6888        selContainer: '.uk-modal',
6889        selContent: '.uk-modal-dialog'
6890      },
6891
6892      computed: {
6893
6894        container: function container(ref, $el) {
6895          var selContainer = ref.selContainer;
6896
6897          return closest($el, selContainer);
6898        },
6899
6900        content: function content(ref, $el) {
6901          var selContent = ref.selContent;
6902
6903          return closest($el, selContent);
6904        }
6905
6906      },
6907
6908      connected: function connected() {
6909        css(this.$el, 'minHeight', 150);
6910      },
6911
6912      update: {
6913
6914        read: function read() {
6915
6916          if (!this.content || !this.container) {
6917            return false;
6918          }
6919
6920          return {
6921            current: toFloat(css(this.$el, 'maxHeight')),
6922            max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))
6923          };
6924        },
6925
6926        write: function write(ref) {
6927          var current = ref.current;
6928          var max = ref.max;
6929
6930          css(this.$el, 'maxHeight', max);
6931          if (Math.round(current) !== Math.round(max)) {
6932            trigger(this.$el, 'resize');
6933          }
6934        },
6935
6936        events: ['resize']
6937
6938      }
6939
6940    };
6941
6942    var responsive = {
6943
6944      props: ['width', 'height'],
6945
6946      connected: function connected() {
6947        addClass(this.$el, 'uk-responsive-width');
6948      },
6949
6950      update: {
6951
6952        read: function read() {
6953          return isVisible(this.$el) && this.width && this.height ? { width: width(this.$el.parentNode), height: this.height } : false;
6954        },
6955
6956        write: function write(dim) {
6957          height(this.$el, Dimensions.contain({
6958            height: this.height,
6959            width: this.width
6960          }, dim).height);
6961        },
6962
6963        events: ['resize']
6964
6965      }
6966
6967    };
6968
6969    var scroll = {
6970
6971      props: {
6972        offset: Number
6973      },
6974
6975      data: {
6976        offset: 0
6977      },
6978
6979      methods: {
6980
6981        scrollTo: function scrollTo(el) {
6982          var this$1 = this;
6983
6984          el = el && $(el) || document.body;
6985
6986          if (trigger(this.$el, 'beforescroll', [this, el])) {
6987            scrollIntoView(el, { offset: this.offset }).then(function () {
6988              return trigger(this$1.$el, 'scrolled', [this$1, el]);
6989            });
6990          }
6991        }
6992
6993      },
6994
6995      events: {
6996
6997        click: function click(e) {
6998
6999          if (e.defaultPrevented) {
7000            return;
7001          }
7002
7003          e.preventDefault();
7004          this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1));
7005        }
7006
7007      }
7008
7009    };
7010
7011    var stateKey$1 = '_ukScrollspy';
7012    var scrollspy = {
7013
7014      args: 'cls',
7015
7016      props: {
7017        cls: String,
7018        target: String,
7019        hidden: Boolean,
7020        offsetTop: Number,
7021        offsetLeft: Number,
7022        repeat: Boolean,
7023        delay: Number
7024      },
7025
7026      data: function data() {
7027        return {
7028          cls: false,
7029          target: false,
7030          hidden: true,
7031          offsetTop: 0,
7032          offsetLeft: 0,
7033          repeat: false,
7034          delay: 0,
7035          inViewClass: 'uk-scrollspy-inview'
7036        };
7037      },
7038
7039      computed: {
7040
7041        elements: {
7042
7043          get: function get$$1(ref, $el) {
7044            var target = ref.target;
7045
7046            return target ? $$(target, $el) : [$el];
7047          },
7048
7049          watch: function watch(elements) {
7050            if (this.hidden) {
7051              css(filter(elements, ":not(." + this.inViewClass + ")"), 'visibility', 'hidden');
7052            }
7053          },
7054
7055          immediate: true
7056
7057        }
7058
7059      },
7060
7061      update: [{
7062
7063        read: function read(ref) {
7064          var this$1 = this;
7065          var update = ref.update;
7066
7067          if (!update) {
7068            return;
7069          }
7070
7071          this.elements.forEach(function (el) {
7072
7073            if (!el[stateKey$1]) {
7074              el[stateKey$1] = { cls: data(el, 'uk-scrollspy-class') || this$1.cls };
7075            }
7076
7077            el[stateKey$1].show = isInView(el, this$1.offsetTop, this$1.offsetLeft);
7078          });
7079        },
7080
7081        write: function write(data) {
7082          var this$1 = this;
7083
7084          // Let child components be applied at least once first
7085          if (!data.update) {
7086            this.$emit();
7087            return data.update = true;
7088          }
7089
7090          this.elements.forEach(function (el) {
7091
7092            var state = el[stateKey$1];
7093            var toggle = function toggle(inview) {
7094
7095              css(el, 'visibility', !inview && this$1.hidden ? 'hidden' : '');
7096
7097              toggleClass(el, this$1.inViewClass, inview);
7098              toggleClass(el, state.cls);
7099
7100              trigger(el, inview ? 'inview' : 'outview');
7101
7102              state.inview = inview;
7103
7104              this$1.$update(el);
7105            };
7106
7107            if (state.show && !state.inview && !state.queued) {
7108
7109              state.queued = true;
7110
7111              data.promise = (data.promise || Promise.resolve()).then(function () {
7112                return new Promise(function (resolve) {
7113                  return setTimeout(resolve, this$1.delay);
7114                });
7115              }).then(function () {
7116                toggle(true);
7117                setTimeout(function () {
7118                  state.queued = false;
7119                  this$1.$emit();
7120                }, 300);
7121              });
7122            } else if (!state.show && state.inview && !state.queued && this$1.repeat) {
7123
7124              toggle(false);
7125            }
7126          });
7127        },
7128
7129        events: ['scroll', 'resize']
7130
7131      }]
7132
7133    };
7134
7135    var scrollspyNav = {
7136
7137      props: {
7138        cls: String,
7139        closest: String,
7140        scroll: Boolean,
7141        overflow: Boolean,
7142        offset: Number
7143      },
7144
7145      data: {
7146        cls: 'uk-active',
7147        closest: false,
7148        scroll: false,
7149        overflow: true,
7150        offset: 0
7151      },
7152
7153      computed: {
7154
7155        links: {
7156
7157          get: function get$$1(_, $el) {
7158            return $$('a[href^="#"]', $el).filter(function (el) {
7159              return el.hash;
7160            });
7161          },
7162
7163          watch: function watch(links) {
7164            if (this.scroll) {
7165              this.$create('scroll', links, { offset: this.offset || 0 });
7166            }
7167          },
7168
7169          immediate: true
7170
7171        },
7172
7173        targets: function targets() {
7174          return $$(this.links.map(function (el) {
7175            return escape(el.hash).substr(1);
7176          }).join(','));
7177        },
7178
7179        elements: function elements(ref) {
7180          var selector = ref.closest;
7181
7182          return closest(this.links, selector || '*');
7183        }
7184
7185      },
7186
7187      update: [{
7188
7189        read: function read() {
7190          var this$1 = this;
7191
7192          var ref = this.targets;
7193          var length = ref.length;
7194
7195          if (!length || !isVisible(this.$el)) {
7196            return false;
7197          }
7198
7199          var scrollElement = last(scrollParents(this.targets[0]));
7200          var scrollTop = scrollElement.scrollTop;
7201          var scrollHeight = scrollElement.scrollHeight;
7202          var viewport = getViewport(scrollElement);
7203          var max = scrollHeight - offset(viewport).height;
7204          var active = false;
7205
7206          if (scrollTop === max) {
7207            active = length - 1;
7208          } else {
7209
7210            this.targets.every(function (el, i) {
7211              if (position(el, viewport).top - this$1.offset <= 0) {
7212                active = i;
7213                return true;
7214              }
7215            });
7216
7217            if (active === false && this.overflow) {
7218              active = 0;
7219            }
7220          }
7221
7222          return { active: active };
7223        },
7224
7225        write: function write(ref) {
7226          var active = ref.active;
7227
7228          this.links.forEach(function (el) {
7229            return el.blur();
7230          });
7231          removeClass(this.elements, this.cls);
7232
7233          if (active !== false) {
7234            trigger(this.$el, 'active', [active, addClass(this.elements[active], this.cls)]);
7235          }
7236        },
7237
7238        events: ['scroll', 'resize']
7239
7240      }]
7241
7242    };
7243
7244    var sticky = {
7245
7246      mixins: [Class, Media],
7247
7248      props: {
7249        top: null,
7250        bottom: Boolean,
7251        offset: String,
7252        animation: String,
7253        clsActive: String,
7254        clsInactive: String,
7255        clsFixed: String,
7256        clsBelow: String,
7257        selTarget: String,
7258        widthElement: Boolean,
7259        showOnUp: Boolean,
7260        targetOffset: Number
7261      },
7262
7263      data: {
7264        top: 0,
7265        bottom: false,
7266        offset: 0,
7267        animation: '',
7268        clsActive: 'uk-active',
7269        clsInactive: '',
7270        clsFixed: 'uk-sticky-fixed',
7271        clsBelow: 'uk-sticky-below',
7272        selTarget: '',
7273        widthElement: false,
7274        showOnUp: false,
7275        targetOffset: false
7276      },
7277
7278      computed: {
7279
7280        offset: function offset(ref) {
7281          var offset = ref.offset;
7282
7283          return toPx(offset);
7284        },
7285
7286        selTarget: function selTarget(ref, $el) {
7287          var selTarget = ref.selTarget;
7288
7289          return selTarget && $(selTarget, $el) || $el;
7290        },
7291
7292        widthElement: function widthElement(ref, $el) {
7293          var widthElement = ref.widthElement;
7294
7295          return query(widthElement, $el) || this.placeholder;
7296        },
7297
7298        isActive: {
7299
7300          get: function get$$1() {
7301            return hasClass(this.selTarget, this.clsActive);
7302          },
7303
7304          set: function set$$1(value) {
7305            if (value && !this.isActive) {
7306              replaceClass(this.selTarget, this.clsInactive, this.clsActive);
7307              trigger(this.$el, 'active');
7308            } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {
7309              replaceClass(this.selTarget, this.clsActive, this.clsInactive);
7310              trigger(this.$el, 'inactive');
7311            }
7312          }
7313
7314        }
7315
7316      },
7317
7318      connected: function connected() {
7319        this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class="uk-sticky-placeholder"></div>');
7320        this.isFixed = false;
7321        this.isActive = false;
7322      },
7323
7324      disconnected: function disconnected() {
7325
7326        if (this.isFixed) {
7327          this.hide();
7328          removeClass(this.selTarget, this.clsInactive);
7329        }
7330
7331        _remove(this.placeholder);
7332        this.placeholder = null;
7333        this.widthElement = null;
7334      },
7335
7336      events: [{
7337
7338        name: 'load hashchange popstate',
7339
7340        el: inBrowser && window,
7341
7342        handler: function handler() {
7343          var this$1 = this;
7344
7345          if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {
7346            return;
7347          }
7348
7349          var target = $(location.hash);
7350
7351          if (target) {
7352            fastdom.read(function () {
7353
7354              var ref = offset(target);
7355              var top = ref.top;
7356              var elTop = offset(this$1.$el).top;
7357              var elHeight = this$1.$el.offsetHeight;
7358
7359              if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {
7360                scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);
7361              }
7362            });
7363          }
7364        }
7365
7366      }],
7367
7368      update: [{
7369
7370        read: function read(ref, type) {
7371          var height = ref.height;
7372
7373          this.inactive = !this.matchMedia || !isVisible(this.$el);
7374
7375          if (this.inactive) {
7376            return false;
7377          }
7378
7379          if (this.isActive && type !== 'update') {
7380            this.hide();
7381            height = this.$el.offsetHeight;
7382            this.show();
7383          }
7384
7385          height = !this.isActive ? this.$el.offsetHeight : height;
7386
7387          this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;
7388          this.bottomOffset = this.topOffset + height;
7389
7390          var bottom = parseProp('bottom', this);
7391
7392          this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;
7393          this.bottom = bottom && bottom - this.$el.offsetHeight;
7394          this.width = offset(isVisible(this.widthElement) ? this.widthElement : this.$el).width;
7395
7396          return {
7397            height: height,
7398            top: offsetPosition(this.placeholder)[0],
7399            margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])
7400          };
7401        },
7402
7403        write: function write(ref) {
7404          var height = ref.height;
7405          var margins = ref.margins;
7406
7407          var ref$1 = this;
7408          var placeholder = ref$1.placeholder;
7409
7410          css(placeholder, assign({ height: height }, margins));
7411
7412          if (!within(placeholder, document)) {
7413            after(this.$el, placeholder);
7414            attr(placeholder, 'hidden', '');
7415          }
7416
7417          this.isActive = !!this.isActive; // force self-assign
7418        },
7419
7420        events: ['resize']
7421
7422      }, {
7423
7424        read: function read(ref) {
7425          var scroll = ref.scroll;if (scroll === void 0) scroll = 0;
7426
7427          this.scroll = window.pageYOffset;
7428
7429          return {
7430            dir: scroll <= this.scroll ? 'down' : 'up',
7431            scroll: this.scroll
7432          };
7433        },
7434
7435        write: function write(data, type) {
7436          var this$1 = this;
7437
7438          var now = Date.now();
7439          var initTimestamp = data.initTimestamp;if (initTimestamp === void 0) initTimestamp = 0;
7440          var dir = data.dir;
7441          var lastDir = data.lastDir;
7442          var lastScroll = data.lastScroll;
7443          var scroll = data.scroll;
7444          var top = data.top;
7445
7446          data.lastScroll = scroll;
7447
7448          if (scroll < 0 || scroll === lastScroll && type === 'scroll' || this.showOnUp && type !== 'scroll' && !this.isFixed) {
7449            return;
7450          }
7451
7452          if (now - initTimestamp > 300 || dir !== lastDir) {
7453            data.initScroll = scroll;
7454            data.initTimestamp = now;
7455          }
7456
7457          data.lastDir = dir;
7458
7459          if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {
7460            return;
7461          }
7462
7463          if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir === 'down' && type === 'scroll' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)) {
7464
7465            if (!this.isFixed) {
7466
7467              if (Animation.inProgress(this.$el) && top > scroll) {
7468                Animation.cancel(this.$el);
7469                this.hide();
7470              }
7471
7472              return;
7473            }
7474
7475            this.isFixed = false;
7476
7477            if (this.animation && scroll > this.topOffset) {
7478              Animation.cancel(this.$el);
7479              Animation.out(this.$el, this.animation).then(function () {
7480                return this$1.hide();
7481              }, noop);
7482            } else {
7483              this.hide();
7484            }
7485          } else if (this.isFixed) {
7486
7487            this.update();
7488          } else if (this.animation) {
7489
7490            Animation.cancel(this.$el);
7491            this.show();
7492            Animation.in(this.$el, this.animation).catch(noop);
7493          } else {
7494            this.show();
7495          }
7496        },
7497
7498        events: ['resize', 'scroll']
7499
7500      }],
7501
7502      methods: {
7503
7504        show: function show() {
7505
7506          this.isFixed = true;
7507          this.update();
7508          attr(this.placeholder, 'hidden', null);
7509        },
7510
7511        hide: function hide() {
7512
7513          this.isActive = false;
7514          removeClass(this.$el, this.clsFixed, this.clsBelow);
7515          css(this.$el, { position: '', top: '', width: '' });
7516          attr(this.placeholder, 'hidden', '');
7517        },
7518
7519        update: function update() {
7520
7521          var active = this.top !== 0 || this.scroll > this.top;
7522          var top = Math.max(0, this.offset);
7523
7524          if (isNumeric(this.bottom) && this.scroll > this.bottom - this.offset) {
7525            top = this.bottom - this.scroll;
7526          }
7527
7528          css(this.$el, {
7529            position: 'fixed',
7530            top: top + "px",
7531            width: this.width
7532          });
7533
7534          this.isActive = active;
7535          toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);
7536          addClass(this.$el, this.clsFixed);
7537        }
7538
7539      }
7540
7541    };
7542
7543    function parseProp(prop, ref) {
7544      var $props = ref.$props;
7545      var $el = ref.$el;
7546      var propOffset = ref[prop + "Offset"];
7547
7548      var value = $props[prop];
7549
7550      if (!value) {
7551        return;
7552      }
7553
7554      if (isString(value) && value.match(/^-?\d/)) {
7555
7556        return propOffset + toPx(value);
7557      } else {
7558
7559        return offset(value === true ? $el.parentNode : query(value, $el)).bottom;
7560      }
7561    }
7562
7563    var Switcher = {
7564
7565      mixins: [Togglable],
7566
7567      args: 'connect',
7568
7569      props: {
7570        connect: String,
7571        toggle: String,
7572        active: Number,
7573        swiping: Boolean
7574      },
7575
7576      data: {
7577        connect: '~.uk-switcher',
7578        toggle: '> * > :first-child',
7579        active: 0,
7580        swiping: true,
7581        cls: 'uk-active',
7582        clsContainer: 'uk-switcher',
7583        attrItem: 'uk-switcher-item'
7584      },
7585
7586      computed: {
7587
7588        connects: {
7589
7590          get: function get$$1(ref, $el) {
7591            var connect = ref.connect;
7592
7593            return queryAll(connect, $el);
7594          },
7595
7596          watch: function watch(connects) {
7597            var this$1 = this;
7598
7599            connects.forEach(function (list) {
7600              return this$1.updateAria(list.children);
7601            });
7602
7603            if (this.swiping) {
7604              css(connects, 'touch-action', 'pan-y pinch-zoom');
7605            }
7606          },
7607
7608          immediate: true
7609
7610        },
7611
7612        toggles: {
7613
7614          get: function get$$1(ref, $el) {
7615            var toggle = ref.toggle;
7616
7617            return $$(toggle, $el).filter(function (el) {
7618              return !matches(el, '.uk-disabled *, .uk-disabled, [disabled]');
7619            });
7620          },
7621
7622          watch: function watch(toggles) {
7623            var active = this.index();
7624            this.show(~active && active || toggles[this.active] || toggles[0]);
7625          },
7626
7627          immediate: true
7628
7629        },
7630
7631        children: function children() {
7632          var this$1 = this;
7633
7634          return _children(this.$el).filter(function (child) {
7635            return this$1.toggles.some(function (toggle) {
7636              return within(toggle, child);
7637            });
7638          });
7639        }
7640
7641      },
7642
7643      events: [{
7644
7645        name: 'click',
7646
7647        delegate: function delegate() {
7648          return this.toggle;
7649        },
7650
7651        handler: function handler(e) {
7652          if (!includes(this.toggles, e.current)) {
7653            return;
7654          }
7655          e.preventDefault();
7656          this.show(e.current);
7657        }
7658
7659      }, {
7660        name: 'click',
7661
7662        el: function el() {
7663          return this.connects;
7664        },
7665
7666        delegate: function delegate() {
7667          return "[" + this.attrItem + "],[data-" + this.attrItem + "]";
7668        },
7669
7670        handler: function handler(e) {
7671          e.preventDefault();
7672          this.show(data(e.current, this.attrItem));
7673        }
7674      }, {
7675        name: 'swipeRight swipeLeft',
7676
7677        filter: function filter() {
7678          return this.swiping;
7679        },
7680
7681        el: function el() {
7682          return this.connects;
7683        },
7684
7685        handler: function handler(ref) {
7686          var type = ref.type;
7687
7688          this.show(endsWith(type, 'Left') ? 'next' : 'previous');
7689        }
7690      }],
7691
7692      methods: {
7693
7694        index: function index() {
7695          var this$1 = this;
7696
7697          return findIndex(this.children, function (el) {
7698            return hasClass(el, this$1.cls);
7699          });
7700        },
7701
7702        show: function show(item) {
7703          var this$1 = this;
7704
7705          var prev = this.index();
7706          var next = _getIndex(item, this.toggles, prev);
7707
7708          if (prev === next) {
7709            return;
7710          }
7711
7712          this.children.forEach(function (child, i) {
7713            toggleClass(child, this$1.cls, next === i);
7714            attr(this$1.toggles[i], 'aria-expanded', next === i);
7715          });
7716
7717          this.connects.forEach(function (ref) {
7718            var children = ref.children;
7719
7720            return this$1.toggleElement(toNodes(children).filter(function (child, i) {
7721              return i !== next && this$1.isToggled(child);
7722            }), false, prev >= 0).then(function () {
7723              return this$1.toggleElement(children[next], true, prev >= 0);
7724            });
7725          });
7726        }
7727
7728      }
7729
7730    };
7731
7732    var tab = {
7733
7734      mixins: [Class],
7735
7736      extends: Switcher,
7737
7738      props: {
7739        media: Boolean
7740      },
7741
7742      data: {
7743        media: 960,
7744        attrItem: 'uk-tab-item'
7745      },
7746
7747      connected: function connected() {
7748
7749        var cls = hasClass(this.$el, 'uk-tab-left') ? 'uk-tab-left' : hasClass(this.$el, 'uk-tab-right') ? 'uk-tab-right' : false;
7750
7751        if (cls) {
7752          this.$create('toggle', this.$el, { cls: cls, mode: 'media', media: this.media });
7753        }
7754      }
7755
7756    };
7757
7758    var toggle = {
7759
7760      mixins: [Media, Togglable],
7761
7762      args: 'target',
7763
7764      props: {
7765        href: String,
7766        target: null,
7767        mode: 'list',
7768        queued: Boolean
7769      },
7770
7771      data: {
7772        href: false,
7773        target: false,
7774        mode: 'click',
7775        queued: true
7776      },
7777
7778      computed: {
7779
7780        target: {
7781
7782          get: function get$$1(ref, $el) {
7783            var href = ref.href;
7784            var target = ref.target;
7785
7786            target = queryAll(target || href, $el);
7787            return target.length && target || [$el];
7788          },
7789
7790          watch: function watch() {
7791            trigger(this.target, 'updatearia', [this]);
7792          },
7793
7794          immediate: true
7795
7796        }
7797
7798      },
7799
7800      events: [{
7801
7802        name: pointerEnter + " " + pointerLeave,
7803
7804        filter: function filter() {
7805          return includes(this.mode, 'hover');
7806        },
7807
7808        handler: function handler(e) {
7809          if (!isTouch(e)) {
7810            this.toggle("toggle" + (e.type === pointerEnter ? 'show' : 'hide'));
7811          }
7812        }
7813
7814      }, {
7815
7816        name: 'click',
7817
7818        filter: function filter() {
7819          return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');
7820        },
7821
7822        handler: function handler(e) {
7823
7824          // TODO better isToggled handling
7825          var link;
7826          if (closest(e.target, 'a[href="#"], a[href=""]') || (link = closest(e.target, 'a[href]')) && (this.cls && !hasClass(this.target, this.cls.split(' ')[0]) || !isVisible(this.target) || link.hash && matches(this.target, link.hash))) {
7827            e.preventDefault();
7828          }
7829
7830          this.toggle();
7831        }
7832
7833      }],
7834
7835      update: {
7836
7837        read: function read() {
7838          return includes(this.mode, 'media') && this.media ? { match: this.matchMedia } : false;
7839        },
7840
7841        write: function write(ref) {
7842          var match = ref.match;
7843
7844          var toggled = this.isToggled(this.target);
7845          if (match ? !toggled : toggled) {
7846            this.toggle();
7847          }
7848        },
7849
7850        events: ['resize']
7851
7852      },
7853
7854      methods: {
7855
7856        toggle: function toggle(type) {
7857          var this$1 = this;
7858
7859          if (!trigger(this.target, type || 'toggle', [this])) {
7860            return;
7861          }
7862
7863          if (this.queued) {
7864
7865            var toggled = this.target.filter(this.isToggled);
7866            this.toggleElement(toggled, false).then(function () {
7867              return this$1.toggleElement(this$1.target.filter(function (el) {
7868                return !includes(toggled, el);
7869              }), true);
7870            });
7871          } else {
7872            this.toggleElement(this.target);
7873          }
7874        }
7875
7876      }
7877
7878    };
7879
7880    var components = /*#__PURE__*/Object.freeze({
7881      __proto__: null,
7882      Accordion: Accordion,
7883      Alert: alert,
7884      Cover: cover,
7885      Drop: drop,
7886      Dropdown: drop,
7887      FormCustom: formCustom,
7888      Gif: gif,
7889      Grid: grid,
7890      HeightMatch: heightMatch,
7891      HeightViewport: heightViewport,
7892      Icon: Icon,
7893      Img: img,
7894      Leader: leader,
7895      Margin: Margin,
7896      Modal: modal,
7897      Nav: nav,
7898      Navbar: navbar,
7899      Offcanvas: offcanvas,
7900      OverflowAuto: overflowAuto,
7901      Responsive: responsive,
7902      Scroll: scroll,
7903      Scrollspy: scrollspy,
7904      ScrollspyNav: scrollspyNav,
7905      Sticky: sticky,
7906      Svg: SVG,
7907      Switcher: Switcher,
7908      Tab: tab,
7909      Toggle: toggle,
7910      Video: Video,
7911      Close: Close,
7912      Spinner: Spinner,
7913      SlidenavNext: Slidenav,
7914      SlidenavPrevious: Slidenav,
7915      SearchIcon: Search,
7916      Marker: IconComponent,
7917      NavbarToggleIcon: IconComponent,
7918      OverlayIcon: IconComponent,
7919      PaginationNext: IconComponent,
7920      PaginationPrevious: IconComponent,
7921      Totop: IconComponent
7922    });
7923
7924    // register components
7925    each(components, function (component, name) {
7926      return UIkit.component(name, component);
7927    });
7928
7929    // core functionality
7930    UIkit.use(Core);
7931
7932    boot(UIkit);
7933
7934    var countdown = {
7935
7936      mixins: [Class],
7937
7938      props: {
7939        date: String,
7940        clsWrapper: String
7941      },
7942
7943      data: {
7944        date: '',
7945        clsWrapper: '.uk-countdown-%unit%'
7946      },
7947
7948      computed: {
7949
7950        date: function date(ref) {
7951          var date = ref.date;
7952
7953          return Date.parse(date);
7954        },
7955
7956        days: function days(ref, $el) {
7957          var clsWrapper = ref.clsWrapper;
7958
7959          return $(clsWrapper.replace('%unit%', 'days'), $el);
7960        },
7961
7962        hours: function hours(ref, $el) {
7963          var clsWrapper = ref.clsWrapper;
7964
7965          return $(clsWrapper.replace('%unit%', 'hours'), $el);
7966        },
7967
7968        minutes: function minutes(ref, $el) {
7969          var clsWrapper = ref.clsWrapper;
7970
7971          return $(clsWrapper.replace('%unit%', 'minutes'), $el);
7972        },
7973
7974        seconds: function seconds(ref, $el) {
7975          var clsWrapper = ref.clsWrapper;
7976
7977          return $(clsWrapper.replace('%unit%', 'seconds'), $el);
7978        },
7979
7980        units: function units() {
7981          var this$1 = this;
7982
7983          return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) {
7984            return this$1[unit];
7985          });
7986        }
7987
7988      },
7989
7990      connected: function connected() {
7991        this.start();
7992      },
7993
7994      disconnected: function disconnected() {
7995        var this$1 = this;
7996
7997        this.stop();
7998        this.units.forEach(function (unit) {
7999          return empty(this$1[unit]);
8000        });
8001      },
8002
8003      events: [{
8004
8005        name: 'visibilitychange',
8006
8007        el: inBrowser && document,
8008
8009        handler: function handler() {
8010          if (document.hidden) {
8011            this.stop();
8012          } else {
8013            this.start();
8014          }
8015        }
8016
8017      }],
8018
8019      update: {
8020
8021        write: function write() {
8022          var this$1 = this;
8023
8024          var timespan = getTimeSpan(this.date);
8025
8026          if (timespan.total <= 0) {
8027
8028            this.stop();
8029
8030            timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0;
8031          }
8032
8033          this.units.forEach(function (unit) {
8034
8035            var digits = String(Math.floor(timespan[unit]));
8036
8037            digits = digits.length < 2 ? "0" + digits : digits;
8038
8039            var el = this$1[unit];
8040            if (el.textContent !== digits) {
8041              digits = digits.split('');
8042
8043              if (digits.length !== el.children.length) {
8044                html(el, digits.map(function () {
8045                  return '<span></span>';
8046                }).join(''));
8047              }
8048
8049              digits.forEach(function (digit, i) {
8050                return el.children[i].textContent = digit;
8051              });
8052            }
8053          });
8054        }
8055
8056      },
8057
8058      methods: {
8059
8060        start: function start() {
8061
8062          this.stop();
8063
8064          if (this.date && this.units.length) {
8065            this.$update();
8066            this.timer = setInterval(this.$update, 1000);
8067          }
8068        },
8069
8070        stop: function stop() {
8071
8072          if (this.timer) {
8073            clearInterval(this.timer);
8074            this.timer = null;
8075          }
8076        }
8077
8078      }
8079
8080    };
8081
8082    function getTimeSpan(date) {
8083
8084      var total = date - Date.now();
8085
8086      return {
8087        total: total,
8088        seconds: total / 1000 % 60,
8089        minutes: total / 1000 / 60 % 60,
8090        hours: total / 1000 / 60 / 60 % 24,
8091        days: total / 1000 / 60 / 60 / 24
8092      };
8093    }
8094
8095    var targetClass = 'uk-animation-target';
8096
8097    var Animate = {
8098
8099      props: {
8100        animation: Number
8101      },
8102
8103      data: {
8104        animation: 150
8105      },
8106
8107      methods: {
8108
8109        animate: function animate(action, target) {
8110          var this$1 = this;
8111          if (target === void 0) target = this.$el;
8112
8113          addStyle();
8114
8115          var children$1 = _children(target);
8116          var propsFrom = children$1.map(function (el) {
8117            return getProps(el, true);
8118          });
8119
8120          var oldHeight = height(target);
8121          var oldScrollY = window.pageYOffset;
8122
8123          action();
8124
8125          Transition.cancel(target);
8126          children$1.forEach(Transition.cancel);
8127
8128          reset(target);
8129          this.$update(target, 'resize');
8130          fastdom.flush();
8131
8132          var newHeight = height(target);
8133
8134          children$1 = children$1.concat(_children(target).filter(function (el) {
8135            return !includes(children$1, el);
8136          }));
8137
8138          var propsTo = children$1.map(function (el, i) {
8139            return el.parentNode && i in propsFrom ? propsFrom[i] ? isVisible(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible(el) ? 1 : 0 } : false;
8140          });
8141
8142          propsFrom = propsTo.map(function (props, i) {
8143            var from = children$1[i].parentNode === target ? propsFrom[i] || getProps(children$1[i]) : false;
8144
8145            if (from) {
8146              if (!props) {
8147                delete from.opacity;
8148              } else if (!('opacity' in props)) {
8149                var opacity = from.opacity;
8150
8151                if (opacity % 1) {
8152                  props.opacity = 1;
8153                } else {
8154                  delete from.opacity;
8155                }
8156              }
8157            }
8158
8159            return from;
8160          });
8161
8162          addClass(target, targetClass);
8163          children$1.forEach(function (el, i) {
8164            return propsFrom[i] && css(el, propsFrom[i]);
8165          });
8166          css(target, { height: oldHeight, display: 'block' });
8167          scrollTop(window, oldScrollY);
8168
8169          return Promise.all(children$1.map(function (el, i) {
8170            return ['top', 'left', 'height', 'width'].some(function (prop) {
8171              return propsFrom[i][prop] !== propsTo[i][prop];
8172            }) && Transition.start(el, propsTo[i], this$1.animation, 'ease');
8173          }).concat(oldHeight !== newHeight && Transition.start(target, { height: newHeight }, this.animation, 'ease'))).then(function () {
8174            children$1.forEach(function (el, i) {
8175              return css(el, { display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: '' });
8176            });
8177            reset(target);
8178            this$1.$update(target, 'resize');
8179            fastdom.flush(); // needed for IE11
8180          }, noop);
8181        }
8182      }
8183    };
8184
8185    function getProps(el, opacity) {
8186
8187      var zIndex = css(el, 'zIndex');
8188
8189      return isVisible(el) ? assign({
8190        display: '',
8191        opacity: opacity ? css(el, 'opacity') : '0',
8192        pointerEvents: 'none',
8193        position: 'absolute',
8194        zIndex: zIndex === 'auto' ? index(el) : zIndex
8195      }, getPositionWithMargin(el)) : false;
8196    }
8197
8198    function reset(el) {
8199      css(el.children, {
8200        height: '',
8201        left: '',
8202        opacity: '',
8203        pointerEvents: '',
8204        position: '',
8205        top: '',
8206        width: ''
8207      });
8208      removeClass(el, targetClass);
8209      css(el, { height: '', display: '' });
8210    }
8211
8212    function getPositionWithMargin(el) {
8213      var ref = offset(el);
8214      var height = ref.height;
8215      var width = ref.width;
8216      var ref$1 = position(el);
8217      var top = ref$1.top;
8218      var left = ref$1.left;
8219
8220      return { top: top, left: left, height: height, width: width };
8221    }
8222
8223    var style;
8224
8225    function addStyle() {
8226      if (style) {
8227        return;
8228      }
8229      style = append(document.head, '<style>').sheet;
8230      style.insertRule("." + targetClass + " > * {\n            margin-top: 0 !important;\n            transform: none !important;\n        }", 0);
8231    }
8232
8233    var filter$1 = {
8234
8235      mixins: [Animate],
8236
8237      args: 'target',
8238
8239      props: {
8240        target: Boolean,
8241        selActive: Boolean
8242      },
8243
8244      data: {
8245        target: null,
8246        selActive: false,
8247        attrItem: 'uk-filter-control',
8248        cls: 'uk-active',
8249        animation: 250
8250      },
8251
8252      computed: {
8253
8254        toggles: {
8255
8256          get: function get$$1(ref, $el) {
8257            return $$("[" + this.attrItem + "],[data-" + this.attrItem + "]", $el);
8258          },
8259
8260          watch: function watch() {
8261            var this$1 = this;
8262
8263            this.updateState();
8264
8265            if (this.selActive !== false) {
8266              var actives = $$(this.selActive, this.$el);
8267              this.toggles.forEach(function (el) {
8268                return toggleClass(el, this$1.cls, includes(actives, el));
8269              });
8270            }
8271          },
8272
8273          immediate: true
8274
8275        },
8276
8277        children: {
8278
8279          get: function get$$1(ref, $el) {
8280            var target = ref.target;
8281
8282            return $$(target + " > *", $el);
8283          },
8284
8285          watch: function watch(list, old) {
8286            if (!isEqualList(list, old)) {
8287              this.updateState();
8288            }
8289          }
8290        }
8291
8292      },
8293
8294      events: [{
8295
8296        name: 'click',
8297
8298        delegate: function delegate() {
8299          return "[" + this.attrItem + "],[data-" + this.attrItem + "]";
8300        },
8301
8302        handler: function handler(e) {
8303
8304          e.preventDefault();
8305          this.apply(e.current);
8306        }
8307
8308      }],
8309
8310      methods: {
8311
8312        apply: function apply(el) {
8313          this.setState(mergeState(el, this.attrItem, this.getState()));
8314        },
8315
8316        getState: function getState() {
8317          var this$1 = this;
8318
8319          return this.toggles.filter(function (item) {
8320            return hasClass(item, this$1.cls);
8321          }).reduce(function (state, el) {
8322            return mergeState(el, this$1.attrItem, state);
8323          }, { filter: { '': '' }, sort: [] });
8324        },
8325
8326        setState: function setState(state, animate) {
8327          var this$1 = this;
8328          if (animate === void 0) animate = true;
8329
8330          state = assign({ filter: { '': '' }, sort: [] }, state);
8331
8332          trigger(this.$el, 'beforeFilter', [this, state]);
8333
8334          this.toggles.forEach(function (el) {
8335            return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state));
8336          });
8337
8338          Promise.all($$(this.target, this.$el).map(function (target) {
8339            var children$1 = _children(target);
8340            return animate ? this$1.animate(function () {
8341              return applyState(state, target, children$1);
8342            }, target) : applyState(state, target, children$1);
8343          })).then(function () {
8344            return trigger(this$1.$el, 'afterFilter', [this$1]);
8345          });
8346        },
8347
8348        updateState: function updateState() {
8349          var this$1 = this;
8350
8351          fastdom.write(function () {
8352            return this$1.setState(this$1.getState(), false);
8353          });
8354        }
8355
8356      }
8357
8358    };
8359
8360    function getFilter(el, attr) {
8361      return parseOptions(data(el, attr), ['filter']);
8362    }
8363
8364    function applyState(state, target, children) {
8365      var selector = getSelector(state);
8366
8367      children.forEach(function (el) {
8368        return css(el, 'display', selector && !matches(el, selector) ? 'none' : '');
8369      });
8370
8371      var ref = state.sort;
8372      var sort = ref[0];
8373      var order = ref[1];
8374
8375      if (sort) {
8376        var sorted = sortItems(children, sort, order);
8377        if (!isEqual(sorted, children)) {
8378          append(target, sorted);
8379        }
8380      }
8381    }
8382
8383    function mergeState(el, attr, state) {
8384
8385      var filterBy = getFilter(el, attr);
8386      var filter = filterBy.filter;
8387      var group = filterBy.group;
8388      var sort = filterBy.sort;
8389      var order = filterBy.order;if (order === void 0) order = 'asc';
8390
8391      if (filter || isUndefined(sort)) {
8392
8393        if (group) {
8394
8395          if (filter) {
8396            delete state.filter[''];
8397            state.filter[group] = filter;
8398          } else {
8399            delete state.filter[group];
8400
8401            if (isEmpty(state.filter) || '' in state.filter) {
8402              state.filter = { '': filter || '' };
8403            }
8404          }
8405        } else {
8406          state.filter = { '': filter || '' };
8407        }
8408      }
8409
8410      if (!isUndefined(sort)) {
8411        state.sort = [sort, order];
8412      }
8413
8414      return state;
8415    }
8416
8417    function matchFilter(el, attr, ref) {
8418      var stateFilter = ref.filter;if (stateFilter === void 0) stateFilter = { '': '' };
8419      var ref_sort = ref.sort;
8420      var stateSort = ref_sort[0];
8421      var stateOrder = ref_sort[1];
8422
8423      var ref$1 = getFilter(el, attr);
8424      var filter = ref$1.filter;if (filter === void 0) filter = '';
8425      var group = ref$1.group;if (group === void 0) group = '';
8426      var sort = ref$1.sort;
8427      var order = ref$1.order;if (order === void 0) order = 'asc';
8428
8429      return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[''] : stateSort === sort && stateOrder === order;
8430    }
8431
8432    function isEqualList(listA, listB) {
8433      return listA.length === listB.length && listA.every(function (el) {
8434        return ~listB.indexOf(el);
8435      });
8436    }
8437
8438    function getSelector(ref) {
8439      var filter = ref.filter;
8440
8441      var selector = '';
8442      each(filter, function (value) {
8443        return selector += value || '';
8444      });
8445      return selector;
8446    }
8447
8448    function sortItems(nodes, sort, order) {
8449      return assign([], nodes).sort(function (a, b) {
8450        return data(a, sort).localeCompare(data(b, sort), undefined, { numeric: true }) * (order === 'asc' || -1);
8451      });
8452    }
8453
8454    var Animations = {
8455
8456      slide: {
8457
8458        show: function show(dir) {
8459          return [{ transform: _translate(dir * -100) }, { transform: _translate() }];
8460        },
8461
8462        percent: function percent(current) {
8463          return translated(current);
8464        },
8465
8466        translate: function translate(percent, dir) {
8467          return [{ transform: _translate(dir * -100 * percent) }, { transform: _translate(dir * 100 * (1 - percent)) }];
8468        }
8469
8470      }
8471
8472    };
8473
8474    function translated(el) {
8475      return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;
8476    }
8477
8478    function _translate(value, unit) {
8479      if (value === void 0) value = 0;
8480      if (unit === void 0) unit = '%';
8481
8482      value += value ? unit : '';
8483      return isIE ? "translateX(" + value + ")" : "translate3d(" + value + ", 0, 0)"; // currently not translate3d in IE, translate3d within translate3d does not work while transitioning
8484    }
8485
8486    function scale3d(value) {
8487      return "scale3d(" + value + ", " + value + ", 1)";
8488    }
8489
8490    var Animations$1 = assign({}, Animations, {
8491
8492      fade: {
8493
8494        show: function show() {
8495          return [{ opacity: 0 }, { opacity: 1 }];
8496        },
8497
8498        percent: function percent(current) {
8499          return 1 - css(current, 'opacity');
8500        },
8501
8502        translate: function translate(percent) {
8503          return [{ opacity: 1 - percent }, { opacity: percent }];
8504        }
8505
8506      },
8507
8508      scale: {
8509
8510        show: function show() {
8511          return [{ opacity: 0, transform: scale3d(1 - .2) }, { opacity: 1, transform: scale3d(1) }];
8512        },
8513
8514        percent: function percent(current) {
8515          return 1 - css(current, 'opacity');
8516        },
8517
8518        translate: function translate(percent) {
8519          return [{ opacity: 1 - percent, transform: scale3d(1 - .2 * percent) }, { opacity: percent, transform: scale3d(1 - .2 + .2 * percent) }];
8520        }
8521
8522      }
8523
8524    });
8525
8526    function Transitioner(prev, next, dir, ref) {
8527      var animation = ref.animation;
8528      var easing = ref.easing;
8529
8530      var _percent = animation.percent;
8531      var _translate2 = animation.translate;
8532      var show = animation.show;if (show === void 0) show = noop;
8533      var props = show(dir);
8534      var deferred = new Deferred();
8535
8536      return {
8537
8538        dir: dir,
8539
8540        show: function show(duration, percent, linear) {
8541          var this$1 = this;
8542          if (percent === void 0) percent = 0;
8543
8544          var timing = linear ? 'linear' : easing;
8545          duration -= Math.round(duration * clamp(percent, -1, 1));
8546
8547          this.translate(percent);
8548
8549          triggerUpdate(next, 'itemin', { percent: percent, duration: duration, timing: timing, dir: dir });
8550          triggerUpdate(prev, 'itemout', { percent: 1 - percent, duration: duration, timing: timing, dir: dir });
8551
8552          Promise.all([Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing)]).then(function () {
8553            this$1.reset();
8554            deferred.resolve();
8555          }, noop);
8556
8557          return deferred.promise;
8558        },
8559
8560        stop: function stop() {
8561          return Transition.stop([next, prev]);
8562        },
8563
8564        cancel: function cancel() {
8565          Transition.cancel([next, prev]);
8566        },
8567
8568        reset: function reset() {
8569          for (var prop in props[0]) {
8570            css([next, prev], prop, '');
8571          }
8572        },
8573
8574        forward: function forward(duration, percent) {
8575          if (percent === void 0) percent = this.percent();
8576
8577          Transition.cancel([next, prev]);
8578          return this.show(duration, percent, true);
8579        },
8580
8581        translate: function translate(percent) {
8582
8583          this.reset();
8584
8585          var props = _translate2(percent, dir);
8586          css(next, props[1]);
8587          css(prev, props[0]);
8588          triggerUpdate(next, 'itemtranslatein', { percent: percent, dir: dir });
8589          triggerUpdate(prev, 'itemtranslateout', { percent: 1 - percent, dir: dir });
8590        },
8591
8592        percent: function percent() {
8593          return _percent(prev || next, next, dir);
8594        },
8595
8596        getDistance: function getDistance() {
8597          return prev && prev.offsetWidth;
8598        }
8599
8600      };
8601    }
8602
8603    function triggerUpdate(el, type, data) {
8604      trigger(el, createEvent(type, false, false, data));
8605    }
8606
8607    var SliderAutoplay = {
8608
8609      props: {
8610        autoplay: Boolean,
8611        autoplayInterval: Number,
8612        pauseOnHover: Boolean
8613      },
8614
8615      data: {
8616        autoplay: false,
8617        autoplayInterval: 7000,
8618        pauseOnHover: true
8619      },
8620
8621      connected: function connected() {
8622        this.autoplay && this.startAutoplay();
8623      },
8624
8625      disconnected: function disconnected() {
8626        this.stopAutoplay();
8627      },
8628
8629      update: function update() {
8630        attr(this.slides, 'tabindex', '-1');
8631      },
8632
8633      events: [{
8634
8635        name: 'visibilitychange',
8636
8637        el: inBrowser && document,
8638
8639        filter: function filter() {
8640          return this.autoplay;
8641        },
8642
8643        handler: function handler() {
8644          if (document.hidden) {
8645            this.stopAutoplay();
8646          } else {
8647            this.startAutoplay();
8648          }
8649        }
8650
8651      }],
8652
8653      methods: {
8654
8655        startAutoplay: function startAutoplay() {
8656          var this$1 = this;
8657
8658          this.stopAutoplay();
8659
8660          this.interval = setInterval(function () {
8661            return (!this$1.draggable || !$(':focus', this$1.$el)) && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover')) && !this$1.stack.length && this$1.show('next');
8662          }, this.autoplayInterval);
8663        },
8664
8665        stopAutoplay: function stopAutoplay() {
8666          this.interval && clearInterval(this.interval);
8667        }
8668
8669      }
8670
8671    };
8672
8673    var SliderDrag = {
8674
8675      props: {
8676        draggable: Boolean
8677      },
8678
8679      data: {
8680        draggable: true,
8681        threshold: 10
8682      },
8683
8684      created: function created() {
8685        var this$1 = this;
8686
8687        ['start', 'move', 'end'].forEach(function (key) {
8688
8689          var fn = this$1[key];
8690          this$1[key] = function (e) {
8691
8692            var pos = getEventPos(e).x * (isRtl ? -1 : 1);
8693
8694            this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;
8695            this$1.pos = pos;
8696
8697            fn(e);
8698          };
8699        });
8700      },
8701
8702      events: [{
8703
8704        name: pointerDown,
8705
8706        delegate: function delegate() {
8707          return this.selSlides;
8708        },
8709
8710        handler: function handler(e) {
8711
8712          if (!this.draggable || !isTouch(e) && hasTextNodesOnly(e.target) || closest(e.target, selInput) || e.button > 0 || this.length < 2) {
8713            return;
8714          }
8715
8716          this.start(e);
8717        }
8718
8719      }, {
8720        name: 'dragstart',
8721
8722        handler: function handler(e) {
8723          e.preventDefault();
8724        }
8725      }],
8726
8727      methods: {
8728
8729        start: function start() {
8730
8731          this.drag = this.pos;
8732
8733          if (this._transitioner) {
8734
8735            this.percent = this._transitioner.percent();
8736            this.drag += this._transitioner.getDistance() * this.percent * this.dir;
8737
8738            this._transitioner.cancel();
8739            this._transitioner.translate(this.percent);
8740
8741            this.dragging = true;
8742
8743            this.stack = [];
8744          } else {
8745            this.prevIndex = this.index;
8746          }
8747
8748          // See above workaround notice
8749          on(document, pointerMove, this.move, { passive: false });
8750          on(document, pointerUp + " " + pointerCancel, this.end, true);
8751
8752          css(this.list, 'userSelect', 'none');
8753        },
8754
8755        move: function move(e) {
8756          var this$1 = this;
8757
8758          var distance = this.pos - this.drag;
8759
8760          if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {
8761            return;
8762          }
8763
8764          css(this.list, 'pointerEvents', 'none');
8765
8766          e.cancelable && e.preventDefault();
8767
8768          this.dragging = true;
8769          this.dir = distance < 0 ? 1 : -1;
8770
8771          var ref = this;
8772          var slides = ref.slides;
8773          var ref$1 = this;
8774          var prevIndex = ref$1.prevIndex;
8775          var dis = Math.abs(distance);
8776          var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);
8777          var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;
8778
8779          while (nextIndex !== prevIndex && dis > width) {
8780
8781            this.drag -= width * this.dir;
8782
8783            prevIndex = nextIndex;
8784            dis -= width;
8785            nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);
8786            width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;
8787          }
8788
8789          this.percent = dis / width;
8790
8791          var prev = slides[prevIndex];
8792          var next = slides[nextIndex];
8793          var changed = this.index !== nextIndex;
8794          var edge = prevIndex === nextIndex;
8795
8796          var itemShown;
8797
8798          [this.index, this.prevIndex].filter(function (i) {
8799            return !includes([nextIndex, prevIndex], i);
8800          }
8800).forEach(function (i) {
8801            trigger(slides[i], 'itemhidden', [this$1]);
8802
8803            if (edge) {
8804              itemShown = true;
8805              this$1.prevIndex = prevIndex;
8806            }
8807          });
8808
8809          if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {
8810            trigger(slides[this.index], 'itemshown', [this]);
8811          }
8812
8813          if (changed) {
8814            this.prevIndex = prevIndex;
8815            this.index = nextIndex;
8816
8817            !edge && trigger(prev, 'beforeitemhide', [this]);
8818            trigger(next, 'beforeitemshow', [this]);
8819          }
8820
8821          this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);
8822
8823          if (changed) {
8824            !edge && trigger(prev, 'itemhide', [this]);
8825            trigger(next, 'itemshow', [this]);
8826          }
8827        },
8828
8829        end: function end() {
8830
8831          off(document, pointerMove, this.move, { passive: false });
8832          off(document, pointerUp + " " + pointerCancel, this.end, true);
8833
8834          if (this.dragging) {
8835
8836            this.dragging = null;
8837
8838            if (this.index === this.prevIndex) {
8839              this.percent = 1 - this.percent;
8840              this.dir *= -1;
8841              this._show(false, this.index, true);
8842              this._transitioner = null;
8843            } else {
8844
8845              var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;
8846              this.index = dirChange ? this.index : this.prevIndex;
8847
8848              if (dirChange) {
8849                this.percent = 1 - this.percent;
8850              }
8851
8852              this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);
8853            }
8854          }
8855
8856          css(this.list, { userSelect: '', pointerEvents: '' });
8857
8858          this.drag = this.percent = null;
8859        }
8860
8861      }
8862
8863    };
8864
8865    function hasTextNodesOnly(el) {
8866      return !el.children.length && el.childNodes.length;
8867    }
8868
8869    var SliderNav = {
8870
8871      data: {
8872        selNav: false
8873      },
8874
8875      computed: {
8876
8877        nav: function nav(ref, $el) {
8878          var selNav = ref.selNav;
8879
8880          return $(selNav, $el);
8881        },
8882
8883        selNavItem: function selNavItem(ref) {
8884          var attrItem = ref.attrItem;
8885
8886          return "[" + attrItem + "],[data-" + attrItem + "]";
8887        },
8888
8889        navItems: function navItems(_, $el) {
8890          return $$(this.selNavItem, $el);
8891        }
8892
8893      },
8894
8895      update: {
8896
8897        write: function write() {
8898          var this$1 = this;
8899
8900          if (this.nav && this.length !== this.nav.children.length) {
8901            html(this.nav, this.slides.map(function (_, i) {
8902              return "<li " + this$1.attrItem + "=\"" + i + "\"><a href></a></li>";
8903            }).join(''));
8904          }
8905
8906          toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);
8907
8908          this.updateNav();
8909        },
8910
8911        events: ['resize']
8912
8913      },
8914
8915      events: [{
8916
8917        name: 'click',
8918
8919        delegate: function delegate() {
8920          return this.selNavItem;
8921        },
8922
8923        handler: function handler(e) {
8924          e.preventDefault();
8925          this.show(data(e.current, this.attrItem));
8926        }
8927
8928      }, {
8929
8930        name: 'itemshow',
8931        handler: 'updateNav'
8932
8933      }],
8934
8935      methods: {
8936
8937        updateNav: function updateNav() {
8938          var this$1 = this;
8939
8940          var i = this.getValidIndex();
8941          this.navItems.forEach(function (el) {
8942
8943            var cmd = data(el, this$1.attrItem);
8944
8945            toggleClass(el, this$1.clsActive, toNumber(cmd) === i);
8946            toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));
8947          });
8948        }
8949
8950      }
8951
8952    };
8953
8954    var Slider = {
8955
8956      mixins: [SliderAutoplay, SliderDrag, SliderNav],
8957
8958      props: {
8959        clsActivated: Boolean,
8960        easing: String,
8961        index: Number,
8962        finite: Boolean,
8963        velocity: Number,
8964        selSlides: String
8965      },
8966
8967      data: function data() {
8968        return {
8969          easing: 'ease',
8970          finite: false,
8971          velocity: 1,
8972          index: 0,
8973          prevIndex: -1,
8974          stack: [],
8975          percent: 0,
8976          clsActive: 'uk-active',
8977          clsActivated: false,
8978          Transitioner: false,
8979          transitionOptions: {}
8980        };
8981      },
8982
8983      connected: function connected() {
8984        this.prevIndex = -1;
8985        this.index = this.getValidIndex(this.index);
8986        this.stack = [];
8987      },
8988
8989      disconnected: function disconnected() {
8990        removeClass(this.slides, this.clsActive);
8991      },
8992
8993      computed: {
8994
8995        duration: function duration(ref, $el) {
8996          var velocity = ref.velocity;
8997
8998          return speedUp($el.offsetWidth / velocity);
8999        },
9000
9001        list: function list(ref, $el) {
9002          var selList = ref.selList;
9003
9004          return $(selList, $el);
9005        },
9006
9007        maxIndex: function maxIndex() {
9008          return this.length - 1;
9009        },
9010
9011        selSlides: function selSlides(ref) {
9012          var selList = ref.selList;
9013          var selSlides = ref.selSlides;
9014
9015          return selList + " " + (selSlides || '> *');
9016        },
9017
9018        slides: {
9019
9020          get: function get$$1() {
9021            return $$(this.selSlides, this.$el);
9022          },
9023
9024          watch: function watch() {
9025            this.$reset();
9026          }
9027
9028        },
9029
9030        length: function length() {
9031          return this.slides.length;
9032        }
9033
9034      },
9035
9036      events: {
9037
9038        itemshown: function itemshown() {
9039          this.$update(this.list);
9040        }
9041
9042      },
9043
9044      methods: {
9045
9046        show: function show(index, force) {
9047          var this$1 = this;
9048          if (force === void 0) force = false;
9049
9050          if (this.dragging || !this.length) {
9051            return;
9052          }
9053
9054          var ref = this;
9055          var stack = ref.stack;
9056          var queueIndex = force ? 0 : stack.length;
9057          var reset = function reset() {
9058            stack.splice(queueIndex, 1);
9059
9060            if (stack.length) {
9061              this$1.show(stack.shift(), true);
9062            }
9063          };
9064
9065          stack[force ? 'unshift' : 'push'](index);
9066
9067          if (!force && stack.length > 1) {
9068
9069            if (stack.length === 2) {
9070              this._transitioner.forward(Math.min(this.duration, 200));
9071            }
9072
9073            return;
9074          }
9075
9076          var prevIndex = this.getIndex(this.index);
9077          var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];
9078          var nextIndex = this.getIndex(index, this.index);
9079          var next = this.slides[nextIndex];
9080
9081          if (prev === next) {
9082            reset();
9083            return;
9084          }
9085
9086          this.dir = getDirection(index, prevIndex);
9087          this.prevIndex = prevIndex;
9088          this.index = nextIndex;
9089
9090          if (prev && !trigger(prev, 'beforeitemhide', [this]) || !trigger(next, 'beforeitemshow', [this, prev])) {
9091            this.index = this.prevIndex;
9092            reset();
9093            return;
9094          }
9095
9096          var promise = this._show(prev, next, force).then(function () {
9097
9098            prev && trigger(prev, 'itemhidden', [this$1]);
9099            trigger(next, 'itemshown', [this$1]);
9100
9101            return new Promise(function (resolve) {
9102              fastdom.write(function () {
9103                stack.shift();
9104                if (stack.length) {
9105                  this$1.show(stack.shift(), true);
9106                } else {
9107                  this$1._transitioner = null;
9108                }
9109                resolve();
9110              });
9111            });
9112          });
9113
9114          prev && trigger(prev, 'itemhide', [this]);
9115          trigger(next, 'itemshow', [this]);
9116
9117          return promise;
9118        },
9119
9120        getIndex: function getIndex(index, prev) {
9121          if (index === void 0) index = this.index;
9122          if (prev === void 0) prev = this.index;
9123
9124          return clamp(_getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);
9125        },
9126
9127        getValidIndex: function getValidIndex(index, prevIndex) {
9128          if (index === void 0) index = this.index;
9129          if (prevIndex === void 0) prevIndex = this.prevIndex;
9130
9131          return this.getIndex(index, prevIndex);
9132        },
9133
9134        _show: function _show(prev, next, force) {
9135
9136          this._transitioner = this._getTransitioner(prev, next, this.dir, assign({
9137            easing: force ? next.offsetWidth < 600 ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */
9138            : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */
9139            : this.easing
9140          }, this.transitionOptions));
9141
9142          if (!force && !prev) {
9143            this._translate(1);
9144            return Promise.resolve();
9145          }
9146
9147          var ref = this.stack;
9148          var length = ref.length;
9149          return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);
9150        },
9151
9152        _getDistance: function _getDistance(prev, next) {
9153          return this._getTransitioner(prev, prev !== next && next).getDistance();
9154        },
9155
9156        _translate: function _translate(percent, prev, next) {
9157          if (prev === void 0) prev = this.prevIndex;
9158          if (next === void 0) next = this.index;
9159
9160          var transitioner = this._getTransitioner(prev !== next ? prev : false, next);
9161          transitioner.translate(percent);
9162          return transitioner;
9163        },
9164
9165        _getTransitioner: function _getTransitioner(prev, next, dir, options) {
9166          if (prev === void 0) prev = this.prevIndex;
9167          if (next === void 0) next = this.index;
9168          if (dir === void 0) dir = this.dir || 1;
9169          if (options === void 0) options = this.transitionOptions;
9170
9171          return new this.Transitioner(isNumber(prev) ? this.slides[prev] : prev, isNumber(next) ? this.slides[next] : next, dir * (isRtl ? -1 : 1), options);
9172        }
9173
9174      }
9175
9176    };
9177
9178    function getDirection(index, prevIndex) {
9179      return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1;
9180    }
9181
9182    function speedUp(x) {
9183      return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)
9184    }
9185
9186    var Slideshow = {
9187
9188      mixins: [Slider],
9189
9190      props: {
9191        animation: String
9192      },
9193
9194      data: {
9195        animation: 'slide',
9196        clsActivated: 'uk-transition-active',
9197        Animations: Animations,
9198        Transitioner: Transitioner
9199      },
9200
9201      computed: {
9202
9203        animation: function animation(ref) {
9204          var animation = ref.animation;
9205          var Animations = ref.Animations;
9206
9207          return assign(Animations[animation] || Animations.slide, { name: animation });
9208        },
9209
9210        transitionOptions: function transitionOptions() {
9211          return { animation: this.animation };
9212        }
9213
9214      },
9215
9216      events: {
9217
9218        'itemshow itemhide itemshown itemhidden': function itemshowItemhideItemshownItemhidden(ref) {
9219          var target = ref.target;
9220
9221          this.$update(target);
9222        },
9223
9224        beforeitemshow: function beforeitemshow(ref) {
9225          var target = ref.target;
9226
9227          addClass(target, this.clsActive);
9228        },
9229
9230        itemshown: function itemshown(ref) {
9231          var target = ref.target;
9232
9233          addClass(target, this.clsActivated);
9234        },
9235
9236        itemhidden: function itemhidden(ref) {
9237          var target = ref.target;
9238
9239          removeClass(target, this.clsActive, this.clsActivated);
9240        }
9241
9242      }
9243
9244    };
9245
9246    var LightboxPanel = {
9247
9248      mixins: [Container, Modal, Togglable, Slideshow],
9249
9250      functional: true,
9251
9252      props: {
9253        delayControls: Number,
9254        preload: Number,
9255        videoAutoplay: Boolean,
9256        template: String
9257      },
9258
9259      data: function data() {
9260        return {
9261          preload: 1,
9262          videoAutoplay: false,
9263          delayControls: 3000,
9264          items: [],
9265          cls: 'uk-open',
9266          clsPage: 'uk-lightbox-page',
9267          selList: '.uk-lightbox-items',
9268          attrItem: 'uk-lightbox-item',
9269          selClose: '.uk-close-large',
9270          selCaption: '.uk-lightbox-caption',
9271          pauseOnHover: false,
9272          velocity: 2,
9273          Animations: Animations$1,
9274          template: "<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-sli
9274de-bottom uk-transition-opaque\"></div> </div>"
9275        };
9276      },
9277
9278      created: function created() {
9279
9280        var $el = $(this.template);
9281        var list = $(this.selList, $el);
9282        this.items.forEach(function () {
9283          return append(list, '<li>');
9284        });
9285
9286        this.$mount(append(this.container, $el));
9287      },
9288
9289      computed: {
9290
9291        caption: function caption(ref, $el) {
9292          return $('.uk-lightbox-caption', $el);
9293        }
9294
9295      },
9296
9297      events: [{
9298
9299        name: pointerMove + " " + pointerDown + " keydown",
9300
9301        handler: 'showControls'
9302
9303      }, {
9304
9305        name: 'click',
9306
9307        self: true,
9308
9309        delegate: function delegate() {
9310          return this.selSlides;
9311        },
9312
9313        handler: function handler(e) {
9314
9315          if (e.defaultPrevented) {
9316            return;
9317          }
9318
9319          this.hide();
9320        }
9321
9322      }, {
9323
9324        name: 'shown',
9325
9326        self: true,
9327
9328        handler: function handler() {
9329          this.showControls();
9330        }
9331
9332      }, {
9333
9334        name: 'hide',
9335
9336        self: true,
9337
9338        handler: function handler() {
9339
9340          this.hideControls();
9341
9342          removeClass(this.slides, this.clsActive);
9343          Transition.stop(this.slides);
9344        }
9345      }, {
9346
9347        name: 'hidden',
9348
9349        self: true,
9350
9351        handler: function handler() {
9352          this.$destroy(true);
9353        }
9354
9355      }, {
9356
9357        name: 'keyup',
9358
9359        el: inBrowser && document,
9360
9361        handler: function handler(e) {
9362
9363          if (!this.isToggled(this.$el) || !this.draggable) {
9364            return;
9365          }
9366
9367          switch (e.keyCode) {
9368            case 37:
9369              this.show('previous');
9370              break;
9371            case 39:
9372              this.show('next');
9373              break;
9374          }
9375        }
9376      }, {
9377
9378        name: 'beforeitemshow',
9379
9380        handler: function handler(e) {
9381
9382          if (this.isToggled()) {
9383            return;
9384          }
9385
9386          this.draggable = false;
9387
9388          e.preventDefault();
9389
9390          this.toggleElement(this.$el, true, false);
9391
9392          this.animation = Animations$1['scale'];
9393          removeClass(e.target, this.clsActive);
9394          this.stack.splice(1, 0, this.index);
9395        }
9396
9397      }, {
9398
9399        name: 'itemshow',
9400
9401        handler: function handler() {
9402
9403          html(this.caption, this.getItem().caption || '');
9404
9405          for (var j = -this.preload; j <= this.preload; j++) {
9406            this.loadItem(this.index + j);
9407          }
9408        }
9409
9410      }, {
9411
9412        name: 'itemshown',
9413
9414        handler: function handler() {
9415          this.draggable = this.$props.draggable;
9416        }
9417
9418      }, {
9419
9420        name: 'itemload',
9421
9422        handler: function handler(_, item) {
9423          var this$1 = this;
9424
9425          var src = item.source;
9426          var type = item.type;
9427          var alt = item.alt;if (alt === void 0) alt = '';
9428          var poster = item.poster;
9429          var attrs = item.attrs;if (attrs === void 0) attrs = {};
9430
9431          this.setItem(item, '<span uk-spinner></span>');
9432
9433          if (!src) {
9434            return;
9435          }
9436
9437          var matches;
9438          var iframeAttrs = {
9439            frameborder: '0',
9440            allow: 'autoplay',
9441            allowfullscreen: '',
9442            style: 'max-width: 100%; box-sizing: border-box;',
9443            'uk-responsive': '',
9444            'uk-video': "" + this.videoAutoplay
9445          };
9446
9447          // Image
9448          if (type === 'image' || src.match(/\.(jpe?g|png|gif|svg|webp)($|\?)/i)) {
9449
9450            getImage(src, attrs.srcset, attrs.size).then(function (ref) {
9451              var width = ref.width;
9452              var height = ref.height;
9453
9454              return this$1.setItem(item, createEl('img', assign({ src: src, width: width, height: height, alt: alt }, attrs)));
9455            }, function () {
9456              return this$1.setError(item);
9457            });
9458
9459            // Video
9460          } else if (type === 'video' || src.match(/\.(mp4|webm|ogv)($|\?)/i)) {
9461
9462            var video = createEl('video', assign({
9463              src: src,
9464              poster: poster,
9465              controls: '',
9466              playsinline: '',
9467              'uk-video': "" + this.videoAutoplay
9468            }, attrs));
9469
9470            on(video, 'loadedmetadata', function () {
9471              attr(video, { width: video.videoWidth, height: video.videoHeight });
9472              this$1.setItem(item, video);
9473            });
9474            on(video, 'error', function () {
9475              return this$1.setError(item);
9476            });
9477
9478            // Iframe
9479          } else if (type === 'iframe' || src.match(/\.(html|php)($|\?)/i)) {
9480
9481            this.setItem(item, createEl('iframe', assign({
9482              src: src,
9483              frameborder: '0',
9484              allowfullscreen: '',
9485              class: 'uk-lightbox-iframe'
9486            }, attrs)));
9487
9488            // YouTube
9489          } else if (matches = src.match(/\/\/(?:.*?youtube(-nocookie)?\..*?[?&]v=|youtu\.be\/)([\w-]{11})[&?]?(.*)?/)) {
9490
9491            this.setItem(item, createEl('iframe', assign({
9492              src: "https://www.youtube" + (matches[1] || '') + ".com/embed/" + matches[2] + (matches[3] ? "?" + matches[3] : ''),
9493              width: 1920,
9494              height: 1080
9495            }, iframeAttrs, attrs)));
9496
9497            // Vimeo
9498          } else if (matches = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/)) {
9499
9500            ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url=" + encodeURI(src), {
9501              responseType: 'json',
9502              withCredentials: false
9503            }).then(function (ref) {
9504              var ref_response = ref.response;
9505              var height = ref_response.height;
9506              var width = ref_response.width;
9507
9508              return this$1.setItem(item, createEl('iframe', assign({
9509                src: "https://player.vimeo.com/video/" + matches[1] + (matches[2] ? "?" + matches[2] : ''),
9510                width: width,
9511                height: height
9512              }, iframeAttrs, attrs)));
9513            }, function () {
9514              return this$1.setError(item);
9515            });
9516          }
9517        }
9518
9519      }],
9520
9521      methods: {
9522
9523        loadItem: function loadItem(index) {
9524          if (index === void 0) index = this.index;
9525
9526          var item = this.getItem(index);
9527
9528          if (!this.getSlide(item).childElementCount) {
9529            trigger(this.$el, 'itemload', [item]);
9530          }
9531        },
9532
9533        getItem: function getItem(index) {
9534          if (index === void 0) index = this.index;
9535
9536          return this.items[_getIndex(index, this.slides)];
9537        },
9538
9539        setItem: function setItem(item, content) {
9540          trigger(this.$el, 'itemloaded', [this, html(this.getSlide(item), content)]);
9541        },
9542
9543        getSlide: function getSlide(item) {
9544          return this.slides[this.items.indexOf(item)];
9545        },
9546
9547        setError: function setError(item) {
9548          this.setItem(item, '<span uk-icon="icon: bolt; ratio: 2"></span>');
9549        },
9550
9551        showControls: function showControls() {
9552
9553          clearTimeout(this.controlsTimer);
9554          this.controlsTimer = setTimeout(this.hideControls, this.delayControls);
9555
9556          addClass(this.$el, 'uk-active', 'uk-transition-active');
9557        },
9558
9559        hideControls: function hideControls() {
9560          removeClass(this.$el, 'uk-active', 'uk-transition-active');
9561        }
9562
9563      }
9564
9565    };
9566
9567    function createEl(tag, attrs) {
9568      var el = fragment("<" + tag + ">");
9569      attr(el, attrs);
9570      return el;
9571    }
9572
9573    var lightbox = {
9574
9575      install: install$2,
9576
9577      props: { toggle: String },
9578
9579      data: { toggle: 'a' },
9580
9581      computed: {
9582
9583        toggles: {
9584
9585          get: function get$$1(ref, $el) {
9586            var toggle = ref.toggle;
9587
9588            return $$(toggle, $el);
9589          },
9590
9591          watch: function watch() {
9592            this.hide();
9593          }
9594
9595        }
9596
9597      },
9598
9599      disconnected: function disconnected() {
9600        this.hide();
9601      },
9602
9603      events: [{
9604
9605        name: 'click',
9606
9607        delegate: function delegate() {
9608          return this.toggle + ":not(.uk-disabled)";
9609        },
9610
9611        handler: function handler(e) {
9612          e.preventDefault();
9613          this.show(e.current);
9614        }
9615
9616      }],
9617
9618      methods: {
9619
9620        show: function show(index) {
9621          var this$1 = this;
9622
9623          var items = uniqueBy(this.toggles.map(toItem), 'source');
9624
9625          if (isElement(index)) {
9626            var ref = toItem(index);
9627            var source = ref.source;
9628            index = findIndex(items, function (ref) {
9629              var src = ref.source;
9630
9631              return source === src;
9632            });
9633          }
9634
9635          this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, { items: items }));
9636
9637          on(this.panel.$el, 'hidden', function () {
9638            return this$1.panel = false;
9639          });
9640
9641          return this.panel.show(index);
9642        },
9643
9644        hide: function hide() {
9645
9646          return this.panel && this.panel.hide();
9647        }
9648
9649      }
9650
9651    };
9652
9653    function install$2(UIkit, Lightbox) {
9654
9655      if (!UIkit.lightboxPanel) {
9656        UIkit.component('lightboxPanel', LightboxPanel);
9657      }
9658
9659      assign(Lightbox.props, UIkit.component('lightboxPanel').options.props);
9660    }
9661
9662    function toItem(el) {
9663
9664      var item = {};
9665
9666      ['href', 'caption', 'type', 'poster', 'alt', 'attrs'].forEach(function (attr) {
9667        item[attr === 'href' ? 'source' : attr] = data(el, attr);
9668      });
9669
9670      item.attrs = parseOptions(item.attrs);
9671
9672      return item;
9673    }
9674
9675    var obj;
9676
9677    var notification = {
9678
9679      functional: true,
9680
9681      args: ['message', 'status'],
9682
9683      data: {
9684        message: '',
9685        status: '',
9686        timeout: 5000,
9687        group: null,
9688        pos: 'top-center',
9689        clsContainer: 'uk-notification',
9690        clsClose: 'uk-notification-close',
9691        clsMsg: 'uk-notification-message'
9692      },
9693
9694      install: install$3,
9695
9696      computed: {
9697
9698        marginProp: function marginProp(ref) {
9699          var pos = ref.pos;
9700
9701          return "margin" + (startsWith(pos, 'top') ? 'Top' : 'Bottom');
9702        },
9703
9704        startProps: function startProps() {
9705          var obj;
9706
9707          return obj = { opacity: 0 }, obj[this.marginProp] = -this.$el.offsetHeight, obj;
9708        }
9709
9710      },
9711
9712      created: function created() {
9713
9714        var container = $("." + this.clsContainer + "-" + this.pos, this.$container) || append(this.$container, "<div class=\"" + this.clsContainer + " " + this.clsContainer + "-" + this.pos + "\" style=\"display: block\"></div>");
9715
9716        this.$mount(append(container, "<div class=\"" + this.clsMsg + (this.status ? " " + this.clsMsg + "-" + this.status : '') + "\"> <a href class=\"" + this.clsClose + "\" data-uk-close></a> <div>" + this.message + "</div> </div>"));
9717      },
9718
9719      connected: function connected() {
9720        var this$1 = this;
9721        var obj;
9722
9723        var margin = toFloat(css(this.$el, this.marginProp));
9724        Transition.start(css(this.$el, this.startProps), (obj = { opacity: 1 }, obj[this.marginProp] = margin, obj)).then(function () {
9725          if (this$1.timeout) {
9726            this$1.timer = setTimeout(this$1.close, this$1.timeout);
9727          }
9728        });
9729      },
9730
9731      events: (obj = {
9732
9733        click: function click(e) {
9734          if (closest(e.target, 'a[href="#"],a[href=""]')) {
9735            e.preventDefault();
9736          }
9737          this.close();
9738        }
9739
9740      }, obj[pointerEnter] = function () {
9741        if (this.timer) {
9742          clearTimeout(this.timer);
9743        }
9744      }, obj[pointerLeave] = function () {
9745        if (this.timeout) {
9746          this.timer = setTimeout(this.close, this.timeout);
9747        }
9748      }, obj),
9749
9750      methods: {
9751
9752        close: function close(immediate) {
9753          var this$1 = this;
9754
9755          var removeFn = function removeFn() {
9756
9757            var container = this$1.$el.parentNode;
9758
9759            trigger(this$1.$el, 'close', [this$1]);
9760            _remove(this$1.$el);
9761
9762            if (container && !container.hasChildNodes()) {
9763              _remove(container);
9764            }
9765          };
9766
9767          if (this.timer) {
9768            clearTimeout(this.timer);
9769          }
9770
9771          if (immediate) {
9772            removeFn();
9773          } else {
9774            Transition.start(this.$el, this.startProps).then(removeFn);
9775          }
9776        }
9777
9778      }
9779
9780    };
9781
9782    function install$3(UIkit) {
9783      UIkit.notification.closeAll = function (group, immediate) {
9784        apply(document.body, function (el) {
9785          var notification = UIkit.getComponent(el, 'notification');
9786          if (notification && (!group || group === notification.group)) {
9787            notification.close(immediate);
9788          }
9789        });
9790      };
9791    }
9792
9793    var _props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];
9794
9795    var Parallax = {
9796
9797      mixins: [Media],
9798
9799      props: _props.reduce(function (props, prop) {
9800        props[prop] = 'list';
9801        return props;
9802      }, {}),
9803
9804      data: _props.reduce(function (data, prop) {
9805        data[prop] = undefined;
9806        return data;
9807      }, {}),
9808
9809      computed: {
9810
9811        props: function props(properties, $el) {
9812          var this$1 = this;
9813
9814          return _props.reduce(function (props, prop) {
9815
9816            if (isUndefined(properties[prop])) {
9817              return props;
9818            }
9819
9820            var isColor = prop.match(/color/i);
9821            var isCssProp = isColor || prop === 'opacity';
9822
9823            var pos, bgPos, diff;
9824            var steps = properties[prop].slice(0);
9825
9826            if (isCssProp) {
9827              css($el, prop, '');
9828            }
9829
9830            if (steps.length < 2) {
9831              steps.unshift((prop === 'scale' ? 1 : isCssProp ? css($el, prop) : 0) || 0);
9832            }
9833
9834            var unit = getUnit(steps);
9835
9836            if (isColor) {
9837
9838              var ref = $el.style;
9839              var color = ref.color;
9840              steps = steps.map(function (step) {
9841                return parseColor($el, step);
9842              });
9843              $el.style.color = color;
9844            } else if (startsWith(prop, 'bg')) {
9845
9846              var attr = prop === 'bgy' ? 'height' : 'width';
9847              steps = steps.map(function (step) {
9848                return toPx(step, attr, this$1.$el);
9849              });
9850
9851              css($el, "background-position-" + prop[2], '');
9852              bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]
9853
9854              if (this$1.covers) {
9855
9856                var min = Math.min.apply(Math, steps);
9857                var max = Math.max.apply(Math, steps);
9858                var down = steps.indexOf(min) < steps.indexOf(max);
9859
9860                diff = max - min;
9861
9862                steps = steps.map(function (step) {
9863                  return step - (down ? min : max);
9864                });
9865                pos = (down ? -diff : 0) + "px";
9866              } else {
9867
9868                pos = bgPos;
9869              }
9870            } else {
9871
9872              steps = steps.map(toFloat);
9873            }
9874
9875            if (prop === 'stroke') {
9876
9877              if (!steps.some(function (step) {
9878                return step;
9879              })) {
9880                return props;
9881              }
9882
9883              var length = getMaxPathLength(this$1.$el);
9884              css($el, 'strokeDasharray', length);
9885
9886              if (unit === '%') {
9887                steps = steps.map(function (step) {
9888                  return step * length / 100;
9889                });
9890              }
9891
9892              steps = steps.reverse();
9893
9894              prop = 'strokeDashoffset';
9895            }
9896
9897            props[prop] = { steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff };
9898
9899            return props;
9900          }, {});
9901        },
9902
9903        bgProps: function bgProps() {
9904          var this$1 = this;
9905
9906          return ['bgx', 'bgy'].filter(function (bg) {
9907            return bg in this$1.props;
9908          });
9909        },
9910
9911        covers: function covers(_, $el) {
9912          return _covers($el);
9913        }
9914
9915      },
9916
9917      disconnected: function disconnected() {
9918        delete this._image;
9919      },
9920
9921      update: {
9922
9923        read: function read(data) {
9924          var this$1 = this;
9925
9926          data.active = this.matchMedia;
9927
9928          if (!data.active) {
9929            return;
9930          }
9931
9932          if (!data.image && this.covers && this.bgProps.length) {
9933            var src = css(this.$el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1');
9934
9935            if (src) {
9936              var img = new Image();
9937              img.src = src;
9938              data.image = img;
9939
9940              if (!img.naturalWidth) {
9941                img.onload = function () {
9942                  return this$1.$update();
9943                };
9944              }
9945            }
9946          }
9947
9948          var image = data.image;
9949
9950          if (!image || !image.naturalWidth) {
9951            return;
9952          }
9953
9954          var dimEl = {
9955            width: this.$el.offsetWidth,
9956            height: this.$el.offsetHeight
9957          };
9958          var dimImage = {
9959            width: image.naturalWidth,
9960            height: image.naturalHeight
9961          };
9962
9963          var dim = Dimensions.cover(dimImage, dimEl);
9964
9965          this.bgProps.forEach(function (prop) {
9966
9967            var ref = this$1.props[prop];
9968            var diff = ref.diff;
9969            var bgPos = ref.bgPos;
9970            var steps = ref.steps;
9971            var attr = prop === 'bgy' ? 'height' : 'width';
9972            var span = dim[attr] - dimEl[attr];
9973
9974            if (span < diff) {
9975              dimEl[attr] = dim[attr] + diff - span;
9976            } else if (span > diff) {
9977
9978              var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);
9979
9980              if (posPercentage) {
9981                this$1.props[prop].steps = steps.map(function (step) {
9982                  return step - (span - diff) / posPercentage;
9983                });
9984              }
9985            }
9986
9987            dim = Dimensions.cover(dimImage, dimEl);
9988          });
9989
9990          data.dim = dim;
9991        },
9992
9993        write: function write(ref) {
9994          var dim = ref.dim;
9995          var active = ref.active;
9996
9997          if (!active) {
9998            css(this.$el, { backgroundSize: '', backgroundRepeat: '' });
9999            return;
10000          }
10001
10002          dim && css(this.$el, {
10003            backgroundSize: dim.width + "px " + dim.height + "px",
10004            backgroundRepeat: 'no-repeat'
10005          });
10006        },
10007
10008        events: ['resize']
10009
10010      },
10011
10012      methods: {
10013
10014        reset: function reset() {
10015          var this$1 = this;
10016
10017          each(this.getCss(0), function (_, prop) {
10018            return css(this$1.$el, prop, '');
10019          });
10020        },
10021
10022        getCss: function getCss(percent) {
10023
10024          var ref = this;
10025          var props = ref.props;
10026          return Object.keys(props).reduce(function (css, prop) {
10027
10028            var ref = props[prop];
10029            var steps = ref.steps;
10030            var unit = ref.unit;
10031            var pos = ref.pos;
10032            var value = getValue(steps, percent);
10033
10034            switch (prop) {
10035
10036              // transforms
10037              case 'x':
10038              case 'y':
10039                {
10040                  unit = unit || 'px';
10041                  css.transform += " translate" + ucfirst(prop) + "(" + toFloat(value).toFixed(unit === 'px' ? 0 : 2) + unit + ")";
10042                  break;
10043                }
10044              case 'rotate':
10045                unit = unit || 'deg';
10046                css.transform += " rotate(" + (value + unit) + ")";
10047                break;
10048              case 'scale':
10049                css.transform += " scale(" + value + ")";
10050                break;
10051
10052              // bg image
10053              case 'bgy':
10054              case 'bgx':
10055                css["background-position-" + prop[2]] = "calc(" + pos + " + " + value + "px)";
10056                break;
10057
10058              // color
10059              case 'color':
10060              case 'backgroundColor':
10061              case 'borderColor':
10062                {
10063
10064                  var ref$1 = getStep(steps, percent);
10065                  var start = ref$1[0];
10066                  var end = ref$1[1];
10067                  var p = ref$1[2];
10068
10069                  css[prop] = "rgba(" + start.map(function (value, i) {
10070                    value = value + p * (end[i] - value);
10071                    return i === 3 ? toFloat(value) : parseInt(value, 10);
10072                  }).join(',') + ")";
10073                  break;
10074                }
10075              // CSS Filter
10076              case 'blur':
10077                unit = unit || 'px';
10078                css.filter += " blur(" + (value + unit) + ")";
10079                break;
10080              case 'hue':
10081                unit = unit || 'deg';
10082                css.filter += " hue-rotate(" + (value + unit) + ")";
10083                break;
10084              case 'fopacity':
10085                unit = unit || '%';
10086                css.filter += " opacity(" + (value + unit) + ")";
10087                break;
10088              case 'grayscale':
10089              case 'invert':
10090              case 'saturate':
10091              case 'sepia':
10092                unit = unit || '%';
10093                css.filter += " " + prop + "(" + (value + unit) + ")";
10094                break;
10095              default:
10096                css[prop] = value;
10097            }
10098
10099            return css;
10100          }, { transform: '', filter: '' });
10101        }
10102
10103      }
10104
10105    };
10106
10107    function parseColor(el, color) {
10108      return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);
10109    }
10110
10111    function getStep(steps, percent) {
10112      var count = steps.length - 1;
10113      var index = Math.min(Math.floor(count * percent), count - 1);
10114      var step = steps.slice(index, index + 2);
10115
10116      step.push(percent === 1 ? 1 : percent % (1 / count) * count);
10117
10118      return step;
10119    }
10120
10121    function getValue(steps, percent, digits) {
10122      if (digits === void 0) digits = 2;
10123
10124      var ref = getStep(steps, percent);
10125      var start = ref[0];
10126      var end = ref[1];
10127      var p = ref[2];
10128      return (isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end).toFixed(digits);
10129    }
10130
10131    function getUnit(steps) {
10132      return steps.reduce(function (unit, step) {
10133        return isString(step) && step.replace(/-|\d/g, '').trim() || unit;
10134      }, '');
10135    }
10136
10137    function _covers(el) {
10138      var ref = el.style;
10139      var backgroundSize = ref.backgroundSize;
10140      var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';
10141      el.style.backgroundSize = backgroundSize;
10142      return covers;
10143    }
10144
10145    var parallax = {
10146
10147      mixins: [Parallax],
10148
10149      props: {
10150        target: String,
10151        viewport: Number,
10152        easing: Number
10153      },
10154
10155      data: {
10156        target: false,
10157        viewport: 1,
10158        easing: 1
10159      },
10160
10161      computed: {
10162
10163        target: function target(ref, $el) {
10164          var target = ref.target;
10165
10166          return getOffsetElement(target && query(target, $el) || $el);
10167        }
10168
10169      },
10170
10171      update: {
10172
10173        read: function read(ref, type) {
10174          var percent = ref.percent;
10175          var active = ref.active;
10176
10177          if (type !== 'scroll') {
10178            percent = false;
10179          }
10180
10181          if (!active) {
10182            return;
10183          }
10184
10185          var prev = percent;
10186          percent = ease(scrolledOver(this.target) / (this.viewport || 1), this.easing);
10187
10188          return {
10189            percent: percent,
10190            style: prev !== percent ? this.getCss(percent) : false
10191          };
10192        },
10193
10194        write: function write(ref) {
10195          var style = ref.style;
10196          var active = ref.active;
10197
10198          if (!active) {
10199            this.reset();
10200            return;
10201          }
10202
10203          style && css(this.$el, style);
10204        },
10205
10206        events: ['scroll', 'resize']
10207      }
10208
10209    };
10210
10211    function ease(percent, easing) {
10212      return clamp(percent * (1 - (easing - easing * percent)));
10213    }
10214
10215    // SVG elements do not inherit from HTMLElement
10216    function getOffsetElement(el) {
10217      return el ? 'offsetTop' in el ? el : getOffsetElement(el.parentNode) : document.body;
10218    }
10219
10220    var SliderReactive = {
10221
10222      update: {
10223
10224        write: function write() {
10225
10226          if (this.stack.length || this.dragging) {
10227            return;
10228          }
10229
10230          var index = this.getValidIndex(this.index);
10231
10232          if (!~this.prevIndex || this.index !== index) {
10233            this.show(index);
10234          }
10235        },
10236
10237        events: ['resize']
10238
10239      }
10240
10241    };
10242
10243    function Transitioner$1(prev, next, dir, ref) {
10244      var center = ref.center;
10245      var easing = ref.easing;
10246      var list = ref.list;
10247
10248      var deferred = new Deferred();
10249
10250      var from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + offset(next).width * dir;
10251      var to = next ? getLeft(next, list, center) : from + offset(prev).width * dir * (isRtl ? -1 : 1);
10252
10253      return {
10254
10255        dir: dir,
10256
10257        show: function show(duration, percent, linear) {
10258          if (percent === void 0) percent = 0;
10259
10260          var timing = linear ? 'linear' : easing;
10261          duration -= Math.round(duration * clamp(percent, -1, 1));
10262
10263          this.translate(percent);
10264
10265          prev && this.updateTranslates();
10266          percent = prev ? percent : clamp(percent, 0, 1);
10267          triggerUpdate$1(this.getItemIn(), 'itemin', { percent: percent, duration: duration, timing: timing, dir: dir });
10268          prev && triggerUpdate$1(this.getItemIn(true), 'itemout', { percent: 1 - percent, duration: duration, timing: timing, dir: dir });
10269
10270          Transition.start(list, { transform: _translate(-to * (isRtl ? -1 : 1), 'px') }, duration, timing).then(deferred.resolve, noop);
10271
10272          return deferred.promise;
10273        },
10274
10275        stop: function stop() {
10276          return Transition.stop(list);
10277        },
10278
10279        cancel: function cancel() {
10280          Transition.cancel(list);
10281        },
10282
10283        reset: function reset() {
10284          css(list, 'transform', '');
10285        },
10286
10287        forward: function forward(duration, percent) {
10288          if (percent === void 0) percent = this.percent();
10289
10290          Transition.cancel(list);
10291          return this.show(duration, percent, true);
10292        },
10293
10294        translate: function translate(percent) {
10295
10296          var distance = this.getDistance() * dir * (isRtl ? -1 : 1);
10297
10298          css(list, 'transform', _translate(clamp(-to + (distance - distance * percent), -getWidth(list), offset(list).width) * (isRtl ? -1 : 1), 'px'));
10299
10300          this.updateTranslates();
10301
10302          if (prev) {
10303            percent = clamp(percent, -1, 1);
10304            triggerUpdate$1(this.getItemIn(), 'itemtranslatein', { percent: percent, dir: dir });
10305            triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', { percent: 1 - percent, dir: dir });
10306          }
10307        },
10308
10309        percent: function percent() {
10310          return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));
10311        },
10312
10313        getDistance: function getDistance() {
10314          return Math.abs(to - from);
10315        },
10316
10317        getItemIn: function getItemIn(out) {
10318          if (out === void 0) out = false;
10319
10320          var actives = this.getActives();
10321          var all = sortBy(slides(list), 'offsetLeft');
10322          var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);
10323
10324          return ~i && all[i + (prev && !out ? dir : 0)];
10325        },
10326
10327        getActives: function getActives() {
10328
10329          var left = getLeft(prev || next, list, center);
10330
10331          return sortBy(slides(list).filter(function (slide) {
10332            var slideLeft = getElLeft(slide, list);
10333            return slideLeft >= left && slideLeft + offset(slide).width <= offset(list).width + left;
10334          }), 'offsetLeft');
10335        },
10336
10337        updateTranslates: function updateTranslates() {
10338
10339          var actives = this.getActives();
10340
10341          slides(list).forEach(function (slide) {
10342            var isActive = includes(actives, slide);
10343
10344            triggerUpdate$1(slide, "itemtranslate" + (isActive ? 'in' : 'out'), {
10345              percent: isActive ? 1 : 0,
10346              dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1
10347            });
10348          });
10349        }
10350
10351      };
10352    }
10353
10354    function getLeft(el, list, center) {
10355
10356      var left = getElLeft(el, list);
10357
10358      return center ? left - centerEl(el, list) : Math.min(left, getMax(list));
10359    }
10360
10361    function getMax(list) {
10362      return Math.max(0, getWidth(list) - offset(list).width);
10363    }
10364
10365    function getWidth(list) {
10366      return slides(list).reduce(function (right, el) {
10367        return offset(el).width + right;
10368      }, 0);
10369    }
10370
10371    function getMaxWidth(list) {
10372      return slides(list).reduce(function (right, el) {
10373        return Math.max(right, offset(el).width);
10374      }, 0);
10375    }
10376
10377    function centerEl(el, list) {
10378      return offset(list).width / 2 - offset(el).width / 2;
10379    }
10380
10381    function getElLeft(el, list) {
10382      return (position(el).left + (isRtl ? offset(el).width - offset(list).width : 0)) * (isRtl ? -1 : 1);
10383    }
10384
10385    function triggerUpdate$1(el, type, data) {
10386      trigger(el, createEvent(type, false, false, data));
10387    }
10388
10389    function slides(list) {
10390      return _children(list);
10391    }
10392
10393    var slider = {
10394
10395      mixins: [Class, Slider, SliderReactive],
10396
10397      props: {
10398        center: Boolean,
10399        sets: Boolean
10400      },
10401
10402      data: {
10403        center: false,
10404        sets: false,
10405        attrItem: 'uk-slider-item',
10406        selList: '.uk-slider-items',
10407        selNav: '.uk-slider-nav',
10408        clsContainer: 'uk-slider-container',
10409        Transitioner: Transitioner$1
10410      },
10411
10412      computed: {
10413
10414        avgWidth: function avgWidth() {
10415          return getWidth(this.list) / this.length;
10416        },
10417
10418        finite: function finite(ref) {
10419          var finite = ref.finite;
10420
10421          return finite || Math.ceil(getWidth(this.list)) < offset(this.list).width + getMaxWidth(this.list) + this.center;
10422        },
10423
10424        maxIndex: function maxIndex() {
10425
10426          if (!this.finite || this.center && !this.sets) {
10427            return this.length - 1;
10428          }
10429
10430          if (this.center) {
10431            return last(this.sets);
10432          }
10433
10434          css(this.slides, 'order', '');
10435
10436          var max = getMax(this.list);
10437          var i = this.length;
10438
10439          while (i--) {
10440            if (getElLeft(this.list.children[i], this.list) < max) {
10441              return Math.min(i + 1, this.length - 1);
10442            }
10443          }
10444
10445          return 0;
10446        },
10447
10448        sets: function sets(ref) {
10449          var this$1 = this;
10450          var sets = ref.sets;
10451
10452          var width = offset(this.list).width / (this.center ? 2 : 1);
10453
10454          var left = 0;
10455          var leftCenter = width;
10456          var slideLeft = 0;
10457
10458          sets = sets && this.slides.reduce(function (sets, slide, i) {
10459
10460            var ref = offset(slide);
10461            var slideWidth = ref.width;
10462            var slideRight = slideLeft + slideWidth;
10463
10464            if (slideRight > left) {
10465
10466              if (!this$1.center && i > this$1.maxIndex) {
10467                i = this$1.maxIndex;
10468              }
10469
10470              if (!includes(sets, i)) {
10471
10472                var cmp = this$1.slides[i + 1];
10473                if (this$1.center && cmp && slideWidth < leftCenter - offset(cmp).width / 2) {
10474                  leftCenter -= slideWidth;
10475                } else {
10476                  leftCenter = width;
10477                  sets.push(i);
10478                  left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);
10479                }
10480              }
10481            }
10482
10483            slideLeft += slideWidth;
10484
10485            return sets;
10486          }, []);
10487
10488          return !isEmpty(sets) && sets;
10489        },
10490
10491        transitionOptions: function transitionOptions() {
10492          return {
10493            center: this.center,
10494            list: this.list
10495          };
10496        }
10497
10498      },
10499
10500      connected: function connected() {
10501        toggleClass(this.$el, this.clsContainer, !$("." + this.clsContainer, this.$el));
10502      },
10503
10504      update: {
10505
10506        write: function write() {
10507          var this$1 = this;
10508
10509          $$("[" + this.attrItem + "],[data-" + this.attrItem + "]", this.$el).forEach(function (el) {
10510            var index = data(el, this$1.attrItem);
10511            this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex));
10512          });
10513
10514          if (this.length && !this.dragging && !this.stack.length) {
10515            this.reorder();
10516            this._translate(1);
10517          }
10518
10519          var actives = this._getTransitioner(this.index).getActives();
10520          this.slides.forEach(function (slide) {
10521            return toggleClass(slide, this$1.clsActive, includes(actives, slide));
10522          });
10523          (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) {
10524            return toggleClass(slide, this$1.clsActivated, includes(actives, slide));
10525          });
10526        },
10527
10528        events: ['resize']
10529
10530      },
10531
10532      events: {
10533
10534        beforeitemshow: function beforeitemshow(e) {
10535
10536          if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {
10537            this.index = this.getValidIndex();
10538          }
10539
10540          var diff = Math.abs(this.index - this.prevIndex + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0));
10541
10542          if (!this.dragging && diff > 1) {
10543
10544            for (var i = 0; i < diff; i++) {
10545              this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');
10546            }
10547
10548            e.preventDefault();
10549            return;
10550          }
10551
10552          this.duration = speedUp(this.avgWidth / this.velocity) * (offset(this.dir < 0 || !this.slides[this.prevIndex] ? this.slides[this.index] : this.slides[this.prevIndex]).width / this.avgWidth);
10553
10554          this.reorder();
10555        },
10556
10557        itemshow: function itemshow() {
10558          ~this.prevIndex && addClass(this._getTransitioner().getItemIn(), this.clsActive);
10559        }
10560
10561      },
10562
10563      methods: {
10564
10565        reorder: function reorder() {
10566          var this$1 = this;
10567
10568          if (this.finite) {
10569            css(this.slides, 'order', '');
10570            return;
10571          }
10572
10573          var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;
10574
10575          this.slides.forEach(function (slide, i) {
10576            return css(slide, 'order', this$1.dir > 0 && i < index ? 1 : this$1.dir < 0 && i >= this$1.index ? -1 : '');
10577          });
10578
10579          if (!this.center) {
10580            return;
10581          }
10582
10583          var next = this.slides[index];
10584          var width = offset(this.list).width / 2 - offset(next).width / 2;
10585          var j = 0;
10586
10587          while (width > 0) {
10588            var slideIndex = this.getIndex(--j + index, index);
10589            var slide = this.slides[slideIndex];
10590
10591            css(slide, 'order', slideIndex > index ? -2 : -1);
10592            width -= offset(slide).width;
10593          }
10594        },
10595
10596        getValidIndex: function getValidIndex(index, prevIndex) {
10597          if (index === void 0) index = this.index;
10598          if (prevIndex === void 0) prevIndex = this.prevIndex;
10599
10600          index = this.getIndex(index, prevIndex);
10601
10602          if (!this.sets) {
10603            return index;
10604          }
10605
10606          var prev;
10607
10608          do {
10609
10610            if (includes(this.sets, index)) {
10611              return index;
10612            }
10613
10614            prev = index;
10615            index = this.getIndex(index + this.dir, prevIndex);
10616          } while (index !== prev);
10617
10618          return index;
10619        }
10620
10621      }
10622
10623    };
10624
10625    var sliderParallax = {
10626
10627      mixins: [Parallax],
10628
10629      data: {
10630        selItem: '!li'
10631      },
10632
10633      computed: {
10634
10635        item: function item(ref, $el) {
10636          var selItem = ref.selItem;
10637
10638          return query(selItem, $el);
10639        }
10640
10641      },
10642
10643      events: [{
10644
10645        name: 'itemshown',
10646
10647        self: true,
10648
10649        el: function el() {
10650          return this.item;
10651        },
10652
10653        handler: function handler() {
10654          css(this.$el, this.getCss(.5));
10655        }
10656
10657      }, {
10658        name: 'itemin itemout',
10659
10660        self: true,
10661
10662        el: function el() {
10663          return this.item;
10664        },
10665
10666        handler: function handler(ref) {
10667          var type = ref.type;
10668          var ref_detail = ref.detail;
10669          var percent = ref_detail.percent;
10670          var duration = ref_detail.duration;
10671          var timing = ref_detail.timing;
10672          var dir = ref_detail.dir;
10673
10674          Transition.cancel(this.$el);
10675          css(this.$el, this.getCss(getCurrent(type, dir, percent)));
10676
10677          Transition.start(this.$el, this.getCss(isIn(type) ? .5 : dir >
10677 0 ? 1 : 0), duration, timing).catch(noop);
10678        }
10679      }, {
10680        name: 'transitioncanceled transitionend',
10681
10682        self: true,
10683
10684        el: function el() {
10685          return this.item;
10686        },
10687
10688        handler: function handler() {
10689          Transition.cancel(this.$el);
10690        }
10691
10692      }, {
10693        name: 'itemtranslatein itemtranslateout',
10694
10695        self: true,
10696
10697        el: function el() {
10698          return this.item;
10699        },
10700
10701        handler: function handler(ref) {
10702          var type = ref.type;
10703          var ref_detail = ref.detail;
10704          var percent = ref_detail.percent;
10705          var dir = ref_detail.dir;
10706
10707          Transition.cancel(this.$el);
10708          css(this.$el, this.getCss(getCurrent(type, dir, percent)));
10709        }
10710      }]
10711
10712    };
10713
10714    function isIn(type) {
10715      return endsWith(type, 'in');
10716    }
10717
10718    function getCurrent(type, dir, percent) {
10719
10720      percent /= 2;
10721
10722      return !isIn(type) ? dir < 0 ? percent : 1 - percent : dir < 0 ? 1 - percent : percent;
10723    }
10724
10725    var Animations$2 = assign({}, Animations, {
10726
10727      fade: {
10728
10729        show: function show() {
10730          return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];
10731        },
10732
10733        percent: function percent(current) {
10734          return 1 - css(current, 'opacity');
10735        },
10736
10737        translate: function translate(percent) {
10738          return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];
10739        }
10740
10741      },
10742
10743      scale: {
10744
10745        show: function show() {
10746          return [{ opacity: 0, transform: scale3d(1 + .5), zIndex: 0 }, { zIndex: -1 }];
10747        },
10748
10749        percent: function percent(current) {
10750          return 1 - css(current, 'opacity');
10751        },
10752
10753        translate: function translate(percent) {
10754          return [{ opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0 }, { zIndex: -1 }];
10755        }
10756
10757      },
10758
10759      pull: {
10760
10761        show: function show(dir) {
10762          return dir < 0 ? [{ transform: _translate(30), zIndex: -1 }, { transform: _translate(), zIndex: 0 }] : [{ transform: _translate(-100), zIndex: 0 }, { transform: _translate(), zIndex: -1 }];
10763        },
10764
10765        percent: function percent(current, next, dir) {
10766          return dir < 0 ? 1 - translated(next) : translated(current);
10767        },
10768
10769        translate: function translate(percent, dir) {
10770          return dir < 0 ? [{ transform: _translate(30 * percent), zIndex: -1 }, { transform: _translate(-100 * (1 - percent)), zIndex: 0 }] : [{ transform: _translate(-percent * 100), zIndex: 0 }, { transform: _translate(30 * (1 - percent)), zIndex: -1 }];
10771        }
10772
10773      },
10774
10775      push: {
10776
10777        show: function show(dir) {
10778          return dir < 0 ? [{ transform: _translate(100), zIndex: 0 }, { transform: _translate(), zIndex: -1 }] : [{ transform: _translate(-30), zIndex: -1 }, { transform: _translate(), zIndex: 0 }];
10779        },
10780
10781        percent: function percent(current, next, dir) {
10782          return dir > 0 ? 1 - translated(next) : translated(current);
10783        },
10784
10785        translate: function translate(percent, dir) {
10786          return dir < 0 ? [{ transform: _translate(percent * 100), zIndex: 0 }, { transform: _translate(-30 * (1 - percent)), zIndex: -1 }] : [{ transform: _translate(-30 * percent), zIndex: -1 }, { transform: _translate(100 * (1 - percent)), zIndex: 0 }];
10787        }
10788
10789      }
10790
10791    });
10792
10793    var slideshow = {
10794
10795      mixins: [Class, Slideshow, SliderReactive],
10796
10797      props: {
10798        ratio: String,
10799        minHeight: Number,
10800        maxHeight: Number
10801      },
10802
10803      data: {
10804        ratio: '16:9',
10805        minHeight: false,
10806        maxHeight: false,
10807        selList: '.uk-slideshow-items',
10808        attrItem: 'uk-slideshow-item',
10809        selNav: '.uk-slideshow-nav',
10810        Animations: Animations$2
10811      },
10812
10813      update: {
10814
10815        read: function read() {
10816
10817          var ref = this.ratio.split(':').map(Number);
10818          var width = ref[0];
10819          var height = ref[1];
10820
10821          height = height * this.list.offsetWidth / width || 0;
10822
10823          if (this.minHeight) {
10824            height = Math.max(this.minHeight, height);
10825          }
10826
10827          if (this.maxHeight) {
10828            height = Math.min(this.maxHeight, height);
10829          }
10830
10831          return { height: height - boxModelAdjust(this.list, 'height', 'content-box') };
10832        },
10833
10834        write: function write(ref) {
10835          var height = ref.height;
10836
10837          height > 0 && css(this.list, 'minHeight', height);
10838        },
10839
10840        events: ['resize']
10841
10842      }
10843
10844    };
10845
10846    var sortable = {
10847
10848      mixins: [Class, Animate],
10849
10850      props: {
10851        group: String,
10852        threshold: Number,
10853        clsItem: String,
10854        clsPlaceholder: String,
10855        clsDrag: String,
10856        clsDragState: String,
10857        clsBase: String,
10858        clsNoDrag: String,
10859        clsEmpty: String,
10860        clsCustom: String,
10861        handle: String
10862      },
10863
10864      data: {
10865        group: false,
10866        threshold: 5,
10867        clsItem: 'uk-sortable-item',
10868        clsPlaceholder: 'uk-sortable-placeholder',
10869        clsDrag: 'uk-sortable-drag',
10870        clsDragState: 'uk-drag',
10871        clsBase: 'uk-sortable',
10872        clsNoDrag: 'uk-sortable-nodrag',
10873        clsEmpty: 'uk-sortable-empty',
10874        clsCustom: '',
10875        handle: false,
10876        pos: {}
10877      },
10878
10879      created: function created() {
10880        var this$1 = this;
10881
10882        ['init', 'start', 'move', 'end'].forEach(function (key) {
10883          var fn = this$1[key];
10884          this$1[key] = function (e) {
10885            assign(this$1.pos, getEventPos(e));
10886            fn(e);
10887          };
10888        });
10889      },
10890
10891      events: {
10892
10893        name: pointerDown,
10894        passive: false,
10895        handler: 'init'
10896
10897      },
10898
10899      computed: {
10900
10901        target: function target() {
10902          return (this.$el.tBodies || [this.$el])[0];
10903        },
10904
10905        items: function items() {
10906          return _children(this.target);
10907        },
10908
10909        isEmpty: {
10910
10911          get: function get$$1() {
10912            return isEmpty(this.items);
10913          },
10914
10915          watch: function watch(empty) {
10916            toggleClass(this.target, this.clsEmpty, empty);
10917          },
10918
10919          immediate: true
10920
10921        },
10922
10923        handles: {
10924
10925          get: function get$$1(ref, el) {
10926            var handle = ref.handle;
10927
10928            return handle ? $$(handle, el) : this.items;
10929          },
10930
10931          watch: function watch(handles, prev) {
10932            css(prev, { touchAction: '', userSelect: '' });
10933            css(handles, { touchAction: hasTouch ? 'none' : '', userSelect: 'none' }); // touchAction set to 'none' causes a performance drop in Chrome 80
10934          },
10935
10936          immediate: true
10937
10938        }
10939
10940      },
10941
10942      update: {
10943
10944        write: function write() {
10945
10946          if (!this.drag || !parent(this.placeholder)) {
10947            return;
10948          }
10949
10950          // clamp to viewport
10951          var ref = this.pos;
10952          var x = ref.x;
10953          var y = ref.y;
10954          var ref$1 = this.origin;
10955          var offsetTop = ref$1.offsetTop;
10956          var offsetLeft = ref$1.offsetLeft;
10957          var ref$2 = this.drag;
10958          var offsetHeight = ref$2.offsetHeight;
10959          var offsetWidth = ref$2.offsetWidth;
10960          var ref$3 = offset(window);
10961          var right = ref$3.right;
10962          var bottom = ref$3.bottom;
10963          var target = document.elementFromPoint(x, y);
10964
10965          css(this.drag, {
10966            top: clamp(y - offsetTop, 0, bottom - offsetHeight),
10967            left: clamp(x - offsetLeft, 0, right - offsetWidth)
10968          });
10969
10970          var sortable = this.getSortable(target);
10971          var previous = this.getSortable(this.placeholder);
10972          var move = sortable !== previous;
10973
10974          if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {
10975            return;
10976          }
10977
10978          target = sortable.target === target.parentNode && target || sortable.items.filter(function (element) {
10979            return within(target, element);
10980          })[0];
10981
10982          if (move) {
10983            previous.remove(this.placeholder);
10984          } else if (!target) {
10985            return;
10986          }
10987
10988          sortable.insert(this.placeholder, target);
10989
10990          if (!includes(this.touched, sortable)) {
10991            this.touched.push(sortable);
10992          }
10993        },
10994
10995        events: ['move']
10996
10997      },
10998
10999      methods: {
11000
11001        init: function init(e) {
11002
11003          var target = e.target;
11004          var button = e.button;
11005          var defaultPrevented = e.defaultPrevented;
11006          var ref = this.items.filter(function (el) {
11007            return within(target, el);
11008          });
11009          var placeholder = ref[0];
11010
11011          if (!placeholder || defaultPrevented || button > 0 || isInput(target) || within(target, "." + this.clsNoDrag) || this.handle && !within(target, this.handle)) {
11012            return;
11013          }
11014
11015          e.preventDefault();
11016
11017          this.touched = [this];
11018          this.placeholder = placeholder;
11019          this.origin = assign({ target: target, index: index(placeholder) }, this.pos);
11020
11021          on(document, pointerMove, this.move);
11022          on(document, pointerUp, this.end);
11023
11024          if (!this.threshold) {
11025            this.start(e);
11026          }
11027        },
11028
11029        start: function start(e) {
11030
11031          this.drag = appendDrag(this.$container, this.placeholder);
11032          var ref = this.placeholder.getBoundingClientRect();
11033          var left = ref.left;
11034          var top = ref.top;
11035          assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top });
11036
11037          addClass(this.drag, this.clsDrag, this.clsCustom);
11038          addClass(this.placeholder, this.clsPlaceholder);
11039          addClass(this.items, this.clsItem);
11040          addClass(document.documentElement, this.clsDragState);
11041
11042          trigger(this.$el, 'start', [this, this.placeholder]);
11043
11044          trackScroll(this.pos);
11045
11046          this.move(e);
11047        },
11048
11049        move: function move(e) {
11050
11051          if (this.drag) {
11052            this.$emit('move');
11053          } else if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {
11054            this.start(e);
11055          }
11056        },
11057
11058        end: function end(e) {
11059
11060          off(document, pointerMove, this.move);
11061          off(document, pointerUp, this.end);
11062          off(window, 'scroll', this.scroll);
11063
11064          if (!this.drag) {
11065            return;
11066          }
11067
11068          untrackScroll();
11069
11070          var sortable = this.getSortable(this.placeholder);
11071
11072          if (this === sortable) {
11073            if (this.origin.index !== index(this.placeholder)) {
11074              trigger(this.$el, 'moved', [this, this.placeholder]);
11075            }
11076          } else {
11077            trigger(sortable.$el, 'added', [sortable, this.placeholder]);
11078            trigger(this.$el, 'removed', [this, this.placeholder]);
11079          }
11080
11081          trigger(this.$el, 'stop', [this, this.placeholder]);
11082
11083          _remove(this.drag);
11084          this.drag = null;
11085
11086          var classes = this.touched.map(function (sortable) {
11087            return sortable.clsPlaceholder + " " + sortable.clsItem;
11088          }).join(' ');
11089          this.touched.forEach(function (sortable) {
11090            return removeClass(sortable.items, classes);
11091          });
11092
11093          removeClass(document.documentElement, this.clsDragState);
11094        },
11095
11096        insert: function insert(element, target) {
11097          var this$1 = this;
11098
11099          addClass(this.items, this.clsItem);
11100
11101          var insert = function insert() {
11102
11103            if (target) {
11104
11105              if (!within(element, this$1.target) || isPredecessor(element, target)) {
11106                before(target, element);
11107              } else {
11108                after(target, element);
11109              }
11110            } else {
11111              append(this$1.target, element);
11112            }
11113          };
11114
11115          if (this.animation) {
11116            this.animate(insert);
11117          } else {
11118            insert();
11119          }
11120        },
11121
11122        remove: function remove(element) {
11123
11124          if (!within(element, this.target)) {
11125            return;
11126          }
11127
11128          if (this.animation) {
11129            this.animate(function () {
11130              return _remove(element);
11131            });
11132          } else {
11133            _remove(element);
11134          }
11135        },
11136
11137        getSortable: function getSortable(element) {
11138          return element && (this.$getComponent(element, 'sortable') || this.get
11138Sortable(element.parentNode));
11139        }
11140
11141      }
11142
11143    };
11144
11145    function isPredecessor(element, target) {
11146      return element.parentNode === target.parentNode && index(element) > index(target);
11147    }
11148
11149    var trackTimer;
11150    function trackScroll(pos) {
11151
11152      var last = Date.now();
11153      trackTimer = setInterval(function () {
11154
11155        var x = pos.x;
11156        var y = pos.y;
11157        y += window.pageYOffset;
11158
11159        var dist = (Date.now() - last) * .3;
11160        last = Date.now();
11161
11162        scrollParents(document.elementFromPoint(x, pos.y)).some(function (scrollEl) {
11163
11164          var scroll = scrollEl.scrollTop;
11165          var scrollHeight = scrollEl.scrollHeight;
11166
11167          var ref = offset(getViewport(scrollEl));
11168          var top = ref.top;
11169          var bottom = ref.bottom;
11170          var height = ref.height;
11171
11172          if (top < y && top + 30 > y) {
11173            scroll -= dist;
11174          } else if (bottom > y && bottom - 30 < y) {
11175            scroll += dist;
11176          } else {
11177            return;
11178          }
11179
11180          if (scroll > 0 && scroll < scrollHeight - height) {
11181            scrollTop(scrollEl, scroll);
11182            return true;
11183          }
11184        });
11185      }, 15);
11186    }
11187
11188    function untrackScroll() {
11189      clearInterval(trackTimer);
11190    }
11191
11192    function appendDrag(container, element) {
11193      var clone = append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2'));
11194
11195      attr(clone, 'style', attr(clone, 'style') + ";margin:0!important");
11196
11197      css(clone, assign({
11198        boxSizing: 'border-box',
11199        width: element.offsetWidth,
11200        height: element.offsetHeight,
11201        overflow: 'hidden'
11202      }, css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));
11203
11204      height(clone.firstElementChild, height(element.firstElementChild));
11205
11206      return clone;
11207    }
11208
11209    var obj$1;
11210
11211    var actives = [];
11212
11213    var tooltip = {
11214
11215      mixins: [Container, Togglable, Position],
11216
11217      args: 'title',
11218
11219      props: {
11220        delay: Number,
11221        title: String
11222      },
11223
11224      data: {
11225        pos: 'top',
11226        title: '',
11227        delay: 0,
11228        animation: ['uk-animation-scale-up'],
11229        duration: 100,
11230        cls: 'uk-active',
11231        clsPos: 'uk-tooltip'
11232      },
11233
11234      beforeConnect: function beforeConnect() {
11235        this._hasTitle = hasAttr(this.$el, 'title');
11236        attr(this.$el, { title: '', 'aria-expanded': false });
11237      },
11238
11239      disconnected: function disconnected() {
11240        this.hide();
11241        attr(this.$el, { title: this._hasTitle ? this.title : null, 'aria-expanded': null });
11242      },
11243
11244      methods: {
11245
11246        show: function show() {
11247          var this$1 = this;
11248
11249          if (this.isActive() || !this.title) {
11250            return;
11251          }
11252
11253          actives.forEach(function (active) {
11254            return active.hide();
11255          });
11256          actives.push(this);
11257
11258          this._unbind = on(document, pointerUp, function (e) {
11259            return !within(e.target, this$1.$el) && this$1.hide();
11260          });
11261
11262          clearTimeout(this.showTimer);
11263          this.showTimer = setTimeout(this._show, this.delay);
11264        },
11265
11266        hide: function hide() {
11267          var this$1 = this;
11268
11269          if (!this.isActive() || matches(this.$el, 'input:focus')) {
11270            return;
11271          }
11272
11273          this.toggleElement(this.tooltip, false, false).then(function () {
11274
11275            actives.splice(actives.indexOf(this$1), 1);
11276
11277            clearTimeout(this$1.showTimer);
11278
11279            this$1.tooltip = _remove(this$1.tooltip);
11280            this$1._unbind();
11281          });
11282        },
11283
11284        _show: function _show() {
11285          var this$1 = this;
11286
11287          this.tooltip = append(this.container, "<div class=\"" + this.clsPos + "\"> <div class=\"" + this.clsPos + "-inner\">" + this.title + "</div> </div>");
11288
11289          on(this.tooltip, 'toggled', function () {
11290
11291            var toggled = this$1.isToggled(this$1.tooltip);
11292
11293            attr(this$1.$el, 'aria-expanded', toggled);
11294
11295            if (!toggled) {
11296              return;
11297            }
11298
11299            this$1.positionAt(this$1.tooltip, this$1.$el);
11300
11301            this$1.origin = this$1.getAxis() === 'y' ? flipPosition(this$1.dir) + "-" + this$1.al
11301ign : this$1.align + "-" + flipPosition(this$1.dir);
11302          });
11303
11304          this.toggleElement(this.tooltip, true);
11305        },
11306
11307        isActive: function isActive() {
11308          return includes(actives, this);
11309        }
11310
11311      },
11312
11313      events: (obj$1 = {
11314
11315        focus: 'show',
11316        blur: 'hide'
11317
11318      }, obj$1[pointerEnter + " " + pointerLeave] = function (e) {
11319        if (isTouch(e)) {
11320          return;
11321        }
11322        e.type === pointerEnter ? this.show() : this.hide();
11323      }, obj$1[pointerDown] = function (e) {
11324        if (!isTouch(e)) {
11325          return;
11326        }
11327        this.isActive() ? this.hide() : this.show();
11328      }, obj$1)
11329
11330    };
11331
11332    var upload = {
11333
11334      props: {
11335        allow: String,
11336        clsDragover: String,
11337        concurrent: Number,
11338        maxSize: Number,
11339        method: String,
11340        mime: String,
11341        msgInvalidMime: String,
11342        msgInvalidName: String,
11343        msgInvalidSize: String,
11344        multiple: Boolean,
11345        name: String,
11346        params: Object,
11347        type: String,
11348        url: String
11349      },
11350
11351      data: {
11352        allow: false,
11353        clsDragover: 'uk-dragover',
11354        concurrent: 1,
11355        maxSize: 0,
11356        method: 'POST',
11357        mime: false,
11358        msgInvalidMime: 'Invalid File Type: %s',
11359        msgInvalidName: 'Invalid File Name: %s',
11360        msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',
11361        multiple: false,
11362        name: 'files[]',
11363        params: {},
11364        type: '',
11365        url: '',
11366        abort: noop,
11367        beforeAll: noop,
11368        beforeSend: noop,
11369        complete: noop,
11370        completeAll: noop,
11371        error: noop,
11372        fail: noop,
11373        load: noop,
11374        loadEnd: noop,
11375        loadStart: noop,
11376        progress: noop
11377      },
11378
11379      events: {
11380
11381        change: function change(e) {
11382
11383          if (!matches(e.target, 'input[type="file"]')) {
11384            return;
11385          }
11386
11387          e.preventDefault();
11388
11389          if (e.target.files) {
11390            this.upload(e.target.files);
11391          }
11392
11393          e.target.value = '';
11394        },
11395
11396        drop: function drop(e) {
11397          stop(e);
11398
11399          var transfer = e.dataTransfer;
11400
11401          if (!transfer || !transfer.files) {
11402            return;
11403          }
11404
11405          removeClass(this.$el, this.clsDragover);
11406
11407          this.upload(transfer.files);
11408        },
11409
11410        dragenter: function dragenter(e) {
11411          stop(e);
11412        },
11413
11414        dragover: function dragover(e) {
11415          stop(e);
11416          addClass(this.$el, this.clsDragover);
11417        },
11418
11419        dragleave: function dragleave(e) {
11420          stop(e);
11421          removeClass(this.$el, this.clsDragover);
11422        }
11423
11424      },
11425
11426      methods: {
11427
11428        upload: function upload(files) {
11429          var this$1 = this;
11430
11431          if (!files.length) {
11432            return;
11433          }
11434
11435          trigger(this.$el, 'upload', [files]);
11436
11437          for (var i = 0; i < files.length; i++) {
11438
11439            if (this.maxSize && this.maxSize * 1000 < files[i].size) {
11440              this.fail(this.msgInvalidSize.replace('%s', this.maxSize));
11441              return;
11442            }
11443
11444            if (this.allow && !match$1(this.allow, files[i].name)) {
11445              this.fail(this.msgInvalidName.replace('%s', this.allow));
11446              return;
11447            }
11448
11449            if (this.mime && !match$1(this.mime, files[i].type)) {
11450              this.fail(this.msgInvalidMime.replace('%s', this.mime));
11451              return;
11452            }
11453          }
11454
11455          if (!this.multiple) {
11456            files = [files[0]];
11457          }
11458
11459          this.beforeAll(this, files);
11460
11461          var chunks = chunk(files, this.concurrent);
11462          var upload = function upload(files) {
11463
11464            var data = new FormData();
11465
11466            files.forEach(function (file) {
11467              return data.append(this$1.name, file);
11468            });
11469
11470            for (var key in this$1.params) {
11471              data.append(key, this$1.params[key]);
11472            }
11473
11474            ajax(this$1.url, {
11475              data: data,
11476              method: this$1.method,
11477              responseType: this$1.type,
11478              beforeSend: function beforeSend(env) {
11479
11480                var xhr = env.xhr;
11481                xhr.upload && on(xhr.upload, 'progress', this$1.progress);
11482                ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) {
11483                  return on(xhr, type.toLowerCase(), this$1[type]);
11484                });
11485
11486                this$1.beforeSend(env);
11487              }
11488            }).then(function (xhr) {
11489
11490              this$1.complete(xhr);
11491
11492              if (chunks.length) {
11493                upload(chunks.shift());
11494              } else {
11495                this$1.completeAll(xhr);
11496              }
11497            }, function (e) {
11498              return this$1.error(e);
11499            });
11500          };
11501
11502          upload(chunks.shift());
11503        }
11504
11505      }
11506
11507    };
11508
11509    function match$1(pattern, path) {
11510      return path.match(new RegExp("^" + pattern.replace(/\//g, '\\/').replace(/\*\*/g, '(\\/[^\\/]+)*').replace(/\*/g, '[^\\/]+').replace(/((?!\\))\?/g, '$1.') + "$", 'i'));
11511    }
11512
11513    function chunk(files, size) {
11514      var chunks = [];
11515      for (var i = 0; i < files.length; i += size) {
11516        var chunk = [];
11517        for (var j = 0; j < size; j++) {
11518          chunk.push(files[i + j]);
11519        }
11520        chunks.push(chunk);
11521      }
11522      return chunks;
11523    }
11524
11525    function stop(e) {
11526      e.preventDefault();
11527      e.stopPropagation();
11528    }
11529
11530    var components$1 = /*#__PURE__*/Object.freeze({
11531      __proto__: null,
11532      Countdown: countdown,
11533      Filter: filter$1,
11534      Lightbox: lightbox,
11535      LightboxPanel: LightboxPanel,
11536      Notification: notification,
11537      Parallax: parallax,
11538      Slider: slider,
11539      SliderParallax: sliderParallax,
11540      Slideshow: slideshow,
11541      SlideshowParallax: sliderParallax,
11542      Sortable: sortable,
11543      Tooltip: tooltip,
11544      Upload: upload
11545    });
11546
11547    each(components$1, function (component, name) {
11548      return UIkit.component(name, component);
11549    });
11550
11551    return UIkit;
11552  });
11553});
11554
11555var uikitIcons = createCommonjsModule(function (module, exports) {
11556  /*! UIkit 3.5.7 | https://www.getuikit.com | (c) 2014 - 2020 YOOtheme | MIT License */
11557
11558  (function (global, factory) {
11559    module.exports = factory();
11560  })(commonjsGlobal, function () {
11561    'use strict';
11562
11563    function plugin(UIkit) {
11564
11565      if (plugin.installed) {
11566        return;
11567      }
11568
11569      UIkit.icon.add({
11570        "500px": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg
vendor: 3,152 bytes, lines 11570-11571
11570\"><path d=\"M9.624,11.866c-0.141,0.132,0.479,0.658,0.662,0.418c0.051-0.046,0.607-0.61,0.662-0.664c0,0,0.738,0.719,0.814,0.719 c0.1,0,0.207-0.055,0.322-0.17c0.27-0.269,0.135-0.416,0.066-0.495l-0.631-0.616l0.658-0.668c0.146-0.156,0.021-0.314-0.1-0.449 c-0.182-0.18-0.359-0.226-0.471-0.125l-0.656,0.654l-0.654-0.654c-0.033-0.034-0.08-0.045-0.124-0.045 c-0.079,0-0.191,0.068-0.307,0.181c-0.202,0.202-0.247,0.351-0.133,0.462l0.665,0.665L9.624,11.866z\"/><path d=\"M11.066,2.884c-1.061,0-2.185,0.248-3.011,0.604c-0.087,0.034-0.141,0.106-0.15,0.205C7.893,3.784,7.919,3.909,7.982,4.066 c0.05,0.136,0.187,0.474,0.452,0.372c0.844-0.326,1.779-0.507,2.633-0.507c0.963,0,1.9,0.191,2.781,0.564 c0.695,0.292,1.357,0.719,2.078,1.34c0.051,0.044,0.105,0.068,0.164,0.068c0.143,0,0.273-0.137,0.389-0.271 c0.191-0.214,0.324-0.395,0.135-0.575c-0.686-0.654-1.436-1.138-2.363-1.533C13.24,3.097,12.168,2.884,11.066,2.884z\"/><path d=\"M16.43,15.747c-0.092-0.028-0.242,0.05-0.309,0.119l0,0c-0.652,0.652-1.42,1.169-2.268,1.521 c-0.877,0.371-1.814,0.551-2.779,0.551c-0.961,0-1.896-0.189-2.775-0.564c-0.848-0.36-1.612-0.879-2.268-1.53 c-0.682-0.688-1.196-1.455-1.529-2.268c-0.325-0.799-0.471-1.643-0.471-1.643c-0.045-0.24-0.258-0.249-0.567-0.203 c-0.128,0.021-0.519,0.079-0.483,0.36v0.01c0.105,0.644,0.289,1.284,0.545,1.895c0.417,0.969,1.002,1.849,1.756,2.604 c0.757,0.754,1.636,1.34,2.604,1.757C8.901,18.785,9.97,19,11.088,19c1.104,0,2.186-0.215,3.188-0.645 c1.838-0.896,2.604-1.757,2.604-1.757c0.182-0.204,0.227-0.317-0.1-0.643C16.779,15.956,16.525,15.774,16.43,15.747z\"/><path d=\"M5.633,13.287c0.293,0.71,0.723,1.341,1.262,1.882c0.54,0.54,1.172,0.971,1.882,1.264c0.731,0.303,1.509,0.461,2.298,0.461 c0.801,0,1.578-0.158,2.297-0.461c0.711-0.293,1.344-0.724,1.883-1.264c0.543-0.541,0.971-1.172,1.264-1.882 c0.314-0.721,0.463-1.5,0.463-2.298c0-0.79-0.148-1.569-0.463-2.289c-0.293-0.699-0.721-1.329-1.264-1.881 c-0.539-0.541-1.172-0.959-1.867-1.263c-0.721-0.303-1.5-0.461-2.299-0.461c-0.802,0-1.613,0.159-2.322,0.461 c-0.577,0.25-1.544,0.867-2.119,1.454v0.012V2.108h8.16C15.1,2.104,15.1,1.69,15.1,1.552C15.1,1.417,15.1,1,14.809,1H5.915 C5.676,1,5.527,1.192,5.527,1.384v6.84c0,0.214,0.273,0.372,0.529,0.428c0.5,0.105,0.614-0.056,0.737-0.224l0,0 c0.18-0.273,0.776-0.884,0.787-0.894c0.901-0.905,2.117-1.408,3.416-1.408c1.285,0,2.5,0.501,3.412,1.408 c0.914,0.914,1.408,2.122,1.408,3.405c0,1.288-0.508,2.496-1.408,3.405c-0.9,0.896-2.152,1.406-3.438,1.406 c-0.877,0-1.711-0.229-2.433-0.671v-4.158c0-0.553,0.237-1.151,0.643-1.614c0.462-0.519,1.094-0.799,1.782-0.799 c0.664,0,1.293,0.253,1.758,0.715c0.459,0.459,0.709,1.071,0.709,1.723c0,1.385-1.094,2.468-2.488,2.468 c-0.273,0-0.769-0.121-0.781-0.125c-0.281-0.087-0.405,0.306-0.438,0.436c-0.159,0.496,0.079,0.585,0.123,0.607 c0.452,0.137,0.743,0.157,1.129,0.157c1.973,0,3.572-1.6,3.572-3.57c0-1.964-1.6-3.552-3.572-3.552c-0.97,0-1.872,0.36-2.546,1.038 c-0.656,0.631-1.027,1.487-1.027,2.322v3.438v-0.011c-0.372-0.42-0.732-1.041-0.981-1.682c-0.102-0.248-0.315-0.202-0.607-0.113 c-0.135,0.035-0.519,0.157-0.44,0.439C5.372,12.799,5.577,13.164,5.633,13.287z\"/></svg>",
11571        "album": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"
11571 xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"5\" y=\"2\" width=\"10\" height=\"1\"/><rect x=\"3\" y=\"4\" width=\"14\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"6.5\" width=\"17\" height=\"11\"/></svg>",
11572        "arrow-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,16.08 5.63,10.66 6.37,10 10.5,14.58 14.63,10 15.37,10.66\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"4\" x2=\"10.5\" y2=\"15\"/></svg>",
11573        "arrow-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 14 5 9.5 10 5\"/><line fill=\"none\" stroke=\"#000\" x1=\"16\" y1=\"9.5\" x2=\"5\" y2=\"9.52\"/></svg>",
11574        "arrow-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 5 15 9.5 10 14\"/><line fill=\"none\" stroke=\"#000\" x1=\"4\" y1=\"9.5\" x2=\"15\" y2=\"9.5\"/></svg>",
11575        "arrow-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,4 15.37,9.4 14.63,10.08 10.5,5.49 6.37,10.08 5.63,9.4\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"16\" x2=\"10.5\" y2=\"5\"/></svg>",
11576        "ban": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"4\" y1=\"3.5\" x2=\"16\" y2=\"16.5\"/></svg>",
11577        "behance": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5,10.6c-0.4-0.5-0.9-0.9-1.6-1.1c1.7-1,2.2-3.2,0.7-4.7C7.8,4,6.3,4,5.2,4C3.5,4,1.7,4,0,4v12c1.7,0,3.4,0,5.2,0 c1,0,2.1,0,3.1-0.5C10.2,14.6,10.5,12.3,9.5,10.6L9.5,10.6z M5.6,6.1c1.8,0,1.8,2.7-0.1,2.7c-1,0-2,0-2.9,0V6.1H5.6z M2.6,13.8v-3.1 c1.1,0,2.1,0,3.2,0c2.1,0,2.1,3.2,0.1,3.2L2.6,13.8z\"/><path d=\"M19.9,10.9C19.7,9.2,18.7,7.6,17,7c-4.2-1.3-7.3,3.4-5.3,7.1c0.9,1.7,2.8,2.3,4.7,2.1c1.7-0.2,2.9-1.3,3.4-2.9h-2.2 c-0.4,1.3-2.4,1.5-3.5,0.6c-0.4-0.4-0.6-1.1-0.6-1.7H20C20,11.7,19.9,10.9,19.9,10.9z M13.5,10.6c0-1.6,2.3-2.7,3.5-1.4 c0.4,0.4,0.5,0.9,0.6,1.4H13.5L13.5,10.6z\"/><rect x=\"13\" y=\"4\" width=\"5\" height=\"1.4\"/></svg>",
11578        "bell": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17,15.5 L3,15.5 C2.99,14.61 3.79,13.34 4.1,12.51 C4.58,11.3 4.72,10.35 5.19,7.01 C5.54,4.53 5.89,3.2 7.28,2.16 C8.13,1.56 9.37,1.5 9.81,1.5 L9.96,1.5 C9.96,1.5 11.62,1.41 12.67,2.17 C14.08,3.2 14.42,4.54 14.77,7.02 C15.26,10.35 15.4,11.31 15.87,12.52 C16.2,13.34 17.01,14.61 17,15.5 L17,15.5 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M12.39,16 C12.39,17.37 11.35,18.43 9.91,18.43 C8.48,18.43 7.42,17.37 7.42,16\"/></svg>",
11579        "bold": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5,15.3 C5.66,15.3 5.9,15 5.9,14.53 L5.9,5.5 C5.9,4.92 5.56,4.7 5,4.7 L5,4 L8.95,4 C12.6,4 13.7,5.37 13.7,6.9 C13.7,7.87 13.14,9.17 10.86,9.59 L10.86,9.7 C13.25,9.86 14.29,11.28 14.3,12.54 C14.3,14.47 12.94,16 9,16 L5,16 L5,15.3 Z M9,9.3 C11.19,9.3 11.8,8.5 11.85,7 C11.85,5.65 11.3,4.8 9,4.8 L7.67,4.8 L7.67,9.3 L9,9.3 Z M9.185,15.22 C11.97,15 12.39,14 12.4,12.58 C12.4,11.
1157915 11.39,10 9,10 L7.67,10 L7.67,15 L9.18,15 Z\"/></svg>",
11580        "bolt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.74,20 L7.73,12 L3,12 L15.43,1 L12.32,9 L17.02,9 L4.74,20 L4.74,20 L4.74,20 Z M9.18,11 L7.1,16.39 L14.47,10 L10.86,10 L12.99,4.67 L5.61,11 L9.18,11 L9.18,11 L9.18,11 Z\"/></svg>",
11581        "bookmark": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"5.5 1.5 15.5 1.5 15.5 17.5 10.5 12.5 5.5 17.5\"/></svg>",
11582        "calendar": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z\"/><rect width=\"1\" height=\"3\" x=\"6\" y=\"2\"/><rect width=\"1\" height=\"3\" x=\"13\" y=\"2\"/></svg>",
11583        "camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10.8\" r=\"3.8\"/><path fill=\"none\" stroke=\"#000\" d=\"M1,4.5 C0.7,4.5 0.5,4.7 0.5,5 L0.5,17 C0.5,17.3 0.7,17.5 1,17.5 L19,17.5 C19.3,17.5 19.5,17.3 19.5,17 L19.5,5 C19.5,4.7 19.3,4.5 19,4.5 L13.5,4.5 L13.5,2.9 C13.5,2.6 13.3,2.5 13,2.5 L7,2.5 C6.7,2.5 6.5,2.6 6.5,2.9 L6.5,4.5 L1,4.5 L1,4.5 Z\"/></svg>",
11584        "cart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"7.3\" cy=\"17.3\" r=\"1.4\"/><circle cx=\"13.3\" cy=\"17.3\" r=\"1.4\"/><polyline fill=\"none\" stroke=\"#000\" points=\"0 2 3.2 4 5.3 12.5 16 12.5 18 6.5 8 6.5\"/></svg>",
11585        "check": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"4,10 8,15 17,4\"/></svg>",
11586        "chevron-double-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 14 6 10 10 6\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"14 14 10 10 14 6\"/></svg>",
11587        "chevron-double-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 6 14 10 10 14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"6 6 10 10 6 14\"/></svg>",
11588        "chevron-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"16 7 10 13 4 7\"/></svg>",
11589        "chevron-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"13 16 7 10 13 4\"/></svg>",
11590        "chevron-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"7 4 13 10 7 16\"/></svg>",
11591        "chevron-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"4 13 10 7 16 13\"/></svg>",
11592        "clock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>",
11593        "close": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,16 L4,4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,4 L4,16\"/></svg>",
11594        "cloud-download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.3,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.3
115941,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"11.75 16 9.5 18.25 7.25 16\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>",
11595        "cloud-upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.31,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.31,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"7.25 11.75 9.5 9.5 11.75 11.75\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>",
11596        "code": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"13,4 19,10 13,16\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"7,4 1,10 7,16\"/></svg>",
11597        "cog": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"9.997\" cy=\"10\" r=\"3.31\"/><path fill=\"none\" stroke=\"#000\" d=\"M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z\"/></svg>",
11598        "comment": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,18.71 L6,14 L1,14 L1,1 L19,1 L19,14 L10.71,14 L6,18.71 L6,18.71 Z M2,13 L7,13 L7,16.29 L10.29,13 L18,13 L18,2 L2,2 L2,13 L2,13 Z\"/></svg>",
11599        "commenting": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"1.5,1.5 18.5,1.5 18.5,13.5 10.5,13.5 6.5,17.5 6.5,13.5 1.5,13.5\"/><circle cx=\"10\" cy=\"8\" r=\"1\"/><circle cx=\"6\" cy=\"8\" r=\"1\"/><circle cx=\"14\" cy=\"8\" r=\"1\"/></svg>",
11600        "comments": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"2 0.5 19.5 0.5 19.5 13\"/><path d=\"M5,19.71 L5,15 L0,15 L0,2 L18,2 L18,15 L9.71,15 L5,19.71 L5,19.71 L5,19.71 Z M1,14 L6,14 L6,17.29 L9.29,14 L17,14 L17,3 L1,3 L1,14 L1,14 L1,14 Z\"/></svg>",
11601        "copy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"2.5\" width=\"12\" height=\"16\"/><polyline fill=\"none\" stroke=\"#000\" points=\"5 0.5 17.5 0.5 17.5 17\"/></svg>",
11602        "credit-card": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"4.5\" width=\"17\" height=\"12\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"3\"/></svg>",
11603        "database": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"4.64\" rx=\"7.5\" ry=\"3.14\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64\"/></svg>",
11604        "desktop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"8\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"11\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"16\" width=\"10\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"3.5\" width=\"17\" height=\"11\"/></svg>",
11605        "download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"14,10 9.5,14.5 5,10\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"13.91\" x2=\"9.5\" y2=\"3\"/></svg>",
11606        "dribbble": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M1.3,8.9c0,0,5,0.1,8.6-1c1.4-0.4,2.6-0.9,4-1.9 c1.4-1.1,2.5-2.5,2.5-2.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M3.9,16.6c0,0,1.7-2.8,3.5-4.2 c1.8-1.3,4-2,5.7-2.2C16,10,19,10.6,19,10.6\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M6.9,1.6c0,0,3.3,4.6,4.2,6.8 c0.4,0.9,1.3,3.1,1.9,5.2c0.6,2,0.9,4.4,0.9,4.4\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
11607        "etsy": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"><path d=\"M8,4.26C8,4.07,8,4,8.31,4h4.46c.79,0,1.22.67,1.53,1.91l.25,1h.76c.14-2.82.26-4,.26-4S13.65,3,12.52,3H6.81L3.75,2.92v.84l1,.2c.73.11.9.27,1,1,0,0,.06,2,.06,5.17s-.06,5.14-.06,5.14c0,.59-.23.81-1,.94l-1,.2v.84l3.06-.1h5.11c1.15,0,3.82.1,3.82.1,0-.7.45-3.88.51-4.22h-.73l-.76,1.69a2.25,2.25,0,0,1-2.45,1.47H9.4c-1,0-1.44-.4-1.44-1.24V10.44s2.16,0,2.86.06c.55,0,.85.19,1.06,1l.23,1H13L12.9,9.94,13,7.41h-.85l-.28,1.13c-.16.74-.28.84-1,1-1,.1-2.89.09-2.89.09Z\"/></svg>",
11608        "expand": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13 2 18 2 18 7 17 7 17 3 13 3\"/><polygon points=\"2 13 3 13 3 17 7 17 7 18 2 18\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11,9 L17,3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M3,17 L9,11\"/></svg>",
11609        "facebook": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11,10h2.6l0.4-3H11V5.3c0-0.9,0.2-1.5,1.5-1.5H14V1.1c-0.3,0-1-0.1-2.1-0.1C9.6,1,8,2.4,8,5v2H5.5v3H8v8h3V10z\"/></svg>",
11610        "file-edit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M18.65,1.68 C18.41,1.45 18.109,1.33 17.81,1.33 C17.499,1.33 17.209,1.45 16.98,1.68 L8.92,9.76 L8,12.33 L10.55,11.41 L18.651,3.34 C19.12,2.87 19.12,2.15 18.65,1.68 L18.65,1.68 L18.65,1.68 Z\"/><polyline fill=\"none\" stroke=\"#000\" points=\"16.5 8.482 16.5 18.5 3.5 18.5 3.5 1.5 14.211 1.5\"/></svg>",
11611        "file-pdf": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><path d=\"M14.65 11.67c-.48.3-1.37-.19-1.79-.37a4.65 4.65 0 0 1 1.49.06c.35.1.36.28.3.31zm-6.3.06l.43-.79a14.7 14.7 0 0 0 .75-1.64 5.48 5.48 0 0 0 1.25 1.55l.2.15a16.36 16.36 0 0 0-2.63.73zM9.5 5.32c.2 0 .32.5.32.97a1.99 1.99 0 0 1-.23 1.04 5.05 5.05 0 0 1-.17-1.3s0-.71.08-.71zm-3.9 9a4.35 4.35 0 0 1 1.21-1.46l.24-.22a4.35 4.35 0 0 1-1.46 1.68zm9.23-3.3a2.05 2.05 0 0 0-1.32-.3 11.07 11.07 0 0 0-1.58.11 4.09 4.09 0 0 1-.74-.5 5.39 5.39 0 0 1-1.32-2.06 10.37 10.37 0 0 0 .28-2.62 1.83 1.83 0 0 0-.07-.25.57.57 0 0 0-.52-.4H9.4a.59.59 0 0 0-.6.38 6.95 6.95 0 0 0 .37 3.14c-.26.63-1 2.12-1 2.12-.3.58-.57 1.08-.82 1.5l-.8.44A3.11 3.11 0 0 0 5 14.16a.39.39 0 0 0 .15.42l.24.13c1.15.56 2.28-1.74 2.66-2.42a23.1 23.1 0 0 1 3.59-.85 4.56 4.56 0 0 0 2.91.8.5.5 0 0 0 .3-.21 1.1 1.1 0 0 0 .12-.75.84.84 0 0 0-.14-.25z\"/></svg>",
11612        "file-text": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"12\" y1=\"12.5\" y2=\"12.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"8.5\" y2=\"8.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"6.5\" y2=\"6.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"10.5\" y2=\"10.5\"/></svg>",
11613        "file": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"1.5\" width=\"13\" height=\"17\"/></svg>",
11614        "flickr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5.5\" cy=\"9.5\" r=\"3.5\"/><circle cx=\"14.5\" cy=\"9.5\" r=\"3.5\"/></svg>",
11615        "folder": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"9.5 5.5 8.5 3.5 1.5 3.5 1.5 16.5 18.5 16.5 18.5 5.5\"/></svg>",
11616        "forward": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.47,13.11 C4.02,10.02 6.27,7.85 9.04,6.61 C9.48,6.41 10.27,6.13 11,5.91 L11,2 L18.89,9 L11,16 L11,12.13 C9.25,12.47 7.58,13.19 6.02,14.25 C3.03,16.28 1.63,18.54 1.63,18.54 C1.63,18.54 1.38,15.28 2.47,13.11 L2.47,13.11 Z M5.3,13.53 C6.92,12.4 9.04,11.4 12,10.92 L12,13.63 L17.36,9 L12,4.25 L12,6.8 C11.71,6.86 10.86,7.02 9.67,7.49 C6.79,8.65 4.58,10.96 3.49,13.08 C3.18,13.7 2.68,14.87 2.49,16 C3.28,15.05 4.4,14.15 5.3,13.53 L5.3,13.53 Z\"/></svg>",
11617        "foursquare": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.23,2 C15.96,2 16.4,2.41 16.5,2.86 C16.57,3.15 16.56,3.44 16.51,3.73 C16.46,4.04 14.86,11.72 14.75,12.03 C14.56,12.56 14.16,12.82 13.61,12.83 C13.03,12.84 11.09,12.51 10.69,13 C10.38,13.38 7.79,16.39 6.81,17.53 C6.61,17.76 6.4,17.96 6.08,17.99 C5.68,18.04 5.29,17.87 5.17,17.45 C5.12,17.28 5.1,17.09 5.1,16.91 C5.1,12.4 4.86,7.81 5.11,3.31 C5.17,2.5 5.81,2.12 6.53,2 L15.23,2 L15.23,2 Z M9.76,11.42 C9.94,11.19 10.17,11.1 10.45,11.1 L12.86,11.1 C13.12,11.1 13.31,10.94 13.36,10.69 C13.37,10.64 13.62,9.41 13.74,8.83 C13.81,8.52 13.53,8.28 13.27,8.28 C12.35,8.29 11.42,8.28 10.5,8.28 C9.84,8.28 9.83,7.69 9.82,7.21 C9.8,6.85 10.13,6.55 10.5,6.55 C11.59,6.56 12.67,6.55 13.76,6.55 C14.03,6.55 14.23,6.4 14.28,6.14 C14.34,5.87 14.67,4.29 14.67,4.29 C14.67,4.29 14.82,3.74 14.19,3.74 L7.34,3.74 C7,3.75 6.84,4.02 6.84,4.33 C6.84,7.58 6.85,14.95 6.85,14.99 C6.87,15 8.89,12.51 9.76,11.42 L9.76,11.42 Z\"/></svg>",
11618        "future": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline points=\"19 2 18 2 18 6 14 6 14 7 19 7 19 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M18,6.548 C16.709,3.29 13.354,1 9.6,1 C4.6,1 0.6,5 0.6,10 C0.6,15 4.6,19 9.6,19 C14.6,19 18.6,15 18.6,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path d=\"M13.018,14.197 L9.445,10.625\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\"/></svg>",
11619        "git-branch": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"3\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14\" cy=\"6\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"17\" r=\"2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M14,8 C14,10.41 12.43,10.87 10.56,11.25 C9.09,11.54 7,12.06 7,15 L7,5\"/></svg>",
11620        "git-fork": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"5.79\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14.19\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"10.03\" cy=\"16.79\" r=\"1.79\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M5.79,4.57 L5.79,6.56 C5.79,9.19 10.03,10.22 10.03,13.31 C10.03,14.86 10.04,14.55 10.04,14.55 C10.04,14.37 10.04,14.86 10.04,13.31 C10.04,10.22 14.2,9.19 14.2,6.56 L14.2,4.57\"/></svg>",
11621        "github-alt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.75,0.5 0.5,4.76 0.5,10.01 C0.5,15.26 4.75,19.51 10,19.51 C15.24,19.51 19.5,15.26 19.5,10.01 C19.5,4.76 15.25,0.5 10,0.5 L10,0.5 Z M12.81,17.69 C12.81,17.69 12.81,17.7 12.79,17.69 C12.47,17.75 12.35,17.59 12.35,17.36 L12.35,16.17 C12.35,15.45 12.09,14.92 11.58,14.56 C12.2,14.51 12.77,14.39 13.26,14.21 C13.87,13.98 14.36,13.69 14.74,13.29 C15.42,12.59 15.76,11.55 15.76,10.17 C15.76,9.25 15.45,8.46 14.83,7.8 C15.1,7.08 15.07,6.29 14.75,5.44 L14.51,5.42 C14.34,5.4 14.06,5.46 13.67,5.61 C13.25,5.78 12.79,6.03 12.31,6.35 C11.55,6.16 10.81,6.05 10.09,6.05 C9.36,6.05 8.61,6.15 7.88,6.35 C7.28,5.96 6.75,5.68 6.26,5.54 C6.07,5.47 5.9,5.44 5.78,5.44 L5.42,5.44 C5.06,6.29 5.04,7.08 5.32,7.8 C4.7,8.46 4.4,9.25 4.4,10.17 C4.4,11.94 4.96,13.16 6.08,13.84 C6.53,14.13 7.05,14.32 7.69,14.43 C8.03,14.5 8.32,14.54 8.55,14.55 C8.07,14.89 7.82,15.42 7.82,16.16 L7.82,17.51 C7.8,17.69 7.7,17.8 7.51,17.8 C4.21,16.74 1.82,13.65 1.82,10.01 C1.82,5.5 5.49,1.83 10,1.83 C14.5,1.83 18.17,5.5 18.17,10.01 C18.18,13.53 15.94,16.54 12.81,17.69 L12.81,17.69 Z\"/></svg>",
11622        "github": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,1 C5.03,1 1,5.03 1,10 C1,13.98 3.58,17.35 7.16,18.54 C7.61,18.62 7.77,18.34 7.77,18.11 C7.77,17.9 7.76,17.33 7.76,16.58 C5.26,17.12 4.73,15.37 4.73,15.37 C4.32,14.33 3.73,14.05 3.73,14.05 C2.91,13.5 3.79,13.5 3.79,13.5 C4.69,13.56 5.17,14.43 5.17,14.43 C5.97,15.8 7.28,15.41 7.79,15.18 C7.87,14.6 8.1,14.2 8.36,13.98 C6.36,13.75 4.26,12.98 4.26,9.53 C4.26,8.55 4.61,7.74 5.19,7.11 C5.1,6.88 4.79,5.97 5.28,4.73 C5.28,4.73 6.04,4.49 7.75,5.65 C8.47,5.45 9.24,5.35 10,5.35 C10.76,5.35 11.53,5.45 12.25,5.65 C13.97,4.48 14.72,4.73 14.72,4.73 C15.21,5.97 14.9,6.88 14.81,7.11 C15.39,7.74 15.73,8.54 15.73,9.53 C15.73,12.99 13.63,13.75 11.62,13.97 C11.94,14.25 12.23,14.8 12.23,15.64 C12.23,16.84 12.22,17.81 12.22,18.11 C12.22,18.35 12.38,18.63 12.84,18.54 C16.42,17.35 19,13.98 19,10 C19,5.03 14.97,1 10,1 L10,1 Z\"/></svg>",
11623        "gitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3.5\" y=\"1\" width=\"1.531\" height=\"11.471\"/><rect x=\"7.324\" y=\"4.059\" width=\"1.529\" height=\"15.294\"/><rect x=\"11.148\" y=\"4.059\" width=\"1.527\" height=\"15.294\"/><rect x=\"14.971\" y=\"4.059\" width=\"1.529\" height=\"8.412\"/></svg>",
11624        "google-plus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.9,9c0,2.7-0.6,5-3.2,6.3c-3.7,1.8-8.1,0.2-9.4-3.6C-1.1,7.6,1.9,3.3,6.1,3c1.7-0.1,3.2,0.3,4.6,1.3 c0.1,0.1,0.3,0.2,0.4,0.4c-0.5,0.5-1.2,1-1.7,1.6c-1-0.8-2.1-1.1-3.5-0.9C5,5.6,4.2,6,3.6,6.7c-1.3,1.3-1.5,3.4-0.5,5 c1,1.7,2.6,2.3,4.6,1.9c1.4-0.3,2.4-1.2,2.6-2.6H6.9V9H12.9z\"/><polygon points=\"20,9 20,11 18,11 18,13 16,13 16,11 14,11 14,9 16,9 16,7 18,7 18,9\"/></svg>",
11625        "google": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.86,9.09 C18.46,12.12 17.14,16.05 13.81,17.56 C9.45,19.53 4.13,17.68 2.47,12.87 C0.68,7.68 4.22,2.42 9.5,2.03 C11.57,1.88 13.42,2.37 15.05,3.65 C15.22,3.78 15.37,3.93 15.61,4.14 C14.9,4.81 14.23,5.45 13.5,6.14 C12.27,5.08 10.84,4.72 9.28,4.98 C8.12,5.17 7.16,5.76 6.37,6.63 C4.88,8.27 4.62,10.86 5.76,12.82 C6.95,14.87 9.17,15.8 11.57,15.25 C13.27,14.87 14.76,13.33 14.89,11.75 L10.51,11.75 L10.51,9.09 L17.86,9.09 L17.86,9.09 Z\"/></svg>",
11626        "grid": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"2\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"8\" width=\"3\" height=\"3\"/
11626><rect x=\"2\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"14\" width=\"3\" height=\"3\"/></svg>",
11627        "happy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"13\" cy=\"7\" r=\"1\"/><circle cx=\"7\" cy=\"7\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"8.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M14.6,11.4 C13.9,13.3 12.1,14.5 10,14.5 C7.9,14.5 6.1,13.3 5.4,11.4\"/></svg>",
11628        "hashtag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.431,8 L15.661,7 L12.911,7 L13.831,3 L12.901,3 L11.98,7 L9.29,7 L10.21,3 L9.281,3 L8.361,7 L5.23,7 L5,8 L8.13,8 L7.21,12 L4.23,12 L4,13 L6.98,13 L6.061,17 L6.991,17 L7.911,13 L10.601,13 L9.681,17 L10.611,17 L11.531,13 L14.431,13 L14.661,12 L11.76,12 L12.681,8 L15.431,8 Z M10.831,12 L8.141,12 L9.061,8 L11.75,8 L10.831,12 Z\"/></svg>",
11629        "heart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" d=\"M10,4 C10,4 8.1,2 5.74,2 C3.38,2 1,3.5
116295 1,6.73 C1,8.84 2.67,10.44 2.67,10.44 L10,18 L17.33,10.44 C17.33,10.44 19,8.84 19,6.73 C19,3.55 16.62,2 14.26,2 C11.9,2 10,4 10,4 L10,4 Z\"/></svg>",
11630        "history": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"#000\" points=\"1 2 2 2 2 6 6 6 6 7 1 7 1 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2.1,6.548 C3.391,3.29 6.746,1 10.5,1 C15.5,1 19.5,5 19.5,10 C19.5,15 15.5,19 10.5,19 C5.5,19 1.5,15 1.5,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>",
11631        "home": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"18.65 11.35 10 2.71 1.35 11.35 0.65 10.65 10 1.29 19.35 10.65\"/><polygon points=\"15 4 18 4 18 7 17 7 17 5 15 5\"/><polygon points=\"3 11 4 11 4 18 7 18 7 12 12 12 12 18 16 18 16 11 17 11 17 19 11 19 11 13 8 13 8 19 3 19\"/></svg>",
11632        "image": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"16.1\" cy=\"6.1\" r=\"1.1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"2.5\" width=\"19\" height=\"15\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"4,13 8,9 13,14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"11,12 12.5,10.5 16,14\"/></svg>",
11633        "info": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
11634        "instagram": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.55,1H6.46C3.45,1,1,3.44,1,6.44v7.12c0,3,2.45,5.44,5.46,5.44h7.08c3.02,0,5.46-2.44,5.46-5.44V6.44 C19.01,3.44,16.56,1,13.55,1z M17.5,14c0,1.93-1.57,3.5-3.5,3.5H6c-1.93,0-3.5-1.57-3.5-3.5V6c0-1.93,1.57-3.5,3.5-3.5h8 c1.93,0,3.5,1.57,3.5,3.5V14z\"/><circle cx=\"14.87\" cy=\"5.26\" r=\"1.09\"/><path d=\"M10.03,5.45c-2.55,0-4.63,2.06-4.63,4.6c0,2.55,2.07,4.61,4.63,4.61c2.56,0,4.63-2.061,4.63-4.61 C14.65,7.51,12.58,5.45,10.03,5.45L10.03,5.45L10.03,5.45z M10.08,13c-1.66,0-3-1.34-3-2.99c0-1.65,1.34-2.99,3-2.99s3,1.34,3,2.99 C13.08,11.66,11.74,13,10.08,13L10.08,13L10.08,13z\"/></svg>",
11635        "italic": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.63,5.48 L10.15,14.52 C10,15.08 10.37,15.25 11.92,15.3 L11.72,16 L6,16 L6.2,15.31 C7.78,15.26 8.19,15.09 8.34,14.53 L10.82,5.49 C10.97,4.92 10.63,4.76 9.09,4.71 L9.28,4 L15,4 L14.81,4.69 C13.23,4.75 12.78,4.91 12.63,5.48 L12.63,5.48 Z\"/></svg>",
11636        "joomla": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.8,13.4l1.7-1.7L5.9,8c-0.6-0.5-0.6-1.5,0-2c0.6-0.6,1.4-0.6,2,0l1.7-1.7c-1-1-2.3-1.3-3.6-1C5.8,2.2,4.8,1.4,3.7,1.4 c-1.3,0-2.3,1-2.3,2.3c0,1.1,0.8,2,1.8,2.3c-0.4,1.3-0.1,2.8,1,3.8L7.8,13.4L7.8,13.4z\"/><path d=\"M10.2,4.3c1-1,2.5-1.4,3.8-1c0.2-1.1,1.1-2,2.3-2c1.3,0,2.3,1,2.3,2.3c0,1.2-0.9,2.2-2,2.3c0.4,1.3,0,2.8-1,3.8L13.9,8 c0.6-0.5,0.6-1.5,0-2c-0.5-0.6-1.5-0.6-2,0L8.2,9.7L6.5,8\"/><path d=\"M14.1,16.8c-1.3,0.4-2.8,0.1-3.8-1l1.7-1.7c0.6,0.6,1.5,0.6,2,0c0.5-0.6,0.6-1.5,0-2l-3.7-3.7L12,6.7l3.7,3.7 c1,1,1.3,2.4,1,3.6c1.1,0.2,2,1.1,2,2.3c0,1.3-1,2.3-2.3,2.3C15.2,18.6,14.3,17.8,14.1,16.8\"/><path d=\"M13.2,12.2l-3.7,3.7c-1,1-2.4,1.3-3.6,1c-0.2,1-1.2,1.8-2.2,1.8c-1.3,0-2.3-1-2.3-2.3c0-1.1,0.8-2,1.8-2.3 c-0.3-1.3,0-2.7,1-3.7l1.7,1.7c-0.6,0.6-0.6,1.5,0,2c0.6,0.6,1.4,0.6,2,0l3.7-3.7\"/></svg>",
11637        "laptop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"16\" width=\"20\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"2.5\" y=\"4.5\" width=\"15\" height=\"10\"/></svg>",
11638        "lifesaver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.76,0.5 0.5,4.76 0.5,10 C0.5,15.24 4.76,19.5 10,19.5 C15.24,19.5 19.5,15.24 19.5,10 C19.5,4.76 15.24,0.5 10,0.5 L10,0.5 Z M10,1.5 C11.49,1.5 12.89,1.88 14.11,2.56 L11.85,4.82 C11.27,4.61 10.65,4.5 10,4.5 C9.21,4.5 8.47,4.67 7.79,4.96 L5.58,2.75 C6.87,1.95 8.38,1.5 10,1.5 L10,1.5 Z M4.96,7.8 C4.67,8.48 4.5,9.21 4.5,10 C4.5,10.65 4.61,11.27 4.83,11.85 L2.56,14.11 C1.88,12.89 1.5,11.49 1.5,10 C1.5,8.38 1.95,6.87 2.75,5.58 L4.96,7.79 L4.96,7.8 L4.96,7.8 Z M10,18.5 C8.25,18.5 6.62,17.97 5.27,17.06 L7.46,14.87 C8.22,15.27 9.08,15.5 10,15.5 C10.79,15.5 11.53,15.33 12.21,15.04 L14.42,17.25 C13.13,18.05 11.62,18.5 10,18.5 L10,18.5 Z M10,14.5 C7.52,14.5 5.5,12.48 5.5,10 C5.5,7.52 7.52,5.5 10,5.5 C12.48,5.5 14.5,7.52 14.5,10 C14.5,12.48 12.48,14.5 10,14.5 L10,14.5 Z M15.04,12.21 C15.33,11.53 15.5,10.79 15.5,10 C15.5,9.08 15.27,8.22 14.87,7.46 L17.06,5.27 C17.97,6.62 18.5,8.25 18.5,10 C18.5,11.62 18.05,13.13 17.25,14.42 L15.04,12.21 L15.04,12.21 Z\"/></svg>",
11639        "link": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M10.625,12.375 L7.525,15.475 C6.825,16.175 5.925,16.175 5.225,15.475 L4.525,14.775 C3.825,14.074 3.825,13.175 4.525,12.475 L7.625,9.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M9.325,7.375 L12.425,4.275 C13.125,3.575 14.025,3.575 14.724,4.275 L15.425,4.975 C16.125,5.675 16.125,6.575 15.425,7.275 L12.325,10.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M7.925,11.875 L11.925,7.975\"/></svg>",
11640        "linkedin": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z\"/><path d=\"M7.75,17.89 L11.31,17.89 L11.31,11.9 C11.31,11.58 11.33,11.26 11.43,11.03 C11.69,10.39 12.27,9.73 13.26,9.73 C14.55,9.73 15.06,10.71 15.06,12.15 L15.06,17.89 L18.62,17.89 L18.62,11.74 C18.62,8.45 16.86,6.92 14.52,6.92 C12.6,6.92 11.75,7.99 11.28,8.73 L11.3,8.73 L11.3,7.17 L7.75,7.17 C7.79,8.17 7.75,17.89 7.75,17.89 L7.75,17.89 L7.75,17.89 Z\"/></svg>",
11641        "list": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"6\" y=\"4\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"9\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\"/><rect x=\"2\" y=\"4\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"2\" height=\"1\"/></svg>",
11642        "location": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M10,0.5 C6.41,0.5 3.5,3.39 3.5,6.98 C3.5,11.83 10,19 10,19 C10,
1164219 16.5,11.83 16.5,6.98 C16.5,3.39 13.59,0.5 10,0.5 L10,0.5 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"6.8\" r=\"2.3\"/></svg>",
11643        "lock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" height=\"10\" width=\"13\" y=\"8.5\" x=\"3.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8 L6.5,4.88 C6.5,3.01 8.07,1.5 10,1.5 C11.93,1.5 13.5,3.01 13.5,4.88 L13.5,8\"/></svg>",
11644        "mail": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"1.4,6.5 10,11 18.6,6.5\"/><path d=\"M 1,4 1,16 19,16 19,4 1,4 Z M 18,15 2,15 2,5 18,5 18,15 Z\"/></svg>",
11645        "menu": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"4\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"16\" height=\"1\"/></svg>",
11646        "microphone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" x1=\"10\" x2=\"10\" y1=\"16.44\" y2=\"18.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"7\" x2=\"13\" y1=\"18.5\" y2=\"18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.5 4.89v5.87a3.5 3.5 0 0 1-7 0V4.89a3.5 3.5 0 0 1 7 0z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M15.5 10.36V11a5.5 5.5 0 0 1-11 0v-.6\"/></svg>",
11647        "minus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>",
11648        "minus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect height=\"1\" width=\"18\" y=\"9\" x=\"1\"/></svg>",
11649        "more-vertical": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"3\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"17\" r=\"2\"/></svg>",
11650        "more": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"17\" cy=\"10\" r=\"2\"/></svg>",
11651        "move": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"4,5 1,5 1,9 2,9 2,6 4,6\"/><polygon points=\"1,16 2,16 2,18 4,18 4,19 1,19\"/><polygon points=\"14,16 14,19 11,19 11,18 13,18 13,16\"/><rect fill=\"none\" stroke=\"#000\" x=\"5.5\" y=\"1.5\" width=\"13\" height=\"13\"/><rect x=\"1\" y=\"11\" width=\"1\" height=\"3\"/><rect x=\"6\" y=\"18\" width=\"3\" height=\"1\"/></svg>",
11652        "nut": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"2.5,5.7 10,1.3 17.5,5.7 17.5,14.3 10,18.7 2.5,14.3\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"3.5\"/></svg>",
11653        "pagekit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"3,1 17,1 17,16 10,16 10,13 14,13 14,4 6,4 6,16 10,16 10,19 3,19\"/></svg>",
11654        "paint-bucket": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 L0,11.21 L8.1,19.31 L18.31,9.1 L10.21,1 L10.21,1 Z M16.89,9.1 L15,11 L1.7,11 L10.21,2.42 L16.89,9.1 Z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.42,2.33 L11.7,7.61\"/><path d=\"M18.49,12 C18.49,12 20,14.06 20,15.36 C20,16.28 19.24,17 18.49,17 L18.49,17 C17.74,17 17,16.28 17,15.36 C17,14.06 18.49,12 18.49,12 L18.49,12 Z\"/></svg>",
11655        "pencil": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17.25,6.01 L7.12,16.1 L3.82,17.2 L5.02,13.9 L15.12,3.88 C15.71,3.29 16.66,3.29 17.25,3.88 C17.83,4.47 17.83,5.42 17.25,6.01 L17.25,6.01 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M15.98,7.268 L13.851,5.148\"/></svg>",
11656        "phone-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17,5.5 C17.8,5.5 18.5,6.2 18.5,7 L18.5,14 C18.5,14.8 17.8,15.5 17,15.5 L3,15.5 C2.2,15.5 1.5,14.8 1.5,14 L1.5,7 C1.5,6.2 2.2,5.5 3,5.5 L17,5.5 L17,5.5 L17,5.5 Z\"/><circle cx=\"3.8\" cy=\"10.5\" r=\".8\"/></svg>",
11657        "phone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M15.5,17 C15.5,17.8 14.8,18.5 14,18.5 L7,18.5 C6.2,18.5 5.5,17.8 5.5,17 L5.5,3 C5.5,2.2 6.2,1.5 7,1.5 L14,1.5 C14.8,1.5 15.5,2.2 15.5,3 L15.5,17 L15.5,17 L15.5,17 Z\"/><circle cx=\"10.5\" cy=\"16.5\" r=\".8\"/></svg>",
11658        "pinterest": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 C5.5,1 3,4.16 3,7.61 C3,9.21 3.85,11.2 5.22,11.84 C5.43,11.94 5.54,11.89 5.58,11.69 C5.62,11.54 5.8,10.8 5.88,10.45 C5.91,10.34 5.89,10.24 5.8,10.14 C5.36,9.59 5,8.58 5,7.65 C5,5.24 6.82,2.91 9.93,2.91 C12.61,2.91 14.49,4.74 14.49,7.35 C14.49,10.3 13,12.35 11.06,12.35 C9.99,12.35 9.19,11.47 9.44,10.38 C9.75,9.08 10.35,7.68 10.35,6.75 C10.35,5.91 9.9,5.21 8.97,5.21 C7.87,5.21 6.99,6.34 6.99,7.86 C6.99,8.83 7.32,9.48 7.32,9.48 C7.32,9.48 6.24,14.06 6.04,14.91 C5.7,16.35 6.08,18.7 6.12,18.9 C6.14,19.01 6.26,19.05 6.33,18.95 C6.44,18.81 7.74,16.85 8.11,15.44 C8.24,14.93 8.79,12.84 8.79,12.84 C9.15,13.52 10.19,14.09 11.29,14.09 C14.58,14.09 16.96,11.
1165806 16.96,7.3 C16.94,3.7 14,1 10.21,1\"/></svg>",
11659        "play-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"8.5 7 13.5 10 8.5 13\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>",
11660        "play": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"6.5,5 14.5,10 6.5,15\"/></svg>",
11661        "plus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"5\" x2=\"9.5\" y2=\"14\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>",
11662        "plus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"1\" width=\"1\" height=\"17\"/><rect x=\"1\" y=\"9\" width=\"17\" height=\"1\"/></svg>",
11663        "print": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 13.5 1.5 13.5 1.5 6.5 18.5 6.5 18.5 13.5 15.5 13.5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"15.5 6.5 15.5 2.5 4.5 2.5 4.5 6.5\"/><rect fill=\"none\" stroke=\"#000\" width=\"11\" height=\"6\" x=\"4.5\" y=\"11.5\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"13\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"15\"/></svg>",
11664        "pull": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"6.85,8 9.5,10.6 12.15,8 12.85,8.7 9.5,12 6.15,8.7\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"11\" x2=\"9.5\" y2=\"2\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6,5.5 3.5,5.5 3.5,18.5 15.5,18.5 15.5,5.5 13,5.5\"/></svg>",
11665        "push": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12.15,4 9.5,1.4 6.85,4 6.15,3.3 9.5,0 12.85,3.3\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"10\" x2=\"9.5\" y2=\"1\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6 5.5 3.5 5.5 3.5 18.5 15.5 18.5 15.5 5.5 13 5.5\"/></svg>",
11666        "question": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><circle cx=\"10.44\" cy=\"14.42\" r=\"1.05\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" d=\"M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75\"/></svg>",
11667        "quote-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.27,7.79 C17.27,9.45 16.97,10.43 15.99,12.02 C14.98,13.64 13,15.23 11.56,15.97 L11.1,15.08 C12.34,14.2 13.14,13.51 14.02,11.82 C14.27,11.34 14.41,10.92 14.49,10.54 C14.3,10.58 14.09,10.6 13.88,10.6 C12.06,10.6 10.59,9.12 10.59,7.3 C10.59,5.48 12.06,4 13.88,4 C15.39,4 16.67,5.02 17.05,6.42 C17.19,6.82 17.27,7.27 17.27,7.79 L17.27,7.79 Z\"/><path d=\"M8.68,7.79 C8.68,9.45 8.38,10.43 7.4,12.02 C6.39,13.64 4.41,15.23 2.97,15.97 L2.51,15.08 C3.75,14.2 4.55,13.51 5.43,11.82 C5.68,11.34 5.82,10.92 5.9,10.54 C5.71,10.58 5.5,10.6 5.29,10.6 C3.47,10.6 2,9.12 2,7.3 C2,5.48 3.47,4 5.29,4 C6.8,4 8.08,5.02 8.46,6.42 C8.6,6.82 8.68,7.27 8.68,7.79 L8.68,7.79 Z\"/></svg>",
11668        "receiver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M6.189,13.611C8.134,15.525 11.097,18.239 13.867,18.257C16.47,18.275 18.2,16.241 18.2,16.241L14.509,12.551L11.539,13.639L6.189,8.29L7.313,5.355L3.76,1.8C3.76,1.8 1.732,3.537 1.7,6.092C1.667,8.809 4.347,11.738 6.189,13.611\"/></svg>",
11669        "reddit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19 9.05a2.56 2.56 0 0 0-2.56-2.56 2.59 2.59 0 0 0-1.88.82 10.63 10.63 0 0 0-4.14-1v-.08c.58-1.62 1.58-3.89 2.7-4.1.38-.08.77.12 1.19.57a1.15 1.15 0 0 0-.06.37 1.48 1.48 0 1 0 1.51-1.45 1.43 1.43 0 0 0-.76.19A2.29 2.29 0 0 0 12.91 1c-2.11.43-3.39 4.38-3.63 5.19 0 0 0 .11-.06.11a10.65 10.65 0 0 0-3.75 1A2.56 2.56 0 0 0 1 9.05a2.42 2.42 0 0 0 .72 1.76A5.18 5.18 0 0 0 1.24 13c0 3.66 3.92 6.64 8.73 6.64s8.74-3 8.74-6.64a5.23 5.23 0 0 0-.46-2.13A2.58 2.58 0 0 0 19 9.05zm-16.88 0a1.44 1.44 0 0 1 2.27-1.19 7.68 7.68 0 0 0-2.07 1.91 1.33 1.33 0 0 1-.2-.72zM10 18.4c-4.17 0-7.55-2.4-7.55-5.4S5.83 7.53 10 7.53 17.5 10 17.5 13s-3.38 5.4-7.5 5.4zm7.69-8.61a7.62 7.62 0 0 0-2.09-1.91 1.41 1.41 0 0 1 .84-.28 1.47 1.47 0 0 1 1.44 1.45 1.34 1.34 0 0 1-.21.72z\"/><path d=\"M6.69 12.58a1.39 1.39 0 1 1 1.39-1.39 1.38 1.38 0 0 1-1.38 1.39z\"/><path d=\"M14.26 11.2a1.39 1.39 0 1 1-1.39-1.39 1.39 1.39 0 0 1 1.39 1.39z\"/><path d=\"M13.09 14.88a.54.54 0 0 1-.09.77 5.3 5.3 0 0 1-3.26 1.19 5.61 5.61 0 0 1-3.4-1.22.55.55 0 1 1 .73-.83 4.09 4.09 0 0 0 5.25 0 .56.56 0 0 1 .77.09z\"/></svg>",
11670        "refresh": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.08,11.15 C17.09,11.31 17.1,11.47 17.1,11.64 C17.1,15.53 13.94,18.69 10.05,18.69 C6.16,18.68 3,15.53 3,11.63 C3,7.74 6.16,4.58 10.05,4.58 C10.9,4.58 11.71,4.73 12.46,5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"9.9 2 12.79 4.89 9.79 7.9\"/>
11670</svg>",
11671        "reply": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.7,13.11 C16.12,10.02 13.84,7.85 11.02,6.61 C10.57,6.41 9.75,6.13 9,5.91 L9,2 L1,9 L9,16 L9,12.13 C10.78,12.47 12.5,13.19 14.09,14.25 C17.13,16.28 18.56,18.54 18.56,18.54 C18.56,18.54 18.81,15.28 17.7,13.11 L17.7,13.11 Z M14.82,13.53 C13.17,12.4 11.01,11.4 8,10.92 L8,13.63 L2.55,9 L8,4.25 L8,6.8 C8.3,6.86 9.16,7.02 10.37,7.49 C13.3,8.65 15.54,10.96 16.65,13.08 C16.97,13.7 17.48,14.86 17.68,16 C16.87,15.05 15.73,14.15 14.82,13.53 L14.82,13.53 Z\"/></svg>",
11672        "rss": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3.12\" cy=\"16.8\" r=\"1.85\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5\"/></svg>",
11673        "search": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>",
11674        "server": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"7\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"16\" y=\"3\" width=\"1\" height=\"1\"/><rect x=\"16\" y=\"10\" width=\"1\" height=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"9.9\" cy=\"17.4\" r=\"1.4\"/><rect x=\"3\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"9.5\" y=\"14\" width=\"1\" height=\"2\"/><rect x=\"3\" y=\"17\" width=\"6\" height=\"1\"/><rect x=\"11\" y=\"17\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"1.5\" width=\"17\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"8.5\" width=\"17\" height=\"5\"/></svg>",
11675        "settings": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"3.55\" rx=\"2.11\" ry=\"2.15\"/><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"15.55\" rx=\"2.11\" ry=\"2.15\"/><circle fill=\"none\" stroke=\"#000\" cx=\"13.15\" cy=\"9.55\" r=\"2.15\"/><rect x=\"1\" y=\"3\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"3\" width=\"8\" height=\"1\"/><rect x=\"1\" y=\"9\" width=\"8\" height=\"1\"/><rect x=\"15\" y=\"9\" width=\"3\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"15\" width=\"8\" height=\"1\"/></svg>",
11676        "shrink": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"11 4 12 4 12 8 16 8 16 9 11 9\"/><polygon points=\"4 11 9 11 9 16 8 16 8 12 4 12\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M12,8 L18,2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2,18 L8,12\"/></svg>",
11677        "sign-in": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"7 2 17 2 17 17 7 17 7 16 16 16 16 3 7 3\"/><polygon points=\"9.1 13.4 8.5 12.8 11.28 10 4 10 4 9 11.28 9 8.5 6.2 9.1 5.62 13 9.5\"/></svg>",
11678        "sign-out": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13.1 13.4 12.5 12.8 15.28 10 8 10 8 9 15.28 9 12.5 6.2 13.1 5.62 17 9.5\"/><polygon points=\"13 2 3 2 3 17 13 17 13 16 4 16 4 3 13 3\"/></svg>",
11679        "social": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.4\" y1=\"14\" x2=\"6.3\" y2=\"10.7\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.5\" y1=\"5.5\" x2=\"6.5\" y2=\"8.8\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"4.6\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"14.8\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"4.5\" cy=\"9.8\" r=\"2.3\"/></svg>",
11680        "soundcloud": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.2,9.4c-0.4,0-0.8,0.1-1.101,0.2c-0.199-2.5-2.399-4.5-5-4.5c-0.6,0-1.2,0.1-1.7,0.3C9.2,5.5,9.1,5.6,9.1,5.6V15h8 
11680c1.601,0,2.801-1.2,2.801-2.8C20,10.7,18.7,9.4,17.2,9.4L17.2,9.4z\"/><rect x=\"6\" y=\"6.5\" width=\"1.5\" height=\"8.5\"/><rect x=\"3\" y=\"8\" width=\"1.5\" height=\"7\"/><rect y=\"10\" width=\"1.5\" height=\"5\"/></svg>",
11681        "star": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"10 2 12.63 7.27 18.5 8.12 14.25 12.22 15.25 18 10 15.27 4.75 18 5.75 12.22 1.5 8.12 7.37 7.27\"/></svg>",
11682        "strikethrough": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,13.02 L6.65,13.02 C7.64,15.16 8.86,16.12 10.41,16.12 C12.22,16.12 12.92,14.93 12.92,13.89 C12.92,12.55 11.99,12.03 9.74,11.23 C8.05,10.64 6.23,10.11 6.23,7.83 C6.23,5.5 8.09,4.09 10.4,4.09 C11.44,4.09 12.13,4.31 12.72,4.54 L13.33,4 L13.81,4 L13.81,7.59 L13.16,7.59 C12.55,5.88 11.52,4.89 10.07,4.89 C8.84,4.89 7.89,5.69 7.89,7.03 C7.89,8.29 8.89,8.78 10.88,9.45 C12.57,10.03 14.38,10.6 14.38,12.91 C14.38,14.75 13.27,16.93 10.18,16.93 C9.18,16.93 8.17,16.69 7.46,16.39 L6.52,17 L6,17 L6,13.02 L6,13.02 Z\"/><rect x=\"3\" y=\"10\" width=\"15\" height=\"1\"/></svg>",
11683        "table": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"3\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"11\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"18\" height=\"1\"/></svg>",
11684        "tablet-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1.5,5 C1.5,4.2 2.2,3.5 3,3.5 L17,3.5 C17.8,3.5 18.5,4.2 18.5,5 L18.5,16 C18.5,16.8 17.8,17.5 17,17.5 L3,17.5 C2.2,17.5 1.5,16.8 1.5,16 L1.5,5 L1.5,5 L1.5,5 Z\"/><circle cx=\"3.7\" cy=\"10.5\" r=\".8\"/></svg>",
11685        "tablet": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M5,18.5 C4.2,18.5 3.5,17.8 3.5,17 L3.5,3 C3.5,2.2 4.2,1.5 5,1.5 L16,1.5 C16.8,1.5 17.5,2.2 17.5,3 L17.5,17 C17.5,17.8 16.8,18.5 16,18.5 L5,18.5 L5,18.5 L5,18.5 Z\"/><circle cx=\"10.5\" cy=\"16.3\" r=\".8\"/></svg>",
11686        "tag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.5,3.71 L17.5,7.72 C17.5,7.96 17.4,8.2 17.21,8.39 L8.39,17.2 C7.99,17.6 7.33,17.6 6.93,17.2 L2.8,13.07 C2.4,12.67 2.4,12.01 2.8,11.61 L11.61,2.8 C11.81,2.6 12.08,2.5 12.34,2.5 L16.19,2.5 C16.52,2.5 16.86,2.63 17.11,2.88 C17.35,3.11 17.48,3.4 17.5,3.71 L17.5,3.71 Z\"/><circle cx=\"14\" cy=\"6\" r=\"1\"/></svg>",
11687        "thumbnails": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"11.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"11.5\" width=\"5\" height=\"5\"/></svg>",
11688        "trash": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"6.5 3 6.5 1.5 13.5 1.5 13.5 3\"/><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 4 4.5 18.5 15.5 18.5 15.5 4\"/><rect x=\"8\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"11\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"2\" y=\"3\" width=\"16\" height=\"1\"/></svg>",
11689        "triangle-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 7 15 7 10 12\"/></svg>",
11690        "triangle-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12 5 7 10 12 15\"/></svg>",
11691        "triangle-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"8 5 13 10 8 15\"/></svg>",
11692        "triangle-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 13 10 8 15 13\"/></svg>",
11693        "tripadvisor": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.021,7.866C19.256,6.862,20,5.854,20,5.854h-3.346C14.781,4.641,12.504,4,9.98,4C7.363,4,4.999,4.651,3.135,5.876H0\tc0,0,0.738,0.987,0.976,1.988c-0.611,0.837-0.973,1.852-0.973,2.964c0,2.763,2.249,5.009,5.011,5.
11693009\tc1.576,0,2.976-0.737,3.901-1.879l1.063,1.599l1.075-1.615c0.475,0.611,1.1,1.111,1.838,1.451c1.213,0.547,2.574,0.612,3.825,0.15\tc2.589-0.963,3.913-3.852,2.964-6.439c-0.175-0.463-0.4-0.876-0.675-1.238H19.021z M16.38,14.594\tc-1.002,0.371-2.088,0.328-3.06-0.119c-0.688-0.317-1.252-0.817-1.657-1.438c-0.164-0.25-0.313-0.52-0.417-0.811\tc-0.124-0.328-0.186-0.668-0.217-1.014c-0.063-0.689,0.037-1.396,0.339-2.043c0.448-0.971,1.251-1.71,2.25-2.079\tc2.075-0.765,4.375,0.3,5.14,2.366c0.762,2.066-0.301,4.37-2.363,5.134L16.38,14.594L16.38,14.594z M8.322,13.066\tc-0.72,1.059-1.935,1.76-3.309,1.76c-2.207,0-4.001-1.797-4.001-3.996c0-2.203,1.795-4.002,4.001-4.002\tc2.204,0,3.999,1.8,3.999,4.002c0,0.137-0.024,0.261-0.04,0.396c-0.067,0.678-0.284,1.313-0.648,1.853v-0.013H8.322z M2.472,10.775\tc0,1.367,1.112,2.479,2.476,2.479c1.363,0,2.472-1.11,2.472-2.479c0-1.359-1.11-2.468-2.472-2.468\tC3.584,8.306,2.473,9.416,2.472,10.775L2.472,10.775z M12.514,10.775c0,1.367,1.104,2.479,2.471,2.479\tc1.363,0,2.474-1.108,2.474-2.479c0-1.359-1.11-2.468-2.474-2.468c-1.364,0-2.477,1.109-2.477,2.468H12.514z M3.324,10.775\tc0-0.893,0.726-1.618,1.614-1.618c0.889,0,1.625,0.727,1.625,1.618c0,0.898-0.725,1.627-1.625,1.627\tc-0.901,0-1.625-0.729-1.625-1.627H3.324z M13.354,10.775c0-0.893,0.726-1.618,1.627-1.618c0.886,0,1.61,0.727,1.61,1.618\tc0,0.898-0.726,1.627-1.626,1.627s-1.625-0.729-1.625-1.627H13.354z M9.977,4.875c1.798,0,3.425,0.324,4.849,0.968\tc-0.535,0.015-1.061,0.108-1.586,0.3c-1.264,0.463-2.264,1.388-2.815,2.604c-0.262,0.551-0.398,1.133-0.448,1.72\tC9.79,7.905,7.677,5.873,5.076,5.82C6.501,5.208,8.153,4.875,9.94,4.875H9.977z\"/></svg>",
11694        "tumblr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.885,8.598c0,0,0,3.393,0,4.996c0,0.282,0,0.66,0.094,0.942c0.377,1.509,1.131,2.545,2.545,3.11 c1.319,0.472,2.356,0.472,3.676,0c0.565-0.188,1.132-0.659,1.132-0.659l-0.849-2.263c0,0-1.036,0.378-1.603,0.283 c-0.565-0.094-1.226-0.66-1.226-1.508c0-1.603,0-4.902,0-4.902h2.828V5.771h-2.828V2H8.205c0,0-0.094,0.66-0.188,0.942 C7.828,3.791,7.262,4.733,6.603,5.394C5.848,6.147,5,6.43,5,6.43v2.168H6.885z\"/></svg>",
11695        "tv": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"7\" y=\"16\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"3.5\" width=\"19\" height=\"11\"/></svg>",
11696        "twitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19,4.74 C18.339,5.029 17.626,5.229 16.881,5.32 C17.644,4.86 18.227,4.139 18.503,3.28 C17.79,3.7 17.001,4.009 16.159,4.17 C15.485,3.45 14.526,3 13.464,3 C11.423,3 9.771,4.66 9.771,6.7 C9.771,6.99 9.804,7.269 9.868,7.539 C6.795,7.38 4.076,5.919 2.254,3.679 C1.936,4.219 1.754,4.86 1.754,5.539 C1.754,6.82 2.405,7.95 3.397,8.61 C2.79,8.589 2.22,8.429 1.723,8.149 L1.723,8.189 C1.723,9.978 2.997,11.478 4.686,11.82 C4.376,11.899 4.049,11.939 3.713,11.939 C3.475,11.939 3.245,11.919 3.018,11.88 C3.49,13.349 4.852,14.419 6.469,14.449 C5.205,15.429 3.612,16.019 1.882,16.019 C1.583,16.019 1.29,16.009 1,15.969 C2.635,17.019 4.576,17.629 6.662,17.629 C13.454,17.629 17.17,12 17.17,7.129 C17.17,6.969 17.166,6.809 17.157,6.649 C17.879,6.129 18.504,5.478 19,4.74\"/></svg>",
11697        "uikit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"14.4,3.1 11.3,5.1 15,7.3 15,12.9 10,15.7 5,12.9 5,8.5 2,6.8 2,14.8 9.9,19.5 18,14.8 18,5.3\"/><polygon points=\"9.8,4.2 6.7,2.4 9.8,0.4 12.9,2.3\"/></svg>",
11698        "unlock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"8.5\" width=\"13\" height=\"10\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8.5 L6.5,4.9 C6.5,3 8.1,1.5 10,1.5 C11.9,1.5 13.5,3 13.5,4.9\"/></svg>",
11699        "upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"5 8 9.5 3.5 14 8\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"15\" x2=\"9.5\" y2=\"4\"/></svg>",
11700        "user": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.9\" cy=\"6.4\" r=\"4.4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2\"/></svg>",
11701        "users": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"7.7\" cy=\"8.6\" r=\"3.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1\"/></svg>",
11702        "video-camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"17.5 6.9 17.5 13.1 13.5 10.4 13.5 14.5 2.5 14.5 2.5 5.5 13.5 5.5 13.5 9.6 17.5 6.9\"/></svg>",
11703        "vimeo": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.065,7.59C1.84,7.367,1.654,7.082,1.468,6.838c-0.332-0.42-0.137-0.411,0.274-0.772c1.026-0.9
117031,2.004-1.896,3.127-2.688 c1.017-0.713,2.365-1.173,3.286-0.039c0.849,1.045,0.869,2.629,1.084,3.891c0.215,1.309,0.421,2.648,0.88,3.901 c0.127,0.352,0.37,1.018,0.81,1.074c0.567,0.078,1.145-0.917,1.408-1.289c0.684-0.987,1.611-2.317,1.494-3.587 c-0.115-1.349-1.572-1.095-2.482-0.773c0.146-1.514,1.555-3.216,2.912-3.792c1.439-0.597,3.579-0.587,4.302,1.036 c0.772,1.759,0.078,3.802-0.763,5.396c-0.918,1.731-2.1,3.333-3.363,4.829c-1.114,1.329-2.432,2.787-4.093,3.422 c-1.897,0.723-3.021-0.686-3.667-2.318c-0.705-1.777-1.056-3.771-1.565-5.621C4.898,8.726,4.644,7.836,4.136,7.191 C3.473,6.358,2.72,7.141,2.065,7.59C1.977,7.502,2.115,7.551,2.065,7.59L2.065,7.59z\"/></svg>",
11704        "warning": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"14\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><path d=\"M10.97,7.72 C10.85,9.54 10.56,11.29 10.56,11.29 C10.51,11.87 10.27,12 9.99,12 C9.69,12 9.49,11.87 9.43,11.29 C9.43,11.29 9.16,9.54 9.03,7.72 C8.96,6.54 9.03,6 9.03,6 C9.03,5.45 9.46,5.02 9.99,5 C10.53,5.01 10.97,5.44 10.97,6 C10.97,6 11.04,6.54 10.97,7.72 L10.97,7.72 Z\"/></svg>",
11705        "whatsapp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.7,3.3c-1.8-1.8-4.1-2.8-6.7-2.8c-5.2,0-9.4,4.2-9.4,9.4c0,1.7,0.4,3.3,1.3,4.7l-1.3,4.9l5-1.3c1.4,0.8,2.9,1.2,4.5,1.2 l0,0l0,0c5.2,0,9.4-4.2,9.4-9.4C19.5,7.4,18.5,5,16.7,3.3 M10.1,17.7L10.1,17.7c-1.4,0-2.8-0.4-4-1.1l-0.3-0.2l-3,0.8l0.8-2.9 l-0.2-0.3c-0.8-1.2-1.2-2.7-1.2-4.2c0-4.3,3.5-7.8,7.8-7.8c2.1,0,4.1,0.8,5.5,2.3c1.5,1.5,2.3,3.4,2.3,5.5 C17.9,14.2,14.4,17.7,10.1,17.7 M14.4,11.9c-0.2-0.1-1.4-0.7-1.6-0.8c-0.2-0.1-0.4-0.1-0.5,0.1c-0.2,0.2-0.6,0.8-0.8,0.9 c-0.1,0.2-0.3,0.2-0.5,0.1c-0.2-0.1-1-0.4-1.9-1.2c-0.7-0.6-1.2-1.4-1.3-1.6c-0.1-0.2,0-0.4,0.1-0.5C8,8.8,8.1,8.7,8.2,8.5 c0.1-0.1,0.2-0.2,0.2-0.4c0.1-0.2,0-0.3,0-0.4C8.4,7.6,7.9,6.5,7.7,6C7.5,5.5,7.3,5.6,7.2,5.6c-0.1,0-0.3,0-0.4,0 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.8,0.8-0.8,2c0,1.2,0.8,2.3,1,2.4c0.1,0.2,1.7,2.5,4,3.5c0.6,0.2,1,0.4,1.3,0.5 c0.6,0.2,1.1,0.2,1.5,0.1c0.5-0.1,1.4-0.6,1.6-1.1c0.2-0.5,0.2-1,0.1-1.1C14.8,12.1,14.6,12,14.4,11.9\"/>
11705</svg>",
11706        "wordpress": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5c-5.2,0-9.5,4.3-9.5,9.5s4.3,9.5,9.5,9.5c5.2,0,9.5-4.3,9.5-9.5S15.2,0.5,10,0.5L10,0.5L10,0.5z M15.6,3.9h-0.1 c-0.8,0-1.4,0.7-1.4,1.5c0,0.7,0.4,1.3,0.8,1.9c0.3,0.6,0.7,1.3,0.7,2.3c0,0.7-0.3,1.5-0.6,2.7L14.1,15l-3-8.9 c0.5,0,0.9-0.1,0.9-0.1C12.5,6,12.5,5.3,12,5.4c0,0-1.3,0.1-2.2,0.1C9,5.5,7.7,5.4,7.7,5.4C7.2,5.3,7.2,6,7.6,6c0,0,0.4,0.1,0.9,0.1 l1.3,3.5L8,15L5,6.1C5.5,6.1,5.9,6,5.9,6C6.4,6,6.3,5.3,5.9,5.4c0,0-1.3,0.1-2.2,0.1c-0.2,0-0.3,0-0.5,0c1.5-2.2,4-3.7,6.9-3.7 C12.2,1.7,14.1,2.6,15.6,3.9L15.6,3.9L15.6,3.9z M2.5,6.6l3.9,10.8c-2.7-1.3-4.6-4.2-4.6-7.4C1.8,8.8,2,7.6,2.5,6.6L2.5,6.6L2.5,6.6 z M10.2,10.7l2.5,6.9c0,0,0,0.1,0.1,0.1C11.9,18,11,18.2,10,18.2c-0.8,0-1.6-0.1-2.3-0.3L10.2,10.7L10.2,10.7L10.2,10.7z M14.2,17.1 l2.5-7.3c0.5-1.2,0.6-2.1,0.6-2.9c0-0.3,0-0.6-0.1-0.8c0.6,1.2,1,2.5,1,4C18.3,13,16.6,15.7,14.2,17.1L14.2,17.1L14.2,17.1z\"/></svg>",
11707        "world": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1,10.5 L19,10.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,15.5 L17.65,15.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,5.5 L17.523,5.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M10,19.46 L9.98,19.46 C7.31,17.33 5.61,14.141 5.61,10.58 C5.61,7.02 7.33,3.83 10,1.7 C10.01,1.7 9.99,1.7 10,1.7 L10,1.7 C12.67,3.83 14.4,7.02 14.4,10.58 C14.4,14.141 12.67,17.33 10,19.46 L10,19.46 L10,19.46 L10,19.46 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10.5\" r=\"9\"/></svg>",
11708        "xing": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.4,4.56 C4.24,4.56 4.11,4.61 4.05,4.72 C3.98,4.83 3.99,4.97 4.07,5.12 L5.82,8.16 L5.82,8.17 L3.06,13.04 C2.99,13.18 2.99,13.33 3.06,13.44 C3.12,13.55 3.24,13.62 3.4,13.62 L6,13.62 C6.39,13.62 6.57,13.36 6.71,13.12 C6.71,13.12 9.41,8.35 9.51,8.16 C9.49,8.14 7.72,5.04 7.72,5.04 C7.58,4.81 7.39,4.56 6.99,4.56 L4.4,4.56 L4.4,4.56 Z\"/><path d=\"M15.3,1 C14.91,1 14.74,1.25 14.6,1.5 C14.6,1.5 9.01,11.42 8.82,11.74 C8.83,11.76 12.51,18.51 12.51,18.51 C12.64,18.74 12.84,19 13.23,19 L15.82,19 C15.98,19 16.1,18.94 16.16,18.83 C16.23,18.72 16.23,18.57 16.16,18.43 L12.5,11.74 L12.5,11.72 L18.25,1.56 C18.32,1.42 18.32,1.27 18.25,1.16 C18.21,1.06 18.08,1 17.93,1 L15.3,1 L15.3,1 Z\"/></svg>",
11709        "yelp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.175,14.971c-0.112,0.77-1.686,2.767-2.406,3.054c-0.246,0.1-0.487,0.076-0.675-0.069\tc-0.122-0.096-2.446-3.859-2.446-3.859c-0.194-0.293-0.157-0.682,0.083-0.978c0.234-0.284,0.581-0.393,0.881-0.276\tc0.016,0.01,4.21,1.394,4.332,1.482c0.178,0.148,0.263,0.379,0.225,0.646L17.175,14.971L17.175,14.971z M11.464,10.789\tc-0.203-0.307-0.199-0.666,0.009-0.916c0,0,2.625-3.574,2.745-3.657c0.203-0.135,0.452-0.141,0.69-0.025\tc0.691,0.335,2.085,2.405,2.167,3.199v0.027c0.024,0.271-0.082,0.491-0.273,0.623c-0.132,0.083-4.43,1.155-4.43,1.155\tc-0.322,0.096-0.68-0.06-0.882-0.381L11.464,10.789z M9.475,9.563C9.32,9.609,8.848,9.757,8.269,8.817c0,0-3.916-6.16-4.007-6.351\tc-0.057-0.212,0.011-0.455,0.202-0.65C5.047,1.211,8.21,0.327,9.037,0.529c0.27,0.069,0.457,0.238,0.522,0.479\tc0.047,0.266,0.433,5.982,0.488,7.264C10.098,9.368,9.629,9.517,9.475,9.563z M9.927,19.066c-0.083,0.225-0.273,0.373-0.54,0.421\tc-0.762,0.13-3.15-0.751-3.647-1.342c-0.096-0.131-0.155-0.262-0.167-0.394c-0.011-0.095,0-0.189,0.036-0.272\tc0.061-0.155,2.917-3.538,2.917-3.538c0.214-0.272,0.595-0.355,0.952-0.213c0.345,0.13,0.56,0.428,0.536,0.749\tC10.014,14.479,9.977,18.923,9.927,19.066z M3.495,13.912c-0.235-0.009-0.444-0.148-0.568-0.382c-0.089-0.17-0.151-0.453-0.19-0.794\tC2.63,11.701,2.761,10.144,3.07,9.648c0.145-0.226,0.357-0.345,0.592-0.336c0.154,0,4.255,1.667,4.255,1.667\tc0.321,0.118,0.521,0.453,0.5,0.833c-0.023,0.37-0.236,0.655-0.551,0.738L3.495,13.912z\"/></svg>",
11710        "youtube": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z\"/></svg>"
11711      });
11712    }
11713
11714    if (typeof window !== 'undefined' && window.UIkit) {
11715      window.UIkit.use(plugin);
11716    }
11717
11718    return plugin;
11719  });
11720});
11721
11722// loads the Icon plugin
11723uikit.use(uikitIcons);
11724
11725console.log('File `app.js` loaded');
11726
11727}());

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.