Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/clinic.corals.io/public/assets/front/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/clinic.corals.io/public/assets/front/js/plugins.js
window.scwDisableJsAJAX = true;

/*
 * jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/
 * Open source under the BSD License.
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * https://raw.github.com/gdsmith/jquery.easing/master/LICENSE
*/
!function (n) {
    'function' == typeof define && define.amd ? define(['jquery'],
        function (e) {return n(e);}) : 'object' == typeof module && 'object' ==
    typeof module.exports ? module.exports = n(require('jquery')) : n(jQuery);
}(function (n) {
    function e (n) {
        var e = 7.5625, t = 2.75;
        return n < 1 / t ? e * n * n : n < 2 / t
            ? e * (n -= 1.5 / t) * n + .75
            : n < 2.5 / t ? e * (n -= 2.25 / t) * n + .9375 : e *
                (n -= 2.625 / t) * n + .984375;
    }

    void 0 !== n.easing && (n.easing.jswing = n.easing.swing);
    var t = Math.pow, u = Math.sqrt, r = Math.sin, i = Math.cos, a = Math.PI,
        o = 1.70158, c = 1.525 * o, s = 2 * a / 3, f = 2 * a / 4.5;
    return n.extend(n.easing, {
        def: 'easeOutQuad',
        swing: function (e) {return n.easing[n.easing.def](e);},
        easeInQuad: function (n) {return n * n;},
        easeOutQuad: function (n) {return 1 - (1 - n) * (1 - n);},
        easeInOutQuad: function (n) {
            return n < .5 ? 2 * n * n : 1 - t(-2 * n + 2, 2) / 2;
        },
        easeInCubic: function (n) {return n * n * n;},
        easeOutCubic: function (n) {return 1 - t(1 - n, 3);},
        easeInOutCubic: function (n) {
            return n < .5 ? 4 * n * n * n : 1 - t(-2 * n + 2, 3) / 2;
        },
        easeInQuart: function (n) {return n * n * n * n;},
        easeOutQuart: function (n) {return 1 - t(1 - n, 4);},
        easeInOutQuart: function (n) {
            return n < .5 ? 8 * n * n * n * n : 1 - t(-2 * n + 2, 4) / 2;
        },
        easeInQuint: function (n) {return n * n * n * n * n;},
        easeOutQuint: function (n) {return 1 - t(1 - n, 5);},
        easeInOutQuint: function (n) {
            return n < .5
                ? 16 * n * n * n * n * n
                : 1 - t(-2 * n + 2, 5) / 2;
        },
        easeInSine: function (n) {return 1 - i(n * a / 2);},
        easeOutSine: function (n) {return r(n * a / 2);},
        easeInOutSine: function (n) {return -(i(a * n) - 1) / 2;},
        easeInExpo: function (n) {return 0 === n ? 0 : t(2, 10 * n - 10);},
        easeOutExpo: function (n) {return 1 === n ? 1 : 1 - t(2, -10 * n);},
        easeInOutExpo: function (n) {
            return 0 === n ? 0 : 1 === n ? 1 : n < .5
                ? t(2, 20 * n - 10) / 2
                : (2 - t(2, -20 * n + 10)) / 2;
        },
        easeInCirc: function (n) {return 1 - u(1 - t(n, 2));},
        easeOutCirc: function (n) {return u(1 - t(n - 1, 2));},
        easeInOutCirc: function (n) {
            return n < .5 ? (1 - u(1 - t(2 * n, 2))) / 2 : (u(
                1 - t(-2 * n + 2, 2)) + 1) / 2;
        },
        easeInElastic: function (n) {
            return 0 === n ? 0 : 1 === n ? 1 : -t(2, 10 * n - 10) *
                r((10 * n - 10.75) * s);
        },
        easeOutElastic: function (n) {
            return 0 === n ? 0 : 1 === n ? 1 : t(2, -10 * n) *
                r((10 * n - .75) * s) + 1;
        },
        easeInOutElastic: function (n) {
            return 0 === n ? 0 : 1 === n ? 1 : n < .5 ? -t(2, 20 * n - 10) *
                r((20 * n - 11.125) * f) / 2 : t(2, -20 * n + 10) *
                r((20 * n - 11.125) * f) / 2 + 1;
        },
        easeInBack: function (n) {return 2.70158 * n * n * n - o * n * n;},
        easeOutBack: function (n) {
            return 1 + 2.70158 * t(n - 1, 3) + o * t(n - 1, 2);
        },
        easeInOutBack: function (n) {
            return n < .5 ? t(2 * n, 2) * (7.189819 * n - c) / 2 : (t(2 * n - 2,
                2) * ((c + 1) * (2 * n - 2) + c) + 2) / 2;
        },
        easeInBounce: function (n) {return 1 - e(1 - n);},
        easeOutBounce: e,
        easeInOutBounce: function (n) {
            return n < .5
                ? (1 - e(1 - 2 * n)) / 2
                : (1 + e(2 * n - 1)) / 2;
        },
    }), n;
});

/*!
  * Bootstrap v5.1.0 (https://getbootstrap.com/)
  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
!function (t, e) {
    'object' == typeof exports && 'undefined' != typeof module
        ? module.exports = e()
        : 'function' == typeof define && define.amd
        ? define(e)
        : (t = 'undefined' != typeof globalThis ? globalThis : t ||
            self).bootstrap = e();
}(this, (function () {
    'use strict';
    const t = t => {
            let e = t.getAttribute('data-bs-target');
            if (!e || '#' === e) {
                let i = t.getAttribute('href');
                if (!i || !i.includes('#') && !i.startsWith('.')) return null;
                i.includes('#') && !i.startsWith('#') &&
                (i = '#' + i.split('#')[1]), e = i && '#' !== i ? i.trim() : null;
            }
            return e;
        }, e = e => {
            const i = t(e);
            return i && document.querySelector(i) ? i : null;
        }, i = e => {
            const i = t(e);
            return i ? document.querySelector(i) : null;
        }, n = t => {t.dispatchEvent(new Event('transitionend'));},
        s = t => !(!t || 'object' != typeof t) &&
            (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),
        o = t => s(t) ? t.jquery ? t[0] : t : 'string' == typeof t && t.length >
        0 ? document.querySelector(t) : null, r = (t, e, i) => {
            Object.keys(i).
                forEach(n => {
                    const o = i[n], r = e[n],
                        a = r && s(r) ? 'element' : null == (l = r)
                            ? '' + l
                            : {}.toString.call(l).
                                match(/\s([a-z]+)/i)[1].toLowerCase();
                    var l;
                    if (!new RegExp(o).test(a)) throw new TypeError(
                        `${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${o}".`);
                });
        }, a = t => !(!s(t) || 0 === t.getClientRects().length) && 'visible' ===
        getComputedStyle(t).getPropertyValue('visibility'),
        l = t => !t || t.nodeType !== Node.ELEMENT_NODE ||
            !!t.classList.contains('disabled') ||
            (void 0 !== t.disabled ? t.disabled : t.hasAttribute('disabled') &&
                'false' !== t.getAttribute('disabled')), c = t => {
            if (!document.documentElement.attachShadow) return null;
            if ('function' == typeof t.getRootNode) {
                const e = t.getRootNode();
                return e instanceof ShadowRoot ? e : null;
            }
            return t instanceof ShadowRoot ? t : t.parentNode
                ? c(t.parentNode)
                : null;
        }, h = () => {}, d = t => {t.offsetHeight;}, u = () => {
            const { jQuery: t } = window;
            return t && !document.body.hasAttribute('data-bs-no-jquery')
                ? t
                : null;
        }, f = [], p = () => 'rtl' === document.documentElement.dir, m = t => {
            var e;
            e = () => {
                const e = u();
                if (e) {
                    const i = t.NAME, n = e.fn[i];
                    e.fn[i] = t.jQueryInterface, e.fn[i].Constructor = t, e.fn[i].noConflict = () => (e.fn[i] = n, t.jQueryInterface);
                }
            }, 'loading' === document.readyState ? (f.length ||
            document.addEventListener('DOMContentLoaded',
                () => {f.forEach(t => t());}), f.push(e)) : e();
        }, g = t => {'function' == typeof t && t();}, _ = (t, e, i = !0) => {
            if (!i) return void g(t);
            const s = (t => {
                if (!t) return 0;
                let {
                    transitionDuration: e,
                    transitionDelay: i,
                } = window.getComputedStyle(t);
                const n = Number.parseFloat(e), s = Number.parseFloat(i);
                return n || s ? (e = e.split(',')[0], i = i.split(',')[0], 1e3 *
                (Number.parseFloat(e) + Number.parseFloat(i))) : 0;
            })(e) + 5;
            let o = !1;
            const r = ({ target: i }) => {
                i === e &&
                (o = !0, e.removeEventListener('transitionend', r), g(t));
            };
            e.addEventListener('transitionend', r), setTimeout(() => {o || n(e);},
                s);
        }, b = (t, e, i, n) => {
            let s = t.indexOf(e);
            if (-1 === s) return t[!i && n ? t.length - 1 : 0];
            const o = t.length;
            return s += i ? 1 : -1, n && (s = (s + o) % o), t[Math.max(0,
                Math.min(s, o - 1))];
        }, v = /[^.]*(?=\..*)\.|.*/, y = /\..*/, w = /::\d+$/, E = {};
    let A = 1;
    const T = { mouseenter: 'mouseover', mouseleave: 'mouseout' },
        O = /^(mouseenter|mouseleave)/i, C = new Set([
            'click',
            'dblclick',
            'mouseup',
            'mousedown',
            'contextmenu',
            'mousewheel',
            'DOMMouseScroll',
            'mouseover',
            'mouseout',
            'mousemove',
            'selectstart',
            'selectend',
            'keydown',
            'keypress',
            'keyup',
            'orientationchange',
            'touchstart',
            'touchmove',
            'touchend',
            'touchcancel',
            'pointerdown',
            'pointermove',
            'pointerup',
            'pointerleave',
            'pointercancel',
            'gesturestart',
            'gesturechange',
            'gestureend',
            'focus',
            'blur',
            'change',
            'reset',
            'select',
            'submit',
            'focusin',
            'focusout',
            'load',
            'unload',
            'beforeunload',
            'resize',
            'move',
            'DOMContentLoaded',
            'readystatechange',
            'error',
            'abort',
            'scroll']);

    function k (t, e) {return e && `${e}::${A++}` || t.uidEvent || A++;}

    function L (t) {
        const e = k(t);
        return t.uidEvent = e, E[e] = E[e] || {}, E[e];
    }

    function x (t, e, i = null) {
        const n = Object.keys(t);
        for (let s = 0, o = n.length; s < o; s++) {
            const o = t[n[s]];
            if (o.originalHandler === e && o.delegationSelector === i) return o;
        }
        return null;
    }

    function D (t, e, i) {
        const n = 'string' == typeof e, s = n ? i : e;
        let o = I(t);
        return C.has(o) || (o = t), [n, s, o];
    }

    function S (t, e, i, n, s) {
        if ('string' != typeof e || !t) return;
        if (i || (i = n, n = null), O.test(e)) {
            const t = t => function (e) {
                if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget &&
                    !e.delegateTarget.contains(e.relatedTarget)) return t.call(
                    this, e);
            };
            n ? n = t(n) : i = t(i);
        }
        const [o, r, a] = D(e, i, n), l = L(t), c = l[a] || (l[a] = {}),
            h = x(c, r, o ? i : null);
        if (h) return void (h.oneOff = h.oneOff && s);
        const d = k(r, e.replace(v, '')), u = o ? function (t, e, i) {
            return function n (s) {
                const o = t.querySelectorAll(e);
                for (let { target: r } = s; r && r !==
                this; r = r.parentNode) for (let a = o.length; a--;) if (o[a] ===
                    r) return s.delegateTarget = r, n.oneOff &&
                P.off(t, s.type, e, i), i.apply(r, [s]);
                return null;
            };
        }(t, i, n) : function (
            t, e) {
            return function i (n) {
                return n.delegateTarget = t, i.oneOff &&
                P.off(t, n.type, e), e.apply(t, [n]);
            };
        }(t, i);
        u.delegationSelector = o
            ? i
            : null, u.originalHandler = r, u.oneOff = s, u.uidEvent = d, c[d] = u, t.addEventListener(
            a, u, o);
    }

    function N (t, e, i, n, s) {
        const o = x(e[i], n, s);
        o && (t.removeEventListener(i, o, Boolean(s)), delete e[i][o.uidEvent]);
    }

    function I (t) {return t = t.replace(y, ''), T[t] || t;}

    const P = {
        on (t, e, i, n) {S(t, e, i, n, !1);},
        one (t, e, i, n) {S(t, e, i, n, !0);},
        off (t, e, i, n) {
            if ('string' != typeof e || !t) return;
            const [s, o, r] = D(e, i, n), a = r !== e, l = L(t),
                c = e.startsWith('.');
            if (void 0 !== o) {
                if (!l || !l[r]) return;
                return void N(t, l, r, o, s ? i : null);
            }
            c && Object.keys(l).
                forEach(i => {
                    !function (t, e, i, n) {
                        const s = e[i] || {};
                        Object.keys(s).
                            forEach(o => {
                                if (o.includes(n)) {
                                    const n = s[o];
                                    N(t, e, i, n.originalHandler,
                                        n.delegationSelector);
                                }
                            });
                    }(t, l, i, e.slice(1));
                });
            const h = l[r] || {};
            Object.keys(h).forEach(i => {
                const n = i.replace(w, '');
                if (!a || e.includes(n)) {
                    const e = h[i];
                    N(t, l, r, e.originalHandler, e.delegationSelector);
                }
            });
        },
        trigger (t, e, i) {
            if ('string' != typeof e || !t) return null;
            const n = u(), s = I(e), o = e !== s, r = C.has(s);
            let a, l = !0, c = !0, h = !1, d = null;
            return o && n && (a = n.Event(e, i), n(t).
                trigger(
                    a), l = !a.isPropagationStopped(), c = !a.isImmediatePropagationStopped(), h = a.isDefaultPrevented()), r
                ? (d = document.createEvent('HTMLEvents'), d.initEvent(s, l,
                    !0))
                : d = new CustomEvent(e,
                    { bubbles: l, cancelable: !0 }), void 0 !== i &&
            Object.keys(i).
                forEach(t => {
                    Object.defineProperty(d, t, { get: () => i[t] });
                }), h && d.preventDefault(), c &&
            t.dispatchEvent(d), d.defaultPrevented && void 0 !== a &&
            a.preventDefault(), d;
        },
    }, j = new Map;
    var M = {
        set (t, e, i) {
            j.has(t) || j.set(t, new Map);
            const n = j.get(t);
            n.has(e) || 0 === n.size ? n.set(e, i) : console.error(
                `Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(
                    n.keys())[0]}.`);
        },
        get: (t, e) => j.has(t) && j.get(t).get(e) || null,
        remove (t, e) {
            if (!j.has(t)) return;
            const i = j.get(t);
            i.delete(e), 0 === i.size && j.delete(t);
        },
    };

    class H {
        constructor (t) {
            (t = o(t)) &&
            (this._element = t, M.set(this._element, this.constructor.DATA_KEY,
                this));
        }

        static get VERSION () {return '5.1.0';}

        static get NAME () {
            throw new Error(
                'You have to implement the static method "NAME", for each component!');
        }

        static get DATA_KEY () {return 'bs.' + this.NAME;}

        static get EVENT_KEY () {return '.' + this.DATA_KEY;}

        static getInstance (t) {return M.get(o(t), this.DATA_KEY);}

        static getOrCreateInstance (t, e = {}) {
            return this.getInstance(t) ||
                new this(t, 'object' == typeof e ? e : null);
        }

        dispose () {
            M.remove(this._element, this.constructor.DATA_KEY), P.off(
                this._element,
                this.constructor.EVENT_KEY), Object.getOwnPropertyNames(this).
                forEach(t => {this[t] = null;});
        }

        _queueCallback (t, e, i = !0) {_(t, e, i);}
    }

    const B = (t, e = 'hide') => {
        const n = 'click.dismiss' + t.EVENT_KEY, s = t.NAME;
        P.on(document, n, `[data-bs-dismiss="${s}"]`, (function (n) {
            if (['A', 'AREA'].includes(this.tagName) && n.preventDefault(), l(
                this)) return;
            const o = i(this) || this.closest('.' + s);
            t.getOrCreateInstance(o)[e]();
        }));
    };

    class R extends H {
        static get NAME () {return 'alert';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = R.getOrCreateInstance(this);
                if ('string' == typeof t) {
                    if (void 0 === e[t] || t.startsWith('_') ||
                        'constructor' === t) throw new TypeError(
                        `No method named "${t}"`);
                    e[t](this);
                }
            }));
        }

        close () {
            if (P.trigger(this._element,
                'close.bs.alert').defaultPrevented) return;
            this._element.classList.remove('show');
            const t = this._element.classList.contains('fade');
            this._queueCallback(() => this._destroyElement(), this._element, t);
        }

        _destroyElement () {
            this._element.remove(), P.trigger(this._element,
                'closed.bs.alert'), this.dispose();
        }
    }

    B(R, 'close'), m(R);

    class W extends H {
        static get NAME () {return 'button';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = W.getOrCreateInstance(this);
                'toggle' === t && e[t]();
            }));
        }

        toggle () {
            this._element.setAttribute('aria-pressed',
                this._element.classList.toggle('active'));
        }
    }

    function z (t) {
        return 'true' === t || 'false' !== t &&
            (t === Number(t).toString() ? Number(t) : '' === t || 'null' === t
                ? null
                : t);
    }

    function q (t) {return t.replace(/[A-Z]/g, t => '-' + t.toLowerCase());}

    P.on(document, 'click.bs.button.data-api', '[data-bs-toggle="button"]',
        t => {
            t.preventDefault();
            const e = t.target.closest('[data-bs-toggle="button"]');
            W.getOrCreateInstance(e).toggle();
        }), m(W);
    const F = {
            setDataAttribute (t, e, i) {
                t.setAttribute('data-bs-' + q(e), i);
            },
            removeDataAttribute (t, e) {t.removeAttribute('data-bs-' + q(e));},
            getDataAttributes (t) {
                if (!t) return {};
                const e = {};
                return Object.keys(t.dataset).
                    filter(t => t.startsWith('bs')).
                    forEach(i => {
                        let n = i.replace(/^bs/, '');
                        n = n.charAt(0).toLowerCase() +
                            n.slice(1, n.length), e[n] = z(t.dataset[i]);
                    }), e;
            },
            getDataAttribute: (t, e) => z(t.getAttribute('data-bs-' + q(e))),
            offset (t) {
                const e = t.getBoundingClientRect();
                return {
                    top: e.top + window.pageYOffset,
                    left: e.left + window.pageXOffset,
                };
            },
            position: t => ({ top: t.offsetTop, left: t.offsetLeft }),
        }, U = {
            find: (t, e = document.documentElement) => [].concat(
                ...Element.prototype.querySelectorAll.call(e, t)),
            findOne: (
                t,
                e = document.documentElement) => Element.prototype.querySelector.call(
                e, t),
            children: (t, e) => [].concat(...t.children).filter(t => t.matches(e)),
            parents (t, e) {
                const i = [];
                let n = t.parentNode;
                for (; n && n.nodeType === Node.ELEMENT_NODE && 3 !==
                       n.nodeType;) n.matches(e) && i.push(n), n = n.parentNode;
                return i;
            },
            prev (t, e) {
                let i = t.previousElementSibling;
                for (; i;) {
                    if (i.matches(e)) return [i];
                    i = i.previousElementSibling;
                }
                return [];
            },
            next (t, e) {
                let i = t.nextElementSibling;
                for (; i;) {
                    if (i.matches(e)) return [i];
                    i = i.nextElementSibling;
                }
                return [];
            },
            focusableChildren (t) {
                const e = [
                    'a',
                    'button',
                    'input',
                    'textarea',
                    'select',
                    'details',
                    '[tabindex]',
                    '[contenteditable="true"]'].map(
                    t => t + ':not([tabindex^="-"])').join(', ');
                return this.find(e, t).filter(t => !l(t) && a(t));
            },
        }, $ = {
            interval: 5e3,
            keyboard: !0,
            slide: !1,
            pause: 'hover',
            wrap: !0,
            touch: !0,
        }, V = {
            interval: '(number|boolean)',
            keyboard: 'boolean',
            slide: '(boolean|string)',
            pause: '(string|boolean)',
            wrap: 'boolean',
            touch: 'boolean',
        }, K = 'next', X = 'prev', Y = 'left', Q = 'right',
        G = { ArrowLeft: Q, ArrowRight: Y };

    class Z extends H {
        constructor (t, e) {
            super(
                t), this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(
                e), this._indicatorsElement = U.findOne('.carousel-indicators',
                this._element), this._touchSupported = 'ontouchstart' in
                document.documentElement || navigator.maxTouchPoints >
                0, this._pointerEvent = Boolean(
                window.PointerEvent), this._addEventListeners();
        }

        static get Default () {return $;}

        static get NAME () {return 'carousel';}

        static carouselInterface (t, e) {
            const i = Z.getOrCreateInstance(t, e);
            let { _config: n } = i;
            'object' == typeof e && (n = { ...n, ...e });
            const s = 'string' == typeof e ? e : n.slide;
            if ('number' == typeof e) i.to(e); else if ('string' == typeof s) {
                if (void 0 === i[s]) throw new TypeError(
                    `No method named "${s}"`);
                i[s]();
            } else n.interval && n.ride && (i.pause(), i.cycle());
        }

        static jQueryInterface (t) {
            return this.each((function () {Z.carouselInterface(this, t);}));
        }

        static dataApiClickHandler (t) {
            const e = i(this);
            if (!e || !e.classList.contains('carousel')) return;
            const n = {
                ...F.getDataAttributes(e), ...F.getDataAttributes(this),
            }, s = this.getAttribute('data-bs-slide-to');
            s && (n.interval = !1), Z.carouselInterface(e, n), s &&
            Z.getInstance(e).to(s), t.preventDefault();
        }

        next () {this._slide(K);}

        nextWhenVisible () {
            !document.hidden && a(this._element) && this.next();
        }

        prev () {this._slide(X);}

        pause (t) {
            t || (this._isPaused = !0), U.findOne(
                '.carousel-item-next, .carousel-item-prev', this._element) &&
            (n(this._element), this.cycle(!0)), clearInterval(
                this._interval), this._interval = null;
        }

        cycle (t) {
            t || (this._isPaused = !1), this._interval && (clearInterval(
                this._interval), this._interval = null), this._config &&
            this._config.interval && !this._isPaused &&
            (this._updateInterval(), this._interval = setInterval(
                (document.visibilityState
                    ? this.nextWhenVisible
                    : this.next).bind(this), this._config.interval));
        }

        to (t) {
            this._activeElement = U.findOne('.active.carousel-item',
                this._element);
            const e = this._getItemIndex(this._activeElement);
            if (t > this._items.length - 1 || t < 0) return;
            if (this._isSliding) return void P.one(this._element,
                'slid.bs.carousel', () => this.to(t));
            if (e === t) return this.pause(), void this.cycle();
            const i = t > e ? K : X;
            this._slide(i, this._items[t]);
        }

        _getConfig (t) {
            return t = {
                ...$, ...F.getDataAttributes(this._element), ...'object' ==
                typeof t ? t : {},
            }, r('carousel', t, V), t;
        }

        _handleSwipe () {
            const t = Math.abs(this.touchDeltaX);
            if (t <= 40) return;
            const e = t / this.touchDeltaX;
            this.touchDeltaX = 0, e && this._slide(e > 0 ? Q : Y);
        }

        _addEventListeners () {
            this._config.keyboard && P.on(this._element, 'keydown.bs.carousel',
                t => this._keydown(t)), 'hover' === this._config.pause &&
            (P.on(this._element, 'mouseenter.bs.carousel',
                t => this.pause(t)), P.on(this._element,
                'mouseleave.bs.carousel',
                t => this.cycle(t))), this._config.touch &&
            this._touchSupported && this._addTouchEventListeners();
        }

        _addTouchEventListeners () {
            const t = t => {
                !this._pointerEvent || 'pen' !== t.pointerType && 'touch' !==
                t.pointerType
                    ? this._pointerEvent ||
                    (this.touchStartX = t.touches[0].clientX)
                    : this.touchStartX = t.clientX;
            }, e = t => {
                this.touchDeltaX = t.touches && t.touches.length > 1
                    ? 0
                    : t.touches[0].clientX - this.touchStartX;
            }, i = t => {
                !this._pointerEvent || 'pen' !== t.pointerType && 'touch' !==
                t.pointerType || (this.touchDeltaX = t.clientX -
                    this.touchStartX), this._handleSwipe(), 'hover' ===
                this._config.pause && (this.pause(), this.touchTimeout &&
                clearTimeout(this.touchTimeout), this.touchTimeout = setTimeout(
                    t => this.cycle(t), 500 + this._config.interval));
            };
            U.find('.carousel-item img', this._element).
                forEach(t => {
                    P.on(t, 'dragstart.bs.carousel', t => t.preventDefault());
                }), this._pointerEvent
                ? (P.on(this._element, 'pointerdown.bs.carousel',
                    e => t(e)), P.on(this._element, 'pointerup.bs.carousel',
                    t => i(t)), this._element.classList.add('pointer-event'))
                : (P.on(this._element, 'touchstart.bs.carousel',
                    e => t(e)), P.on(this._element, 'touchmove.bs.carousel',
                    t => e(t)), P.on(this._element, 'touchend.bs.carousel',
                    t => i(t)));
        }

        _keydown (t) {
            if (/input|textarea/i.test(t.target.tagName)) return;
            const e = G[t.key];
            e && (t.preventDefault(), this._slide(e));
        }

        _getItemIndex (t) {
            return this._items = t && t.parentNode ? U.find('.carousel-item',
                t.parentNode) : [], this._items.indexOf(t);
        }

        _getItemByOrder (t, e) {
            const i = t === K;
            return b(this._items, e, i, this._config.wrap);
        }

        _triggerSlideEvent (t, e) {
            const i = this._getItemIndex(t), n = this._getItemIndex(
                U.findOne('.active.carousel-item', this._element));
            return P.trigger(this._element, 'slide.bs.carousel',
                { relatedTarget: t, direction: e, from: n, to: i });
        }

        _setActiveIndicatorElement (t) {
            if (this._indicatorsElement) {
                const e = U.findOne('.active', this._indicatorsElement);
                e.classList.remove('active'), e.removeAttribute('aria-current');
                const i = U.find('[data-bs-target]', this._indicatorsElement);
                for (let e = 0; e < i.length; e++) if (Number.parseInt(
                    i[e].getAttribute('data-bs-slide-to'), 10) ===
                    this._getItemIndex(t)) {
                    i[e].classList.add('active'), i[e].setAttribute(
                        'aria-current', 'true');
                    break;
                }
            }
        }

        _updateInterval () {
            const t = this._activeElement ||
                U.findOne('.active.carousel-item', this._element);
            if (!t) return;
            const e = Number.parseInt(t.getAttribute('data-bs-interval'), 10);
            e
                ? (this._config.defaultInterval = this._config.defaultInterval ||
                this._config.interval, this._config.interval = e)
                : this._config.interval = this._config.defaultInterval ||
                this._config.interval;
        }

        _slide (t, e) {
            const i = this._directionToOrder(t),
                n = U.findOne('.active.carousel-item', this._element),
                s = this._getItemIndex(n), o = e || this._getItemByOrder(i, n),
                r = this._getItemIndex(o), a = Boolean(this._interval),
                l = i === K,
                c = l ? 'carousel-item-start' : 'carousel-item-end',
                h = l ? 'carousel-item-next' : 'carousel-item-prev',
                u = this._orderToDirection(i);
            if (o && o.classList.contains(
                'active')) return void (this._isSliding = !1);
            if (this._isSliding) return;
            if (this._triggerSlideEvent(o, u).defaultPrevented) return;
            if (!n || !o) return;
            this._isSliding = !0, a &&
            this.pause(), this._setActiveIndicatorElement(
                o), this._activeElement = o;
            const f = () => {
                P.trigger(this._element, 'slid.bs.carousel',
                    { relatedTarget: o, direction: u, from: s, to: r });
            };
            if (this._element.classList.contains('slide')) {
                o.classList.add(h), d(o), n.classList.add(c), o.classList.add(
                    c);
                const t = () => {
                    o.classList.remove(c, h), o.classList.add(
                        'active'), n.classList.remove('active', h,
                        c), this._isSliding = !1, setTimeout(f, 0);
                };
                this._queueCallback(t, n, !0);
            } else n.classList.remove('active'), o.classList.add(
                'active'), this._isSliding = !1, f();
            a && this.cycle();
        }

        _directionToOrder (t) {
            return [Q, Y].includes(t) ? p()
                ? t === Y ? X : K
                : t === Y ? K : X : t;
        }

        _orderToDirection (t) {
            return [K, X].includes(t) ? p()
                ? t === X ? Y : Q
                : t === X ? Q : Y : t;
        }
    }

    P.on(document, 'click.bs.carousel.data-api',
        '[data-bs-slide], [data-bs-slide-to]', Z.dataApiClickHandler), P.on(
        window, 'load.bs.carousel.data-api', () => {
            const t = U.find('[data-bs-ride="carousel"]');
            for (let e = 0, i = t.length; e < i; e++) Z.carouselInterface(t[e],
                Z.getInstance(t[e]));
        }), m(Z);
    const J = { toggle: !0, parent: null },
        tt = { toggle: 'boolean', parent: '(null|element)' };

    class et extends H {
        constructor (t, i) {
            super(
                t), this._isTransitioning = !1, this._config = this._getConfig(
                i), this._triggerArray = [];
            const n = U.find('[data-bs-toggle="collapse"]');
            for (let t = 0, i = n.length; t < i; t++) {
                const i = n[t], s = e(i),
                    o = U.find(s).filter(t => t === this._element);
                null !== s && o.length &&
                (this._selector = s, this._triggerArray.push(i));
            }
            this._initializeChildren(), this._config.parent ||
            this._addAriaAndCollapsedClass(this._triggerArray,
                this._isShown()), this._config.toggle && this.toggle();
        }

        static get Default () {return J;}

        static get NAME () {return 'collapse';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = {};
                'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1);
                const i = et.getOrCreateInstance(this, e);
                if ('string' == typeof t) {
                    if (void 0 === i[t]) throw new TypeError(
                        `No method named "${t}"`);
                    i[t]();
                }
            }));
        }

        toggle () {this._isShown() ? this.hide() : this.show();}

        show () {
            if (this._isTransitioning || this._isShown()) return;
            let t, e = [];
            if (this._config.parent) {
                const t = U.find('.collapse .collapse', this._config.parent);
                e = U.find('.show, .collapsing', this._config.parent).
                    filter(e => !t.includes(e));
            }
            const i = U.findOne(this._selector);
            if (e.length) {
                const n = e.find(t => i !== t);
                if (t = n ? et.getInstance(n) : null, t &&
                t._isTransitioning) return;
            }
            if (P.trigger(this._element,
                'show.bs.collapse').defaultPrevented) return;
            e.forEach(e => {
                i !== e &&
                et.getOrCreateInstance(e, { toggle: !1 }).hide(), t ||
                M.set(e, 'bs.collapse', null);
            });
            const n = this._getDimension();
            this._element.classList.remove(
                'collapse'), this._element.classList.add(
                'collapsing'), this._element.style[n] = 0, this._addAriaAndCollapsedClass(
                this._triggerArray, !0), this._isTransitioning = !0;
            const s = 'scroll' + (n[0].toUpperCase() + n.slice(1));
            this._queueCallback(() => {
                this._isTransitioning = !1, this._element.classList.remove(
                    'collapsing'), this._element.classList.add('collapse',
                    'show'), this._element.style[n] = '', P.trigger(
                    this._element, 'shown.bs.collapse');
            }, this._element, !0), this._element.style[n] = this._element[s] +
                'px';
        }

        hide () {
            if (this._isTransitioning || !this._isShown()) return;
            if (P.trigger(this._element,
                'hide.bs.collapse').defaultPrevented) return;
            const t = this._getDimension();
            this._element.style[t] = this._element.getBoundingClientRect()[t] +
                'px', d(this._element), this._element.classList.add(
                'collapsing'), this._element.classList.remove('collapse',
                'show');
            const e = this._triggerArray.length;
            for (let t = 0; t < e; t++) {
                const e = this._triggerArray[t], n = i(e);
                n && !this._isShown(n) &&
                this._addAriaAndCollapsedClass([e], !1);
            }
            this._isTransitioning = !0, this._element.style[t] = '', this._queueCallback(
                () => {
                    this._isTransitioning = !1, this._element.classList.remove(
                        'collapsing'), this._element.classList.add(
                        'collapse'), P.trigger(this._element,
                        'hidden.bs.collapse');
                }, this._element, !0);
        }

        _isShown (t = this._element) {return t.classList.contains('show');}

        _getConfig (t) {
            return (t = {
                ...J, ...F.getDataAttributes(this._element), ...t,
            }).toggle = Boolean(t.toggle), t.parent = o(t.parent), r('collapse',
                t, tt), t;
        }

        _getDimension () {
            return this._element.classList.contains('collapse-horizontal')
                ? 'width'
                : 'height';
        }

        _initializeChildren () {
            if (!this._config.parent) return;
            const t = U.find('.collapse .collapse', this._config.parent);
            U.find('[data-bs-toggle="collapse"]', this._config.parent).
                filter(e => !t.includes(e)).
                forEach(t => {
                    const e = i(t);
                    e && this._addAriaAndCollapsedClass([t], this._isShown(e));
                });
        }

        _addAriaAndCollapsedClass (t, e) {
            t.length && t.forEach(t => {
                e ? t.classList.remove('collapsed') : t.classList.add(
                    'collapsed'), t.setAttribute('aria-expanded', e);
            });
        }
    }

    P.on(document, 'click.bs.collapse.data-api', '[data-bs-toggle="collapse"]',
        (function (t) {
            ('A' === t.target.tagName || t.delegateTarget && 'A' ===
                t.delegateTarget.tagName) && t.preventDefault();
            const i = e(this);
            U.find(i).
                forEach(
                    t => {et.getOrCreateInstance(t, { toggle: !1 }).toggle();});
        })), m(et);
    var it = 'top', nt = 'bottom', st = 'right', ot = 'left',
        rt = [it, nt, st, ot], at = rt.reduce(
        (function (t, e) {return t.concat([e + '-start', e + '-end']);}), []),
        lt = [].concat(rt, ['auto']).
            reduce((function (t, e) {
                return t.concat([e, e + '-start', e + '-end']);
            }), []), ct = [
            'beforeRead',
            'read',
            'afterRead',
            'beforeMain',
            'main',
            'afterMain',
            'beforeWrite',
            'write',
            'afterWrite'];

    function ht (t) {return t ? (t.nodeName || '').toLowerCase() : null;}

    function dt (t) {
        if (null == t) return window;
        if ('[object Window]' !== t.toString()) {
            var e = t.ownerDocument;
            return e && e.defaultView || window;
        }
        return t;
    }

    function ut (t) {return t instanceof dt(t).Element || t instanceof Element;}

    function ft (t) {
        return t instanceof dt(t).HTMLElement || t instanceof HTMLElement;
    }

    function pt (t) {
        return 'undefined' != typeof ShadowRoot &&
            (t instanceof dt(t).ShadowRoot || t instanceof ShadowRoot);
    }

    var mt = {
        name: 'applyStyles',
        enabled: !0,
        phase: 'write',
        fn: function (t) {
            var e = t.state;
            Object.keys(e.elements).
                forEach((function (t) {
                    var i = e.styles[t] || {}, n = e.attributes[t] || {},
                        s = e.elements[t];
                    ft(s) && ht(s) &&
                    (Object.assign(s.style, i), Object.keys(n).
                        forEach((function (t) {
                            var e = n[t];
                            !1 === e ? s.removeAttribute(t) : s.setAttribute(t,
                                !0 === e ? '' : e);
                        })));
                }));
        },
        effect: function (t) {
            var e = t.state, i = {
                popper: {
                    position: e.options.strategy,
                    left: '0',
                    top: '0',
                    margin: '0',
                }, arrow: { position: 'absolute' }, reference: {},
            };
            return Object.assign(e.elements.popper.style,
                i.popper), e.styles = i, e.elements.arrow &&
            Object.assign(e.elements.arrow.style, i.arrow), function () {
                Object.keys(e.elements).
                    forEach((function (t) {
                        var n = e.elements[t], s = e.attributes[t] || {},
                            o = Object.keys(e.styles.hasOwnProperty(t)
                                ? e.styles[t]
                                : i[t]).
                                reduce((function (t, e) {return t[e] = '', t;}),
                                    {});
                        ft(n) && ht(n) &&
                        (Object.assign(n.style, o), Object.keys(s).
                            forEach((function (t) {n.removeAttribute(t);})));
                    }));
            };
        },
        requires: ['computeStyles'],
    };

    function gt (t) {return t.split('-')[0];}

    var _t = Math.round;

    function bt (t, e) {
        void 0 === e && (e = !1);
        var i = t.getBoundingClientRect(), n = 1, s = 1;
        return ft(t) && e &&
        (n = i.width / t.offsetWidth || 1, s = i.height / t.offsetHeight ||
            1), {
            width: _t(i.width / n),
            height: _t(i.height / s),
            top: _t(i.top / s),
            right: _t(i.right / n),
            bottom: _t(i.bottom / s),
            left: _t(i.left / n),
            x: _t(i.left / n),
            y: _t(i.top / s),
        };
    }

    function vt (t) {
        var e = bt(t), i = t.offsetWidth, n = t.offsetHeight;
        return Math.abs(e.width - i) <= 1 && (i = e.width), Math.abs(
            e.height - n) <= 1 && (n = e.height), {
            x: t.offsetLeft,
            y: t.offsetTop,
            width: i,
            height: n,
        };
    }

    function yt (t, e) {
        var i = e.getRootNode && e.getRootNode();
        if (t.contains(e)) return !0;
        if (i && pt(i)) {
            var n = e;
            do {
                if (n && t.isSameNode(n)) return !0;
                n = n.parentNode || n.host;
            } while (n);
        }
        return !1;
    }

    function wt (t) {return dt(t).getComputedStyle(t);}

    function Et (t) {return ['table', 'td', 'th'].indexOf(ht(t)) >= 0;}

    function At (t) {
        return ((ut(t) ? t.ownerDocument : t.document) ||
            window.document).documentElement;
    }

    function Tt (t) {
        return 'html' === ht(t) ? t : t.assignedSlot || t.parentNode ||
            (pt(t) ? t.host : null) || At(t);
    }

    function Ot (t) {
        return ft(t) && 'fixed' !== wt(t).position
            ? t.offsetParent
            : null;
    }

    function Ct (t) {
        for (var e = dt(t), i = Ot(t); i && Et(i) && "static" ===
        wt(i).position;) i = Ot(i);
        return i &&
        ('html' === ht(i) || 'body' === ht(i) && 'static' === wt(i).position)
            ? e
            : i || function (t) {
            var e = -1 !== navigator.userAgent.toLowerCase().indexOf('firefox');
            if (-1 !== navigator.userAgent.indexOf('Trident') && ft(t) &&
                'fixed' === wt(t).position) return null;
            for (var i = Tt(t); ft(i) && ["html", "body"].indexOf(ht(i)) < 0;) {
                var n = wt(i);
                if ('none' !== n.transform || 'none' !== n.perspective ||
                    'paint' === n.contain || -1 !==
                    ['transform', 'perspective'].indexOf(n.willChange) || e &&
                    'filter' === n.willChange || e && n.filter && 'none' !==
                    n.filter) return i;
                i = i.parentNode;
            }
            return null;
        }(t) || e;
    }

    function kt (t) {return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y';}

    var Lt = Math.max, xt = Math.min, Dt = Math.round;

    function St (t, e, i) {return Lt(t, xt(e, i));}

    function Nt (t) {
        return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t);
    }

    function It (t, e) {
        return e.reduce((function (e, i) {return e[i] = t, e;}), {});
    }

    var Pt = {
        name: 'arrow',
        enabled: !0,
        phase: 'main',
        fn: function (t) {
            var e, i = t.state, n = t.name, s = t.options, o = i.elements.arrow,
                r = i.modifiersData.popperOffsets, a = gt(i.placement),
                l = kt(a), c = [ot, st].indexOf(a) >= 0 ? 'height' : 'width';
            if (o && r) {
                var h = function (t, e) {
                        return Nt('number' != typeof (t = 'function' == typeof t
                            ? t(Object.assign({}, e.rects,
                                { placement: e.placement }))
                            : t)
                            ? t
                            : It(t, rt));
                    }(s.padding, i), d = vt(o), u = 'y' === l ? it : ot,
                    f = 'y' === l ? nt : st,
                    p = i.rects.reference[c] + i.rects.reference[l] - r[l] -
                        i.rects.popper[c], m = r[l] - i.rects.reference[l],
                    g = Ct(o), _ = g
                    ? 'y' === l ? g.clientHeight || 0 : g.clientWidth || 0
                    : 0, b = p / 2 - m / 2, v = h[u], y = _ - d[c] - h[f],
                    w = _ / 2 - d[c] / 2 + b, E = St(v, w, y), A = l;
                i.modifiersData[n] = ((e = {})[A] = E, e.centerOffset = E -
                    w, e);
            }
        },
        effect: function (t) {
            var e = t.state, i = t.options.element,
                n = void 0 === i ? '[data-popper-arrow]' : i;
            null != n && ('string' != typeof n ||
                (n = e.elements.popper.querySelector(n))) &&
            yt(e.elements.popper, n) && (e.elements.arrow = n);
        },
        requires: ['popperOffsets'],
        requiresIfExists: ['preventOverflow'],
    }, jt = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' };

    function Mt (t) {
        var e, i = t.popper, n = t.popperRect, s = t.placement, o = t.offsets,
            r = t.position, a = t.gpuAcceleration, l = t.adaptive,
            c = t.roundOffsets, h = !0 === c ? function (t) {
                var e = t.x, i = t.y, n = window.devicePixelRatio || 1;
                return { x: Dt(Dt(e * n) / n) || 0, y: Dt(Dt(i * n) / n) || 0 };
            }(o) : 'function' == typeof c ? c(o) : o, d = h.x,
            u = void 0 === d ? 0 : d, f = h.y, p = void 0 === f ? 0 : f,
            m = o.hasOwnProperty('x'), g = o.hasOwnProperty('y'), _ = ot,
            b = it, v = window;
        if (l) {
            var y = Ct(i), w = 'clientHeight', E = 'clientWidth';
            y === dt(i) && 'static' !== wt(y = At(i)).position &&
            (w = 'scrollHeight', E = 'scrollWidth'), y = y, s === it &&
            (b = nt, p -= y[w] - n.height, p *= a ? 1 : -1), s === ot &&
            (_ = st, u -= y[E] - n.width, u *= a ? 1 : -1);
        }
        var A, T = Object.assign({ position: r }, l && jt);
        return a ? Object.assign({}, T, ((A = {})[b] = g ? '0' : '', A[_] = m
            ? '0'
            : '', A.transform = (v.devicePixelRatio || 1) < 2 ? 'translate(' +
            u + 'px, ' + p + 'px)' : 'translate3d(' + u + 'px, ' + p +
            'px, 0)', A)) : Object.assign({}, T,
            ((e = {})[b] = g ? p + 'px' : '', e[_] = m
                ? u + 'px'
                : '', e.transform = '', e));
    }

    var Ht = {
        name: 'computeStyles',
        enabled: !0,
        phase: 'beforeWrite',
        fn: function (t) {
            var e = t.state, i = t.options, n = i.gpuAcceleration,
                s = void 0 === n || n, o = i.adaptive, r = void 0 === o || o,
                a = i.roundOffsets, l = void 0 === a || a, c = {
                    placement: gt(e.placement),
                    popper: e.elements.popper,
                    popperRect: e.rects.popper,
                    gpuAcceleration: s,
                };
            null != e.modifiersData.popperOffsets &&
            (e.styles.popper = Object.assign({}, e.styles.popper,
                Mt(Object.assign({}, c, {
                    offsets: e.modifiersData.popperOffsets,
                    position: e.options.strategy,
                    adaptive: r,
                    roundOffsets: l,
                })))), null != e.modifiersData.arrow &&
            (e.styles.arrow = Object.assign({}, e.styles.arrow,
                Mt(Object.assign({}, c, {
                    offsets: e.modifiersData.arrow,
                    position: 'absolute',
                    adaptive: !1,
                    roundOffsets: l,
                })))), e.attributes.popper = Object.assign({},
                e.attributes.popper, { 'data-popper-placement': e.placement });
        },
        data: {},
    }, Bt = { passive: !0 }, Rt = {
        name: 'eventListeners',
        enabled: !0,
        phase: 'write',
        fn: function () {},
        effect: function (t) {
            var e = t.state, i = t.instance, n = t.options, s = n.scroll,
                o = void 0 === s || s, r = n.resize, a = void 0 === r || r,
                l = dt(e.elements.popper),
                c = [].concat(e.scrollParents.reference,
                    e.scrollParents.popper);
            return o && c.forEach((function (t) {
                t.addEventListener('scroll', i.update, Bt);
            })), a && l.addEventListener('resize', i.update, Bt), function () {
                o && c.forEach((function (t) {
                    t.removeEventListener('scroll', i.update, Bt);
                })), a && l.removeEventListener('resize', i.update, Bt);
            };
        },
        data: {},
    }, Wt = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };

    function zt (t) {
        return t.replace(/left|right|bottom|top/g,
            (function (t) {return Wt[t];}));
    }

    var qt = { start: 'end', end: 'start' };

    function Ft (t) {
        return t.replace(/start|end/g, (function (t) {return qt[t];}));
    }

    function Ut (t) {
        var e = dt(t);
        return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset };
    }

    function $t (t) {return bt(At(t)).left + Ut(t).scrollLeft;}

    function Vt (t) {
        var e = wt(t), i = e.overflow, n = e.overflowX, s = e.overflowY;
        return /auto|scroll|overlay|hidden/.test(i + s + n);
    }

    function Kt (t, e) {
        var i;
        void 0 === e && (e = []);
        var n = function t (e) {
                return ['html', 'body', '#document'].indexOf(ht(e)) >= 0
                    ? e.ownerDocument.body
                    : ft(e) && Vt(e) ? e : t(Tt(e));
            }(t), s = n === (null == (i = t.ownerDocument) ? void 0 : i.body),
            o = dt(n),
            r = s ? [o].concat(o.visualViewport || [], Vt(n) ? n : []) : n,
            a = e.concat(r);
        return s ? a : a.concat(Kt(Tt(r)));
    }

    function Xt (t) {
        return Object.assign({}, t, {
            left: t.x,
            top: t.y,
            right: t.x + t.width,
            bottom: t.y + t.height,
        });
    }

    function Yt (t, e) {
        return 'viewport' === e ? Xt(function (t) {
            var e = dt(t), i = At(t), n = e.visualViewport, s = i.clientWidth,
                o = i.clientHeight, r = 0, a = 0;
            return n &&
            (s = n.width, o = n.height, /^((?!chrome|android).)*safari/i.test(
                navigator.userAgent) || (r = n.offsetLeft, a = n.offsetTop)), {
                width: s,
                height: o,
                x: r + $t(t),
                y: a,
            };
        }(t)) : ft(e) ? function (t) {
            var e = bt(t);
            return e.top = e.top + t.clientTop, e.left = e.left +
                t.clientLeft, e.bottom = e.top +
                t.clientHeight, e.right = e.left +
                t.clientWidth, e.width = t.clientWidth, e.height = t.clientHeight, e.x = e.left, e.y = e.top, e;
        }(e) : Xt(function (t) {
            var e, i = At(t), n = Ut(t),
                s = null == (e = t.ownerDocument) ? void 0 : e.body,
                o = Lt(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0,
                    s ? s.clientWidth : 0),
                r = Lt(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0,
                    s ? s.clientHeight : 0), a = -n.scrollLeft + $t(t),
                l = -n.scrollTop;
            return 'rtl' === wt(s || i).direction &&
            (a += Lt(i.clientWidth, s ? s.clientWidth : 0) - o), {
                width: o,
                height: r,
                x: a,
                y: l,
            };
        }(At(t)));
    }

    function Qt (t) {return t.split('-')[1];}

    function Gt (t) {
        var e, i = t.reference, n = t.element, s = t.placement,
            o = s ? gt(s) : null, r = s ? Qt(s) : null,
            a = i.x + i.width / 2 - n.width / 2,
            l = i.y + i.height / 2 - n.height / 2;
        switch (o) {
            case it:
                e = { x: a, y: i.y - n.height };
                break;
            case nt:
                e = { x: a, y: i.y + i.height };
                break;
            case st:
                e = { x: i.x + i.width, y: l };
                break;
            case ot:
                e = { x: i.x - n.width, y: l };
                break;
            default:
                e = { x: i.x, y: i.y };
        }
        var c = o ? kt(o) : null;
        if (null != c) {
            var h = 'y' === c ? 'height' : 'width';
            switch (r) {
                case'start':
                    e[c] = e[c] - (i[h] / 2 - n[h] / 2);
                    break;
                case'end':
                    e[c] = e[c] + (i[h] / 2 - n[h] / 2);
            }
        }
        return e;
    }

    function Zt (t, e) {
        void 0 === e && (e = {});
        var i = e, n = i.placement, s = void 0 === n ? t.placement : n,
            o = i.boundary, r = void 0 === o ? 'clippingParents' : o,
            a = i.rootBoundary, l = void 0 === a ? 'viewport' : a,
            c = i.elementContext, h = void 0 === c ? 'popper' : c,
            d = i.altBoundary, u = void 0 !== d && d, f = i.padding,
            p = void 0 === f ? 0 : f,
            m = Nt('number' != typeof p ? p : It(p, rt)),
            g = 'popper' === h ? 'reference' : 'popper',
            _ = t.elements.reference, b = t.rects.popper,
            v = t.elements[u ? g : h], y = function (t, e, i) {
                var n = 'clippingParents' === e
                    ? function (t) {
                        var e = Kt(Tt(t)),
                            i = ['absolute', 'fixed'].indexOf(wt(t).position) >=
                            0 && ft(t) ? Ct(t) : t;
                        return ut(i) ? e.filter((function (t) {
                            return ut(t) && yt(t, i) && 'body' !== ht(t);
                        })) : [];
                    }(t)
                    : [].concat(e), s = [].concat(n, [i]), o = s[0],
                    r = s.reduce((function (e, i) {
                        var n = Yt(t, i);
                        return e.top = Lt(n.top, e.top), e.right = xt(n.right,
                            e.right), e.bottom = xt(n.bottom,
                            e.bottom), e.left = Lt(n.left, e.left), e;
                    }), Yt(t, o));
                return r.width = r.right - r.left, r.height = r.bottom -
                    r.top, r.x = r.left, r.y = r.top, r;
            }(ut(v) ? v : v.contextElement || At(t.elements.popper), r, l),
            w = bt(_), E = Gt(
            { reference: w, element: b, strategy: 'absolute', placement: s }),
            A = Xt(Object.assign({}, b, E)), T = 'popper' === h ? A : w, O = {
                top: y.top - T.top + m.top,
                bottom: T.bottom - y.bottom + m.bottom,
                left: y.left - T.left + m.left,
                right: T.right - y.right + m.right,
            }, C = t.modifiersData.offset;
        if ('popper' === h && C) {
            var k = C[s];
            Object.keys(O).
                forEach((function (t) {
                    var e = [st, nt].indexOf(t) >= 0 ? 1 : -1,
                        i = [it, nt].indexOf(t) >= 0 ? 'y' : 'x';
                    O[t] += k[i] * e;
                }));
        }
        return O;
    }

    function Jt (t, e) {
        void 0 === e && (e = {});
        var i = e, n = i.placement, s = i.boundary, o = i.rootBoundary,
            r = i.padding, a = i.flipVariations, l = i.allowedAutoPlacements,
            c = void 0 === l ? lt : l, h = Qt(n), d = h
            ? a ? at : at.filter((function (t) {return Qt(t) === h;}))
            : rt, u = d.filter((function (t) {return c.indexOf(t) >= 0;}));
        0 === u.length && (u = d);
        var f = u.reduce((function (e, i) {
            return e[i] = Zt(t,
                { placement: i, boundary: s, rootBoundary: o, padding: r })[gt(
                i)], e;
        }), {});
        return Object.keys(f).sort((function (t, e) {return f[t] - f[e];}));
    }

    var te = {
        name: 'flip', enabled: !0, phase: 'main', fn: function (t) {
            var e = t.state, i = t.options, n = t.name;
            if (!e.modifiersData[n]._skip) {
                for (var s = i.mainAxis, o = void 0 === s ||
                    s, r = i.altAxis, a = void 0 === r ||
                    r, l = i.fallbackPlacements, c = i.padding, h = i.boundary, d = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 ===
                    f ||
                    f, m = i.allowedAutoPlacements, g = e.options.placement, _ = gt(
                    g), b = l || (_ !== g && p ? function (t) {
                    if ('auto' === gt(t)) return [];
                    var e = zt(t);
                    return [Ft(t), e, Ft(e)];
                }(g) : [zt(g)]), v = [g].concat(b).
                    reduce((function (t, i) {
                            return t.concat('auto' === gt(i) ? Jt(e, {
                                placement: i,
                                boundary: h,
                                rootBoundary: d,
                                padding: c,
                                flipVariations: p,
                                allowedAutoPlacements: m,
                            }) : i);
                        }),
                        []), y = e.rects.reference, w = e.rects.popper, E = new Map, A = !0, T = v[0], O = 0; O <
                     v.length; O++) {
                    var C = v[O], k = gt(C), L = 'start' === Qt(C),
                        x = [it, nt].indexOf(k) >= 0,
                        D = x ? 'width' : 'height', S = Zt(e, {
                            placement: C,
                            boundary: h,
                            rootBoundary: d,
                            altBoundary: u,
                            padding: c,
                        }), N = x ? L ? st : ot : L ? nt : it;
                    y[D] > w[D] && (N = zt(N));
                    var I = zt(N), P = [];
                    if (o && P.push(S[k] <= 0), a &&
                    P.push(S[N] <= 0, S[I] <= 0), P.every(
                        (function (t) {return t;}))) {
                        T = C, A = !1;
                        break;
                    }
                    E.set(C, P);
                }
                if (A) for (var j = function (t) {
                    var e = v.find((function (e) {
                        var i = E.get(e);
                        if (i) return i.slice(0, t).
                            every((function (t) {return t;}));
                    }));
                    if (e) return T = e, 'break';
                }, M = p ? 3 : 1; M > 0 && "break" !== j(M); M--) ;
                e.placement !== T &&
                (e.modifiersData[n]._skip = !0, e.placement = T, e.reset = !0);
            }
        }, requiresIfExists: ['offset'], data: { _skip: !1 },
    };

    function ee (t, e, i) {
        return void 0 === i && (i = { x: 0, y: 0 }), {
            top: t.top - e.height - i.y,
            right: t.right - e.width + i.x,
            bottom: t.bottom - e.height + i.y,
            left: t.left - e.width - i.x,
        };
    }

    function ie (t) {
        return [it, st, nt, ot].some((function (e) {return t[e] >= 0;}));
    }

    var ne = {
        name: 'hide',
        enabled: !0,
        phase: 'main',
        requiresIfExists: ['preventOverflow'],
        fn: function (t) {
            var e = t.state, i = t.name, n = e.rects.reference,
                s = e.rects.popper, o = e.modifiersData.preventOverflow,
                r = Zt(e, { elementContext: 'reference' }),
                a = Zt(e, { altBoundary: !0 }), l = ee(r, n), c = ee(a, s, o),
                h = ie(l), d = ie(c);
            e.modifiersData[i] = {
                referenceClippingOffsets: l,
                popperEscapeOffsets: c,
                isReferenceHidden: h,
                hasPopperEscaped: d,
            }, e.attributes.popper = Object.assign({}, e.attributes.popper,
                {
                    'data-popper-reference-hidden': h,
                    'data-popper-escaped': d,
                });
        },
    }, se = {
        name: 'offset',
        enabled: !0,
        phase: 'main',
        requires: ['popperOffsets'],
        fn: function (t) {
            var e = t.state, i = t.options, n = t.name, s = i.offset,
                o = void 0 === s ? [0, 0] : s, r = lt.reduce((function (t, i) {
                    return t[i] = function (t, e, i) {
                        var n = gt(t), s = [ot, it].indexOf(n) >= 0 ? -1 : 1,
                            o = 'function' == typeof i ? i(
                                Object.assign({}, e, { placement: t })) : i,
                            r = o[0], a = o[1];
                        return r = r || 0, a = (a || 0) * s, [ot, st].indexOf(n) >=
                        0 ? { x: a, y: r } : { x: r, y: a };
                    }(i, e.rects, o), t;
                }), {}), a = r[e.placement], l = a.x, c = a.y;
            null != e.modifiersData.popperOffsets &&
            (e.modifiersData.popperOffsets.x += l, e.modifiersData.popperOffsets.y += c), e.modifiersData[n] = r;
        },
    }, oe = {
        name: 'popperOffsets',
        enabled: !0,
        phase: 'read',
        fn: function (t) {
            var e = t.state, i = t.name;
            e.modifiersData[i] = Gt({
                reference: e.rects.reference,
                element: e.rects.popper,
                strategy: 'absolute',
                placement: e.placement,
            });
        },
        data: {},
    }, re = {
        name: 'preventOverflow', enabled: !0, phase: 'main', fn: function (t) {
            var e = t.state, i = t.options, n = t.name, s = i.mainAxis,
                o = void 0 === s || s, r = i.altAxis, a = void 0 !== r && r,
                l = i.boundary, c = i.rootBoundary, h = i.altBoundary,
                d = i.padding, u = i.tether, f = void 0 === u || u,
                p = i.tetherOffset, m = void 0 === p ? 0 : p, g = Zt(e,
                { boundary: l, rootBoundary: c, padding: d, altBoundary: h }),
                _ = gt(e.placement), b = Qt(e.placement), v = !b, y = kt(_),
                w = 'x' === y ? 'y' : 'x', E = e.modifiersData.popperOffsets,
                A = e.rects.reference, T = e.rects.popper,
                O = 'function' == typeof m ? m(
                    Object.assign({}, e.rects, { placement: e.placement })) : m,
                C = { x: 0, y: 0 };
            if (E) {
                if (o || a) {
                    var k = 'y' === y ? it : ot, L = 'y' === y ? nt : st,
                        x = 'y' === y ? 'height' : 'width', D = E[y],
                        S = E[y] + g[k], N = E[y] - g[L], I = f ? -T[x] / 2 : 0,
                        P = 'start' === b ? A[x] : T[x],
                        j = 'start' === b ? -T[x] : -A[x], M = e.elements.arrow,
                        H = f && M ? vt(M) : { width: 0, height: 0 },
                        B = e.modifiersData['arrow#persistent']
                            ? e.modifiersData['arrow#persistent'].padding
                            : { top: 0, right: 0, bottom: 0, left: 0 },
                        R = B[k], W = B[L], z = St(0, A[x], H[x]),
                        q = v ? A[x] / 2 - I - z - R - O : P - z - R - O,
                        F = v ? -A[x] / 2 + I + z + W + O : j + z + W + O,
                        U = e.elements.arrow && Ct(e.elements.arrow), $ = U
                        ? 'y' === y ? U.clientTop || 0 : U.clientLeft || 0
                        : 0, V = e.modifiersData.offset
                        ? e.modifiersData.offset[e.placement][y]
                        : 0, K = E[y] + q - V - $, X = E[y] + F - V;
                    if (o) {
                        var Y = St(f ? xt(S, K) : S, D, f ? Lt(N, X) : N);
                        E[y] = Y, C[y] = Y - D;
                    }
                    if (a) {
                        var Q = 'x' === y ? it : ot, G = 'x' === y ? nt : st,
                            Z = E[w], J = Z + g[Q], tt = Z - g[G],
                            et = St(f ? xt(J, K) : J, Z, f ? Lt(tt, X) : tt);
                        E[w] = et, C[w] = et - Z;
                    }
                }
                e.modifiersData[n] = C;
            }
        }, requiresIfExists: ['offset'],
    };

    function ae (t, e, i) {
        void 0 === i && (i = !1);
        var n, s, o = ft(e), r = ft(e) && function (t) {
                var e = t.getBoundingClientRect(), i = e.width / t.offsetWidth || 1,
                    n = e.height / t.offsetHeight || 1;
                return 1 !== i || 1 !== n;
            }(e), a = At(e), l = bt(t, r), c = { scrollLeft: 0, scrollTop: 0 },
            h = { x: 0, y: 0 };
        return (o || !o && !i) && (('body' !== ht(e) || Vt(a)) &&
        (c = (n = e) !== dt(n) && ft(n) ? {
            scrollLeft: (s = n).scrollLeft,
            scrollTop: s.scrollTop,
        } : Ut(n)), ft(e) ? ((h = bt(e,
            !0)).x += e.clientLeft, h.y += e.clientTop) : a && (h.x = $t(a))), {
            x: l.left + c.scrollLeft - h.x,
            y: l.top + c.scrollTop - h.y,
            width: l.width,
            height: l.height,
        };
    }

    var le = { placement: 'bottom', modifiers: [], strategy: 'absolute' };

    function ce () {
        for (var t = arguments.length, e = new Array(t), i = 0; i <
        t; i++) e[i] = arguments[i];
        return !e.some((function (t) {
            return !(t && 'function' == typeof t.getBoundingClientRect);
        }));
    }

    function he (t) {
        void 0 === t && (t = {});
        var e = t, i = e.defaultModifiers, n = void 0 === i ? [] : i,
            s = e.defaultOptions, o = void 0 === s ? le : s;
        return function (t, e, i) {
            void 0 === i && (i = o);
            var s, r, a = {
                placement: 'bottom',
                orderedModifiers: [],
                options: Object.assign({}, le, o),
                modifiersData: {},
                elements: { reference: t, popper: e },
                attributes: {},
                styles: {},
            }, l = [], c = !1, h = {
                state: a,
                setOptions: function (i) {
                    d(), a.options = Object.assign({}, o, a.options,
                        i), a.scrollParents = {
                        reference: ut(t)
                            ? Kt(t)
                            : t.contextElement ? Kt(t.contextElement) : [],
                        popper: Kt(e),
                    };
                    var s, r, c = function (t) {
                        var e = function (t) {
                            var e = new Map, i = new Set, n = [];
                            return t.forEach(
                                (function (t) {e.set(t.name, t);})), t.forEach(
                                (function (t) {
                                    i.has(t.name) || function t (s) {
                                        i.add(s.name), [].concat(
                                            s.requires || [],
                                            s.requiresIfExists || []).
                                            forEach((function (n) {
                                                if (!i.has(n)) {
                                                    var s = e.get(n);
                                                    s && t(s);
                                                }
                                            })), n.push(s);
                                    }(t);
                                })), n;
                        }(t);
                        return ct.reduce((function (t, i) {
                            return t.concat(
                                e.filter(
                                    (function (t) {return t.phase === i;})));
                        }), []);
                    }((s = [].concat(n, a.options.modifiers), r = s.reduce(
                        (function (t, e) {
                            var i = t[e.name];
                            return t[e.name] = i ? Object.assign({}, i, e, {
                                options: Object.assign({}, i.options,
                                    e.options),
                                data: Object.assign({}, i.data, e.data),
                            }) : e, t;
                        }), {}), Object.keys(r).
                        map((function (t) {return r[t];}))));
                    return a.orderedModifiers = c.filter(
                        (function (t) {return t.enabled;})), a.orderedModifiers.forEach(
                        (function (t) {
                            var e = t.name, i = t.options,
                                n = void 0 === i ? {} : i, s = t.effect;
                            if ('function' == typeof s) {
                                var o = s({
                                    state: a,
                                    name: e,
                                    instance: h,
                                    options: n,
                                });
                                l.push(o || function () {});
                            }
                        })), h.update();
                },
                forceUpdate: function () {
                    if (!c) {
                        var t = a.elements, e = t.reference, i = t.popper;
                        if (ce(e, i)) {
                            a.rects = {
                                reference: ae(e, Ct(i),
                                    'fixed' === a.options.strategy),
                                popper: vt(i),
                            }, a.reset = !1, a.placement = a.options.placement, a.orderedModifiers.forEach(
                                (function (t) {
                                    return a.modifiersData[t.name] = Object.assign(
                                        {}, t.data);
                                }));
                            for (var n = 0; n <
                            a.orderedModifiers.length; n++) if (!0 !==
                                a.reset) {
                                var s = a.orderedModifiers[n], o = s.fn,
                                    r = s.options, l = void 0 === r ? {} : r,
                                    d = s.name;
                                'function' == typeof o && (a = o({
                                    state: a,
                                    options: l,
                                    name: d,
                                    instance: h,
                                }) || a);
                            } else a.reset = !1, n = -1;
                        }
                    }
                },
                update: (s = function () {
                    return new Promise((function (t) {h.forceUpdate(), t(a);}));
                }, function () {
                    return r || (r = new Promise((function (t) {
                        Promise.resolve().
                            then((function () {r = void 0, t(s());}));
                    }))), r;
                }),
                destroy: function () {d(), c = !0;},
            };
            if (!ce(t, e)) return h;

            function d () {l.forEach((function (t) {return t();})), l = [];}

            return h.setOptions(i).
                then((function (t) {
                    !c && i.onFirstUpdate && i.onFirstUpdate(t);
                })), h;
        };
    }

    var de = he(), ue = he({ defaultModifiers: [Rt, oe, Ht, mt] }),
        fe = he({ defaultModifiers: [Rt, oe, Ht, mt, se, te, re, Pt, ne] }),
        pe = Object.freeze({
            __proto__: null,
            popperGenerator: he,
            detectOverflow: Zt,
            createPopperBase: de,
            createPopper: fe,
            createPopperLite: ue,
            top: it,
            bottom: nt,
            right: st,
            left: ot,
            auto: 'auto',
            basePlacements: rt,
            start: 'start',
            end: 'end',
            clippingParents: 'clippingParents',
            viewport: 'viewport',
            popper: 'popper',
            reference: 'reference',
            variationPlacements: at,
            placements: lt,
            beforeRead: 'beforeRead',
            read: 'read',
            afterRead: 'afterRead',
            beforeMain: 'beforeMain',
            main: 'main',
            afterMain: 'afterMain',
            beforeWrite: 'beforeWrite',
            write: 'write',
            afterWrite: 'afterWrite',
            modifierPhases: ct,
            applyStyles: mt,
            arrow: Pt,
            computeStyles: Ht,
            eventListeners: Rt,
            flip: te,
            hide: ne,
            offset: se,
            popperOffsets: oe,
            preventOverflow: re,
        });
    const me = new RegExp('ArrowUp|ArrowDown|Escape'),
        ge = p() ? 'top-end' : 'top-start', _e = p() ? 'top-start' : 'top-end',
        be = p() ? 'bottom-end' : 'bottom-start',
        ve = p() ? 'bottom-start' : 'bottom-end',
        ye = p() ? 'left-start' : 'right-start',
        we = p() ? 'right-start' : 'left-start', Ee = {
            offset: [0, 2],
            boundary: 'clippingParents',
            reference: 'toggle',
            display: 'dynamic',
            popperConfig: null,
            autoClose: !0,
        }, Ae = {
            offset: '(array|string|function)',
            boundary: '(string|element)',
            reference: '(string|element|object)',
            display: 'string',
            popperConfig: '(null|object|function)',
            autoClose: '(boolean|string)',
        };

    class Te extends H {
        constructor (t, e) {
            super(t), this._popper = null, this._config = this._getConfig(
                e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar();
        }

        static get Default () {return Ee;}

        static get DefaultType () {return Ae;}

        static get NAME () {return 'dropdown';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = Te.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t]();
                }
            }));
        }

        static clearMenus (t) {
            if (t && (2 === t.button || 'keyup' === t.type && 'Tab' !==
                t.key)) return;
            const e = U.find('[data-bs-toggle="dropdown"]');
            for (let i = 0, n = e.length; i < n; i++) {
                const n = Te.getInstance(e[i]);
                if (!n || !1 === n._config.autoClose) continue;
                if (!n._isShown()) continue;
                const s = { relatedTarget: n._element };
                if (t) {
                    const e = t.composedPath(), i = e.includes(n._menu);
                    if (e.includes(n._element) || 'inside' ===
                        n._config.autoClose && !i || 'outside' ===
                        n._config.autoClose && i) continue;
                    if (n._menu.contains(t.target) &&
                        ('keyup' === t.type && 'Tab' === t.key ||
                            /input|select|option|textarea|form/i.test(
                                t.target.tagName))) continue;
                    'click' === t.type && (s.clickEvent = t);
                }
                n._completeHide(s);
            }
        }

        static getParentFromElement (t) {return i(t) || t.parentNode;}

        static dataApiKeydownHandler (t) {
            if (/input|textarea/i.test(t.target.tagName) ? 'Space' === t.key ||
                'Escape' !== t.key &&
                ('ArrowDown' !== t.key && 'ArrowUp' !== t.key ||
                    t.target.closest('.dropdown-menu')) : !me.test(
                t.key)) return;
            const e = this.classList.contains('show');
            if (!e && 'Escape' === t.key) return;
            if (t.preventDefault(), t.stopPropagation(), l(this)) return;
            const i = this.matches('[data-bs-toggle="dropdown"]')
                ? this
                : U.prev(this, '[data-bs-toggle="dropdown"]')[0],
                n = Te.getOrCreateInstance(i);
            if ('Escape' !== t.key) return 'ArrowUp' === t.key ||
            'ArrowDown' === t.key
                ? (e || n.show(), void n._selectMenuItem(t))
                : void (e && 'Space' !== t.key || Te.clearMenus());
            n.hide();
        }

        toggle () {return this._isShown() ? this.hide() : this.show();}

        show () {
            if (l(this._element) || this._isShown(this._menu)) return;
            const t = { relatedTarget: this._element };
            if (P.trigger(this._element, 'show.bs.dropdown',
                t).defaultPrevented) return;
            const e = Te.getParentFromElement(this._element);
            this._inNavbar
                ? F.setDataAttribute(this._menu, 'popper', 'none')
                : this._createPopper(e), 'ontouchstart' in
            document.documentElement && !e.closest('.navbar-nav') &&
            [].concat(...document.body.children).
                forEach(t => P.on(t, 'mouseover',
                    h)), this._element.focus(), this._element.setAttribute(
                'aria-expanded', !0), this._menu.classList.add(
                'show'), this._element.classList.add('show'), P.trigger(
                this._element, 'shown.bs.dropdown', t);
        }

        hide () {
            if (l(this._element) || !this._isShown(this._menu)) return;
            const t = { relatedTarget: this._element };
            this._completeHide(t);
        }

        dispose () {this._popper && this._popper.destroy(), super.dispose();}

        update () {
            this._inNavbar = this._detectNavbar(), this._popper &&
            this._popper.update();
        }

        _completeHide (t) {
            P.trigger(this._element, 'hide.bs.dropdown', t).defaultPrevented ||
            ('ontouchstart' in document.documentElement &&
            [].concat(...document.body.children).
                forEach(t => P.off(t, 'mouseover', h)), this._popper &&
            this._popper.destroy(), this._menu.classList.remove(
                'show'), this._element.classList.remove(
                'show'), this._element.setAttribute('aria-expanded',
                'false'), F.removeDataAttribute(this._menu,
                'popper'), P.trigger(this._element, 'hidden.bs.dropdown', t));
        }

        _getConfig (t) {
            if (t = {
                ...this.constructor.Default, ...F.getDataAttributes(
                    this._element), ...t,
            }, r('dropdown', t, this.constructor.DefaultType), 'object' ==
            typeof t.reference && !s(t.reference) && 'function' !=
            typeof t.reference.getBoundingClientRect) throw new TypeError(
                'dropdown'.toUpperCase() +
                ': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');
            return t;
        }

        _createPopper (t) {
            if (void 0 === pe) throw new TypeError(
                'Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
            let e = this._element;
            'parent' === this._config.reference ? e = t : s(
                this._config.reference)
                ? e = o(this._config.reference)
                : 'object' == typeof this._config.reference &&
                (e = this._config.reference);
            const i = this._getPopperConfig(), n = i.modifiers.find(
                t => 'applyStyles' === t.name && !1 === t.enabled);
            this._popper = fe(e, this._menu, i), n &&
            F.setDataAttribute(this._menu, 'popper', 'static');
        }

        _isShown (t = this._element) {return t.classList.contains('show');}

        _getMenuElement () {return U.next(this._element, '.dropdown-menu')[0];}

        _getPlacement () {
            const t = this._element.parentNode;
            if (t.classList.contains('dropend')) return ye;
            if (t.classList.contains('dropstart')) return we;
            const e = 'end' === getComputedStyle(this._menu).
                getPropertyValue('--bs-position').
                trim();
            return t.classList.contains('dropup') ? e ? _e : ge : e ? ve : be;
        }

        _detectNavbar () {return null !== this._element.closest('.navbar');}

        _getOffset () {
            const { offset: t } = this._config;
            return 'string' == typeof t ? t.split(',').
                map(t => Number.parseInt(t, 10)) : 'function' == typeof t
                ? e => t(e, this._element)
                : t;
        }

        _getPopperConfig () {
            const t = {
                placement: this._getPlacement(),
                modifiers: [
                    {
                        name: 'preventOverflow',
                        options: { boundary: this._config.boundary },
                    },
                    { name: 'offset', options: { offset: this._getOffset() } }],
            };
            return 'static' === this._config.display && (t.modifiers = [
                {
                    name: 'applyStyles',
                    enabled: !1,
                }]), {
                ...t, ...'function' == typeof this._config.popperConfig
                    ? this._config.popperConfig(t)
                    : this._config.popperConfig,
            };
        }

        _selectMenuItem ({ key: t, target: e }) {
            const i = U.find(
                '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)',
                this._menu).filter(a);
            i.length && b(i, e, 'ArrowDown' === t, !i.includes(e)).focus();
        }
    }

    P.on(document, 'keydown.bs.dropdown.data-api',
        '[data-bs-toggle="dropdown"]', Te.dataApiKeydownHandler), P.on(document,
        'keydown.bs.dropdown.data-api', '.dropdown-menu',
        Te.dataApiKeydownHandler), P.on(document, 'click.bs.dropdown.data-api',
        Te.clearMenus), P.on(document, 'keyup.bs.dropdown.data-api',
        Te.clearMenus), P.on(document, 'click.bs.dropdown.data-api',
        '[data-bs-toggle="dropdown"]', (function (t) {
            t.preventDefault(), Te.getOrCreateInstance(this).
                toggle();
        })), m(Te);

    class Oe {
        constructor () {this._element = document.body;}

        getWidth () {
            const t = document.documentElement.clientWidth;
            return Math.abs(window.innerWidth - t);
        }

        hide () {
            const t = this.getWidth();
            this._disableOverFlow(), this._setElementAttributes(this._element,
                'paddingRight', e => e + t), this._setElementAttributes(
                '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
                'paddingRight', e => e + t), this._setElementAttributes(
                '.sticky-top', 'marginRight', e => e - t);
        }

        _disableOverFlow () {
            this._saveInitialAttribute(this._element,
                'overflow'), this._element.style.overflow = 'hidden';
        }

        _setElementAttributes (t, e, i) {
            const n = this.getWidth();
            this._applyManipulationCallback(t, t => {
                if (t !== this._element && window.innerWidth > t.clientWidth +
                    n) return;
                this._saveInitialAttribute(t, e);
                const s = window.getComputedStyle(t)[e];
                t.style[e] = i(Number.parseFloat(s)) + 'px';
            });
        }

        reset () {
            this._resetElementAttributes(this._element,
                'overflow'), this._resetElementAttributes(this._element,
                'paddingRight'), this._resetElementAttributes(
                '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
                'paddingRight'), this._resetElementAttributes('.sticky-top',
                'marginRight');
        }

        _saveInitialAttribute (t, e) {
            const i = t.style[e];
            i && F.setDataAttribute(t, e, i);
        }

        _resetElementAttributes (t, e) {
            this._applyManipulationCallback(t, t => {
                const i = F.getDataAttribute(t, e);
                void 0 === i
                    ? t.style.removeProperty(e)
                    : (F.removeDataAttribute(t, e), t.style[e] = i);
            });
        }

        _applyManipulationCallback (t, e) {
            s(t) ? e(t) : U.find(t, this._element).forEach(e);
        }

        isOverflowing () {return this.getWidth() > 0;}
    }

    const Ce = {
        className: 'modal-backdrop',
        isVisible: !0,
        isAnimated: !1,
        rootElement: 'body',
        clickCallback: null,
    }, ke = {
        className: 'string',
        isVisible: 'boolean',
        isAnimated: 'boolean',
        rootElement: '(element|string)',
        clickCallback: '(function|null)',
    };

    class Le {
        constructor (t) {
            this._config = this._getConfig(
                t), this._isAppended = !1, this._element = null;
        }

        show (t) {
            this._config.isVisible
                ? (this._append(), this._config.isAnimated &&
                d(this._getElement()), this._getElement().
                    classList.
                    add('show'), this._emulateAnimation(() => {g(t);}))
                : g(t);
        }

        hide (t) {
            this._config.isVisible ? (this._getElement().
                classList.
                remove('show'), this._emulateAnimation(
                () => {this.dispose(), g(t);})) : g(t);
        }

        _getElement () {
            if (!this._element) {
                const t = document.createElement('div');
                t.className = this._config.className, this._config.isAnimated &&
                t.classList.add('fade'), this._element = t;
            }
            return this._element;
        }

        _getConfig (t) {
            return (t = {
                ...Ce, ...'object' == typeof t
                    ? t
                    : {},
            }).rootElement = o(t.rootElement), r('backdrop', t, ke), t;
        }

        _append () {
            this._isAppended ||
            (this._config.rootElement.append(this._getElement()), P.on(
                this._getElement(), 'mousedown.bs.backdrop',
                () => {g(this._config.clickCallback);}), this._isAppended = !0);
        }

        dispose () {
            this._isAppended && (P.off(this._element,
                'mousedown.bs.backdrop'), this._element.remove(), this._isAppended = !1);
        }

        _emulateAnimation (t) {
            _(t, this._getElement(), this._config.isAnimated);
        }
    }

    const xe = { trapElement: null, autofocus: !0 },
        De = { trapElement: 'element', autofocus: 'boolean' };

    class Se {
        constructor (t) {
            this._config = this._getConfig(
                t), this._isActive = !1, this._lastTabNavDirection = null;
        }

        activate () {
            const { trapElement: t, autofocus: e } = this._config;
            this._isActive ||
            (e && t.focus(), P.off(document, '.bs.focustrap'), P.on(document,
                'focusin.bs.focustrap', t => this._handleFocusin(t)), P.on(
                document, 'keydown.tab.bs.focustrap',
                t => this._handleKeydown(t)), this._isActive = !0);
        }

        deactivate () {
            this._isActive &&
            (this._isActive = !1, P.off(document, '.bs.focustrap'));
        }

        _handleFocusin (t) {
            const { target: e } = t, { trapElement: i } = this._config;
            if (e === document || e === i || i.contains(e)) return;
            const n = U.focusableChildren(i);
            0 === n.length ? i.focus() : 'backward' ===
            this._lastTabNavDirection ? n[n.length - 1].focus() : n[0].focus();
        }

        _handleKeydown (t) {
            'Tab' === t.key &&
            (this._lastTabNavDirection = t.shiftKey ? 'backward' : 'forward');
        }

        _getConfig (t) {
            return t = {
                ...xe, ...'object' == typeof t
                    ? t
                    : {},
            }, r('focustrap', t, De), t;
        }
    }

    const Ne = { backdrop: !0, keyboard: !0, focus: !0 }, Ie = {
        backdrop: '(boolean|string)',
        keyboard: 'boolean',
        focus: 'boolean',
    };

    class Pe extends H {
        constructor (t, e) {
            super(t), this._config = this._getConfig(
                e), this._dialog = U.findOne('.modal-dialog',
                this._element), this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._isShown = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollBar = new Oe;
        }

        static get Default () {return Ne;}

        static get NAME () {return 'modal';}

        static jQueryInterface (t, e) {
            return this.each((function () {
                const i = Pe.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === i[t]) throw new TypeError(
                        `No method named "${t}"`);
                    i[t](e);
                }
            }));
        }

        toggle (t) {return this._isShown ? this.hide() : this.show(t);}

        show (t) {
            this._isShown || this._isTransitioning ||
            P.trigger(this._element, 'show.bs.modal',
                { relatedTarget: t }).defaultPrevented ||
            (this._isShown = !0, this._isAnimated() &&
            (this._isTransitioning = !0), this._scrollBar.hide(), document.body.classList.add(
                'modal-open'), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), P.on(
                this._dialog, 'mousedown.dismiss.bs.modal', () => {
                    P.one(this._element, 'mouseup.dismiss.bs.modal', t => {
                        t.target === this._element &&
                        (this._ignoreBackdropClick = !0);
                    });
                }), this._showBackdrop(() => this._showElement(t)));
        }

        hide () {
            if (!this._isShown || this._isTransitioning) return;
            if (P.trigger(this._element,
                'hide.bs.modal').defaultPrevented) return;
            this._isShown = !1;
            const t = this._isAnimated();
            t &&
            (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), this._focustrap.deactivate(), this._element.classList.remove(
                'show'), P.off(this._element, 'click.dismiss.bs.modal'), P.off(
                this._dialog,
                'mousedown.dismiss.bs.modal'), this._queueCallback(
                () => this._hideModal(), this._element, t);
        }

        dispose () {
            [window, this._dialog].forEach(t => P.off(t,
                '.bs.modal')), this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose();
        }

        handleUpdate () {this._adjustDialog();}

        _initializeBackDrop () {
            return new Le({
                isVisible: Boolean(this._config.backdrop),
                isAnimated: this._isAnimated(),
            });
        }

        _initializeFocusTrap () {return new Se({ trapElement: this._element });}

        _getConfig (t) {
            return t = {
                ...Ne, ...F.getDataAttributes(this._element), ...'object' ==
                typeof t ? t : {},
            }, r('modal', t, Ie), t;
        }

        _showElement (t) {
            const e = this._isAnimated(),
                i = U.findOne('.modal-body', this._dialog);
            this._element.parentNode && this._element.parentNode.nodeType ===
            Node.ELEMENT_NODE || document.body.append(
                this._element), this._element.style.display = 'block', this._element.removeAttribute(
                'aria-hidden'), this._element.setAttribute('aria-modal',
                !0), this._element.setAttribute('role',
                'dialog'), this._element.scrollTop = 0, i &&
            (i.scrollTop = 0), e &&
            d(this._element), this._element.classList.add(
                'show'), this._queueCallback(() => {
                this._config.focus &&
                this._focustrap.activate(), this._isTransitioning = !1, P.trigger(
                    this._element, 'shown.bs.modal', { relatedTarget: t });
            }, this._dialog, e);
        }

        _setEscapeEvent () {
            this._isShown ? P.on(this._element, 'keydown.dismiss.bs.modal',
                t => {
                    this._config.keyboard && 'Escape' === t.key
                        ? (t.preventDefault(), this.hide())
                        : this._config.keyboard || 'Escape' !== t.key ||
                        this._triggerBackdropTransition();
                }) : P.off(this._element, 'keydown.dismiss.bs.modal');
        }

        _setResizeEvent () {
            this._isShown ? P.on(window, 'resize.bs.modal',
                () => this._adjustDialog()) : P.off(window, 'resize.bs.modal');
        }

        _hideModal () {
            this._element.style.display = 'none', this._element.setAttribute(
                'aria-hidden', !0), this._element.removeAttribute(
                'aria-modal'), this._element.removeAttribute(
                'role'), this._isTransitioning = !1, this._backdrop.hide(() => {
                document.body.classList.remove(
                    'modal-open'), this._resetAdjustments(), this._scrollBar.reset(), P.trigger(
                    this._element, 'hidden.bs.modal');
            });
        }

        _showBackdrop (t) {
            P.on(this._element, 'click.dismiss.bs.modal', t => {
                this._ignoreBackdropClick
                    ? this._ignoreBackdropClick = !1
                    : t.target === t.currentTarget &&
                    (!0 === this._config.backdrop ? this.hide() : 'static' ===
                        this._config.backdrop &&
                        this._triggerBackdropTransition());
            }), this._backdrop.show(t);
        }

        _isAnimated () {return this._element.classList.contains('fade');}

        _triggerBackdropTransition () {
            if (P.trigger(this._element,
                'hidePrevented.bs.modal').defaultPrevented) return;
            const { classList: t, scrollHeight: e, style: i } = this._element,
                n = e > document.documentElement.clientHeight;
            !n && 'hidden' === i.overflowY || t.contains('modal-static') ||
            (n || (i.overflowY = 'hidden'), t.add(
                'modal-static'), this._queueCallback(() => {
                t.remove('modal-static'), n ||
                this._queueCallback(() => {i.overflowY = '';}, this._dialog);
            }, this._dialog), this._element.focus());
        }

        _adjustDialog () {
            const t = this._element.scrollHeight >
                document.documentElement.clientHeight,
                e = this._scrollBar.getWidth(), i = e > 0;
            (!i && t && !p() || i && !t && p()) &&
            (this._element.style.paddingLeft = e + 'px'), (i && !t && !p() ||
                !i && t && p()) &&
            (this._element.style.paddingRight = e + 'px');
        }

        _resetAdjustments () {this._element.style.paddingLeft = '', this._element.style.paddingRight = '';}
    }

    P.on(document, 'click.bs.modal.data-api', '[data-bs-toggle="modal"]',
        (function (t) {
            const e = i(this);
            ['A', 'AREA'].includes(this.tagName) && t.preventDefault(), P.one(e,
                'show.bs.modal', t => {
                    t.defaultPrevented ||
                    P.one(e, 'hidden.bs.modal',
                        () => {a(this) && this.focus();});
                }), Pe.getOrCreateInstance(e).toggle(this);
        })), B(Pe), m(Pe);
    const je = { backdrop: !0, keyboard: !0, scroll: !1 },
        Me = { backdrop: 'boolean', keyboard: 'boolean', scroll: 'boolean' };

    class He extends H {
        constructor (t, e) {
            super(t), this._config = this._getConfig(
                e), this._isShown = !1, this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._addEventListeners();
        }

        static get NAME () {return 'offcanvas';}

        static get Default () {return je;}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = He.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t] || t.startsWith('_') ||
                        'constructor' === t) throw new TypeError(
                        `No method named "${t}"`);
                    e[t](this);
                }
            }));
        }

        toggle (t) {return this._isShown ? this.hide() : this.show(t);}

        show (t) {
            this._isShown || P.trigger(this._element, 'show.bs.offcanvas',
                { relatedTarget: t }).defaultPrevented ||
            (this._isShown = !0, this._element.style.visibility = 'visible', this._backdrop.show(), this._config.scroll ||
            (new Oe).hide(), this._element.removeAttribute(
                'aria-hidden'), this._element.setAttribute('aria-modal',
                !0), this._element.setAttribute('role',
                'dialog'), this._element.classList.add(
                'show'), this._queueCallback(() => {
                this._config.scroll || this._focustrap.activate(), P.trigger(
                    this._element, 'shown.bs.offcanvas', { relatedTarget: t });
            }, this._element, !0));
        }

        hide () {
            this._isShown &&
            (P.trigger(this._element, 'hide.bs.offcanvas').defaultPrevented ||
                (this._focustrap.deactivate(), this._element.blur(), this._isShown = !1, this._element.classList.remove(
                    'show'), this._backdrop.hide(), this._queueCallback(() => {
                    this._element.setAttribute('aria-hidden',
                        !0), this._element.removeAttribute(
                        'aria-modal'), this._element.removeAttribute(
                        'role'), this._element.style.visibility = 'hidden', this._config.scroll ||
                    (new Oe).reset(), P.trigger(this._element,
                        'hidden.bs.offcanvas');
                }, this._element, !0)));
        }

        dispose () {this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose();}

        _getConfig (t) {
            return t = {
                ...je, ...F.getDataAttributes(this._element), ...'object' ==
                typeof t ? t : {},
            }, r('offcanvas', t, Me), t;
        }

        _initializeBackDrop () {
            return new Le({
                className: 'offcanvas-backdrop',
                isVisible: this._config.backdrop,
                isAnimated: !0,
                rootElement: this._element.parentNode,
                clickCallback: () => this.hide(),
            });
        }

        _initializeFocusTrap () {return new Se({ trapElement: this._element });}

        _addEventListeners () {
            P.on(this._element, 'keydown.dismiss.bs.offcanvas', t => {
                this._config.keyboard && 'Escape' === t.key && this.hide();
            });
        }
    }

    P.on(document, 'click.bs.offcanvas.data-api',
        '[data-bs-toggle="offcanvas"]', (function (t) {
            const e = i(this);
            if (['A', 'AREA'].includes(this.tagName) && t.preventDefault(), l(
                this)) return;
            P.one(e, 'hidden.bs.offcanvas', () => {a(this) && this.focus();});
            const n = U.findOne('.offcanvas.show');
            n && n !== e && He.getInstance(n).hide(), He.getOrCreateInstance(e).
                toggle(this);
        })), P.on(window, 'load.bs.offcanvas.data-api',
        () => U.find('.offcanvas.show').
            forEach(t => He.getOrCreateInstance(t).show())), B(He), m(He);
    const Be = new Set([
            'background',
            'cite',
            'href',
            'itemtype',
            'longdesc',
            'poster',
            'src',
            'xlink:href']),
        Re = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,
        We = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,
        ze = (t, e) => {
            const i = t.nodeName.toLowerCase();
            if (e.includes(i)) return !Be.has(i) ||
                Boolean(Re.test(t.nodeValue) || We.test(t.nodeValue));
            const n = e.filter(t => t instanceof RegExp);
            for (let t = 0, e = n.length; t < e; t++) if (n[t].test(
                i)) return !0;
            return !1;
        };

    function qe (t, e, i) {
        if (!t.length) return t;
        if (i && 'function' == typeof i) return i(t);
        const n = (new window.DOMParser).parseFromString(t, 'text/html'),
            s = Object.keys(e), o = [].concat(...n.body.querySelectorAll('*'));
        for (let t = 0, i = o.length; t < i; t++) {
            const i = o[t], n = i.nodeName.toLowerCase();
            if (!s.includes(n)) {
                i.remove();
                continue;
            }
            const r = [].concat(...i.attributes),
                a = [].concat(e['*'] || [], e[n] || []);
            r.forEach(t => {ze(t, a) || i.removeAttribute(t.nodeName);});
        }
        return n.body.innerHTML;
    }

    const Fe = new Set(['sanitize', 'allowList', 'sanitizeFn']), Ue = {
        animation: 'boolean',
        template: 'string',
        title: '(string|element|function)',
        trigger: 'string',
        delay: '(number|object)',
        html: 'boolean',
        selector: '(string|boolean)',
        placement: '(string|function)',
        offset: '(array|string|function)',
        container: '(string|element|boolean)',
        fallbackPlacements: 'array',
        boundary: '(string|element)',
        customClass: '(string|function)',
        sanitize: 'boolean',
        sanitizeFn: '(null|function)',
        allowList: 'object',
        popperConfig: '(null|object|function)',
    }, $e = {
        AUTO: 'auto',
        TOP: 'top',
        RIGHT: p() ? 'left' : 'right',
        BOTTOM: 'bottom',
        LEFT: p() ? 'right' : 'left',
    }, Ve = {
        animation: !0,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        trigger: 'hover focus',
        title: '',
        delay: 0,
        html: !1,
        selector: !1,
        placement: 'top',
        offset: [0, 0],
        container: !1,
        fallbackPlacements: ['top', 'right', 'bottom', 'left'],
        boundary: 'clippingParents',
        customClass: '',
        sanitize: !0,
        sanitizeFn: null,
        allowList: {
            '*': [
                'class',
                'dir',
                'id',
                'lang',
                'role',
                /^aria-[\w-]*$/i],
            a: ['target', 'href', 'title', 'rel'],
            area: [],
            b: [],
            br: [],
            col: [],
            code: [],
            div: [],
            em: [],
            hr: [],
            h1: [],
            h2: [],
            h3: [],
            h4: [],
            h5: [],
            h6: [],
            i: [],
            img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
            li: [],
            ol: [],
            p: [],
            pre: [],
            s: [],
            small: [],
            span: [],
            sub: [],
            sup: [],
            strong: [],
            u: [],
            ul: [],
        },
        popperConfig: null,
    }, Ke = {
        HIDE: 'hide.bs.tooltip',
        HIDDEN: 'hidden.bs.tooltip',
        SHOW: 'show.bs.tooltip',
        SHOWN: 'shown.bs.tooltip',
        INSERTED: 'inserted.bs.tooltip',
        CLICK: 'click.bs.tooltip',
        FOCUSIN: 'focusin.bs.tooltip',
        FOCUSOUT: 'focusout.bs.tooltip',
        MOUSEENTER: 'mouseenter.bs.tooltip',
        MOUSELEAVE: 'mouseleave.bs.tooltip',
    };

    class Xe extends H {
        constructor (t, e) {
            if (void 0 === pe) throw new TypeError(
                'Bootstrap\'s tooltips require Popper (https://popper.js.org)');
            super(
                t), this._isEnabled = !0, this._timeout = 0, this._hoverState = '', this._activeTrigger = {}, this._popper = null, this._config = this._getConfig(
                e), this.tip = null, this._setListeners();
        }

        static get Default () {return Ve;}

        static get NAME () {return 'tooltip';}

        static get Event () {return Ke;}

        static get DefaultType () {return Ue;}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = Xe.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t]();
                }
            }));
        }

        enable () {this._isEnabled = !0;}

        disable () {this._isEnabled = !1;}

        toggleEnabled () {this._isEnabled = !this._isEnabled;}

        toggle (t) {
            if (this._isEnabled) if (t) {
                const e = this._initializeOnDelegatedTarget(t);
                e._activeTrigger.click = !e._activeTrigger.click, e._isWithActiveTrigger()
                    ? e._enter(null, e)
                    : e._leave(null, e);
            } else {
                if (this.getTipElement().
                    classList.
                    contains('show')) return void this._leave(null, this);
                this._enter(null, this);
            }
        }

        dispose () {
            clearTimeout(this._timeout), P.off(this._element.closest('.modal'),
                'hide.bs.modal', this._hideModalHandler), this.tip &&
            this.tip.remove(), this._popper &&
            this._popper.destroy(), super.dispose();
        }

        show () {
            if ('none' === this._element.style.display) throw new Error(
                'Please use show on visible elements');
            if (!this.isWithContent() || !this._isEnabled) return;
            const t = P.trigger(this._element, this.constructor.Event.SHOW),
                e = c(this._element), i = null === e
                ? this._element.ownerDocument.documentElement.contains(
                    this._element)
                : e.contains(this._element);
            if (t.defaultPrevented || !i) return;
            const n = this.getTipElement(), s = (t => {
                do {
                    t += Math.floor(1e6 * Math.random());
                } while (document.getElementById(t));
                return t;
            })(this.constructor.NAME);
            n.setAttribute('id', s), this._element.setAttribute(
                'aria-describedby', s), this._config.animation &&
            n.classList.add('fade');
            const o = 'function' == typeof this._config.placement
                ? this._config.placement.call(this, n, this._element)
                : this._config.placement, r = this._getAttachment(o);
            this._addAttachmentClass(r);
            const { container: a } = this._config;
            M.set(n, this.constructor.DATA_KEY,
                this), this._element.ownerDocument.documentElement.contains(
                this.tip) || (a.append(n), P.trigger(this._element,
                this.constructor.Event.INSERTED)), this._popper
                ? this._popper.update()
                : this._popper = fe(this._element, n,
                    this._getPopperConfig(r)), n.classList.add('show');
            const l = this._resolvePossibleFunction(this._config.customClass);
            l && n.classList.add(...l.split(' ')), 'ontouchstart' in
            document.documentElement && [].concat(...document.body.children).
                forEach(t => {P.on(t, 'mouseover', h);});
            const d = this.tip.classList.contains('fade');
            this._queueCallback(() => {
                const t = this._hoverState;
                this._hoverState = null, P.trigger(this._element,
                    this.constructor.Event.SHOWN), 'out' === t &&
                this._leave(null, this);
            }, this.tip, d);
        }

        hide () {
            if (!this._popper) return;
            const t = this.getTipElement();
            if (P.trigger(this._element,
                this.constructor.Event.HIDE).defaultPrevented) return;
            t.classList.remove('show'), 'ontouchstart' in
            document.documentElement && [].concat(...document.body.children).
                forEach(t => P.off(t, 'mouseover',
                    h)), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1;
            const e = this.tip.classList.contains('fade');
            this._queueCallback(() => {
                this._isWithActiveTrigger() || ('show' !== this._hoverState &&
                t.remove(), this._cleanTipClass(), this._element.removeAttribute(
                    'aria-describedby'), P.trigger(this._element,
                    this.constructor.Event.HIDDEN), this._popper &&
                (this._popper.destroy(), this._popper = null));
            }, this.tip, e), this._hoverState = '';
        }

        update () {null !== this._popper && this._popper.update();}

        isWithContent () {return Boolean(this.getTitle());}

        getTipElement () {
            if (this.tip) return this.tip;
            const t = document.createElement('div');
            t.innerHTML = this._config.template;
            const e = t.children[0];
            return this.setContent(e), e.classList.remove('fade',
                'show'), this.tip = e, this.tip;
        }

        setContent (t) {
            this._sanitizeAndSetContent(t, this.getTitle(), '.tooltip-inner');
        }

        _sanitizeAndSetContent (t, e, i) {
            const n = U.findOne(i, t);
            e || !n ? this.setElementContent(n, e) : n.remove();
        }

        setElementContent (t, e) {
            if (null !== t) return s(e)
                ? (e = o(e), void (this._config.html
                    ? e.parentNode !== t && (t.innerHTML = '', t.append(e))
                    : t.textContent = e.textContent))
                : void (this._config.html
                    ? (this._config.sanitize &&
                    (e = qe(e, this._config.allowList,
                        this._config.sanitizeFn)), t.innerHTML = e)
                    : t.textContent = e);
        }

        getTitle () {
            const t = this._element.getAttribute('data-bs-original-title') ||
                this._config.title;
            return this._resolvePossibleFunction(t);
        }

        updateAttachment (t) {
            return 'right' === t ? 'end' : 'left' === t
                ? 'start'
                : t;
        }

        _initializeOnDelegatedTarget (t, e) {
            return e || this.constructor.getOrCreateInstance(t.delegateTarget,
                this._getDelegateConfig());
        }

        _getOffset () {
            const { offset: t } = this._config;
            return 'string' == typeof t ? t.split(',').
                map(t => Number.parseInt(t, 10)) : 'function' == typeof t
                ? e => t(e, this._element)
                : t;
        }

        _resolvePossibleFunction (t) {
            return 'function' == typeof t ? t.call(this._element) : t;
        }

        _getPopperConfig (t) {
            const e = {
                placement: t,
                modifiers: [
                    {
                        name: 'flip',
                        options: { fallbackPlacements: this._config.fallbackPlacements },
                    },
                    { name: 'offset', options: { offset: this._getOffset() } },
                    {
                        name: 'preventOverflow',
                        options: { boundary: this._config.boundary },
                    },
                    {
                        name: 'arrow',
                        options: { element: `.${this.constructor.NAME}-arrow` },
                    },
                    {
                        name: 'onChange',
                        enabled: !0,
                        phase: 'afterWrite',
                        fn: t => this._handlePopperPlacementChange(t),
                    }],
                onFirstUpdate: t => {
                    t.options.placement !== t.placement &&
                    this._handlePopperPlacementChange(t);
                },
            };
            return {
                ...e, ...'function' == typeof this._config.popperConfig
                    ? this._config.popperConfig(e)
                    : this._config.popperConfig,
            };
        }

        _addAttachmentClass (t) {
            this.getTipElement().
                classList.
                add(`${this._getBasicClassPrefix()}-${this.updateAttachment(
                    t)}`);
        }

        _getAttachment (t) {return $e[t.toUpperCase()];}

        _setListeners () {
            this._config.trigger.split(' ').
                forEach(t => {
                    if ('click' === t) P.on(this._element,
                        this.constructor.Event.CLICK, this._config.selector,
                        t => this.toggle(t)); else if ('manual' !== t) {
                        const e = 'hover' === t
                            ? this.constructor.Event.MOUSEENTER
                            : this.constructor.Event.FOCUSIN, i = 'hover' === t
                            ? this.constructor.Event.MOUSELEAVE
                            : this.constructor.Event.FOCUSOUT;
                        P.on(this._element, e, this._config.selector,
                            t => this._enter(t)), P.on(this._element, i,
                            this._config.selector, t => this._leave(t));
                    }
                }), this._hideModalHandler = () => {
                this._element && this.hide();
            }, P.on(this._element.closest('.modal'), 'hide.bs.modal',
                this._hideModalHandler), this._config.selector
                ? this._config = {
                    ...this._config,
                    trigger: 'manual',
                    selector: '',
                }
                : this._fixTitle();
        }

        _fixTitle () {
            const t = this._element.getAttribute('title'),
                e = typeof this._element.getAttribute('data-bs-original-title');
            (t || 'string' !== e) &&
            (this._element.setAttribute('data-bs-original-title',
                t || ''), !t || this._element.getAttribute('aria-label') ||
            this._element.textContent ||
            this._element.setAttribute('aria-label',
                t), this._element.setAttribute('title', ''));
        }

        _enter (t, e) {
            e = this._initializeOnDelegatedTarget(t, e), t &&
            (e._activeTrigger['focusin' === t.type
                ? 'focus'
                : 'hover'] = !0), e.getTipElement().
                classList.
                contains('show') || 'show' === e._hoverState
                ? e._hoverState = 'show'
                : (clearTimeout(
                    e._timeout), e._hoverState = 'show', e._config.delay &&
                e._config.delay.show
                    ? e._timeout = setTimeout(
                        () => {'show' === e._hoverState && e.show();},
                        e._config.delay.show)
                    : e.show());
        }

        _leave (t, e) {
            e = this._initializeOnDelegatedTarget(t, e), t &&
            (e._activeTrigger['focusout' === t.type
                ? 'focus'
                : 'hover'] = e._element.contains(
                t.relatedTarget)), e._isWithActiveTrigger() ||
            (clearTimeout(e._timeout), e._hoverState = 'out', e._config.delay &&
            e._config.delay.hide
                ? e._timeout = setTimeout(
                    () => {'out' === e._hoverState && e.hide();},
                    e._config.delay.hide)
                : e.hide());
        }

        _isWithActiveTrigger () {
            for (const t in this._activeTrigger) if (this._activeTrigger[t]) return !0;
            return !1;
        }

        _getConfig (t) {
            const e = F.getDataAttributes(this._element);
            return Object.keys(e).
                forEach(t => {
                    Fe.has(t) && delete e[t];
                }), (t = {
                ...this.constructor.Default, ...e, ...'object' == typeof t && t
                    ? t
                    : {},
            }).container = !1 === t.container ? document.body : o(
                t.container), 'number' == typeof t.delay &&
            (t.delay = { show: t.delay, hide: t.delay }), 'number' ==
            typeof t.title && (t.title = t.title.toString()), 'number' ==
            typeof t.content && (t.content = t.content.toString()), r('tooltip',
                t, this.constructor.DefaultType), t.sanitize &&
            (t.template = qe(t.template, t.allowList, t.sanitizeFn)), t;
        }

        _getDelegateConfig () {
            const t = {};
            for (const e in this._config) this.constructor.Default[e] !==
            this._config[e] && (t[e] = this._config[e]);
            return t;
        }

        _cleanTipClass () {
            const t = this.getTipElement(),
                e = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,
                    'g'), i = t.getAttribute('class').match(e);
            null !== i && i.length > 0 &&
            i.map(t => t.trim()).forEach(e => t.classList.remove(e));
        }

        _getBasicClassPrefix () {return 'bs-tooltip';}

        _handlePopperPlacementChange (t) {
            const { state: e } = t;
            e &&
            (this.tip = e.elements.popper, this._cleanTipClass(), this._addAttachmentClass(
                this._getAttachment(e.placement)));
        }
    }

    m(Xe);
    const Ye = {
        ...Xe.Default,
        placement: 'right',
        offset: [0, 8],
        trigger: 'click',
        content: '',
        template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
    }, Qe = { ...Xe.DefaultType, content: '(string|element|function)' }, Ge = {
        HIDE: 'hide.bs.popover',
        HIDDEN: 'hidden.bs.popover',
        SHOW: 'show.bs.popover',
        SHOWN: 'shown.bs.popover',
        INSERTED: 'inserted.bs.popover',
        CLICK: 'click.bs.popover',
        FOCUSIN: 'focusin.bs.popover',
        FOCUSOUT: 'focusout.bs.popover',
        MOUSEENTER: 'mouseenter.bs.popover',
        MOUSELEAVE: 'mouseleave.bs.popover',
    };

    class Ze extends Xe {
        static get Default () {return Ye;}

        static get NAME () {return 'popover';}

        static get Event () {return Ge;}

        static get DefaultType () {return Qe;}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = Ze.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t]();
                }
            }));
        }

        isWithContent () {return this.getTitle() || this._getContent();}

        setContent (t) {
            this._sanitizeAndSetContent(t, this.getTitle(),
                '.popover-header'), this._sanitizeAndSetContent(t,
                this._getContent(), '.popover-body');
        }

        _getContent () {
            return this._resolvePossibleFunction(this._config.content);
        }

        _getBasicClassPrefix () {return 'bs-popover';}
    }

    m(Ze);
    const Je = { offset: 10, method: 'auto', target: '' },
        ti = { offset: 'number', method: 'string', target: '(string|element)' },
        ei = '.nav-link, .list-group-item, .dropdown-item';

    class ii extends H {
        constructor (t, e) {
            super(t), this._scrollElement = 'BODY' === this._element.tagName
                ? window
                : this._element, this._config = this._getConfig(
                e), this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, P.on(
                this._scrollElement, 'scroll.bs.scrollspy',
                () => this._process()), this.refresh(), this._process();
        }

        static get Default () {return Je;}

        static get NAME () {return 'scrollspy';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = ii.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t]();
                }
            }));
        }

        refresh () {
            const t = this._scrollElement === this._scrollElement.window
                ? 'offset'
                : 'position',
                i = 'auto' === this._config.method ? t : this._config.method,
                n = 'position' === i ? this._getScrollTop() : 0;
            this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), U.find(
                ei, this._config.target).
                map(t => {
                    const s = e(t), o = s ? U.findOne(s) : null;
                    if (o) {
                        const t = o.getBoundingClientRect();
                        if (t.width || t.height) return [F[i](o).top + n, s];
                    }
                    return null;
                }).
                filter(t => t).
                sort((t, e) => t[0] - e[0]).
                forEach(
                    t => {this._offsets.push(t[0]), this._targets.push(t[1]);});
        }

        dispose () {
            P.off(this._scrollElement, '.bs.scrollspy'), super.dispose();
        }

        _getConfig (t) {
            return (t = {
                ...Je, ...F.getDataAttributes(this._element), ...'object' ==
                typeof t && t ? t : {},
            }).target = o(t.target) || document.documentElement, r('scrollspy',
                t, ti), t;
        }

        _getScrollTop () {
            return this._scrollElement === window
                ? this._scrollElement.pageYOffset
                : this._scrollElement.scrollTop;
        }

        _getScrollHeight () {
            return this._scrollElement.scrollHeight ||
                Math.max(document.body.scrollHeight,
                    document.documentElement.scrollHeight);
        }

        _getOffsetHeight () {
            return this._scrollElement === window
                ? window.innerHeight
                : this._scrollElement.getBoundingClientRect().height;
        }

        _process () {
            const t = this._getScrollTop() + this._config.offset,
                e = this._getScrollHeight(),
                i = this._config.offset + e - this._getOffsetHeight();
            if (this._scrollHeight !== e && this.refresh(), t >= i) {
                const t = this._targets[this._targets.length - 1];
                this._activeTarget !== t && this._activate(t);
            } else {
                if (this._activeTarget && t < this._offsets[0] &&
                    this._offsets[0] >
                    0) return this._activeTarget = null, void this._clear();
                for (let e = this._offsets.length; e--;) this._activeTarget !==
                this._targets[e] && t >= this._offsets[e] &&
                (void 0 === this._offsets[e + 1] || t < this._offsets[e + 1]) &&
                this._activate(this._targets[e]);
            }
        }

        _activate (t) {
            this._activeTarget = t, this._clear();
            const e = ei.split(',').
                    map(e => `${e}[data-bs-target="${t}"],${e}[href="${t}"]`),
                i = U.findOne(e.join(','), this._config.target);
            i.classList.add('active'), i.classList.contains('dropdown-item')
                ? U.findOne('.dropdown-toggle', i.closest('.dropdown')).
                    classList.
                    add('active')
                : U.parents(i, '.nav, .list-group').
                    forEach(t => {
                        U.prev(t, '.nav-link, .list-group-item').
                            forEach(t => t.classList.add('active')), U.prev(t,
                            '.nav-item').
                            forEach(t => {
                                U.children(t, '.nav-link').
                                    forEach(t => t.classList.add('active'));
                            });
                    }), P.trigger(this._scrollElement, 'activate.bs.scrollspy',
                { relatedTarget: t });
        }

        _clear () {
            U.find(ei, this._config.target).
                filter(t => t.classList.contains('active')).
                forEach(t => t.classList.remove('active'));
        }
    }

    P.on(window, 'load.bs.scrollspy.data-api',
        () => {U.find('[data-bs-spy="scroll"]').forEach(t => new ii(t));}), m(
        ii);

    class ni extends H {
        static get NAME () {return 'tab';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = ni.getOrCreateInstance(this);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t]();
                }
            }));
        }

        show () {
            if (this._element.parentNode &&
                this._element.parentNode.nodeType === Node.ELEMENT_NODE &&
                this._element.classList.contains('active')) return;
            let t;
            const e = i(this._element),
                n = this._element.closest('.nav, .list-group');
            if (n) {
                const e = 'UL' === n.nodeName || 'OL' === n.nodeName
                    ? ':scope > li > .active'
                    : '.active';
                t = U.find(e, n), t = t[t.length - 1];
            }
            const s = t ? P.trigger(t, 'hide.bs.tab',
                { relatedTarget: this._element }) : null;
            if (P.trigger(this._element, 'show.bs.tab',
                { relatedTarget: t }).defaultPrevented || null !== s &&
                s.defaultPrevented) return;
            this._activate(this._element, n);
            const o = () => {
                P.trigger(t, 'hidden.bs.tab',
                    { relatedTarget: this._element }), P.trigger(this._element,
                    'shown.bs.tab', { relatedTarget: t });
            };
            e ? this._activate(e, e.parentNode, o) : o();
        }

        _activate (t, e, i) {
            const n = (!e || 'UL' !== e.nodeName && 'OL' !== e.nodeName
                ? U.children(e, '.active')
                : U.find(':scope > li > .active', e))[0],
                s = i && n && n.classList.contains('fade'),
                o = () => this._transitionComplete(t, n, i);
            n && s
                ? (n.classList.remove('show'), this._queueCallback(o, t, !0))
                : o();
        }

        _transitionComplete (t, e, i) {
            if (e) {
                e.classList.remove('active');
                const t = U.findOne(':scope > .dropdown-menu .active',
                    e.parentNode);
                t && t.classList.remove('active'), 'tab' ===
                e.getAttribute('role') && e.setAttribute('aria-selected', !1);
            }
            t.classList.add('active'), 'tab' === t.getAttribute('role') &&
            t.setAttribute('aria-selected', !0), d(t), t.classList.contains(
                'fade') && t.classList.add('show');
            let n = t.parentNode;
            if (n && 'LI' === n.nodeName && (n = n.parentNode), n &&
            n.classList.contains('dropdown-menu')) {
                const e = t.closest('.dropdown');
                e && U.find('.dropdown-toggle', e).
                    forEach(t => t.classList.add('active')), t.setAttribute(
                    'aria-expanded', !0);
            }
            i && i();
        }
    }

    P.on(document, 'click.bs.tab.data-api',
        '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',
        (function (t) {
            ['A', 'AREA'].includes(this.tagName) && t.preventDefault(), l(
                this) || ni.getOrCreateInstance(this).show();
        })), m(ni);
    const si = { animation: 'boolean', autohide: 'boolean', delay: 'number' },
        oi = { animation: !0, autohide: !0, delay: 5e3 };

    class ri extends H {
        constructor (t, e) {
            super(t), this._config = this._getConfig(
                e), this._timeout = null, this._hasMouseInteraction = !1, this._hasKeyboardInteraction = !1, this._setListeners();
        }

        static get DefaultType () {return si;}

        static get Default () {return oi;}

        static get NAME () {return 'toast';}

        static jQueryInterface (t) {
            return this.each((function () {
                const e = ri.getOrCreateInstance(this, t);
                if ('string' == typeof t) {
                    if (void 0 === e[t]) throw new TypeError(
                        `No method named "${t}"`);
                    e[t](this);
                }
            }));
        }

        show () {
            P.trigger(this._element, 'show.bs.toast').defaultPrevented ||
            (this._clearTimeout(), this._config.animation &&
            this._element.classList.add('fade'), this._element.classList.remove(
                'hide'), d(this._element), this._element.classList.add(
                'show'), this._element.classList.add(
                'showing'), this._queueCallback(() => {
                this._element.classList.remove('showing'), P.trigger(
                    this._element, 'shown.bs.toast'), this._maybeScheduleHide();
            }, this._element, this._config.animation));
        }

        hide () {
            this._element.classList.contains('show') &&
            (P.trigger(this._element, 'hide.bs.toast').defaultPrevented ||
                (this._element.classList.add('showing'), this._queueCallback(
                    () => {
                        this._element.classList.add(
                            'hide'), this._element.classList.remove(
                            'showing'), this._element.classList.remove(
                            'show'), P.trigger(this._element,
                            'hidden.bs.toast');
                    }, this._element, this._config.animation)));
        }

        dispose () {
            this._clearTimeout(), this._element.classList.contains('show') &&
            this._element.classList.remove('show'), super.dispose();
        }

        _getConfig (t) {
            return t = {
                ...oi, ...F.getDataAttributes(this._element), ...'object' ==
                typeof t && t ? t : {},
            }, r('toast', t, this.constructor.DefaultType), t;
        }

        _maybeScheduleHide () {
            this._config.autohide &&
            (this._hasMouseInteraction || this._hasKeyboardInteraction ||
                (this._timeout = setTimeout(() => {this.hide();},
                    this._config.delay)));
        }

        _onInteraction (t, e) {
            switch (t.type) {
                case'mouseover':
                case'mouseout':
                    this._hasMouseInteraction = e;
                    break;
                case'focusin':
                case'focusout':
                    this._hasKeyboardInteraction = e;
            }
            if (e) return void this._clearTimeout();
            const i = t.relatedTarget;
            this._element === i || this._element.contains(i) ||
            this._maybeScheduleHide();
        }

        _setListeners () {
            P.on(this._element, 'mouseover.bs.toast',
                t => this._onInteraction(t, !0)), P.on(this._element,
                'mouseout.bs.toast', t => this._onInteraction(t, !1)), P.on(
                this._element, 'focusin.bs.toast',
                t => this._onInteraction(t, !0)), P.on(this._element,
                'focusout.bs.toast', t => this._onInteraction(t, !1));
        }

        _clearTimeout () {clearTimeout(this._timeout), this._timeout = null;}
    }

    return B(ri), m(ri), {
        Alert: R,
        Button: W,
        Carousel: Z,
        Collapse: et,
        Dropdown: Te,
        Modal: Pe,
        Offcanvas: He,
        Popover: Ze,
        ScrollSpy: ii,
        Tab: ni,
        Toast: ri,
        Tooltip: Xe,
    };
}));

window.scwAccordionsPlugin = window.scwAccordionsPlugin || {};

window.SEMICOLON_accordionsInit = function ($accordionEl) {

    $accordionEl = $accordionEl.filter(':not(.customjs)');

    if ($accordionEl.length < 1) {
        return true;
    }

    $accordionEl.each(function () {
        let element = $(this),
            elState = element.attr('data-state'),
            elActive = element.attr('data-active') || 1,
            elActiveClass = element.attr('data-active-class') || '',
            elCollapsible = element.attr('data-collapsible') || 'false',
            windowHash = location.hash,
            accActive;

        elActive = Number(elActive) - 1;

        if (typeof windowHash !== 'undefined' && windowHash != '') {
            accActive = element.find('.accordion-header' + windowHash);
            if (accActive.length > 0) {
                elActive = accActive.index() / 2;
            }
        }

        element.find('.accordion-content').hide();

        if (elState != 'closed') {
            element.find('.accordion-header:eq(' + Number(elActive) + ')').
                addClass('accordion-active ' + elActiveClass).
                next().
                show();
        }

        element.find('.accordion-header').off('click').on('click', function () {
            if ($(this).next().is(':hidden')) {
                element.find('.accordion-header').
                    removeClass('accordion-active ' + elActiveClass).
                    next().
                    slideUp('normal');
                let clickTarget = $(this);
                $(this).
                    toggleClass('accordion-active ' + elActiveClass, true).
                    next().
                    stop(true, true).
                    slideDown('normal', function () {
                        if (($('body').hasClass('device-sm') ||
                            $('body').hasClass('device-xs')) &&
                            element.hasClass('scroll-on-open')) {
                            $('html,body').stop(true, true).animate({
                                'scrollTop': clickTarget.offset().top -
                                    (SEMICOLON.initialize.topScrollOffset() -
                                        40),
                            }, 800, 'easeOutQuad');
                        }
                    });
            } else {
                if (elCollapsible == 'true') {
                    $(this).
                        toggleClass('accordion-active ' + elActiveClass, false).
                        next().
                        stop(true, true).
                        slideUp('normal');
                }
            }
            return false;
        });
    });

};

/*! jQuery Validation Plugin - v1.19.3 - 1/9/2021
 * https://jqueryvalidation.org/
 * Copyright (c) 2021 Jörn Zaefferer; Licensed MIT */
!function (a) {
    'function' == typeof define && define.amd
        ? define(['jquery'], a)
        : 'object' == typeof module && module.exports ? module.exports = a(
        require('jquery')) : a(jQuery);
}(function (a) {
    a.extend(a.fn, {
        validate: function (b) {
            if (!this.length) return void (b && b.debug && window.console &&
                console.warn(
                    'Nothing selected, can\'t validate, returning nothing.'));
            var c = a.data(this[0], 'validator');
            return c ? c : (this.attr('novalidate',
                'novalidate'), c = new a.validator(b, this[0]), a.data(this[0],
                'validator', c), c.settings.onsubmit &&
            (this.on('click.validate', ':submit', function (b) {
                c.submitButton = b.currentTarget, a(this).
                    hasClass('cancel') && (c.cancelSubmit = !0), void 0 !==
                a(this).attr('formnovalidate') && (c.cancelSubmit = !0);
            }), this.on('submit.validate', function (b) {
                function d () {
                    var d, e;
                    return c.submitButton &&
                    (c.settings.submitHandler || c.formSubmitted) &&
                    (d = a('<input type=\'hidden\'/>').
                        attr('name', c.submitButton.name).
                        val(a(c.submitButton).val()).
                        appendTo(c.currentForm)), !(c.settings.submitHandler &&
                        !c.settings.debug) ||
                    (e = c.settings.submitHandler.call(c, c.currentForm,
                        b), d && d.remove(), void 0 !== e && e);
                }

                return c.settings.debug && b.preventDefault(), c.cancelSubmit
                    ? (c.cancelSubmit = !1, d())
                    : c.form() ? c.pendingRequest
                        ? (c.formSubmitted = !0, !1)
                        : d() : (c.focusInvalid(), !1);
            })), c);
        },
        valid: function () {
            var b, c, d;
            return a(this[0]).is('form')
                ? b = this.validate().form()
                : (d = [], b = !0, c = a(this[0].form).validate(), this.each(
                    function () {
                        b = c.element(this) && b, b ||
                        (d = d.concat(c.errorList));
                    }), c.errorList = d), b;
        },
        rules: function (b, c) {
            var d, e, f, g, h, i, j = this[0],
                k = 'undefined' != typeof this.attr('contenteditable') &&
                    'false' !== this.attr('contenteditable');
            if (null != j && (!j.form && k &&
            (j.form = this.closest('form')[0], j.name = this.attr(
                'name')), null != j.form)) {
                if (b) switch (d = a.data(j.form,
                    'validator').settings, e = d.rules, f = a.validator.staticRules(
                    j), b) {
                    case'add':
                        a.extend(f, a.validator.normalizeRule(
                            c)), delete f.messages, e[j.name] = f, c.messages &&
                        (d.messages[j.name] = a.extend(d.messages[j.name],
                            c.messages));
                        break;
                    case'remove':
                        return c
                            ? (i = {}, a.each(c.split(/\s/),
                                function (a, b) {i[b] = f[b], delete f[b];}), i)
                            : (delete e[j.name], f);
                }
                return g = a.validator.normalizeRules(
                    a.extend({}, a.validator.classRules(j),
                        a.validator.attributeRules(j), a.validator.dataRules(j),
                        a.validator.staticRules(j)), j), g.required &&
                (h = g.required, delete g.required, g = a.extend(
                    { required: h }, g)), g.remote &&
                (h = g.remote, delete g.remote, g = a.extend(g,
                    { remote: h })), g;
            }
        },
    });
    var b = function (a) {
        return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
    };
    a.extend(a.expr.pseudos || a.expr[':'], {
        blank: function (c) {return !b('' + a(c).val());},
        filled: function (c) {
            var d = a(c).val();
            return null !== d && !!b('' + d);
        },
        unchecked: function (b) {return !a(b).prop('checked');},
    }), a.validator = function (b, c) {
        this.settings = a.extend(!0, {}, a.validator.defaults,
            b), this.currentForm = c, this.init();
    }, a.validator.format = function (b, c) {
        return 1 === arguments.length
            ? function () {
                var c = a.makeArray(arguments);
                return c.unshift(b), a.validator.format.apply(this, c);
            }
            : void 0 === c ? b : (arguments.length > 2 && c.constructor !==
            Array && (c = a.makeArray(arguments).slice(1)), c.constructor !==
            Array && (c = [c]), a.each(c, function (a, c) {
                b = b.replace(new RegExp('\\{' + a + '\\}', 'g'),
                    function () {return c;});
            }), b);
    }, a.extend(a.validator, {
        defaults: {
            messages: {},
            groups: {},
            rules: {},
            errorClass: 'error',
            pendingClass: 'pending',
            validClass: 'valid',
            errorElement: 'label',
            focusCleanup: !1,
            focusInvalid: !0,
            errorContainer: a([]),
            errorLabelContainer: a([]),
            onsubmit: !0,
            ignore: ':hidden',
            ignoreTitle: !1,
            onfocusin: function (a) {
                this.lastActive = a, this.settings.focusCleanup &&
                (this.settings.unhighlight &&
                this.settings.unhighlight.call(this, a,
                    this.settings.errorClass,
                    this.settings.validClass), this.hideThese(
                    this.errorsFor(a)));
            },
            onfocusout: function (a) {
                this.checkable(a) || !(a.name in this.submitted) &&
                this.optional(a) || this.element(a);
            },
            onkeyup: function (b, c) {
                var d = [
                    16,
                    17,
                    18,
                    20,
                    35,
                    36,
                    37,
                    38,
                    39,
                    40,
                    45,
                    144,
                    225];
                9 === c.which && '' === this.elementValue(b) ||
                a.inArray(c.keyCode, d) !== -1 ||
                (b.name in this.submitted || b.name in this.invalid) &&
                this.element(b);
            },
            onclick: function (a) {
                a.name in this.submitted
                    ? this.element(a)
                    : a.parentNode.name in this.submitted &&
                    this.element(a.parentNode);
            },
            highlight: function (b, c, d) {
                'radio' === b.type ? this.findByName(b.name).
                    addClass(c).
                    removeClass(d) : a(b).addClass(c).removeClass(d);
            },
            unhighlight: function (b, c, d) {
                'radio' === b.type
                    ? this.findByName(b.name).removeClass(c).addClass(d)
                    : a(b).removeClass(c).addClass(d);
            },
        },
        setDefaults: function (b) {a.extend(a.validator.defaults, b);},
        messages: {
            required: 'This field is required.',
            remote: 'Please fix this field.',
            email: 'Please enter a valid email address.',
            url: 'Please enter a valid URL.',
            date: 'Please enter a valid date.',
            dateISO: 'Please enter a valid date (ISO).',
            number: 'Please enter a valid number.',
            digits: 'Please enter only digits.',
            equalTo: 'Please enter the same value again.',
            maxlength: a.validator.format(
                'Please enter no more than {0} characters.'),
            minlength: a.validator.format(
                'Please enter at least {0} characters.'),
            rangelength: a.validator.format(
                'Please enter a value between {0} and {1} characters long.'),
            range: a.validator.format(
                'Please enter a value between {0} and {1}.'),
            max: a.validator.format(
                'Please enter a value less than or equal to {0}.'),
            min: a.validator.format(
                'Please enter a value greater than or equal to {0}.'),
            step: a.validator.format('Please enter a multiple of {0}.'),
        },
        autoCreateRanges: !1,
        prototype: {
            init: function () {
                function b (b) {
                    var c = 'undefined' !=
                        typeof a(this).attr('contenteditable') && 'false' !==
                        a(this).attr('contenteditable');
                    if (!this.form && c &&
                    (this.form = a(this).closest('form')[0], this.name = a(
                        this).attr('name')), d === this.form) {
                        var e = a.data(this.form, 'validator'),
                            f = 'on' + b.type.replace(/^validate/, ''),
                            g = e.settings;
                        g[f] && !a(this).is(g.ignore) && g[f].call(e, this, b);
                    }
                }

                this.labelContainer = a(
                    this.settings.errorLabelContainer), this.errorContext = this.labelContainer.length &&
                    this.labelContainer ||
                    a(this.currentForm), this.containers = a(
                    this.settings.errorContainer).
                    add(this.settings.errorLabelContainer), this.submitted = {}, this.valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset();
                var c, d = this.currentForm, e = this.groups = {};
                a.each(this.settings.groups, function (b, c) {
                    'string' == typeof c && (c = c.split(/\s/)), a.each(c,
                        function (a, c) {e[c] = b;});
                }), c = this.settings.rules, a.each(c,
                    function (b, d) {c[b] = a.validator.normalizeRule(d);}), a(
                    this.currentForm).
                    on('focusin.validate focusout.validate keyup.validate',
                        ':text, [type=\'password\'], [type=\'file\'], select, textarea, [type=\'number\'], [type=\'search\'], [type=\'tel\'], [type=\'url\'], [type=\'email\'], [type=\'datetime\'], [type=\'date\'], [type=\'month\'], [type=\'week\'], [type=\'time\'], [type=\'datetime-local\'], [type=\'range\'], [type=\'color\'], [type=\'radio\'], [type=\'checkbox\'], [contenteditable], [type=\'button\']',
                        b).
                    on('click.validate',
                        'select, option, [type=\'radio\'], [type=\'checkbox\']',
                        b), this.settings.invalidHandler && a(this.currentForm).
                    on('invalid-form.validate', this.settings.invalidHandler);
            },
            form: function () {
                return this.checkForm(), a.extend(this.submitted,
                    this.errorMap), this.invalid = a.extend({},
                    this.errorMap), this.valid() || a(this.currentForm).
                    triggerHandler('invalid-form',
                        [this]), this.showErrors(), this.valid();
            },
            checkForm: function () {
                this.prepareForm();
                for (var a = 0, b = this.currentElements = this.elements(); b[a]; a++) this.check(
                    b[a]);
                return this.valid();
            },
            element: function (b) {
                var c, d, e = this.clean(b), f = this.validationTargetFor(e),
                    g = this, h = !0;
                return void 0 === f
                    ? delete this.invalid[e.name]
                    : (this.prepareElement(f), this.currentElements = a(
                        f), d = this.groups[f.name], d && a.each(this.groups,
                        function (a, b) {
                            b === d && a !== f.name &&
                            (e = g.validationTargetFor(
                                g.clean(g.findByName(a))), e && e.name in
                            g.invalid &&
                            (g.currentElements.push(e), h = g.check(e) && h));
                        }), c = this.check(f) !== !1, h = h && c, c
                        ? this.invalid[f.name] = !1
                        : this.invalid[f.name] = !0, this.numberOfInvalids() ||
                    (this.toHide = this.toHide.add(
                        this.containers)), this.showErrors(), a(b).
                        attr('aria-invalid', !c)), h;
            },
            showErrors: function (b) {
                if (b) {
                    var c = this;
                    a.extend(this.errorMap, b), this.errorList = a.map(
                        this.errorMap, function (a, b) {
                            return {
                                message: a,
                                element: c.findByName(b)[0],
                            };
                        }), this.successList = a.grep(this.successList,
                        function (a) {return !(a.name in b);});
                }
                this.settings.showErrors ? this.settings.showErrors.call(this,
                    this.errorMap, this.errorList) : this.defaultShowErrors();
            },
            resetForm: function () {
                a.fn.resetForm && a(this.currentForm).
                    resetForm(), this.invalid = {}, this.submitted = {}, this.prepareForm(), this.hideErrors();
                var b = this.elements().
                    removeData('previousValue').
                    removeAttr('aria-invalid');
                this.resetElements(b);
            },
            resetElements: function (a) {
                var b;
                if (this.settings.unhighlight) for (b = 0; a[b]; b++) this.settings.unhighlight.call(
                    this, a[b], this.settings.errorClass, ''), this.findByName(
                    a[b].name).
                    removeClass(this.settings.validClass); else a.removeClass(
                    this.settings.errorClass).
                    removeClass(this.settings.validClass);
            },
            numberOfInvalids: function () {
                return this.objectLength(this.invalid);
            },
            objectLength: function (a) {
                var b, c = 0;
                for (b in a) void 0 !== a[b] && null !== a[b] && a[b] !== !1 &&
                c++;
                return c;
            },
            hideErrors: function () {this.hideThese(this.toHide);},
            hideThese: function (a) {
                a.not(this.containers).
                    text(''), this.addWrapper(a).hide();
            },
            valid: function () {return 0 === this.size();},
            size: function () {return this.errorList.length;},
            focusInvalid: function () {
                if (this.settings.focusInvalid) try {
                    a(this.findLastActive() || this.errorList.length &&
                        this.errorList[0].element || []).
                        filter(':visible').
                        trigger('focus').
                        trigger('focusin');
                } catch (b) {}
            },
            findLastActive: function () {
                var b = this.lastActive;
                return b && 1 === a.grep(this.errorList,
                    function (a) {return a.element.name === b.name;}).length &&
                    b;
            },
            elements: function () {
                var b = this, c = {};
                return a(this.currentForm).
                    find('input, select, textarea, [contenteditable]').
                    not(':submit, :reset, :image, :disabled').
                    not(this.settings.ignore).
                    filter(function () {
                        var d = this.name || a(this).attr('name'),
                            e = 'undefined' !=
                                typeof a(this).attr('contenteditable') &&
                                'false' !== a(this).attr('contenteditable');
                        return !d && b.settings.debug && window.console &&
                        console.error('%o has no name assigned', this), e &&
                        (this.form = a(this).
                            closest('form')[0], this.name = d), this.form ===
                        b.currentForm &&
                        (!(d in c || !b.objectLength(a(this).rules())) &&
                            (c[d] = !0, !0));
                    });
            },
            clean: function (b) {return a(b)[0];},
            errors: function () {
                var b = this.settings.errorClass.split(' ').
                    join('.');
                return a(this.settings.errorElement + '.' + b,
                    this.errorContext);
            },
            resetInternals: function () {
                this.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = a(
                    []), this.toHide = a([]);
            },
            reset: function () {
                this.resetInternals(), this.currentElements = a([]);
            },
            prepareForm: function () {
                this.reset(), this.toHide = this.errors().
                    add(this.containers);
            },
            prepareElement: function (a) {
                this.reset(), this.toHide = this.errorsFor(a);
            },
            elementValue: function (b) {
                var c, d, e = a(b), f = b.type,
                    g = 'undefined' != typeof e.attr('contenteditable') &&
                        'false' !== e.attr('contenteditable');
                return 'radio' === f || 'checkbox' === f ? this.findByName(
                    b.name).filter(':checked').val() : 'number' === f &&
                'undefined' != typeof b.validity ? b.validity.badInput
                    ? 'NaN'
                    : e.val() : (c = g ? e.text() : e.val(), 'file' === f
                    ? 'C:\\fakepath\\' === c.substr(0, 12)
                        ? c.substr(12)
                        : (d = c.lastIndexOf('/'), d >= 0
                            ? c.substr(d + 1)
                            : (d = c.lastIndexOf('\\'), d >= 0
                                ? c.substr(d + 1)
                                : c))
                    : 'string' == typeof c ? c.replace(/\r/g, '') : c);
            },
            check: function (b) {
                b = this.validationTargetFor(this.clean(b));
                var c, d, e, f, g = a(b).rules(),
                    h = a.map(g, function (a, b) {return b;}).length, i = !1,
                    j = this.elementValue(b);
                'function' == typeof g.normalizer
                    ? f = g.normalizer
                    : 'function' == typeof this.settings.normalizer &&
                    (f = this.settings.normalizer), f &&
                (j = f.call(b, j), delete g.normalizer);
                for (d in g) {
                    e = { method: d, parameters: g[d] };
                    try {
                        if (c = a.validator.methods[d].call(this, j, b,
                            e.parameters), 'dependency-mismatch' === c && 1 ===
                        h) {
                            i = !0;
                            continue;
                        }
                        if (i = !1, 'pending' ===
                        c) return void (this.toHide = this.toHide.not(
                            this.errorsFor(b)));
                        if (!c) return this.formatAndAdd(b, e), !1;
                    } catch (k) {
                        throw this.settings.debug && window.console &&
                        console.log(
                            'Exception occurred when checking element ' + b.id +
                            ', check the \'' + e.method + '\' method.',
                            k), k instanceof TypeError &&
                        (k.message += '.  Exception occurred when checking element ' +
                            b.id + ', check the \'' + e.method +
                            '\' method.'), k;
                    }
                }
                if (!i) return this.objectLength(g) &&
                this.successList.push(b), !0;
            },
            customDataMessage: function (b, c) {
                return a(b).
                    data('msg' + c.charAt(0).toUpperCase() +
                        c.substring(1).toLowerCase()) || a(b).data('msg');
            },
            customMessage: function (a, b) {
                var c = this.settings.messages[a];
                return c && (c.constructor === String ? c : c[b]);
            },
            findDefined: function () {
                for (var a = 0; a < arguments.length; a++) if (void 0 !==
                    arguments[a]) return arguments[a];
            },
            defaultMessage: function (b, c) {
                'string' == typeof c && (c = { method: c });
                var d = this.findDefined(this.customMessage(b.name, c.method),
                    this.customDataMessage(b, c.method),
                    !this.settings.ignoreTitle && b.title || void 0,
                    a.validator.messages[c.method],
                    '<strong>Warning: No message defined for ' + b.name +
                    '</strong>'), e = /\$?\{(\d+)\}/g;
                return 'function' == typeof d ? d = d.call(this, c.parameters,
                    b) : e.test(d) &&
                    (d = a.validator.format(d.replace(e, '{$1}'),
                        c.parameters)), d;
            },
            formatAndAdd: function (a, b) {
                var c = this.defaultMessage(a, b);
                this.errorList.push({
                    message: c,
                    element: a,
                    method: b.method,
                }), this.errorMap[a.name] = c, this.submitted[a.name] = c;
            },
            addWrapper: function (a) {
                return this.settings.wrapper &&
                (a = a.add(a.parent(this.settings.wrapper))), a;
            },
            defaultShowErrors: function () {
                var a, b, c;
                for (a = 0; this.errorList[a]; a++) c = this.errorList[a], this.settings.highlight &&
                this.settings.highlight.call(this, c.element,
                    this.settings.errorClass,
                    this.settings.validClass), this.showLabel(c.element,
                    c.message);
                if (this.errorList.length && (this.toShow = this.toShow.add(
                    this.containers)), this.settings.success) for (a = 0; this.successList[a]; a++) this.showLabel(
                    this.successList[a]);
                if (this.settings.unhighlight) for (a = 0, b = this.validElements(); b[a]; a++) this.settings.unhighlight.call(
                    this, b[a], this.settings.errorClass,
                    this.settings.validClass);
                this.toHide = this.toHide.not(
                    this.toShow), this.hideErrors(), this.addWrapper(
                    this.toShow).show();
            },
            validElements: function () {
                return this.currentElements.not(this.invalidElements());
            },
            invalidElements: function () {
                return a(this.errorList).
                    map(function () {return this.element;});
            },
            showLabel: function (b, c) {
                var d, e, f, g, h = this.errorsFor(b), i = this.idOrName(b),
                    j = a(b).attr('aria-describedby');
                h.length ? (h.removeClass(this.settings.validClass).
                    addClass(this.settings.errorClass), h.html(c)) : (h = a(
                    '<' + this.settings.errorElement + '>').
                    attr('id', i + '-error').
                    addClass(this.settings.errorClass).
                    html(c || ''), d = h, this.settings.wrapper &&
                (d = h.hide().
                    show().
                    wrap('<' + this.settings.wrapper + '/>').
                    parent()), this.labelContainer.length
                    ? this.labelContainer.append(d)
                    : this.settings.errorPlacement
                        ? this.settings.errorPlacement.call(this, d, a(b))
                        : d.insertAfter(b), h.is('label')
                    ? h.attr('for', i)
                    : 0 === h.parents(
                    'label[for=\'' + this.escapeCssMeta(i) + '\']').length &&
                    (f = h.attr('id'), j ? j.match(
                        new RegExp('\\b' + this.escapeCssMeta(f) + '\\b')) ||
                        (j += ' ' + f) : j = f, a(b).
                        attr('aria-describedby',
                            j), e = this.groups[b.name], e &&
                    (g = this, a.each(g.groups, function (b, c) {
                        c === e &&
                        a('[name=\'' + g.escapeCssMeta(b) + '\']',
                            g.currentForm).
                            attr('aria-describedby', h.attr('id'));
                    })))), !c && this.settings.success &&
                (h.text(''), 'string' == typeof this.settings.success
                    ? h.addClass(this.settings.success)
                    : this.settings.success(h,
                        b)), this.toShow = this.toShow.add(h);
            },
            errorsFor: function (b) {
                var c = this.escapeCssMeta(this.idOrName(b)),
                    d = a(b).attr('aria-describedby'),
                    e = 'label[for=\'' + c + '\'], label[for=\'' + c + '\'] *';
                return d && (e = e + ', #' + this.escapeCssMeta(d).
                    replace(/\s+/g, ', #')), this.errors().filter(e);
            },
            escapeCssMeta: function (a) {
                return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,
                    '\\$1');
            },
            idOrName: function (a) {
                return this.groups[a.name] ||
                    (this.checkable(a) ? a.name : a.id || a.name);
            },
            validationTargetFor: function (b) {
                return this.checkable(b) && (b = this.findByName(b.name)), a(b).
                    not(this.settings.ignore)[0];
            },
            checkable: function (a) {return /radio|checkbox/i.test(a.type);},
            findByName: function (b) {
                return a(this.currentForm).
                    find('[name=\'' + this.escapeCssMeta(b) + '\']');
            },
            getLength: function (b, c) {
                switch (c.nodeName.toLowerCase()) {
                    case'select':
                        return a('option:selected', c).length;
                    case'input':
                        if (this.checkable(c)) return this.findByName(c.name).
                            filter(':checked').length;
                }
                return b.length;
            },
            depend: function (a, b) {
                return !this.dependTypes[typeof a] ||
                    this.dependTypes[typeof a](a, b);
            },
            dependTypes: {
                'boolean': function (a) {return a;},
                string: function (b, c) {return !!a(b, c.form).length;},
                'function': function (a, b) {return a(b);},
            },
            optional: function (b) {
                var c = this.elementValue(b);
                return !a.validator.methods.required.call(this, c, b) &&
                    'dependency-mismatch';
            },
            startRequest: function (b) {
                this.pending[b.name] || (this.pendingRequest++, a(b).
                    addClass(
                        this.settings.pendingClass), this.pending[b.name] = !0);
            },
            stopRequest: function (b, c) {
                this.pendingRequest--, this.pendingRequest < 0 &&
                (this.pendingRequest = 0), delete this.pending[b.name], a(b).
                    removeClass(this.settings.pendingClass), c && 0 ===
                this.pendingRequest && this.formSubmitted && this.form() ? (a(
                    this.currentForm).submit(), this.submitButton &&
                a('input:hidden[name=\'' + this.submitButton.name + '\']',
                    this.currentForm).remove(), this.formSubmitted = !1) : !c &&
                    0 === this.pendingRequest && this.formSubmitted &&
                    (a(this.currentForm).
                        triggerHandler('invalid-form',
                            [this]), this.formSubmitted = !1);
            },
            previousValue: function (b, c) {
                return c = 'string' == typeof c && c || 'remote', a.data(b,
                    'previousValue') || a.data(b, 'previousValue', {
                    old: null,
                    valid: !0,
                    message: this.defaultMessage(b, { method: c }),
                });
            },
            destroy: function () {
                this.resetForm(), a(this.currentForm).
                    off('.validate').
                    removeData('validator').
                    find('.validate-equalTo-blur').
                    off('.validate-equalTo').
                    removeClass('validate-equalTo-blur').
                    find('.validate-lessThan-blur').
                    off('.validate-lessThan').
                    removeClass('validate-lessThan-blur').
                    find('.validate-lessThanEqual-blur').
                    off('.validate-lessThanEqual').
                    removeClass('validate-lessThanEqual-blur').
                    find('.validate-greaterThanEqual-blur').
                    off('.validate-greaterThanEqual').
                    removeClass('validate-greaterThanEqual-blur').
                    find('.validate-greaterThan-blur').
                    off('.validate-greaterThan').
                    removeClass('validate-greaterThan-blur');
            },
        },
        classRuleSettings: {
            required: { required: !0 },
            email: { email: !0 },
            url: { url: !0 },
            date: { date: !0 },
            dateISO: { dateISO: !0 },
            number: { number: !0 },
            digits: { digits: !0 },
            creditcard: { creditcard: !0 },
        },
        addClassRules: function (b, c) {
            b.constructor === String
                ? this.classRuleSettings[b] = c
                : a.extend(this.classRuleSettings, b);
        },
        classRules: function (b) {
            var c = {}, d = a(b).attr('class');
            return d && a.each(d.split(' '), function () {
                this in a.validator.classRuleSettings &&
                a.extend(c, a.validator.classRuleSettings[this]);
            }), c;
        },
        normalizeAttributeRule: function (a, b, c, d) {
            /min|max|step/.test(c) &&
            (null === b || /number|range|text/.test(b)) &&
            (d = Number(d), isNaN(d) && (d = void 0)), d || 0 === d
                ? a[c] = d
                : b === c && 'range' !== b && (a[c] = !0);
        },
        attributeRules: function (b) {
            var c, d, e = {}, f = a(b), g = b.getAttribute('type');
            for (c in a.validator.methods) 'required' === c
                ? (d = b.getAttribute(c), '' === d && (d = !0), d = !!d)
                : d = f.attr(c), this.normalizeAttributeRule(e, g, c, d);
            return e.maxlength && /-1|2147483647|524288/.test(e.maxlength) &&
            delete e.maxlength, e;
        },
        dataRules: function (b) {
            var c, d, e = {}, f = a(b), g = b.getAttribute('type');
            for (c in a.validator.methods) d = f.data(
                'rule' + c.charAt(0).toUpperCase() +
                c.substring(1).toLowerCase()), '' === d &&
            (d = !0), this.normalizeAttributeRule(e, g, c, d);
            return e;
        },
        staticRules: function (b) {
            var c = {}, d = a.data(b.form, 'validator');
            return d.settings.rules &&
            (c = a.validator.normalizeRule(d.settings.rules[b.name]) || {}), c;
        },
        normalizeRules: function (b, c) {
            return a.each(b, function (d, e) {
                if (e === !1) return void delete b[d];
                if (e.param || e.depends) {
                    var f = !0;
                    switch (typeof e.depends) {
                        case'string':
                            f = !!a(e.depends, c.form).length;
                            break;
                        case'function':
                            f = e.depends.call(c, c);
                    }
                    f ? b[d] = void 0 === e.param || e.param : (a.data(c.form,
                        'validator').
                        resetElements(a(c)), delete b[d]);
                }
            }), a.each(b, function (a, d) {
                b[a] = 'function' == typeof d && 'normalizer' !== a ? d(c) : d;
            }), a.each(['minlength', 'maxlength'],
                function () {b[this] && (b[this] = Number(b[this]));}), a.each(
                ['rangelength', 'range'], function () {
                    var a;
                    b[this] && (Array.isArray(b[this]) ? b[this] = [
                        Number(b[this][0]),
                        Number(b[this][1])] : 'string' == typeof b[this] &&
                        (a = b[this].replace(/[\[\]]/g, '').
                            split(/[\s,]+/), b[this] = [
                            Number(a[0]),
                            Number(a[1])]));
                }), a.validator.autoCreateRanges &&
            (null != b.min && null != b.max &&
            (b.range = [b.min, b.max], delete b.min, delete b.max), null !=
            b.minlength && null != b.maxlength && (b.rangelength = [
                b.minlength,
                b.maxlength], delete b.minlength, delete b.maxlength)), b;
        },
        normalizeRule: function (b) {
            if ('string' == typeof b) {
                var c = {};
                a.each(b.split(/\s/), function () {c[this] = !0;}), b = c;
            }
            return b;
        },
        addMethod: function (b, c, d) {
            a.validator.methods[b] = c, a.validator.messages[b] = void 0 !== d
                ? d
                : a.validator.messages[b], c.length < 3 &&
            a.validator.addClassRules(b, a.validator.normalizeRule(b));
        },
        methods: {
            required: function (b, c, d) {
                if (!this.depend(d, c)) return 'dependency-mismatch';
                if ('select' === c.nodeName.toLowerCase()) {
                    var e = a(c).val();
                    return e && e.length > 0;
                }
                return this.checkable(c) ? this.getLength(b, c) > 0 : void 0 !==
                    b && null !== b && b.length > 0;
            },
            email: function (a, b) {
                return this.optional(b) ||
                    /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(
                        a);
            },
            url: function (a, b) {
                return this.optional(b) ||
                    /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(
                        a);
            },
            date: function () {
                var a = !1;
                return function (b, c) {
                    return a ||
                    (a = !0, this.settings.debug && window.console &&
                    console.warn(
                        'The `date` method is deprecated and will be removed in version \'2.0.0\'.\nPlease don\'t use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.')), this.optional(
                        c) || !/Invalid|NaN/.test(new Date(b).toString());
                };
            }(),
            dateISO: function (a, b) {
                return this.optional(b) ||
                    /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(
                        a);
            },
            number: function (a, b) {
                return this.optional(b) ||
                    /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a);
            },
            digits: function (a, b) {
                return this.optional(b) || /^\d+$/.test(a);
            },
            minlength: function (a, b, c) {
                var d = Array.isArray(a)
                    ? a.length
                    : this.getLength(a, b);
                return this.optional(b) || d >= c;
            },
            maxlength: function (a, b, c) {
                var d = Array.isArray(a)
                    ? a.length
                    : this.getLength(a, b);
                return this.optional(b) || d <= c;
            },
            rangelength: function (a, b, c) {
                var d = Array.isArray(a)
                    ? a.length
                    : this.getLength(a, b);
                return this.optional(b) || d >= c[0] && d <= c[1];
            },
            min: function (a, b, c) {return this.optional(b) || a >= c;},
            max: function (a, b, c) {return this.optional(b) || a <= c;},
            range: function (a, b, c) {
                return this.optional(b) || a >= c[0] && a <= c[1];
            },
            step: function (b, c, d) {
                var e, f = a(c).attr('type'),
                    g = 'Step attribute on input type ' + f +
                        ' is not supported.', h = ['text', 'number', 'range'],
                    i = new RegExp('\\b' + f + '\\b'),
                    j = f && !i.test(h.join()), k = function (a) {
                        var b = ('' + a).match(/(?:\.(\d+))?$/);
                        return b && b[1] ? b[1].length : 0;
                    }, l = function (a) {return Math.round(a * Math.pow(10, e));},
                    m = !0;
                if (j) throw new Error(g);
                return e = k(d), (k(b) > e || l(b) % l(d) !== 0) &&
                (m = !1), this.optional(c) || m;
            },
            equalTo: function (b, c, d) {
                var e = a(d);
                return this.settings.onfocusout &&
                e.not('.validate-equalTo-blur').length &&
                e.addClass('validate-equalTo-blur').
                    on('blur.validate-equalTo',
                        function () {a(c).valid();}), b === e.val();
            },
            remote: function (b, c, d, e) {
                if (this.optional(c)) return 'dependency-mismatch';
                e = 'string' == typeof e && e || 'remote';
                var f, g, h, i = this.previousValue(c, e);
                return this.settings.messages[c.name] ||
                (this.settings.messages[c.name] = {}), i.originalMessage = i.originalMessage ||
                    this.settings.messages[c.name][e], this.settings.messages[c.name][e] = i.message, d = 'string' ==
                    typeof d && { url: d } || d, h = a.param(
                    a.extend({ data: b }, d.data)), i.old === h
                    ? i.valid
                    : (i.old = h, f = this, this.startRequest(
                        c), g = {}, g[c.name] = b, a.ajax(a.extend(!0, {
                        mode: 'abort',
                        port: 'validate' + c.name,
                        dataType: 'json',
                        data: g,
                        context: f.currentForm,
                        success: function (a) {
                            var d, g, h, j = a === !0 || 'true' === a;
                            f.settings.messages[c.name][e] = i.originalMessage, j
                                ? (h = f.formSubmitted, f.resetInternals(), f.toHide = f.errorsFor(
                                    c), f.formSubmitted = h, f.successList.push(
                                    c), f.invalid[c.name] = !1, f.showErrors())
                                : (d = {}, g = a || f.defaultMessage(c, {
                                    method: e,
                                    parameters: b,
                                }), d[c.name] = i.message = g, f.invalid[c.name] = !0, f.showErrors(
                                    d)), i.valid = j, f.stopRequest(c, j);
                        },
                    }, d)), 'pending');
            },
        },
    });
    var c, d = {};
    return a.ajaxPrefilter ? a.ajaxPrefilter(function (a, b, c) {
        var e = a.port;
        'abort' === a.mode && (d[e] && d[e].abort(), d[e] = c);
    }) : (c = a.ajax, a.ajax = function (b) {
        var e = ('mode' in b
            ? b
            : a.ajaxSettings).mode, f = ('port' in b ? b : a.ajaxSettings).port;
        return 'abort' === e ? (d[f] && d[f].abort(), d[f] = c.apply(this,
            arguments), d[f]) : c.apply(this, arguments);
    }), a;
});

/*!
 * jQuery Form Plugin
 * version: 4.3.0
 * Requires jQuery v1.7.2 or later
 * Project repository: https://github.com/jquery-form/form

 * Copyright 2017 Kevin Morris
 * Copyright 2006 M. Alsup

 * Dual licensed under the LGPL-2.1+ or MIT licenses
 * https://github.com/jquery-form/form#license

 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 */
!function (r) {
    'function' == typeof define && define.amd
        ? define(['jquery'], r)
        : 'object' == typeof module && module.exports
        ? module.exports = function (e, t) {
            return void 0 === t &&
            (t = 'undefined' != typeof window ? require('jquery') : require(
                'jquery')(e)), r(t), t;
        }
        : r(jQuery);
}(function (q) {
    'use strict';
    var m = /\r?\n/g, S = {};
    S.fileapi = void 0 !==
        q('<input type="file">').get(0).files, S.formdata = void 0 !==
        window.FormData;
    var _ = !!q.fn.prop;

    function o (e) {
        var t = e.data;
        e.isDefaultPrevented() ||
        (e.preventDefault(), q(e.target).closest('form').ajaxSubmit(t));
    }

    function i (e) {
        var t = e.target, r = q(t);
        if (!r.is('[type=submit],[type=image]')) {
            var a = r.closest('[type=submit]');
            if (0 === a.length) return;
            t = a[0];
        }
        var n, o = t.form;
        'image' === (o.clk = t).type && (void 0 !== e.offsetX
            ? (o.clk_x = e.offsetX, o.clk_y = e.offsetY)
            : 'function' == typeof q.fn.offset
                ? (n = r.offset(), o.clk_x = e.pageX -
                    n.left, o.clk_y = e.pageY - n.top)
                : (o.clk_x = e.pageX - t.offsetLeft, o.clk_y = e.pageY -
                    t.offsetTop)), setTimeout(
            function () {o.clk = o.clk_x = o.clk_y = null;}, 100);
    }

    function N () {
        var e;
        q.fn.ajaxSubmit.debug && (e = '[jquery.form] ' +
            Array.prototype.join.call(arguments, ''), window.console &&
        window.console.log ? window.console.log(e) : window.opera &&
            window.opera.postError && window.opera.postError(e));
    }

    q.fn.attr2 = function () {
        if (!_) return this.attr.apply(this, arguments);
        var e = this.prop.apply(this, arguments);
        return e && e.jquery || 'string' == typeof e ? e : this.attr.apply(this,
            arguments);
    }, q.fn.ajaxSubmit = function (M, e, t, r) {
        if (!this.length) return N(
            'ajaxSubmit: skipping submit process - no element selected'), this;
        var O, a, n, o, X = this;
        'function' == typeof M ? M = { success: M } : 'string' == typeof M ||
        !1 === M && 0 < arguments.length ? (M = {
            url: M,
            data: e,
            dataType: t,
        }, 'function' == typeof r && (M.success = r)) : void 0 === M &&
            (M = {}), O = M.method || M.type ||
            this.attr2('method'), n = (n = (n = 'string' ==
            typeof (a = M.url || this.attr2('action')) ? q.trim(a) : '') ||
            window.location.href || '') &&
            (n.match(/^([^#]+)/) || [])[1], o = /(MSIE|Trident)/.test(
            navigator.userAgent || '') &&
        /^https/i.test(window.location.href || '')
            ? 'javascript:false'
            : 'about:blank', M = q.extend(!0, {
            url: n,
            success: q.ajaxSettings.success,
            type: O || q.ajaxSettings.type,
            iframeSrc: o,
        }, M);
        var i = {};
        if (this.trigger('form-pre-serialize', [this, M, i]), i.veto) return N(
            'ajaxSubmit: submit vetoed via form-pre-serialize trigger'), this;
        if (M.beforeSerialize && !1 === M.beforeSerialize(this, M)) return N(
            'ajaxSubmit: submit aborted via beforeSerialize callback'), this;
        var s = M.traditional;
        void 0 === s && (s = q.ajaxSettings.traditional);
        var u, c, C = [], l = this.formToArray(M.semantic, C, M.filtering);
        if (M.data && (c = q.isFunction(M.data)
            ? M.data(l)
            : M.data, M.extraData = c, u = q.param(c, s)), M.beforeSubmit &&
        !1 === M.beforeSubmit(l, this, M)) return N(
            'ajaxSubmit: submit aborted via beforeSubmit callback'), this;
        if (this.trigger('form-submit-validate',
            [l, this, M, i]), i.veto) return N(
            'ajaxSubmit: submit vetoed via form-submit-validate trigger'), this;
        var f = q.param(l, s);
        u && (f = f ? f + '&' + u : u), 'GET' === M.type.toUpperCase()
            ? (M.url += (0 <= M.url.indexOf('?') ? '&' : '?') +
                f, M.data = null)
            : M.data = f;
        var d, m, p, h = [];
        M.resetForm && h.push(function () {X.resetForm();}), M.clearForm &&
        h.push(function () {X.clearForm(M.includeHidden);}), !M.dataType &&
        M.target ? (d = M.success || function () {}, h.push(function (e, t, r) {
            var a = arguments, n = M.replaceTarget ? 'replaceWith' : 'html';
            q(M.target)[n](e).each(function () {d.apply(this, a);});
        })) : M.success &&
            (q.isArray(M.success) ? q.merge(h, M.success) : h.push(
                M.success)), M.success = function (
            e, t, r) {
            for (var a = M.context || this, n = 0, o = h.length; n <
            o; n++) h[n].apply(a, [e, t, r || X, X]);
        }, M.error && (m = M.error, M.error = function (e, t, r) {
            var a = M.context || this;
            m.apply(a, [e, t, r, X]);
        }), M.complete && (p = M.complete, M.complete = function (e, t) {
            var r = M.context || this;
            p.apply(r, [e, t, X]);
        });
        var v = 0 < q('input[type=file]:enabled', this).
                filter(function () {return '' !== q(this).val();}).length,
            g = 'multipart/form-data',
            x = X.attr('enctype') === g || X.attr('encoding') === g,
            y = S.fileapi && S.formdata;
        N('fileAPI :' + y);
        var b, T = (v || x) && !y;
        !1 !== M.iframe && (M.iframe || T) ? M.closeKeepAlive ? q.get(
            M.closeKeepAlive, function () {b = w(l);}) : b = w(l) : b = (v ||
            x) && y ? function (e) {
            for (var r = new FormData, t = 0; t < e.length; t++) r.append(
                e[t].name, e[t].value);
            if (M.extraData) {
                var a = function (e) {
                    var t, r, a = q.param(e, M.traditional).split('&'),
                        n = a.length, o = [];
                    for (t = 0; t < n; t++) a[t] = a[t].replace(/\+/g,
                        ' '), r = a[t].split('='), o.push(
                        [decodeURIComponent(r[0]), decodeURIComponent(r[1])]);
                    return o;
                }(M.extraData);
                for (t = 0; t < a.length; t++) a[t] &&
                r.append(a[t][0], a[t][1]);
            }
            M.data = null;
            var n = q.extend(!0, {}, q.ajaxSettings, M, {
                contentType: !1,
                processData: !1,
                cache: !1,
                type: O || 'POST',
            });
            M.uploadProgress && (n.xhr = function () {
                var e = q.ajaxSettings.xhr();
                return e.upload && e.upload.addEventListener('progress',
                    function (e) {
                        var t = 0, r = e.loaded || e.position, a = e.total;
                        e.lengthComputable &&
                        (t = Math.ceil(r / a * 100)), M.uploadProgress(e, r, a,
                            t);
                    }, !1), e;
            });
            n.data = null;
            var o = n.beforeSend;
            return n.beforeSend = function (e, t) {
                M.formData
                    ? t.data = M.formData
                    : t.data = r, o && o.call(this, e, t);
            }, q.ajax(n);
        }(l) : q.ajax(M), X.removeData('jqxhr').data('jqxhr', b);
        for (var j = 0; j < C.length; j++) C[j] = null;
        return this.trigger('form-submit-notify', [this, M]), this;

        function w (e) {
            var t, r, l, f, o, d, m, p, a, n, h, v, i = X[0], g = q.Deferred();
            if (g.abort = function (e) {p.abort(e);}, e) for (r = 0; r <
            C.length; r++) t = q(C[r]), _
                ? t.prop('disabled', !1)
                : t.removeAttr('disabled');
            (l = q.extend(!0, {}, q.ajaxSettings, M)).context = l.context ||
                l, o = 'jqFormIO' + (new Date).getTime();
            var s = i.ownerDocument, u = X.closest('body');
            if (l.iframeTarget ? (n = (d = q(l.iframeTarget, s)).attr2('name'))
                ? o = n
                : d.attr2('name', o) : (d = q(
                '<iframe name="' + o + '" src="' + l.iframeSrc + '" />',
                s)).css({
                position: 'absolute',
                top: '-1000px',
                left: '-1000px',
            }), m = d[0], p = {
                aborted: 0,
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: 'n/a',
                getAllResponseHeaders: function () {},
                getResponseHeader: function () {},
                setRequestHeader: function () {},
                abort: function (e) {
                    var t = 'timeout' === e
                        ? 'timeout'
                        : 'aborted';
                    N('aborting upload... ' + t), this.aborted = 1;
                    try {
                        m.contentWindow.document.execCommand &&
                        m.contentWindow.document.execCommand('Stop');
                    } catch (e) {}
                    d.attr('src', l.iframeSrc), p.error = t, l.error &&
                    l.error.call(l.context, p, t, e), f &&
                    q.event.trigger('ajaxError', [p, l, t]), l.complete &&
                    l.complete.call(l.context, p, t);
                },
            }, (f = l.global) && 0 == q.active++ &&
            q.event.trigger('ajaxStart'), f &&
            q.event.trigger('ajaxSend', [p, l]), l.beforeSend && !1 ===
            l.beforeSend.call(l.context, p, l)) return l.global &&
            q.active--, g.reject(), g;
            if (p.aborted) return g.reject(), g;
            (a = i.clk) && (n = a.name) && !a.disabled &&
            (l.extraData = l.extraData ||
                {}, l.extraData[n] = a.value, 'image' === a.type &&
            (l.extraData[n + '.x'] = i.clk_x, l.extraData[n + '.y'] = i.clk_y));
            var x = 1, y = 2;

            function b (t) {
                var r = null;
                try {
                    t.contentWindow && (r = t.contentWindow.document);
                } catch (e) {
                    N('cannot get iframe.contentWindow document: ' + e);
                }
                if (r) return r;
                try {
                    r = t.contentDocument
                        ? t.contentDocument
                        : t.document;
                } catch (e) {
                    N('cannot get iframe.contentDocument: ' +
                        e), r = t.document;
                }
                return r;
            }

            var c = q('meta[name=csrf-token]').attr('content'),
                T = q('meta[name=csrf-param]').attr('content');

            function j () {
                var e = X.attr2('target'), t = X.attr2('action'),
                    r = X.attr('enctype') || X.attr('encoding') ||
                        'multipart/form-data';
                i.setAttribute('target', o), O && !/post/i.test(O) ||
                i.setAttribute('method', 'POST'), t !== l.url &&
                i.setAttribute('action', l.url), l.skipEncodingOverride || O &&
                !/post/i.test(O) || X.attr({
                    encoding: 'multipart/form-data',
                    enctype: 'multipart/form-data',
                }), l.timeout &&
                (v = setTimeout(function () {h = !0, A(x);}, l.timeout));
                var a = [];
                try {
                    if (l.extraData) for (var n in l.extraData) l.extraData.hasOwnProperty(
                        n) && (q.isPlainObject(l.extraData[n]) &&
                    l.extraData[n].hasOwnProperty('name') &&
                    l.extraData[n].hasOwnProperty('value')
                        ? a.push(q('<input type="hidden" name="' +
                            l.extraData[n].name + '">', s).
                            val(l.extraData[n].value).
                            appendTo(i)[0])
                        : a.push(q('<input type="hidden" name="' + n + '">', s).
                            val(l.extraData[n]).
                            appendTo(i)[0]));
                    l.iframeTarget || d.appendTo(u), m.attachEvent
                        ? m.attachEvent('onload', A)
                        : m.addEventListener('load', A, !1), setTimeout(
                        function e () {
                            try {
                                var t = b(m).readyState;
                                N('state = ' + t), t && 'uninitialized' ===
                                t.toLowerCase() && setTimeout(e, 50);
                            } catch (e) {
                                N('Server abort: ', e, ' (', e.name, ')'), A(
                                    y), v && clearTimeout(v), v = void 0;
                            }
                        }, 15);
                    try {i.submit();} catch (e) {
                        document.createElement('form').
                            submit.
                            apply(i);
                    }
                } finally {
                    i.setAttribute('action', t), i.setAttribute('enctype', r), e
                        ? i.setAttribute('target', e)
                        : X.removeAttr('target'), q(a).remove();
                }
            }

            T && c &&
            (l.extraData = l.extraData || {}, l.extraData[T] = c), l.forceSync
                ? j()
                : setTimeout(j, 10);
            var w, S, k, D = 50;

            function A (e) {
                if (!p.aborted && !k) {
                    if ((S = b(m)) ||
                    (N('cannot access response document'), e = y), e === x &&
                    p) return p.abort('timeout'), void g.reject(p, 'timeout');
                    if (e === y && p) return p.abort(
                        'server abort'), void g.reject(p, 'error',
                        'server abort');
                    if (S && S.location.href !== l.iframeSrc || h) {
                        m.detachEvent
                            ? m.detachEvent('onload', A)
                            : m.removeEventListener('load', A, !1);
                        var t, r = 'success';
                        try {
                            if (h) throw'timeout';
                            var a = 'xml' === l.dataType || S.XMLDocument ||
                                q.isXMLDoc(S);
                            if (N('isXml=' + a), !a && window.opera &&
                            (null === S.body || !S.body.innerHTML) &&
                            --D) return N(
                                'requeing onLoad callback, DOM not available'), void setTimeout(
                                A, 250);
                            var n = S.body ? S.body : S.documentElement;
                            p.responseText = n
                                ? n.innerHTML
                                : null, p.responseXML = S.XMLDocument
                                ? S.XMLDocument
                                : S, a &&
                            (l.dataType = 'xml'), p.getResponseHeader = function (e) {return { 'content-type': l.dataType }[e.toLowerCase()];}, n &&
                            (p.status = Number(n.getAttribute('status')) ||
                                p.status, p.statusText = n.getAttribute(
                                'statusText') || p.statusText);
                            var o, i, s, u = (l.dataType || '').toLowerCase(),
                                c = /(json|script|text)/.test(u);
                            c || l.textarea ? (o = S.getElementsByTagName(
                                'textarea')[0])
                                ? (p.responseText = o.value, p.status = Number(
                                    o.getAttribute('status')) ||
                                    p.status, p.statusText = o.getAttribute(
                                    'statusText') || p.statusText)
                                : c && (i = S.getElementsByTagName(
                                'pre')[0], s = S.getElementsByTagName(
                                'body')[0], i ? p.responseText = i.textContent
                                ? i.textContent
                                : i.innerText : s &&
                                (p.responseText = s.textContent
                                    ? s.textContent
                                    : s.innerText)) : 'xml' === u &&
                                !p.responseXML && p.responseText &&
                                (p.responseXML = F(p.responseText));
                            try {
                                w = E(p, u, l);
                            } catch (e) {
                                r = 'parsererror', p.error = t = e || r;
                            }
                        } catch (e) {
                            N('error caught: ',
                                e), r = 'error', p.error = t = e || r;
                        }
                        p.aborted &&
                        (N('upload aborted'), r = null), p.status &&
                        (r = 200 <= p.status && p.status < 300 || 304 ===
                        p.status ? 'success' : 'error'), 'success' === r
                            ? (l.success &&
                            l.success.call(l.context, w, 'success',
                                p), g.resolve(p.responseText, 'success',
                                p), f && q.event.trigger('ajaxSuccess', [p, l]))
                            : r &&
                            (void 0 === t && (t = p.statusText), l.error &&
                            l.error.call(l.context, p, r, t), g.reject(p,
                                'error', t), f &&
                            q.event.trigger('ajaxError', [p, l, t])), f &&
                        q.event.trigger('ajaxComplete', [p, l]), f &&
                        !--q.active &&
                        q.event.trigger('ajaxStop'), l.complete &&
                        l.complete.call(l.context, p, r), k = !0, l.timeout &&
                        clearTimeout(v), setTimeout(function () {
                            l.iframeTarget
                                ? d.attr('src', l.iframeSrc)
                                : d.remove(), p.responseXML = null;
                        }, 100);
                    }
                }
            }

            var F = q.parseXML || function (e, t) {
                    return window.ActiveXObject
                        ? ((t = new ActiveXObject(
                            'Microsoft.XMLDOM')).async = 'false', t.loadXML(e))
                        : t = (new DOMParser).parseFromString(e, 'text/xml'), t &&
                    t.documentElement && 'parsererror' !==
                    t.documentElement.nodeName ? t : null;
                }, L = q.parseJSON ||
                function (e) {return window.eval('(' + e + ')');},
                E = function (e, t, r) {
                    var a = e.getResponseHeader('content-type') || '',
                        n = ('xml' === t || !t) && 0 <= a.indexOf('xml'),
                        o = n ? e.responseXML : e.responseText;
                    return n && 'parsererror' === o.documentElement.nodeName &&
                    q.error && q.error('parsererror'), r && r.dataFilter &&
                    (o = r.dataFilter(o, t)), 'string' == typeof o &&
                    (('json' === t || !t) && 0 <= a.indexOf('json')
                        ? o = L(o)
                        : ('script' === t || !t) && 0 <=
                        a.indexOf('javascript') && q.globalEval(o)), o;
                };
            return g;
        }
    }, q.fn.ajaxForm = function (e, t, r, a) {
        if (('string' == typeof e || !1 === e && 0 < arguments.length) &&
        (e = { url: e, data: t, dataType: r }, 'function' == typeof a &&
        (e.success = a)), (e = e || {}).delegation = e.delegation &&
            q.isFunction(q.fn.on), e.delegation || 0 !==
        this.length) return e.delegation
            ? (q(document).
                off('submit.form-plugin', this.selector, o).
                off('click.form-plugin', this.selector, i).
                on('submit.form-plugin', this.selector, e, o).
                on('click.form-plugin', this.selector, e, i), this)
            : (e.beforeFormUnbind &&
            e.beforeFormUnbind(this, e), this.ajaxFormUnbind().
                on('submit.form-plugin', e, o).
                on('click.form-plugin', e, i));
        var n = { s: this.selector, c: this.context };
        return !q.isReady && n.s ? (N('DOM not ready, queuing ajaxForm'), q(
            function () {q(n.s, n.c).ajaxForm(e);})) : N(
            'terminating; zero elements found by selector' +
            (q.isReady ? '' : ' (DOM not ready)')), this;
    }, q.fn.ajaxFormUnbind = function () {
        return this.off('submit.form-plugin click.form-plugin');
    }, q.fn.formToArray = function (e, t, r) {
        var a = [];
        if (0 === this.length) return a;
        var n, o, i, s, u, c, l, f, d, m, p = this[0], h = this.attr('id'),
            v = (v = e || void 0 === p.elements
                ? p.getElementsByTagName('*')
                : p.elements) && q.makeArray(v);
        if (h && (e || /(Edge|Trident)\//.test(navigator.userAgent)) &&
        (n = q(':input[form="' + h + '"]').get()).length &&
        (v = (v || []).concat(n)), !v || !v.length) return a;
        for (q.isFunction(r) && (v = q.map(v, r)), o = 0, c = v.length; o <
        c; o++) if ((m = (u = v[o]).name) && !u.disabled) if (e && p.clk &&
            'image' === u.type) p.clk === u &&
        (a.push({ name: m, value: q(u).val(), type: u.type }), a.push(
            { name: m + '.x', value: p.clk_x },
            { name: m + '.y', value: p.clk_y })); else if ((s = q.fieldValue(u,
            !0)) && s.constructor === Array) for (t && t.push(
            u), i = 0, l = s.length; i < l; i++) a.push(
            { name: m, value: s[i] }); else if (S.fileapi && 'file' ===
            u.type) {
            t && t.push(u);
            var g = u.files;
            if (g.length) for (i = 0; i < g.length; i++) a.push(
                { name: m, value: g[i], type: u.type }); else a.push(
                { name: m, value: '', type: u.type });
        } else null != s && (t && t.push(u), a.push(
            { name: m, value: s, type: u.type, required: u.required }));
        return e || !p.clk || (m = (d = (f = q(p.clk))[0]).name) &&
        !d.disabled && 'image' === d.type &&
        (a.push({ name: m, value: f.val() }), a.push(
            { name: m + '.x', value: p.clk_x },
            { name: m + '.y', value: p.clk_y })), a;
    }, q.fn.formSerialize = function (e) {
        return q.param(this.formToArray(e));
    }, q.fn.fieldSerialize = function (n) {
        var o = [];
        return this.each(function () {
            var e = this.name;
            if (e) {
                var t = q.fieldValue(this, n);
                if (t && t.constructor ===
                    Array) for (var r = 0, a = t.length; r < a; r++) o.push(
                    { name: e, value: t[r] }); else null != t &&
                o.push({ name: this.name, value: t });
            }
        }), q.param(o);
    }, q.fn.fieldValue = function (e) {
        for (var t = [], r = 0, a = this.length; r < a; r++) {
            var n = this[r], o = q.fieldValue(n, e);
            null == o || o.constructor === Array && !o.length ||
            (o.constructor === Array ? q.merge(t, o) : t.push(o));
        }
        return t;
    }, q.fieldValue = function (e, t) {
        var r = e.name, a = e.type, n = e.tagName.toLowerCase();
        if (void 0 === t && (t = !0), t &&
        (!r || e.disabled || 'reset' === a || 'button' === a ||
            ('checkbox' === a || 'radio' === a) && !e.checked ||
            ('submit' === a || 'image' === a) && e.form && e.form.clk !== e ||
            'select' === n && -1 === e.selectedIndex)) return null;
        if ('select' !== n) return q(e).val().replace(m, '\r\n');
        var o = e.selectedIndex;
        if (o < 0) return null;
        for (var i = [], s = e.options, u = 'select-one' === a, c = u
            ? o + 1
            : s.length, l = u ? o : 0; l < c; l++) {
            var f = s[l];
            if (f.selected && !f.disabled) {
                var d = (d = f.value) || (f.attributes && f.attributes.value &&
                !f.attributes.value.specified ? f.text : f.value);
                if (u) return d;
                i.push(d);
            }
        }
        return i;
    }, q.fn.clearForm = function (e) {
        return this.each(
            function () {q('input,select,textarea', this).clearFields(e);});
    }, q.fn.clearFields = q.fn.clearInputs = function (r) {
        var a = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
        return this.each(function () {
            var e = this.type, t = this.tagName.toLowerCase();
            a.test(e) || 'textarea' === t ? this.value = '' : 'checkbox' ===
            e || 'radio' === e ? this.checked = !1 : 'select' === t
                ? this.selectedIndex = -1
                : 'file' === e ? /MSIE/.test(navigator.userAgent) ? q(this).
                    replaceWith(q(this).clone(!0)) : q(this).val('') : r &&
                    (!0 === r && /hidden/.test(e) || 'string' == typeof r &&
                        q(this).is(r)) && (this.value = '');
        });
    }, q.fn.resetForm = function () {
        return this.each(function () {
            var t = q(this), e = this.tagName.toLowerCase();
            switch (e) {
                case'input':
                    this.checked = this.defaultChecked;
                case'textarea':
                    return this.value = this.defaultValue, !0;
                case'option':
                case'optgroup':
                    var r = t.parents('select');
                    return r.length && r[0].multiple ? 'option' === e
                        ? this.selected = this.defaultSelected
                        : t.find('option').resetForm() : r.resetForm(), !0;
                case'select':
                    return t.find('option').
                        each(function (e) {
                            if (this.selected = this.defaultSelected, this.defaultSelected &&
                            !t[0].multiple) return t[0].selectedIndex = e, !1;
                        }), !0;
                case'label':
                    var a = q(t.attr('for')),
                        n = t.find('input,select,textarea');
                    return a[0] && n.unshift(a[0]), n.resetForm(), !0;
                case'form':
                    return 'function' != typeof this.reset &&
                    ('object' != typeof this.reset || this.reset.nodeType) ||
                    this.reset(), !0;
                default:
                    return t.find('form,input,label,select,textarea').
                        resetForm(), !0;
            }
        });
    }, q.fn.enable = function (e) {
        return void 0 === e && (e = !0), this.each(
            function () {this.disabled = !e;});
    }, q.fn.selected = function (r) {
        return void 0 === r && (r = !0), this.each(function () {
            var e, t = this.type;
            'checkbox' === t || 'radio' === t ? this.checked = r : 'option' ===
                this.tagName.toLowerCase() &&
                (e = q(this).parent('select'), r && e[0] && 'select-one' ===
                e[0].type && e.find('option').selected(!1), this.selected = r);
        });
    }, q.fn.ajaxSubmit.debug = !1;
});

window.scwAjaxFormPlugin = window.scwAjaxFormPlugin || {};

window.SEMICOLON_ajaxFormInit = function ($ajaxForm) {

    $ajaxForm = $ajaxForm.filter(':not(.customjs)');

    if ($ajaxForm.length < 1) {
        return true;
    }

    $ajaxForm.each(function () {
        let element = $(this),
            $body = $('body'),
            elForm = element.find('form'),
            elFormId = elForm.attr('id'),
            elAlert = element.attr('data-alert-type'),
            elLoader = element.attr('data-loader'),
            elResult = element.find('.form-result'),
            elRedirect = element.attr('data-redirect'),
            defButton, alertType;

        if (!elAlert) { elAlert = 'notify'; }

        if (elFormId) {
            $body.addClass(elFormId + '-ready');
        }

        element.find('form').validate({
            errorPlacement: function (error, elementItem) {
                if (elementItem.parents('.form-group').length > 0) {
                    error.appendTo(elementItem.parents('.form-group'));
                } else {
                    error.insertAfter(elementItem);
                }
            },
            focusCleanup: true,
            submitHandler: function (form) {

                if (element.hasClass('custom-submit')) {
                    $(form).submit();
                    return true;
                }

                elResult.hide();

                if (elLoader == 'button') {
                    defButton = $(form).find('button');
                    defButtonText = defButton.html();

                    defButton.html(
                        '<i class="icon-line-loader icon-spin m-0"></i>');
                } else {
                    $(form).find('.form-process').fadeIn();
                }

                if (elFormId) {
                    $body.removeClass(
                        elFormId + '-ready ' + elFormId + '-complete ' +
                        elFormId + '-success ' + elFormId + '-error').
                        addClass(elFormId + '-processing');
                }

                $(form).ajaxSubmit({
                    target: elResult,
                    dataType: 'json',
                    success: function (data) {
                        if (elLoader == 'button') {
                            defButton.html(defButtonText);
                        } else {
                            $(form).find('.form-process').fadeOut();
                        }

                        if (data.alert != 'error' && elRedirect) {
                            window.location.replace(elRedirect);
                            return true;
                        }

                        if (elAlert == 'inline') {
                            if (data.alert == 'error') {
                                alertType = 'alert-danger';
                            } else {
                                alertType = 'alert-success';
                            }

                            elResult.removeClass('alert-danger alert-success').
                                addClass('alert ' + alertType).
                                html(data.message).
                                slideDown(400);
                        } else if (elAlert == 'notify') {
                            elResult.attr('data-notify-type', data.alert).
                                attr('data-notify-msg', data.message).
                                html('');
                            SEMICOLON.widget.notifications({ el: elResult });
                        }

                        if (data.alert != 'error') {
                            $(form).resetForm();
                            $(form).
                                find('.btn-group > .btn').
                                removeClass('active');

                            if ((typeof tinyMCE != 'undefined') &&
                                tinyMCE.activeEditor &&
                                !tinyMCE.activeEditor.isHidden()) {
                                tinymce.activeEditor.setContent('');
                            }

                            let rangeSlider = $(form).
                                find('.input-range-slider');
                            if (rangeSlider.length > 0) {
                                rangeSlider.each(function () {
                                    let range = $(this).data('ionRangeSlider');
                                    range.reset();
                                });
                            }

                            let ratings = $(form).find('.input-rating');
                            if (ratings.length > 0) {
                                ratings.each(function () {
                                    $(this).rating('reset');
                                });
                            }

                            let selectPicker = $(form).find('.selectpicker');
                            if (selectPicker.length > 0) {
                                selectPicker.each(function () {
                                    $(this).selectpicker('val', '');
                                    $(this).selectpicker('deselectAll');
                                });
                            }

                            $(form).
                                find(
                                    '.input-select2,select[data-selectsplitter-firstselect-selector]').
                                change();

                            $(form).trigger('formSubmitSuccess', data);
                            $body.removeClass(elFormId + '-error').
                                addClass(elFormId + '-success');
                        } else {
                            $(form).trigger('formSubmitError', data);
                            $body.removeClass(elFormId + '-success').
                                addClass(elFormId + '-error');
                        }

                        if (elFormId) {
                            $body.removeClass(elFormId + '-processing').
                                addClass(elFormId + '-complete');
                        }

                        if ($(form).
                            find('.g-recaptcha').
                            children('div').length > 0) { grecaptcha.reset(); }
                    },
                });
            },
        });

    });

};

window.scwAjaxPortfolioPlugin = window.scwAjaxPortfolioPlugin || {};

let $portfolioAjaxItems = $('.portfolio-ajax').find('.portfolio-item'),
    $portfolioDetails = $('#portfolio-ajax-wrap'),
    $portfolioDetailsContainer = $('#portfolio-ajax-container'),
    $portfolioAjaxLoader = $('#portfolio-ajax-loader'),
    prevPostPortId = '';

window.SEMICOLON_portfolioAjaxloadInit = function () {
    if ($('.portfolio-ajax').length < 1) {
        return true;
    }

    $('.portfolio-ajax .portfolio-item a.portfolio-ajax-trigger').
        off('click').
        on('click', function (e) {
            let portPostId = $(this).parents('.portfolio-item').attr('id');
            if (!$(this).
                parents('.portfolio-item').
                hasClass('portfolio-active')) {
                SEMICOLON_portfolioLoadItem(portPostId, prevPostPortId);
            }
            e.preventDefault();
        });
};

window.SEMICOLON_portfolionewNextPrev = function (portPostId) {
    let portNext = SEMICOLON_portfolioGetNextItem(portPostId);
    let portPrev = SEMICOLON_portfolioGetPrevItem(portPostId);
    $('#next-portfolio').attr('data-id', portNext);
    $('#prev-portfolio').attr('data-id', portPrev);
};

window.SEMICOLON_portfolioLoadItem = function (
    portPostId, prevPostPortId, getIt) {
    if (!getIt) { getIt = false; }
    let portNext = SEMICOLON_portfolioGetNextItem(portPostId);
    let portPrev = SEMICOLON_portfolioGetPrevItem(portPostId);
    if (getIt == false) {
        SEMICOLON_portfolioCloseItem();
        $portfolioAjaxLoader.fadeIn();
        let portfolioDataLoader = $('#' + portPostId).attr('data-loader');
        $portfolioDetailsContainer.load(portfolioDataLoader,
            { portid: portPostId, portnext: portNext, portprev: portPrev },
            function () {
                SEMICOLON_portfolioInitializeAjax(portPostId);
                SEMICOLON_portfolioOpenItem();
                $portfolioAjaxItems.removeClass('portfolio-active');
                $('#' + portPostId).addClass('portfolio-active');
            });
    }
};

window.SEMICOLON_portfolioCloseItem = function () {
    if ($portfolioDetails && $portfolioDetails.height() > 32) {
        $portfolioAjaxLoader.fadeIn();
        $portfolioDetails.find('#portfolio-ajax-single').
            fadeOut('600', function () {
                $(this).remove();
            });
        $portfolioDetails.removeClass('portfolio-ajax-opened');
    }
};

window.SEMICOLON_portfolioOpenItem = function () {
    let noOfImages = $portfolioDetails.find('img').length;
    let noLoaded = 0;

    if (noOfImages > 0) {
        $portfolioDetails.find('img').on('load', function () {
            noLoaded++;
            let topOffsetScroll = SEMICOLON.initialize.topScrollOffset();
            if (noOfImages === noLoaded) {
                $portfolioDetailsContainer.css({ 'display': 'block' });
                $portfolioDetails.addClass('portfolio-ajax-opened');
                $portfolioAjaxLoader.fadeOut();
                setTimeout(function () {
                    SEMICOLON.widget.loadFlexSlider();
                    SEMICOLON.initialize.lightbox(
                        { 'parent': $portfolioDetails });
                    SEMICOLON.initialize.resizeVideos();
                    SEMICOLON.widget.masonryThumbs();
                    $('html,body').stop(true).animate({
                        'scrollTop': $portfolioDetails.offset().top -
                            topOffsetScroll,
                    }, 900, 'easeOutQuad');
                }, 500);
            }
        });
    } else {
        let topOffsetScroll = SEMICOLON.initialize.topScrollOffset();
        $portfolioDetailsContainer.css({ 'display': 'block' });
        $portfolioDetails.addClass('portfolio-ajax-opened');
        $portfolioAjaxLoader.fadeOut();
        setTimeout(function () {
            SEMICOLON.widget.loadFlexSlider();
            SEMICOLON.initialize.lightbox({ 'parent': $portfolioDetails });
            SEMICOLON.initialize.resizeVideos();
            SEMICOLON.widget.masonryThumbs();
            $('html,body').stop(true).animate({
                'scrollTop': $portfolioDetails.offset().top - topOffsetScroll,
            }, 900, 'easeOutQuad');
        }, 500);
    }
};

window.SEMICOLON_portfolioGetNextItem = function (portPostId) {
    let portNext = '';
    let hasNext = $('#' + portPostId).next();
    if (hasNext.length != 0) {
        portNext = hasNext.attr('id');
    }
    return portNext;
};

window.SEMICOLON_portfolioGetPrevItem = function (portPostId) {
    let portPrev = '';
    let hasPrev = $('#' + portPostId).prev();
    if (hasPrev.length != 0) {
        portPrev = hasPrev.attr('id');
    }
    return portPrev;
};

window.SEMICOLON_portfolioInitializeAjax = function (portPostId) {
    prevPostPortId = $('#' + portPostId);

    $('#next-portfolio, #prev-portfolio').off('click').on('click', function () {
        let portPostId = $(this).attr('data-id');
        $portfolioAjaxItems.removeClass('portfolio-active');
        $('#' + portPostId).addClass('portfolio-active');
        SEMICOLON_portfolioLoadItem(portPostId, prevPostPortId);
        return false;
    });

    $('#close-portfolio').off('click').on('click', function () {
        $portfolioDetailsContainer.fadeOut('600', function () {
            $portfolioDetails.find('#portfolio-ajax-single').remove();
        });
        $portfolioDetails.removeClass('portfolio-ajax-opened');
        $portfolioAjaxItems.removeClass('portfolio-active');
        return false;
    });
};

window.scwAnimationsPlugin = window.scwAnimationsPlugin || {};

window.SEMICOLON_animationsInit = function ($animationEl) {

    $animationEl = $animationEl.filter(':not(.customjs)');

    if ($animationEl.length < 1) {
        return true;
    }

    let SELECTOR = '[data-animate]',
        ANIMATE_CLASS_NAME = 'animated';

    let isAnimated = function (element) {
        element.classList.contains(ANIMATE_CLASS_NAME);
    };

    let intersectionObserver = new IntersectionObserver(
        function (entries, observer) {
            entries.forEach(function (entry) {

                let thisElement = $(entry.target),
                    elAnimation = thisElement.attr('data-animate'),
                    elAnimOut = thisElement.attr('data-animate-out'),
                    elAnimDelay = thisElement.attr('data-delay'),
                    elAnimDelayOut = thisElement.attr('data-delay-out'),
                    elAnimDelayTime = 0,
                    elAnimDelayOutTime = 3000;

                if (thisElement.parents('.fslider.no-thumbs-animate').length >
                    0) { return true; }
                if (thisElement.parents('.swiper-slide').length >
                    0) { return true; }

                if (elAnimDelay) {
                    elAnimDelayTime = Number(elAnimDelay) + 500;
                } else { elAnimDelayTime = 500; }
                if (elAnimOut && elAnimDelayOut) {
                    elAnimDelayOutTime = Number(elAnimDelayOut) +
                        elAnimDelayTime;
                }

                if (!thisElement.hasClass('animated')) {
                    thisElement.addClass('not-animated');
                    if (entry.intersectionRatio > 0) {

                        setTimeout(function () {
                            thisElement.removeClass('not-animated').
                                addClass(elAnimation + ' animated');
                        }, elAnimDelayTime);

                        if (elAnimOut) {
                            setTimeout(function () {
                                thisElement.removeClass(elAnimation).
                                    addClass(elAnimOut);
                            }, elAnimDelayOutTime);
                        }

                    }
                }

                if (!thisElement.hasClass('not-animated')) {
                    observer.unobserve(entry.target);
                }
            });
        },
    );

    let elements = [].filter.call(
        document.querySelectorAll(SELECTOR),
        function (element) {
            return !isAnimated(element, ANIMATE_CLASS_NAME);
        });

    elements.forEach(function (element) {
        return intersectionObserver.observe(element);
    });

};

/**
 * Owl Carousel v2.3.4
 * Copyright 2013-2018 David Deutsch
 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
 */
!function (a, b, c, d) {
    function e (b, c) {
        this.settings = null, this.options = a.extend({}, e.Defaults,
            c), this.$element = a(
            b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = {
            time: null,
            target: null,
            pointer: null,
            stage: { start: null, current: null },
            direction: null,
        }, this._states = {
            current: {},
            tags: {
                initializing: ['busy'],
                animating: ['busy'],
                dragging: ['interacting'],
            },
        }, a.each(['onResize', 'onThrottledResize'], a.proxy(
            function (b, c) {this._handlers[c] = a.proxy(this[c], this);},
            this)), a.each(e.Plugins, a.proxy(function (a, b) {
            this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this);
        }, this)), a.each(e.Workers, a.proxy(function (b, c) {
            this._pipe.push({ filter: c.filter, run: a.proxy(c.run, this) });
        }, this)), this.setup(), this.initialize();
    }

    e.Defaults = {
        items: 3,
        loop: !1,
        center: !1,
        rewind: !1,
        checkVisibility: !0,
        mouseDrag: !0,
        touchDrag: !0,
        pullDrag: !0,
        freeDrag: !1,
        margin: 0,
        stagePadding: 0,
        merge: !1,
        mergeFit: !0,
        autoWidth: !1,
        startPosition: 0,
        rtl: !1,
        smartSpeed: 250,
        fluidSpeed: !1,
        dragEndSpeed: !1,
        responsive: {},
        responsiveRefreshRate: 200,
        responsiveBaseElement: b,
        fallbackEasing: 'swing',
        slideTransition: '',
        info: !1,
        nestedItemSelector: !1,
        itemElement: 'div',
        stageElement: 'div',
        refreshClass: 'owl-refresh',
        loadedClass: 'owl-loaded',
        loadingClass: 'owl-loading',
        rtlClass: 'owl-rtl',
        responsiveClass: 'owl-responsive',
        dragClass: 'owl-drag',
        itemClass: 'owl-item',
        stageClass: 'owl-stage',
        stageOuterClass: 'owl-stage-outer',
        grabClass: 'owl-grab',
    }, e.Width = {
        Default: 'default',
        Inner: 'inner',
        Outer: 'outer',
    }, e.Type = {
        Event: 'event',
        State: 'state',
    }, e.Plugins = {}, e.Workers = [
        {
            filter: ['width', 'settings'],
            run: function () {this._width = this.$element.width();},
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function (a) {
                a.current = this._items &&
                    this._items[this.relative(this._current)];
            },
        },
        {
            filter: ['items', 'settings'],
            run: function () {this.$stage.children('.cloned').remove();},
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function (a) {
                var b = this.settings.margin || '',
                    c = !this.settings.autoWidth, d = this.settings.rtl, e = {
                        width: 'auto',
                        'margin-left': d ? b : '',
                        'margin-right': d ? '' : b,
                    };
                !c && this.$stage.children().css(e), a.css = e;
            },
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function (a) {
                var b = (this.width() / this.settings.items).toFixed(3) -
                    this.settings.margin, c = null, d = this._items.length,
                    e = !this.settings.autoWidth, f = [];
                for (a.items = {
                    merge: !1,
                    width: b,
                }; d--;) c = this._mergers[d], c = this.settings.mergeFit &&
                    Math.min(c, this.settings.items) || c, a.items.merge = c >
                    1 || a.items.merge, f[d] = e
                    ? b * c
                    : this._items[d].width();
                this._widths = f;
            },
        },
        {
            filter: ['items', 'settings'],
            run: function () {
                var b = [], c = this._items, d = this.settings,
                    e = Math.max(2 * d.items, 4),
                    f = 2 * Math.ceil(c.length / 2),
                    g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0,
                    h = '', i = '';
                for (g /= 2; g > 0;) b.push(
                    this.normalize(b.length / 2, !0)), h += c[b[b.length -
                1]][0].outerHTML, b.push(
                    this.normalize(c.length - 1 - (b.length - 1) / 2,
                        !0)), i = c[b[b.length - 1]][0].outerHTML + i, g -= 1;
                this._clones = b, a(h).
                    addClass('cloned').
                    appendTo(this.$stage), a(i).
                    addClass('cloned').
                    prependTo(this.$stage);
            },
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function () {
                for (var a = this.settings.rtl
                    ? 1
                    : -1, b = this._clones.length +
                    this._items.length, c = -1, d = 0, e = 0, f = []; ++c <
                     b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] +
                    this.settings.margin, f.push(d + e * a);
                this._coordinates = f;
            },
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function () {
                var a = this.settings.stagePadding, b = this._coordinates, c = {
                    width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a,
                    'padding-left': a || '',
                    'padding-right': a || '',
                };
                this.$stage.css(c);
            },
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function (a) {
                var b = this._coordinates.length, c = !this.settings.autoWidth,
                    d = this.$stage.children();
                if (c &&
                    a.items.merge) for (; b--;) a.css.width = this._widths[this.relative(
                    b)], d.eq(b).css(a.css); else c &&
                (a.css.width = a.items.width, d.css(a.css));
            },
        },
        {
            filter: ['items'],
            run: function () {
                this._coordinates.length < 1 && this.$stage.removeAttr('style');
            },
        },
        {
            filter: ['width', 'items', 'settings'],
            run: function (a) {
                a.current = a.current ? this.$stage.children().
                    index(a.current) : 0, a.current = Math.max(this.minimum(),
                    Math.min(this.maximum(), a.current)), this.reset(a.current);
            },
        },
        {
            filter: ['position'],
            run: function () {this.animate(this.coordinates(this._current));},
        },
        {
            filter: ['width', 'position', 'items', 'settings'],
            run: function () {
                var a, b, c, d, e = this.settings.rtl ? 1 : -1,
                    f = 2 * this.settings.stagePadding,
                    g = this.coordinates(this.current()) + f,
                    h = g + this.width() * e, i = [];
                for (c = 0, d = this._coordinates.length; c <
                d; c++) a = this._coordinates[c - 1] || 0, b = Math.abs(
                    this._coordinates[c]) + f * e, (this.op(a, '<=', g) &&
                    this.op(a, '>', h) || this.op(b, '<', g) &&
                    this.op(b, '>', h)) && i.push(c);
                this.$stage.children('.active').
                    removeClass('active'), this.$stage.children(
                    ':eq(' + i.join('), :eq(') + ')').
                    addClass('active'), this.$stage.children('.center').
                    removeClass('center'), this.settings.center &&
                this.$stage.children().eq(this.current()).addClass('center');
            },
        }], e.prototype.initializeStage = function () {
        this.$stage = this.$element.find(
            '.' + this.settings.stageClass), this.$stage.length ||
        (this.$element.addClass(this.options.loadingClass), this.$stage = a(
            '<' + this.settings.stageElement + '>',
            { class: this.settings.stageClass }).
            wrap(a('<div/>',
                { class: this.settings.stageOuterClass })), this.$element.append(
            this.$stage.parent()));
    }, e.prototype.initializeItems = function () {
        var b = this.$element.find('.owl-item');
        if (b.length) return this._items = b.get().
            map(function (b) {return a(b);}), this._mergers = this._items.map(
            function () {return 1;}), void this.refresh();
        this.replace(this.$element.children().
            not(this.$stage.parent())), this.isVisible()
            ? this.refresh()
            : this.invalidate('width'), this.$element.removeClass(
            this.options.loadingClass).addClass(this.options.loadedClass);
    }, e.prototype.initialize = function () {
        if (this.enter('initializing'), this.trigger(
            'initialize'), this.$element.toggleClass(this.settings.rtlClass,
            this.settings.rtl), this.settings.autoWidth &&
        !this.is('pre-loading')) {
            var a, b, c;
            a = this.$element.find('img'), b = this.settings.nestedItemSelector
                ? '.' + this.settings.nestedItemSelector
                : d, c = this.$element.children(b).width(), a.length && c <=
            0 && this.preloadAutoWidthImages(a);
        }
        this.initializeStage(), this.initializeItems(), this.registerEventHandlers(), this.leave(
            'initializing'), this.trigger('initialized');
    }, e.prototype.isVisible = function () {
        return !this.settings.checkVisibility || this.$element.is(':visible');
    }, e.prototype.setup = function () {
        var b = this.viewport(), c = this.options.responsive, d = -1, e = null;
        c ? (a.each(c,
            function (a) {a <= b && a > d && (d = Number(a));}), e = a.extend(
            {},
            this.options, c[d]), 'function' == typeof e.stagePadding &&
        (e.stagePadding = e.stagePadding()), delete e.responsive, e.responsiveClass &&
        this.$element.attr('class', this.$element.attr('class').
            replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s',
                'g'), '$1' + d))) : e = a.extend({},
            this.options), this.trigger('change', {
            property: {
                name: 'settings',
                value: e,
            },
        }), this._breakpoint = d, this.settings = e, this.invalidate(
            'settings'), this.trigger('changed',
            { property: { name: 'settings', value: this.settings } });
    }, e.prototype.optionsLogic = function () {
        this.settings.autoWidth &&
        (this.settings.stagePadding = !1, this.settings.merge = !1);
    }, e.prototype.prepare = function (b) {
        var c = this.trigger('prepare', { content: b });
        return c.data || (c.data = a('<' + this.settings.itemElement + '/>').
            addClass(this.options.itemClass).
            append(b)), this.trigger('prepared', { content: c.data }), c.data;
    }, e.prototype.update = function () {
        for (var b = 0, c = this._pipe.length, d = a.proxy(
            function (a) {return this[a];}, this._invalidated), e = {}; b <
             c;) (this._invalidated.all ||
            a.grep(this._pipe[b].filter, d).length > 0) &&
        this._pipe[b].run(e), b++;
        this._invalidated = {}, !this.is('valid') && this.enter('valid');
    }, e.prototype.width = function (a) {
        switch (a = a || e.Width.Default) {
            case e.Width.Inner:
            case e.Width.Outer:
                return this._width;
            default:
                return this._width - 2 * this.settings.stagePadding +
                    this.settings.margin;
        }
    }, e.prototype.refresh = function () {
        this.enter('refreshing'), this.trigger(
            'refresh'), this.setup(), this.optionsLogic(), this.$element.addClass(
            this.options.refreshClass), this.update(), this.$element.removeClass(
            this.options.refreshClass), this.leave('refreshing'), this.trigger(
            'refreshed');
    }, e.prototype.onThrottledResize = function () {
        b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(
            this._handlers.onResize, this.settings.responsiveRefreshRate);
    }, e.prototype.onResize = function () {
        return !!this._items.length && (this._width !== this.$element.width() &&
            (!!this.isVisible() &&
                (this.enter('resizing'), this.trigger('resize').
                    isDefaultPrevented()
                    ? (this.leave('resizing'), !1)
                    : (this.invalidate('width'), this.refresh(), this.leave(
                        'resizing'), void this.trigger('resized')))));
    }, e.prototype.registerEventHandlers = function () {
        a.support.transition &&
        this.$stage.on(a.support.transition.end + '.owl.core',
            a.proxy(this.onTransitionEnd, this)), !1 !==
        this.settings.responsive && this.on(b, 'resize',
            this._handlers.onThrottledResize), this.settings.mouseDrag &&
        (this.$element.addClass(this.options.dragClass), this.$stage.on(
            'mousedown.owl.core',
            a.proxy(this.onDragStart, this)), this.$stage.on(
            'dragstart.owl.core selectstart.owl.core',
            function () {return !1;})), this.settings.touchDrag &&
        (this.$stage.on('touchstart.owl.core',
            a.proxy(this.onDragStart, this)), this.$stage.on(
            'touchcancel.owl.core', a.proxy(this.onDragEnd, this)));
    }, e.prototype.onDragStart = function (b) {
        var d = null;
        3 !== b.which &&
        (a.support.transform ? (d = this.$stage.css('transform').
            replace(/.*\(|\)| /g, '').
            split(','), d = {
            x: d[16 === d.length ? 12 : 4],
            y: d[16 === d.length ? 13 : 5],
        }) : (d = this.$stage.position(), d = {
            x: this.settings.rtl
                ? d.left + this.$stage.width() - this.width() +
                this.settings.margin
                : d.left, y: d.top,
        }), this.is('animating') && (a.support.transform
            ? this.animate(d.x)
            : this.$stage.stop(), this.invalidate(
            'position')), this.$element.toggleClass(this.options.grabClass,
            'mousedown' === b.type), this.speed(
            0), this._drag.time = (new Date).getTime(), this._drag.target = a(
            b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(
            b), a(c).
            on('mouseup.owl.core touchend.owl.core',
                a.proxy(this.onDragEnd, this)), a(c).
            one('mousemove.owl.core touchmove.owl.core', a.proxy(function (b) {
                var d = this.difference(this._drag.pointer, this.pointer(b));
                a(c).
                    on('mousemove.owl.core touchmove.owl.core',
                        a.proxy(this.onDragMove, this)), Math.abs(d.x) <
                Math.abs(d.y) && this.is('valid') ||
                (b.preventDefault(), this.enter('dragging'), this.trigger(
                    'drag'));
            }, this)));
    }, e.prototype.onDragMove = function (a) {
        var b = null, c = null, d = null,
            e = this.difference(this._drag.pointer, this.pointer(a)),
            f = this.difference(this._drag.stage.start, e);
        this.is('dragging') &&
        (a.preventDefault(), this.settings.loop ? (b = this.coordinates(
            this.minimum()), c = this.coordinates(this.maximum() + 1) -
            b, f.x = ((f.x - b) % c + c) % c + b) : (b = this.settings.rtl
            ? this.coordinates(this.maximum())
            : this.coordinates(this.minimum()), c = this.settings.rtl
            ? this.coordinates(this.minimum())
            : this.coordinates(this.maximum()), d = this.settings.pullDrag
            ? -1 * e.x / 5
            : 0, f.x = Math.max(Math.min(f.x, b + d),
            c + d)), this._drag.stage.current = f, this.animate(f.x));
    }, e.prototype.onDragEnd = function (b) {
        var d = this.difference(this._drag.pointer, this.pointer(b)),
            e = this._drag.stage.current,
            f = d.x > 0 ^ this.settings.rtl ? 'left' : 'right';
        a(c).off('.owl.core'), this.$element.removeClass(
            this.options.grabClass), (0 !== d.x && this.is('dragging') ||
            !this.is('valid')) && (this.speed(this.settings.dragEndSpeed ||
            this.settings.smartSpeed), this.current(this.closest(e.x,
            0 !== d.x ? f : this._drag.direction)), this.invalidate(
            'position'), this.update(), this._drag.direction = f, (Math.abs(
            d.x) > 3 || (new Date).getTime() - this._drag.time > 300) &&
        this._drag.target.one('click.owl.core',
            function () {return !1;})), this.is('dragging') &&
        (this.leave('dragging'), this.trigger('dragged'));
    }, e.prototype.closest = function (b, c) {
        var e = -1, f = 30, g = this.width(), h = this.coordinates();
        return this.settings.freeDrag || a.each(h, a.proxy(function (a, i) {
            return 'left' === c && b > i - f && b < i + f
                ? e = a
                : 'right' === c && b > i - g - f && b < i - g + f
                    ? e = a + 1
                    : this.op(b, '<', i) &&
                    this.op(b, '>', h[a + 1] !== d ? h[a + 1] : i - g) &&
                    (e = 'left' === c ? a + 1 : a), -1 === e;
        }, this)), this.settings.loop ||
        (this.op(b, '>', h[this.minimum()]) ? e = b = this.minimum() : this.op(
            b, '<', h[this.maximum()]) && (e = b = this.maximum())), e;
    }, e.prototype.animate = function (b) {
        var c = this.speed() > 0;
        this.is('animating') && this.onTransitionEnd(), c &&
        (this.enter('animating'), this.trigger(
            'translate')), a.support.transform3d && a.support.transition
            ? this.$stage.css({
                transform: 'translate3d(' + b + 'px,0px,0px)',
                transition: this.speed() / 1e3 + 's' +
                    (this.settings.slideTransition ? ' ' +
                        this.settings.slideTransition : ''),
            })
            : c ? this.$stage.animate({ left: b + 'px' }, this.speed(),
                this.settings.fallbackEasing,
                a.proxy(this.onTransitionEnd, this)) : this.$stage.css(
                { left: b + 'px' });
    }, e.prototype.is = function (a) {
        return this._states.current[a] && this._states.current[a] > 0;
    }, e.prototype.current = function (a) {
        if (a === d) return this._current;
        if (0 === this._items.length) return d;
        if (a = this.normalize(a), this._current !== a) {
            var b = this.trigger('change',
                { property: { name: 'position', value: a } });
            b.data !== d &&
            (a = this.normalize(b.data)), this._current = a, this.invalidate(
                'position'), this.trigger('changed',
                { property: { name: 'position', value: this._current } });
        }
        return this._current;
    }, e.prototype.invalidate = function (b) {
        return 'string' === a.type(b) &&
        (this._invalidated[b] = !0, this.is('valid') &&
        this.leave('valid')), a.map(this._invalidated,
            function (a, b) {return b;});
    }, e.prototype.reset = function (a) {
        (a = this.normalize(a)) !== d &&
        (this._speed = 0, this._current = a, this.suppress(
            ['translate', 'translated']), this.animate(
            this.coordinates(a)), this.release(['translate', 'translated']));
    }, e.prototype.normalize = function (a, b) {
        var c = this._items.length, e = b ? 0 : this._clones.length;
        return !this.isNumeric(a) || c < 1 ? a = d : (a < 0 || a >= c + e) &&
            (a = ((a - e / 2) % c + c) % c + e / 2), a;
    }, e.prototype.relative = function (a) {
        return a -= this._clones.length / 2, this.normalize(a, !0);
    }, e.prototype.maximum = function (a) {
        var b, c, d, e = this.settings, f = this._coordinates.length;
        if (e.loop) f = this._clones.length / 2 + this._items.length -
            1; else if (e.autoWidth || e.merge) {
            if (b = this._items.length) for (c = this._items[--b].width(), d = this.$element.width(); b-- &&
            !((c += this._items[b].width() + this.settings.margin) > d);) ;
            f = b + 1;
        } else f = e.center ? this._items.length - 1 : this._items.length -
            e.items;
        return a && (f -= this._clones.length / 2), Math.max(f, 0);
    }, e.prototype.minimum = function (a) {
        return a ? 0 : this._clones.length / 2;
    }, e.prototype.items = function (a) {
        return a === d
            ? this._items.slice()
            : (a = this.normalize(a, !0), this._items[a]);
    }, e.prototype.mergers = function (a) {
        return a === d
            ? this._mergers.slice()
            : (a = this.normalize(a, !0), this._mergers[a]);
    }, e.prototype.clones = function (b) {
        var c = this._clones.length / 2, e = c + this._items.length,
            f = function (a) {return a % 2 == 0 ? e + a / 2 : c - (a + 1) / 2;};
        return b === d
            ? a.map(this._clones, function (a, b) {return f(b);})
            : a.map(this._clones,
                function (a, c) {return a === b ? f(c) : null;});
    }, e.prototype.speed = function (a) {
        return a !== d && (this._speed = a), this._speed;
    }, e.prototype.coordinates = function (b) {
        var c, e = 1, f = b - 1;
        return b === d
            ? a.map(this._coordinates,
                a.proxy(function (a, b) {return this.coordinates(b);}, this))
            : (this.settings.center
                ? (this.settings.rtl && (e = -1, f = b +
                    1), c = this._coordinates[b], c += (this.width() - c +
                    (this._coordinates[f] || 0)) / 2 * e)
                : c = this._coordinates[f] || 0, c = Math.ceil(c));
    }, e.prototype.duration = function (a, b, c) {
        return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) *
            Math.abs(c || this.settings.smartSpeed);
    }, e.prototype.to = function (a, b) {
        var c = this.current(), d = null, e = a - this.relative(c),
            f = (e > 0) - (e < 0), g = this._items.length, h = this.minimum(),
            i = this.maximum();
        this.settings.loop
            ? (!this.settings.rewind && Math.abs(e) > g / 2 &&
            (e += -1 * f * g), a = c + e, (d = ((a - h) % g + g) % g + h) !== a &&
            d - e <= i && d - e > 0 && (c = d - e, a = d, this.reset(c)))
            : this.settings.rewind
            ? (i += 1, a = (a % i + i) % i)
            : a = Math.max(h, Math.min(i, a)), this.speed(
            this.duration(c, a, b)), this.current(a), this.isVisible() &&
        this.update();
    }, e.prototype.next = function (a) {
        a = a || !1, this.to(this.relative(this.current()) + 1, a);
    }, e.prototype.prev = function (a) {
        a = a || !1, this.to(this.relative(this.current()) - 1, a);
    }, e.prototype.onTransitionEnd = function (a) {
        if (a !== d && (a.stopPropagation(), (a.target || a.srcElement ||
            a.originalTarget) !== this.$stage.get(0))) return !1;
        this.leave('animating'), this.trigger('translated');
    }, e.prototype.viewport = function () {
        var d;
        return this.options.responsiveBaseElement !== b ? d = a(
            this.options.responsiveBaseElement).width() : b.innerWidth
            ? d = b.innerWidth
            : c.documentElement && c.documentElement.clientWidth
                ? d = c.documentElement.clientWidth
                : console.warn('Can not detect viewport width.'), d;
    }, e.prototype.replace = function (b) {
        this.$stage.empty(), this._items = [], b &&
        (b = b instanceof jQuery ? b : a(
            b)), this.settings.nestedItemSelector &&
        (b = b.find('.' + this.settings.nestedItemSelector)), b.filter(
            function () {return 1 === this.nodeType;}).
            each(a.proxy(function (a, b) {
                b = this.prepare(b), this.$stage.append(b), this._items.push(
                    b), this._mergers.push(1 * b.find('[data-merge]').
                    addBack('[data-merge]').
                    attr('data-merge') || 1);
            }, this)), this.reset(this.isNumeric(this.settings.startPosition)
            ? this.settings.startPosition
            : 0), this.invalidate('items');
    }, e.prototype.add = function (b, c) {
        var e = this.relative(this._current);
        c = c === d ? this._items.length : this.normalize(c,
            !0), b = b instanceof jQuery ? b : a(b), this.trigger('add',
            { content: b, position: c }), b = this.prepare(b), 0 ===
        this._items.length || c === this._items.length ? (0 ===
        this._items.length && this.$stage.append(b), 0 !== this._items.length &&
        this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 *
            b.find('[data-merge]').addBack('[data-merge]').attr('data-merge') ||
            1)) : (this._items[c].before(b), this._items.splice(c, 0,
            b), this._mergers.splice(c, 0, 1 *
            b.find('[data-merge]').addBack('[data-merge]').attr('data-merge') ||
            1)), this._items[e] &&
        this.reset(this._items[e].index()), this.invalidate(
            'items'), this.trigger('added', { content: b, position: c });
    }, e.prototype.remove = function (a) {
        (a = this.normalize(a, !0)) !== d && (this.trigger('remove', {
            content: this._items[a],
            position: a,
        }), this._items[a].remove(), this._items.splice(a,
            1), this._mergers.splice(a, 1), this.invalidate(
            'items'), this.trigger('removed', { content: null, position: a }));
    }, e.prototype.preloadAutoWidthImages = function (b) {
        b.each(a.proxy(function (b, c) {
            this.enter('pre-loading'), c = a(c), a(new Image).
                one('load', a.proxy(function (a) {
                    c.attr('src', a.target.src), c.css('opacity',
                        1), this.leave('pre-loading'), !this.is(
                        'pre-loading') && !this.is('initializing') &&
                    this.refresh();
                }, this)).
                attr('src', c.attr('src') || c.attr('data-src') ||
                    c.attr('data-src-retina'));
        }, this));
    }, e.prototype.destroy = function () {
        this.$element.off('.owl.core'), this.$stage.off('.owl.core'), a(c).
            off('.owl.core'), !1 !== this.settings.responsive &&
        (b.clearTimeout(this.resizeTimer), this.off(b, 'resize',
            this._handlers.onThrottledResize));
        for (var d in this._plugins) this._plugins[d].destroy();
        this.$stage.children('.cloned').
            remove(), this.$stage.unwrap(), this.$stage.children().
            contents().
            unwrap(), this.$stage.children().
            unwrap(), this.$stage.remove(), this.$element.removeClass(
            this.options.refreshClass).
            removeClass(this.options.loadingClass).
            removeClass(this.options.loadedClass).
            removeClass(this.options.rtlClass).
            removeClass(this.options.dragClass).
            removeClass(this.options.grabClass).
            attr('class', this.$element.attr('class').
                replace(
                    new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'),
                    '')).
            removeData('owl.carousel');
    }, e.prototype.op = function (a, b, c) {
        var d = this.settings.rtl;
        switch (b) {
            case'<':
                return d ? a > c : a < c;
            case'>':
                return d ? a < c : a > c;
            case'>=':
                return d ? a <= c : a >= c;
            case'<=':
                return d ? a >= c : a <= c;
        }
    }, e.prototype.on = function (a, b, c, d) {
        a.addEventListener
            ? a.addEventListener(b, c, d)
            : a.attachEvent && a.attachEvent('on' + b, c);
    }, e.prototype.off = function (a, b, c, d) {
        a.removeEventListener
            ? a.removeEventListener(b, c, d)
            : a.detachEvent && a.detachEvent('on' + b, c);
    }, e.prototype.trigger = function (
        b, c, d, f, g) {
        var h = {
                item: {
                    count: this._items.length,
                    index: this.current(),
                },
            }, i = a.camelCase(a.grep(['on', b, d], function (a) {return a;}).
                join('-').
                toLowerCase()),
            j = a.Event([b, 'owl', d || 'carousel'].join('.').toLowerCase(),
                a.extend({ relatedTarget: this }, h, c));
        return this._supress[b] || (a.each(this._plugins,
            function (a, b) {b.onTrigger && b.onTrigger(j);}), this.register(
            { type: e.Type.Event, name: b }), this.$element.trigger(
            j), this.settings && 'function' == typeof this.settings[i] &&
        this.settings[i].call(this, j)), j;
    }, e.prototype.enter = function (b) {
        a.each([b].concat(this._states.tags[b] || []), a.proxy(function (a, b) {
            this._states.current[b] === d &&
            (this._states.current[b] = 0), this._states.current[b]++;
        }, this));
    }, e.prototype.leave = function (b) {
        a.each([b].concat(this._states.tags[b] || []),
            a.proxy(function (a, b) {this._states.current[b]--;}, this));
    }, e.prototype.register = function (b) {
        if (b.type === e.Type.Event) {
            if (a.event.special[b.name] ||
            (a.event.special[b.name] = {}), !a.event.special[b.name].owl) {
                var c = a.event.special[b.name]._default;
                a.event.special[b.name]._default = function (a) {
                    return !c || !c.apply || a.namespace && -1 !==
                    a.namespace.indexOf('owl')
                        ? a.namespace && a.namespace.indexOf('owl') > -1
                        : c.apply(this, arguments);
                }, a.event.special[b.name].owl = !0;
            }
        } else b.type === e.Type.State && (this._states.tags[b.name]
            ? this._states.tags[b.name] = this._states.tags[b.name].concat(
                b.tags)
            : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(
            this._states.tags[b.name], a.proxy(function (c, d) {
                return a.inArray(c, this._states.tags[b.name]) === d;
            }, this)));
    }, e.prototype.suppress = function (b) {
        a.each(b, a.proxy(function (a, b) {this._supress[b] = !0;}, this));
    }, e.prototype.release = function (b) {
        a.each(b, a.proxy(function (a, b) {delete this._supress[b];}, this));
    }, e.prototype.pointer = function (a) {
        var c = { x: null, y: null };
        return a = a.originalEvent || a || b.event, a = a.touches &&
        a.touches.length ? a.touches[0] : a.changedTouches &&
        a.changedTouches.length ? a.changedTouches[0] : a, a.pageX
            ? (c.x = a.pageX, c.y = a.pageY)
            : (c.x = a.clientX, c.y = a.clientY), c;
    }, e.prototype.isNumeric = function (a) {
        return !isNaN(parseFloat(a));
    }, e.prototype.difference = function (a, b) {
        return {
            x: a.x - b.x,
            y: a.y - b.y,
        };
    }, a.fn.owlCarousel = function (b) {
        var c = Array.prototype.slice.call(arguments, 1);
        return this.each(function () {
            var d = a(this), f = d.data('owl.carousel');
            f || (f = new e(this, 'object' == typeof b && b), d.data(
                'owl.carousel', f), a.each([
                'next',
                'prev',
                'to',
                'destroy',
                'refresh',
                'replace',
                'add',
                'remove'], function (b, c) {
                f.register({ type: e.Type.Event, name: c }), f.$element.on(
                    c + '.owl.carousel.core', a.proxy(function (a) {
                        a.namespace && a.relatedTarget !== this &&
                        (this.suppress([c]), f[c].apply(this,
                            [].slice.call(arguments, 1)), this.release([c]));
                    }, f));
            })), 'string' == typeof b && '_' !== b.charAt(0) &&
            f[b].apply(f, c);
        });
    }, a.fn.owlCarousel.Constructor = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (b) {
        this._core = b, this._interval = null, this._visible = null, this._handlers = {
            'initialized.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.autoRefresh && this.watch();
            }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this._core.$element.on(this._handlers);
    };
    e.Defaults = {
        autoRefresh: !0,
        autoRefreshInterval: 500,
    }, e.prototype.watch = function () {
        this._interval ||
        (this._visible = this._core.isVisible(), this._interval = b.setInterval(
            a.proxy(this.refresh, this),
            this._core.settings.autoRefreshInterval));
    }, e.prototype.refresh = function () {
        this._core.isVisible() !== this._visible &&
        (this._visible = !this._visible, this._core.$element.toggleClass(
            'owl-hidden', !this._visible), this._visible &&
        this._core.invalidate('width') && this._core.refresh());
    }, e.prototype.destroy = function () {
        var a, c;
        b.clearInterval(this._interval);
        for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
        for (c in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[c] && (this[c] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (b) {
        this._core = b, this._loaded = [], this._handlers = {
            'initialized.owl.carousel change.owl.carousel resized.owl.carousel': a.proxy(
                function (b) {
                    if (b.namespace && this._core.settings &&
                        this._core.settings.lazyLoad &&
                        (b.property && 'position' == b.property.name ||
                            'initialized' == b.type)) {
                        var c = this._core.settings,
                            e = c.center && Math.ceil(c.items / 2) || c.items,
                            f = c.center && -1 * e || 0,
                            g = (b.property && b.property.value !== d
                                ? b.property.value
                                : this._core.current()) + f,
                            h = this._core.clones().length,
                            i = a.proxy(function (a, b) {this.load(b);}, this);
                        for (c.lazyLoadEager > 0 &&
                             (e += c.lazyLoadEager, c.loop &&
                             (g -= c.lazyLoadEager, e++)); f++ < e;) this.load(
                            h / 2 + this._core.relative(g)), h &&
                        a.each(this._core.clones(this._core.relative(g)),
                            i), g++;
                    }
                }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this._core.$element.on(this._handlers);
    };
    e.Defaults = {
        lazyLoad: !1,
        lazyLoadEager: 0,
    }, e.prototype.load = function (c) {
        var d = this._core.$stage.children().
            eq(c), e = d && d.find('.owl-lazy');
        !e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(
            function (c, d) {
                var e, f = a(d),
                    g = b.devicePixelRatio > 1 && f.attr('data-src-retina') ||
                        f.attr('data-src') || f.attr('data-srcset');
                this._core.trigger('load', { element: f, url: g },
                    'lazy'), f.is('img') ? f.one('load.owl.lazy', a.proxy(
                    function () {
                        f.css('opacity', 1), this._core.trigger('loaded',
                            { element: f, url: g }, 'lazy');
                    }, this)).attr('src', g) : f.is('source')
                    ? f.one('load.owl.lazy', a.proxy(function () {
                        this._core.trigger('loaded', { element: f, url: g },
                            'lazy');
                    }, this)).attr('srcset', g)
                    : (e = new Image, e.onload = a.proxy(function () {
                        f.css({
                            'background-image': 'url("' + g + '")',
                            opacity: '1',
                        }), this._core.trigger('loaded', { element: f, url: g },
                            'lazy');
                    }, this), e.src = g);
            }, this)), this._loaded.push(d.get(0)));
    }, e.prototype.destroy = function () {
        var a, b;
        for (a in this.handlers) this._core.$element.off(a, this.handlers[a]);
        for (b in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[b] && (this[b] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (c) {
        this._core = c, this._previousHeight = null, this._handlers = {
            'initialized.owl.carousel refreshed.owl.carousel': a.proxy(
                function (a) {
                    a.namespace && this._core.settings.autoHeight &&
                    this.update();
                }, this),
            'changed.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.autoHeight && 'position' ===
                a.property.name && this.update();
            }, this),
            'loaded.owl.lazy': a.proxy(function (a) {
                a.namespace && this._core.settings.autoHeight &&
                a.element.closest('.' + this._core.settings.itemClass).
                    index() === this._core.current() && this.update();
            }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this._core.$element.on(
            this._handlers), this._intervalId = null;
        var d = this;
        a(b).
            on('load',
                function () {d._core.settings.autoHeight && d.update();}), a(b).
            resize(function () {
                d._core.settings.autoHeight && (null != d._intervalId &&
                clearTimeout(d._intervalId), d._intervalId = setTimeout(
                    function () {d.update();}, 250));
            });
    };
    e.Defaults = {
        autoHeight: !1,
        autoHeightClass: 'owl-height',
    }, e.prototype.update = function () {
        var b = this._core._current, c = b + this._core.settings.items,
            d = this._core.settings.lazyLoad,
            e = this._core.$stage.children().toArray().slice(b, c), f = [],
            g = 0;
        a.each(e, function (b, c) {f.push(a(c).height());}), g = Math.max.apply(
            null, f), g <= 1 && d && this._previousHeight &&
        (g = this._previousHeight), this._previousHeight = g, this._core.$stage.parent().
            height(g).
            addClass(this._core.settings.autoHeightClass);
    }, e.prototype.destroy = function () {
        var a, b;
        for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
        for (b in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[b] && (this[b] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (b) {
        this._core = b, this._videos = {}, this._playing = null, this._handlers = {
            'initialized.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.register(
                    { type: 'state', name: 'playing', tags: ['interacting'] });
            }, this),
            'resize.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.video &&
                this.isInFullScreen() && a.preventDefault();
            }, this),
            'refreshed.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.is('resizing') &&
                this._core.$stage.find('.cloned .owl-video-frame').remove();
            }, this),
            'changed.owl.carousel': a.proxy(function (a) {
                a.namespace && 'position' === a.property.name &&
                this._playing && this.stop();
            }, this),
            'prepared.owl.carousel': a.proxy(function (b) {
                if (b.namespace) {
                    var c = a(b.content).
                        find('.owl-video');
                    c.length &&
                    (c.css('display', 'none'), this.fetch(c, a(b.content)));
                }
            }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this._core.$element.on(
            this._handlers), this._core.$element.on('click.owl.video',
            '.owl-video-play-icon',
            a.proxy(function (a) {this.play(a);}, this));
    };
    e.Defaults = {
        video: !1,
        videoHeight: !1,
        videoWidth: !1,
    }, e.prototype.fetch = function (a, b) {
        var c = function () {
                return a.attr('data-vimeo-id') ? 'vimeo' : a.attr('data-vzaar-id')
                    ? 'vzaar'
                    : 'youtube';
            }(), d = a.attr('data-vimeo-id') || a.attr('data-youtube-id') ||
            a.attr('data-vzaar-id'),
            e = a.attr('data-width') || this._core.settings.videoWidth,
            f = a.attr('data-height') || this._core.settings.videoHeight,
            g = a.attr('href');
        if (!g) throw new Error('Missing video URL.');
        if (d = g.match(
            /(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf(
            'youtu') > -1) c = 'youtube'; else if (d[3].indexOf('vimeo') >
            -1) c = 'vimeo'; else {
            if (!(d[3].indexOf('vzaar') > -1)) throw new Error(
                'Video URL not supported.');
            c = 'vzaar';
        }
        d = d[6], this._videos[g] = {
            type: c,
            id: d,
            width: e,
            height: f,
        }, b.attr('data-video', g), this.thumbnail(a, this._videos[g]);
    }, e.prototype.thumbnail = function (b, c) {
        var d, e, f,
            g = c.width && c.height ? 'width:' + c.width + 'px;height:' +
                c.height + 'px;' : '', h = b.find('img'), i = 'src', j = '',
            k = this._core.settings, l = function (c) {
                e = '<div class="owl-video-play-icon"></div>', d = k.lazyLoad
                    ? a('<div/>', { class: 'owl-video-tn ' + j, srcType: c })
                    : a('<div/>', {
                        class: 'owl-video-tn',
                        style: 'opacity:1;background-image:url(' + c + ')',
                    }), b.after(d), b.after(e);
            };
        if (b.wrap(a('<div/>', {
            class: 'owl-video-wrapper',
            style: g,
        })), this._core.settings.lazyLoad &&
        (i = 'data-src', j = 'owl-lazy'), h.length) return l(
            h.attr(i)), h.remove(), !1;
        'youtube' === c.type ? (f = '//img.youtube.com/vi/' + c.id +
            '/hqdefault.jpg', l(f)) : 'vimeo' === c.type ? a.ajax({
            type: 'GET',
            url: '//vimeo.com/api/v2/video/' + c.id + '.json',
            jsonp: 'callback',
            dataType: 'jsonp',
            success: function (a) {f = a[0].thumbnail_large, l(f);},
        }) : 'vzaar' === c.type && a.ajax({
            type: 'GET',
            url: '//vzaar.com/api/videos/' + c.id + '.json',
            jsonp: 'callback',
            dataType: 'jsonp',
            success: function (a) {f = a.framegrab_url, l(f);},
        });
    }, e.prototype.stop = function () {
        this._core.trigger('stop', null, 'video'), this._playing.find(
            '.owl-video-frame').
            remove(), this._playing.removeClass(
            'owl-video-playing'), this._playing = null, this._core.leave(
            'playing'), this._core.trigger('stopped', null, 'video');
    }, e.prototype.play = function (b) {
        var c, d = a(b.target),
            e = d.closest('.' + this._core.settings.itemClass),
            f = this._videos[e.attr('data-video')], g = f.width || '100%',
            h = f.height || this._core.$stage.height();
        this._playing ||
        (this._core.enter('playing'), this._core.trigger('play', null,
            'video'), e = this._core.items(
            this._core.relative(e.index())), this._core.reset(e.index()), c = a(
            '<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'), c.attr(
            'height', h), c.attr('width', g), 'youtube' === f.type
            ? c.attr('src',
                '//www.youtube.com/embed/' + f.id + '?autoplay=1&rel=0&v=' +
                f.id)
            : 'vimeo' === f.type
                ? c.attr('src',
                    '//player.vimeo.com/video/' + f.id + '?autoplay=1')
                : 'vzaar' === f.type && c.attr('src',
                '//view.vzaar.com/' + f.id + '/player?autoplay=true'), a(c).
            wrap('<div class="owl-video-frame" />').
            insertAfter(e.find('.owl-video')), this._playing = e.addClass(
            'owl-video-playing'));
    }, e.prototype.isInFullScreen = function () {
        var b = c.fullscreenElement || c.mozFullScreenElement ||
            c.webkitFullscreenElement;
        return b && a(b).parent().hasClass('owl-video-frame');
    }, e.prototype.destroy = function () {
        var a, b;
        this._core.$element.off('click.owl.video');
        for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
        for (b in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[b] && (this[b] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Video = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (b) {
        this.core = b, this.core.options = a.extend({}, e.Defaults,
            this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = {
            'change.owl.carousel': a.proxy(function (a) {
                a.namespace && 'position' == a.property.name &&
                (this.previous = this.core.current(), this.next = a.property.value);
            }, this),
            'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': a.proxy(
                function (a) {
                    a.namespace && (this.swapping = 'translated' == a.type);
                }, this),
            'translate.owl.carousel': a.proxy(function (a) {
                a.namespace && this.swapping &&
                (this.core.options.animateOut || this.core.options.animateIn) &&
                this.swap();
            }, this),
        }, this.core.$element.on(this.handlers);
    };
    e.Defaults = {
        animateOut: !1,
        animateIn: !1,
    }, e.prototype.swap = function () {
        if (1 === this.core.settings.items && a.support.animation &&
            a.support.transition) {
            this.core.speed(0);
            var b, c = a.proxy(this.clear, this),
                d = this.core.$stage.children().eq(this.previous),
                e = this.core.$stage.children().eq(this.next),
                f = this.core.settings.animateIn,
                g = this.core.settings.animateOut;
            this.core.current() !== this.previous && (g &&
            (b = this.core.coordinates(this.previous) -
                this.core.coordinates(this.next), d.one(a.support.animation.end,
                c).
                css({ left: b + 'px' }).
                addClass('animated owl-animated-out').
                addClass(g)), f && e.one(a.support.animation.end, c).
                addClass('animated owl-animated-in').
                addClass(f));
        }
    }, e.prototype.clear = function (b) {
        a(b.target).
            css({ left: '' }).
            removeClass('animated owl-animated-out owl-animated-in').
            removeClass(this.core.settings.animateIn).
            removeClass(
                this.core.settings.animateOut), this.core.onTransitionEnd();
    }, e.prototype.destroy = function () {
        var a, b;
        for (a in this.handlers) this.core.$element.off(a, this.handlers[a]);
        for (b in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[b] && (this[b] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Animate = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    var e = function (b) {
        this._core = b, this._call = null, this._time = 0, this._timeout = 0, this._paused = !0, this._handlers = {
            'changed.owl.carousel': a.proxy(function (a) {
                a.namespace && 'settings' === a.property.name
                    ? this._core.settings.autoplay
                    ? this.play()
                    : this.stop()
                    : a.namespace && 'position' === a.property.name &&
                    this._paused && (this._time = 0);
            }, this),
            'initialized.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.autoplay && this.play();
            }, this),
            'play.owl.autoplay': a.proxy(
                function (a, b, c) {a.namespace && this.play(b, c);}, this),
            'stop.owl.autoplay': a.proxy(
                function (a) {a.namespace && this.stop();}, this),
            'mouseover.owl.autoplay': a.proxy(function () {
                this._core.settings.autoplayHoverPause &&
                this._core.is('rotating') && this.pause();
            }, this),
            'mouseleave.owl.autoplay': a.proxy(function () {
                this._core.settings.autoplayHoverPause &&
                this._core.is('rotating') && this.play();
            }, this),
            'touchstart.owl.core': a.proxy(function () {
                this._core.settings.autoplayHoverPause &&
                this._core.is('rotating') && this.pause();
            }, this),
            'touchend.owl.core': a.proxy(function () {
                this._core.settings.autoplayHoverPause && this.play();
            }, this),
        }, this._core.$element.on(
            this._handlers), this._core.options = a.extend({}, e.Defaults,
            this._core.options);
    };
    e.Defaults = {
        autoplay: !1,
        autoplayTimeout: 5e3,
        autoplayHoverPause: !1,
        autoplaySpeed: !1,
    }, e.prototype._next = function (d) {
        this._call = b.setTimeout(a.proxy(this._next, this, d),
            this._timeout * (Math.round(this.read() / this._timeout) + 1) -
            this.read()), this._core.is('interacting') || c.hidden ||
        this._core.next(d || this._core.settings.autoplaySpeed);
    }, e.prototype.read = function () {
        return (new Date).getTime() - this._time;
    }, e.prototype.play = function (c, d) {
        var e;
        this._core.is('rotating') || this._core.enter('rotating'), c = c ||
            this._core.settings.autoplayTimeout, e = Math.min(
            this._time % (this._timeout || c), c), this._paused
            ? (this._time = this.read(), this._paused = !1)
            : b.clearTimeout(this._call), this._time += this.read() % c -
            e, this._timeout = c, this._call = b.setTimeout(
            a.proxy(this._next, this, d), c - e);
    }, e.prototype.stop = function () {
        this._core.is('rotating') &&
        (this._time = 0, this._paused = !0, b.clearTimeout(
            this._call), this._core.leave('rotating'));
    }, e.prototype.pause = function () {
        this._core.is('rotating') && !this._paused &&
        (this._time = this.read(), this._paused = !0, b.clearTimeout(
            this._call));
    }, e.prototype.destroy = function () {
        var a, b;
        this.stop();
        for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
        for (b in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[b] && (this[b] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.autoplay = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    'use strict';
    var e = function (b) {
        this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = {
            next: this._core.next,
            prev: this._core.prev,
            to: this._core.to,
        }, this._handlers = {
            'prepared.owl.carousel': a.proxy(function (b) {
                b.namespace && this._core.settings.dotsData &&
                this._templates.push(
                    '<div class="' + this._core.settings.dotClass + '">' +
                    a(b.content).
                        find('[data-dot]').
                        addBack('[data-dot]').
                        attr('data-dot') + '</div>');
            }, this),
            'added.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.dotsData &&
                this._templates.splice(a.position, 0, this._templates.pop());
            }, this),
            'remove.owl.carousel': a.proxy(function (a) {
                a.namespace && this._core.settings.dotsData &&
                this._templates.splice(a.position, 1);
            }, this),
            'changed.owl.carousel': a.proxy(function (a) {
                a.namespace && 'position' == a.property.name && this.draw();
            }, this),
            'initialized.owl.carousel': a.proxy(function (a) {
                a.namespace && !this._initialized &&
                (this._core.trigger('initialize', null,
                    'navigation'), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger(
                    'initialized', null, 'navigation'));
            }, this),
            'refreshed.owl.carousel': a.proxy(function (a) {
                a.namespace && this._initialized &&
                (this._core.trigger('refresh', null,
                    'navigation'), this.update(), this.draw(), this._core.trigger(
                    'refreshed', null, 'navigation'));
            }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this.$element.on(this._handlers);
    };
    e.Defaults = {
        nav: !1,
        navText: [
            '<span aria-label="Previous">&#x2039;</span>',
            '<span aria-label="Next">&#x203a;</span>'],
        navSpeed: !1,
        navElement: 'button type="button" role="presentation"',
        navContainer: !1,
        navContainerClass: 'owl-nav',
        navClass: ['owl-prev', 'owl-next'],
        slideBy: 1,
        dotClass: 'owl-dot',
        dotsClass: 'owl-dots',
        dots: !0,
        dotsEach: !1,
        dotsData: !1,
        dotsSpeed: !1,
        dotsContainer: !1,
    }, e.prototype.initialize = function () {
        var b, c = this._core.settings;
        this._controls.$relative = (c.navContainer ? a(c.navContainer) : a(
            '<div>').
            addClass(c.navContainerClass).
            appendTo(this.$element)).addClass(
            'disabled'), this._controls.$previous = a('<' + c.navElement + '>').
            addClass(c.navClass[0]).
            html(c.navText[0]).
            prependTo(this._controls.$relative).
            on('click', a.proxy(function (a) {this.prev(c.navSpeed);},
                this)), this._controls.$next = a('<' + c.navElement + '>').
            addClass(c.navClass[1]).
            html(c.navText[1]).
            appendTo(this._controls.$relative).
            on('click', a.proxy(function (a) {this.next(c.navSpeed);},
                this)), c.dotsData || (this._templates = [
            a('<button role="button">').
                addClass(c.dotClass).
                append(a('<span>')).
                prop('outerHTML')]), this._controls.$absolute = (c.dotsContainer
            ? a(c.dotsContainer)
            : a('<div>').
                addClass(c.dotsClass).
                appendTo(this.$element)).addClass(
            'disabled'), this._controls.$absolute.on('click', 'button', a.proxy(
            function (b) {
                var d = a(b.target).
                    parent().
                    is(this._controls.$absolute) ? a(b.target).index() : a(
                    b.target).parent().index();
                b.preventDefault(), this.to(d, c.dotsSpeed);
            }, this));
        for (b in this._overrides) this._core[b] = a.proxy(this[b], this);
    }, e.prototype.destroy = function () {
        var a, b, c, d, e;
        e = this._core.settings;
        for (a in this._handlers) this.$element.off(a, this._handlers[a]);
        for (b in this._controls) '$relative' === b && e.navContainer
            ? this._controls[b].html('')
            : this._controls[b].remove();
        for (d in this.overides) this._core[d] = this._overrides[d];
        for (c in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[c] && (this[c] = null);
    }, e.prototype.update = function () {
        var a, b, c, d = this._core.clones().length / 2,
            e = d + this._core.items().length, f = this._core.maximum(!0),
            g = this._core.settings,
            h = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach ||
                g.items;
        if ('page' !== g.slideBy &&
        (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || 'page' ==
        g.slideBy) for (this._pages = [], a = d, b = 0, c = 0; a < e; a++) {
            if (b >= h || 0 === b) {
                if (this._pages.push({
                    start: Math.min(f, a - d),
                    end: a - d + h - 1,
                }), Math.min(f, a - d) === f) break;
                b = 0, ++c;
            }
            b += this._core.mergers(this._core.relative(a));
        }
    }, e.prototype.draw = function () {
        var b, c = this._core.settings,
            d = this._core.items().length <= c.items,
            e = this._core.relative(this._core.current()),
            f = c.loop || c.rewind;
        this._controls.$relative.toggleClass('disabled', !c.nav || d), c.nav &&
        (this._controls.$previous.toggleClass('disabled', !f && e <=
            this._core.minimum(!0)), this._controls.$next.toggleClass(
            'disabled', !f && e >=
            this._core.maximum(!0))), this._controls.$absolute.toggleClass(
            'disabled', !c.dots || d), c.dots && (b = this._pages.length -
            this._controls.$absolute.children().length, c.dotsData && 0 !== b
            ? this._controls.$absolute.html(this._templates.join(''))
            : b > 0 ? this._controls.$absolute.append(
                new Array(b + 1).join(this._templates[0])) : b < 0 &&
                this._controls.$absolute.children().
                    slice(b).
                    remove(), this._controls.$absolute.find('.active').
            removeClass('active'), this._controls.$absolute.children().
            eq(a.inArray(this.current(), this._pages)).
            addClass('active'));
    }, e.prototype.onTrigger = function (b) {
        var c = this._core.settings;
        b.page = {
            index: a.inArray(this.current(), this._pages),
            count: this._pages.length,
            size: c &&
                (c.center || c.autoWidth || c.dotsData ? 1 : c.dotsEach ||
                    c.items),
        };
    }, e.prototype.current = function () {
        var b = this._core.relative(this._core.current());
        return a.grep(this._pages,
            a.proxy(function (a, c) {return a.start <= b && a.end >= b;},
                this)).
            pop();
    }, e.prototype.getPosition = function (b) {
        var c, d, e = this._core.settings;
        return 'page' == e.slideBy
            ? (c = a.inArray(this.current(),
                this._pages), d = this._pages.length, b
                ? ++c
                : --c, c = this._pages[(c % d + d) % d].start)
            : (c = this._core.relative(
                this._core.current()), d = this._core.items().length, b
                ? c += e.slideBy
                : c -= e.slideBy), c;
    }, e.prototype.next = function (b) {
        a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b);
    }, e.prototype.prev = function (b) {
        a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b);
    }, e.prototype.to = function (b, c, d) {
        var e;
        !d && this._pages.length ? (e = this._pages.length, a.proxy(
            this._overrides.to, this._core)(this._pages[(b % e + e) % e].start,
            c)) : a.proxy(this._overrides.to, this._core)(b, c);
    }, a.fn.owlCarousel.Constructor.Plugins.Navigation = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    'use strict';
    var e = function (c) {
        this._core = c, this._hashes = {}, this.$element = this._core.$element, this._handlers = {
            'initialized.owl.carousel': a.proxy(function (c) {
                c.namespace && 'URLHash' ===
                this._core.settings.startPosition &&
                a(b).trigger('hashchange.owl.navigation');
            }, this),
            'prepared.owl.carousel': a.proxy(function (b) {
                if (b.namespace) {
                    var c = a(b.content).
                        find('[data-hash]').
                        addBack('[data-hash]').
                        attr('data-hash');
                    if (!c) return;
                    this._hashes[c] = b.content;
                }
            }, this),
            'changed.owl.carousel': a.proxy(function (c) {
                if (c.namespace && 'position' === c.property.name) {
                    var d = this._core.items(
                        this._core.relative(this._core.current())),
                        e = a.map(this._hashes,
                            function (a, b) {return a === d ? b : null;}).
                            join();
                    if (!e || b.location.hash.slice(1) === e) return;
                    b.location.hash = e;
                }
            }, this),
        }, this._core.options = a.extend({}, e.Defaults,
            this._core.options), this.$element.on(this._handlers), a(b).
            on('hashchange.owl.navigation', a.proxy(function (a) {
                var c = b.location.hash.substring(1),
                    e = this._core.$stage.children(),
                    f = this._hashes[c] && e.index(this._hashes[c]);
                f !== d && f !== this._core.current() &&
                this._core.to(this._core.relative(f), !1, !0);
            }, this));
    };
    e.Defaults = { URLhashListener: !1 }, e.prototype.destroy = function () {
        var c, d;
        a(b).off('hashchange.owl.navigation');
        for (c in this._handlers) this._core.$element.off(c, this._handlers[c]);
        for (d in Object.getOwnPropertyNames(this)) 'function' !=
        typeof this[d] && (this[d] = null);
    }, a.fn.owlCarousel.Constructor.Plugins.Hash = e;
}(window.Zepto || window.jQuery, window, document), function (a, b, c, d) {
    function e (b, c) {
        var e = !1, f = b.charAt(0).toUpperCase() + b.slice(1);
        return a.each((b + ' ' + h.join(f + ' ') + f).split(' '),
            function (a, b) {if (g[b] !== d) return e = !c || b, !1;}), e;
    }

    function f (a) {return e(a, !0);}

    var g = a('<support>').get(0).style, h = 'Webkit Moz O ms'.split(' '), i = {
        transition: {
            end: {
                WebkitTransition: 'webkitTransitionEnd',
                MozTransition: 'transitionend',
                OTransition: 'oTransitionEnd',
                transition: 'transitionend',
            },
        },
        animation: {
            end: {
                WebkitAnimation: 'webkitAnimationEnd',
                MozAnimation: 'animationend',
                OAnimation: 'oAnimationEnd',
                animation: 'animationend',
            },
        },
    }, j = {
        csstransforms: function () {return !!e('transform');},
        csstransforms3d: function () {return !!e('perspective');},
        csstransitions: function () {return !!e('transition');},
        cssanimations: function () {return !!e('animation');},
    };
    j.csstransitions() && (a.support.transition = new String(
        f('transition')), a.support.transition.end = i.transition.end[a.support.transition]), j.cssanimations() &&
    (a.support.animation = new String(
        f('animation')), a.support.animation.end = i.animation.end[a.support.animation]), j.csstransforms() &&
    (a.support.transform = new String(
        f('transform')), a.support.transform3d = j.csstransforms3d());
}(window.Zepto || window.jQuery, window, document);

window.SEMICOLON_carouselInit = function ($carouselEl) {

    $carouselEl = $carouselEl.filter(':not(.customjs)');

    if ($carouselEl.length < 1) {
        return true;
    }

    $carouselEl.each(function () {
        let element = $(this),
            elItems = element.attr('data-items') || 4,
            elItemsXl = element.attr('data-items-xl') || Number(elItems),
            elItemsLg = element.attr('data-items-lg') || Number(elItemsXl),
            elItemsMd = element.attr('data-items-md') || Number(elItemsLg),
            elItemsSm = element.attr('data-items-sm') || Number(elItemsMd),
            elItemsXs = element.attr('data-items-xs') || Number(elItemsSm),
            elLoop = element.attr('data-loop'),
            elAutoPlay = element.attr('data-autoplay'),
            elSpeed = element.attr('data-speed') || 250,
            elAnimateIn = element.attr('data-animate-in'),
            elAnimateOut = element.attr('data-animate-out'),
            elNav = element.attr('data-nav'),
            elNavPrev = element.attr('data-nav-prev') ||
                '<i class="icon-angle-left"></i>',
            elNavNext = element.attr('data-nav-next') ||
                '<i class="icon-angle-right"></i>',
            elPagi = element.attr('data-pagi'),
            elMargin = element.attr('data-margin') || 20,
            elStage = element.attr('data-stage-padding') || 0,
            elMerge = element.attr('data-merge'),
            elStart = element.attr('data-start') || 0,
            elRewind = element.attr('data-rewind'),
            elSlideBy = element.attr('data-slideby') || 1,
            elCenter = element.attr('data-center'),
            elLazy = element.attr('data-lazyload'),
            elVideo = element.attr('data-video'),
            elRTL = element.attr('data-rtl'),
            elAutoPlayTime = 5000,
            elAutoPlayHoverP = true;

        if (elSlideBy == 'page') {
            elSlideBy = 'page';
        } else {
            elSlideBy = Number(elSlideBy);
        }

        if (elLoop == 'true') { elLoop = true; } else { elLoop = false; }
        if (!elAutoPlay) {
            elAutoPlay = false;
            elAutoPlayHoverP = false;
        } else {
            elAutoPlayTime = Number(elAutoPlay);
            elAutoPlay = true;
        }
        if (!elAnimateIn) { elAnimateIn = false; }
        if (!elAnimateOut) { elAnimateOut = false; }
        if (elNav == 'false') { elNav = false; } else { elNav = true; }
        if (elPagi == 'false') { elPagi = false; } else { elPagi = true; }
        if (elRewind == 'true') { elRewind = true; } else { elRewind = false; }
        if (elMerge == 'true') { elMerge = true; } else { elMerge = false; }
        if (elCenter == 'true') { elCenter = true; } else { elCenter = false; }
        if (elLazy == 'true') { elLazy = true; } else { elLazy = false; }
        if (elVideo == 'true') { elVideo = true; } else { elVideo = false; }
        if (elRTL == 'true' ||
            $('body').hasClass('rtl')) { elRTL = true; } else { elRTL = false; }

        let carousel = element.owlCarousel({
            margin: Number(elMargin),
            loop: elLoop,
            stagePadding: Number(elStage),
            merge: elMerge,
            startPosition: Number(elStart),
            rewind: elRewind,
            slideBy: elSlideBy,
            center: elCenter,
            lazyLoad: elLazy,
            nav: elNav,
            navText: [elNavPrev, elNavNext],
            autoplay: elAutoPlay,
            autoplayTimeout: elAutoPlayTime,
            autoplayHoverPause: elAutoPlayHoverP,
            dots: elPagi,
            smartSpeed: Number(elSpeed),
            fluidSpeed: Number(elSpeed),
            video: elVideo,
            animateIn: elAnimateIn,
            animateOut: elAnimateOut,
            rtl: elRTL,
            responsive: {
                0: { items: elItemsXs },
                576: { items: elItemsSm },
                768: { items: elItemsMd },
                992: { items: elItemsLg },
                1200: { items: elItemsXl },
            },
            onInitialized: function () {
                SEMICOLON.slider.sliderDimensions(
                    { 'parent': element.parents('.slider-element') });
                SEMICOLON.initialize.lightbox({ 'parent': element });
                SEMICOLON.widget.hoverAnimation({ 'parent': element });
                SEMICOLON.widget.loadFlexSlider({ 'parent': element });
                SEMICOLON.widget.counter({ 'parent': element });
                SEMICOLON.widget.progress({ 'parent': element });
                SEMICOLON.initialize.resizeVideos();
                if (element.find('.owl-dot').length > 0) {
                    element.addClass('with-carousel-dots');
                }
            },
        });

        $(window).on('lazyLoadLoaded', function () {
            if (element.find('.lazy').length ==
                element.find('.lazy.lazy-loaded').length) {
                lazyLoadInstance.update();
                setTimeout(function () {
                    carousel.trigger('refresh.owl.carousel');
                }, 500);
            }
        });

    });

};

/*! js-cookie v3.0.0 | MIT */
!function (e, t) {
    'object' == typeof exports && 'undefined' != typeof module
        ? module.exports = t()
        : 'function' == typeof define && define.amd ? define(t) : (e = e ||
        self, function () {
            var n = e.Cookies, r = e.Cookies = t();
            r.noConflict = function () {return e.Cookies = n, r;};
        }());
}(this, (function () {
    'use strict';

    function e (e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = arguments[t];
            for (var r in n) e[r] = n[r];
        }
        return e;
    }

    var t = {
        read: function (e) {
            return e.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
        },
        write: function (e) {
            return encodeURIComponent(e).
                replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
                    decodeURIComponent);
        },
    };
    return function n (r, o) {
        function i (t, n, i) {
            if ('undefined' != typeof document) {
                'number' == typeof (i = e({}, o, i)).expires &&
                (i.expires = new Date(
                    Date.now() + 864e5 * i.expires)), i.expires &&
                (i.expires = i.expires.toUTCString()), t = encodeURIComponent(
                    t).
                    replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).
                    replace(/[()]/g, escape), n = r.write(n, t);
                var c = '';
                for (var u in i) i[u] &&
                (c += '; ' + u, !0 !== i[u] && (c += '=' + i[u].split(';')[0]));
                return document.cookie = t + '=' + n + c;
            }
        }

        return Object.create({
            set: i,
            get: function (e) {
                if ('undefined' != typeof document &&
                    (!arguments.length || e)) {
                    for (var n = document.cookie
                        ? document.cookie.split('; ')
                        : [], o = {}, i = 0; i < n.length; i++) {
                        var c = n[i].split('='), u = c.slice(1).join('=');
                        '"' === u[0] && (u = u.slice(1, -1));
                        try {
                            var f = t.read(c[0]);
                            if (o[f] = r.read(u, f), e === f) break;
                        } catch (e) {}
                    }
                    return e ? o[e] : o;
                }
            },
            remove: function (t, n) {i(t, '', e({}, n, { expires: -1 }));},
            withAttributes: function (t) {
                return n(this.converter, e({}, this.attributes, t));
            },
            withConverter: function (t) {
                return n(e({}, this.converter, t), this.attributes);
            },
        }, {
            attributes: { value: Object.freeze(o) },
            converter: { value: Object.freeze(r) },
        });
    }(t, { path: '/' });
}));

window.SEMICOLON_cookieInit = function ($cookieEl) {

    $cookieEl = $cookieEl.filter(':not(.customjs)');

    if ($cookieEl.length < 1) {
        return true;
    }

    let $cookieBar = $('.gdpr-settings'),
        elSpeed = $cookieBar.attr('data-speed') || 300,
        elExpire = $cookieBar.attr('data-expire') || 30,
        elDelay = $cookieBar.attr('data-delay') || 1500,
        elPersist = $cookieBar.attr('data-persistent'),
        elDirection = 'bottom',
        elHeight = $cookieBar.outerHeight() + 100,
        elWidth = $cookieBar.outerWidth() + 100,
        elProp = {},
        elSize,
        elSettings = $('.gdpr-cookie-settings'),
        elSwitches = elSettings.find('[data-cookie-name]');

    if (elPersist == 'true') {
        Cookies.set('websiteUsesCookies', '');
    }

    if ($cookieBar.hasClass('gdpr-settings-sm') &&
        $cookieBar.hasClass('gdpr-settings-right')) {
        elDirection = 'right';
    } else if ($cookieBar.hasClass('gdpr-settings-sm')) {
        elDirection = 'left';
    }

    if (elDirection == 'left') {
        elSize = -elWidth;
        elProp = { 'left': elSize, 'right': 'auto' };
        elProp.marginLeft = '1rem';
    } else if (elDirection == 'right') {
        elSize = -elWidth;
        elProp = { 'right': elSize, 'left': 'auto' };
        elProp.marginRight = '1rem';
    } else {
        elSize = -elHeight;
        elProp[elDirection] = elSize;
    }

    $cookieBar.css(elProp);

    if (Cookies.get('websiteUsesCookies') != 'yesConfirmed') {
        elProp[elDirection] = 0;
        elProp.opacity = 1;
        setTimeout(function () {
            $cookieBar.css(elProp);
        }, Number(elDelay));
    }

    $('.gdpr-accept').off('click').on('click', function () {
        elProp[elDirection] = elSize;
        elProp.opacity = 0;
        $cookieBar.css(elProp);
        Cookies.set('websiteUsesCookies', 'yesConfirmed',
            { expires: Number(elExpire) });
        return false;
    });

    elSwitches.each(function () {
        let elSwitch = $(this),
            elCookie = elSwitch.attr('data-cookie-name'),
            getCookie = Cookies.get(elCookie);

        if (typeof getCookie !== 'undefined' && getCookie == '1') {
            elSwitch.prop('checked', true);
        } else {
            elSwitch.prop('checked', false);
        }
    });

    $('.gdpr-save-cookies').off('click').on('click', function () {
        elSwitches.each(function () {
            let elSwitch = $(this),
                elCookie = elSwitch.attr('data-cookie-name');

            if (elSwitch.prop('checked')) {
                Cookies.set(elCookie, '1', { expires: Number(elExpire) });
            } else {
                Cookies.remove(elCookie, '');
            }
        });

        if (elSettings.parents('.mfp-content').length > 0) {
            $.magnificPopup.close();
        }

        setTimeout(function () {
            window.location.reload();
        }, 500);

        return false;
    });

    $('.gdpr-container').each(function () {
        let element = $(this),
            elCookie = element.attr('data-cookie-name'),
            elContent = element.attr('data-cookie-content'),
            elContentAjax = element.attr('data-cookie-content-ajax'),
            getCookie = Cookies.get(elCookie);

        if (typeof getCookie !== 'undefined' && getCookie == '1') {
            element.addClass('gdpr-content-active');
            if (elContentAjax) {
                element.load(elContentAjax);
            } else {
                if (elContent) {
                    element.append(elContent);
                }
            }
            SEMICOLON.initialize.resizeVideos({ parent: element });
        } else {
            element.addClass('gdpr-content-blocked');
        }
    });

};

/** Abstract base class for collection plugins.
 Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
 Licensed under the MIT (https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt) license. */
(function () {
    var j = false;
    window.JQClass = function () {};
    JQClass.classes = {};
    JQClass.extend = function extender (f) {
        var g = this.prototype;
        j = true;
        var h = new this();
        j = false;
        for (var i in f) {
            h[i] = typeof f[i] == 'function' && typeof g[i] == 'function'
                ? (function (d, e) {
                    return function () {
                        var b = this._super;
                        this._super = function (a) {
                            return g[d].apply(this, a);
                        };
                        var c = e.apply(this, arguments);
                        this._super = b;
                        return c;
                    };
                })(i, f[i])
                : f[i];
        }

        function JQClass () {
            if (!j && this._init) {
                this._init.apply(this, arguments);
            }
        }

        JQClass.prototype = h;
        JQClass.prototype.constructor = JQClass;
        JQClass.extend = extender;
        return JQClass;
    };
})();
(function ($) {
    JQClass.classes.JQPlugin = JQClass.extend({
        name: 'plugin',
        defaultOptions: {},
        regionalOptions: {},
        _getters: [],
        _getMarker: function () {return 'is-' + this.name;},
        _init: function () {
            $.extend(this.defaultOptions,
                (this.regionalOptions && this.regionalOptions['']) || {});
            var c = camelCase(this.name);
            $[c] = this;
            $.fn[c] = function (a) {
                var b = Array.prototype.slice.call(arguments, 1);
                if ($[c]._isNotChained(a, b)) {
                    return $[c][a].apply($[c], [this[0]].concat(b));
                }
                return this.each(function () {
                    if (typeof a === 'string') {
                        if (a[0] === '_' || !$[c][a]) {
                            throw'Unknown method: ' + a;
                        }
                        $[c][a].apply($[c], [this].concat(b));
                    } else {$[c]._attach(this, a);}
                });
            };
        },
        setDefaults: function (a) {$.extend(this.defaultOptions, a || {});},
        _isNotChained: function (a, b) {
            if (a === 'option' && (b.length === 0 ||
                (b.length === 1 && typeof b[0] === 'string'))) {return true;}
            return $.inArray(a, this._getters) > -1;
        },
        _attach: function (a, b) {
            a = $(a);
            if (a.hasClass(this._getMarker())) {return;}
            a.addClass(this._getMarker());
            b = $.extend({}, this.defaultOptions, this._getMetadata(a),
                b || {});
            var c = $.extend({ name: this.name, elem: a, options: b },
                this._instSettings(a, b));
            a.data(this.name, c);
            this._postAttach(a, c);
            this.option(a, b);
        },
        _instSettings: function (a, b) {return {};},
        _postAttach: function (a, b) {},
        _getMetadata: function (d) {
            try {
                var f = d.data(this.name.toLowerCase()) || '';
                f = f.replace(/'/g, '"');
                f = f.replace(/([a-zA-Z0-9]+):/g, function (a, b, i) {
                    var c = f.substring(0, i).match(/"/g);
                    return (!c || c.length % 2 === 0 ? '"' + b + '":' : b +
                        ':');
                });
                f = $.parseJSON('{' + f + '}');
                for (var g in f) {
                    var h = f[g];
                    if (typeof h === 'string' &&
                        h.match(/^new Date\((.*)\)$/)) {f[g] = eval(h);}
                }
                return f;
            } catch (e) {return {};}
        },
        _getInst: function (a) {return $(a).data(this.name) || {};},
        option: function (a, b, c) {
            a = $(a);
            var d = a.data(this.name);
            if (!b || (typeof b === 'string' && c == null)) {
                var e = (d || {}).options;
                return (e && b ? e[b] : e);
            }
            if (!a.hasClass(this._getMarker())) {return;}
            var e = b || {};
            if (typeof b === 'string') {
                e = {};
                e[b] = c;
            }
            this._optionsChanged(a, d, e);
            $.extend(d.options, e);
        },
        _optionsChanged: function (a, b, c) {},
        destroy: function (a) {
            a = $(a);
            if (!a.hasClass(this._getMarker())) {return;}
            this._preDestroy(a, this._getInst(a));
            a.removeData(this.name).removeClass(this._getMarker());
        },
        _preDestroy: function (a, b) {},
    });

    function camelCase (c) {
        return c.replace(/-([a-z])/g,
            function (a, b) {return b.toUpperCase();});
    }

    $.JQPlugin = {
        createPlugin: function (a, b) {
            if (typeof a === 'object') {
                b = a;
                a = 'JQPlugin';
            }
            a = camelCase(a);
            var c = camelCase(b.name);
            JQClass.classes[c] = JQClass.classes[a].extend(b);
            new JQClass.classes[c]();
        },
    };
})(jQuery);

/*! http://keith-wood.name/countdown.html
	Countdown for jQuery v2.1.0.
	Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2008.
	Available under the MIT (http://keith-wood.name/licence.html) license.
	Please attribute the author if you use it.
*/
!function (a) {
    'use strict';
    var b = 'countdown', c = 0, d = 1, e = 2, f = 3, g = 4, h = 5, i = 6;
    a.JQPlugin.createPlugin({
        name: b,
        defaultOptions: {
            until: null,
            since: null,
            timezone: null,
            serverSync: null,
            format: 'dHMS',
            layout: '',
            compact: !1,
            padZeroes: !1,
            significant: 0,
            description: '',
            expiryUrl: '',
            expiryText: '',
            alwaysExpire: !1,
            onExpiry: null,
            onTick: null,
            tickInterval: 1,
        },
        regionalOptions: {
            '': {
                labels: [
                    'Years',
                    'Months',
                    'Weeks',
                    'Days',
                    'Hours',
                    'Minutes',
                    'Seconds'],
                labels1: [
                    'Year',
                    'Month',
                    'Week',
                    'Day',
                    'Hour',
                    'Minute',
                    'Second'],
                compactLabels: ['y', 'm', 'w', 'd'],
                whichLabels: null,
                digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
                timeSeparator: ':',
                isRTL: !1,
            },
        },
        _rtlClass: b + '-rtl',
        _sectionClass: b + '-section',
        _amountClass: b + '-amount',
        _periodClass: b + '-period',
        _rowClass: b + '-row',
        _holdingClass: b + '-holding',
        _showClass: b + '-show',
        _descrClass: b + '-descr',
        _timerElems: [],
        _init: function () {
            function b (a) {
                var h = a < 1e12 ? e
                    ? window.performance.now() +
                    window.performance.timing.navigationStart
                    : d() : a || d();
                h - g >= 1e3 && (c._updateElems(), g = h), f(b);
            }

            var c = this;
            this._super(), this._serverSyncs = [];
            var d = 'function' == typeof Date.now
                ? Date.now
                : function () {return (new Date).getTime();},
                e = window.performance && 'function' ==
                    typeof window.performance.now,
                f = window.requestAnimationFrame ||
                    window.webkitRequestAnimationFrame ||
                    window.mozRequestAnimationFrame ||
                    window.oRequestAnimationFrame ||
                    window.msRequestAnimationFrame || null, g = 0;
            !f || a.noRequestAnimationFrame
                ? (a.noRequestAnimationFrame = null, a.countdown._timer = setInterval(
                function () {c._updateElems();}, 1e3))
                : (g = window.animationStartTime ||
                window.webkitAnimationStartTime ||
                window.mozAnimationStartTime || window.oAnimationStartTime ||
                window.msAnimationStartTime || d(), f(b));
        },
        UTCDate: function (a, b, c, d, e, f, g, h) {
            'object' == typeof b && b instanceof Date &&
            (h = b.getMilliseconds(), g = b.getSeconds(), f = b.getMinutes(), e = b.getHours(), d = b.getDate(), c = b.getMonth(), b = b.getFullYear());
            var i = new Date;
            return i.setUTCFullYear(b), i.setUTCDate(1), i.setUTCMonth(
                c || 0), i.setUTCDate(d || 1), i.setUTCHours(
                e || 0), i.setUTCMinutes(
                (f || 0) - (Math.abs(a) < 30 ? 60 * a : a)), i.setUTCSeconds(
                g || 0), i.setUTCMilliseconds(h || 0), i;
        },
        periodsToSeconds: function (a) {
            return 31557600 * a[0] + 2629800 * a[1] + 604800 * a[2] + 86400 *
                a[3] + 3600 * a[4] + 60 * a[5] + a[6];
        },
        resync: function () {
            var b = this;
            a('.' + this._getMarker()).
                each(function () {
                    var c = a.data(this, b.name);
                    if (c.options.serverSync) {
                        for (var d = null, e = 0; e <
                        b._serverSyncs.length; e++) if (b._serverSyncs[e][0] ===
                            c.options.serverSync) {
                            d = b._serverSyncs[e];
                            break;
                        }
                        if (b._eqNull(d[2])) {
                            var f = a.isFunction(c.options.serverSync)
                                ? c.options.serverSync.apply(this, [])
                                : null;
                            d[2] = (f
                                ? (new Date).getTime() - f.getTime()
                                : 0) - d[1];
                        }
                        c._since && c._since.setMilliseconds(
                            c._since.getMilliseconds() +
                            d[2]), c._until.setMilliseconds(
                            c._until.getMilliseconds() + d[2]);
                    }
                });
            for (var c = 0; c < b._serverSyncs.length; c++) b._eqNull(
                b._serverSyncs[c][2]) ||
            (b._serverSyncs[c][1] += b._serverSyncs[c][2], delete b._serverSyncs[c][2]);
        },
        _instSettings: function (a, b) {
            return {
                _periods: [
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0],
            };
        },
        _addElem: function (a) {this._hasElem(a) || this._timerElems.push(a);},
        _hasElem: function (b) {return a.inArray(b, this._timerElems) > -1;},
        _removeElem: function (b) {
            this._timerElems = a.map(this._timerElems,
                function (a) {return a === b ? null : a;});
        },
        _updateElems: function () {
            for (var a = this._timerElems.length - 1; a >=
            0; a--) this._updateCountdown(this._timerElems[a]);
        },
        _optionsChanged: function (b, c, d) {
            d.layout && (d.layout = d.layout.replace(/&lt;/g, '<').
                replace(/&gt;/g, '>')), this._resetExtraLabels(c.options, d);
            var e = c.options.timezone !== d.timezone;
            a.extend(c.options, d), this._adjustSettings(b, c,
                !this._eqNull(d.until) || !this._eqNull(d.since) || e);
            var f = new Date;
            (c._since && c._since < f || c._until && c._until > f) &&
            this._addElem(b[0]), this._updateCountdown(b, c);
        },
        _updateCountdown: function (b, c) {
            if (b = b.jquery ? b : a(b), c = c || this._getInst(b)) {
                if (b.html(this._generateHTML(c)).
                    toggleClass(this._rtlClass, c.options.isRTL), 'pause' !==
                c._hold && a.isFunction(c.options.onTick)) {
                    var d = 'lap' !== c._hold
                        ? c._periods
                        : this._calculatePeriods(c, c._show,
                            c.options.significant, new Date);
                    1 !== c.options.tickInterval && this.periodsToSeconds(d) %
                    c.options.tickInterval !== 0 ||
                    c.options.onTick.apply(b[0], [d]);
                }
                var e = 'pause' !== c._hold && (c._since
                    ? c._now.getTime() < c._since.getTime()
                    : c._now.getTime() >= c._until.getTime());
                if (e && !c._expiring) {
                    if (c._expiring = !0, this._hasElem(b[0]) ||
                    c.options.alwaysExpire) {
                        if (this._removeElem(b[0]), a.isFunction(
                            c.options.onExpiry) &&
                        c.options.onExpiry.apply(b[0],
                            []), c.options.expiryText) {
                            var f = c.options.layout;
                            c.options.layout = c.options.expiryText, this._updateCountdown(
                                b[0], c), c.options.layout = f;
                        }
                        c.options.expiryUrl &&
                        (window.location = c.options.expiryUrl);
                    }
                    c._expiring = !1;
                } else 'pause' === c._hold && this._removeElem(b[0]);
            }
        },
        _resetExtraLabels: function (a, b) {
            var c = null;
            for (c in b) c.match(/[Ll]abels[02-9]|compactLabels1/) &&
            (a[c] = b[c]);
            for (c in a) c.match(/[Ll]abels[02-9]|compactLabels1/) &&
            'undefined' == typeof b[c] && (a[c] = null);
        },
        _eqNull: function (a) {return 'undefined' == typeof a || null === a;},
        _adjustSettings: function (b, c, d) {
            for (var e = null, f = 0; f <
            this._serverSyncs.length; f++) if (this._serverSyncs[f][0] ===
                c.options.serverSync) {
                e = this._serverSyncs[f][1];
                break;
            }
            var g = null, h = null;
            if (this._eqNull(e)) {
                var i = a.isFunction(c.options.serverSync)
                    ? c.options.serverSync.apply(b[0], [])
                    : null;
                g = new Date, h = i
                    ? g.getTime() - i.getTime()
                    : 0, this._serverSyncs.push([c.options.serverSync, h]);
            } else g = new Date, h = c.options.serverSync ? e : 0;
            var j = c.options.timezone;
            j = this._eqNull(j) ? -g.getTimezoneOffset() : j, (d || !d &&
                this._eqNull(c._until) && this._eqNull(c._since)) &&
            (c._since = c.options.since, this._eqNull(c._since) ||
            (c._since = this.UTCDate(j,
                this._determineTime(c._since, null)), c._since && h &&
            c._since.setMilliseconds(
                c._since.getMilliseconds() + h)), c._until = this.UTCDate(j,
                this._determineTime(c.options.until, g)), h &&
            c._until.setMilliseconds(
                c._until.getMilliseconds() + h)), c._show = this._determineShow(
                c);
        },
        _preDestroy: function (a, b) {this._removeElem(a[0]), a.empty();},
        pause: function (a) {this._hold(a, 'pause');},
        lap: function (a) {this._hold(a, 'lap');},
        resume: function (a) {this._hold(a, null);},
        toggle: function (b) {
            var c = a.data(b, this.name) || {};
            this[c._hold ? 'resume' : 'pause'](b);
        },
        toggleLap: function (b) {
            var c = a.data(b, this.name) || {};
            this[c._hold ? 'resume' : 'lap'](b);
        },
        _hold: function (b, c) {
            var d = a.data(b, this.name);
            if (d) {
                if ('pause' === d._hold && !c) {
                    d._periods = d._savePeriods;
                    var e = d._since ? '-' : '+';
                    d[d._since ? '_since' : '_until'] = this._determineTime(
                        e + d._periods[0] + 'y' + e + d._periods[1] + 'o' + e +
                        d._periods[2] + 'w' + e + d._periods[3] + 'd' + e +
                        d._periods[4] + 'h' + e + d._periods[5] + 'm' + e +
                        d._periods[6] + 's'), this._addElem(b);
                }
                d._hold = c, d._savePeriods = 'pause' === c
                    ? d._periods
                    : null, a.data(b, this.name, d), this._updateCountdown(b,
                    d);
            }
        },
        getTimes: function (b) {
            var c = a.data(b, this.name);
            return c ? 'pause' === c._hold ? c._savePeriods : c._hold
                ? this._calculatePeriods(c, c._show, c.options.significant,
                    new Date)
                : c._periods : null;
        },
        _determineTime: function (a, b) {
            var c = this, d = function (a) {
                var b = new Date;
                return b.setTime(b.getTime() + 1e3 * a), b;
            }, e = function (a) {
                a = a.toLowerCase();
                for (var b = new Date, d = b.getFullYear(), e = b.getMonth(), f = b.getDate(), g = b.getHours(), h = b.getMinutes(), i = b.getSeconds(), j = /([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g, k = j.exec(
                    a); k;) {
                    switch (k[2] || 's') {
                        case's':
                            i += parseInt(k[1], 10);
                            break;
                        case'm':
                            h += parseInt(k[1], 10);
                            break;
                        case'h':
                            g += parseInt(k[1], 10);
                            break;
                        case'd':
                            f += parseInt(k[1], 10);
                            break;
                        case'w':
                            f += 7 * parseInt(k[1], 10);
                            break;
                        case'o':
                            e += parseInt(k[1], 10), f = Math.min(f,
                                c._getDaysInMonth(d, e));
                            break;
                        case'y':
                            d += parseInt(k[1], 10), f = Math.min(f,
                                c._getDaysInMonth(d, e));
                    }
                    k = j.exec(a);
                }
                return new Date(d, e, f, g, h, i, 0);
            }, f = this._eqNull(a) ? b : 'string' == typeof a
                ? e(a)
                : 'number' == typeof a ? d(a) : a;
            return f && f.setMilliseconds(0), f;
        },
        _getDaysInMonth: function (a, b) {
            return 32 - new Date(a, b, 32).getDate();
        },
        _normalLabels: function (a) {return a;},
        _generateHTML: function (b) {
            var j = this;
            b._periods = b._hold ? b._periods : this._calculatePeriods(b,
                b._show, b.options.significant, new Date);
            var k = !1, l = 0, m = b.options.significant,
                n = a.extend({}, b._show), o = null;
            for (o = c; o <= i; o++) k = k || '?' === b._show[o] &&
                b._periods[o] > 0, n[o] = '?' !== b._show[o] || k
                ? b._show[o]
                : null, l += n[o] ? 1 : 0, m -= b._periods[o] > 0 ? 1 : 0;
            var p = [!1, !1, !1, !1, !1, !1, !1];
            for (o = i; o >= c; o--) b._show[o] &&
            (b._periods[o] ? p[o] = !0 : (p[o] = m > 0, m--));
            var q = b.options.compact
                ? b.options.compactLabels
                : b.options.labels,
                r = b.options.whichLabels || this._normalLabels,
                s = function (a) {
                    var c = b.options['compactLabels' + r(b._periods[a])];
                    return n[a] ? j._translateDigits(b, b._periods[a]) +
                        (c ? c[a] : q[a]) + ' ' : '';
                }, t = b.options.padZeroes ? 2 : 1, u = function (a) {
                    var c = b.options['labels' + r(b._periods[a])];
                    return !b.options.significant && n[a] ||
                    b.options.significant && p[a] ? '<span class="' +
                        j._sectionClass + '"><span class="' + j._amountClass +
                        '">' + j._minDigits(b, b._periods[a], t) +
                        '</span><span class="' + j._periodClass + '">' +
                        (c ? c[a] : q[a]) + '</span></span>' : '';
                };
            return b.options.layout
                ? this._buildLayout(b, n, b.options.layout, b.options.compact,
                    b.options.significant, p)
                : (b.options.compact
                ? '<span class="' + this._rowClass + ' ' + this._amountClass +
                (b._hold ? ' ' + this._holdingClass : '') + '">' + s(c) + s(d) +
                s(e) + s(f) +
                (n[g] ? this._minDigits(b, b._periods[g], 2) : '') +
                (n[h] ? (n[g] ? b.options.timeSeparator : '') +
                    this._minDigits(b, b._periods[h], 2) : '') +
                (n[i] ? (n[g] || n[h] ? b.options.timeSeparator : '') +
                    this._minDigits(b, b._periods[i], 2) : '')
                : '<span class="' + this._rowClass + ' ' + this._showClass +
                (b.options.significant || l) +
                (b._hold ? ' ' + this._holdingClass : '') + '">' + u(c) + u(d) +
                u(e) + u(f) + u(g) + u(h) + u(i)) + '</span>' +
                (b.options.description ? '<span class="' + this._rowClass +
                    ' ' + this._descrClass + '">' + b.options.description +
                    '</span>' : '');
        },
        _buildLayout: function (b, j, k, l, m, n) {
            for (var o = b.options[l
                ? 'compactLabels'
                : 'labels'], p = b.options.whichLabels ||
                this._normalLabels, q = function (a) {
                return (b.options[(l
                    ? 'compactLabels'
                    : 'labels') + p(b._periods[a])] || o)[a];
            }, r = function (a, c) {
                return b.options.digits[Math.floor(a / c) % 10];
            }, s = {
                desc: b.options.description,
                sep: b.options.timeSeparator,
                yl: q(c),
                yn: this._minDigits(b, b._periods[c], 1),
                ynn: this._minDigits(b, b._periods[c], 2),
                ynnn: this._minDigits(b, b._periods[c], 3),
                y1: r(b._periods[c], 1),
                y10: r(b._periods[c], 10),
                y100: r(b._periods[c], 100),
                y1000: r(b._periods[c], 1e3),
                ol: q(d),
                on: this._minDigits(b, b._periods[d], 1),
                onn: this._minDigits(b, b._periods[d], 2),
                onnn: this._minDigits(b, b._periods[d], 3),
                o1: r(b._periods[d], 1),
                o10: r(b._periods[d], 10),
                o100: r(b._periods[d], 100),
                o1000: r(b._periods[d], 1e3),
                wl: q(e),
                wn: this._minDigits(b, b._periods[e], 1),
                wnn: this._minDigits(b, b._periods[e], 2),
                wnnn: this._minDigits(b, b._periods[e], 3),
                w1: r(b._periods[e], 1),
                w10: r(b._periods[e], 10),
                w100: r(b._periods[e], 100),
                w1000: r(b._periods[e], 1e3),
                dl: q(f),
                dn: this._minDigits(b, b._periods[f], 1),
                dnn: this._minDigits(b, b._periods[f], 2),
                dnnn: this._minDigits(b, b._periods[f], 3),
                d1: r(b._periods[f], 1),
                d10: r(b._periods[f], 10),
                d100: r(b._periods[f], 100),
                d1000: r(b._periods[f], 1e3),
                hl: q(g),
                hn: this._minDigits(b, b._periods[g], 1),
                hnn: this._minDigits(b, b._periods[g], 2),
                hnnn: this._minDigits(b, b._periods[g], 3),
                h1: r(b._periods[g], 1),
                h10: r(b._periods[g], 10),
                h100: r(b._periods[g], 100),
                h1000: r(b._periods[g], 1e3),
                ml: q(h),
                mn: this._minDigits(b, b._periods[h], 1),
                mnn: this._minDigits(b, b._periods[h], 2),
                mnnn: this._minDigits(b, b._periods[h], 3),
                m1: r(b._periods[h], 1),
                m10: r(b._periods[h], 10),
                m100: r(b._periods[h], 100),
                m1000: r(b._periods[h], 1e3),
                sl: q(i),
                sn: this._minDigits(b, b._periods[i], 1),
                snn: this._minDigits(b, b._periods[i], 2),
                snnn: this._minDigits(b, b._periods[i], 3),
                s1: r(b._periods[i], 1),
                s10: r(b._periods[i], 10),
                s100: r(b._periods[i], 100),
                s1000: r(b._periods[i], 1e3),
            }, t = k, u = c; u <= i; u++) {
                var v = 'yowdhms'.charAt(u), w = new RegExp(
                    '\\{' + v + '<\\}([\\s\\S]*)\\{' + v + '>\\}', 'g');
                t = t.replace(w, !m && j[u] || m && n[u] ? '$1' : '');
            }
            return a.each(s, function (a, b) {
                var c = new RegExp('\\{' + a + '\\}', 'g');
                t = t.replace(c, b);
            }), t;
        },
        _minDigits: function (a, b, c) {
            return b = '' + b, b.length >= c
                ? this._translateDigits(a, b)
                : (b = '0000000000' + b, this._translateDigits(a,
                    b.substr(b.length - c)));
        },
        _translateDigits: function (a, b) {
            return ('' + b).replace(/[0-9]/g,
                function (b) {return a.options.digits[b];});
        },
        _determineShow: function (a) {
            var b = a.options.format, j = [];
            return j[c] = b.match('y') ? '?' : b.match('Y')
                ? '!'
                : null, j[d] = b.match('o') ? '?' : b.match('O')
                ? '!'
                : null, j[e] = b.match('w') ? '?' : b.match('W')
                ? '!'
                : null, j[f] = b.match('d') ? '?' : b.match('D')
                ? '!'
                : null, j[g] = b.match('h') ? '?' : b.match('H')
                ? '!'
                : null, j[h] = b.match('m') ? '?' : b.match('M')
                ? '!'
                : null, j[i] = b.match('s') ? '?' : b.match('S')
                ? '!'
                : null, j;
        },
        _calculatePeriods: function (a, b, j, k) {
            a._now = k, a._now.setMilliseconds(0);
            var l = new Date(a._now.getTime());
            a._since ? k.getTime() < a._since.getTime()
                ? a._now = k = l
                : k = a._since : (l.setTime(a._until.getTime()), k.getTime() >
            a._until.getTime() && (a._now = k = l));
            var m = [0, 0, 0, 0, 0, 0, 0];
            if (b[c] || b[d]) {
                var n = this._getDaysInMonth(k.getFullYear(), k.getMonth()),
                    o = this._getDaysInMonth(l.getFullYear(), l.getMonth()),
                    p = l.getDate() === k.getDate() || l.getDate() >=
                        Math.min(n, o) && k.getDate() >= Math.min(n, o),
                    q = function (a) {
                        return 60 * (60 * a.getHours() + a.getMinutes()) +
                            a.getSeconds();
                    }, r = Math.max(0,
                    12 * (l.getFullYear() - k.getFullYear()) + l.getMonth() -
                    k.getMonth() +
                    (l.getDate() < k.getDate() && !p || p && q(l) < q(k)
                        ? -1
                        : 0));
                m[c] = b[c] ? Math.floor(r / 12) : 0, m[d] = b[d] ? r - 12 *
                    m[c] : 0, k = new Date(k.getTime());
                var s = k.getDate() === n,
                    t = this._getDaysInMonth(k.getFullYear() + m[c],
                        k.getMonth() + m[d]);
                k.getDate() > t && k.setDate(t), k.setFullYear(
                    k.getFullYear() + m[c]), k.setMonth(
                    k.getMonth() + m[d]), s && k.setDate(t);
            }
            var u = Math.floor((l.getTime() - k.getTime()) / 1e3), v = null,
                w = function (a, c) {
                    m[a] = b[a]
                        ? Math.floor(u / c)
                        : 0, u -= m[a] * c;
                };
            if (w(e, 604800), w(f, 86400), w(g, 3600), w(h, 60), w(i, 1), u >
            0 && !a._since) {
                var x = [1, 12, 4.3482, 7, 24, 60, 60], y = i, z = 1;
                for (v = i; v >= c; v--) b[v] &&
                (m[y] >= z && (m[y] = 0, u = 1), u > 0 &&
                (m[v]++, u = 0, y = v, z = 1)), z *= x[v];
            }
            if (j) for (v = c; v <= i; v++) j && m[v] ? j-- : j || (m[v] = 0);
            return m;
        },
    });
}(jQuery);

window.SEMICOLON_countdownInit = function ($countdownEl) {

    $countdownEl = $countdownEl.filter(':not(.customjs)');

    if ($countdownEl.length < 1) {
        return true;
    }

    $countdownEl.each(function () {

        let element = $(this),
            elFormat = element.attr('data-format') || 'dHMS',
            elSince = element.attr('data-since'),
            elYear = element.attr('data-year'),
            elMonth = element.attr('data-month'),
            elDay = element.attr('data-day'),
            elHour = element.attr('data-hour'),
            elMin = element.attr('data-minute'),
            elSec = element.attr('data-second'),
            elRedirect = element.attr('data-redirect'),
            dateFormat = '';

        if (elYear) {
            dateFormat = elYear;
        }

        if (elMonth && elMonth < 13) {
            dateFormat = dateFormat + '-' +
                (elMonth < 10 ? '0' + elMonth : elMonth);
        } else {
            if (elYear) {
                dateFormat = dateFormat + '-01';
            }
        }

        if (elDay && elDay < 32) {
            dateFormat = dateFormat + '-' + (elDay < 10 ? '0' + elDay : elDay);
        } else {
            if (elYear) {
                dateFormat = dateFormat + '-01';
            }
        }

        setDate = dateFormat != '' ? new Date(moment(dateFormat)) : new Date();

        if (elHour && elHour < 25) {
            setDate.setHours(setDate.getHours() + Number(elHour));
        }

        if (elMin && elMin < 60) {
            setDate.setMinutes(setDate.getMinutes() + Number(elMin));
        }

        if (elSec && elSec < 60) {
            setDate.setSeconds(setDate.getSeconds() + Number(elSec));
        }

        if (!elRedirect) {
            elRedirect = false;
        }

        if (elSince == 'true') {
            element.countdown({
                since: setDate,
                format: elFormat,
                expiryUrl: elRedirect,
            });
        } else {
            element.countdown({
                until: setDate,
                format: elFormat,
                expiryUrl: elRedirect,
            });
        }

    });

};

/* https://github.com/mhuggins/jquery-countTo
	 CountTo */
(function (e) {
    function t (e, t) {return e.toFixed(t.decimals);}

    e.fn.countTo = function (t) {
        t = t || {};
        return e(this).each(function () {
            function l () {
                a += i;
                u++;
                c(a);
                if (typeof n.onUpdate == 'function') {n.onUpdate.call(s, a);}
                if (u >= r) {
                    o.removeData('countTo');
                    clearInterval(f.interval);
                    a = n.to;
                    if (typeof n.onComplete == 'function') {
                        n.onComplete.call(s, a);
                    }
                }
            }

            function c (e) {
                var t = n.formatter.call(s, e, n);
                o.text(t);
            }

            var n = e.extend({}, e.fn.countTo.defaults, {
                from: e(this).data('from'),
                to: e(this).data('to'),
                speed: e(this).data('speed'),
                refreshInterval: e(this).data('refresh-interval'),
                decimals: e(this).data('decimals'),
            }, t);
            var r = Math.ceil(n.speed / n.refreshInterval),
                i = (n.to - n.from) / r;
            var s = this, o = e(this), u = 0, a = n.from,
                f = o.data('countTo') || {};
            o.data('countTo', f);
            if (f.interval) {clearInterval(f.interval);}
            f.interval = setInterval(l, n.refreshInterval);
            c(a);
        });
    };
    e.fn.countTo.defaults = {
        from: 0,
        to: 0,
        speed: 1e3,
        refreshInterval: 100,
        decimals: 0,
        formatter: t,
        onUpdate: null,
        onComplete: null,
    };
})(jQuery);

window.SEMICOLON_counterInit = function ($counterEl) {

    $counterEl = $counterEl.filter(':not(.customjs)');

    if ($counterEl.length < 1) {
        return true;
    }

    $counterEl.each(function () {
        let element = $(this),
            elComma = element.find('span').attr('data-comma'),
            elSep = element.find('span').attr('data-sep') || ',',
            elPlaces = element.find('span').attr('data-places') || 3;

        let elCommaObj = {
            comma: elComma,
            sep: elSep,
            places: Number(elPlaces),
        };

        if (element.hasClass('counter-instant')) {
            SEMICOLON_runCounterInit(element, elCommaObj);
            return;
        }

        let observer = new IntersectionObserver(function (entries, observer) {
            entries.forEach(function (entry) {
                if (entry.isIntersecting) {
                    SEMICOLON_runCounterInit(element, elCommaObj);
                    observer.unobserve(entry.target);
                }
            });
        }, { rootMargin: '-50px' });
        observer.observe(element[0]);
    });
};

window.SEMICOLON_runCounterInit = function (elCounter, elFormat) {
    if (elFormat.comma == 'true') {

        let reFormat = '\\B(?=(\\d{' + elFormat.places + '})+(?!\\d))',
            regExp = new RegExp(reFormat, 'g');

        elCounter.find('span').countTo({
            formatter: function (value, options) {
                value = value.toFixed(options.decimals);
                value = value.replace(regExp, elFormat.sep);
                return value;
            },
        });
    } else {
        elCounter.find('span').countTo();
    }
};

window.scwDataClassesPlugin = window.scwDataClassesPlugin || {};

window.SEMICOLON_dataClassesInit = function ($dataClassesEl) {

    if ($dataClassesEl.length < 1) {
        return true;
    }

    let $dataClassXs = $('[data-class-xs]'),
        $dataClassSm = $('[data-class-sm]'),
        $dataClassMd = $('[data-class-md]'),
        $dataClassLg = $('[data-class-lg]'),
        $dataClassXl = $('[data-class-xl]'),
        $body = $('body');

    if ($dataClassXs.length > 0) {
        $dataClassXs.each(function () {
            let element = $(this),
                elementClass = element.attr('data-class-xs'),
                elementClassDelete = element.attr('data-class-sm') + ' ' +
                    element.attr('data-class-md') + ' ' +
                    element.attr('data-class-lg') + ' ' +
                    element.attr('data-class-xl');

            if ($body.hasClass('device-xs')) {
                element.removeClass(elementClassDelete);
                element.addClass(elementClass);
            }
        });
    }

    if ($dataClassSm.length > 0) {
        $dataClassSm.each(function () {
            let element = $(this),
                elementClass = element.attr('data-class-sm'),
                elementClassDelete = element.attr('data-class-xs') + ' ' +
                    element.attr('data-class-md') + ' ' +
                    element.attr('data-class-lg') + ' ' +
                    element.attr('data-class-xl');

            if ($body.hasClass('device-sm')) {
                element.removeClass(elementClassDelete);
                element.addClass(elementClass);
            }
        });
    }

    if ($dataClassMd.length > 0) {
        $dataClassMd.each(function () {
            let element = $(this),
                elementClass = element.attr('data-class-md'),
                elementClassDelete = element.attr('data-class-xs') + ' ' +
                    element.attr('data-class-sm') + ' ' +
                    element.attr('data-class-lg') + ' ' +
                    element.attr('data-class-xl');

            if ($body.hasClass('device-md')) {
                element.removeClass(elementClassDelete);
                element.addClass(elementClass);
            }
        });
    }

    if ($dataClassLg.length > 0) {
        $dataClassLg.each(function () {
            let element = $(this),
                elementClass = element.attr('data-class-lg'),
                elementClassDelete = element.attr('data-class-xs') + ' ' +
                    element.attr('data-class-sm') + ' ' +
                    element.attr('data-class-md') + ' ' +
                    element.attr('data-class-xl');

            if ($body.hasClass('device-lg')) {
                element.removeClass(elementClassDelete);
                element.addClass(elementClass);
            }
        });
    }

    if ($dataClassXl.length > 0) {
        $dataClassXl.each(function () {
            let element = $(this),
                elementClass = element.attr('data-class-xl'),
                elementClassDelete = element.attr('data-class-xs') + ' ' +
                    element.attr('data-class-sm') + ' ' +
                    element.attr('data-class-md') + ' ' +
                    element.attr('data-class-lg');

            if ($body.hasClass('device-xl')) {
                element.removeClass(elementClassDelete);
                element.addClass(elementClass);
            }
        });
    }

};

window.scwDataHeightsPlugin = window.scwDataHeightsPlugin || {};

window.SEMICOLON_dataHeightsInit = function ($dataHeightsEl) {

    if ($dataHeightsEl.length < 1) {
        return true;
    }

    let $dataHeightXs = $('[data-height-xs]'),
        $dataHeightSm = $('[data-height-sm]'),
        $dataHeightMd = $('[data-height-md]'),
        $dataHeightLg = $('[data-height-lg]'),
        $dataHeightXl = $('[data-height-xl]'),
        $body = $('body');

    if ($dataHeightXs.length > 0) {
        $dataHeightXs.each(function () {
            let element = $(this),
                elementHeight = element.attr('data-height-xs');

            if ($body.hasClass('device-xs')) {
                if (elementHeight != '') {
                    element.css('height', elementHeight);
                }
            }
        });
    }

    if ($dataHeightSm.length > 0) {
        $dataHeightSm.each(function () {
            let element = $(this),
                elementHeight = element.attr('data-height-sm');

            if ($body.hasClass('device-sm')) {
                if (elementHeight != '') {
                    element.css('height', elementHeight);
                }
            }
        });
    }

    if ($dataHeightMd.length > 0) {
        $dataHeightMd.each(function () {
            let element = $(this),
                elementHeight = element.attr('data-height-md');

            if ($body.hasClass('device-md')) {
                if (elementHeight != '') {
                    element.css('height', elementHeight);
                }
            }
        });
    }

    if ($dataHeightLg.length > 0) {
        $dataHeightLg.each(function () {
            let element = $(this),
                elementHeight = element.attr('data-height-lg');

            if ($body.hasClass('device-lg')) {
                if (elementHeight != '') {
                    element.css('height', elementHeight);
                }
            }
        });
    }

    if ($dataHeightXl.length > 0) {
        $dataHeightXl.each(function () {
            let element = $(this),
                elementHeight = element.attr('data-height-xl');

            if ($body.hasClass('device-xl')) {
                if (elementHeight != '') {
                    element.css('height', elementHeight);
                }
            }
        });
    }

};

/**
 * @preserve
 * Jribbble v2.0.4 | Thu Jun 4 01:49:29 2015 -0400
 * Copyright (c) 2015, Tyler Gaw [email protected]
 * Released under the ISC-LICENSE
 */
!function (e, t, r, s) {
    'use strict';
    e.jribbble = {};
    var n = null, o = 'https://api.dribbble.com/v1', i = [
        'animated',
        'attachments',
        'debuts',
        'playoffs',
        'rebounds',
        'teams'], u = {
        token: 'Jribbble: Missing Dribbble access token. Set one with $.jribbble.accessToken = YOUR_ACCESS_TOKEN. If you do not have an access token, you must register a new application at https://dribbble.com/account/applications/new',
        singular: function (e) {return e.substr(0, e.length - 1);},
        idRequired: function (e) {
            return 'Jribbble: You have to provide a ' + this.singular(e) +
                ' ID. ex: $.jribbble.%@("1234").'.replace(/%@/g, e);
        },
        subResource: function (e) {
            return 'Jribbble: You have to provide a ' + this.singular(e) +
                ' ID to get %@. ex: $.jribbble.%@("1234").%@()'.replace(/%@/g,
                    e);
        },
        shotId: function (e) {
            return 'Jribbble: You have to provide a shot ID to get %@. ex: ' +
                ' $.jribbble.shots("1234").%@()'.replace(/%@/g, e);
        },
        commentLikes: 'Jribbble: You have to provide a comment ID to get likes. ex:  $.jribbble.shots("1234").comments("456").likes()',
    }, c = function (e, t) {
        if (e && 'object' != typeof e) return e;
        throw new Error(u.idRequired(t));
    }, l = function (e) {
        var t = {};
        return e.forEach(function (e) {t[e] = d.call(this, e);}.bind(this)), t;
    }, h = function (t) {
        var r = e.param(t);
        return r ? '?' + r : '';
    }, a = function (e) {
        if (0 !== e.length) {
            var t = e[0], r = typeof t, s = {};
            if ('number' === r || 'string' === r) {
                var n = i.indexOf(t);
                n > -1 ? s.list = t : s.resource = t;
            } else 'object' === r && (s = t);
            return s;
        }
    }, b = function () {
        var t = e.extend({}, e.Deferred()), r = function () {
            return this.methods = [], this.response = null, this.flushed = !1, this.add = function (e) {
                this.flushed
                    ? e(this.scope)
                    : this.methods.push(e);
            }, this.flush = function (e) {
                if (!this.flushed) {
                    for (this.scope = e, this.flushed = !0; this.methods[0];) this.methods.shift()(
                        e);
                    return e;
                }
            }, this;
        };
        return t.queue = new r, t.url = o, t.get = function () {
            return n
                ? (e.ajax({
                    type: 'GET',
                    url: this.url,
                    beforeSend: function (e) {
                        e.setRequestHeader('Authorization', 'Bearer ' + n);
                    },
                    success: function (e) {this.resolve(e);}.bind(this),
                    error: function (e) {this.reject(e);}.bind(this),
                }), this)
                : (console.error(u.token), !1);
        }, t;
    }, f = function (t) {
        return function (r) {
            return e.extend(this, b()), this.queue.add(
                function (e) {e.url += '/' + t + '/' + r;}), setTimeout(
                function () {this.queue.flush(this).get();}.bind(this)), this;
        };
    }, d = function (e) {
        return function (t) {
            return this.queue.add(
                function (r) {r.url += '/' + e + '/' + h(t || {});}), this;
        };
    };
    e.jribbble.shots = function (t, r) {
        var s = a([].slice.call(arguments)) || {}, n = r || {},
            o = function (t) {
                return function (r, s) {
                    var n = a([].slice.call(arguments)) || {}, o = s || {};
                    return this.queue.add(function (r) {
                        if (!r.shotId) throw new Error(u.shotId(t));
                        r.url += '/' + t + '/', n.resource &&
                        (r.url += n.resource, delete n.resource), r.url += h(
                            e.extend(n, o));
                    }), this;
                };
            }, i = function () {
                return e.extend(this, b()), this.url += '/shots/', this.queue.add(
                    function (t) {
                        s.resource &&
                        (t.shotId = s.resource, t.url += s.resource, delete s.resource), t.url += h(
                            e.extend(s, n));
                    }), setTimeout(
                    function () {this.queue.flush(this).get();}.bind(this)), this;
            };
        return i.prototype.attachments = o(
            'attachments'), i.prototype.buckets = o(
            'buckets'), i.prototype.likes = o(
            'likes'), i.prototype.projects = o(
            'projects'), i.prototype.rebounds = o(
            'rebounds'), i.prototype.comments = function (t, r) {
            var s = a([].slice.call(arguments)) || {}, n = r || {};
            return this.queue.add(function (t) {
                if (!t.shotId) throw new Error(u.shotId('comments'));
                t.url += '/comments/', s.resource &&
                (t.commentId = s.resource, t.url += s.resource +
                    '/', delete s.resource), t.url += h(e.extend(s, n));
            }), this.likes = function (e) {
                var t = e || {};
                return this.queue.add(function (e) {
                    if (!e.commentId) throw new Error(u.commentLikes);
                    e.url += 'likes/' + h(t);
                }), this;
            }, this;
        }, new i;
    }, e.jribbble.teams = function (e) {
        var t = 'teams', r = c(e, t), s = f.call(this, t);
        return s.prototype = l.call(this, ['members', 'shots']), new s(r);
    }, e.jribbble.users = function (e) {
        var t = 'users', r = c(e, t), s = f.call(this, t);
        return s.prototype = l.call(this, [
            'buckets',
            'followers',
            'following',
            'likes',
            'projects',
            'shots',
            'teams']), s.prototype.isFollowing = function (e) {
            return this.queue.add(
                function (t) {t.url += '/following/' + e;}), this;
        }, new s(r);
    }, e.jribbble.buckets = function (e) {
        var t = 'buckets', r = c(e, t), s = f.call(this, t);
        return s.prototype = l.call(this, ['shots']), new s(r);
    }, e.jribbble.projects = function (e) {
        var t = 'projects', r = c(e, t), s = f.call(this, t);
        return s.prototype = l.call(this, ['shots']), new s(r);
    }, e.jribbble.setToken = function (e) {return n = e, this;};
}(jQuery, window, document);

window.SEMICOLON_dribbbleShotsInit = function ($dribbbleShotsEl) {

    $dribbbleShotsEl = $dribbbleShotsEl.filter(':not(.customjs)');

    if ($dribbbleShotsEl.length < 1) {
        return true;
    }

    $.jribbble.setToken(
        '012d3d72d12f93e1d41a19195d7da2fc87e6b5afa48a184256e398eb793cfe56');

    $dribbbleShotsEl.each(function () {
        let element = $(this),
            elUsername = element.attr('data-user'),
            elCount = element.attr('data-count') || 9,
            elList = element.attr('data-list'),
            elType = element.attr('data-type');

        element.addClass('customjs');

        if (elType == 'user') {

            $.jribbble.users(elUsername).shots({
                'sort': 'recent',
                'page': 1,
                'per_page': Number(elCount),
            }).then(function (res) {
                let html = [];
                res.forEach(function (shot) {
                    html.push('<a class="grid-item" href="' + shot.html_url +
                        '" target="_blank">');
                    html.push('<img src="' + shot.images.teaser + '" ');
                    html.push('alt="' + shot.title + '"></a>');
                });
                element.html(html.join(''));

                $(window).on('pluginImagesLoadedReady', function () {
                    element.imagesLoaded().done(function () {
                        element.removeClass('customjs');
                        SEMICOLON.widget.masonryThumbs();
                    });
                });
            });

        } else if (elType == 'list') {

            $.jribbble.shots(elList, {
                'sort': 'recent',
                'page': 1,
                'per_page': Number(elCount),
            }).then(function (res) {
                let html = [];
                res.forEach(function (shot) {
                    html.push('<a class="grid-item" href="' + shot.html_url +
                        '" target="_blank">');
                    html.push('<img src="' + shot.images.teaser + '" ');
                    html.push('alt="' + shot.title + '"></a>');
                });
                element.html(html.join(''));

                $(window).on('pluginImagesLoadedReady', function () {
                    element.imagesLoaded().done(function () {
                        element.removeClass('customjs');
                        SEMICOLON.widget.masonryThumbs();
                    });
                });
            });
        }

    });

};

/*!
* FitVids 1.1
*
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
*
*/
!function (t) {
    'use strict';
    t.fn.fitVids = function (e) {
        var i = { customSelector: null, ignore: null };
        if (!document.getElementById('fit-vids-style')) {
            var r = document.head || document.getElementsByTagName('head')[0],
                a = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}',
                d = document.createElement('div');
            d.innerHTML = '<p>x</p><style id="fit-vids-style">' + a +
                '</style>', r.appendChild(d.childNodes[1]);
        }
        return e && t.extend(i, e), this.each(function () {
            var e = [
                'iframe[src*="player.vimeo.com"]',
                'iframe[src*="youtube.com"]',
                'iframe[src*="youtube-nocookie.com"]',
                'iframe[src*="kickstarter.com"][src*="video.html"]',
                'object',
                'embed'];
            i.customSelector && e.push(i.customSelector);
            var r = '.fitvidsignore';
            i.ignore && (r = r + ', ' + i.ignore);
            var a = t(this).find(e.join(','));
            a = a.not('object object'), a = a.not(r), a.each(function (e) {
                var i = t(this);
                if (!(i.parents(r).length > 0 || 'embed' ===
                    this.tagName.toLowerCase() && i.parent('object').length ||
                    i.parent('.fluid-width-video-wrapper').length)) {
                    i.css('height') || i.css('width') ||
                    !isNaN(i.attr('height')) && !isNaN(i.attr('width')) ||
                    (i.attr('height', 9), i.attr('width', 16));
                    var a = 'object' === this.tagName.toLowerCase() ||
                    i.attr('height') && !isNaN(parseInt(i.attr('height'), 10))
                        ? parseInt(i.attr('height'), 10)
                        : i.height(), d = isNaN(parseInt(i.attr('width'), 10))
                        ? i.width()
                        : parseInt(i.attr('width'), 10), o = a / d;
                    if (!i.attr('id')) {
                        var h = 'fitvid' + e;
                        i.attr('id', h);
                    }
                    i.wrap('<div class="fluid-width-video-wrapper"></div>').
                        parent('.fluid-width-video-wrapper').
                        css('padding-top', 100 * o + '%'), i.removeAttr(
                        'height').removeAttr('width');
                }
            });
        });
    };
}(window.jQuery || window.Zepto);

window.SEMICOLON_resizeVideosInit = function ($videoEl) {

    $videoEl = $videoEl.filter(':not(.customjs)');

    if ($videoEl.length < 1) {
        return true;
    }

    $videoEl.parent().fitVids({
        customSelector: 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]',
        ignore: '.no-fv',
    });

};

/*
 * jQuery FlexSlider v2.7.2
 * Copyright 2012 WooThemes
 * Contributing Author: Tyler Smith
 */
!function ($) {
    var e = !0;
    $.flexslider = function (t, a) {
        var n = $(t);
        void 0 === a.rtl && 'rtl' == $('html').attr('dir') &&
        (a.rtl = !0), n.vars = $.extend({}, $.flexslider.defaults, a);
        var i = n.vars.namespace,
            r = window.navigator && window.navigator.msPointerEnabled &&
                window.MSGesture,
            s = ('ontouchstart' in window || r || window.DocumentTouch &&
                document instanceof DocumentTouch) && n.vars.touch,
            o = 'click touchend MSPointerUp keyup', l = '', c,
            d = 'vertical' === n.vars.direction, u = n.vars.reverse,
            v = n.vars.itemWidth > 0, p = 'fade' === n.vars.animation,
            m = '' !== n.vars.asNavFor, f = {};
        $.data(t, 'flexslider', n), f = {
            init: function () {
                n.animating = !1, n.currentSlide = parseInt(
                    n.vars.startAt ? n.vars.startAt : 0, 10), isNaN(
                    n.currentSlide) &&
                (n.currentSlide = 0), n.animatingTo = n.currentSlide, n.atEnd = 0 ===
                    n.currentSlide || n.currentSlide ===
                    n.last, n.containerSelector = n.vars.selector.substr(0,
                    n.vars.selector.search(' ')), n.slides = $(n.vars.selector,
                    n), n.container = $(n.containerSelector,
                    n), n.count = n.slides.length, n.syncExists = $(
                    n.vars.sync).length > 0, 'slide' === n.vars.animation &&
                (n.vars.animation = 'swing'), n.prop = d ? 'top' : n.vars.rtl
                    ? 'marginRight'
                    : 'marginLeft', n.args = {}, n.manualPause = !1, n.stopped = !1, n.started = !1, n.startTimeout = null, n.transitions = !n.vars.video &&
                    !p && n.vars.useCSS && function () {
                        var e = document.createElement('div'), t = [
                            'perspectiveProperty',
                            'WebkitPerspective',
                            'MozPerspective',
                            'OPerspective',
                            'msPerspective'];
                        for (var a in t) if (void 0 !==
                            e.style[t[a]]) return n.pfx = t[a].replace(
                            'Perspective', '').toLowerCase(), n.prop = '-' +
                            n.pfx + '-transform', !0;
                        return !1;
                    }(), n.isFirefox = navigator.userAgent.toLowerCase().
                    indexOf('firefox') > -1, n.ensureAnimationEnd = '', '' !==
                n.vars.controlsContainer &&
                (n.controlsContainer = $(n.vars.controlsContainer).length > 0 &&
                    $(n.vars.controlsContainer)), '' !==
                n.vars.manualControls &&
                (n.manualControls = $(n.vars.manualControls).length > 0 &&
                    $(n.vars.manualControls)), '' !==
                n.vars.customDirectionNav && (n.customDirectionNav = 2 ===
                    $(n.vars.customDirectionNav).length &&
                    $(n.vars.customDirectionNav)), n.vars.randomize &&
                (n.slides.sort(function () {
                    return Math.round(Math.random()) - .5;
                }), n.container.empty().append(n.slides)), n.doMath(), n.setup(
                    'init'), n.vars.controlNav &&
                f.controlNav.setup(), n.vars.directionNav &&
                f.directionNav.setup(), n.vars.keyboard &&
                (1 === $(n.containerSelector).length ||
                    n.vars.multipleKeyboard) &&
                $(document).bind('keyup', function (e) {
                    var t = e.keyCode;
                    if (!n.animating && (39 === t || 37 === t)) {
                        var a = n.vars.rtl ? 37 === t
                            ? n.getTarget('next')
                            : 39 === t && n.getTarget('prev') : 39 === t
                            ? n.getTarget('next')
                            : 37 === t && n.getTarget('prev');
                        n.flexAnimate(a, n.vars.pauseOnAction);
                    }
                }), n.vars.mousewheel &&
                n.bind('mousewheel', function (e, t, a, i) {
                    e.preventDefault();
                    var r = t < 0 ? n.getTarget('next') : n.getTarget('prev');
                    n.flexAnimate(r, n.vars.pauseOnAction);
                }), n.vars.pausePlay && f.pausePlay.setup(), n.vars.slideshow &&
                n.vars.pauseInvisible &&
                f.pauseInvisible.init(), n.vars.slideshow &&
                (n.vars.pauseOnHover && n.hover(
                    function () {n.manualPlay || n.manualPause || n.pause();},
                    function () {
                        n.manualPause || n.manualPlay || n.stopped || n.play();
                    }), n.vars.pauseInvisible && f.pauseInvisible.isHidden() ||
                (n.vars.initDelay > 0 ? n.startTimeout = setTimeout(n.play,
                    n.vars.initDelay) : n.play())), m && f.asNav.setup(), s &&
                n.vars.touch && f.touch(), (!p || p && n.vars.smoothHeight) &&
                $(window).
                    bind('resize orientationchange focus', f.resize), n.find(
                    'img').attr('draggable', 'false'), setTimeout(
                    function () {n.vars.start(n);}, 200);
            },
            asNav: {
                setup: function () {
                    n.asNav = !0, n.animatingTo = Math.floor(n.currentSlide /
                        n.move), n.currentItem = n.currentSlide, n.slides.removeClass(
                        i + 'active-slide').
                        eq(n.currentItem).
                        addClass(i + 'active-slide'), r
                        ? (t._slider = n, n.slides.each(function () {
                            var e = this;
                            e._gesture = new MSGesture, e._gesture.target = e, e.addEventListener(
                                'MSPointerDown', function (e) {
                                    e.preventDefault(), e.currentTarget._gesture &&
                                    e.currentTarget._gesture.addPointer(
                                        e.pointerId);
                                }, !1), e.addEventListener('MSGestureTap',
                                function (e) {
                                    e.preventDefault();
                                    var t = $(this), a = t.index();
                                    $(n.vars.asNavFor).
                                        data('flexslider').animating ||
                                    t.hasClass('active') ||
                                    (n.direction = n.currentItem < a
                                        ? 'next'
                                        : 'prev', n.flexAnimate(a,
                                        n.vars.pauseOnAction, !1, !0, !0));
                                });
                        }))
                        : n.slides.on(o, function (e) {
                            e.preventDefault();
                            var t = $(this), a = t.index(), r;
                            r = n.vars.rtl
                                ? -1 * (t.offset().right - $(n).scrollLeft())
                                : t.offset().left - $(n).scrollLeft(), r <= 0 &&
                            t.hasClass(i + 'active-slide') ? n.flexAnimate(
                                n.getTarget('prev'), !0) : $(n.vars.asNavFor).
                                    data('flexslider').animating ||
                                t.hasClass(i + 'active-slide') ||
                                (n.direction = n.currentItem < a
                                    ? 'next'
                                    : 'prev', n.flexAnimate(a,
                                    n.vars.pauseOnAction, !1, !0, !0));
                        });
                },
            },
            controlNav: {
                setup: function () {
                    n.manualControls
                        ? f.controlNav.setupManual()
                        : f.controlNav.setupPaging();
                },
                setupPaging: function () {
                    var e = 'thumbnails' === n.vars.controlNav
                        ? 'control-thumbs'
                        : 'control-paging', t = 1, a, r;
                    if (n.controlNavScaffold = $(
                        '<ol class="' + i + 'control-nav ' + i + e +
                        '"></ol>'), n.pagingCount > 1) for (var s = 0; s <
                    n.pagingCount; s++) {
                        if (r = n.slides.eq(s), void 0 ===
                        r.attr('data-thumb-alt') &&
                        r.attr('data-thumb-alt', ''), a = $('<a></a>').
                            attr('href', '#').
                            text(t), 'thumbnails' === n.vars.controlNav &&
                        (a = $('<img/>').
                            attr('src', r.attr('data-thumb'))), '' !==
                        r.attr('data-thumb-alt') && a.attr('alt',
                            r.attr('data-thumb-alt')), 'thumbnails' ===
                        n.vars.controlNav && !0 === n.vars.thumbCaptions) {
                            var c = r.attr('data-thumbcaption');
                            if ('' !== c && void 0 !== c) {
                                var d = $('<span></span>').
                                    addClass(i + 'caption').
                                    text(c);
                                a.append(d);
                            }
                        }
                        var u = $('<li>');
                        a.appendTo(u), u.append(
                            '</li>'), n.controlNavScaffold.append(u), t++;
                    }
                    n.controlsContainer ? $(n.controlsContainer).
                        append(n.controlNavScaffold) : n.append(
                        n.controlNavScaffold), f.controlNav.set(), f.controlNav.active(), n.controlNavScaffold.delegate(
                        'a, img', o, function (e) {
                            if (e.preventDefault(), '' === l || l === e.type) {
                                var t = $(this), a = n.controlNav.index(t);
                                t.hasClass(i + 'active') ||
                                (n.direction = a > n.currentSlide
                                    ? 'next'
                                    : 'prev', n.flexAnimate(a,
                                    n.vars.pauseOnAction));
                            }
                            '' === l &&
                            (l = e.type), f.setToClearWatchedEvent();
                        });
                },
                setupManual: function () {
                    n.controlNav = n.manualControls, f.controlNav.active(), n.controlNav.bind(
                        o, function (e) {
                            if (e.preventDefault(), '' === l || l === e.type) {
                                var t = $(this), a = n.controlNav.index(t);
                                t.hasClass(i + 'active') || (a > n.currentSlide
                                    ? n.direction = 'next'
                                    : n.direction = 'prev', n.flexAnimate(a,
                                    n.vars.pauseOnAction));
                            }
                            '' === l &&
                            (l = e.type), f.setToClearWatchedEvent();
                        });
                },
                set: function () {
                    var e = 'thumbnails' === n.vars.controlNav
                        ? 'img'
                        : 'a';
                    n.controlNav = $('.' + i + 'control-nav li ' + e,
                        n.controlsContainer ? n.controlsContainer : n);
                },
                active: function () {
                    n.controlNav.removeClass(i + 'active').
                        eq(n.animatingTo).
                        addClass(i + 'active');
                },
                update: function (e, t) {
                    n.pagingCount > 1 && 'add' === e
                        ? n.controlNavScaffold.append(
                        $('<li><a href="#">' + n.count + '</a></li>'))
                        : 1 === n.pagingCount ? n.controlNavScaffold.find('li').
                            remove() : n.controlNav.eq(t).
                            closest('li').
                            remove(), f.controlNav.set(), n.pagingCount > 1 &&
                    n.pagingCount !== n.controlNav.length
                        ? n.update(t, e)
                        : f.controlNav.active();
                },
            },
            directionNav: {
                setup: function () {
                    var e = $(
                        '<ul class="' + i + 'direction-nav"><li class="' + i +
                        'nav-prev"><a class="' + i + 'prev" href="#">' +
                        n.vars.prevText + '</a></li><li class="' + i +
                        'nav-next"><a class="' + i + 'next" href="#">' +
                        n.vars.nextText + '</a></li></ul>');
                    n.customDirectionNav
                        ? n.directionNav = n.customDirectionNav
                        : n.controlsContainer
                        ? ($(n.controlsContainer).
                            append(e), n.directionNav = $(
                            '.' + i + 'direction-nav li a',
                            n.controlsContainer))
                        : (n.append(e), n.directionNav = $(
                            '.' + i + 'direction-nav li a',
                            n)), f.directionNav.update(), n.directionNav.bind(o,
                        function (e) {
                            e.preventDefault();
                            var t;
                            '' !== l && l !== e.type ||
                            (t = $(this).hasClass(i + 'next') ? n.getTarget(
                                'next') : n.getTarget('prev'), n.flexAnimate(t,
                                n.vars.pauseOnAction)), '' === l &&
                            (l = e.type), f.setToClearWatchedEvent();
                        });
                }, update: function () {
                    var e = i + 'disabled';
                    1 === n.pagingCount ? n.directionNav.addClass(e).
                        attr('tabindex', '-1') : n.vars.animationLoop
                        ? n.directionNav.removeClass(e).removeAttr('tabindex')
                        : 0 === n.animatingTo ? n.directionNav.removeClass(e).
                            filter('.' + i + 'prev').
                            addClass(e).
                            attr('tabindex', '-1') : n.animatingTo === n.last
                            ? n.directionNav.removeClass(e).
                                filter('.' + i + 'next').
                                addClass(e).
                                attr('tabindex', '-1')
                            : n.directionNav.removeClass(e).
                                removeAttr('tabindex');
                },
            },
            pausePlay: {
                setup: function () {
                    var e = $('<div class="' + i +
                        'pauseplay"><a href="#"></a></div>');
                    n.controlsContainer ? (n.controlsContainer.append(
                        e), n.pausePlay = $('.' + i + 'pauseplay a',
                        n.controlsContainer)) : (n.append(e), n.pausePlay = $(
                        '.' + i + 'pauseplay a', n)), f.pausePlay.update(
                        n.vars.slideshow ? i + 'pause' : i +
                            'play'), n.pausePlay.bind(o, function (e) {
                        e.preventDefault(), '' !== l && l !== e.type ||
                        ($(this).hasClass(i + 'pause')
                            ? (n.manualPause = !0, n.manualPlay = !1, n.pause())
                            : (n.manualPause = !1, n.manualPlay = !0, n.play())), '' ===
                        l && (l = e.type), f.setToClearWatchedEvent();
                    });
                },
                update: function (e) {
                    'play' === e ? n.pausePlay.removeClass(i + 'pause').
                        addClass(i + 'play').
                        html(n.vars.playText) : n.pausePlay.removeClass(
                        i + 'play').
                        addClass(i + 'pause').
                        html(n.vars.pauseText);
                },
            },
            touch: function () {
                function e (e) {
                    e.stopPropagation(), n.animating
                        ? e.preventDefault()
                        : (n.pause(), t._gesture.addPointer(
                            e.pointerId), w = 0, c = d ? n.h : n.w, f = Number(
                            new Date), l = v && u && n.animatingTo === n.last
                            ? 0
                            : v && u ? n.limit - (n.itemW + n.vars.itemMargin) *
                                n.move * n.animatingTo : v && n.currentSlide ===
                            n.last ? n.limit : v ? (n.itemW +
                                n.vars.itemMargin) * n.move * n.currentSlide : u
                                ? (n.last - n.currentSlide + n.cloneOffset) * c
                                : (n.currentSlide + n.cloneOffset) * c);
                }

                function a (e) {
                    e.stopPropagation();
                    var a = e.target._slider;
                    if (a) {
                        var n = -e.translationX, i = -e.translationY;
                        if (w += d ? i : n, m = (a.vars.rtl ? -1 : 1) * w, x = d
                            ? Math.abs(w) < Math.abs(-n)
                            : Math.abs(w) < Math.abs(-i), e.detail ===
                        e.MSGESTURE_FLAG_INERTIA) return void setImmediate(
                            function () {t._gesture.stop();});
                        (!x || Number(new Date) - f > 500) &&
                        (e.preventDefault(), !p && a.transitions &&
                        (a.vars.animationLoop || (m = w /
                            (0 === a.currentSlide && w < 0 || a.currentSlide ===
                            a.last && w > 0
                                ? Math.abs(w) / c + 2
                                : 1)), a.setProps(l + m, 'setTouch')));
                    }
                }

                function i (e) {
                    e.stopPropagation();
                    var t = e.target._slider;
                    if (t) {
                        if (t.animatingTo === t.currentSlide && !x && null !==
                            m) {
                            var a = u ? -m : m,
                                n = a > 0 ? t.getTarget('next') : t.getTarget(
                                    'prev');
                            t.canAdvance(n) &&
                            (Number(new Date) - f < 550 && Math.abs(a) > 50 ||
                                Math.abs(a) > c / 2) ? t.flexAnimate(n,
                                t.vars.pauseOnAction) : p ||
                                t.flexAnimate(t.currentSlide,
                                    t.vars.pauseOnAction, !0);
                        }
                        s = null, o = null, m = null, l = null, w = 0;
                    }
                }

                var s, o, l, c, m, f, g, h, S, x = !1, y = 0, b = 0, w = 0;
                r
                    ? (t.style.msTouchAction = 'none', t._gesture = new MSGesture, t._gesture.target = t, t.addEventListener(
                    'MSPointerDown', e, !1), t._slider = n, t.addEventListener(
                    'MSGestureChange', a, !1), t.addEventListener(
                    'MSGestureEnd', i, !1))
                    : (g = function (e) {
                        n.animating
                            ? e.preventDefault()
                            : (window.navigator.msPointerEnabled || 1 ===
                            e.touches.length) &&
                            (n.pause(), c = d ? n.h : n.w, f = Number(
                                new Date), y = e.touches[0].pageX, b = e.touches[0].pageY, l = v &&
                            u && n.animatingTo === n.last ? 0 : v && u
                                ? n.limit - (n.itemW + n.vars.itemMargin) * n.move *
                                n.animatingTo
                                : v && n.currentSlide === n.last ? n.limit : v
                                    ? (n.itemW + n.vars.itemMargin) * n.move *
                                    n.currentSlide
                                    : u
                                        ? (n.last - n.currentSlide +
                                        n.cloneOffset) * c
                                        : (n.currentSlide + n.cloneOffset) *
                                        c, s = d
                                ? b
                                : y, o = d ? y : b, t.addEventListener('touchmove',
                                h, !1), t.addEventListener('touchend', S, !1));
                    }, h = function (e) {
                        y = e.touches[0].pageX, b = e.touches[0].pageY, m = d
                            ? s - b
                            : (n.vars.rtl ? -1 : 1) * (s - y), x = d ? Math.abs(m) <
                            Math.abs(y - o) : Math.abs(m) < Math.abs(b - o);
                        var t = 500;
                        (!x || Number(new Date) - f > 500) &&
                        (e.preventDefault(), !p && n.transitions &&
                        (n.vars.animationLoop ||
                        (m /= 0 === n.currentSlide && m < 0 || n.currentSlide ===
                        n.last && m > 0 ? Math.abs(m) / c + 2 : 1), n.setProps(
                            l + m, 'setTouch')));
                    }, S = function (e) {
                        if (t.removeEventListener('touchmove', h,
                            !1), n.animatingTo === n.currentSlide && !x && null !==
                        m) {
                            var a = u ? -m : m,
                                i = a > 0 ? n.getTarget('next') : n.getTarget(
                                    'prev');
                            n.canAdvance(i) &&
                            (Number(new Date) - f < 550 && Math.abs(a) > 50 ||
                                Math.abs(a) > c / 2) ? n.flexAnimate(i,
                                n.vars.pauseOnAction) : p ||
                                n.flexAnimate(n.currentSlide, n.vars.pauseOnAction,
                                    !0);
                        }
                        t.removeEventListener('touchend', S,
                            !1), s = null, o = null, m = null, l = null;
                    }, t.addEventListener('touchstart', g, !1));
            },
            resize: function () {
                !n.animating && n.is(':visible') &&
                (v || n.doMath(), p ? f.smoothHeight() : v ? (n.slides.width(
                    n.computedW), n.update(n.pagingCount), n.setProps()) : d
                    ? (n.viewport.height(n.h), n.setProps(n.h, 'setTotal'))
                    : (n.vars.smoothHeight &&
                    f.smoothHeight(), n.newSlides.width(
                        n.computedW), n.setProps(n.computedW, 'setTotal')));
            },
            smoothHeight: function (e) {
                if (!d || p) {
                    var t = p
                        ? n
                        : n.viewport;
                    e
                        ? t.animate(
                        { height: n.slides.eq(n.animatingTo).innerHeight() }, e)
                        : t.innerHeight(
                        n.slides.eq(n.animatingTo).innerHeight());
                }
            },
            sync: function (e) {
                var t = $(n.vars.sync).data('flexslider'), a = n.animatingTo;
                switch (e) {
                    case'animate':
                        t.flexAnimate(a, n.vars.pauseOnAction, !1, !0);
                        break;
                    case'play':
                        t.playing || t.asNav || t.play();
                        break;
                    case'pause':
                        t.pause();
                        break;
                }
            },
            uniqueID: function (e) {
                return e.filter('[id]').
                    add(e.find('[id]')).
                    each(function () {
                        var e = $(this);
                        e.attr('id', e.attr('id') + '_clone');
                    }), e;
            },
            pauseInvisible: {
                visProp: null,
                init: function () {
                    var e = f.pauseInvisible.getHiddenProp();
                    if (e) {
                        var t = e.replace(/[H|h]idden/, '') +
                            'visibilitychange';
                        document.addEventListener(t, function () {
                            f.pauseInvisible.isHidden()
                                ? n.startTimeout
                                ? clearTimeout(n.startTimeout)
                                : n.pause()
                                : n.started ? n.play() : n.vars.initDelay > 0
                                ? setTimeout(n.play, n.vars.initDelay)
                                : n.play();
                        });
                    }
                },
                isHidden: function () {
                    var e = f.pauseInvisible.getHiddenProp();
                    return !!e && document[e];
                },
                getHiddenProp: function () {
                    var e = [
                        'webkit',
                        'moz',
                        'ms',
                        'o'];
                    if ('hidden' in document) return 'hidden';
                    for (var t = 0; t < e.length; t++) if (e[t] + 'Hidden' in
                        document) return e[t] + 'Hidden';
                    return null;
                },
            },
            setToClearWatchedEvent: function () {
                clearTimeout(c), c = setTimeout(function () {l = '';}, 3e3);
            },
        }, n.flexAnimate = function (e, t, a, r, o) {
            if (n.vars.animationLoop || e === n.currentSlide ||
            (n.direction = e > n.currentSlide ? 'next' : 'prev'), m && 1 ===
            n.pagingCount &&
            (n.direction = n.currentItem < e ? 'next' : 'prev'), !n.animating &&
            (n.canAdvance(e, o) || a) && n.is(':visible')) {
                if (m && r) {
                    var l = $(n.vars.asNavFor).data('flexslider');
                    if (n.atEnd = 0 === e || e === n.count - 1, l.flexAnimate(e,
                        !0, !1, !0, o), n.direction = n.currentItem < e
                        ? 'next'
                        : 'prev', l.direction = n.direction, Math.ceil(
                        (e + 1) / n.visible) - 1 === n.currentSlide || 0 ===
                    e) return n.currentItem = e, n.slides.removeClass(
                        i + 'active-slide').
                        eq(e).
                        addClass(i + 'active-slide'), !1;
                    n.currentItem = e, n.slides.removeClass(i + 'active-slide').
                        eq(e).
                        addClass(i + 'active-slide'), e = Math.floor(
                        e / n.visible);
                }
                if (n.animating = !0, n.animatingTo = e, t &&
                n.pause(), n.vars.before(n), n.syncExists && !o &&
                f.sync('animate'), n.vars.controlNav &&
                f.controlNav.active(), v ||
                n.slides.removeClass(i + 'active-slide').
                    eq(e).
                    addClass(i + 'active-slide'), n.atEnd = 0 === e || e ===
                    n.last, n.vars.directionNav &&
                f.directionNav.update(), e === n.last &&
                (n.vars.end(n), n.vars.animationLoop || n.pause()), p) s
                    ? (n.slides.eq(n.currentSlide).
                        css({ opacity: 0, zIndex: 1 }), n.slides.eq(e).
                        css({ opacity: 1, zIndex: 2 }), n.wrapup(c))
                    : (n.slides.eq(n.currentSlide).
                        css({ zIndex: 1 }).
                        animate({ opacity: 0 }, n.vars.animationSpeed,
                            n.vars.easing), n.slides.eq(e).
                        css({ zIndex: 2 }).
                        animate({ opacity: 1 }, n.vars.animationSpeed,
                            n.vars.easing, n.wrapup)); else {
                    var c = d
                        ? n.slides.filter(':first').height()
                        : n.computedW, g, h, S;
                    v ? (g = n.vars.itemMargin, S = (n.itemW + g) * n.move *
                        n.animatingTo, h = S > n.limit && 1 !== n.visible
                        ? n.limit
                        : S) : h = 0 === n.currentSlide && e === n.count - 1 &&
                    n.vars.animationLoop && 'next' !== n.direction ? u
                        ? (n.count + n.cloneOffset) * c
                        : 0 : n.currentSlide === n.last && 0 === e &&
                    n.vars.animationLoop && 'prev' !== n.direction ? u
                        ? 0
                        : (n.count + 1) * c : u ? (n.count - 1 - e +
                        n.cloneOffset) * c : (e + n.cloneOffset) *
                        c, n.setProps(h, '',
                        n.vars.animationSpeed), n.transitions
                        ? (n.vars.animationLoop && n.atEnd ||
                        (n.animating = !1, n.currentSlide = n.animatingTo), n.container.unbind(
                            'webkitTransitionEnd transitionend'), n.container.bind(
                            'webkitTransitionEnd transitionend', function () {
                                clearTimeout(n.ensureAnimationEnd), n.wrapup(c);
                            }), clearTimeout(
                            n.ensureAnimationEnd), n.ensureAnimationEnd = setTimeout(
                            function () {n.wrapup(c);},
                            n.vars.animationSpeed + 100))
                        : n.container.animate(n.args, n.vars.animationSpeed,
                            n.vars.easing, function () {n.wrapup(c);});
                }
                n.vars.smoothHeight && f.smoothHeight(n.vars.animationSpeed);
            }
        }, n.wrapup = function (e) {
            p || v || (0 === n.currentSlide && n.animatingTo === n.last &&
            n.vars.animationLoop ? n.setProps(e, 'jumpEnd') : n.currentSlide ===
                n.last && 0 === n.animatingTo && n.vars.animationLoop &&
                n.setProps(e,
                    'jumpStart')), n.animating = !1, n.currentSlide = n.animatingTo, n.vars.after(
                n);
        }, n.animateSlides = function () {
            !n.animating && e && n.flexAnimate(n.getTarget('next'));
        }, n.pause = function () {
            clearInterval(
                n.animatedSlides), n.animatedSlides = null, n.playing = !1, n.vars.pausePlay &&
            f.pausePlay.update('play'), n.syncExists && f.sync('pause');
        }, n.play = function () {
            n.playing && clearInterval(
                n.animatedSlides), n.animatedSlides = n.animatedSlides ||
                setInterval(n.animateSlides,
                    n.vars.slideshowSpeed), n.started = n.playing = !0, n.vars.pausePlay &&
            f.pausePlay.update('pause'), n.syncExists && f.sync('play');
        }, n.stop = function () {n.pause(), n.stopped = !0;}, n.canAdvance = function (
            e, t) {
            var a = m
                ? n.pagingCount - 1
                : n.last;
            return !!t ||
                (!(!m || n.currentItem !== n.count - 1 || 0 !== e || 'prev' !==
                    n.direction) ||
                    (!m || 0 !== n.currentItem || e !== n.pagingCount - 1 ||
                        'next' === n.direction) &&
                    (!(e === n.currentSlide && !m) && (!!n.vars.animationLoop ||
                        (!n.atEnd || 0 !== n.currentSlide || e !== a ||
                            'next' === n.direction) &&
                        (!n.atEnd || n.currentSlide !== a || 0 !== e ||
                            'next' !== n.direction))));
        }, n.getTarget = function (e) {
            return n.direction = e, 'next' === e
                ? n.currentSlide === n.last ? 0 : n.currentSlide + 1
                : 0 === n.currentSlide ? n.last : n.currentSlide - 1;
        }, n.setProps = function (e, t, a) {
            var i = function () {
                var a = e || (n.itemW + n.vars.itemMargin) * n.move *
                    n.animatingTo;
                return function () {
                    if (v) return 'setTouch' === t ? e : u && n.animatingTo ===
                    n.last ? 0 : u
                        ? n.limit - (n.itemW + n.vars.itemMargin) * n.move *
                        n.animatingTo
                        : n.animatingTo === n.last ? n.limit : a;
                    switch (t) {
                        case'setTotal':
                            return u ? (n.count - 1 - n.currentSlide +
                                n.cloneOffset) * e : (n.currentSlide +
                                n.cloneOffset) * e;
                        case'setTouch':
                            return e;
                        case'jumpEnd':
                            return u ? e : n.count * e;
                        case'jumpStart':
                            return u ? n.count * e : e;
                        default:
                            return e;
                    }
                }() * (n.vars.rtl ? 1 : -1) + 'px';
            }();
            n.transitions && (i = n.isFirefox ? d
                ? 'translate3d(0,' + i + ',0)'
                : 'translate3d(' + parseInt(i) + 'px,0,0)' : d
                ? 'translate3d(0,' + i + ',0)'
                : 'translate3d(' + (n.vars.rtl ? -1 : 1) * parseInt(i) +
                'px,0,0)', a = void 0 !== a
                ? a / 1e3 + 's'
                : '0s', n.container.css('-' + n.pfx + '-transition-duration',
                a), n.container.css('transition-duration',
                a)), n.args[n.prop] = i, (n.transitions || void 0 === a) &&
            n.container.css(n.args), n.container.css('transform', i);
        }, n.setup = function (e) {
            if (p) n.vars.rtl ? n.slides.css({
                width: '100%',
                float: 'right',
                marginLeft: '-100%',
                position: 'relative',
            }) : n.slides.css({
                width: '100%',
                float: 'left',
                marginRight: '-100%',
                position: 'relative',
            }), 'init' === e && (s ? n.slides.css({
                opacity: 0,
                display: 'block',
                webkitTransition: 'opacity ' + n.vars.animationSpeed / 1e3 +
                    's ease',
                zIndex: 1,
            }).eq(n.currentSlide).css({ opacity: 1, zIndex: 2 }) : 0 ==
            n.vars.fadeFirstSlide ? n.slides.css(
                { opacity: 0, display: 'block', zIndex: 1 }).
                eq(n.currentSlide).
                css({ zIndex: 2 }).
                css({ opacity: 1 }) : n.slides.css(
                { opacity: 0, display: 'block', zIndex: 1 }).
                eq(n.currentSlide).
                css({ zIndex: 2 }).
                animate({ opacity: 1 }, n.vars.animationSpeed,
                    n.vars.easing)), n.vars.smoothHeight &&
            f.smoothHeight(); else {
                var t, a;
                'init' === e &&
                (n.viewport = $('<div class="' + i + 'viewport"></div>').
                    css({ overflow: 'hidden', position: 'relative' }).
                    appendTo(n).
                    append(
                        n.container), n.cloneCount = 0, n.cloneOffset = 0, u &&
                (a = $.makeArray(n.slides).reverse(), n.slides = $(
                    a), n.container.empty().
                    append(n.slides))), n.vars.animationLoop && !v &&
                (n.cloneCount = 2, n.cloneOffset = 1, 'init' !== e &&
                n.container.find('.clone').remove(), n.container.append(
                    f.uniqueID(n.slides.first().clone().addClass('clone')).
                        attr('aria-hidden', 'true')).
                    prepend(
                        f.uniqueID(n.slides.last().clone().addClass('clone')).
                            attr('aria-hidden', 'true'))), n.newSlides = $(
                    n.vars.selector, n), t = u ? n.count - 1 - n.currentSlide +
                    n.cloneOffset : n.currentSlide + n.cloneOffset, d && !v
                    ? (n.container.height(200 * (n.count + n.cloneCount) + '%').
                        css('position', 'absolute').
                        width('100%'), setTimeout(function () {
                        n.newSlides.css(
                            { display: 'block' }), n.doMath(), n.viewport.height(
                            n.h), n.setProps(t * n.h, 'init');
                    }, 'init' === e ? 100 : 0))
                    : (n.container.width(
                        200 * (n.count + n.cloneCount) + '%'), n.setProps(
                        t * n.computedW, 'init'), setTimeout(function () {
                        n.doMath(), n.vars.rtl && n.isFirefox
                            ? n.newSlides.css({
                                width: n.computedW,
                                marginRight: n.computedM,
                                float: 'right',
                                display: 'block',
                            })
                            : n.newSlides.css({
                                width: n.computedW,
                                marginRight: n.computedM,
                                float: 'left',
                                display: 'block',
                            }), n.vars.smoothHeight && f.smoothHeight();
                    }, 'init' === e ? 100 : 0));
            }
            v || n.slides.removeClass(i + 'active-slide').
                eq(n.currentSlide).
                addClass(i + 'active-slide'), n.vars.init(n);
        }, n.doMath = function () {
            var e = n.slides.first(), t = n.vars.itemMargin,
                a = n.vars.minItems, i = n.vars.maxItems;
            n.w = void 0 === n.viewport
                ? n.width()
                : n.viewport.width(), n.isFirefox &&
            (n.w = n.width()), n.h = e.height(), n.boxPadding = e.outerWidth() -
                e.width(), v
                ? (n.itemT = n.vars.itemWidth + t, n.itemM = t, n.minW = a ? a *
                    n.itemT : n.w, n.maxW = i
                    ? i * n.itemT - t
                    : n.w, n.itemW = n.minW > n.w
                    ? (n.w - t * (a - 1)) / a
                    : n.maxW < n.w
                        ? (n.w - t * (i - 1)) / i
                        : n.vars.itemWidth > n.w
                            ? n.w
                            : n.vars.itemWidth, n.visible = Math.floor(
                    n.w / n.itemW), n.move = n.vars.move > 0 && n.vars.move <
                n.visible ? n.vars.move : n.visible, n.pagingCount = Math.ceil(
                    (n.count - n.visible) / n.move +
                    1), n.last = n.pagingCount - 1, n.limit = 1 ===
                n.pagingCount ? 0 : n.vars.itemWidth > n.w
                    ? n.itemW * (n.count - 1) + t * (n.count - 1)
                    : (n.itemW + t) * n.count - n.w - t)
                : (n.itemW = n.w, n.itemM = t, n.pagingCount = n.count, n.last = n.count -
                    1), n.computedW = n.itemW -
                n.boxPadding, n.computedM = n.itemM;
        }, n.update = function (e, t) {
            n.doMath(), v ||
            (e < n.currentSlide ? n.currentSlide += 1 : e <= n.currentSlide &&
                0 !== e &&
                (n.currentSlide -= 1), n.animatingTo = n.currentSlide), n.vars.controlNav &&
            !n.manualControls &&
            ('add' === t && !v || n.pagingCount > n.controlNav.length
                ? f.controlNav.update('add')
                : ('remove' === t && !v || n.pagingCount <
                n.controlNav.length) && (v && n.currentSlide > n.last &&
            (n.currentSlide -= 1, n.animatingTo -= 1), f.controlNav.update(
                'remove', n.last))), n.vars.directionNav &&
            f.directionNav.update();
        }, n.addSlide = function (e, t) {
            var a = $(e);
            n.count += 1, n.last = n.count - 1, d && u ? void 0 !== t
                ? n.slides.eq(n.count - t).after(a)
                : n.container.prepend(a) : void 0 !== t ? n.slides.eq(t).
                before(a) : n.container.append(a), n.update(t,
                'add'), n.slides = $(n.vars.selector + ':not(.clone)',
                n), n.setup(), n.vars.added(n);
        }, n.removeSlide = function (e) {
            var t = isNaN(e)
                ? n.slides.index($(e))
                : e;
            n.count -= 1, n.last = n.count - 1, isNaN(e) ? $(e, n.slides).
                remove() : d && u ? n.slides.eq(n.last).remove() : n.slides.eq(
                e).remove(), n.doMath(), n.update(t, 'remove'), n.slides = $(
                n.vars.selector + ':not(.clone)', n), n.setup(), n.vars.removed(
                n);
        }, f.init();
    }, $(window).
        blur(function (t) {e = !1;}).
        focus(function (t) {e = !0;}), $.flexslider.defaults = {
        namespace: 'flex-',
        selector: '.slides > li',
        animation: 'fade',
        easing: 'swing',
        direction: 'horizontal',
        reverse: !1,
        animationLoop: !0,
        smoothHeight: !1,
        startAt: 0,
        slideshow: !0,
        slideshowSpeed: 7e3,
        animationSpeed: 600,
        initDelay: 0,
        randomize: !1,
        fadeFirstSlide: !0,
        thumbCaptions: !1,
        pauseOnAction: !0,
        pauseOnHover: !1,
        pauseInvisible: !0,
        useCSS: !0,
        touch: !0,
        video: !1,
        controlNav: !0,
        directionNav: !0,
        prevText: 'Previous',
        nextText: 'Next',
        keyboard: !0,
        multipleKeyboard: !1,
        mousewheel: !1,
        pausePlay: !1,
        pauseText: 'Pause',
        playText: 'Play',
        controlsContainer: '',
        manualControls: '',
        customDirectionNav: '',
        sync: '',
        asNavFor: '',
        itemWidth: 0,
        itemMargin: 0,
        minItems: 1,
        maxItems: 0,
        move: 0,
        allowOneSlide: !0,
        isFirefox: !1,
        start: function () {},
        before: function () {},
        after: function () {},
        end: function () {},
        added: function () {},
        removed: function () {},
        init: function () {},
        rtl: !1,
    }, $.fn.flexslider = function (e) {
        if (void 0 === e && (e = {}), 'object' == typeof e) return this.each(
            function () {
                var t = $(this), a = e.selector ? e.selector : '.slides > li',
                    n = t.find(a);
                1 === n.length && !1 === e.allowOneSlide || 0 === n.length
                    ? (n.fadeIn(400), e.start && e.start(t))
                    : void 0 === t.data('flexslider') &&
                    new $.flexslider(this, e);
            });
        var t = $(this).data('flexslider');
        switch (e) {
            case'play':
                t.play();
                break;
            case'pause':
                t.pause();
                break;
            case'stop':
                t.stop();
                break;
            case'next':
                t.flexAnimate(t.getTarget('next'), !0);
                break;
            case'prev':
            case'previous':
                t.flexAnimate(t.getTarget('prev'), !0);
                break;
            default:
                'number' == typeof e && t.flexAnimate(e, !0);
        }
    };
}(jQuery);

window.SEMICOLON_flexSliderInit = function ($flexSliderEl) {

    $flexSliderEl = $flexSliderEl.filter(':not(.customjs)');

    if ($flexSliderEl.length < 1) {
        return true;
    }

    $flexSliderEl.each(function () {
        let element = $(this),
            elLazy = element.find('.lazy'),
            elAnimation = element.attr('data-animation') || 'slide',
            elEasing = element.attr('data-easing') || 'swing',
            elDirection = element.attr('data-direction') || 'horizontal',
            elReverse = element.attr('data-reverse'),
            elSlideshow = element.attr('data-slideshow'),
            elPause = element.attr('data-pause') || 5000,
            elSpeed = element.attr('data-speed') || 600,
            elVideo = element.attr('data-video'),
            elPagi = element.attr('data-pagi'),
            elArrows = element.attr('data-arrows'),
            elArrowLeft = element.attr('data-arrow-left') || 'icon-angle-left',
            elArrowRight = element.attr('data-arrow-right') ||
                'icon-angle-right',
            elThumbs = element.attr('data-thumbs'),
            elHover = element.attr('data-hover'),
            elSheight = element.attr('data-smooth-height'),
            elTouch = element.attr('data-touch'),
            elUseCSS = false;

        if (elEasing == 'swing') {
            elEasing = 'swing';
            elUseCSS = true;
        }
        if (elReverse ==
            'true') { elReverse = true; } else { elReverse = false; }
        if (!elSlideshow) { elSlideshow = true; } else { elSlideshow = false; }
        if (!elVideo) { elVideo = false; }
        if (elSheight ==
            'false') { elSheight = false; } else { elSheight = true; }
        if (elDirection == 'vertical') { elSheight = false; }
        if (elPagi == 'false') { elPagi = false; } else { elPagi = true; }
        if (elThumbs ==
            'true') { elPagi = 'thumbnails'; } else { elPagi = elPagi; }
        if (elArrows == 'false') { elArrows = false; } else { elArrows = true; }
        if (elHover == 'false') { elHover = false; } else { elHover = true; }
        if (elTouch == 'false') { elTouch = false; } else { elTouch = true; }

        element.find('.flexslider').flexslider({
            selector: '.slider-wrap > .slide',
            animation: elAnimation,
            easing: elEasing,
            direction: elDirection,
            reverse: elReverse,
            slideshow: elSlideshow,
            slideshowSpeed: Number(elPause),
            animationSpeed: Number(elSpeed),
            pauseOnHover: elHover,
            video: elVideo,
            controlNav: elPagi,
            directionNav: elArrows,
            smoothHeight: elSheight,
            useCSS: elUseCSS,
            touch: elTouch,
            start: function (slider) {
                SEMICOLON.widget.animations();
                SEMICOLON.initialize.lightbox({ 'parent': element });
                $('.flex-prev').html('<i class="' + elArrowLeft + '"></i>');
                $('.flex-next').html('<i class="' + elArrowRight + '"></i>');
                setTimeout(function () {
                    if (slider.parents(
                        '.grid-container.has-init-isotope').length > 0) {
                        slider.parents('.grid-container.has-init-isotope').
                            isotope('layout');
                    }
                }, 1200);
                if (typeof skrollrInstance !== 'undefined') {
                    skrollrInstance.refresh();
                }
            },
            after: function (slider) {
                if (slider.parents('.grid-container.has-init-isotope').length >
                    0) {
                    slider.parents('.grid-container.has-init-isotope').
                        isotope('layout');
                }
                $('.menu-item:visible').find('.flexslider .slide').resize();
            },
        });

        $(window).on('lazyLoadLoaded', function () {
            if (elLazy.length == element.find('.lazy.lazy-loaded').length) {
                lazyLoadInstance.update();
                setTimeout(function () {
                    element.find('.flexslider').resize();
                }, 500);
            }
        });

    });

};

/*!
 * Original copyright:
 *
 * Copyright (C) 2009 Joel Sutherland
 * Licenced under the MIT license
 * http://www.newmediacampaigns.com/page/jquery-flickr-plugin
 *
 * Available tags for templates:
 * title, link, date_taken, description, published, author, author_id, tags, image*
 */
!function (a) {
    a.fn.jflickrfeed = function (b, c) {
        b = a.extend(!0, {
            flickrbase: 'https://api.flickr.com/services/feeds/',
            feedapi: 'photos_public.gne',
            limit: 20,
            qstrings: { lang: 'en-us', format: 'json', jsoncallback: '?' },
            cleanDescription: !0,
            useTemplate: !0,
            itemTemplate: '',
            itemCallback: function () {},
        }, b);
        var d, e = b.flickrbase + b.feedapi + '?', f = !0;
        for (d in b.qstrings) f || (e += '&'), e += d + '=' +
            b.qstrings[d], f = !1;
        return a(this).each(function () {
            var d = a(this), f = this;
            a.getJSON(e, function (e) {
                a.each(e.items, function (a, c) {
                    var e, g, h, i;
                    if (a < b.limit) {
                        if (b.cleanDescription &&
                        (e = /<p>(.*?)<\/p>/g, g = c.description, e.test(g) &&
                        (c.description = g.match(e)[2], void 0 !==
                        c.description &&
                        (c.description = c.description.replace('<p>', '').
                            replace('</p>',
                                '')))), c.image_s = c.media.m.replace('_m',
                            '_s'), c.image_t = c.media.m.replace('_m',
                            '_t'), c.image_m = c.media.m.replace('_m',
                            '_m'), c.image = c.media.m.replace('_m',
                            ''), c.image_b = c.media.m.replace('_m',
                            '_b'), c.image_q = c.media.m.replace('_m',
                            '_q'), delete c.media, b.useTemplate) {
                            i = b.itemTemplate;
                            for (h in c) e = new RegExp('{{' + h + '}}',
                                'g'), i = i.replace(e, c[h]);
                            d.append(i);
                        }
                        b.itemCallback.call(f, c);
                    }
                }), a.isFunction(c) && c.call(f, e);
            });
        });
    };
}(jQuery);

window.SEMICOLON_flickrFeedInit = function ($flickrFeedEl) {

    $flickrFeedEl = $flickrFeedEl.filter(':not(.customjs)');

    if ($flickrFeedEl.length < 1) {
        return true;
    }

    $flickrFeedEl.each(function () {
        let element = $(this),
            elID = element.attr('data-id'),
            elCount = element.attr('data-count') || 9,
            elType = element.attr('data-type'),
            elTypeGet = 'photos_public.gne';

        if (elType == 'group') { elTypeGet = 'groups_pool.gne'; }

        element.jflickrfeed({
            feedapi: elTypeGet,
            limit: Number(elCount),
            qstrings: {
                id: elID,
            },
            itemTemplate: '<a class="grid-item" href="{{image_b}}" title="{{title}}" data-lightbox="gallery-item">' +
                '<img src="{{image_s}}" alt="{{title}}" />' +
                '</a>',
        }, function (data) {
            SEMICOLON.initialize.lightbox({ 'parent': element });
        });
    });

};

/**
 * jQuery gMap - Google Maps API V3
 *
 * @license MIT License; https://www.opensource.org/licenses/mit-license.php
 * @url   https://github.com/marioestrada/jQuery-gMap
 * @author  Mario Estrada <[email protected]> based on original plugin by Cedric Kastner <[email protected]>
 * @version 2.2
 */
/* global google */
!function (e) {
    e.fn.gMap = function (o, a) {
        switch (o) {
            case'addMarker':
                return e(this).
                    trigger('gMap.addMarker',
                        [a.latitude, a.longitude, a.content, a.icon, a.popup]);
            case'centerAt':
                return e(this).
                    trigger('gMap.centerAt', [a.latitude, a.longitude, a.zoom]);
            case'clearMarkers':
                return e(this).trigger('gMap.clearMarkers');
        }
        var n = e.extend({}, e.fn.gMap.defaults, o);
        return this.each(function () {
            var o = new google.maps.Map(this);
            e(this).data('gMap.reference', o);
            var a = new google.maps.Geocoder;
            n.address ? a.geocode({ address: n.address }, function (e) {
                e && e.length && o.setCenter(e[0].geometry.location);
            }) : n.latitude && n.longitude ? o.setCenter(
                new google.maps.LatLng(n.latitude, n.longitude)) : e.isArray(
                n.markers) && n.markers.length > 0 ? n.markers[0].address
                ? a.geocode({ address: n.markers[0].address }, function (e) {
                    e && e.length > 0 && o.setCenter(e[0].geometry.location);
                })
                : o.setCenter(new google.maps.LatLng(n.markers[0].latitude,
                    n.markers[0].longitude)) : o.setCenter(
                new google.maps.LatLng(34.885931, 9.84375)), o.setZoom(
                n.zoom), o.setMapTypeId(google.maps.MapTypeId[n.maptype]);
            var s = {
                scrollwheel: n.scrollwheel,
                disableDoubleClickZoom: !n.doubleclickzoom,
            };
            n.controls === !1 ? e.extend(s, { disableDefaultUI: !0 }) : 0 !==
                n.controls.length &&
                e.extend(s, n.controls, { disableDefaultUI: !0 }), o.setOptions(
                s), o.setOptions({ styles: n.styles });
            var t, r, i = new google.maps.Marker;
            t = new google.maps.MarkerImage(
                n.icon.image), t.size = new google.maps.Size(n.icon.iconsize[0],
                n.icon.iconsize[1]), t.anchor = new google.maps.Point(
                n.icon.iconanchor[0], n.icon.iconanchor[1]), i.setIcon(
                t), n.icon.shadow && (r = new google.maps.MarkerImage(
                n.icon.shadow), r.size = new google.maps.Size(
                n.icon.shadowsize[0],
                n.icon.shadowsize[1]), r.anchor = new google.maps.Point(
                n.icon.shadowanchor[0], n.icon.shadowanchor[1]), i.setShadow(
                r)), e(this).
                bind('gMap.centerAt', function (e, a, n, s) {
                    s && o.setZoom(s), o.panTo(
                        new google.maps.LatLng(parseFloat(a), parseFloat(n)));
                });
            var g = [];
            e(this).
                bind('gMap.clearMarkers',
                    function () {for (; g[0];) g.pop().setMap(null);});
            var l;
            e(this).
                bind('gMap.addMarker', function (e, a, s, t, r, d) {
                    var c, p, m = new google.maps.LatLng(parseFloat(a),
                        parseFloat(s)),
                        h = new google.maps.Marker({ position: m });
                    if (r
                        ? (c = new google.maps.MarkerImage(
                            r.image), c.size = new google.maps.Size(
                            r.iconsize[0],
                            r.iconsize[1]), c.anchor = new google.maps.Point(
                            r.iconanchor[0], r.iconanchor[1]), h.setIcon(
                            c), r.shadow && (p = new google.maps.MarkerImage(
                            r.shadow), p.size = new google.maps.Size(
                            r.shadowsize[0],
                            r.shadowsize[1]), p.anchor = new google.maps.Point(
                            r.shadowanchor[0], r.shadowanchor[1]), i.setShadow(
                            p)))
                        : (h.setIcon(i.getIcon()), h.setShadow(
                            i.getShadow())), t) {
                        '_latlng' === t && (t = a + ', ' + s);
                        var w = new google.maps.InfoWindow(
                            { content: n.html_prepend + t + n.html_append });
                        google.maps.event.addListener(h, 'click', function () {
                            l && l.close(), w.open(o, h), l = w;
                        }), d &&
                        google.maps.event.addListenerOnce(o, 'tilesloaded',
                            function () {w.open(o, h);});
                    }
                    h.setMap(o), g.push(h);
                });
            for (var d, c = this, p = function (o) {
                return function (a) {
                    a && a.length > 0 && e(c).
                        trigger('gMap.addMarker', [
                            a[0].geometry.location.lat(),
                            a[0].geometry.location.lng(),
                            o.html,
                            o.icon,
                            o.popup]);
                };
            }, m = 0; m < n.markers.length; m++) d = n.markers[m], d.address
                ? ('_address' === d.html && (d.html = d.address), a.geocode(
                    { address: d.address }, p(d)))
                : e(this).
                    trigger('gMap.addMarker',
                        [d.latitude, d.longitude, d.html, d.icon, d.popup]);
        });
    }, e.fn.gMap.defaults = {
        address: '',
        latitude: 0,
        longitude: 0,
        zoom: 1,
        markers: [],
        controls: [],
        styles: [],
        scrollwheel: !1,
        doubleclickzoom: !0,
        maptype: 'ROADMAP',
        html_prepend: '<div class="gmap_marker">',
        html_append: '</div>',
        icon: {
            image: 'https://www.google.com/mapfiles/marker.png',
            shadow: 'https://www.google.com/mapfiles/shadow50.png',
            iconsize: [20, 34],
            shadowsize: [37, 34],
            iconanchor: [9, 34],
            shadowanchor: [6, 34],
        },
    };
}(jQuery);

window.SEMICOLON_gmapInit = function ($gmapEl) {

    $gmapEl = $gmapEl.filter(':not(.customjs)');

    if ($gmapEl.length < 1) {
        return true;
    }

    $gmapEl.each(function () {

        let element = $(this),
            elLat = element.attr('data-latitude'),
            elLon = element.attr('data-longitude'),
            elAdd = element.attr('data-address'),
            elCon = element.attr('data-content'),
            elScroll = element.attr('data-scrollwheel') || true,
            elType = element.attr('data-maptype') || 'ROADMAP',
            elZoom = element.attr('data-zoom') || 12,
            elStyles = element.attr('data-styles'),
            elMarkers = element.attr('data-markers'),
            elIcon = element.attr('data-icon'),
            elConPan = element.attr('data-control-pan') || false,
            elConZoom = element.attr('data-control-zoom') || false,
            elConMapT = element.attr('data-control-maptype') || false,
            elConScale = element.attr('data-control-scale') || false,
            elConStreetV = element.attr('data-control-streetview') || false,
            elConOverview = element.attr('data-control-overview') || false;

        if (elAdd) {
            elLat = elLon = false;
        } else {
            if (!elLat && !elLon) {
                console.log('Google Map co-ordinates not entered.');
                return true;
            }
        }

        if (elStyles) { elStyles = JSON.parse(elStyles); }
        if (elScroll == 'false') { elScroll = false; }
        if (elConPan == 'true') { elConPan = true; }
        if (elConZoom == 'true') { elConZoom = true; }
        if (elConMapT == 'true') { elConMapT = true; }
        if (elConScale == 'true') { elConScale = true; }
        if (elConStreetV == 'true') { elConStreetV = true; }
        if (elConOverview == 'true') { elConOverview = true; }

        if (elMarkers) {
            elMarkers = Function('return ' + elMarkers)();
        } else {
            if (elAdd) {
                elMarkers = [
                    {
                        address: elAdd,
                        html: elCon ? elCon : elAdd,
                    },
                ];
            } else {
                elMarkers = [
                    {
                        latitude: elLat,
                        longitude: elLon,
                        html: elCon ? elCon : false,
                    },
                ];
            }
        }

        if (elIcon) {
            elIcon = Function('return ' + elIcon)();
        } else {
            elIcon = {
                image: 'https://www.google.com/mapfiles/marker.png',
                shadow: 'https://www.google.com/mapfiles/shadow50.png',
                iconsize: [20, 34],
                shadowsize: [37, 34],
                iconanchor: [9, 34],
                shadowanchor: [19, 34],
            };
        }

        element.gMap({
            controls: {
                panControl: elConPan,
                zoomControl: elConZoom,
                mapTypeControl: elConMapT,
                scaleControl: elConScale,
                streetViewControl: elConStreetV,
                overviewMapControl: elConOverview,
            },
            scrollwheel: elScroll,
            maptype: elType,
            markers: elMarkers,
            icon: elIcon,
            latitude: elLat,
            longitude: elLon,
            address: elAdd,
            zoom: Number(elZoom),
            styles: elStyles,
        });

    });

};

window.scwGridFilterPlugin = window.scwGridFilterPlugin || {};

window.SEMICOLON_gridFilterInit = function ($gridFilterEl) {

    $gridFilterEl = $gridFilterEl.filter(':not(.customjs)');

    if ($gridFilterEl.length < 1) {
        return true;
    }

    $gridFilterEl.each(function () {
        let element = $(this),
            elCon = element.attr('data-container'),
            elActClass = element.attr('data-active-class'),
            elDefFilter = element.attr('data-default');

        if (!elActClass) { elActClass = 'activeFilter'; }

        element.find('a').off('click').on('click', function () {
            element.find('li').removeClass(elActClass);
            $(this).parent('li').addClass(elActClass);
            let selector = $(this).attr('data-filter');
            $(elCon).isotope({ filter: selector });
            return false;
        });

        if (elDefFilter) {
            element.find('li').removeClass(elActClass);
            element.find('[data-filter="' + elDefFilter + '"]').
                parent('li').
                addClass(elActClass);
            $(elCon).isotope({ filter: elDefFilter });
        }
    });

    $('.grid-shuffle').off('click').on('click', function () {
        let element = $(this),
            elCon = element.attr('data-container');

        $(elCon).isotope('shuffle');
    });

};

window.scwHoverAnimationPlugin = window.scwHoverAnimationPlugin || {};

window.SEMICOLON_hoverAnimationInit = function ($hoverAnimationEl) {

    $hoverAnimationEl = $hoverAnimationEl.filter(':not(.customjs)');

    if ($hoverAnimationEl.length < 1) {
        return true;
    }

    $hoverAnimationEl.each(function () {
        let element = $(this),
            elAnimate = element.attr('data-hover-animate'),
            elAnimateOut = element.attr('data-hover-animate-out') || 'fadeOut',
            elSpeed = element.attr('data-hover-speed') || 600,
            elDelay = element.attr('data-hover-delay'),
            elParent = element.attr('data-hover-parent'),
            elReset = element.attr('data-hover-reset') || 'false';

        element.addClass('not-animated');

        if (!elParent) {
            if (element.parents('.bg-overlay').length > 0) {
                elParent = element.parents('.bg-overlay');
            } else {
                elParent = element;
            }
        } else {
            if (elParent == 'self') {
                elParent = element;
            } else {
                elParent = element.parents(elParent);
            }
        }

        let elDelayT = 0;

        if (elDelay) {
            elDelayT = Number(elDelay);
        }

        if (elSpeed) {
            element.css({ 'animation-duration': Number(elSpeed) + 'ms' });
        }

        let t, x;

        elParent.hover(function () {

            clearTimeout(x);
            t = setTimeout(function () {
                element.addClass('not-animated').
                    removeClass(elAnimateOut + ' not-animated').
                    addClass(elAnimate + ' animated');
            }, elDelayT);

        }, function () {

            element.addClass('not-animated').
                removeClass(elAnimate + ' not-animated').
                addClass(elAnimateOut + ' animated');
            if (elReset == 'true') {
                x = setTimeout(function () {
                    element.removeClass(elAnimateOut + ' animated').
                        addClass('not-animated');
                }, Number(elSpeed));
            }
            clearTimeout(t);

        });
    });

};

window.scwHtml5VideoPlugin = window.scwHtml5VideoPlugin || {};

window.SEMICOLON_html5VideoInit = function ($html5Video) {

    if ($html5Video.length < 1) {
        return true;
    }

    $html5Video.each(function () {
        let element = $(this),
            elVideo = element.find('video'),
            divWidth = element.outerWidth(),
            divHeight = element.outerHeight(),
            elWidth = ((16 * divHeight) / 9),
            elHeight = divHeight;

        if (elWidth < divWidth) {
            elWidth = divWidth;
            elHeight = ((9 * divWidth) / 16);
        }

        elVideo.css({ width: elWidth + 'px', height: elHeight + 'px' });

        if (elHeight > divHeight) {
            elVideo.css(
                { 'left': '', 'top': -((elHeight - divHeight) / 2) + 'px' });
        }

        if (elWidth > divWidth) {
            elVideo.css(
                { 'top': '', 'left': -((elWidth - divWidth) / 2) + 'px' });
        }

        if (SEMICOLON.isMobile.any() && !element.hasClass('no-placeholder')) {
            let placeholderImg = elVideo.attr('poster');

            if (placeholderImg != '') {
                element.append(
                    '<div class="video-placeholder" style="background-image: url(' +
                    placeholderImg + ');"></div>');
            }

            elVideo.hide();
        }
    });

};

/*!
 * imagesLoaded PACKAGED v4.1.4
 * JavaScript is all like "You images are done yet or what?"
 * MIT License
 */

!function (e, t) {
    'function' == typeof define && define.amd ? define('ev-emitter/ev-emitter',
        t) : 'object' == typeof module && module.exports
        ? module.exports = t()
        : e.EvEmitter = t();
}('undefined' != typeof window ? window : this, function () {
    function e () {}

    var t = e.prototype;
    return t.on = function (e, t) {
        if (e && t) {
            var i = this._events = this._events || {}, n = i[e] = i[e] || [];
            return n.indexOf(t) == -1 && n.push(t), this;
        }
    }, t.once = function (e, t) {
        if (e && t) {
            this.on(e, t);
            var i = this._onceEvents = this._onceEvents || {},
                n = i[e] = i[e] || {};
            return n[t] = !0, this;
        }
    }, t.off = function (e, t) {
        var i = this._events && this._events[e];
        if (i && i.length) {
            var n = i.indexOf(t);
            return n != -1 && i.splice(n, 1), this;
        }
    }, t.emitEvent = function (e, t) {
        var i = this._events && this._events[e];
        if (i && i.length) {
            i = i.slice(0), t = t || [];
            for (var n = this._onceEvents && this._onceEvents[e], o = 0; o <
            i.length; o++) {
                var r = i[o], s = n && n[r];
                s && (this.off(e, r), delete n[r]), r.apply(this, t);
            }
            return this;
        }
    }, t.allOff = function () {delete this._events, delete this._onceEvents;}, e;
}), function (e, t) {
    'use strict';
    'function' == typeof define && define.amd ? define(
        ['ev-emitter/ev-emitter'], function (i) {return t(e, i);}) : 'object' ==
    typeof module && module.exports ? module.exports = t(e,
        require('ev-emitter')) : e.imagesLoaded = t(e, e.EvEmitter);
}('undefined' != typeof window ? window : this, function (e, t) {
    function i (e, t) {
        for (var i in t) e[i] = t[i];
        return e;
    }

    function n (e) {
        if (Array.isArray(e)) return e;
        var t = 'object' == typeof e && 'number' == typeof e.length;
        return t ? d.call(e) : [e];
    }

    function o (e, t, r) {
        if (!(this instanceof o)) return new o(e, t, r);
        var s = e;
        return 'string' == typeof e && (s = document.querySelectorAll(e)), s
            ? (this.elements = n(s), this.options = i({},
                this.options), 'function' == typeof t ? r = t : i(this.options,
                t), r && this.on('always', r), this.getImages(), h &&
            (this.jqDeferred = new h.Deferred), void setTimeout(
                this.check.bind(this)))
            : void a.error('Bad element for imagesLoaded ' + (s || e));
    }

    function r (e) {this.img = e;}

    function s (e, t) {this.url = e, this.element = t, this.img = new Image;}

    var h = e.jQuery, a = e.console, d = Array.prototype.slice;
    o.prototype = Object.create(
        t.prototype), o.prototype.options = {}, o.prototype.getImages = function () {
        this.images = [], this.elements.forEach(this.addElementImages, this);
    }, o.prototype.addElementImages = function (e) {
        'IMG' == e.nodeName && this.addImage(e), this.options.background ===
        !0 && this.addElementBackgroundImages(e);
        var t = e.nodeType;
        if (t && u[t]) {
            for (var i = e.querySelectorAll('img'), n = 0; n < i.length; n++) {
                var o = i[n];
                this.addImage(o);
            }
            if ('string' == typeof this.options.background) {
                var r = e.querySelectorAll(this.options.background);
                for (n = 0; n < r.length; n++) {
                    var s = r[n];
                    this.addElementBackgroundImages(s);
                }
            }
        }
    };
    var u = { 1: !0, 9: !0, 11: !0 };
    return o.prototype.addElementBackgroundImages = function (e) {
        var t = getComputedStyle(e);
        if (t) for (var i = /url\((['"])?(.*?)\1\)/gi, n = i.exec(
            t.backgroundImage); null !== n;) {
            var o = n && n[2];
            o && this.addBackground(o, e), n = i.exec(t.backgroundImage);
        }
    }, o.prototype.addImage = function (e) {
        var t = new r(e);
        this.images.push(t);
    }, o.prototype.addBackground = function (e, t) {
        var i = new s(e, t);
        this.images.push(i);
    }, o.prototype.check = function () {
        function e (e, i, n) {
            setTimeout(function () {t.progress(e, i, n);});
        }

        var t = this;
        return this.progressedCount = 0, this.hasAnyBroken = !1, this.images.length
            ? void this.images.forEach(
                function (t) {t.once('progress', e), t.check();})
            : void this.complete();
    }, o.prototype.progress = function (
        e, t, i) {
        this.progressedCount++, this.hasAnyBroken = this.hasAnyBroken ||
            !e.isLoaded, this.emitEvent('progress',
            [this, e, t]), this.jqDeferred && this.jqDeferred.notify &&
        this.jqDeferred.notify(this, e), this.progressedCount ==
        this.images.length && this.complete(), this.options.debug && a &&
        a.log('progress: ' + i, e, t);
    }, o.prototype.complete = function () {
        var e = this.hasAnyBroken
            ? 'fail'
            : 'done';
        if (this.isComplete = !0, this.emitEvent(e, [this]), this.emitEvent(
            'always', [this]), this.jqDeferred) {
            var t = this.hasAnyBroken
                ? 'reject'
                : 'resolve';
            this.jqDeferred[t](this);
        }
    }, r.prototype = Object.create(
        t.prototype), r.prototype.check = function () {
        var e = this.getIsImageComplete();
        return e
            ? void this.confirm(0 !== this.img.naturalWidth, 'naturalWidth')
            : (this.proxyImage = new Image, this.proxyImage.addEventListener(
                'load', this), this.proxyImage.addEventListener('error',
                this), this.img.addEventListener('load',
                this), this.img.addEventListener('error',
                this), void (this.proxyImage.src = this.img.src));
    }, r.prototype.getIsImageComplete = function () {
        return this.img.complete && this.img.naturalWidth;
    }, r.prototype.confirm = function (e, t) {
        this.isLoaded = e, this.emitEvent('progress', [this, this.img, t]);
    }, r.prototype.handleEvent = function (e) {
        var t = 'on' + e.type;
        this[t] && this[t](e);
    }, r.prototype.onload = function () {
        this.confirm(!0, 'onload'), this.unbindEvents();
    }, r.prototype.onerror = function () {
        this.confirm(!1, 'onerror'), this.unbindEvents();
    }, r.prototype.unbindEvents = function () {
        this.proxyImage.removeEventListener('load',
            this), this.proxyImage.removeEventListener('error',
            this), this.img.removeEventListener('load',
            this), this.img.removeEventListener('error', this);
    }, s.prototype = Object.create(
        r.prototype), s.prototype.check = function () {
        this.img.addEventListener('load', this), this.img.addEventListener(
            'error', this), this.img.src = this.url;
        var e = this.getIsImageComplete();
        e && (this.confirm(0 !== this.img.naturalWidth,
            'naturalWidth'), this.unbindEvents());
    }, s.prototype.unbindEvents = function () {
        this.img.removeEventListener('load',
            this), this.img.removeEventListener('error', this);
    }, s.prototype.confirm = function (e, t) {
        this.isLoaded = e, this.emitEvent('progress', [this, this.element, t]);
    }, o.makeJQueryPlugin = function (t) {
        t = t || e.jQuery, t && (h = t, h.fn.imagesLoaded = function (e, t) {
            var i = new o(this, e, t);
            return i.jqDeferred.promise(h(this));
        });
    }, o.makeJQueryPlugin(), o;
});

window.scwInstagramPlugin = window.scwInstagramPlugin || {};

window.SEMICOLON_instagramPhotosInit = function ($instagramPhotosEl) {

    if ($instagramPhotosEl.length < 1) {
        return true;
    }

    $instagramPhotosEl.each(function () {
        let element = $(this),
            elLimit = element.attr('data-count') || 12,
            elLoader = element.attr('data-loader') ||
                'include/instagram/instagram.php',
            elFetch = element.attr('data-fetch-message') ||
                'Fetching Photos from Instagram...';

        if (Number(elLimit) > 12) {
            elLimit = 12;
        }

        SEMICOLON_getInstagramPhotos(element, elLoader, elLimit, elFetch);
    });

};

window.SEMICOLON_getInstagramPhotos = function (
    element, loader, limit, fetchAlert) {

    let newimages = '';

    element.after(
        '<div class="alert alert-warning instagram-widget-alert text-center"><div class="spinner-grow spinner-grow-sm mr-2" role="status"><span class="visually-hidden">Loading...</span></div> ' +
        fetchAlert + '</div>');

    $.getJSON(loader, function (images) {

        if (images.length > 0) {
            element.parents().find('.instagram-widget-alert').remove();
            let html = '';
            for (let i = 0; i < limit; i++) {
                if (i === limit)
                    continue;

                let photo = images[i],
                    thumb = photo.media_url;
                if (photo.media_type === 'VIDEO') {
                    thumb = photo.thumbnail_url;
                }
                element.append('<a class="grid-item" href="' + photo.permalink +
                    '" target="_blank"><img src="' + thumb +
                    '" alt="Image"></a>');

                // $.getJSON( 'https://graph.instagram.com/' + images[i].id + '?fields=media_url,permalink,media_type,thumbnail_url&access_token=' + accessToken, function( photo ){

                // });

            }
        }

        element.removeClass('customjs');
        setTimeout(function () {
            SEMICOLON.widget.gridInit();
            SEMICOLON.widget.masonryThumbs();
        }, 500);

    });

};

/*!
 * Isotope PACKAGED v3.0.6
 *
 * Licensed GPLv3 for open source use
 * or Isotope Commercial License for commercial use
 *
 * https://isotope.metafizzy.co
 * Copyright 2010-2018 Metafizzy
 */

!function (t, e) {
    'function' == typeof define && define.amd
        ? define('jquery-bridget/jquery-bridget', ['jquery'],
        function (i) {return e(t, i);})
        : 'object' == typeof module && module.exports ? module.exports = e(t,
        require('jquery')) : t.jQueryBridget = e(t, t.jQuery);
}(window, function (t, e) {
    'use strict';

    function i (i, s, a) {
        function u (t, e, o) {
            var n, s = '$().' + i + '("' + e + '")';
            return t.each(function (t, u) {
                var h = a.data(u, i);
                if (!h) return void r(
                    i + ' not initialized. Cannot call methods, i.e. ' + s);
                var d = h[e];
                if (!d || '_' == e.charAt(0)) return void r(
                    s + ' is not a valid method');
                var l = d.apply(h, o);
                n = void 0 === n ? l : n;
            }), void 0 !== n ? n : t;
        }

        function h (t, e) {
            t.each(function (t, o) {
                var n = a.data(o, i);
                n ? (n.option(e), n._init()) : (n = new s(o, e), a.data(o, i,
                    n));
            });
        }

        a = a || e || t.jQuery, a && (s.prototype.option ||
        (s.prototype.option = function (t) {
            a.isPlainObject(t) &&
            (this.options = a.extend(!0, this.options, t));
        }), a.fn[i] = function (t) {
            if ('string' == typeof t) {
                var e = n.call(arguments, 1);
                return u(this, t, e);
            }
            return h(this, t), this;
        }, o(a));
    }

    function o (t) {!t || t && t.bridget || (t.bridget = i);}

    var n = Array.prototype.slice, s = t.console,
        r = 'undefined' == typeof s ? function () {} : function (t) {
            s.error(t);
        };
    return o(e || t.jQuery), i;
}), function (t, e) {
    'function' == typeof define && define.amd ? define('ev-emitter/ev-emitter',
        e) : 'object' == typeof module && module.exports
        ? module.exports = e()
        : t.EvEmitter = e();
}('undefined' != typeof window ? window : this, function () {
    function t () {}

    var e = t.prototype;
    return e.on = function (t, e) {
        if (t && e) {
            var i = this._events = this._events || {}, o = i[t] = i[t] || [];
            return o.indexOf(e) == -1 && o.push(e), this;
        }
    }, e.once = function (t, e) {
        if (t && e) {
            this.on(t, e);
            var i = this._onceEvents = this._onceEvents || {},
                o = i[t] = i[t] || {};
            return o[e] = !0, this;
        }
    }, e.off = function (t, e) {
        var i = this._events && this._events[t];
        if (i && i.length) {
            var o = i.indexOf(e);
            return o != -1 && i.splice(o, 1), this;
        }
    }, e.emitEvent = function (t, e) {
        var i = this._events && this._events[t];
        if (i && i.length) {
            i = i.slice(0), e = e || [];
            for (var o = this._onceEvents && this._onceEvents[t], n = 0; n <
            i.length; n++) {
                var s = i[n], r = o && o[s];
                r && (this.off(t, s), delete o[s]), s.apply(this, e);
            }
            return this;
        }
    }, e.allOff = function () {delete this._events, delete this._onceEvents;}, t;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define('get-size/get-size', e)
        : 'object' == typeof module && module.exports
        ? module.exports = e()
        : t.getSize = e();
}(window, function () {
    'use strict';

    function t (t) {
        var e = parseFloat(t), i = t.indexOf('%') == -1 && !isNaN(e);
        return i && e;
    }

    function e () {}

    function i () {
        for (var t = {
            width: 0,
            height: 0,
            innerWidth: 0,
            innerHeight: 0,
            outerWidth: 0,
            outerHeight: 0,
        }, e = 0; e < h; e++) {
            var i = u[e];
            t[i] = 0;
        }
        return t;
    }

    function o (t) {
        var e = getComputedStyle(t);
        return e || a('Style returned ' + e +
            '. Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1'), e;
    }

    function n () {
        if (!d) {
            d = !0;
            var e = document.createElement('div');
            e.style.width = '200px', e.style.padding = '1px 2px 3px 4px', e.style.borderStyle = 'solid', e.style.borderWidth = '1px 2px 3px 4px', e.style.boxSizing = 'border-box';
            var i = document.body || document.documentElement;
            i.appendChild(e);
            var n = o(e);
            r = 200 ==
                Math.round(t(n.width)), s.isBoxSizeOuter = r, i.removeChild(e);
        }
    }

    function s (e) {
        if (n(), 'string' == typeof e && (e = document.querySelector(e)), e &&
        'object' == typeof e && e.nodeType) {
            var s = o(e);
            if ('none' == s.display) return i();
            var a = {};
            a.width = e.offsetWidth, a.height = e.offsetHeight;
            for (var d = a.isBorderBox = 'border-box' == s.boxSizing, l = 0; l <
            h; l++) {
                var f = u[l], c = s[f], m = parseFloat(c);
                a[f] = isNaN(m) ? 0 : m;
            }
            var p = a.paddingLeft + a.paddingRight,
                y = a.paddingTop + a.paddingBottom,
                g = a.marginLeft + a.marginRight,
                v = a.marginTop + a.marginBottom,
                _ = a.borderLeftWidth + a.borderRightWidth,
                z = a.borderTopWidth + a.borderBottomWidth, I = d && r,
                x = t(s.width);
            x !== !1 && (a.width = x + (I ? 0 : p + _));
            var S = t(s.height);
            return S !== !1 &&
            (a.height = S + (I ? 0 : y + z)), a.innerWidth = a.width -
                (p + _), a.innerHeight = a.height -
                (y + z), a.outerWidth = a.width + g, a.outerHeight = a.height +
                v, a;
        }
    }

    var r,
        a = 'undefined' == typeof console ? e : function (t) {
            console.error(t);
        },
        u = [
            'paddingLeft',
            'paddingRight',
            'paddingTop',
            'paddingBottom',
            'marginLeft',
            'marginRight',
            'marginTop',
            'marginBottom',
            'borderLeftWidth',
            'borderRightWidth',
            'borderTopWidth',
            'borderBottomWidth'], h = u.length, d = !1;
    return s;
}), function (t, e) {
    'use strict';
    'function' == typeof define && define.amd ? define(
        'desandro-matches-selector/matches-selector', e) : 'object' ==
    typeof module && module.exports
        ? module.exports = e()
        : t.matchesSelector = e();
}(window, function () {
    'use strict';
    var t = function () {
        var t = window.Element.prototype;
        if (t.matches) return 'matches';
        if (t.matchesSelector) return 'matchesSelector';
        for (var e = ['webkit', 'moz', 'ms', 'o'], i = 0; i < e.length; i++) {
            var o = e[i], n = o + 'MatchesSelector';
            if (t[n]) return n;
        }
    }();
    return function (e, i) {return e[t](i);};
}), function (t, e) {
    'function' == typeof define && define.amd ? define('fizzy-ui-utils/utils',
        ['desandro-matches-selector/matches-selector'],
        function (i) {return e(t, i);}) : 'object' == typeof module &&
    module.exports
        ? module.exports = e(t, require('desandro-matches-selector'))
        : t.fizzyUIUtils = e(t, t.matchesSelector);
}(window, function (t, e) {
    var i = {};
    i.extend = function (t, e) {
        for (var i in e) t[i] = e[i];
        return t;
    }, i.modulo = function (t, e) {return (t % e + e) % e;};
    var o = Array.prototype.slice;
    i.makeArray = function (t) {
        if (Array.isArray(t)) return t;
        if (null === t || void 0 === t) return [];
        var e = 'object' == typeof t && 'number' == typeof t.length;
        return e ? o.call(t) : [t];
    }, i.removeFrom = function (t, e) {
        var i = t.indexOf(e);
        i != -1 && t.splice(i, 1);
    }, i.getParent = function (t, i) {
        for (; t.parentNode && t != document.body;) if (t = t.parentNode, e(t,
            i)) return t;
    }, i.getQueryElement = function (t) {
        return 'string' == typeof t
            ? document.querySelector(t)
            : t;
    }, i.handleEvent = function (t) {
        var e = 'on' + t.type;
        this[e] && this[e](t);
    }, i.filterFindElements = function (t, o) {
        t = i.makeArray(t);
        var n = [];
        return t.forEach(function (t) {
            if (t instanceof HTMLElement) {
                if (!o) return void n.push(t);
                e(t, o) && n.push(t);
                for (var i = t.querySelectorAll(o), s = 0; s <
                i.length; s++) n.push(i[s]);
            }
        }), n;
    }, i.debounceMethod = function (t, e, i) {
        i = i || 100;
        var o = t.prototype[e], n = e + 'Timeout';
        t.prototype[e] = function () {
            var t = this[n];
            clearTimeout(t);
            var e = arguments, s = this;
            this[n] = setTimeout(function () {o.apply(s, e), delete s[n];}, i);
        };
    }, i.docReady = function (t) {
        var e = document.readyState;
        'complete' == e || 'interactive' == e
            ? setTimeout(t)
            : document.addEventListener('DOMContentLoaded', t);
    }, i.toDashed = function (t) {
        return t.replace(/(.)([A-Z])/g,
            function (t, e, i) {return e + '-' + i;}).toLowerCase();
    };
    var n = t.console;
    return i.htmlInit = function (e, o) {
        i.docReady(function () {
            var s = i.toDashed(o), r = 'data-' + s,
                a = document.querySelectorAll('[' + r + ']'),
                u = document.querySelectorAll('.js-' + s),
                h = i.makeArray(a).concat(i.makeArray(u)), d = r + '-options',
                l = t.jQuery;
            h.forEach(function (t) {
                var i, s = t.getAttribute(r) || t.getAttribute(d);
                try {i = s && JSON.parse(s);} catch (a) {
                    return void (n && n.error(
                        'Error parsing ' + r + ' on ' + t.className + ': ' +
                        a));
                }
                var u = new e(t, i);
                l && l.data(t, o, u);
            });
        });
    }, i;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define('outlayer/item',
        ['ev-emitter/ev-emitter', 'get-size/get-size'], e)
        : 'object' == typeof module && module.exports
        ? module.exports = e(require('ev-emitter'), require('get-size'))
        : (t.Outlayer = {}, t.Outlayer.Item = e(t.EvEmitter, t.getSize));
}(window, function (t, e) {
    'use strict';

    function i (t) {
        for (var e in t) return !1;
        return e = null, !0;
    }

    function o (t, e) {
        t && (this.element = t, this.layout = e, this.position = {
            x: 0,
            y: 0,
        }, this._create());
    }

    function n (t) {
        return t.replace(/([A-Z])/g,
            function (t) {return '-' + t.toLowerCase();});
    }

    var s = document.documentElement.style,
        r = 'string' == typeof s.transition ? 'transition' : 'WebkitTransition',
        a = 'string' == typeof s.transform ? 'transform' : 'WebkitTransform',
        u = {
            WebkitTransition: 'webkitTransitionEnd',
            transition: 'transitionend',
        }[r], h = {
            transform: a,
            transition: r,
            transitionDuration: r + 'Duration',
            transitionProperty: r + 'Property',
            transitionDelay: r + 'Delay',
        }, d = o.prototype = Object.create(t.prototype);
    d.constructor = o, d._create = function () {
        this._transn = {
            ingProperties: {},
            clean: {},
            onEnd: {},
        }, this.css({ position: 'absolute' });
    }, d.handleEvent = function (t) {
        var e = 'on' + t.type;
        this[e] && this[e](t);
    }, d.getSize = function () {
        this.size = e(this.element);
    }, d.css = function (t) {
        var e = this.element.style;
        for (var i in t) {
            var o = h[i] || i;
            e[o] = t[i];
        }
    }, d.getPosition = function () {
        var t = getComputedStyle(this.element),
            e = this.layout._getOption('originLeft'),
            i = this.layout._getOption('originTop'),
            o = t[e ? 'left' : 'right'], n = t[i ? 'top' : 'bottom'],
            s = parseFloat(o), r = parseFloat(n), a = this.layout.size;
        o.indexOf('%') != -1 && (s = s / 100 * a.width), n.indexOf('%') != -1 &&
        (r = r / 100 * a.height), s = isNaN(s) ? 0 : s, r = isNaN(r)
            ? 0
            : r, s -= e ? a.paddingLeft : a.paddingRight, r -= i
            ? a.paddingTop
            : a.paddingBottom, this.position.x = s, this.position.y = r;
    }, d.layoutPosition = function () {
        var t = this.layout.size, e = {},
            i = this.layout._getOption('originLeft'),
            o = this.layout._getOption('originTop'),
            n = i ? 'paddingLeft' : 'paddingRight', s = i ? 'left' : 'right',
            r = i ? 'right' : 'left', a = this.position.x + t[n];
        e[s] = this.getXValue(a), e[r] = '';
        var u = o ? 'paddingTop' : 'paddingBottom', h = o ? 'top' : 'bottom',
            d = o ? 'bottom' : 'top', l = this.position.y + t[u];
        e[h] = this.getYValue(l), e[d] = '', this.css(e), this.emitEvent(
            'layout', [this]);
    }, d.getXValue = function (t) {
        var e = this.layout._getOption('horizontal');
        return this.layout.options.percentPosition && !e ? t /
            this.layout.size.width * 100 + '%' : t + 'px';
    }, d.getYValue = function (t) {
        var e = this.layout._getOption('horizontal');
        return this.layout.options.percentPosition && e ? t /
            this.layout.size.height * 100 + '%' : t + 'px';
    }, d._transitionTo = function (t, e) {
        this.getPosition();
        var i = this.position.x, o = this.position.y,
            n = t == this.position.x && e == this.position.y;
        if (this.setPosition(t, e), n &&
        !this.isTransitioning) return void this.layoutPosition();
        var s = t - i, r = e - o, a = {};
        a.transform = this.getTranslate(s, r), this.transition({
            to: a,
            onTransitionEnd: { transform: this.layoutPosition },
            isCleaning: !0,
        });
    }, d.getTranslate = function (t, e) {
        var i = this.layout._getOption('originLeft'),
            o = this.layout._getOption('originTop');
        return t = i ? t : -t, e = o ? e : -e, 'translate3d(' + t + 'px, ' + e +
        'px, 0)';
    }, d.goTo = function (t, e) {
        this.setPosition(t, e), this.layoutPosition();
    }, d.moveTo = d._transitionTo, d.setPosition = function (
        t, e) {
        this.position.x = parseFloat(t), this.position.y = parseFloat(e);
    }, d._nonTransition = function (t) {
        this.css(t.to), t.isCleaning && this._removeStyles(t.to);
        for (var e in t.onTransitionEnd) t.onTransitionEnd[e].call(this);
    }, d.transition = function (t) {
        if (!parseFloat(
            this.layout.options.transitionDuration)) return void this._nonTransition(
            t);
        var e = this._transn;
        for (var i in t.onTransitionEnd) e.onEnd[i] = t.onTransitionEnd[i];
        for (i in t.to) e.ingProperties[i] = !0, t.isCleaning &&
        (e.clean[i] = !0);
        if (t.from) {
            this.css(t.from);
            var o = this.element.offsetHeight;
            o = null;
        }
        this.enableTransition(t.to), this.css(t.to), this.isTransitioning = !0;
    };
    var l = 'opacity,' + n(a);
    d.enableTransition = function () {
        if (!this.isTransitioning) {
            var t = this.layout.options.transitionDuration;
            t = 'number' == typeof t ? t + 'ms' : t, this.css({
                transitionProperty: l,
                transitionDuration: t,
                transitionDelay: this.staggerDelay || 0,
            }), this.element.addEventListener(u, this, !1);
        }
    }, d.onwebkitTransitionEnd = function (t) {
        this.ontransitionend(t);
    }, d.onotransitionend = function (t) {this.ontransitionend(t);};
    var f = { '-webkit-transform': 'transform' };
    d.ontransitionend = function (t) {
        if (t.target === this.element) {
            var e = this._transn, o = f[t.propertyName] || t.propertyName;
            if (delete e.ingProperties[o], i(e.ingProperties) &&
            this.disableTransition(), o in e.clean &&
            (this.element.style[t.propertyName] = '', delete e.clean[o]), o in
            e.onEnd) {
                var n = e.onEnd[o];
                n.call(this), delete e.onEnd[o];
            }
            this.emitEvent('transitionEnd', [this]);
        }
    }, d.disableTransition = function () {
        this.removeTransitionStyles(), this.element.removeEventListener(u, this,
            !1), this.isTransitioning = !1;
    }, d._removeStyles = function (t) {
        var e = {};
        for (var i in t) e[i] = '';
        this.css(e);
    };
    var c = {
        transitionProperty: '',
        transitionDuration: '',
        transitionDelay: '',
    };
    return d.removeTransitionStyles = function () {
        this.css(c);
    }, d.stagger = function (t) {
        t = isNaN(t) ? 0 : t, this.staggerDelay = t + 'ms';
    }, d.removeElem = function () {
        this.element.parentNode.removeChild(this.element), this.css(
            { display: '' }), this.emitEvent('remove', [this]);
    }, d.remove = function () {
        return r && parseFloat(this.layout.options.transitionDuration)
            ? (this.once('transitionEnd',
                function () {this.removeElem();}), void this.hide())
            : void this.removeElem();
    }, d.reveal = function () {
        delete this.isHidden, this.css({ display: '' });
        var t = this.layout.options, e = {},
            i = this.getHideRevealTransitionEndProperty('visibleStyle');
        e[i] = this.onRevealTransitionEnd, this.transition({
            from: t.hiddenStyle,
            to: t.visibleStyle,
            isCleaning: !0,
            onTransitionEnd: e,
        });
    }, d.onRevealTransitionEnd = function () {
        this.isHidden || this.emitEvent('reveal');
    }, d.getHideRevealTransitionEndProperty = function (t) {
        var e = this.layout.options[t];
        if (e.opacity) return 'opacity';
        for (var i in e) return i;
    }, d.hide = function () {
        this.isHidden = !0, this.css({ display: '' });
        var t = this.layout.options, e = {},
            i = this.getHideRevealTransitionEndProperty('hiddenStyle');
        e[i] = this.onHideTransitionEnd, this.transition({
            from: t.visibleStyle,
            to: t.hiddenStyle,
            isCleaning: !0,
            onTransitionEnd: e,
        });
    }, d.onHideTransitionEnd = function () {
        this.isHidden &&
        (this.css({ display: 'none' }), this.emitEvent('hide'));
    }, d.destroy = function () {
        this.css({
            position: '',
            left: '',
            right: '',
            top: '',
            bottom: '',
            transition: '',
            transform: '',
        });
    }, o;
}), function (t, e) {
    'use strict';
    'function' == typeof define && define.amd
        ? define('outlayer/outlayer', [
            'ev-emitter/ev-emitter',
            'get-size/get-size',
            'fizzy-ui-utils/utils',
            './item'], function (i, o, n, s) {return e(t, i, o, n, s);})
        : 'object' == typeof module && module.exports ? module.exports = e(t,
        require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'),
        require('./item')) : t.Outlayer = e(t, t.EvEmitter, t.getSize,
        t.fizzyUIUtils, t.Outlayer.Item);
}(window, function (t, e, i, o, n) {
    'use strict';

    function s (t, e) {
        var i = o.getQueryElement(t);
        if (!i) return void (u && u.error(
            'Bad element for ' + this.constructor.namespace + ': ' + (i || t)));
        this.element = i, h &&
        (this.$element = h(this.element)), this.options = o.extend({},
            this.constructor.defaults), this.option(e);
        var n = ++l;
        this.element.outlayerGUID = n, f[n] = this, this._create();
        var s = this._getOption('initLayout');
        s && this.layout();
    }

    function r (t) {
        function e () {t.apply(this, arguments);}

        return e.prototype = Object.create(
            t.prototype), e.prototype.constructor = e, e;
    }

    function a (t) {
        if ('number' == typeof t) return t;
        var e = t.match(/(^\d*\.?\d*)(\w*)/), i = e && e[1], o = e && e[2];
        if (!i.length) return 0;
        i = parseFloat(i);
        var n = m[o] || 1;
        return i * n;
    }

    var u = t.console, h = t.jQuery, d = function () {}, l = 0, f = {};
    s.namespace = 'outlayer', s.Item = n, s.defaults = {
        containerStyle: { position: 'relative' },
        initLayout: !0,
        originLeft: !0,
        originTop: !0,
        resize: !0,
        resizeContainer: !0,
        transitionDuration: '0.4s',
        hiddenStyle: { opacity: 0, transform: 'scale(0.001)' },
        visibleStyle: { opacity: 1, transform: 'scale(1)' },
    };
    var c = s.prototype;
    o.extend(c, e.prototype), c.option = function (t) {
        o.extend(this.options, t);
    }, c._getOption = function (t) {
        var e = this.constructor.compatOptions[t];
        return e && void 0 !== this.options[e]
            ? this.options[e]
            : this.options[t];
    }, s.compatOptions = {
        initLayout: 'isInitLayout',
        horizontal: 'isHorizontal',
        layoutInstant: 'isLayoutInstant',
        originLeft: 'isOriginLeft',
        originTop: 'isOriginTop',
        resize: 'isResizeBound',
        resizeContainer: 'isResizingContainer',
    }, c._create = function () {
        this.reloadItems(), this.stamps = [], this.stamp(
            this.options.stamp), o.extend(this.element.style,
            this.options.containerStyle);
        var t = this._getOption('resize');
        t && this.bindResize();
    }, c.reloadItems = function () {
        this.items = this._itemize(this.element.children);
    }, c._itemize = function (t) {
        for (var e = this._filterFindItemElements(
            t), i = this.constructor.Item, o = [], n = 0; n < e.length; n++) {
            var s = e[n], r = new i(s, this);
            o.push(r);
        }
        return o;
    }, c._filterFindItemElements = function (t) {
        return o.filterFindElements(t, this.options.itemSelector);
    }, c.getItemElements = function () {
        return this.items.map(function (t) {return t.element;});
    }, c.layout = function () {
        this._resetLayout(), this._manageStamps();
        var t = this._getOption('layoutInstant'),
            e = void 0 !== t ? t : !this._isLayoutInited;
        this.layoutItems(this.items, e), this._isLayoutInited = !0;
    }, c._init = c.layout, c._resetLayout = function () {this.getSize();}, c.getSize = function () {
        this.size = i(this.element);
    }, c._getMeasurement = function (t, e) {
        var o, n = this.options[t];
        n
            ? ('string' == typeof n
            ? o = this.element.querySelector(n)
            : n instanceof HTMLElement && (o = n), this[t] = o ? i(o)[e] : n)
            : this[t] = 0;
    }, c.layoutItems = function (t, e) {
        t = this._getItemsForLayout(t), this._layoutItems(t,
            e), this._postLayout();
    }, c._getItemsForLayout = function (t) {
        return t.filter(function (t) {return !t.isIgnored;});
    }, c._layoutItems = function (t, e) {
        if (this._emitCompleteOnItems('layout', t), t && t.length) {
            var i = [];
            t.forEach(function (t) {
                var o = this._getItemLayoutPosition(t);
                o.item = t, o.isInstant = e || t.isLayoutInstant, i.push(o);
            }, this), this._processLayoutQueue(i);
        }
    }, c._getItemLayoutPosition = function () {
        return {
            x: 0,
            y: 0,
        };
    }, c._processLayoutQueue = function (t) {
        this.updateStagger(), t.forEach(function (t, e) {
            this._positionItem(t.item, t.x, t.y, t.isInstant, e);
        }, this);
    }, c.updateStagger = function () {
        var t = this.options.stagger;
        return null === t || void 0 === t
            ? void (this.stagger = 0)
            : (this.stagger = a(t), this.stagger);
    }, c._positionItem = function (t, e, i, o, n) {
        o
            ? t.goTo(e, i)
            : (t.stagger(n * this.stagger), t.moveTo(e, i));
    }, c._postLayout = function () {this.resizeContainer();}, c.resizeContainer = function () {
        var t = this._getOption('resizeContainer');
        if (t) {
            var e = this._getContainerSize();
            e &&
            (this._setContainerMeasure(e.width, !0), this._setContainerMeasure(
                e.height, !1));
        }
    }, c._getContainerSize = d, c._setContainerMeasure = function (
        t, e) {
        if (void 0 !== t) {
            var i = this.size;
            i.isBorderBox &&
            (t += e ? i.paddingLeft + i.paddingRight + i.borderLeftWidth +
                i.borderRightWidth : i.paddingBottom + i.paddingTop +
                i.borderTopWidth + i.borderBottomWidth), t = Math.max(t,
                0), this.element.style[e ? 'width' : 'height'] = t + 'px';
        }
    }, c._emitCompleteOnItems = function (t, e) {
        function i () {
            n.dispatchEvent(t + 'Complete', null, [e]);
        }

        function o () {r++, r == s && i();}

        var n = this, s = e.length;
        if (!e || !s) return void i();
        var r = 0;
        e.forEach(function (e) {e.once(t, o);});
    }, c.dispatchEvent = function (t, e, i) {
        var o = e ? [e].concat(i) : i;
        if (this.emitEvent(t, o), h) if (this.$element = this.$element ||
            h(this.element), e) {
            var n = h.Event(e);
            n.type = t, this.$element.trigger(n, i);
        } else this.$element.trigger(t, i);
    }, c.ignore = function (t) {
        var e = this.getItem(t);
        e && (e.isIgnored = !0);
    }, c.unignore = function (t) {
        var e = this.getItem(t);
        e && delete e.isIgnored;
    }, c.stamp = function (t) {
        t = this._find(t), t &&
        (this.stamps = this.stamps.concat(t), t.forEach(this.ignore, this));
    }, c.unstamp = function (t) {
        t = this._find(t), t &&
        t.forEach(
            function (t) {o.removeFrom(this.stamps, t), this.unignore(t);},
            this);
    }, c._find = function (t) {
        if (t) return 'string' == typeof t &&
        (t = this.element.querySelectorAll(t)), t = o.makeArray(t);
    }, c._manageStamps = function () {
        this.stamps && this.stamps.length &&
        (this._getBoundingRect(), this.stamps.forEach(this._manageStamp, this));
    }, c._getBoundingRect = function () {
        var t = this.element.getBoundingClientRect(), e = this.size;
        this._boundingRect = {
            left: t.left + e.paddingLeft + e.borderLeftWidth,
            top: t.top + e.paddingTop + e.borderTopWidth,
            right: t.right - (e.paddingRight + e.borderRightWidth),
            bottom: t.bottom - (e.paddingBottom + e.borderBottomWidth),
        };
    }, c._manageStamp = d, c._getElementOffset = function (t) {
        var e = t.getBoundingClientRect(), o = this._boundingRect, n = i(t),
            s = {
                left: e.left - o.left - n.marginLeft,
                top: e.top - o.top - n.marginTop,
                right: o.right - e.right - n.marginRight,
                bottom: o.bottom - e.bottom - n.marginBottom,
            };
        return s;
    }, c.handleEvent = o.handleEvent, c.bindResize = function () {
        t.addEventListener('resize', this), this.isResizeBound = !0;
    }, c.unbindResize = function () {
        t.removeEventListener('resize', this), this.isResizeBound = !1;
    }, c.onresize = function () {this.resize();}, o.debounceMethod(s,
        'onresize',
        100), c.resize = function () {
        this.isResizeBound && this.needsResizeLayout() && this.layout();
    }, c.needsResizeLayout = function () {
        var t = i(this.element), e = this.size && t;
        return e && t.innerWidth !== this.size.innerWidth;
    }, c.addItems = function (t) {
        var e = this._itemize(t);
        return e.length && (this.items = this.items.concat(e)), e;
    }, c.appended = function (t) {
        var e = this.addItems(t);
        e.length && (this.layoutItems(e, !0), this.reveal(e));
    }, c.prepended = function (t) {
        var e = this._itemize(t);
        if (e.length) {
            var i = this.items.slice(0);
            this.items = e.concat(
                i), this._resetLayout(), this._manageStamps(), this.layoutItems(
                e, !0), this.reveal(e), this.layoutItems(i);
        }
    }, c.reveal = function (t) {
        if (this._emitCompleteOnItems('reveal', t), t && t.length) {
            var e = this.updateStagger();
            t.forEach(function (t, i) {t.stagger(i * e), t.reveal();});
        }
    }, c.hide = function (t) {
        if (this._emitCompleteOnItems('hide', t), t && t.length) {
            var e = this.updateStagger();
            t.forEach(function (t, i) {t.stagger(i * e), t.hide();});
        }
    }, c.revealItemElements = function (t) {
        var e = this.getItems(t);
        this.reveal(e);
    }, c.hideItemElements = function (t) {
        var e = this.getItems(t);
        this.hide(e);
    }, c.getItem = function (t) {
        for (var e = 0; e < this.items.length; e++) {
            var i = this.items[e];
            if (i.element == t) return i;
        }
    }, c.getItems = function (t) {
        t = o.makeArray(t);
        var e = [];
        return t.forEach(function (t) {
            var i = this.getItem(t);
            i && e.push(i);
        }, this), e;
    }, c.remove = function (t) {
        var e = this.getItems(t);
        this._emitCompleteOnItems('remove', e), e && e.length &&
        e.forEach(function (t) {t.remove(), o.removeFrom(this.items, t);},
            this);
    }, c.destroy = function () {
        var t = this.element.style;
        t.height = '', t.position = '', t.width = '', this.items.forEach(
            function (t) {t.destroy();}), this.unbindResize();
        var e = this.element.outlayerGUID;
        delete f[e], delete this.element.outlayerGUID, h &&
        h.removeData(this.element, this.constructor.namespace);
    }, s.data = function (t) {
        t = o.getQueryElement(t);
        var e = t && t.outlayerGUID;
        return e && f[e];
    }, s.create = function (t, e) {
        var i = r(s);
        return i.defaults = o.extend({}, s.defaults), o.extend(i.defaults,
            e), i.compatOptions = o.extend({},
            s.compatOptions), i.namespace = t, i.data = s.data, i.Item = r(
            n), o.htmlInit(i, t), h && h.bridget && h.bridget(t, i), i;
    };
    var m = { ms: 1, s: 1e3 };
    return s.Item = n, s;
}), function (t, e) {
    'function' == typeof define && define.amd ? define('isotope-layout/js/item',
        ['outlayer/outlayer'], e) : 'object' == typeof module && module.exports
        ? module.exports = e(require('outlayer'))
        : (t.Isotope = t.Isotope || {}, t.Isotope.Item = e(t.Outlayer));
}(window, function (t) {
    'use strict';

    function e () {t.Item.apply(this, arguments);}

    var i = e.prototype = Object.create(t.Item.prototype), o = i._create;
    i._create = function () {
        this.id = this.layout.itemGUID++, o.call(this), this.sortData = {};
    }, i.updateSortData = function () {
        if (!this.isIgnored) {
            this.sortData.id = this.id, this.sortData['original-order'] = this.id, this.sortData.random = Math.random();
            var t = this.layout.options.getSortData, e = this.layout._sorters;
            for (var i in t) {
                var o = e[i];
                this.sortData[i] = o(this.element, this);
            }
        }
    };
    var n = i.destroy;
    return i.destroy = function () {
        n.apply(this, arguments), this.css({ display: '' });
    }, e;
}), function (t, e) {
    'function' == typeof define && define.amd ? define(
        'isotope-layout/js/layout-mode',
        ['get-size/get-size', 'outlayer/outlayer'], e) : 'object' ==
    typeof module && module.exports ? module.exports = e(require('get-size'),
        require('outlayer')) : (t.Isotope = t.Isotope ||
        {}, t.Isotope.LayoutMode = e(t.getSize, t.Outlayer));
}(window, function (t, e) {
    'use strict';

    function i (t) {
        this.isotope = t, t &&
        (this.options = t.options[this.namespace], this.element = t.element, this.items = t.filteredItems, this.size = t.size);
    }

    var o = i.prototype, n = [
        '_resetLayout',
        '_getItemLayoutPosition',
        '_manageStamp',
        '_getContainerSize',
        '_getElementOffset',
        'needsResizeLayout',
        '_getOption'];
    return n.forEach(function (t) {
        o[t] = function () {
            return e.prototype[t].apply(this.isotope, arguments);
        };
    }), o.needsVerticalResizeLayout = function () {
        var e = t(this.isotope.element), i = this.isotope.size && e;
        return i && e.innerHeight != this.isotope.size.innerHeight;
    }, o._getMeasurement = function () {
        this.isotope._getMeasurement.apply(this, arguments);
    }, o.getColumnWidth = function () {
        this.getSegmentSize('column', 'Width');
    }, o.getRowHeight = function () {
        this.getSegmentSize('row', 'Height');
    }, o.getSegmentSize = function (t, e) {
        var i = t + e, o = 'outer' + e;
        if (this._getMeasurement(i, o), !this[i]) {
            var n = this.getFirstItemSize();
            this[i] = n && n[o] || this.isotope.size['inner' + e];
        }
    }, o.getFirstItemSize = function () {
        var e = this.isotope.filteredItems[0];
        return e && e.element && t(e.element);
    }, o.layout = function () {
        this.isotope.layout.apply(this.isotope, arguments);
    }, o.getSize = function () {this.isotope.getSize(), this.size = this.isotope.size;}, i.modes = {}, i.create = function (
        t, e) {
        function n () {
            i.apply(this, arguments);
        }

        return n.prototype = Object.create(o), n.prototype.constructor = n, e &&
        (n.options = e), n.prototype.namespace = t, i.modes[t] = n, n;
    }, i;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define('masonry-layout/masonry',
        ['outlayer/outlayer', 'get-size/get-size'], e)
        : 'object' == typeof module && module.exports ? module.exports = e(
        require('outlayer'), require('get-size')) : t.Masonry = e(t.Outlayer,
        t.getSize);
}(window, function (t, e) {
    var i = t.create('masonry');
    i.compatOptions.fitWidth = 'isFitWidth';
    var o = i.prototype;
    return o._resetLayout = function () {
        this.getSize(), this._getMeasurement('columnWidth',
            'outerWidth'), this._getMeasurement('gutter',
            'outerWidth'), this.measureColumns(), this.colYs = [];
        for (var t = 0; t < this.cols; t++) this.colYs.push(0);
        this.maxY = 0, this.horizontalColIndex = 0;
    }, o.measureColumns = function () {
        if (this.getContainerWidth(), !this.columnWidth) {
            var t = this.items[0], i = t && t.element;
            this.columnWidth = i && e(i).outerWidth || this.containerWidth;
        }
        var o = this.columnWidth += this.gutter,
            n = this.containerWidth + this.gutter, s = n / o, r = o - n % o,
            a = r && r < 1 ? 'round' : 'floor';
        s = Math[a](s), this.cols = Math.max(s, 1);
    }, o.getContainerWidth = function () {
        var t = this._getOption('fitWidth'),
            i = t ? this.element.parentNode : this.element, o = e(i);
        this.containerWidth = o && o.innerWidth;
    }, o._getItemLayoutPosition = function (t) {
        t.getSize();
        var e = t.size.outerWidth % this.columnWidth,
            i = e && e < 1 ? 'round' : 'ceil',
            o = Math[i](t.size.outerWidth / this.columnWidth);
        o = Math.min(o, this.cols);
        for (var n = this.options.horizontalOrder
            ? '_getHorizontalColPosition'
            : '_getTopColPosition', s = this[n](o,
            t), r = { x: this.columnWidth * s.col, y: s.y }, a = s.y +
            t.size.outerHeight, u = o + s.col, h = s.col; h <
             u; h++) this.colYs[h] = a;
        return r;
    }, o._getTopColPosition = function (t) {
        var e = this._getTopColGroup(t), i = Math.min.apply(Math, e);
        return { col: e.indexOf(i), y: i };
    }, o._getTopColGroup = function (t) {
        if (t < 2) return this.colYs;
        for (var e = [], i = this.cols + 1 - t, o = 0; o <
        i; o++) e[o] = this._getColGroupY(o, t);
        return e;
    }, o._getColGroupY = function (t, e) {
        if (e < 2) return this.colYs[t];
        var i = this.colYs.slice(t, t + e);
        return Math.max.apply(Math, i);
    }, o._getHorizontalColPosition = function (
        t, e) {
        var i = this.horizontalColIndex % this.cols,
            o = t > 1 && i + t > this.cols;
        i = o ? 0 : i;
        var n = e.size.outerWidth && e.size.outerHeight;
        return this.horizontalColIndex = n
            ? i + t
            : this.horizontalColIndex, { col: i, y: this._getColGroupY(i, t) };
    }, o._manageStamp = function (t) {
        var i = e(t), o = this._getElementOffset(t),
            n = this._getOption('originLeft'), s = n ? o.left : o.right,
            r = s + i.outerWidth, a = Math.floor(s / this.columnWidth);
        a = Math.max(0, a);
        var u = Math.floor(r / this.columnWidth);
        u -= r % this.columnWidth ? 0 : 1, u = Math.min(this.cols - 1, u);
        for (var h = this._getOption('originTop'), d = (h ? o.top : o.bottom) +
            i.outerHeight, l = a; l <= u; l++) this.colYs[l] = Math.max(d,
            this.colYs[l]);
    }, o._getContainerSize = function () {
        this.maxY = Math.max.apply(Math, this.colYs);
        var t = { height: this.maxY };
        return this._getOption('fitWidth') &&
        (t.width = this._getContainerFitWidth()), t;
    }, o._getContainerFitWidth = function () {
        for (var t = 0, e = this.cols; --e && 0 === this.colYs[e];) t++;
        return (this.cols - t) * this.columnWidth - this.gutter;
    }, o.needsResizeLayout = function () {
        var t = this.containerWidth;
        return this.getContainerWidth(), t != this.containerWidth;
    }, i;
}), function (t, e) {
    'function' == typeof define && define.amd ? define(
        'isotope-layout/js/layout-modes/masonry',
        ['../layout-mode', 'masonry-layout/masonry'], e) : 'object' ==
    typeof module && module.exports ? module.exports = e(
        require('../layout-mode'), require('masonry-layout')) : e(
        t.Isotope.LayoutMode, t.Masonry);
}(window, function (t, e) {
    'use strict';
    var i = t.create('masonry'), o = i.prototype,
        n = { _getElementOffset: !0, layout: !0, _getMeasurement: !0 };
    for (var s in e.prototype) n[s] || (o[s] = e.prototype[s]);
    var r = o.measureColumns;
    o.measureColumns = function () {
        this.items = this.isotope.filteredItems, r.call(this);
    };
    var a = o._getOption;
    return o._getOption = function (t) {
        return 'fitWidth' == t
            ? void 0 !== this.options.isFitWidth
                ? this.options.isFitWidth
                : this.options.fitWidth
            : a.apply(this.isotope, arguments);
    }, i;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define('isotope-layout/js/layout-modes/fit-rows', ['../layout-mode'],
        e)
        : 'object' == typeof exports
        ? module.exports = e(require('../layout-mode'))
        : e(t.Isotope.LayoutMode);
}(window, function (t) {
    'use strict';
    var e = t.create('fitRows'), i = e.prototype;
    return i._resetLayout = function () {
        this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement('gutter',
            'outerWidth');
    }, i._getItemLayoutPosition = function (t) {
        t.getSize();
        var e = t.size.outerWidth + this.gutter,
            i = this.isotope.size.innerWidth + this.gutter;
        0 !== this.x && e + this.x > i && (this.x = 0, this.y = this.maxY);
        var o = { x: this.x, y: this.y };
        return this.maxY = Math.max(this.maxY,
            this.y + t.size.outerHeight), this.x += e, o;
    }, i._getContainerSize = function () {return { height: this.maxY };}, e;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define('isotope-layout/js/layout-modes/vertical', ['../layout-mode'],
        e)
        : 'object' == typeof module && module.exports ? module.exports = e(
        require('../layout-mode')) : e(t.Isotope.LayoutMode);
}(window, function (t) {
    'use strict';
    var e = t.create('vertical', { horizontalAlignment: 0 }), i = e.prototype;
    return i._resetLayout = function () {this.y = 0;}, i._getItemLayoutPosition = function (t) {
        t.getSize();
        var e = (this.isotope.size.innerWidth - t.size.outerWidth) *
            this.options.horizontalAlignment, i = this.y;
        return this.y += t.size.outerHeight, { x: e, y: i };
    }, i._getContainerSize = function () {return { height: this.y };}, e;
}), function (t, e) {
    'function' == typeof define && define.amd
        ? define([
            'outlayer/outlayer',
            'get-size/get-size',
            'desandro-matches-selector/matches-selector',
            'fizzy-ui-utils/utils',
            'isotope-layout/js/item',
            'isotope-layout/js/layout-mode',
            'isotope-layout/js/layout-modes/masonry',
            'isotope-layout/js/layout-modes/fit-rows',
            'isotope-layout/js/layout-modes/vertical'],
        function (i, o, n, s, r, a) {return e(t, i, o, n, s, r, a);})
        : 'object' == typeof module && module.exports ? module.exports = e(t,
        require('outlayer'), require('get-size'),
        require('desandro-matches-selector'), require('fizzy-ui-utils'),
        require('isotope-layout/js/item'),
        require('isotope-layout/js/layout-mode'),
        require('isotope-layout/js/layout-modes/masonry'),
        require('isotope-layout/js/layout-modes/fit-rows'),
        require('isotope-layout/js/layout-modes/vertical')) : t.Isotope = e(t,
        t.Outlayer, t.getSize, t.matchesSelector, t.fizzyUIUtils,
        t.Isotope.Item, t.Isotope.LayoutMode);
}(window, function (t, e, i, o, n, s, r) {
    function a (t, e) {
        return function (i, o) {
            for (var n = 0; n < t.length; n++) {
                var s = t[n], r = i.sortData[s], a = o.sortData[s];
                if (r > a || r < a) {
                    var u = void 0 !== e[s] ? e[s] : e, h = u ? 1 : -1;
                    return (r > a ? 1 : -1) * h;
                }
            }
            return 0;
        };
    }

    var u = t.jQuery, h = String.prototype.trim
        ? function (t) {return t.trim();}
        : function (t) {return t.replace(/^\s+|\s+$/g, '');},
        d = e.create('isotope', {
            layoutMode: 'masonry',
            isJQueryFiltering: !0,
            sortAscending: !0,
        });
    d.Item = s, d.LayoutMode = r;
    var l = d.prototype;
    l._create = function () {
        this.itemGUID = 0, this._sorters = {}, this._getSorters(), e.prototype._create.call(
            this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ['original-order'];
        for (var t in r.modes) this._initLayoutMode(t);
    }, l.reloadItems = function () {
        this.itemGUID = 0, e.prototype.reloadItems.call(this);
    }, l._itemize = function () {
        for (var t = e.prototype._itemize.apply(this, arguments), i = 0; i <
        t.length; i++) {
            var o = t[i];
            o.id = this.itemGUID++;
        }
        return this._updateItemsSortData(t), t;
    }, l._initLayoutMode = function (t) {
        var e = r.modes[t], i = this.options[t] || {};
        this.options[t] = e.options
            ? n.extend(e.options, i)
            : i, this.modes[t] = new e(this);
    }, l.layout = function () {
        return !this._isLayoutInited && this._getOption('initLayout')
            ? void this.arrange()
            : void this._layout();
    }, l._layout = function () {
        var t = this._getIsInstant();
        this._resetLayout(), this._manageStamps(), this.layoutItems(
            this.filteredItems, t), this._isLayoutInited = !0;
    }, l.arrange = function (t) {
        this.option(t), this._getIsInstant();
        var e = this._filter(this.items);
        this.filteredItems = e.matches, this._bindArrangeComplete(), this._isInstant
            ? this._noTransition(this._hideReveal, [e])
            : this._hideReveal(e), this._sort(), this._layout();
    }, l._init = l.arrange, l._hideReveal = function (t) {
        this.reveal(t.needReveal), this.hide(t.needHide);
    }, l._getIsInstant = function () {
        var t = this._getOption('layoutInstant'),
            e = void 0 !== t ? t : !this._isLayoutInited;
        return this._isInstant = e, e;
    }, l._bindArrangeComplete = function () {
        function t () {
            e && i && o &&
            n.dispatchEvent('arrangeComplete', null, [n.filteredItems]);
        }

        var e, i, o, n = this;
        this.once('layoutComplete', function () {e = !0, t();}), this.once(
            'hideComplete', function () {i = !0, t();}), this.once(
            'revealComplete', function () {o = !0, t();});
    }, l._filter = function (t) {
        var e = this.options.filter;
        e = e || '*';
        for (var i = [], o = [], n = [], s = this._getFilterTest(e), r = 0; r <
        t.length; r++) {
            var a = t[r];
            if (!a.isIgnored) {
                var u = s(a);
                u && i.push(a), u && a.isHidden ? o.push(a) : u || a.isHidden ||
                    n.push(a);
            }
        }
        return { matches: i, needReveal: o, needHide: n };
    }, l._getFilterTest = function (t) {
        return u && this.options.isJQueryFiltering
            ? function (e) {return u(e.element).is(t);}
            : 'function' == typeof t
                ? function (e) {return t(e.element);}
                : function (e) {return o(e.element, t);};
    }, l.updateSortData = function (t) {
        var e;
        t
            ? (t = n.makeArray(t), e = this.getItems(t))
            : e = this.items, this._getSorters(), this._updateItemsSortData(e);
    }, l._getSorters = function () {
        var t = this.options.getSortData;
        for (var e in t) {
            var i = t[e];
            this._sorters[e] = f(i);
        }
    }, l._updateItemsSortData = function (t) {
        for (var e = t && t.length, i = 0; e && i < e; i++) {
            var o = t[i];
            o.updateSortData();
        }
    };
    var f = function () {
        function t (t) {
            if ('string' != typeof t) return t;
            var i = h(t).split(' '), o = i[0], n = o.match(/^\[(.+)\]$/),
                s = n && n[1], r = e(s, o), a = d.sortDataParsers[i[1]];
            return t = a
                ? function (t) {return t && a(r(t));}
                : function (t) {return t && r(t);};
        }

        function e (t, e) {
            return t
                ? function (e) {return e.getAttribute(t);}
                : function (t) {
                    var i = t.querySelector(e);
                    return i && i.textContent;
                };
        }

        return t;
    }();
    d.sortDataParsers = {
        parseInt: function (t) {return parseInt(t, 10);},
        parseFloat: function (t) {return parseFloat(t);},
    }, l._sort = function () {
        if (this.options.sortBy) {
            var t = n.makeArray(this.options.sortBy);
            this._getIsSameSortBy(t) ||
            (this.sortHistory = t.concat(this.sortHistory));
            var e = a(this.sortHistory, this.options.sortAscending);
            this.filteredItems.sort(e);
        }
    }, l._getIsSameSortBy = function (t) {
        for (var e = 0; e < t.length; e++) if (t[e] !=
            this.sortHistory[e]) return !1;
        return !0;
    }, l._mode = function () {
        var t = this.options.layoutMode, e = this.modes[t];
        if (!e) throw new Error('No layout mode: ' + t);
        return e.options = this.options[t], e;
    }, l._resetLayout = function () {
        e.prototype._resetLayout.call(this), this._mode()._resetLayout();
    }, l._getItemLayoutPosition = function (t) {
        return this._mode().
            _getItemLayoutPosition(t);
    }, l._manageStamp = function (t) {
        this._mode().
            _manageStamp(t);
    }, l._getContainerSize = function () {
        return this._mode().
            _getContainerSize();
    }, l.needsResizeLayout = function () {
        return this._mode().
            needsResizeLayout();
    }, l.appended = function (t) {
        var e = this.addItems(t);
        if (e.length) {
            var i = this._filterRevealAdded(e);
            this.filteredItems = this.filteredItems.concat(i);
        }
    }, l.prepended = function (t) {
        var e = this._itemize(t);
        if (e.length) {
            this._resetLayout(), this._manageStamps();
            var i = this._filterRevealAdded(e);
            this.layoutItems(this.filteredItems), this.filteredItems = i.concat(
                this.filteredItems), this.items = e.concat(this.items);
        }
    }, l._filterRevealAdded = function (t) {
        var e = this._filter(t);
        return this.hide(e.needHide), this.reveal(e.matches), this.layoutItems(
            e.matches, !0), e.matches;
    }, l.insert = function (t) {
        var e = this.addItems(t);
        if (e.length) {
            var i, o, n = e.length;
            for (i = 0; i < n; i++) o = e[i], this.element.appendChild(
                o.element);
            var s = this._filter(e).matches;
            for (i = 0; i < n; i++) e[i].isLayoutInstant = !0;
            for (this.arrange(), i = 0; i < n; i++) delete e[i].isLayoutInstant;
            this.reveal(s);
        }
    };
    var c = l.remove;
    return l.remove = function (t) {
        t = n.makeArray(t);
        var e = this.getItems(t);
        c.call(this, t);
        for (var i = e && e.length, o = 0; i && o < i; o++) {
            var s = e[o];
            n.removeFrom(this.filteredItems, s);
        }
    }, l.shuffle = function () {
        for (var t = 0; t < this.items.length; t++) {
            var e = this.items[t];
            e.sortData.random = Math.random();
        }
        this.options.sortBy = 'random', this._sort(), this._layout();
    }, l._noTransition = function (
        t, e) {
        var i = this.options.transitionDuration;
        this.options.transitionDuration = 0;
        var o = t.apply(this, e);
        return this.options.transitionDuration = i, o;
    }, l.getFilteredItemElements = function () {
        return this.filteredItems.map(function (t) {return t.element;});
    }, d;
});

window.SEMICOLON_gridContainerInit = function ($gridContainerEl) {

    $gridContainerEl = $gridContainerEl.filter(':not(.customjs)');

    if ($gridContainerEl.length < 1) {
        return true;
    }

    $gridContainerEl.each(function () {
        let element = $(this),
            elTransition = element.attr('data-transition') || '0.65s',
            elLayoutMode = element.attr('data-layout') || 'masonry',
            elStagger = element.attr('data-stagger') || 0,
            elBase = element.attr('data-basewidth') ||
                '.portfolio-item:not(.wide):eq(0)',
            elOriginLeft = true,
            elGrid;

        if ($('body').hasClass('rtl')) { elOriginLeft = false; }

        if (element.hasClass('portfolio') ||
            element.hasClass('post-timeline')) {
            elGrid = element.isotope({
                layoutMode: elLayoutMode,
                isOriginLeft: elOriginLeft,
                transitionDuration: elTransition,
                stagger: Number(elStagger),
                percentPosition: true,
                masonry: {
                    columnWidth: element.find(elBase)[0],
                },
            });
        } else {
            elGrid = element.isotope({
                layoutMode: elLayoutMode,
                isOriginLeft: elOriginLeft,
                transitionDuration: elTransition,
                stagger: Number(elStagger),
                percentPosition: true,
            });
        }

        if (element.data('isotope')) {
            element.addClass('has-init-isotope');
        }

        let elementInterval = setInterval(function () {
            if (element.find('.lazy.lazy-loaded').length ==
                element.find('.lazy').length) {
                setTimeout(function () {
                    element.filter('.has-init-isotope').isotope('layout');
                }, 800);
                clearInterval(elementInterval);
            }
        }, 1000);

        let resizeTimer;

        $(window).on('resize', function () {
            clearTimeout(resizeTimer);
            resizeTimer = setTimeout(function () {
                element.filter('.has-init-isotope').isotope('layout');
            }, 250);
        });

        $(window).on('lazyLoadLoaded', function () {
            element.filter('.has-init-isotope').isotope('layout');
        });

    });

};

// Lazyload v17.4.0
!function (t, n) {
    'object' == typeof exports && 'undefined' != typeof module
        ? module.exports = n()
        : 'function' == typeof define && define.amd
        ? define(n)
        : (t = 'undefined' != typeof globalThis ? globalThis : t ||
            self).LazyLoad = n();
}(this, (function () {
    'use strict';

    function t () {
        return (t = Object.assign || function (t) {
            for (var n = 1; n < arguments.length; n++) {
                var e = arguments[n];
                for (var i in e) Object.prototype.hasOwnProperty.call(e, i) &&
                (t[i] = e[i]);
            }
            return t;
        }).apply(this, arguments);
    }

    var n = 'undefined' != typeof window,
        e = n && !('onscroll' in window) || 'undefined' != typeof navigator &&
            /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),
        i = n && 'IntersectionObserver' in window,
        o = n && 'classList' in document.createElement('p'),
        r = n && window.devicePixelRatio > 1, a = {
            elements_selector: '.lazy',
            container: e || n ? document : null,
            threshold: 300,
            thresholds: null,
            data_src: 'src',
            data_srcset: 'srcset',
            data_sizes: 'sizes',
            data_bg: 'bg',
            data_bg_hidpi: 'bg-hidpi',
            data_bg_multi: 'bg-multi',
            data_bg_multi_hidpi: 'bg-multi-hidpi',
            data_poster: 'poster',
            class_applied: 'applied',
            class_loading: 'loading',
            class_loaded: 'loaded',
            class_error: 'error',
            class_entered: 'entered',
            class_exited: 'exited',
            unobserve_completed: !0,
            unobserve_entered: !1,
            cancel_on_exit: !0,
            callback_enter: null,
            callback_exit: null,
            callback_applied: null,
            callback_loading: null,
            callback_loaded: null,
            callback_error: null,
            callback_finish: null,
            callback_cancel: null,
            use_native: !1,
        }, c = function (n) {return t({}, a, n);}, s = function (t, n) {
            var e, i = 'LazyLoad::Initialized', o = new t(n);
            try {
                e = new CustomEvent(i, { detail: { instance: o } });
            } catch (t) {
                (e = document.createEvent('CustomEvent')).initCustomEvent(i, !1, !1,
                    { instance: o });
            }
            window.dispatchEvent(e);
        }, l = 'loading', u = 'loaded', d = 'applied', f = 'error', _ = 'native',
        g = 'data-', v = 'll-status',
        b = function (t, n) {return t.getAttribute(g + n);},
        p = function (t) {return b(t, v);}, h = function (t, n) {
            return function (t, n, e) {
                var i = 'data-ll-status';
                null !== e ? t.setAttribute(i, e) : t.removeAttribute(i);
            }(t, 0, n);
        }, m = function (t) {return h(t, null);},
        E = function (t) {return null === p(t);},
        y = function (t) {return p(t) === _;}, I = [l, u, d, f],
        A = function (t, n, e, i) {
            t && (void 0 === i ? void 0 === e ? t(n) : t(n, e) : t(n, e, i));
        }, L = function (t, n) {
            o
                ? t.classList.add(n)
                : t.className += (t.className ? ' ' : '') + n;
        }, w = function (t, n) {
            o
                ? t.classList.remove(n)
                : t.className = t.className.replace(
                new RegExp('(^|\\s+)' + n + '(\\s+|$)'), ' ').
                    replace(/^\s+/, '').
                    replace(/\s+$/, '');
        }, k = function (t) {return t.llTempImage;}, O = function (t, n) {
            if (n) {
                var e = n._observer;
                e && e.unobserve(t);
            }
        }, x = function (t, n) {t && (t.loadingCount += n);},
        z = function (t, n) {t && (t.toLoadCount = n);}, C = function (t) {
            for (var n, e = [], i = 0; n = t.children[i]; i += 1) 'SOURCE' ===
            n.tagName && e.push(n);
            return e;
        }, N = function (t, n, e) {e && t.setAttribute(n, e);},
        M = function (t, n) {t.removeAttribute(n);},
        R = function (t) {return !!t.llOriginalAttrs;}, T = function (t) {
            if (!R(t)) {
                var n = {};
                n.src = t.getAttribute('src'), n.srcset = t.getAttribute(
                    'srcset'), n.sizes = t.getAttribute(
                    'sizes'), t.llOriginalAttrs = n;
            }
        }, G = function (t) {
            if (R(t)) {
                var n = t.llOriginalAttrs;
                N(t, 'src', n.src), N(t, 'srcset', n.srcset), N(t, 'sizes',
                    n.sizes);
            }
        }, D = function (t, n) {
            N(t, 'sizes', b(t, n.data_sizes)), N(t, 'srcset',
                b(t, n.data_srcset)), N(t, 'src', b(t, n.data_src));
        }, V = function (t) {M(t, 'src'), M(t, 'srcset'), M(t, 'sizes');},
        j = function (t, n) {
            var e = t.parentNode;
            e && 'PICTURE' === e.tagName && C(e).forEach(n);
        }, F = {
            IMG: function (t, n) {
                j(t, (function (t) {T(t), D(t, n);})), T(t), D(t, n);
            },
            IFRAME: function (t, n) {N(t, 'src', b(t, n.data_src));},
            VIDEO: function (t, n) {
                !function (t, e) {
                    C(t).
                        forEach((function (t) {N(t, 'src', b(t, n.data_src));}));
                }(t), N(t, 'poster', b(t, n.data_poster)), N(t, 'src',
                    b(t, n.data_src)), t.load();
            },
        }, P = function (t, n) {
            var e = F[t.tagName];
            e && e(t, n);
        }, S = function (t, n, e) {
            x(e, 1), L(t, n.class_loading), h(t, l), A(n.callback_loading, t, e);
        }, U = ['IMG', 'IFRAME', 'VIDEO'], $ = function (t, n) {
            !n || function (t) {return t.loadingCount > 0;}(n) ||
            function (t) {return t.toLoadCount > 0;}(n) || A(t.callback_finish, n);
        }, q = function (t, n, e) {t.addEventListener(n, e), t.llEvLisnrs[n] = e;},
        H = function (t, n, e) {t.removeEventListener(n, e);},
        B = function (t) {return !!t.llEvLisnrs;}, J = function (t) {
            if (B(t)) {
                var n = t.llEvLisnrs;
                for (var e in n) {
                    var i = n[e];
                    H(t, e, i);
                }
                delete t.llEvLisnrs;
            }
        }, K = function (t, n, e) {
            !function (t) {delete t.llTempImage;}(t), x(e, -1), function (t) {
                t && (t.toLoadCount -= 1);
            }(e), w(t, n.class_loading), n.unobserve_completed && O(t, e);
        }, Q = function (t, n, e) {
            var i = k(t) || t;
            B(i) || function (t, n, e) {
                B(t) || (t.llEvLisnrs = {});
                var i = 'VIDEO' === t.tagName ? 'loadeddata' : 'load';
                q(t, i, n), q(t, 'error', e);
            }(i, (function (o) {
                !function (t, n, e, i) {
                    var o = y(n);
                    K(n, e, i), L(n, e.class_loaded), h(n, u), A(e.callback_loaded,
                        n, i), o || $(e, i);
                }(0, t, n, e), J(i);
            }), (function (o) {
                !function (t, n, e, i) {
                    var o = y(n);
                    K(n, e, i), L(n, e.class_error), h(n, f), A(e.callback_error, n,
                        i), o || $(e, i);
                }(0, t, n, e), J(i);
            }));
        }, W = function (t, n, e) {
            !function (t) {t.llTempImage = document.createElement('IMG');}(t), Q(t,
                n, e), function (t, n, e) {
                var i = b(t, n.data_bg), o = b(t, n.data_bg_hidpi),
                    a = r && o ? o : i;
                a && (t.style.backgroundImage = 'url("'.concat(a, '")'), k(t).
                    setAttribute('src', a), S(t, n, e));
            }(t, n, e), function (t, n, e) {
                var i = b(t, n.data_bg_multi), o = b(t, n.data_bg_multi_hidpi),
                    a = r && o ? o : i;
                a && (t.style.backgroundImage = a, function (t, n, e) {
                    L(t, n.class_applied), h(t, d), n.unobserve_completed &&
                    O(t, n), A(n.callback_applied, t, e);
                }(t, n, e));
            }(t, n, e);
        }, X = function (t, n, e) {
            !function (t) {
                return U.indexOf(t.tagName) > -1;
            }(t) ? W(t, n, e) : function (t, n, e) {
                Q(t, n, e), P(t, n), S(t, n, e);
            }(t, n, e);
        }, Y = ['IMG', 'IFRAME', 'VIDEO'], Z = function (t) {
            return t.use_native && 'loading' in HTMLImageElement.prototype;
        }, tt = function (t, n, e) {
            t.forEach((function (t) {
                return function (t) {
                    return t.isIntersecting || t.intersectionRatio > 0;
                }(t) ? function (
                    t, n, e, i) {
                    var o = function (t) {
                        return I.indexOf(p(t)) >= 0;
                    }(t);
                    h(t, 'entered'), L(t, e.class_entered), w(t,
                        e.class_exited), function (t, n, e) {
                        n.unobserve_entered && O(t, e);
                    }(t, e, i), A(e.callback_enter, t, n, i), o || X(t, e, i);
                }(t.target, t, n, e) : function (t, n, e, i) {
                    E(t) || (L(t, e.class_exited), function (t, n, e, i) {
                        e.cancel_on_exit && function (t) {return p(t) === l;}(t) &&
                        'IMG' === t.tagName &&
                        (J(t), function (t) {j(t, (function (t) {V(t);})), V(t);}(
                            t), function (t) {j(t, (function (t) {G(t);})), G(t);}(
                            t), w(t, e.class_loading), x(i, -1), m(t), A(
                            e.callback_cancel, t, n, i));
                    }(t, n, e, i), A(e.callback_exit, t, n, i));
                }(t.target, t, n, e);
            }));
        }, nt = function (t) {return Array.prototype.slice.call(t);},
        et = function (t) {
            return t.container.querySelectorAll(t.elements_selector);
        }, it = function (t) {return function (t) {return p(t) === f;}(t);},
        ot = function (t, n) {
            return function (t) {return nt(t).filter(E);}(t || et(n));
        }, rt = function (t, e) {
            var o = c(t);
            this._settings = o, this.loadingCount = 0, function (t, n) {
                i && !Z(t) && (n._observer = new IntersectionObserver(
                    (function (e) {tt(e, t, n);}), function (t) {
                        return {
                            root: t.container === document
                                ? null
                                : t.container,
                            rootMargin: t.thresholds || t.threshold + 'px',
                        };
                    }(t)));
            }(o, this), function (t, e) {
                n && window.addEventListener('online', (function () {
                    !function (t, n) {
                        var e;
                        (e = et(t), nt(e).filter(it)).forEach(
                            (function (n) {
                                w(n, t.class_error), m(n);
                            })), n.update();
                    }(t, e);
                }));
            }(o, this), this.update(e);
        };
    return rt.prototype = {
        update: function (t) {
            var n, o, r = this._settings, a = ot(t, r);
            z(this, a.length), !e && i ? Z(r) ? function (t, n, e) {
                t.forEach((function (t) {
                    -1 !== Y.indexOf(t.tagName) && function (t, n, e) {
                        t.setAttribute('loading', 'lazy'), Q(t, n, e), P(t,
                            n), h(t, _);
                    }(t, n, e);
                })), z(e, 0);
            }(a, r, this) : (o = a, function (t) {t.disconnect();}(
                n = this._observer), function (t, n) {
                n.forEach((function (n) {t.observe(n);}));
            }(n, o)) : this.loadAll(a);
        },
        destroy: function () {
            this._observer && this._observer.disconnect(), et(this._settings).
                forEach(
                    (function (t) {delete t.llOriginalAttrs;})), delete this._observer, delete this._settings, delete this.loadingCount, delete this.toLoadCount;
        },
        loadAll: function (t) {
            var n = this, e = this._settings;
            ot(t, e).forEach((function (t) {O(t, n), X(t, e, n);}));
        },
    }, rt.load = function (t, n) {
        var e = c(n);
        X(t, e);
    }, rt.resetStatus = function (t) {m(t);}, n && function (t, n) {
        if (n) if (n.length) for (var e, i = 0; e = n[i]; i += 1) s(t,
            e); else s(t, n);
    }(rt, window.lazyLoadOptions), rt;
}));

window.SEMICOLON_lazyLoadInit = function ($lazyLoadEl) {

    window.lazyLoadInstance = new LazyLoad({
        threshold: 150,
        elements_selector: '.lazy',
        class_loading: 'lazy-loading',
        class_loaded: 'lazy-loaded',
        class_error: 'lazy-error',
        callback_loaded: (el) => {
            $(window).trigger('lazyLoadLoaded');
        },
    });

};

/*! Magnific Popup - v1.1.0 - 2016-02-20
* http://dimsemenov.com/plugins/magnific-popup/
* Copyright (c) 2016 Dmitry Semenov; */
!function (e) {
    'function' == typeof define && define.amd
        ? define(['jquery'], e)
        : 'object' == typeof exports ? e(require('jquery')) : e(
        window.jQuery || window.Zepto);
}(function (e) {
    var t, i, n, o, a, r, s = function () {}, l = !!window.jQuery,
        c = e(window), d = function (e, i) {t.ev.on('mfp' + e + '.mfp', i);},
        p = function (t, i, n, o) {
            var a = document.createElement('div');
            return a.className = 'mfp-' + t, n && (a.innerHTML = n), o ? i &&
                i.appendChild(a) : (a = e(a), i && a.appendTo(i)), a;
        }, u = function (i, n) {
            t.ev.triggerHandler('mfp' + i, n), t.st.callbacks &&
            (i = i.charAt(0).toLowerCase() + i.slice(1), t.st.callbacks[i] &&
            t.st.callbacks[i].apply(t, e.isArray(n) ? n : [n]));
        }, f = function (i) {
            return i === r && t.currTemplate.closeBtn ||
            (t.currTemplate.closeBtn = e(t.st.closeMarkup.replace('%title%',
                t.st.tClose)), r = i), t.currTemplate.closeBtn;
        }, m = function () {
            e.magnificPopup.instance ||
            ((t = new s).init(), e.magnificPopup.instance = t);
        };
    s.prototype = {
        constructor: s,
        init: function () {
            var i = navigator.appVersion;
            t.isLowIE = t.isIE8 = document.all &&
                !document.addEventListener, t.isAndroid = /android/gi.test(
                i), t.isIOS = /iphone|ipad|ipod/gi.test(
                i), t.supportsTransition = function () {
                var e = document.createElement('p').style,
                    t = ['ms', 'O', 'Moz', 'Webkit'];
                if (void 0 !== e.transition) return !0;
                for (; t.length;) if (t.pop() + 'Transition' in e) return !0;
                return !1;
            }(), t.probablyMobile = t.isAndroid || t.isIOS ||
                /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(
                    navigator.userAgent), n = e(document), t.popupsCache = {};
        },
        open: function (i) {
            var o;
            if (!1 === i.isObj) {
                t.items = i.items.toArray(), t.index = 0;
                var r, s = i.items;
                for (o = 0; o < s.length; o++) if ((r = s[o]).parsed &&
                (r = r.el[0]), r === i.el[0]) {
                    t.index = o;
                    break;
                }
            } else t.items = e.isArray(i.items)
                ? i.items
                : [i.items], t.index = i.index || 0;
            if (!t.isOpen) {
                t.types = [], a = '', i.mainEl && i.mainEl.length
                    ? t.ev = i.mainEl.eq(0)
                    : t.ev = n, i.key
                    ? (t.popupsCache[i.key] ||
                    (t.popupsCache[i.key] = {}), t.currTemplate = t.popupsCache[i.key])
                    : t.currTemplate = {}, t.st = e.extend(!0, {},
                    e.magnificPopup.defaults, i), t.fixedContentPos = 'auto' ===
                t.st.fixedContentPos
                    ? !t.probablyMobile
                    : t.st.fixedContentPos, t.st.modal &&
                (t.st.closeOnContentClick = !1, t.st.closeOnBgClick = !1, t.st.showCloseBtn = !1, t.st.enableEscapeKey = !1), t.bgOverlay ||
                (t.bgOverlay = p('bg').
                    on('click.mfp', function () {t.close();}), t.wrap = p(
                    'wrap').
                    attr('tabindex', -1).
                    on('click.mfp', function (e) {
                        t._checkIfClose(e.target) && t.close();
                    }), t.container = p('container',
                    t.wrap)), t.contentContainer = p(
                    'content'), t.st.preloader &&
                (t.preloader = p('preloader', t.container, t.st.tLoading));
                var l = e.magnificPopup.modules;
                for (o = 0; o < l.length; o++) {
                    var m = l[o];
                    m = m.charAt(0).toUpperCase() + m.slice(1), t['init' +
                    m].call(t);
                }
                u('BeforeOpen'), t.st.showCloseBtn &&
                (t.st.closeBtnInside ? (d('MarkupParse', function (e, t, i, n) {
                    i.close_replaceWith = f(n.type);
                }), a += ' mfp-close-btn-in') : t.wrap.append(
                    f())), t.st.alignTop &&
                (a += ' mfp-align-top'), t.fixedContentPos ? t.wrap.css({
                    overflow: t.st.overflowY,
                    overflowX: 'hidden',
                    overflowY: t.st.overflowY,
                }) : t.wrap.css(
                    { top: c.scrollTop(), position: 'absolute' }), (!1 ===
                    t.st.fixedBgPos || 'auto' === t.st.fixedBgPos &&
                    !t.fixedContentPos) && t.bgOverlay.css({
                    height: n.height(),
                    position: 'absolute',
                }), t.st.enableEscapeKey && n.on('keyup.mfp',
                    function (e) {27 === e.keyCode && t.close();}), c.on(
                    'resize.mfp',
                    function () {t.updateSize();}), t.st.closeOnContentClick ||
                (a += ' mfp-auto-cursor'), a && t.wrap.addClass(a);
                var g = t.wH = c.height(), v = {};
                if (t.fixedContentPos && t._hasScrollBar(g)) {
                    var h = t._getScrollbarSize();
                    h && (v.marginRight = h);
                }
                t.fixedContentPos && (t.isIE7
                    ? e('body, html').css('overflow', 'hidden')
                    : v.overflow = 'hidden');
                var C = t.st.mainClass;
                return t.isIE7 && (C += ' mfp-ie7'), C &&
                t._addClassToMFP(C), t.updateItemHTML(), u('BuildControls'), e(
                    'html').css(v), t.bgOverlay.add(t.wrap).
                    prependTo(t.st.prependTo ||
                        e(document.body)), t._lastFocusedEl = document.activeElement, setTimeout(
                    function () {
                        t.content ? (t._addClassToMFP(
                            'mfp-ready'), t._setFocus()) : t.bgOverlay.addClass(
                            'mfp-ready'), n.on('focusin.mfp', t._onFocusIn);
                    }, 16), t.isOpen = !0, t.updateSize(g), u('Open'), i;
            }
            t.updateItemHTML();
        },
        close: function () {
            t.isOpen &&
            (u('BeforeClose'), t.isOpen = !1, t.st.removalDelay && !t.isLowIE &&
            t.supportsTransition ? (t._addClassToMFP(
                'mfp-removing'), setTimeout(function () {t._close();},
                t.st.removalDelay)) : t._close());
        },
        _close: function () {
            u('Close');
            var i = 'mfp-removing mfp-ready ';
            if (t.bgOverlay.detach(), t.wrap.detach(), t.container.empty(), t.st.mainClass &&
            (i += t.st.mainClass + ' '), t._removeClassFromMFP(
                i), t.fixedContentPos) {
                var o = { marginRight: '' };
                t.isIE7
                    ? e('body, html').css('overflow', '')
                    : o.overflow = '', e('html').css(o);
            }
            n.off('keyup.mfp focusin.mfp'), t.ev.off('.mfp'), t.wrap.attr(
                'class', 'mfp-wrap').removeAttr('style'), t.bgOverlay.attr(
                'class', 'mfp-bg'), t.container.attr('class',
                'mfp-container'), !t.st.showCloseBtn || t.st.closeBtnInside &&
            !0 !== t.currTemplate[t.currItem.type] || t.currTemplate.closeBtn &&
            t.currTemplate.closeBtn.detach(), t.st.autoFocusLast &&
            t._lastFocusedEl && e(t._lastFocusedEl).
                focus(), t.currItem = null, t.content = null, t.currTemplate = null, t.prevHeight = 0, u(
                'AfterClose');
        },
        updateSize: function (e) {
            if (t.isIOS) {
                var i = document.documentElement.clientWidth /
                    window.innerWidth, n = window.innerHeight * i;
                t.wrap.css('height', n), t.wH = n;
            } else t.wH = e || c.height();
            t.fixedContentPos || t.wrap.css('height', t.wH), u('Resize');
        },
        updateItemHTML: function () {
            var i = t.items[t.index];
            t.contentContainer.detach(), t.content &&
            t.content.detach(), i.parsed || (i = t.parseEl(t.index));
            var n = i.type;
            if (u('BeforeChange', [
                t.currItem ? t.currItem.type : '',
                n]), t.currItem = i, !t.currTemplate[n]) {
                var a = !!t.st[n] && t.st[n].markup;
                u('FirstMarkupParse', a), t.currTemplate[n] = !a || e(a);
            }
            o && o !== i.type &&
            t.container.removeClass('mfp-' + o + '-holder');
            var r = t['get' + n.charAt(0).toUpperCase() + n.slice(1)](i,
                t.currTemplate[n]);
            t.appendContent(r, n), i.preloaded = !0, u('Change',
                i), o = i.type, t.container.prepend(t.contentContainer), u(
                'AfterChange');
        },
        appendContent: function (e, i) {
            t.content = e, e ? t.st.showCloseBtn && t.st.closeBtnInside &&
            !0 === t.currTemplate[i] ? t.content.find('.mfp-close').length ||
                t.content.append(f()) : t.content = e : t.content = '', u(
                'BeforeAppend'), t.container.addClass(
                'mfp-' + i + '-holder'), t.contentContainer.append(t.content);
        },
        parseEl: function (i) {
            var n, o = t.items[i];
            if (o.tagName ? o = { el: e(o) } : (n = o.type, o = {
                data: o,
                src: o.src,
            }), o.el) {
                for (var a = t.types, r = 0; r <
                a.length; r++) if (o.el.hasClass('mfp-' + a[r])) {
                    n = a[r];
                    break;
                }
                o.src = o.el.attr('data-mfp-src'), o.src ||
                (o.src = o.el.attr('href')), o.srcset = o.el.attr(
                    'data-srcset') || '', o.sizes = o.el.attr('data-sizes') ||
                    '';
            }
            return o.type = n || t.st.type ||
                'inline', o.index = i, o.parsed = !0, t.items[i] = o, u(
                'ElementParse', o), t.items[i];
        },
        addGroup: function (e, i) {
            var n = function (n) {n.mfpEl = this, t._openClick(n, e, i);};
            i || (i = {});
            var o = 'click.magnificPopup';
            i.mainEl = e, i.items
                ? (i.isObj = !0, e.off(o).on(o, n))
                : (i.isObj = !1, i.delegate
                    ? e.off(o).on(o, i.delegate, n)
                    : (i.items = e, e.off(o).on(o, n)));
        },
        _openClick: function (i, n, o) {
            if ((void 0 !== o.midClick
                ? o.midClick
                : e.magnificPopup.defaults.midClick) ||
                !(2 === i.which || i.ctrlKey || i.metaKey || i.altKey ||
                    i.shiftKey)) {
                var a = void 0 !== o.disableOn
                    ? o.disableOn
                    : e.magnificPopup.defaults.disableOn;
                if (a) if (e.isFunction(a)) {
                    if (!a.call(t)) return !0;
                } else if (c.width() < a) return !0;
                i.type &&
                (i.preventDefault(), t.isOpen && i.stopPropagation()), o.el = e(
                    i.mfpEl), o.delegate &&
                (o.items = n.find(o.delegate)), t.open(o);
            }
        },
        updateStatus: function (e, n) {
            if (t.preloader) {
                i !== e && t.container.removeClass('mfp-s-' + i), n ||
                'loading' !== e || (n = t.st.tLoading);
                var o = { status: e, text: n };
                u('UpdateStatus',
                    o), e = o.status, n = o.text, t.preloader.html(
                    n), t.preloader.find('a').
                    on('click',
                        function (e) {e.stopImmediatePropagation();}), t.container.addClass(
                    'mfp-s-' + e), i = e;
            }
        },
        _checkIfClose: function (i) {
            if (!e(i).
                hasClass('mfp-prevent-close')) {
                var n = t.st.closeOnContentClick, o = t.st.closeOnBgClick;
                if (n && o) return !0;
                if (!t.content || e(i).hasClass('mfp-close') || t.preloader &&
                    i === t.preloader[0]) return !0;
                if (i === t.content[0] || e.contains(t.content[0],
                    i)) {if (n) return !0;} else if (o &&
                    e.contains(document, i)) return !0;
                return !1;
            }
        },
        _addClassToMFP: function (e) {
            t.bgOverlay.addClass(e), t.wrap.addClass(e);
        },
        _removeClassFromMFP: function (e) {
            this.bgOverlay.removeClass(e), t.wrap.removeClass(e);
        },
        _hasScrollBar: function (e) {
            return (t.isIE7
                ? n.height()
                : document.body.scrollHeight) > (e || c.height());
        },
        _setFocus: function () {
            (t.st.focus
                ? t.content.find(t.st.focus).eq(0)
                : t.wrap).focus();
        },
        _onFocusIn: function (i) {
            if (i.target !== t.wrap[0] &&
                !e.contains(t.wrap[0], i.target)) return t._setFocus(), !1;
        },
        _parseMarkup: function (t, i, n) {
            var o;
            n.data && (i = e.extend(n.data, i)), u('MarkupParse',
                [t, i, n]), e.each(i, function (i, n) {
                if (void 0 === n || !1 === n) return !0;
                if ((o = i.split('_')).length > 1) {
                    var a = t.find('.mfp-' + o[0]);
                    if (a.length > 0) {
                        var r = o[1];
                        'replaceWith' === r
                            ? a[0] !== n[0] && a.replaceWith(n)
                            : 'img' === r ? a.is('img')
                            ? a.attr('src', n)
                            : a.replaceWith(e('<img>').
                                attr('src', n).
                                attr('class', a.attr('class'))) : a.attr(o[1],
                            n);
                    }
                } else t.find('.mfp-' + i).html(n);
            });
        },
        _getScrollbarSize: function () {
            if (void 0 === t.scrollbarSize) {
                var e = document.createElement('div');
                e.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;', document.body.appendChild(
                    e), t.scrollbarSize = e.offsetWidth -
                    e.clientWidth, document.body.removeChild(e);
            }
            return t.scrollbarSize;
        },
    }, e.magnificPopup = {
        instance: null,
        proto: s.prototype,
        modules: [],
        open: function (t, i) {
            return m(), (t = t
                ? e.extend(!0, {}, t)
                : {}).isObj = !0, t.index = i || 0, this.instance.open(t);
        },
        close: function () {
            return e.magnificPopup.instance && e.magnificPopup.instance.close();
        },
        registerModule: function (t, i) {
            i.options && (e.magnificPopup.defaults[t] = i.options), e.extend(
                this.proto, i.proto), this.modules.push(t);
        },
        defaults: {
            disableOn: 0,
            key: null,
            midClick: !1,
            mainClass: '',
            preloader: !0,
            focus: '',
            closeOnContentClick: !1,
            closeOnBgClick: !0,
            closeBtnInside: !0,
            showCloseBtn: !0,
            enableEscapeKey: !0,
            modal: !1,
            alignTop: !1,
            removalDelay: 0,
            prependTo: null,
            fixedContentPos: 'auto',
            fixedBgPos: 'auto',
            overflowY: 'auto',
            closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
            tClose: 'Close (Esc)',
            tLoading: 'Loading...',
            autoFocusLast: !0,
        },
    }, e.fn.magnificPopup = function (i) {
        m();
        var n = e(this);
        if ('string' == typeof i) if ('open' === i) {
            var o, a = l ? n.data('magnificPopup') : n[0].magnificPopup,
                r = parseInt(arguments[1], 10) || 0;
            a.items ? o = a.items[r] : (o = n, a.delegate &&
            (o = o.find(a.delegate)), o = o.eq(r)), t._openClick({ mfpEl: o },
                n, a);
        } else t.isOpen && t[i].apply(t,
            Array.prototype.slice.call(arguments, 1)); else i = e.extend(!0, {},
            i), l
            ? n.data('magnificPopup', i)
            : n[0].magnificPopup = i, t.addGroup(n, i);
        return n;
    };
    var g, v, h,
        C = function () {h && (v.after(h.addClass(g)).detach(), h = null);};
    e.magnificPopup.registerModule('inline', {
        options: {
            hiddenClass: 'hide',
            markup: '',
            tNotFound: 'Content not found',
        },
        proto: {
            initInline: function () {
                t.types.push('inline'), d('Close.inline', function () {C();});
            },
            getInline: function (i, n) {
                if (C(), i.src) {
                    var o = t.st.inline, a = e(i.src);
                    if (a.length) {
                        var r = a[0].parentNode;
                        r && r.tagName && (v ||
                        (g = o.hiddenClass, v = p(g), g = 'mfp-' +
                            g), h = a.after(v).
                            detach().
                            removeClass(g)), t.updateStatus('ready');
                    } else t.updateStatus('error', o.tNotFound), a = e('<div>');
                    return i.inlineElement = a, a;
                }
                return t.updateStatus('ready'), t._parseMarkup(n, {}, i), n;
            },
        },
    });
    var y, w = function () {y && e(document.body).removeClass(y);},
        b = function () {w(), t.req && t.req.abort();};
    e.magnificPopup.registerModule('ajax', {
        options: {
            settings: null,
            cursor: 'mfp-ajax-cur',
            tError: '<a href="%url%">The content</a> could not be loaded.',
        },
        proto: {
            initAjax: function () {
                t.types.push('ajax'), y = t.st.ajax.cursor, d('Close.ajax',
                    b), d('BeforeChange.ajax', b);
            },
            getAjax: function (i) {
                y && e(document.body).addClass(y), t.updateStatus('loading');
                var n = e.extend({
                    url: i.src,
                    success: function (n, o, a) {
                        var r = { data: n, xhr: a };
                        u('ParseAjax', r), t.appendContent(e(r.data),
                            'ajax'), i.finished = !0, w(), t._setFocus(), setTimeout(
                            function () {t.wrap.addClass('mfp-ready');},
                            16), t.updateStatus('ready'), u('AjaxContentAdded');
                    },
                    error: function () {
                        w(), i.finished = i.loadError = !0, t.updateStatus(
                            'error', t.st.ajax.tError.replace('%url%', i.src));
                    },
                }, t.st.ajax.settings);
                return t.req = e.ajax(n), '';
            },
        },
    });
    var I, x = function (i) {
        if (i.data && void 0 !== i.data.title) return i.data.title;
        var n = t.st.image.titleSrc;
        if (n) {
            if (e.isFunction(n)) return n.call(t, i);
            if (i.el) return i.el.attr(n) || '';
        }
        return '';
    };
    e.magnificPopup.registerModule('image', {
        options: {
            markup: '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',
            cursor: 'mfp-zoom-out-cur',
            titleSrc: 'title',
            verticalFit: !0,
            tError: '<a href="%url%">The image</a> could not be loaded.',
        }, proto: {
            initImage: function () {
                var i = t.st.image, n = '.image';
                t.types.push('image'), d('Open' + n, function () {
                    'image' === t.currItem.type && i.cursor &&
                    e(document.body).addClass(i.cursor);
                }), d('Close' + n, function () {
                    i.cursor && e(document.body).removeClass(i.cursor), c.off(
                        'resize.mfp');
                }), d('Resize' + n, t.resizeImage), t.isLowIE &&
                d('AfterChange', t.resizeImage);
            },
            resizeImage: function () {
                var e = t.currItem;
                if (e && e.img && t.st.image.verticalFit) {
                    var i = 0;
                    t.isLowIE && (i = parseInt(e.img.css('padding-top'), 10) +
                        parseInt(e.img.css('padding-bottom'), 10)), e.img.css(
                        'max-height', t.wH - i);
                }
            },
            _onImageHasSize: function (e) {
                e.img && (e.hasSize = !0, I &&
                clearInterval(I), e.isCheckingImgSize = !1, u('ImageHasSize',
                    e), e.imgHidden && (t.content &&
                t.content.removeClass('mfp-loading'), e.imgHidden = !1));
            },
            findImageSize: function (e) {
                var i = 0, n = e.img[0], o = function (a) {
                    I && clearInterval(I), I = setInterval(function () {
                        n.naturalWidth > 0
                            ? t._onImageHasSize(e)
                            : (i > 200 && clearInterval(I), 3 === ++i
                            ? o(10)
                            : 40 === i ? o(50) : 100 === i && o(500));
                    }, a);
                };
                o(1);
            },
            getImage: function (i, n) {
                var o = 0, a = function () {
                    i && (i.img[0].complete ? (i.img.off('.mfploader'), i ===
                    t.currItem && (t._onImageHasSize(i), t.updateStatus(
                        'ready')), i.hasSize = !0, i.loaded = !0, u(
                        'ImageLoadComplete')) : ++o < 200
                        ? setTimeout(a, 100)
                        : r());
                }, r = function () {
                    i && (i.img.off('.mfploader'), i === t.currItem &&
                    (t._onImageHasSize(i), t.updateStatus('error',
                        s.tError.replace('%url%',
                            i.src))), i.hasSize = !0, i.loaded = !0, i.loadError = !0);
                }, s = t.st.image, l = n.find('.mfp-img');
                if (l.length) {
                    var c = document.createElement('img');
                    c.className = 'mfp-img', i.el && i.el.find('img').length &&
                    (c.alt = i.el.find('img').attr('alt')), i.img = e(c).
                        on('load.mfploader', a).
                        on('error.mfploader',
                            r), c.src = i.src, c.srcset = i.srcset, c.sizes = i.sizes, l.is(
                        'img') &&
                    (i.img = i.img.clone()), (c = i.img[0]).naturalWidth > 0
                        ? i.hasSize = !0
                        : c.width || (i.hasSize = !1);
                }
                return t._parseMarkup(n,
                    { title: x(i), img_replaceWith: i.img },
                    i), t.resizeImage(), i.hasSize
                    ? (I && clearInterval(I), i.loadError ? (n.addClass(
                        'mfp-loading'), t.updateStatus('error',
                        s.tError.replace('%url%', i.src))) : (n.removeClass(
                        'mfp-loading'), t.updateStatus('ready')), n)
                    : (t.updateStatus('loading'), i.loading = !0, i.hasSize ||
                    (i.imgHidden = !0, n.addClass(
                        'mfp-loading'), t.findImageSize(i)), n);
            },
        },
    });
    var k;
    e.magnificPopup.registerModule('zoom', {
        options: {
            enabled: !1,
            easing: 'ease-in-out',
            duration: 300,
            opener: function (e) {return e.is('img') ? e : e.find('img');},
        }, proto: {
            initZoom: function () {
                var e, i = t.st.zoom, n = '.zoom';
                if (i.enabled && t.supportsTransition) {
                    var o, a, r = i.duration, s = function (e) {
                        var t = e.clone().
                                removeAttr('style').
                                removeAttr('class').
                                addClass('mfp-animated-image'),
                            n = 'all ' + i.duration / 1e3 + 's ' + i.easing,
                            o = {
                                position: 'fixed',
                                zIndex: 9999,
                                left: 0,
                                top: 0,
                                '-webkit-backface-visibility': 'hidden',
                            }, a = 'transition';
                        return o['-webkit-' + a] = o['-moz-' + a] = o['-o-' +
                        a] = o[a] = n, t.css(o), t;
                    }, l = function () {
                        t.content.css('visibility', 'visible');
                    };
                    d('BuildControls' + n, function () {
                        if (t._allowZoom()) {
                            if (clearTimeout(o), t.content.css('visibility',
                                'hidden'), !(e = t._getItemToZoom())) return void l();
                            (a = s(e)).css(t._getOffset()), t.wrap.append(
                                a), o = setTimeout(function () {
                                a.css(t._getOffset(!0)), o = setTimeout(
                                    function () {
                                        l(), setTimeout(function () {
                                            a.remove(), e = a = null, u(
                                                'ZoomAnimationEnded');
                                        }, 16);
                                    }, r);
                            }, 16);
                        }
                    }), d('BeforeClose' + n, function () {
                        if (t._allowZoom()) {
                            if (clearTimeout(o), t.st.removalDelay = r, !e) {
                                if (!(e = t._getItemToZoom())) return;
                                a = s(e);
                            }
                            a.css(t._getOffset(!0)), t.wrap.append(
                                a), t.content.css('visibility',
                                'hidden'), setTimeout(
                                function () {a.css(t._getOffset());}, 16);
                        }
                    }), d('Close' + n, function () {
                        t._allowZoom() && (l(), a && a.remove(), e = null);
                    });
                }
            },
            _allowZoom: function () {return 'image' === t.currItem.type;},
            _getItemToZoom: function () {
                return !!t.currItem.hasSize && t.currItem.img;
            },
            _getOffset: function (i) {
                var n, o = (n = i ? t.currItem.img : t.st.zoom.opener(
                    t.currItem.el || t.currItem)).offset(),
                    a = parseInt(n.css('padding-top'), 10),
                    r = parseInt(n.css('padding-bottom'), 10);
                o.top -= e(window).scrollTop() - a;
                var s = {
                    width: n.width(),
                    height: (l ? n.innerHeight() : n[0].offsetHeight) - r - a,
                };
                return void 0 === k && (k = void 0 !==
                    document.createElement('p').style.MozTransform), k
                    ? s['-moz-transform'] = s.transform = 'translate(' +
                        o.left + 'px,' + o.top + 'px)'
                    : (s.left = o.left, s.top = o.top), s;
            },
        },
    });
    var T = function (e) {
        if (t.currTemplate.iframe) {
            var i = t.currTemplate.iframe.find('iframe');
            i.length && (e || (i[0].src = '//about:blank'), t.isIE8 &&
            i.css('display', e ? 'block' : 'none'));
        }
    };
    e.magnificPopup.registerModule('iframe', {
        options: {
            markup: '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',
            srcAction: 'iframe_src',
            patterns: {
                youtube: {
                    index: 'youtube.com',
                    id: 'v=',
                    src: '//www.youtube.com/embed/%id%?autoplay=1',
                },
                vimeo: {
                    index: 'vimeo.com/',
                    id: '/',
                    src: '//player.vimeo.com/video/%id%?autoplay=1',
                },
                gmaps: { index: '//maps.google.', src: '%id%&output=embed' },
            },
        },
        proto: {
            initIframe: function () {
                t.types.push('iframe'), d('BeforeChange', function (e, t, i) {
                    t !== i && ('iframe' === t ? T() : 'iframe' === i && T(!0));
                }), d('Close.iframe', function () {T();});
            }, getIframe: function (i, n) {
                var o = i.src, a = t.st.iframe;
                e.each(a.patterns, function () {
                    if (o.indexOf(this.index) > -1) return this.id &&
                    (o = 'string' == typeof this.id
                        ? o.substr(o.lastIndexOf(this.id) + this.id.length,
                            o.length)
                        : this.id.call(this, o)), o = this.src.replace('%id%',
                        o), !1;
                });
                var r = {};
                return a.srcAction && (r[a.srcAction] = o), t._parseMarkup(n, r,
                    i), t.updateStatus('ready'), n;
            },
        },
    });
    var _ = function (e) {
        var i = t.items.length;
        return e > i - 1 ? e - i : e < 0 ? i + e : e;
    }, P = function (e, t, i) {
        return e.replace(/%curr%/gi, t + 1).
            replace(/%total%/gi, i);
    };
    e.magnificPopup.registerModule('gallery', {
        options: {
            enabled: !1,
            arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
            preload: [0, 2],
            navigateByImgClick: !0,
            arrows: !0,
            tPrev: 'Previous (Left arrow key)',
            tNext: 'Next (Right arrow key)',
            tCounter: '%curr% of %total%',
        }, proto: {
            initGallery: function () {
                var i = t.st.gallery, o = '.mfp-gallery';
                if (t.direction = !0, !i || !i.enabled) return !1;
                a += ' mfp-gallery', d('Open' + o, function () {
                    i.navigateByImgClick && t.wrap.on('click' + o, '.mfp-img',
                        function () {
                            if (t.items.length > 1) return t.next(), !1;
                        }), n.on('keydown' + o, function (e) {
                        37 === e.keyCode ? t.prev() : 39 === e.keyCode &&
                            t.next();
                    });
                }), d('UpdateStatus' + o, function (e, i) {
                    i.text &&
                    (i.text = P(i.text, t.currItem.index, t.items.length));
                }), d('MarkupParse' + o, function (e, n, o, a) {
                    var r = t.items.length;
                    o.counter = r > 1 ? P(i.tCounter, a.index, r) : '';
                }), d('BuildControls' + o, function () {
                    if (t.items.length > 1 && i.arrows && !t.arrowLeft) {
                        var n = i.arrowMarkup, o = t.arrowLeft = e(
                            n.replace(/%title%/gi, i.tPrev).
                                replace(/%dir%/gi, 'left')).
                            addClass('mfp-prevent-close'), a = t.arrowRight = e(
                            n.replace(/%title%/gi, i.tNext).
                                replace(/%dir%/gi, 'right')).
                            addClass('mfp-prevent-close');
                        o.click(function () {t.prev();}), a.click(
                            function () {t.next();}), t.container.append(
                            o.add(a));
                    }
                }), d('Change' + o, function () {
                    t._preloadTimeout && clearTimeout(
                        t._preloadTimeout), t._preloadTimeout = setTimeout(
                        function () {t.preloadNearbyImages(), t._preloadTimeout = null;},
                        16);
                }), d('Close' + o, function () {
                    n.off(o), t.wrap.off(
                        'click' + o), t.arrowRight = t.arrowLeft = null;
                });
            },
            next: function () {
                t.direction = !0, t.index = _(t.index + 1), t.updateItemHTML();
            },
            prev: function () {
                t.direction = !1, t.index = _(t.index - 1), t.updateItemHTML();
            },
            goTo: function (e) {
                t.direction = e >= t.index, t.index = e, t.updateItemHTML();
            },
            preloadNearbyImages: function () {
                var e, i = t.st.gallery.preload,
                    n = Math.min(i[0], t.items.length),
                    o = Math.min(i[1], t.items.length);
                for (e = 1; e <= (t.direction ? o : n); e++) t._preloadItem(
                    t.index + e);
                for (e = 1; e <= (t.direction ? n : o); e++) t._preloadItem(
                    t.index - e);
            },
            _preloadItem: function (i) {
                if (i = _(i), !t.items[i].preloaded) {
                    var n = t.items[i];
                    n.parsed || (n = t.parseEl(i)), u('LazyLoad',
                        n), 'image' === n.type &&
                    (n.img = e('<img class="mfp-img" />').
                        on('load.mfploader', function () {n.hasSize = !0;}).
                        on('error.mfploader', function () {
                            n.hasSize = !0, n.loadError = !0, u('LazyLoadError',
                                n);
                        }).
                        attr('src', n.src).
                        attr('srcset', n.srcset).
                        attr('sizes', n.sizes)), n.preloaded = !0;
                }
            },
        },
    });
    e.magnificPopup.registerModule('retina', {
        options: {
            replaceSrc: function (e) {
                return e.src.replace(/\.\w+$/,
                    function (e) {return '@2x' + e;});
            }, ratio: 1,
        },
        proto: {
            initRetina: function () {
                if (window.devicePixelRatio > 1) {
                    var e = t.st.retina, i = e.ratio;
                    (i = isNaN(i) ? i() : i) > 1 && (d('ImageHasSize.retina',
                        function (e, t) {
                            t.img.css({
                                'max-width': t.img[0].naturalWidth / i,
                                width: '100%',
                            });
                        }), d('ElementParse.retina',
                        function (t, n) {n.src = e.replaceSrc(n, i);}));
                }
            },
        },
    }), m();
});

window.SEMICOLON_lightboxInit = function ($lightboxEl) {

    $lightboxEl = $lightboxEl.filter(':not(.customjs)');

    if ($lightboxEl.length < 1) {
        return true;
    }

    $lightboxEl.each(function () {
        let element = $(this),
            elType = element.attr('data-lightbox'),
            elCloseButton = element.attr('data-close-button') || 'outside',
            elDisableUnder = element.attr('data-disable-under') || 600,
            $body = $('body');

        if (elCloseButton == 'inside') {
            elCloseButton = true;
        } else {
            elCloseButton = false;
        }

        if (elType == 'image') {
            element.magnificPopup({
                type: 'image',
                closeOnContentClick: true,
                closeBtnInside: elCloseButton,
                fixedContentPos: true,
                mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side
                image: {
                    verticalFit: true,
                },
            });
        }

        if (elType == 'gallery') {
            if (element.find('a[data-lightbox="gallery-item"]').
                parent('.clone').
                hasClass('clone')) {
                element.find('a[data-lightbox="gallery-item"]').
                    parent('.clone').
                    find('a[data-lightbox="gallery-item"]').
                    attr('data-lightbox', '');
            }

            if (element.find('a[data-lightbox="gallery-item"]').
                parents('.cloned').
                hasClass('cloned')) {
                element.find('a[data-lightbox="gallery-item"]').
                    parents('.cloned').
                    find('a[data-lightbox="gallery-item"]').
                    attr('data-lightbox', '');
            }

            element.magnificPopup({
                delegate: 'a[data-lightbox="gallery-item"]',
                type: 'image',
                closeOnContentClick: true,
                closeBtnInside: elCloseButton,
                fixedContentPos: true,
                mainClass: 'mfp-no-margins mfp-fade', // class to remove default margin from left and right side
                image: {
                    verticalFit: true,
                },
                gallery: {
                    enabled: true,
                    navigateByImgClick: true,
                    preload: [0, 1], // Will preload 0 - before current, and 1 after the current image
                },
            });
        }

        if (elType == 'iframe') {
            element.magnificPopup({
                disableOn: Number(elDisableUnder),
                type: 'iframe',
                removalDelay: 160,
                preloader: false,
                fixedContentPos: false,
            });
        }

        if (elType == 'inline') {
            element.magnificPopup({
                type: 'inline',
                mainClass: 'mfp-no-margins mfp-fade',
                closeBtnInside: elCloseButton,
                fixedContentPos: true,
                overflowY: 'scroll',
            });
        }

        if (elType == 'ajax') {
            element.magnificPopup({
                type: 'ajax',
                closeBtnInside: elCloseButton,
                autoFocusLast: false,
                callbacks: {
                    ajaxContentAdded: function (mfpResponse) {
                        SEMICOLON.widget.loadFlexSlider();
                        SEMICOLON.initialize.resizeVideos();
                        SEMICOLON.widget.masonryThumbs();
                    },
                    open: function () {
                        $body.addClass('ohidden');
                    },
                    close: function () {
                        $body.removeClass('ohidden');
                    },
                },
            });
        }

        if (elType == 'ajax-gallery') {
            element.magnificPopup({
                delegate: 'a[data-lightbox="ajax-gallery-item"]',
                type: 'ajax',
                closeBtnInside: elCloseButton,
                autoFocusLast: false,
                gallery: {
                    enabled: true,
                    preload: 0,
                    navigateByImgClick: false,
                },
                callbacks: {
                    ajaxContentAdded: function (mfpResponse) {
                        SEMICOLON.widget.loadFlexSlider();
                        SEMICOLON.initialize.resizeVideos();
                        SEMICOLON.widget.masonryThumbs();
                    },
                    open: function () {
                        $body.addClass('ohidden');
                    },
                    close: function () {
                        $body.removeClass('ohidden');
                    },
                },
            });
        }

        element.on('mfpOpen', function () {
            let lightboxItem = $.magnificPopup.instance.currItem.el,
                lightboxClass = $(lightboxItem).attr('data-lightbox-class'),
                lightboxBgClass = $(lightboxItem).
                    attr('data-lightbox-bg-class');

            if (lightboxClass != '') {
                $($.magnificPopup.instance.container).addClass(lightboxClass);
            }

            if (lightboxBgClass != '') {
                $($.magnificPopup.instance.bgOverlay).addClass(lightboxBgClass);
            }
        });
    });

};

window.SEMICOLON_modalInit = function ($modalEl) {

    $modalEl = $modalEl.filter(':not(.customjs)');

    if ($modalEl.length < 1) {
        return true;
    }

    $modalEl.each(function () {
        let element = $(this),
            elTarget = element.attr('data-target'),
            elTargetValue = elTarget.split('#')[1],
            elDelay = element.attr('data-delay') || 500,
            elTimeout = element.attr('data-timeout'),
            elAnimateIn = element.attr('data-animate-in'),
            elAnimateOut = element.attr('data-animate-out'),
            elBgClick = element.attr('data-bg-click'),
            elCloseBtn = element.attr('data-close-btn'),
            elCookies = element.attr('data-cookies'),
            elCookiePath = element.attr('data-cookie-path'),
            elCookieExp = element.attr('data-cookie-expire');

        if (elCookies == 'false') { Cookies.remove(elTargetValue); }

        if (elCookies == 'true') {
            let elementCookie = Cookies.get(elTargetValue);

            if (typeof elementCookie !== 'undefined' && elementCookie == '0') {
                return true;
            }
        }

        if (elBgClick == 'false') {
            elBgClick = false;
        } else {
            elBgClick = true;
        }

        if (elCloseBtn == 'false') {
            elCloseBtn = false;
        } else {
            elCloseBtn = true;
        }

        elDelay = Number(elDelay) + 500;

        setTimeout(function () {
            $.magnificPopup.open({
                items: { src: elTarget },
                type: 'inline',
                mainClass: 'mfp-no-margins mfp-fade',
                closeBtnInside: false,
                fixedContentPos: true,
                closeOnBgClick: elBgClick,
                showCloseBtn: elCloseBtn,
                removalDelay: 500,
                callbacks: {
                    open: function () {
                        if (elAnimateIn != '') {
                            $(elTarget).addClass(elAnimateIn + ' animated');
                        }
                    },
                    beforeClose: function () {
                        if (elAnimateOut != '') {
                            $(elTarget).
                                removeClass(elAnimateIn).
                                addClass(elAnimateOut);
                        }
                    },
                    afterClose: function () {
                        if (elAnimateIn != '' || elAnimateOut != '') {
                            $(elTarget).
                                removeClass(elAnimateIn + ' ' + elAnimateOut +
                                    ' animated');
                        }
                        if (elCookies == 'true') {
                            let cookieOps = {};

                            if (elCookieExp) {
                                cookieOps.expires = Number(elCookieExp);
                            }

                            if (elCookiePath) {
                                cookieOps.path = elCookiePath;
                            }

                            Cookies.set(elTargetValue, '0', cookieOps);
                        }
                    },
                },
            }, 0);
        }, elDelay);

        if (elTimeout != '') {
            setTimeout(function () {
                $.magnificPopup.close();
            }, elDelay + Number(elTimeout));
        }
    });

};

window.scwLinkScrollPlugin = window.scwLinkScrollPlugin || {};

/*!
 * jQuery Color Animations v@VERSION
 * https://github.com/jquery/jquery-color
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * Date: @DATE
 */
!function (r, n) {
    function t (r, n, t) {
        var e = f[n.type] || {};
        return null == r ? t || !n.def ? null : n.def : (r = e.floor
            ? ~~r
            : parseFloat(r), isNaN(r) ? n.def : e.mod
            ? (r + e.mod) % e.mod
            : 0 > r ? 0 : e.max < r ? e.max : r);
    }

    function e (n) {
        var t = l(), e = t._rgba = [];
        return n = n.toLowerCase(), h(u, function (r, o) {
            var a, s = o.re.exec(n), i = s && o.parse(s), u = o.space || 'rgba';
            return i
                ? (a = t[u](
                    i), t[c[u].cache] = a[c[u].cache], e = t._rgba = a._rgba, !1)
                : void 0;
        }), e.length
            ? ('0,0,0,0' === e.join() && r.extend(e, a.transparent), t)
            : a[n];
    }

    function o (r, n, t) {
        return t = (t + 1) % 1, 1 > 6 * t ? r + (n - r) * t * 6 : 1 > 2 * t
            ? n
            : 2 > 3 * t ? r + (n - r) * (2 / 3 - t) * 6 : r;
    }

    var a,
        s = 'backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor',
        i = /^([\-+])=\s*(\d+\.?\d*)/, u = [
            {
                re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                parse: function (r) {return [r[1], r[2], r[3], r[4]];},
            },
            {
                re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                parse: function (r) {
                    return [
                        2.55 * r[1],
                        2.55 * r[2],
                        2.55 * r[3],
                        r[4]];
                },
            },
            {
                re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
                parse: function (r) {
                    return [
                        parseInt(r[1], 16),
                        parseInt(r[2], 16),
                        parseInt(r[3], 16)];
                },
            },
            {
                re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
                parse: function (r) {
                    return [
                        parseInt(r[1] + r[1], 16),
                        parseInt(r[2] + r[2], 16),
                        parseInt(r[3] + r[3], 16)];
                },
            },
            {
                re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                space: 'hsla',
                parse: function (r) {return [r[1], r[2] / 100, r[3] / 100, r[4]];},
            }], l = r.Color = function (n, t, e, o) {
            return new r.Color.fn.parse(n, t, e, o);
        }, c = {
            rgba: {
                props: {
                    red: { idx: 0, type: 'byte' },
                    green: { idx: 1, type: 'byte' },
                    blue: { idx: 2, type: 'byte' },
                },
            },
            hsla: {
                props: {
                    hue: { idx: 0, type: 'degrees' },
                    saturation: { idx: 1, type: 'percent' },
                    lightness: { idx: 2, type: 'percent' },
                },
            },
        }, f = {
            'byte': { floor: !0, max: 255 },
            percent: { max: 1 },
            degrees: { mod: 360, floor: !0 },
        }, p = l.support = {}, d = r('<p>')[0], h = r.each;
    d.style.cssText = 'background-color:rgba(1,1,1,.5)', p.rgba = d.style.backgroundColor.indexOf(
        'rgba') > -1, h(c, function (r, n) {
        n.cache = '_' + r, n.props.alpha = {
            idx: 3,
            type: 'percent',
            def: 1,
        };
    }), l.fn = r.extend(l.prototype, {
        parse: function (o, s, i, u) {
            if (o === n) return this._rgba = [
                null,
                null,
                null,
                null], this;
            (o.jquery || o.nodeType) && (o = r(o).css(s), s = n);
            var f = this, p = r.type(o), d = this._rgba = [];
            return s !== n && (o = [o, s, i, u], p = 'array'), 'string' === p
                ? this.parse(e(o) || a._default)
                : 'array' === p
                    ? (h(c.rgba.props,
                        function (r, n) {d[n.idx] = t(o[n.idx], n);}), this)
                    : 'object' === p ? (o instanceof l ? h(c, function (r, n) {
                        o[n.cache] && (f[n.cache] = o[n.cache].slice());
                    }) : h(c, function (n, e) {
                        var a = e.cache;
                        h(e.props, function (r, n) {
                            if (!f[a] && e.to) {
                                if ('alpha' === r || null == o[r]) return;
                                f[a] = e.to(f._rgba);
                            }
                            f[a][n.idx] = t(o[r], n, !0);
                        }), f[a] && r.inArray(null, f[a].slice(0, 3)) < 0 &&
                        (f[a][3] = 1, e.from && (f._rgba = e.from(f[a])));
                    }), this) : void 0;
        },
        is: function (r) {
            var n = l(r), t = !0, e = this;
            return h(c, function (r, o) {
                var a, s = n[o.cache];
                return s &&
                (a = e[o.cache] || o.to && o.to(e._rgba) || [], h(o.props,
                    function (r, n) {
                        return null != s[n.idx]
                            ? t = s[n.idx] === a[n.idx]
                            : void 0;
                    })), t;
            }), t;
        },
        _space: function () {
            var r = [], n = this;
            return h(c, function (t, e) {n[e.cache] && r.push(t);}), r.pop();
        },
        transition: function (r, n) {
            var e = l(r), o = e._space(), a = c[o],
                s = 0 === this.alpha() ? l('transparent') : this,
                i = s[a.cache] || a.to(s._rgba), u = i.slice();
            return e = e[a.cache], h(a.props, function (r, o) {
                var a = o.idx, s = i[a], l = e[a], c = f[o.type] || {};
                null !== l && (null === s ? u[a] = l : (c.mod &&
                (l - s > c.mod / 2 ? s += c.mod : s - l > c.mod / 2 &&
                    (s -= c.mod)), u[a] = t((l - s) * n + s, o)));
            }), this[o](u);
        },
        blend: function (n) {
            if (1 === this._rgba[3]) return this;
            var t = this._rgba.slice(), e = t.pop(), o = l(n)._rgba;
            return l(
                r.map(t, function (r, n) {return (1 - e) * o[n] + e * r;}));
        },
        toRgbaString: function () {
            var n = 'rgba(', t = r.map(this._rgba,
                function (r, n) {return null == r ? n > 2 ? 1 : 0 : r;});
            return 1 === t[3] && (t.pop(), n = 'rgb('), n + t.join() + ')';
        },
        toHslaString: function () {
            var n = 'hsla(', t = r.map(this.hsla(), function (r, n) {
                return null == r && (r = n > 2 ? 1 : 0), n && 3 > n &&
                (r = Math.round(100 * r) + '%'), r;
            });
            return 1 === t[3] && (t.pop(), n = 'hsl('), n + t.join() + ')';
        },
        toHexString: function (n) {
            var t = this._rgba.slice(), e = t.pop();
            return n && t.push(~~(255 * e)), '#' + r.map(t, function (r) {
                return r = (r || 0).toString(16), 1 === r.length
                    ? '0' + r
                    : r;
            }).join('');
        },
        toString: function () {
            return 0 === this._rgba[3]
                ? 'transparent'
                : this.toRgbaString();
        },
    }), l.fn.parse.prototype = l.fn, c.hsla.to = function (r) {
        if (null == r[0] || null == r[1] || null == r[2]) return [
            null,
            null,
            null,
            r[3]];
        var n, t, e = r[0] / 255, o = r[1] / 255, a = r[2] / 255, s = r[3],
            i = Math.max(e, o, a), u = Math.min(e, o, a), l = i - u, c = i + u,
            f = .5 * c;
        return n = u === i ? 0 : e === i ? 60 * (o - a) / l + 360 : o === i
            ? 60 * (a - e) / l + 120
            : 60 * (e - o) / l + 240, t = 0 === l ? 0 : .5 >= f ? l / c : l /
            (2 - c), [Math.round(n) % 360, t, f, null == s ? 1 : s];
    }, c.hsla.from = function (r) {
        if (null == r[0] || null == r[1] || null == r[2]) return [
            null,
            null,
            null,
            r[3]];
        var n = r[0] / 360, t = r[1], e = r[2], a = r[3],
            s = .5 >= e ? e * (1 + t) : e + t - e * t, i = 2 * e - s;
        return [
            Math.round(255 * o(i, s, n + 1 / 3)),
            Math.round(255 * o(i, s, n)),
            Math.round(255 * o(i, s, n - 1 / 3)),
            a];
    }, h(c, function (e, o) {
        var a = o.props, s = o.cache, u = o.to, c = o.from;
        l.fn[e] = function (e) {
            if (u && !this[s] && (this[s] = u(this._rgba)), e ===
            n) return this[s].slice();
            var o, i = r.type(e),
                f = 'array' === i || 'object' === i ? e : arguments,
                p = this[s].slice();
            return h(a, function (r, n) {
                var e = f['object' === i ? r : n.idx];
                null == e && (e = p[n.idx]), p[n.idx] = t(e, n);
            }), c ? (o = l(c(p)), o[s] = p, o) : l(p);
        }, h(a, function (n, t) {
            l.fn[n] || (l.fn[n] = function (o) {
                var a, s = r.type(o),
                    u = 'alpha' === n ? this._hsla ? 'hsla' : 'rgba' : e,
                    l = this[u](), c = l[t.idx];
                return 'undefined' === s ? c : ('function' === s &&
                (o = o.call(this, c), s = r.type(o)), null == o && t.empty
                    ? this
                    : ('string' === s && (a = i.exec(o), a &&
                    (o = c + parseFloat(a[2]) *
                        ('+' === a[1] ? 1 : -1))), l[t.idx] = o, this[u](l)));
            });
        });
    }), l.hook = function (n) {
        var t = n.split(' ');
        h(t, function (n, t) {
            r.cssHooks[t] = {
                set: function (n, o) {
                    var a, s, i = '';
                    if ('transparent' !== o &&
                        ('string' !== r.type(o) || (a = e(o)))) {
                        if (o = l(a || o), !p.rgba && 1 !== o._rgba[3]) {
                            for (s = 'backgroundColor' === t
                                ? n.parentNode
                                : n; ("" === i || "transparent" === i) && s &&
                                 s.style;) try {
                                i = r.css(s,
                                    'backgroundColor'), s = s.parentNode;
                            } catch (u) {}
                            o = o.blend(
                                i && 'transparent' !== i ? i : '_default');
                        }
                        o = o.toRgbaString();
                    }
                    try {n.style[t] = o;} catch (u) {}
                },
            }, r.fx.step[t] = function (n) {
                n.colorInit || (n.start = l(n.elem, t), n.end = l(
                    n.end), n.colorInit = !0), r.cssHooks[t].set(n.elem,
                    n.start.transition(n.end, n.pos));
            };
        });
    }, l.hook(s), r.cssHooks.borderColor = {
        expand: function (r) {
            var n = {};
            return h(['Top', 'Right', 'Bottom', 'Left'],
                function (t, e) {n['border' + e + 'Color'] = r;}), n;
        },
    }, a = r.Color.names = {
        aqua: '#00ffff',
        black: '#000000',
        blue: '#0000ff',
        fuchsia: '#ff00ff',
        gray: '#808080',
        green: '#008000',
        lime: '#00ff00',
        maroon: '#800000',
        navy: '#000080',
        olive: '#808000',
        purple: '#800080',
        red: '#ff0000',
        silver: '#c0c0c0',
        teal: '#008080',
        white: '#ffffff',
        yellow: '#ffff00',
        transparent: [null, null, null, 0],
        _default: '#ffffff',
    };
}(jQuery);

let windowElLs = jQuery(window),
    $bodyLs = jQuery('body'),
    $pageSectionElLs,
    locationHashLs = location.hash;

window.SEMICOLON_linkScrollInit = function ($linkScrollEl) {

    $linkScrollEl = $linkScrollEl.filter(':not(.customjs)');

    if ($linkScrollEl.length < 1) {
        return true;
    }

    if ($('[data-scrollto="' + locationHashLs + '"]').length > 0) {

        windowElLs.on('beforeunload', function () {
            windowElLs.scrollTop(0);
        });

        windowElLs.scrollTop(0);

        let linkElement = $(locationHashLs);

        if (linkElement.length > 0) {
            setTimeout(function () {
                let linkElementOff = linkElement.offset().top,
                    linkElSettings = JSON.parse(
                        linkElement.attr('data-scrollto-settings'));

                $('html,body').stop(true, true).animate({
                    'scrollTop': linkElementOff - Number(linkElSettings.offset),
                }, linkElSettings.speed, linkElSettings.easing, function () {
                    if (linkElSettings.highlight) {
                        if (linkElement.find('.highlight-me').length > 0) {
                            linkElement.find('.highlight-me').
                                animate(
                                    { 'backgroundColor': linkElSettings.highlight },
                                    300);
                            setTimeout(function () {
                                linkElement.find('.highlight-me').
                                    animate(
                                        { 'backgroundColor': 'transparent' },
                                        300);
                            }, 500);
                        } else {
                            linkElement.animate(
                                { 'backgroundColor': linkElSettings.highlight },
                                300);
                            setTimeout(function () {
                                linkElement.animate(
                                    { 'backgroundColor': 'transparent' }, 300);
                            }, 500);
                        }
                    }
                });
            }, 1200);
        }

    }

    $linkScrollEl.each(function () {

        let linkEl = $(this),
            linkElAnchor = linkEl.attr('data-scrollto'),
            linkElement = $(linkElAnchor);

        if (linkElement.length > 0) {
            let linkElSettings = SEMICOLON_linkScrollSettings(linkElAnchor,
                $('[data-scrollto="' + linkElAnchor + '"]'));
            setTimeout(function () {
                linkElement.attr('data-scrollto-settings',
                    JSON.stringify(linkElSettings));
                $pageSectionElLs = $('[data-scrollto-settings]');
            }, 1000);
        }

    });

    $linkScrollEl.off('click').on('click', function () {
        let linkEl = $(this),
            linkElAnchor = linkEl.attr('data-scrollto'),
            linkElement = $(linkElAnchor);

        if (linkEl.parents('.primary-menu').
            hasClass('on-click')) { return true; }

        if (linkElement.length > 0) {

            let linkElSettings = JSON.parse(
                linkElement.attr('data-scrollto-settings'));

            $('html,body').stop(true).animate({
                    'scrollTop': linkElement.offset().top -
                        Number(linkElSettings.offset),
                }, Number(linkElSettings.speed), linkElSettings.easing,
                function () {
                    if (linkElSettings.highlight) {
                        if (linkElement.find('.highlight-me').length > 0) {
                            linkElement.find('.highlight-me').
                                animate(
                                    { 'backgroundColor': linkElSettings.highlight },
                                    300);
                            setTimeout(function () {
                                linkElement.find('.highlight-me').
                                    animate(
                                        { 'backgroundColor': 'transparent' },
                                        300);
                            }, 500);
                        } else {
                            linkElement.animate(
                                { 'backgroundColor': linkElSettings.highlight },
                                300);
                            setTimeout(function () {
                                linkElement.animate(
                                    { 'backgroundColor': 'transparent' }, 300);
                            }, 500);
                        }
                    }
                });

            return false;
        }
    });

};

window.SEMICOLON_linkScrollSettings = function (hash, element) {

    if (typeof hash === 'undefined' && element.length < 1) {
        return true;
    }

    let settings = {},
        offsetTop = $(hash).offset().top,
        elSpeed = element.attr('data-speed') || 1250,
        elOffset = element.attr('data-offset') ||
            SEMICOLON.initialize.topScrollOffset(),
        elEasing = element.attr('data-easing') || 'easeOutQuad',
        elHighlight = element.attr('data-highlight');

    let elOffsetXXL = element.attr('data-offset-xxl'),
        elOffsetXL = element.attr('data-offset-xl'),
        elOffsetLG = element.attr('data-offset-lg'),
        elOffsetMD = element.attr('data-offset-md'),
        elOffsetSM = element.attr('data-offset-sm'),
        elOffsetXS = element.attr('data-offset-xs');

    if (!elOffsetXS) { elOffsetXS = elOffset; }
    if (!elOffsetSM) { elOffsetSM = elOffsetXS; }
    if (!elOffsetMD) { elOffsetMD = elOffsetSM; }
    if (!elOffsetLG) { elOffsetLG = elOffsetMD; }
    if (!elOffsetXL) { elOffsetXL = elOffsetLG; }
    if (!elOffsetXXL) { elOffsetXXL = elOffsetXL; }

    if ($bodyLs.hasClass('device-xxl')) {
        elOffset = elOffsetXXL;
    } else if ($bodyLs.hasClass('device-xl')) {
        elOffset = elOffsetXL;
    } else if ($bodyLs.hasClass('device-lg')) {
        elOffset = elOffsetLG;
    } else if ($bodyLs.hasClass('device-md')) {
        elOffset = elOffsetMD;
    } else if ($bodyLs.hasClass('device-sm')) {
        elOffset = elOffsetSM;
    } else if ($bodyLs.hasClass('device-xs')) {
        elOffset = elOffsetXS;
    }

    settings.offset = Number(elOffset);

    settings.speed = elSpeed;
    settings.easing = elEasing;
    settings.highlight = elHighlight;

    return settings;

};

window.scwMasonryThumbsPlugin = window.scwMasonryThumbsPlugin || {};

window.SEMICOLON_masonryThumbsInit = function ($masonryThumbsEl) {

    if ($masonryThumbsEl.length < 1) {
        return true;
    }

    let $body = $('body');

    $masonryThumbsEl.each(function () {
        let element = $(this),
            elBig = element.attr('data-big');

        element.children().css({ 'width': '' });

        let firstElementWidth = element.children().eq(0).outerWidth();

        element.filter('.has-init-isotope').isotope({
            masonry: {
                columnWidth: firstElementWidth,
            },
        });

        if (elBig) {
            elBig = elBig.split(',');
            let elBigNum = '',
                bigi = '';
            for (bigi = 0; bigi < elBig.length; bigi++) {
                elBigNum = Number(elBig[bigi]) - 1;
                element.children().eq(elBigNum).addClass('grid-item-big');
            }
        }

        element.find('.grid-item-big').
            css({ width: firstElementWidth * 2 + 'px' });

        setTimeout(function () {
            element.filter('.has-init-isotope').isotope('layout');
        }, 500);
    });

};

window.scwNavTreePlugin = window.scwNavTreePlugin || {};

window.SEMICOLON_navtreeInit = function ($navTreeEl) {

    $navTreeEl = $navTreeEl.filter(':not(.customjs)');

    if ($navTreeEl.length < 1) {
        return true;
    }

    $navTreeEl.each(function () {
        let element = $(this),
            elSpeed = element.attr('data-speed') || 250,
            elEasing = element.attr('data-easing') || 'swing';

        element.find('ul li:has(ul)').addClass('sub-menu');
        element.find('ul li:has(ul) > a').
            append(' <i class="icon-angle-down"></i>');

        if (element.hasClass('on-hover')) {
            element.find('ul li:has(ul):not(.active)').hover(function (e) {
                $(this).
                    children('ul').
                    stop(true, true).
                    slideDown(Number(elSpeed), elEasing);
            }, function () {
                $(this).
                    children('ul').
                    delay(250).
                    slideUp(Number(elSpeed), elEasing);
            });
        } else {
            element.find('ul li:has(ul) > a').
                off('click').
                on('click', function (e) {
                    let childElement = $(this);
                    element.find('ul li').
                        not(childElement.parents()).
                        removeClass('active');
                    childElement.parent().
                        children('ul').
                        slideToggle(Number(elSpeed), elEasing, function () {
                            $(this).find('ul').hide();
                            $(this).find('li.active').removeClass('active');
                        });
                    element.find('ul li > ul').
                        not(childElement.parent().children('ul')).
                        not(childElement.parents('ul')).
                        slideUp(Number(elSpeed), elEasing);
                    childElement.parent('li:has(ul)').toggleClass('active');
                    e.preventDefault();
                });
        }
    });

};

window.scwNotificationPlugin = window.scwNotificationPlugin || {};

window.SEMICOLON_notificationInit = function ($notifyEl) {

    $notifyEl = $notifyEl.filter(':not(.customjs)');

    let element = $notifyEl,
        elPosition = element.attr('data-notify-position') || 'top-right',
        elType = element.attr('data-notify-type'),
        elMsg = element.attr('data-notify-msg') || 'Please set a message!',
        elTimeout = element.attr('data-notify-timeout') || 5000,
        elClose = element.attr('data-notify-close') || 'true',
        elAutoHide = element.attr('data-notify-autohide') || 'true',
        elId = 'toast-' + Math.floor(Math.random() * 10000),
        elTrigger = element.attr('data-notify-trigger') || 'self',
        elTarget = element.attr('data-notify-target'),
        elCloseHtml = '',
        elPosClass, elTypeClass, elCloseClass;

    switch (elType) {

        case 'primary':
            elTypeClass = 'text-white bg-primary border-0';
            break;

        case 'warning':
            elTypeClass = 'text-dark bg-warning border-0';
            break;

        case 'error':
            elTypeClass = 'text-white bg-danger border-0';
            break;

        case 'success':
            elTypeClass = 'text-white bg-success border-0';
            break;

        case 'info':
            elTypeClass = 'bg-info text-dark border-0';
            break;

        case 'dark':
            elTypeClass = 'text-white bg-dark border-0';
            break;

        default:
            elTypeClass = '';
            break;
    }

    switch (elPosition) {

        case 'top-left':
            elPosClass = 'top-0 start-0';
            break;

        case 'top-center':
            elPosClass = 'top-0 start-50 translate-middle-x';
            break;

        case 'middle-left':
            elPosClass = 'top-50 start-0 translate-middle-y';
            break;

        case 'middle-center':
            elPosClass = 'top-50 start-50 translate-middle';
            break;

        case 'middle-right':
            elPosClass = 'top-50 end-0 translate-middle-y';
            break;

        case 'bottom-left':
            elPosClass = 'bottom-0 start-0';
            break;

        case 'bottom-center':
            elPosClass = 'bottom-0 start-50 translate-middle-x';
            break;

        case 'bottom-right':
            elPosClass = 'bottom-0 end-0';
            break;

        default:
            elPosClass = 'top-0 end-0';
            break;
    }

    if (elType == 'info' || elType == 'warning' || !elType) {
        elCloseClass = '';
    } else {
        elCloseClass = 'btn-close-white';
    }

    if (elClose == 'true') {
        elCloseHtml = '<button type="button" class="btn-close ' + elCloseClass +
            ' btn-sm me-2 mt-2 ms-auto" data-bs-dismiss="toast" aria-label="Close"></button>';
    }

    if (elAutoHide != 'true') {
        elAutoHide = false;
    } else {
        elAutoHide = true;
    }

    let elTemplate = '<div class="position-fixed ' + elPosClass +
        ' p-3" style="z-index: 999999;">' +
        '<div id="' + elId + '" class="toast p-2 hide ' + elTypeClass +
        '" role="alert" aria-live="assertive" aria-atomic="true">' +
        '<div class="d-flex">' +
        '<div class="toast-body">' +
        elMsg +
        '</div>' +
        elCloseHtml +
        '</div>' +
        '</div>';
    '</div>';

    if (elTrigger == 'self') {
        if (!elTarget) {
            element.attr('data-notify-target', '#' + elId);

            $('body').append(elTemplate);
        }
    }

    let toastElList = [].slice.call(document.querySelectorAll('.toast'));
    let toastList = toastElList.map(function (toastEl) {
        return new bootstrap.Toast(toastEl);
    });

    toastList.forEach(toast => {
        toast.hide();
    });

    let toastElement = element.attr('data-notify-target');

    if ($(toastElement).length > 0) {
        let toast = new bootstrap.Toast($(toastElement).get(0), {
            delay: Number(elTimeout),
            autohide: elAutoHide,
        });

        toast.show();
    }

    return false;

};

window.scwOnePageModulePlugin = window.scwOnePageModulePlugin || {};

let $onePageMenu,
    windowEl = $(window),
    windowWidth = windowEl.width(),
    $body = $('body'),
    $pageSectionEl,
    locationHash = location.hash,
    onePageMenuActiveClass;

window.SEMICOLON_onePageModule = function ($onePageMenuEl) {

    $onePageMenu = $onePageMenuEl.filter(':not(.customjs)');

    if ($onePageMenu.length < 1) {
        return true;
    }

    if ($('a[data-href="' + locationHash + '"]').
        parents('.one-page-menu').length > 0) {

        windowEl.on('beforeunload', function () {
            windowEl.scrollTop(0);
        });

        windowEl.scrollTop(0);

        let linkElement = $(locationHash);

        if (linkElement.length > 0) {
            setTimeout(function () {
                let linkElementOff = linkElement.offset().top,
                    linkElSettings = JSON.parse(
                        linkElement.attr('data-onepage-settings'));

                $('html,body').stop(true, true).animate({
                    'scrollTop': linkElementOff - Number(linkElSettings.offset),
                }, linkElSettings.speed, linkElSettings.easing);
            }, 1200);
        }

    }

    let onePageScrollInterval = setInterval(function () {
        if ('pluginOnePageModuleReady' in scwEvents) {
            windowEl.scrollEnd(function () {
                SEMICOLON_onePageScroller();
            }, 500);
            clearInterval(onePageScrollInterval);
        }
    }, 1000);

    $onePageMenu.each(function () {

        let element = $(this);

        onePageMenuActiveClass = element.attr('data-active-class') || 'current';
        $onePageMenu = element;

        if (element.hasClass('no-offset')) {
            elOffset = 0;
        }

        let linkEls = element.find('a[data-href]');

        linkEls.each(function () {

            let linkEl = $(this),
                linkElAnchor = linkEl.attr('data-href'),
                linkElement = $(linkElAnchor);

            if (linkElement.length > 0) {
                let linkElSettings = SEMICOLON_onePageSettings(linkElAnchor,
                    $('a[data-href="' + linkElAnchor + '"]'));
                setTimeout(function () {
                    linkElement.attr('data-onepage-settings',
                        JSON.stringify(linkElSettings));
                    $pageSectionEl = $('[data-onepage-settings]');
                }, 1000);
            }

        });

        linkEls.off('click').on('click', function () {

            let linkEl = $(this),
                linkElAnchor = linkEl.attr('data-href'),
                linkElement = $(linkElAnchor);

            if (linkElement.length > 0) {

                let linkElSettings = JSON.parse(
                    linkElement.attr('data-onepage-settings'));

                element.find('li').removeClass(onePageMenuActiveClass);
                element.find('a[data-href="' + linkElAnchor + '"]').
                    parent('li').
                    addClass(onePageMenuActiveClass);

                if (windowWidth < 992 || $body.hasClass('overlay-menu')) {
                    $onePageMenuEl.parents('.primary-menu').
                        filter(':not(.mobile-menu-off-canvas)').
                        find('.menu-container').
                        stop(true, true).
                        slideUp(200);
                    $('.primary-menu.mobile-menu-off-canvas .menu-container').
                        toggleClass('d-block', false);
                    $('#page-menu').toggleClass('page-menu-open', false);
                    $body.toggleClass('primary-menu-open', false);
                }

                setTimeout(function () {
                    let linkElementOff = linkElement.offset().top;
                    $('html,body').stop(true, true).animate({
                        'scrollTop': linkElementOff -
                            Number(linkElSettings.offset),
                    }, Number(linkElSettings.speed), linkElSettings.easing);
                }, 250);
            }

            return false;
        });

    });

};

window.SEMICOLON_onePageScroller = function () {
    $onePageMenu.find('[data-href]').
        parent().
        removeClass(onePageMenuActiveClass);
    $onePageMenu.find(
        '[data-href="#' + SEMICOLON_onePageCurrentSection() + '"]').
        parent().
        addClass(onePageMenuActiveClass);
};

window.SEMICOLON_onePageCurrentSection = function () {
    let currentOnePageSection;

    if (typeof $pageSectionEl === 'undefined') {
        return true;
    }

    $pageSectionEl.each(function (index) {
        let element = $(this),
            elSettings = JSON.parse(element.attr('data-onepage-settings')),
            h = element.offset().top - elSettings.offset - 5,
            y = windowEl.scrollTop();

        if ((y >= h) && (y < h + element.height()) &&
            (element.attr('id') != currentOnePageSection)) {
            currentOnePageSection = element.attr('id');
        }
    });

    return currentOnePageSection;
};

window.SEMICOLON_onePageSettings = function (hash, element) {

    if (typeof hash === 'undefined' || element.length < 1) {
        return true;
    }

    if ($(hash).length < 1) {
        return true;
    }

    let settings = {},
        child = element,
        parent = element.parents('.one-page-menu'),
        offsetTop = $(hash).offset().top,
        elSpeed = child.attr('data-speed'),
        elOffset = child.attr('data-offset'),
        elEasing = child.attr('data-easing');

    if (!elSpeed) {
        elSpeed = parent.attr('data-speed') || 1250;
    }

    if (!elEasing) {
        elEasing = parent.attr('data-easing') || 'easeOutQuad';
    }

    if (!elOffset) {
        element = parent;
        elOffset = parent.attr('data-offset') ||
            SEMICOLON.initialize.topScrollOffset();
    }

    let elOffsetXXL = element.attr('data-offset-xxl'),
        elOffsetXL = element.attr('data-offset-xl'),
        elOffsetLG = element.attr('data-offset-lg'),
        elOffsetMD = element.attr('data-offset-md'),
        elOffsetSM = element.attr('data-offset-sm'),
        elOffsetXS = element.attr('data-offset-xs');

    if (!elOffsetXXL) { elOffsetXXL = Number(elOffset); }
    if (!elOffsetXL) { elOffsetXL = Number(elOffsetXXL); }
    if (!elOffsetLG) { elOffsetLG = Number(elOffsetXL); }
    if (!elOffsetMD) { elOffsetMD = Number(elOffsetLG); }
    if (!elOffsetSM) { elOffsetSM = Number(elOffsetMD); }
    if (!elOffsetXS) { elOffsetXS = Number(elOffsetSM); }

    if ($body.hasClass('device-xxl')) {
        elOffset = elOffsetXXL;
    } else if ($body.hasClass('device-xl')) {
        elOffset = elOffsetXL;
    } else if ($body.hasClass('device-lg')) {
        elOffset = elOffsetLG;
    } else if ($body.hasClass('device-md')) {
        elOffset = elOffsetMD;
    } else if ($body.hasClass('device-sm')) {
        elOffset = elOffsetSM;
    } else if ($body.hasClass('device-xs')) {
        elOffset = elOffsetXS;
    }

    settings.offset = elOffset;

    settings.speed = elSpeed;
    settings.easing = elEasing;

    return settings;

};

/*!
 * animsition v4.0.2
 * A simple and easy jQuery plugin for CSS animated page transitions.
 * http://blivesta.github.io/animsition
 * License : MIT
 * Author : blivesta (http://blivesta.com/)
 */
!function (t) {
    'use strict';
    'function' == typeof define && define.amd
        ? define(['jquery'], t)
        : 'object' == typeof exports
        ? module.exports = t(require('jquery'))
        : t(jQuery);
}(function (t) {
    'use strict';
    var n = !1;
    t(window).on('load', function () {n = !0;});
    var i = 'animsition', a = {
        init: function (o) {
            o = t.extend({
                inClass: 'fade-in',
                outClass: 'fade-out',
                inDuration: 1500,
                outDuration: 800,
                linkElement: '.animsition-link',
                loading: !0,
                loadingParentElement: 'body',
                loadingClass: 'animsition-loading',
                loadingInner: '',
                timeout: !1,
                timeoutCountdown: 5e3,
                onLoadEvent: !0,
                browser: ['animation-duration', '-webkit-animation-duration'],
                overlay: !1,
                overlayClass: 'animsition-overlay-slide',
                overlayParentElement: 'body',
                transition: function (t) {window.location.href = t;},
            }, o), a.settings = {
                timer: !1,
                data: {
                    inClass: 'animsition-in-class',
                    inDuration: 'animsition-in-duration',
                    outClass: 'animsition-out-class',
                    outDuration: 'animsition-out-duration',
                    overlay: 'animsition-overlay',
                },
                events: {
                    inStart: 'animsition.inStart',
                    inEnd: 'animsition.inEnd',
                    outStart: 'animsition.outStart',
                    outEnd: 'animsition.outEnd',
                },
            };
            var e = a.supportCheck.call(this, o);
            if (!e && o.browser.length > 0 &&
                (!e || !this.length)) return 'console' in window ||
            (window.console = {}, window.console.log = function (t) {return t;}), this.length ||
            console.log('Animsition: Element does not exist on page.'), e ||
            console.log(
                'Animsition: Does not support this browser.'), a.destroy.call(
                this);
            var s = a.optionCheck.call(this, o);
            return s && t('.' + o.overlayClass).length <= 0 &&
            a.addOverlay.call(this, o), o.loading &&
            t('.' + o.loadingClass).length <= 0 &&
            a.addLoading.call(this, o), this.each(function () {
                var e = this, s = t(this), r = t(window), l = t(document),
                    d = s.data(i);
                d ||
                (o = t.extend({}, o), s.data(i, { options: o }), o.timeout &&
                a.addTimer.call(e), o.onLoadEvent && (n ? (a.settings.timer &&
                clearTimeout(a.settings.timer), a['in'].call(e)) : r.on(
                    'load.' + i, function () {
                        a.settings.timer &&
                        clearTimeout(a.settings.timer), a['in'].call(e);
                    })), r.on('pageshow.' + i, function (t) {
                    t.originalEvent.persisted && a['in'].call(e);
                }), r.on('unload.' + i, function () {}), l.on('click.' + i,
                    o.linkElement, function (n) {
                        n.preventDefault();
                        var i = t(this), o = i.attr('href');
                        2 === n.which || n.metaKey || n.shiftKey || -1 !==
                        navigator.platform.toUpperCase().indexOf('WIN') &&
                        n.ctrlKey ? window.open(o, '_blank') : a.out.call(e, i,
                            o);
                    }));
            });
        },
        addOverlay: function (n) {
            t(n.overlayParentElement).
                prepend('<div class="' + n.overlayClass + '"></div>');
        },
        addLoading: function (n) {
            t(n.loadingParentElement).
                append('<div class="' + n.loadingClass + '">' + n.loadingInner +
                    '</div>');
        },
        removeLoading: function () {
            var n = t(this), a = n.data(i).options,
                o = t(a.loadingParentElement).children('.' + a.loadingClass);
            o.fadeOut().remove();
        },
        addTimer: function () {
            var n = this, o = t(this), e = o.data(i).options;
            a.settings.timer = setTimeout(
                function () {a['in'].call(n), t(window).off('load.' + i);},
                e.timeoutCountdown);
        },
        supportCheck: function (n) {
            var i = t(this), a = n.browser, o = a.length, e = !1;
            0 === o && (e = !0);
            for (var s = 0; o > s; s++) if ('string' == typeof i.css(a[s])) {
                e = !0;
                break;
            }
            return e;
        },
        optionCheck: function (n) {
            var i, o = t(this);
            return i = n.overlay || o.data(a.settings.data.overlay) ? !0 : !1;
        },
        animationCheck: function (n, a, o) {
            var e = t(this), s = e.data(i).options, r = typeof n,
                l = !a && 'number' === r,
                d = a && 'string' === r && n.length > 0;
            return l || d ? n = n : a && o ? n = s.inClass : !a && o
                ? n = s.inDuration
                : a && !o ? n = s.outClass : a || o || (n = s.outDuration), n;
        },
        'in': function () {
            var n = this, o = t(this), e = o.data(i).options,
                s = o.data(a.settings.data.inDuration),
                r = o.data(a.settings.data.inClass),
                l = a.animationCheck.call(n, s, !1, !0),
                d = a.animationCheck.call(n, r, !0, !0),
                u = a.optionCheck.call(n, e), c = o.data(i).outClass;
            e.loading && a.removeLoading.call(n), c && o.removeClass(c), u
                ? a.inOverlay.call(n, d, l)
                : a.inDefault.call(n, d, l);
        },
        inDefault: function (n, i) {
            var o = t(this);
            o.css({ 'animation-duration': i + 'ms' }).
                addClass(n).
                trigger(a.settings.events.inStart).
                animateCallback(function () {
                    o.removeClass(n).
                        css({ opacity: 1 }).
                        trigger(a.settings.events.inEnd);
                });
        },
        inOverlay: function (n, o) {
            var e = t(this), s = e.data(i).options;
            e.css({ opacity: 1 }).trigger(a.settings.events.inStart), t(
                s.overlayParentElement).
                children('.' + s.overlayClass).
                css({ 'animation-duration': o + 'ms' }).
                addClass(n).
                animateCallback(
                    function () {e.trigger(a.settings.events.inEnd);});
        },
        out: function (n, o) {
            var e = this, s = t(this), r = s.data(i).options,
                l = n.data(a.settings.data.outClass),
                d = s.data(a.settings.data.outClass),
                u = n.data(a.settings.data.outDuration),
                c = s.data(a.settings.data.outDuration), m = l ? l : d,
                g = u ? u : c, f = a.animationCheck.call(e, m, !0, !1),
                v = a.animationCheck.call(e, g, !1, !1),
                h = a.optionCheck.call(e, r);
            s.data(i).outClass = f, h
                ? a.outOverlay.call(e, f, v, o)
                : a.outDefault.call(e, f, v, o);
        },
        outDefault: function (n, o, e) {
            var s = t(this), r = s.data(i).options;
            s.css({ 'animation-duration': o + 1 + 'ms' }).
                addClass(n).
                trigger(a.settings.events.outStart).
                animateCallback(function () {
                    s.trigger(a.settings.events.outEnd), r.transition(e);
                });
        },
        outOverlay: function (n, o, e) {
            var s = this, r = t(this), l = r.data(i).options,
                d = r.data(a.settings.data.inClass),
                u = a.animationCheck.call(s, d, !0, !0);
            t(l.overlayParentElement).
                children('.' + l.overlayClass).
                css({ 'animation-duration': o + 1 + 'ms' }).
                removeClass(u).
                addClass(n).
                trigger(a.settings.events.outStart).
                animateCallback(function () {
                    r.trigger(a.settings.events.outEnd), l.transition(e);
                });
        },
        destroy: function () {
            return this.each(function () {
                var n = t(this);
                t(window).off('.' + i), n.css({ opacity: 1 }).removeData(i);
            });
        },
    };
    t.fn.animateCallback = function (n) {
        var i = 'animationend webkitAnimationEnd';
        return this.each(function () {
            var a = t(this);
            a.on(i, function () {return a.off(i), n.call(this);});
        });
    }, t.fn.animsition = function (n) {
        return a[n]
            ? a[n].apply(this, Array.prototype.slice.call(arguments, 1))
            : 'object' != typeof n && n
                ? void t.error('Method ' + n + ' does not exist on jQuery.' + i)
                : a.init.apply(this, arguments);
    };
});

window.SEMICOLON_pageTransitionInit = function ($wrapperEl) {

    let $body = $('body'),
        $wrapper = $('#wrapper');

    if ($body.hasClass('no-transition')) { return true; }
    if (!$body.hasClass('page-transition')) { return true; }

    if (!$().animsition) {
        $body.addClass('no-transition');
        console.log('pageTransition: Animsition not Defined.');
        return true;
    }

    window.onpageshow = function (event) {
        if (event.persisted) {
            window.location.reload();
        }
    };

    let elAnimIn = $body.attr('data-animation-in') || 'fadeIn',
        elAnimOut = $body.attr('data-animation-out') || 'fadeOut',
        elSpeedIn = $body.attr('data-speed-in') || 1500,
        elSpeedOut = $body.attr('data-speed-out') || 800,
        elTimeoutActive = false,
        elTimeout = $body.attr('data-loader-timeout'),
        elLoader = $body.attr('data-loader'),
        elLoaderColor = $body.attr('data-loader-color'),
        elLoaderHtml = $body.attr('data-loader-html'),
        elLoaderAppend = '',
        elLoaderBefore = '<div class="css3-spinner">',
        elLoaderAfter = '</div>',
        elLoaderBg = '',
        elLoaderBorder = '',
        elLoaderBgClass = '',
        elLoaderBorderClass = '',
        elLoaderBgClass2 = '',
        elLoaderBorderClass2 = '';

    if (!elTimeout) {
        elTimeoutActive = false;
        elTimeout = false;
    } else {
        elTimeoutActive = true;
        elTimeout = Number(elTimeout);
    }

    if (elLoaderColor) {
        if (elLoaderColor == 'theme') {
            elLoaderBgClass = ' bg-color';
            elLoaderBorderClass = ' border-color';
            elLoaderBgClass2 = ' class="bg-color"';
            elLoaderBorderClass2 = ' class="border-color"';
        } else {
            elLoaderBg = ' style="background-color:' + elLoaderColor + ';"';
            elLoaderBorder = ' style="border-color:' + elLoaderColor + ';"';
        }
    }

    if (elLoader == '2') {
        elLoaderAppend = '<div class="css3-spinner-flipper' + elLoaderBgClass +
            '"' + elLoaderBg + '></div>';
    } else if (elLoader == '3') {
        elLoaderAppend = '<div class="css3-spinner-double-bounce1' +
            elLoaderBgClass + '"' + elLoaderBg +
            '></div><div class="css3-spinner-double-bounce2' + elLoaderBgClass +
            '"' + elLoaderBg + '></div>';
    } else if (elLoader == '4') {
        elLoaderAppend = '<div class="css3-spinner-rect1' + elLoaderBgClass +
            '"' + elLoaderBg + '></div><div class="css3-spinner-rect2' +
            elLoaderBgClass + '"' + elLoaderBg +
            '></div><div class="css3-spinner-rect3' + elLoaderBgClass + '"' +
            elLoaderBg + '></div><div class="css3-spinner-rect4' +
            elLoaderBgClass + '"' + elLoaderBg +
            '></div><div class="css3-spinner-rect5' + elLoaderBgClass + '"' +
            elLoaderBg + '></div>';
    } else if (elLoader == '5') {
        elLoaderAppend = '<div class="css3-spinner-cube1' + elLoaderBgClass +
            '"' + elLoaderBg + '></div><div class="css3-spinner-cube2' +
            elLoaderBgClass + '"' + elLoaderBg + '></div>';
    } else if (elLoader == '6') {
        elLoaderAppend = '<div class="css3-spinner-scaler' + elLoaderBgClass +
            '"' + elLoaderBg + '></div>';
    } else if (elLoader == '7') {
        elLoaderAppend = '<div class="css3-spinner-grid-pulse"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div><div' + elLoaderBgClass2 + elLoaderBg + '></div><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div><div' + elLoaderBgClass2 + elLoaderBg + '></div><div' +
            elLoaderBgClass2 + elLoaderBg + '></div></div>';
    } else if (elLoader == '8') {
        elLoaderAppend = '<div class="css3-spinner-clip-rotate"><div' +
            elLoaderBorderClass2 + elLoaderBorder + '></div></div>';
    } else if (elLoader == '9') {
        elLoaderAppend = '<div class="css3-spinner-ball-rotate"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div></div>';
    } else if (elLoader == '10') {
        elLoaderAppend = '<div class="css3-spinner-zig-zag"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div></div>';
    } else if (elLoader == '11') {
        elLoaderAppend = '<div class="css3-spinner-triangle-path"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div></div>';
    } else if (elLoader == '12') {
        elLoaderAppend = '<div class="css3-spinner-ball-scale-multiple"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div></div>';
    } else if (elLoader == '13') {
        elLoaderAppend = '<div class="css3-spinner-ball-pulse-sync"><div' +
            elLoaderBgClass2 + elLoaderBg + '></div><div' + elLoaderBgClass2 +
            elLoaderBg + '></div><div' + elLoaderBgClass2 + elLoaderBg +
            '></div></div>';
    } else if (elLoader == '14') {
        elLoaderAppend = '<div class="css3-spinner-scale-ripple"><div' +
            elLoaderBorderClass2 + elLoaderBorder + '></div><div' +
            elLoaderBorderClass2 + elLoaderBorder + '></div><div' +
            elLoaderBorderClass2 + elLoaderBorder + '></div></div>';
    } else {
        elLoaderAppend = '<div class="css3-spinner-bounce1' + elLoaderBgClass +
            '"' + elLoaderBg + '></div><div class="css3-spinner-bounce2' +
            elLoaderBgClass + '"' + elLoaderBg +
            '></div><div class="css3-spinner-bounce3' + elLoaderBgClass + '"' +
            elLoaderBg + '></div>';
    }

    if (!elLoaderHtml) {
        elLoaderHtml = elLoaderAppend;
    }

    elLoaderHtml = elLoaderBefore + elLoaderHtml + elLoaderAfter;

    $wrapper.css({ 'opacity': 1 });

    $wrapper.animsition({
        inClass: elAnimIn,
        outClass: elAnimOut,
        inDuration: Number(elSpeedIn),
        outDuration: Number(elSpeedOut),
        linkElement: 'body:not(.device-md):not(.device-sm):not(.device-xs) .primary-menu:not(.on-click) .menu-link:not([target="_blank"]):not([href*="#"]):not([data-lightbox]):not([href^="mailto"]):not([href^="tel"]):not([href^="sms"]):not([href^="call"])',
        loading: true,
        loadingParentElement: 'body',
        loadingClass: 'page-transition-wrap',
        loadingInner: elLoaderHtml,
        timeout: elTimeoutActive,
        timeoutCountdown: elTimeout,
        onLoadEvent: true,
        browser: ['animation-duration', '-webkit-animation-duration'],
        overlay: false,
        overlayClass: 'animsition-overlay-slide',
        overlayParentElement: 'body',
    });

};

/*! skrollr 0.6.30 (2015-06-19) | Alexander Prinzhorn - https://github.com/Prinzhorn/skrollr | Free to use under terms of MIT license */
!function (a, b, c) {
    'use strict';

    function d (c) {
        if (e = b.documentElement, f = b.body, T(), ha = this, c = c ||
            {}, ma = c.constants ||
            {}, c.easing) for (var d in c.easing) W[d] = c.easing[d];
        ta = c.edgeStrategy || 'set', ka = {
            beforerender: c.beforerender,
            render: c.render,
            keyframe: c.keyframe,
        }, la = c.forceHeight !== !1, la &&
        (Ka = c.scale || 1), na = c.mobileDeceleration ||
            y, pa = c.smoothScrolling !== !1, qa = c.smoothScrollingDuration ||
            A, ra = { targetTop: ha.getScrollTop() }, Sa = (c.mobileCheck ||
            function () {
                return /Android|iPhone|iPad|iPod|BlackBerry/i.test(
                    navigator.userAgent || navigator.vendor || a.opera);
            })(), Sa ? (ja = b.getElementById(c.skrollrBody || z), ja &&
        ga(), X(), Ea(e, [s, v], [t])) : Ea(e, [s, u], [t]), ha.refresh(), wa(a,
            'resize orientationchange', function () {
                var a = e.clientWidth, b = e.clientHeight;
                (b !== Pa || a !== Oa) && (Pa = b, Oa = a, Qa = !0);
            });
        var g = U();
        return function h () {$(), va = g(h);}(), ha;
    }

    var e, f, g = {
            get: function () {return ha;},
            init: function (a) {return ha || new d(a);},
            VERSION: '0.6.29',
        }, h = Object.prototype.hasOwnProperty, i = a.Math, j = a.getComputedStyle,
        k = 'touchstart', l = 'touchmove', m = 'touchcancel', n = 'touchend',
        o = 'skrollable', p = o + '-before', q = o + '-between',
        r = o + '-after', s = 'skrollr', t = 'no-' + s, u = s + '-desktop',
        v = s + '-mobile', w = 'linear', x = 1e3, y = .004, z = 'skrollr-body',
        A = 200, B = 'start', C = 'end', D = 'center', E = 'bottom',
        F = '___skrollable_id', G = /^(?:input|textarea|button|select)$/i,
        H = /^\s+|\s+$/g,
        I = /^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/,
        J = /\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi,
        K = /^(@?[a-z\-]+)\[(\w+)\]$/, L = /-([a-z0-9_])/g,
        M = function (a, b) {return b.toUpperCase();},
        N = /[\-+]?[\d]*\.?[\d]+/g, O = /\{\?\}/g,
        P = /rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g,
        Q = /[a-z\-]+-gradient/g, R = '', S = '', T = function () {
            var a = /^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/;
            if (j) {
                var b = j(f, null);
                for (var c in b) if (R = c.match(a) || +c == c &&
                    b[c].match(a)) break;
                if (!R) return void (R = S = '');
                R = R[0], '-' === R.slice(0, 1)
                    ? (S = R, R = {
                        '-webkit-': 'webkit',
                        '-moz-': 'Moz',
                        '-ms-': 'ms',
                        '-o-': 'O',
                    }[R])
                    : S = '-' + R.toLowerCase() + '-';
            }
        }, U = function () {
            var b = a.requestAnimationFrame ||
                a[R.toLowerCase() + 'RequestAnimationFrame'], c = Ha();
            return (Sa || !b) && (b = function (b) {
                var d = Ha() - c, e = i.max(0, 1e3 / 60 - d);
                return a.setTimeout(function () {c = Ha(), b();}, e);
            }), b;
        }, V = function () {
            var b = a.cancelAnimationFrame ||
                a[R.toLowerCase() + 'CancelAnimationFrame'];
            return (Sa || !b) && (b = function (b) {return a.clearTimeout(b);}), b;
        }, W = {
            begin: function () {return 0;},
            end: function () {return 1;},
            linear: function (a) {return a;},
            quadratic: function (a) {return a * a;},
            cubic: function (a) {return a * a * a;},
            swing: function (a) {return -i.cos(a * i.PI) / 2 + .5;},
            sqrt: function (a) {return i.sqrt(a);},
            outCubic: function (a) {return i.pow(a - 1, 3) + 1;},
            bounce: function (a) {
                var b;
                if (.5083 >= a) b = 3; else if (.8489 >=
                    a) b = 9; else if (.96208 >= a) b = 27; else {
                    if (!(.99981 >= a)) return 1;
                    b = 91;
                }
                return 1 - i.abs(3 * i.cos(a * b * 1.028) / b);
            },
        };
    d.prototype.refresh = function (a) {
        var d, e, f = !1;
        for (a === c ? (f = !0, ia = [], Ra = 0, a = b.getElementsByTagName(
            '*')) : a.length === c && (a = [a]), d = 0, e = a.length; e >
             d; d++) {
            var g = a[d], h = g, i = [], j = pa, k = ta, l = !1;
            if (f && F in g && delete g[F], g.attributes) {
                for (var m = 0, n = g.attributes.length; n > m; m++) {
                    var p = g.attributes[m];
                    if ('data-anchor-target' !==
                        p.name) if ('data-smooth-scrolling' !==
                        p.name) if ('data-edge-strategy' !==
                        p.name) if ('data-emit-events' !== p.name) {
                        var q = p.name.match(I);
                        if (null !== q) {
                            var r = {
                                props: p.value,
                                element: g,
                                eventType: p.name.replace(L, M),
                            };
                            i.push(r);
                            var s = q[1];
                            s && (r.constant = s.substr(1));
                            var t = q[2];
                            /p$/.test(t) ? (r.isPercentage = !0, r.offset = (0 |
                                t.slice(0, -1)) / 100) : r.offset = 0 | t;
                            var u = q[3], v = q[4] || u;
                            u && u !== B && u !== C
                                ? (r.mode = 'relative', r.anchors = [u, v])
                                : (r.mode = 'absolute', u === C
                                ? r.isEnd = !0
                                : r.isPercentage || (r.offset = r.offset * Ka));
                        }
                    } else l = !0; else k = p.value; else j = 'off' !==
                        p.value; else if (h = b.querySelector(p.value), null ===
                    h) throw'Unable to find anchor target "' + p.value + '"';
                }
                if (i.length) {
                    var w, x, y;
                    !f && F in g
                        ? (y = g[F], w = ia[y].styleAttr, x = ia[y].classAttr)
                        : (y = g[F] = Ra++, w = g.style.cssText, x = Da(
                        g)), ia[y] = {
                        element: g,
                        styleAttr: w,
                        classAttr: x,
                        anchorTarget: h,
                        keyFrames: i,
                        smoothScrolling: j,
                        edgeStrategy: k,
                        emitEvents: l,
                        lastFrameIndex: -1,
                    }, Ea(g, [o], []);
                }
            }
        }
        for (Aa(), d = 0, e = a.length; e > d; d++) {
            var z = ia[a[d][F]];
            z !== c && (_(z), ba(z));
        }
        return ha;
    }, d.prototype.relativeToAbsolute = function (
        a, b, c) {
        var d = e.clientHeight, f = a.getBoundingClientRect(), g = f.top,
            h = f.bottom - f.top;
        return b === E ? g -= d : b === D && (g -= d / 2), c === E
            ? g += h
            : c === D && (g += h / 2), g += ha.getScrollTop(), g + .5 | 0;
    }, d.prototype.animateTo = function (a, b) {
        b = b || {};
        var d = Ha(), e = ha.getScrollTop(),
            f = b.duration === c ? x : b.duration;
        return oa = {
            startTop: e,
            topDiff: a - e,
            targetTop: a,
            duration: f,
            startTime: d,
            endTime: d + f,
            easing: W[b.easing || w],
            done: b.done,
        }, oa.topDiff || (oa.done && oa.done.call(ha, !1), oa = c), ha;
    }, d.prototype.stopAnimateTo = function () {
        oa && oa.done && oa.done.call(ha, !0), oa = c;
    }, d.prototype.isAnimatingTo = function () {return !!oa;}, d.prototype.isMobile = function () {return Sa;}, d.prototype.setScrollTop = function (
        b, c) {
        return sa = c === !0, Sa ? Ta = i.min(i.max(b, 0), Ja) : a.scrollTo(0,
            b), ha;
    }, d.prototype.getScrollTop = function () {
        return Sa ? Ta : a.pageYOffset || e.scrollTop || f.scrollTop || 0;
    }, d.prototype.getMaxScrollTop = function () {return Ja;}, d.prototype.on = function (
        a,
        b) {return ka[a] = b, ha;}, d.prototype.off = function (a) {return delete ka[a], ha;}, d.prototype.destroy = function () {
        var a = V();
        a(va), ya(), Ea(e, [t], [s, u, v]);
        for (var b = 0, d = ia.length; d > b; b++) fa(ia[b].element);
        e.style.overflow = f.style.overflow = '', e.style.height = f.style.height = '', ja &&
        g.setStyle(ja, 'transform',
            'none'), ha = c, ja = c, ka = c, la = c, Ja = 0, Ka = 1, ma = c, na = c, La = 'down', Ma = -1, Oa = 0, Pa = 0, Qa = !1, oa = c, pa = c, qa = c, ra = c, sa = c, Ra = 0, ta = c, Sa = !1, Ta = 0, ua = c;
    };
    var X = function () {
        var d, g, h, j, o, p, q, r, s, t, u, v;
        wa(e, [k, l, m, n].join(' '), function (a) {
            var e = a.changedTouches[0];
            for (j = a.target; 3 === j.nodeType;) j = j.parentNode;
            switch (o = e.clientY, p = e.clientX, t = a.timeStamp, G.test(
                j.tagName) || a.preventDefault(), a.type) {
                case k:
                    d &&
                    d.blur(), ha.stopAnimateTo(), d = j, g = q = o, h = p, s = t;
                    break;
                case l:
                    G.test(j.tagName) && b.activeElement !== j &&
                    a.preventDefault(), r = o - q, v = t - u, ha.setScrollTop(
                        Ta - r, !0), q = o, u = t;
                    break;
                default:
                case m:
                case n:
                    var f = g - o, w = h - p, x = w * w + f * f;
                    if (49 > x) {
                        if (!G.test(d.tagName)) {
                            d.focus();
                            var y = b.createEvent('MouseEvents');
                            y.initMouseEvent('click', !0, !0, a.view, 1,
                                e.screenX, e.screenY, e.clientX, e.clientY,
                                a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, 0,
                                null), d.dispatchEvent(y);
                        }
                        return;
                    }
                    d = c;
                    var z = r / v;
                    z = i.max(i.min(z, 3), -3);
                    var A = i.abs(z / na), B = z * A + .5 * na * A * A,
                        C = ha.getScrollTop() - B, D = 0;
                    C > Ja ? (D = (Ja - C) / B, C = Ja) : 0 > C &&
                        (D = -C / B, C = 0), A *= 1 - D, ha.animateTo(
                        C + .5 | 0, { easing: 'outCubic', duration: A });
            }
        }), a.scrollTo(0, 0), e.style.overflow = f.style.overflow = 'hidden';
    }, Y = function () {
        var a, b, c, d, f, g, h, j, k, l, m, n = e.clientHeight, o = Ba();
        for (j = 0, k = ia.length; k >
        j; j++) for (a = ia[j], b = a.element, c = a.anchorTarget, d = a.keyFrames, f = 0, g = d.length; g >
        f; f++) h = d[f], l = h.offset, m = o[h.constant] ||
            0, h.frame = l, h.isPercentage &&
        (l *= n, h.frame = l), 'relative' === h.mode &&
        (fa(b), h.frame = ha.relativeToAbsolute(c, h.anchors[0], h.anchors[1]) -
            l, fa(b, !0)), h.frame += m, la && !h.isEnd && h.frame > Ja &&
        (Ja = h.frame);
        for (Ja = i.max(Ja, Ca()), j = 0, k = ia.length; k > j; j++) {
            for (a = ia[j], d = a.keyFrames, f = 0, g = d.length; g >
            f; f++) h = d[f], m = o[h.constant] || 0, h.isEnd &&
            (h.frame = Ja - h.offset + m);
            a.keyFrames.sort(Ia);
        }
    }, Z = function (a, b) {
        for (var c = 0, d = ia.length; d > c; c++) {
            var e, f, i = ia[c], j = i.element, k = i.smoothScrolling ? a : b,
                l = i.keyFrames, m = l.length, n = l[0], s = l[l.length - 1],
                t = k < n.frame, u = k > s.frame, v = t ? n : s,
                w = i.emitEvents, x = i.lastFrameIndex;
            if (t || u) {
                if (t && -1 === i.edge || u && 1 === i.edge) continue;
                switch (t ? (Ea(j, [p], [r, q]), w && x > -1 &&
                (za(j, n.eventType, La), i.lastFrameIndex = -1)) : (Ea(j, [r],
                    [p, q]), w && m > x &&
                (za(j, s.eventType, La), i.lastFrameIndex = m)), i.edge = t
                    ? -1
                    : 1, i.edgeStrategy) {
                    case'reset':
                        fa(j);
                        continue;
                    case'ease':
                        k = v.frame;
                        break;
                    default:
                    case'set':
                        var y = v.props;
                        for (e in y) h.call(y, e) &&
                        (f = ea(y[e].value), 0 === e.indexOf('@')
                            ? j.setAttribute(e.substr(1), f)
                            : g.setStyle(j, e, f));
                        continue;
                }
            } else 0 !== i.edge && (Ea(j, [o, q], [p, r]), i.edge = 0);
            for (var z = 0; m - 1 > z; z++) if (k >= l[z].frame && k <=
                l[z + 1].frame) {
                var A = l[z], B = l[z + 1];
                for (e in A.props) if (h.call(A.props, e)) {
                    var C = (k - A.frame) / (B.frame - A.frame);
                    C = A.props[e].easing(C), f = da(A.props[e].value,
                        B.props[e].value, C), f = ea(f), 0 === e.indexOf('@')
                        ? j.setAttribute(e.substr(1), f)
                        : g.setStyle(j, e, f);
                }
                w && x !== z &&
                ('down' === La ? za(j, A.eventType, La) : za(j, B.eventType,
                    La), i.lastFrameIndex = z);
                break;
            }
        }
    }, $ = function () {
        Qa && (Qa = !1, Aa());
        var a, b, d = ha.getScrollTop(), e = Ha();
        if (oa) e >= oa.endTime
            ? (d = oa.targetTop, a = oa.done, oa = c)
            : (b = oa.easing(
                (e - oa.startTime) / oa.duration), d = oa.startTop + b *
                oa.topDiff | 0), ha.setScrollTop(d, !0); else if (!sa) {
            var f = ra.targetTop - d;
            f && (ra = {
                startTop: Ma,
                topDiff: d - Ma,
                targetTop: d,
                startTime: Na,
                endTime: Na + qa,
            }), e <= ra.endTime &&
            (b = W.sqrt((e - ra.startTime) / qa), d = ra.startTop + b *
                ra.topDiff | 0);
        }
        if (sa || Ma !== d) {
            La = d > Ma ? 'down' : Ma > d ? 'up' : La, sa = !1;
            var h = { curTop: d, lastTop: Ma, maxTop: Ja, direction: La },
                i = ka.beforerender && ka.beforerender.call(ha, h);
            i !== !1 && (Z(d, ha.getScrollTop()), Sa && ja &&
            g.setStyle(ja, 'transform',
                'translate(0, ' + -Ta + 'px) ' + ua), Ma = d, ka.render &&
            ka.render.call(ha, h)), a && a.call(ha, !1);
        }
        Na = e;
    }, _ = function (a) {
        for (var b = 0, c = a.keyFrames.length; c > b; b++) {
            for (var d, e, f, g, h = a.keyFrames[b], i = {}; null !==
            (g = J.exec(h.props));) f = g[1], e = g[2], d = f.match(K), null !==
            d
                ? (f = d[1], d = d[2])
                : d = w, e = e.indexOf('!') ? aa(e) : [
                e.slice(1)], i[f] = { value: e, easing: W[d] };
            h.props = i;
        }
    }, aa = function (a) {
        var b = [];
        return P.lastIndex = 0, a = a.replace(P, function (a) {
            return a.replace(N, function (a) {return a / 255 * 100 + '%';});
        }), S && (Q.lastIndex = 0, a = a.replace(Q,
            function (a) {return S + a;})), a = a.replace(N,
            function (a) {return b.push(+a), '{?}';}), b.unshift(a), b;
    }, ba = function (a) {
        var b, c, d = {};
        for (b = 0, c = a.keyFrames.length; c > b; b++) ca(a.keyFrames[b], d);
        for (d = {}, b = a.keyFrames.length - 1; b >= 0; b--) ca(a.keyFrames[b],
            d);
    }, ca = function (a, b) {
        var c;
        for (c in b) h.call(a.props, c) || (a.props[c] = b[c]);
        for (c in a.props) b[c] = a.props[c];
    }, da = function (a, b, c) {
        var d, e = a.length;
        if (e !== b.length) throw'Can\'t interpolate between "' + a[0] +
        '" and "' + b[0] + '"';
        var f = [a[0]];
        for (d = 1; e > d; d++) f[d] = a[d] + (b[d] - a[d]) * c;
        return f;
    }, ea = function (a) {
        var b = 1;
        return O.lastIndex = 0, a[0].replace(O, function () {return a[b++];});
    }, fa = function (a, b) {
        a = [].concat(a);
        for (var c, d, e = 0, f = a.length; f >
        e; e++) d = a[e], c = ia[d[F]], c && (b
            ? (d.style.cssText = c.dirtyStyleAttr, Ea(d, c.dirtyClassAttr))
            : (c.dirtyStyleAttr = d.style.cssText, c.dirtyClassAttr = Da(
                d), d.style.cssText = c.styleAttr, Ea(d, c.classAttr)));
    }, ga = function () {
        ua = 'translateZ(0)', g.setStyle(ja, 'transform', ua);
        var a = j(ja), b = a.getPropertyValue('transform'),
            c = a.getPropertyValue(S + 'transform'),
            d = b && 'none' !== b || c && 'none' !== c;
        d || (ua = '');
    };
    g.setStyle = function (a, b, c) {
        var d = a.style;
        if (b = b.replace(L, M).replace('-', ''), 'zIndex' === b) isNaN(c)
            ? d[b] = c
            : d[b] = '' + (0 | c); else if ('float' ===
            b) d.styleFloat = d.cssFloat = c; else try {
            R &&
            (d[R + b.slice(0, 1).toUpperCase() + b.slice(1)] = c), d[b] = c;
        } catch (e) {}
    };
    var ha, ia, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua, va,
        wa = g.addEvent = function (b, c, d) {
            var e = function (b) {
                return b = b || a.event, b.target ||
                (b.target = b.srcElement), b.preventDefault ||
                (b.preventDefault = function () {b.returnValue = !1, b.defaultPrevented = !0;}), d.call(
                    this, b);
            };
            c = c.split(' ');
            for (var f, g = 0, h = c.length; h >
            g; g++) f = c[g], b.addEventListener
                ? b.addEventListener(f, d, !1)
                : b.attachEvent('on' + f, e), Ua.push(
                { element: b, name: f, listener: d });
        }, xa = g.removeEvent = function (a, b, c) {
            b = b.split(' ');
            for (var d = 0, e = b.length; e > d; d++) a.removeEventListener
                ? a.removeEventListener(b[d], c, !1)
                : a.detachEvent('on' + b[d], c);
        }, ya = function () {
            for (var a, b = 0, c = Ua.length; c > b; b++) a = Ua[b], xa(a.element,
                a.name, a.listener);
            Ua = [];
        }, za = function (a, b, c) {ka.keyframe && ka.keyframe.call(ha, a, b, c);},
        Aa = function () {
            var a = ha.getScrollTop();
            Ja = 0, la && !Sa && (f.style.height = ''), Y(), la && !Sa &&
            (f.style.height = Ja + e.clientHeight + 'px'), Sa ? ha.setScrollTop(
                i.min(ha.getScrollTop(), Ja)) : ha.setScrollTop(a, !0), sa = !0;
        }, Ba = function () {
            var a, b, c = e.clientHeight, d = {};
            for (a in ma) b = ma[a], 'function' == typeof b
                ? b = b.call(ha)
                : /p$/.test(b) && (b = b.slice(0, -1) / 100 * c), d[a] = b;
            return d;
        }, Ca = function () {
            var a, b = 0;
            return ja && (b = i.max(ja.offsetHeight, ja.scrollHeight)), a = i.max(b,
                f.scrollHeight, f.offsetHeight, e.scrollHeight, e.offsetHeight,
                e.clientHeight), a - e.clientHeight;
        }, Da = function (b) {
            var c = 'className';
            return a.SVGElement && b instanceof a.SVGElement &&
            (b = b[c], c = 'baseVal'), b[c];
        }, Ea = function (b, d, e) {
            var f = 'className';
            if (a.SVGElement && b instanceof a.SVGElement &&
            (b = b[f], f = 'baseVal'), e === c) return void (b[f] = d);
            for (var g = b[f], h = 0, i = e.length; i > h; h++) g = Ga(g).
                replace(Ga(e[h]), ' ');
            g = Fa(g);
            for (var j = 0, k = d.length; k > j; j++) -1 ===
            Ga(g).indexOf(Ga(d[j])) && (g += ' ' + d[j]);
            b[f] = Fa(g);
        }, Fa = function (a) {return a.replace(H, '');},
        Ga = function (a) {return ' ' + a + ' ';},
        Ha = Date.now || function () {return +new Date;},
        Ia = function (a, b) {return a.frame - b.frame;}, Ja = 0, Ka = 1,
        La = 'down', Ma = -1, Na = Ha(), Oa = 0, Pa = 0, Qa = !1, Ra = 0,
        Sa = !1, Ta = 0, Ua = [];
    'function' == typeof define && define.amd ? define([],
        function () {return g;}) : 'undefined' != typeof module &&
    module.exports
        ? module.exports = g
        : a.skrollr = g;
}(window, document);

window.SEMICOLON_parallaxInit = function ($parallaxEl) {

    $parallaxEl = $parallaxEl.filter(':not(.customjs)');

    if ($parallaxEl.length < 1) {
        return true;
    }

    if (!SEMICOLON.isMobile.any()) {
        window.skrollrInstance = skrollr.init({ forceHeight: false });
    } else {
        $parallaxEl.addClass('mobile-parallax');
    }

};

/**!
 * easy-pie-chart
 * Lightweight plugin to render simple, animated and retina optimized pie charts
 *
 * @license
 * @author Robert Fleischmann <[email protected]> (http://robert-fleischmann.de)
 * @version 2.1.7
 **/
!function (a, b) {
    'function' == typeof define && define.amd ? define(['jquery'],
        function (a) {return b(a);}) : 'object' == typeof exports
        ? module.exports = b(require('jquery'))
        : b(jQuery);
}(this, function (a) {
    var b = function (a, b) {
        var c, d = document.createElement('canvas');
        a.appendChild(d), 'object' == typeof G_vmlCanvasManager &&
        G_vmlCanvasManager.initElement(d);
        var e = d.getContext('2d');
        d.width = d.height = b.size;
        var f = 1;
        window.devicePixelRatio > 1 &&
        (f = window.devicePixelRatio, d.style.width = d.style.height = [
            b.size,
            'px'].join(''), d.width = d.height = b.size * f, e.scale(f,
            f)), e.translate(b.size / 2, b.size / 2), e.rotate(
            (-0.5 + b.rotate / 180) * Math.PI);
        var g = (b.size - b.lineWidth) / 2;
        b.scaleColor && b.scaleLength &&
        (g -= b.scaleLength + 2), Date.now = Date.now ||
            function () {return +new Date;};
        var h = function (a, b, c) {
            c = Math.min(Math.max(-1, c || 0), 1);
            var d = 0 >= c ? !0 : !1;
            e.beginPath(), e.arc(0, 0, g, 0, 2 * Math.PI * c,
                d), e.strokeStyle = a, e.lineWidth = b, e.stroke();
        }, i = function () {
            var a, c;
            e.lineWidth = 1, e.fillStyle = b.scaleColor, e.save();
            for (var d = 24; d > 0; --d) d % 6 === 0
                ? (c = b.scaleLength, a = 0)
                : (c = .6 * b.scaleLength, a = b.scaleLength - c), e.fillRect(
                -b.size / 2 + a, 0, c, 1), e.rotate(Math.PI / 12);
            e.restore();
        }, j = function () {
            return window.requestAnimationFrame ||
                window.webkitRequestAnimationFrame ||
                window.mozRequestAnimationFrame ||
                function (a) {window.setTimeout(a, 1e3 / 60);};
        }(), k = function () {
            b.scaleColor && i(), b.trackColor &&
            h(b.trackColor, b.trackWidth || b.lineWidth, 1);
        };
        this.getCanvas = function () {return d;}, this.getCtx = function () {return e;}, this.clear = function () {
            e.clearRect(b.size / -2, b.size / -2, b.size, b.size);
        }, this.draw = function (a) {
            b.scaleColor || b.trackColor
                ? e.getImageData && e.putImageData
                ? c
                    ? e.putImageData(c, 0, 0)
                    : (k(), c = e.getImageData(0, 0, b.size * f, b.size * f))
                : (this.clear(), k())
                : this.clear(), e.lineCap = b.lineCap;
            var d;
            d = 'function' == typeof b.barColor ? b.barColor(a) : b.barColor, h(
                d, b.lineWidth, a / 100);
        }.bind(this), this.animate = function (a, c) {
            var d = Date.now();
            b.onStart(a, c);
            var e = function () {
                var f = Math.min(Date.now() - d, b.animate.duration),
                    g = b.easing(this, f, a, c - a, b.animate.duration);
                this.draw(g), b.onStep(a, c, g), f >= b.animate.duration
                    ? b.onStop(a, c)
                    : j(e);
            }.bind(this);
            j(e);
        }.bind(this);
    }, c = function (a, c) {
        var d = {
            barColor: '#ef1e25',
            trackColor: '#f9f9f9',
            scaleColor: '#dfe0e0',
            scaleLength: 5,
            lineCap: 'round',
            lineWidth: 3,
            trackWidth: void 0,
            size: 110,
            rotate: 0,
            animate: { duration: 1e3, enabled: !0 },
            easing: function (a, b, c, d, e) {
                return b /= e / 2, 1 > b ? d / 2 * b * b + c : -d / 2 *
                    (--b * (b - 2) - 1) + c;
            },
            onStart: function (a, b) {},
            onStep: function (a, b, c) {},
            onStop: function (a, b) {},
        };
        if ('undefined' != typeof b) d.renderer = b; else {
            if ('undefined' == typeof SVGRenderer) throw new Error(
                'Please load either the SVG- or the CanvasRenderer');
            d.renderer = SVGRenderer;
        }
        var e = {}, f = 0, g = function () {
            this.el = a, this.options = e;
            for (var b in d) d.hasOwnProperty(b) &&
            (e[b] = c && 'undefined' != typeof c[b] ? c[b] : d[b], 'function' ==
            typeof e[b] && (e[b] = e[b].bind(this)));
            'string' == typeof e.easing && 'undefined' != typeof jQuery &&
            jQuery.isFunction(jQuery.easing[e.easing])
                ? e.easing = jQuery.easing[e.easing]
                : e.easing = d.easing, 'number' == typeof e.animate &&
            (e.animate = { duration: e.animate, enabled: !0 }), 'boolean' !=
            typeof e.animate || e.animate || (e.animate = {
                duration: 1e3,
                enabled: e.animate,
            }), this.renderer = new e.renderer(a, e), this.renderer.draw(
                f), a.dataset && a.dataset.percent ? this.update(
                parseFloat(a.dataset.percent)) : a.getAttribute &&
                a.getAttribute('data-percent') &&
                this.update(parseFloat(a.getAttribute('data-percent')));
        }.bind(this);
        this.update = function (a) {
            return a = parseFloat(a), e.animate.enabled
                ? this.renderer.animate(f, a)
                : this.renderer.draw(a), f = a, this;
        }.bind(
            this), this.disableAnimation = function () {return e.animate.enabled = !1, this;}, this.enableAnimation = function () {return e.animate.enabled = !0, this;}, g();
    };
    a.fn.easyPieChart = function (b) {
        return this.each(function () {
            var d;
            a.data(this, 'easyPieChart') ||
            (d = a.extend({}, b, a(this).data()), a.data(this, 'easyPieChart',
                new c(this, d)));
        });
    };
});

window.SEMICOLON_roundedSkillInit = function ($roundedSkillEl) {

    $roundedSkillEl = $roundedSkillEl.filter(':not(.customjs)');

    if ($roundedSkillEl.length < 1) {
        return true;
    }

    $roundedSkillEl.each(function () {
        let element = $(this),
            elSize = element.attr('data-size') || 140,
            elSpeed = element.attr('data-speed') || 2000,
            elWidth = element.attr('data-width') || 4,
            elColor = element.attr('data-color') || '#0093BF',
            elTrackColor = element.attr('data-trackcolor') ||
                'rgba(0,0,0,0.04)';

        let properties = {
            size: Number(elSize),
            speed: Number(elSpeed),
            width: Number(elWidth),
            color: elColor,
            trackcolor: elTrackColor,
        };

        element.css({
            'width': elSize + 'px',
            'height': elSize + 'px',
            'line-height': elSize + 'px',
        });

        if ($('body').hasClass('device-xl') ||
            $('body').hasClass('device-lg')) {
            element.animate({ opacity: 0 }, 10);
            let observer = new IntersectionObserver(
                function (entries, observer) {
                    entries.forEach(function (entry) {
                        if (entry.isIntersecting) {
                            if (!element.hasClass('skills-animated')) {
                                var t = setTimeout(function () {
                                    element.css({ opacity: 1 });
                                }, 100);
                                SEMICOLON_runRoundedSkills(element, properties);
                                element.addClass('skills-animated');
                            }
                            observer.unobserve(entry.target);
                        }
                    });
                }, { rootMargin: '-50px' });
            observer.observe(element[0]);
        } else {
            SEMICOLON_runRoundedSkills(element, properties);
        }
    });

};

window.SEMICOLON_runRoundedSkills = function (element, properties) {
    element.easyPieChart({
        size: properties.size,
        animate: properties.speed,
        scaleColor: false,
        trackColor: properties.trackcolor,
        lineWidth: properties.width,
        lineCap: 'square',
        barColor: properties.color,
    });
};

window.scwPricingSwitcherPlugin = window.scwPricingSwitcherPlugin || {};

window.SEMICOLON_pricingSwitcherFn = function (
    checkbox, parent, pricing, defClass, actClass) {
    parent.find('.pts-left,.pts-right').
        removeClass(actClass).
        addClass(defClass);
    pricing.find('.pts-switch-content-left,.pts-switch-content-right').
        addClass('d-none');

    if (checkbox.filter(':checked').length > 0) {
        parent.find('.pts-right').removeClass(defClass).addClass(actClass);
        pricing.find('.pts-switch-content-right').removeClass('d-none');
    } else {
        parent.find('.pts-left').removeClass(defClass).addClass(actClass);
        pricing.find('.pts-switch-content-left').removeClass('d-none');
    }
};

window.SEMICOLON_pricingSwitcherInit = function ($pricingSwitcherEl) {

    $pricingSwitcherEl = $pricingSwitcherEl.filter(':not(.customjs)');

    if ($pricingSwitcherEl.length < 1) {
        return true;
    }

    $pricingSwitcherEl.each(function () {
        var element = $(this),
            elCheck = element.find(':checkbox'),
            elParent = $(this).parents('.pricing-tenure-switcher'),
            elDefClass = $(this).attr('data-default-class') ||
                'text-muted op-05',
            elActClass = $(this).attr('data-active-class') || 'fw-bold',
            elPricing = $(elParent.attr('data-container'));

        SEMICOLON_pricingSwitcherFn(elCheck, elParent, elPricing, elDefClass,
            elActClass);

        elCheck.on('change', function () {
            SEMICOLON_pricingSwitcherFn(elCheck, elParent, elPricing,
                elDefClass, elActClass);
        });
    });

};

window.scwProgressPlugin = window.scwProgressPlugin || {};

window.SEMICOLON_progressInit = function ($progressEl) {

    $progressEl = $progressEl.filter(':not(.customjs)');

    if ($progressEl.length < 1) {
        return true;
    }

    $progressEl.each(function () {
        let element = $(this),
            elBar = element.parent('li'),
            elValue = elBar.attr('data-percent');

        if (element.parent('.kv-upload-progress').length > 0 ||
            element.children('.progress-bar').length > 0) {
            return true;
        }

        let observer = new IntersectionObserver(function (entries, observer) {
            entries.forEach(function (entry) {
                if (entry.isIntersecting) {
                    if (!elBar.hasClass('skills-animated')) {
                        SEMICOLON.widget.counter({
                            el: element.find('.counter-instant'),
                        });
                        elBar.find('.progress').
                            css({ width: elValue + '%' }).
                            addClass('skills-animated');
                    }
                    observer.unobserve(entry.target);
                }
            });
        }, { rootMargin: '-50px' });
        observer.observe(elBar[0]);
    });

};

window.scwQuantityPlugin = window.scwQuantityPlugin || {};

window.SEMICOLON_quantityInit = function ($quantityEl) {

    $quantityEl = $quantityEl.filter(':not(.customjs)');

    if ($quantityEl.length < 1) {
        return true;
    }

    $('.plus').off('click').on('click', function () {
        let element = $(this).parents('.quantity').find('.qty'),
            elValue = element.val(),
            elStep = element.attr('step') || 1,
            elMax = element.attr('max'),
            intRegex = /^\d+$/;

        if (elMax && (Number(elValue) >= Number(elMax))) { return false; }

        if (intRegex.test(elValue)) {
            let elValuePlus = Number(elValue) + Number(elStep);
            element.val(elValuePlus).change();
        } else {
            element.val(Number(elStep)).change();
        }

        return false;
    });

    $('.minus').off('click').on('click', function () {
        let element = $(this).parents('.quantity').find('.qty'),
            elValue = element.val(),
            elStep = element.attr('step') || 1,
            elMin = element.attr('min'),
            intRegex = /^\d+$/;

        if (!elMin || elMin < 0) { elMin = 1; }

        if (intRegex.test(elValue)) {
            if (Number(elValue) > Number(elMin)) {
                let elValueMinus = Number(elValue) - Number(elStep);
                element.val(elValueMinus).change();
            }
        } else {
            element.val(Number(elStep)).change();
        }

        return false;
    });

};

window.scwReadMorePlugin = window.scwReadMorePlugin || {};

window.SEMICOLON_readmoreInit = function ($readmoreEl) {

    $readmoreEl = $readmoreEl.filter(':not(.customjs)');

    if ($readmoreEl.length < 1) {
        return true;
    }

    $readmoreEl.each(function () {
        let element = $(this),
            elHeight = element.outerHeight(),
            elSize = element.attr('data-readmore-size') || '10rem',
            elSpeed = element.attr('data-readmore-speed') || 500,
            elTrigger = element.attr('data-readmore-trigger') ||
                '.read-more-trigger',
            elTriggerO = element.attr('data-readmore-trigger-open') ||
                'Read More',
            elTriggerC = element.attr('data-readmore-trigger-close') ||
                'Read Less';

        elTrigger = element.find(elTrigger);
        elTrigger.html(elTriggerO);
        elSpeed = Number(elSpeed);

        element.addClass('read-more-wrap').
            css({
                'height': elSize,
                '-webkit-transition-duration': elSpeed + 'ms',
                'transition-duration': elSpeed + 'ms',
            }).
            append('<div class="read-more-mask"></div>');

        let elMask = element.find('.read-more-mask'),
            elMaskD = element.attr('data-readmore-mask') || 'true',
            elMaskColor = element.attr('data-readmore-maskcolor') || '#FFF',
            elMaskSize = element.attr('data-readmore-masksize') || '100%';

        if (elMaskD == 'true') {
            elMask.css({
                'height': elMaskSize,
                'background-image': 'linear-gradient( ' +
                    SEMICOLON_HEXtoRGBA(elMaskColor, 0) + ', ' +
                    SEMICOLON_HEXtoRGBA(elMaskColor, 1) + ' )',
            });
        } else {
            elMask.addClass('d-none');
        }

        elTrigger.off('click').on('click', function () {
            if (element.hasClass('read-more-wrap-open')) {
                element.css({ 'height': elSize }).
                    removeClass('read-more-wrap-open');
                setTimeout(function () {
                    elTrigger.html(elTriggerO);
                }, elSpeed);
                if (elMaskD == 'true') {
                    elMask.fadeIn(elSpeed);
                }
            } else {
                if (elTriggerC == 'false') {
                    elTrigger.remove();
                }
                let elHeightN = elHeight + elTrigger.outerHeight();
                element.css({ 'height': elHeightN, 'overflow': '' }).
                    addClass('read-more-wrap-open');
                setTimeout(function () {
                    elTrigger.html(elTriggerC);
                }, elSpeed);
                if (elMaskD == 'true') {
                    elMask.fadeOut(elSpeed);
                }
            }

            return false;
        });

    });

};

window.SEMICOLON_HEXtoRGBA = function (hex, op) {
    let c;
    if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
        c = hex.substring(1).split('');
        if (c.length == 3) {
            c = [c[0], c[0], c[1], c[1], c[2], c[2]];
        }
        c = '0x' + c.join('');
        return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') +
            ',' + op + ')';
    }
    console.log('Bad Hex');
};

window.scwShapeDividerPlugin = window.scwShapeDividerPlugin || {};

window.SEMICOLON_shapeDividerInit = function ($shapeDividerEl) {

    $shapeDividerEl = $shapeDividerEl.filter(':not(.customjs)');

    if ($shapeDividerEl.length < 1) {
        return true;
    }

    $shapeDividerEl.each(function () {
        let element = $(this),
            elShape = element.attr('data-shape') || 'valley',
            elWidth = element.attr('data-width') || 100,
            elHeight = element.attr('data-height') || 100,
            elFill = element.attr('data-fill'),
            elOut = element.attr('data-outside') || 'false',
            elPos = element.attr('data-position') || 'top',
            elId = 'shape-divider-' + Math.floor(Math.random() * 10000),
            shape = '',
            width, height, fill,
            outside = '';

        if (elWidth < 100) {
            elWidth = 100;
        }

        width = 'width: calc( ' + Number(elWidth) + '% + 1.5px );';
        height = 'height: ' + Number(elHeight) + 'px;';
        fill = 'fill: ' + elFill + ';';

        if (elOut == 'true') {
            if (elPos == 'bottom') {
                outside = '#' + elId + '.shape-divider { bottom: -' +
                    (Number(elHeight) - 1) + 'px; } ';
            } else {
                outside = '#' + elId + '.shape-divider { top: -' +
                    (Number(elHeight) - 1) + 'px; } ';
            }
        }

        let css = outside + '#' + elId + '.shape-divider svg { ' + width +
            height + ' } #' + elId + '.shape-divider .shape-divider-fill { ' +
            fill + ' }',
            head = document.head || document.getElementsByTagName('head')[0],
            style = document.createElement('style');

        head.appendChild(style);

        style.type = 'text/css';
        style.appendChild(document.createTextNode(css));

        element.attr('id', elId);

        switch (elShape) {

            case 'valley':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 355" preserveAspectRatio="none"><defs><style>.b{opacity:.5}.c{opacity:.3}</style></defs><path fill="none" d="M999.45 0H0v165.72l379.95 132.46L999.45 0z"></path><path class="b shape-divider-fill" d="M379.95 298.18l28.47 9.92L1000 118.75V0h-.55l-619.5 298.18zM492.04 337.25L1000 252.63V118.75L408.42 308.1l83.62 29.15z"></path><path class="b shape-divider-fill" d="M492.04 337.25L1000 252.63V118.75L408.42 308.1l83.62 29.15z"></path><path class="shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="b shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="b shape-divider-fill" d="M530.01 350.49l20.22 4.51H1000V252.63l-507.96 84.62 37.97 13.24z"></path><path class="shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="b shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="c shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="b shape-divider-fill" d="M542.94 355h7.29l-20.22-4.51 12.93 4.51z"></path><path class="c shape-divider-fill" d="M379.95 298.18L0 165.72v66.59l353.18 78.75 26.77-12.88z"></path><path class="c shape-divider-fill" d="M353.18 311.06L0 232.31v71.86l288.42 38.06 64.76-31.17z"></path><path class="c shape-divider-fill" d="M353.18 311.06L0 232.31v71.86l288.42 38.06 64.76-31.17z"></path><path class="b shape-divider-fill" d="M380.28 317.11l28.14-9.01-28.47-9.92-26.77 12.88 27.1 6.05z"></path><path class="c shape-divider-fill" d="M380.28 317.11l28.14-9.01-28.47-9.92-26.77 12.88 27.1 6.05z"></path><path class="b shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="b shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="c shape-divider-fill" d="M479.79 339.29l12.25-2.04-83.62-29.15-28.14 9.01 99.51 22.18z"></path><path class="shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="b shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="b shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2z"></path><path class="c shape-divider-fill" d="M530.01 350.49l-37.97-13.24-12.25 2.04 50.22 11.2zM288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="b shape-divider-fill" d="M288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="c shape-divider-fill" d="M288.42 342.23l9.46 1.25 82.4-26.37-27.1-6.05-64.76 31.17z"></path><path class="b shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="c shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="b shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="c shape-divider-fill" d="M380.28 317.11l-82.4 26.37 87.3 11.52h.34l94.27-15.71-99.51-22.18z"></path><path class="shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="b shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="c shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="b shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="c shape-divider-fill" d="M479.79 339.29L385.52 355h157.42l-12.93-4.51-50.22-11.2z"></path><path class="shape-divider-fill" d="M288.42 342.23L0 304.17V355h385.18l-87.3-11.52-9.46-1.25z"></path></svg>';
                break;

            case 'valley-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M194,99c186.7,0.7,305-78.3,306-97.2c1,18.9,119.3,97.9,306,97.2c114.3-0.3,194,0.3,194,0.3s0-91.7,0-100c0,0,0,0,0-0 L0,0v99.3C0,99.3,79.7,98.7,194,99z"></path></svg>';
                break;

            case 'valley-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 0L640 70 0 0v140l640-70 640 70V0z" opacity="0.5"></path><path class="shape-divider-fill" d="M1280 0H0l640 70 640-70z"></path></svg>';
                break;

            case 'mountain':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M500,98.9L0,6.1V0h1000v6.1L500,98.9z"></path></svg>';
                break;

            case 'mountain-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M640 140L1280 0H0z" opacity="0.5"/><path class="shape-divider-fill" d="M640 98l640-98H0z"/></svg>';
                break;

            case 'mountain-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 491.58" preserveAspectRatio="none"><g style="isolation:isolate"><path class="shape-divider-fill" d="M1000 479.4v-87.96L500 0 0 391.46v87.96l500-335.94 500 335.92z" opacity="0.12" mix-blend-mode="overlay"/><path class="shape-divider-fill" d="M1000 487.31v-7.91L500 143.48 0 479.42v7.91l500-297.96 500 297.94z" opacity="0.25" mix-blend-mode="overlay"/><path class="shape-divider-fill" d="M1000 487.31L500 189.37 0 487.33v4.25h1000v-4.27z"/></g></svg>';
                break;

            case 'mountain-4':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M738,99l262-93V0H0v5.6L738,99z"></path></svg>';
                break;

            case 'mountain-5':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M978.81 122.25L0 0h1280l-262.1 116.26a73.29 73.29 0 0 1-39.09 5.99z" opacity="0.5"></path><path class="shape-divider-fill" d="M983.19 95.23L0 0h1280l-266 91.52a72.58 72.58 0 0 1-30.81 3.71z"></path></svg>';
                break;

            case 'mountains':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" opacity="0.33" d="M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z"></path><path class="shape-divider-fill" opacity="0.66" d="M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z"></path><path class="shape-divider-fill" d="M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z"></path></svg>';
                break;

            case 'mountains-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 247" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 200.92v.26l.75-.77-.75.51z"></path><path class="shape-divider-fill" d="M279.29 208.39c0-4.49 74.71-29.88 74.71-29.88l61.71 61.26L550 153.1l134.14 88.17L874.28 50 1000 178.51v-.33L874.28 0 684.14 191.27 550 103.1l-134.29 86.67L354 128.51s-74.71 25.39-74.71 29.88S144.23 52.08 144.23 52.08L.75 200.41l143.48-98.33s135.06 110.8 135.06 106.31z" opacity="0.25" isolation="isolate"></path><path class="shape-divider-fill" d="M1000 178.51L874.28 50 684.14 241.27 550 153.1l-134.29 86.67L354 178.51s-74.71 25.39-74.71 29.88-135.06-106.31-135.06-106.31L.75 200.41l-.75.77V247h1000z"></path><path class="shape-divider-fill" d="M1000 178.51L874.28 50 684.14 241.27 550 153.1l-134.29 86.67L354 178.51s-74.71 25.39-74.71 29.88-135.06-106.31-135.06-106.31L.75 200.41l-.75.77V247h1000z" opacity="0.25" isolation="isolate"></path></svg>';
                break;

            case 'mountains-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M761.9,44.1L643.1,27.2L333.8,98L0,3.8V0l1000,0v3.9"></path></svg>';
                break;

            case 'mountains-4':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 90.72l140-28.28 315.52 24.14L796.48 65.8 1140 104.89l140-14.17V0H0v90.72z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0v47.44L170 0l626.48 94.89L1110 87.11l170-39.67V0H0z"></path></svg>';
                break;

            case 'plataeu':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 0l-131.81 111.68c-16.47 14-35.47 21-54.71 20.17L173 94a76.85 76.85 0 0 1-36.79-11.46L0 0z"></path></svg>';
                break;

            case 'plataeu-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1093.48 131.85L173 94a76.85 76.85 0 0 1-36.79-11.46L0 0h1280l-131.81 111.68c-16.47 13.96-35.47 20.96-54.71 20.17z" opacity="0.5"></path><path class="shape-divider-fill" d="M1094.44 119L172.7 68.72a74.54 74.54 0 0 1-25.19-5.95L0 0h1280l-133.85 102c-15.84 12.09-33.7 17.95-51.71 17z"></path></svg>';
                break;

            case 'hills':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156.258 127.903l86.363-18.654 78.684 13.079L411.441 99.4l94.454 10.303L582.82 93.8l82.664 18.728 76.961-11.39L816.109 71.4l97.602 9.849L997.383 50.4l66.285 14.694 70.793-24.494h79.863L1280 0H0v122.138l60.613 9.965z"/></svg>';
                break;

            case 'hills-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1214.323 66.051h-79.863l-70.793 18.224-66.285-10.933-83.672 22.953-97.601-7.328-73.664 22.125-76.961 8.475-82.664-13.934-76.926 11.832-94.453-7.666-90.137 17.059-78.684-9.731-86.363 13.879-95.644 3.125L0 126.717V0h1280l-.001 35.844z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0h1280v.006l-70.676 36.578-74.863 4.641-70.793 23.334-66.285-11.678-83.672 29.618-97.602-7.07-63.664 21.421-76.961 12.649-91.664-20.798-77.926 17.66-94.453-7.574-90.137 21.595-78.683-9.884-86.363 16.074-95.645 6.211L0 127.905z"></path></svg>';
                break;

            case 'hills-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156 35.51l95.46 34.84 120.04.24 71.5 33.35 90.09-3.91L640 137.65l102.39-37.17 85.55 10.65 88.11-7.19L992 65.28l73.21 5.31 66.79-22.1 77-.42L1280 0H0l64.8 38.69 91.2-3.18z"/></svg>';
                break;

            case 'hills-4':
                shape = '<svg viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M156 35.41l95.46 34.73 120.04.25 71.5 33.24 90.09-3.89L640 137.25l102.39-37.06 85.55 10.61 88.11-7.17L992 65.08l73.21 5.31L1132 48.35l77-.42L1280 0H0l64.8 38.57 91.2-3.16z" opacity="0.5"/><path class="shape-divider-fill" d="M156 28.32l95.46 27.79 120.04.2L443 82.9l90.09-3.11L640 109.8l102.39-29.65 85.55 8.49 88.11-5.74L992 52.07l73.21 4.24L1132 38.68l77-.34L1280 0H0l64.8 30.86 91.2-2.54z"/></svg>';
                break;

            case 'cloud':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="xMidYMax slice"><path class="shape-divider-fill" d="M0 0v6.7c1.9-.8 4.7-1.4 8.5-1 9.5 1.1 11.1 6 11.1 6s2.1-.7 4.3-.2c2.1.5 2.8 2.6 2.8 2.6s.2-.5 1.4-.7c1.2-.2 1.7.2 1.7.2s0-2.1 1.9-2.8c1.9-.7 3.6.7 3.6.7s.7-2.9 3.1-4.1 4.7 0 4.7 0 1.2-.5 2.4 0 1.7 1.4 1.7 1.4h1.4c.7 0 1.2.7 1.2.7s.8-1.8 4-2.2c3.5-.4 5.3 2.4 6.2 4.4.4-.4 1-.7 1.8-.9 2.8-.7 4 .7 4 .7s1.7-5 11.1-6c9.5-1.1 12.3 3.9 12.3 3.9s1.2-4.8 5.7-5.7c4.5-.9 6.8 1.8 6.8 1.8s.6-.6 1.5-.9c.9-.2 1.9-.2 1.9-.2s5.2-6.4 12.6-3.3c7.3 3.1 4.7 9 4.7 9s1.9-.9 4 0 2.8 2.4 2.8 2.4 1.9-1.2 4.5-1.2 4.3 1.2 4.3 1.2.2-1 1.4-1.7 2.1-.7 2.1-.7-.5-3.1 2.1-5.5 5.7-1.4 5.7-1.4 1.5-2.3 4.2-1.1c2.7 1.2 1.7 5.2 1.7 5.2s.3-.1 1.3.5c.5.4.8.8.9 1.1.5-1.4 2.4-5.8 8.4-4 7.1 2.1 3.5 8.9 3.5 8.9s.8-.4 2 0 1.1 1.1 1.1 1.1 1.1-1.1 2.3-1.1 2.1.5 2.1.5 1.9-3.6 6.2-1.2 1.9 6.4 1.9 6.4 2.6-2.4 7.4 0c3.4 1.7 3.9 4.9 3.9 4.9s3.3-6.9 10.4-7.9 11.5 2.6 11.5 2.6.8 0 1.2.2c.4.2.9.9.9.9s4.4-3.1 8.3.2c1.9 1.7 1.5 5 1.5 5s.3-1.1 1.6-1.4c1.3-.3 2.3.2 2.3.2s-.1-1.2.5-1.9 1.9-.9 1.9-.9-4.7-9.3 4.4-13.4c5.6-2.5 9.2.9 9.2.9s5-6.2 15.9-6.2 16.1 8.1 16.1 8.1.7-.2 1.6-.4V0H0z"></path></svg>';
                break;

            case 'cloud-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 86" preserveAspectRatio="xMidYMid slice"><path class="shape-divider-fill" d="M1280 0H0v65.2c6.8 0 13.5.9 20.1 2.6 14-21.8 43.1-28 64.8-14 5.6 3.6 10.3 8.3 14 13.9 7.3-1.2 14.8-.6 21.8 1.6 2.1-37.3 34.1-65.8 71.4-63.7 24.3 1.4 46 15.7 56.8 37.6 19-17.6 48.6-16.5 66.3 2.4C323 54 327.4 65 327.7 76.5c.4.2.8.4 1.2.7 3.3 1.9 6.3 4.2 8.9 6.9 15.9-23.8 46.1-33.4 72.8-23.3 11.6-31.9 46.9-48.3 78.8-36.6 9.1 3.3 17.2 8.7 23.8 15.7 6.7-6.6 16.7-8.4 25.4-4.8 29.3-37.4 83.3-44 120.7-14.8 14 11 24.3 26.1 29.4 43.1 4.7.6 9.3 1.8 13.6 3.8 7.8-24.7 34.2-38.3 58.9-30.5 14.4 4.6 25.6 15.7 30.3 30 14.2 1.2 27.7 6.9 38.5 16.2 11.1-35.7 49-55.7 84.7-44.7 14.1 4.4 26.4 13.3 35 25.3 12-5.7 26.1-5.5 37.9.6 3.9-11.6 15.5-18.9 27.7-17.5.2-.3.3-.6.5-.9 23.3-41.4 75.8-56 117.2-32.6 14.1 7.9 25.6 19.7 33.3 33.8 28.8-23.8 71.5-19.8 95.3 9 2.6 3.1 4.9 6.5 6.9 10 3.8-.5 7.6-.8 11.4-.8L1280 0z"/></svg>';
                break;

            case 'cloud-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 86" preserveAspectRatio="xMidYMid slice"><path class="shape-divider-fill" d="M833.9 27.5c-5.8 3.2-11 7.3-15.5 12.2-7.1-6.9-17.5-8.8-26.6-5-30.6-39.2-87.3-46.1-126.5-15.5-1.4 1.1-2.8 2.2-4.1 3.4C674.4 33.4 684 48 688.8 64.3c4.7.6 9.3 1.8 13.6 3.8 7.8-24.7 34.2-38.3 58.9-30.5 14.4 4.6 25.6 15.7 30.3 30 14.2 1.2 27.7 6.9 38.5 16.2C840.6 49.6 876 29.5 910.8 38c-20.4-20.3-51.8-24.6-76.9-10.5zM384 43.9c-9 5-16.7 11.9-22.7 20.3 15.4-7.8 33.3-8.7 49.4-2.6 3.7-10.1 9.9-19.1 18.1-26-15.4-2.3-31.2.6-44.8 8.3zm560.2 13.6c2 2.2 3.9 4.5 5.7 6.9 5.6-2.6 11.6-4 17.8-4.1-7.6-2.4-15.6-3.3-23.5-2.8zM178.7 7c29-4.2 57.3 10.8 70.3 37 8.9-8.3 20.7-12.8 32.9-12.5C256.4 1.8 214.7-8.1 178.7 7zm146.5 56.3c1.5 4.5 2.4 9.2 2.5 14 .4.2.8.4 1.2.7 3.3 1.9 6.3 4.2 8.9 6.9 5.8-8.7 13.7-15.7 22.9-20.5-11.1-5.2-23.9-5.6-35.5-1.1zM33.5 54.9c21.6-14.4 50.7-8.5 65 13 .1.2.2.3.3.5 7.3-1.2 14.8-.6 21.8 1.6.6-10.3 3.5-20.4 8.6-29.4.3-.6.7-1.2 1.1-1.8-32.1-17.2-71.9-10.6-96.8 16.1zm1228.9 2.7c2.3 2.9 4.4 5.9 6.2 9.1 3.8-.5 7.6-.8 11.4-.8V48.3c-6.4 1.8-12.4 5-17.6 9.3zM1127.3 11c1.9.9 3.7 1.8 5.6 2.8 14.2 7.9 25.8 19.7 33.5 34 13.9-11.4 31.7-16.9 49.6-15.3-20.5-27.7-57.8-36.8-88.7-21.5z" opacity="0.5"/><path class="shape-divider-fill" d="M0 0v66c6.8 0 13.5.9 20.1 2.6 3.5-5.4 8.1-10.1 13.4-13.6 24.9-26.8 64.7-33.4 96.8-16 10.5-17.4 28.2-29.1 48.3-32 36.1-15.1 77.7-5.2 103.2 24.5 19.7.4 37.1 13.1 43.4 31.8 11.5-4.5 24.4-4.2 35.6 1.1l.4-.2c15.4-21.4 41.5-32.4 67.6-28.6 25-21 62.1-18.8 84.4 5.1 6.7-6.6 16.7-8.4 25.4-4.8 29.2-37.4 83.3-44.1 120.7-14.8l1.8 1.5c37.3-32.9 94.3-29.3 127.2 8 1.2 1.3 2.3 2.7 3.4 4.1 9.1-3.8 19.5-1.9 26.6 5 24.3-26 65-27.3 91-3.1.5.5 1 .9 1.5 1.4 12.8 3.1 24.4 9.9 33.4 19.5 7.9-.5 15.9.4 23.5 2.8 7-.1 13.9 1.5 20.1 4.7 3.9-11.6 15.5-18.9 27.7-17.5.2-.3.3-.6.5-.9 22.1-39.2 70.7-54.7 111.4-35.6 30.8-15.3 68.2-6.2 88.6 21.5 18.3 1.7 35 10.8 46.5 25.1 5.2-4.3 11.1-7.4 17.6-9.3V0H0z"/></svg>';
                break;

            case 'wave':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M421.9,6.5c22.6-2.5,51.5,0.4,75.5,5.3c23.6,4.9,70.9,23.5,100.5,35.7c75.8,32.2,133.7,44.5,192.6,49.7c23.6,2.1,48.7,3.5,103.4-2.5c54.7-6,106.2-25.6,106.2-25.6V0H0v30.3c0,0,72,32.6,158.4,30.5c39.2-0.7,92.8-6.7,134-22.4c21.2-8.1,52.2-18.2,79.7-24.2C399.3,7.9,411.6,7.5,421.9,6.5z"></path></svg>';
                break;

            case 'wave-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="none"><path class="shape-divider-fill" d="M283.5,9.7c0,0-7.3,4.3-14,4.6c-6.8,0.3-12.6,0-20.9-1.5c-11.3-2-33.1-10.1-44.7-5.7	s-12.1,4.6-18,7.4c-6.6,3.2-20,9.6-36.6,9.3C131.6,23.5,99.5,7.2,86.3,8c-1.4,0.1-6.6,0.8-10.5,2c-3.8,1.2-9.4,3.8-17,4.7 c-3.2,0.4-8.3,1.1-14.2,0.9c-1.5-0.1-6.3-0.4-12-1.6c-5.7-1.2-11-3.1-15.8-3.7C6.5,9.2,0,10.8,0,10.8V0h283.5V9.7z M260.8,11.3 c-0.7-1-2-0.4-4.3-0.4c-2.3,0-6.1-1.2-5.8-1.1c0.3,0.1,3.1,1.5,6,1.9C259.7,12.2,261.4,12.3,260.8,11.3z M242.4,8.6 c0,0-2.4-0.2-5.6-0.9c-3.2-0.8-10.3-2.8-15.1-3.5c-8.2-1.1-15.8,0-15.1,0.1c0.8,0.1,9.6-0.6,17.6,1.1c3.3,0.7,9.3,2.2,12.4,2.7	C239.9,8.7,242.4,8.6,242.4,8.6z M185.2,8.5c1.7-0.7-13.3,4.7-18.5,6.1c-2.1,0.6-6.2,1.6-10,2c-3.9,0.4-8.9,0.4-8.8,0.5	c0,0.2,5.8,0.8,11.2,0c5.4-0.8,5.2-1.1,7.6-1.6C170.5,14.7,183.5,9.2,185.2,8.5z M199.1,6.9c0.2,0-0.8-0.4-4.8,1.1 c-4,1.5-6.7,3.5-6.9,3.7c-0.2,0.1,3.5-1.8,6.6-3C197,7.5,199,6.9,199.1,6.9z M283,6c-0.1,0.1-1.9,1.1-4.8,2.5s-6.9,2.8-6.7,2.7	c0.2,0,3.5-0.6,7.4-2.5C282.8,6.8,283.1,5.9,283,6z M31.3,11.6c0.1-0.2-1.9-0.2-4.5-1.2s-5.4-1.6-7.8-2C15,7.6,7.3,8.5,7.7,8.6	C8,8.7,15.9,8.3,20.2,9.3c2.2,0.5,2.4,0.5,5.7,1.6S31.2,11.9,31.3,11.6z M73,9.2c0.4-0.1,3.5-1.6,8.4-2.6c4.9-1.1,8.9-0.5,8.9-0.8 c0-0.3-1-0.9-6.2-0.3S72.6,9.3,73,9.2z M71.6,6.7C71.8,6.8,75,5.4,77.3,5c2.3-0.3,1.9-0.5,1.9-0.6c0-0.1-1.1-0.2-2.7,0.2	C74.8,5.1,71.4,6.6,71.6,6.7z M93.6,4.4c0.1,0.2,3.5,0.8,5.6,1.8c2.1,1,1.8,0.6,1.9,0.5c0.1-0.1-0.8-0.8-2.4-1.3	C97.1,4.8,93.5,4.2,93.6,4.4z M65.4,11.1c-0.1,0.3,0.3,0.5,1.9-0.2s2.6-1.3,2.2-1.2s-0.9,0.4-2.5,0.8C65.3,10.9,65.5,10.8,65.4,11.1 z M34.5,12.4c-0.2,0,2.1,0.8,3.3,0.9c1.2,0.1,2,0.1,2-0.2c0-0.3-0.1-0.5-1.6-0.4C36.6,12.8,34.7,12.4,34.5,12.4z M152.2,21.1 c-0.1,0.1-2.4-0.3-7.5-0.3c-5,0-13.6-2.4-17.2-3.5c-3.6-1.1,10,3.9,16.5,4.1C150.5,21.6,152.3,21,152.2,21.1z"></path><path class="shape-divider-fill" d="M269.6,18c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3	C267.7,18.8,269.7,18,269.6,18z"></path><path class="shape-divider-fill" d="M227.4,9.8c-0.2-0.1-4.5-1-9.5-1.2c-5-0.2-12.7,0.6-12.3,0.5c0.3-0.1,5.9-1.8,13.3-1.2	S227.6,9.9,227.4,9.8z"></path><path class="shape-divider-fill" d="M204.5,13.4c-0.1-0.1,2-1,3.2-1.1c1.2-0.1,2,0,2,0.3c0,0.3-0.1,0.5-1.6,0.4	C206.4,12.9,204.6,13.5,204.5,13.4z"></path><path class="shape-divider-fill" d="M201,10.6c0-0.1-4.4,1.2-6.3,2.2c-1.9,0.9-6.2,3.1-6.1,3.1c0.1,0.1,4.2-1.6,6.3-2.6	S201,10.7,201,10.6z"></path><path class="shape-divider-fill" d="M154.5,26.7c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3	C152.6,27.5,154.6,26.8,154.5,26.7z"></path><path class="shape-divider-fill" d="M41.9,19.3c0,0,1.2-0.3,2.9-0.1c1.7,0.2,5.8,0.9,8.2,0.7c4.2-0.4,7.4-2.7,7-2.6	c-0.4,0-4.3,2.2-8.6,1.9c-1.8-0.1-5.1-0.5-6.7-0.4S41.9,19.3,41.9,19.3z"></path><path class="shape-divider-fill" d="M75.5,12.6c0.2,0.1,2-0.8,4.3-1.1c2.3-0.2,2.1-0.3,2.1-0.5c0-0.1-1.8-0.4-3.4,0	C76.9,11.5,75.3,12.5,75.5,12.6z"></path><path class="shape-divider-fill" d="M15.6,13.2c0-0.1,4.3,0,6.7,0.5c2.4,0.5,5,1.9,5,2c0,0.1-2.7-0.8-5.1-1.4	C19.9,13.7,15.7,13.3,15.6,13.2z"></path></svg>';
                break;

            case 'wave-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1047.1 3.7" preserveAspectRatio="xMidYMin slice"><path class="shape-divider-fill" d="M1047.1,0C557,0,8.9,0,0,0v1.6c0,0,0.6-1.5,2.7-0.3C3.9,2,6.1,4.1,8.3,3.5c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3C13.8,2,16,4.1,18.2,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C23.6,2,25.9,4.1,28,3.5c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C63,2,65.3,4.1,67.4,3.5	C68.3,3.3,69,1.6,69,1.6s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	C82.7,2,85,4.1,87.1,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3C92.6,2,94.8,4.1,97,3.5c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9	c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9c0,0,0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2	c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.7-0.3	c1.2,0.7,3.5,2.8,5.6,2.2c0.9-0.2,1.5-1.9,1.5-1.9s0.6-1.5,2.6-0.4V0z M2.5,1.2C2.5,1.2,2.5,1.2,2.5,1.2C2.5,1.2,2.5,1.2,2.5,1.2z M2.7,1.4c0.1,0,0.1,0.1,0.1,0.1C2.8,1.4,2.8,1.4,2.7,1.4z"></path></svg>';
                break;

            case 'wave-4':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 51.76c36.21-2.25 77.57-3.58 126.42-3.58 320 0 320 57 640 57 271.15 0 312.58-40.91 513.58-53.4V0H0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 24.31c43.46-5.69 94.56-9.25 158.42-9.25 320 0 320 89.24 640 89.24 256.13 0 307.28-57.16 481.58-80V0H0z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0v3.4C28.2 1.6 59.4.59 94.42.59c320 0 320 84.3 640 84.3 285 0 316.17-66.85 545.58-81.49V0z"></path></svg>';
                break;

            case 'wave-5':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v100c20 17.3 40 29.51 80 29.51 51.79 0 74.69-48.57 151.75-48.57 73.72 0 91 54.88 191.56 54.88C543.95 135.8 554 14 665.69 14c109.46 0 98.85 87 188.2 87 70.37 0 69.81-33.73 115.6-33.73 55.85 0 62 39.62 115.6 39.62 58.08 0 57.52-46.59 115-46.59 39.8 0 60 22.48 79.89 39.69V0z"></path></svg>';
                break;

            case 'wave-6':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M504.854,80.066c7.812,0,14.893,0.318,21.41,0.879 c-25.925,22.475-56.093,40.852-102.946,40.852c-20.779,0-37.996-2.349-52.898-6.07C413.517,107.295,434.056,80.066,504.854,80.066z M775.938,51.947c19.145,18.596,39.097,35.051,77.956,35.051c46.907,0,62.299-14.986,80.912-24.98 c-21.357-15.783-46.804-28.348-85.489-28.348C816.829,33.671,794.233,41.411,775.938,51.947z" opacity="0.3"></path><path class="shape-divider-fill" d="M1200.112,46.292c39.804,0,59.986,22.479,79.888,39.69v16.805 c-19.903-10.835-40.084-21.777-79.888-21.777c-72.014,0-78.715,43.559-147.964,43.559c-56.84,0-81.247-35.876-117.342-62.552 c9.309-4.998,19.423-8.749,34.69-8.749c55.846,0,61.99,39.617,115.602,39.617C1143.177,92.887,1142.618,46.292,1200.112,46.292z M80.011,115.488c-40.006,0-60.008-12.206-80.011-29.506v16.806c20.003,10.891,40.005,21.782,80.011,21.782 c80.004,0,78.597-30.407,137.669-30.407c55.971,0,62.526,24.026,126.337,24.026c9.858,0,18.509-0.916,26.404-2.461 c-57.186-14.278-80.177-48.808-138.66-48.808C154.698,66.919,131.801,115.488,80.011,115.488z M526.265,80.945 c56.848,4.902,70.056,28.726,137.193,28.726c54.001,0,73.43-35.237,112.48-57.724C751.06,27.782,727.548,0,665.691,0 C597.381,0,567.086,45.555,526.265,80.945z" opacity="0.5"></path><path class="shape-divider-fill" d="M0,0v85.982c20.003,17.3,40.005,29.506,80.011,29.506c51.791,0,74.688-48.569,151.751-48.569 c58.482,0,81.473,34.531,138.66,48.808c43.096-8.432,63.634-35.662,134.433-35.662c7.812,0,14.893,0.318,21.41,0.879 C567.086,45.555,597.381,0,665.691,0c61.856,0,85.369,27.782,110.246,51.947c18.295-10.536,40.891-18.276,73.378-18.276 c38.685,0,64.132,12.564,85.489,28.348c9.309-4.998,19.423-8.749,34.69-8.749c55.846,0,61.99,39.617,115.602,39.617 c58.08,0,57.521-46.595,115.015-46.595c39.804,0,59.986,22.479,79.888,39.69V0H0z"></path></svg>';
                break;

            case 'slant':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0,6V0h1000v100L0,6z"></path></svg>';
                break;

            case 'slant-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2600 131.1" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0L2600 0 2600 69.1 0 0z"></path><path class="shape-divider-fill" opacity="0.5" d="M0 0L2600 0 2600 69.1 0 69.1z"></path><path class="shape-divider-fill" opacity="0.25" d="M2600 0L0 0 0 130.1 2600 69.1z"></path></svg>';
                break;

            case 'slant-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1280 140V0H0l1280 140z" opacity="0.5"></path><path class="shape-divider-fill" d="M1280 98V0H0l1280 98z"></path></svg>';
                break;

            case 'rounded':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1000,4.3V0H0v4.3C0.9,23.1,126.7,99.2,500,100S1000,22.7,1000,4.3z"></path></svg>';
                break;

            case 'rounded-2':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0,0c0,0,0,6,0,6.7c0,18,240.2,93.6,615.2,92.6C989.8,98.5,1000,25,1000,6.7c0-0.7,0-6.7,0-6.7H0z"></path></svg>';
                break;

            case 'rounded-3':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0s573.08 140 1280 140V0z"></path></svg>';
                break;

            case 'rounded-4':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v60s573.09 80 1280 80V0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 0v30s573.09 110 1280 110V0z" opacity="0.5"></path><path class="shape-divider-fill" d="M0 0s573.09 140 1280 140V0z"></path></svg>';
                break;

            case 'rounded-5':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 140" preserveAspectRatio="none"><path class="shape-divider-fill" d="M0 0v.48C18.62 9.38 297.81 140 639.5 140 993.24 140 1280 0 1280 0z" opacity="0.3"></path><path class="shape-divider-fill" d="M0 .6c14 8.28 176.54 99.8 555.45 119.14C952.41 140 1280 0 1280 0H0z" opacity="0.5"></path><path class="shape-divider-fill" d="M726.29 101.2C1126.36 79.92 1281 0 1281 0H1c.05 0 325.25 122.48 725.29 101.2z"></path></svg>';
                break;

            case 'triangle':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 10" preserveAspectRatio="none"><path class="shape-divider-fill" d="M350,10L340,0h20L350,10z"></path></svg>';
                break;

            case 'drops':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 27.8" preserveAspectRatio="xMidYMax slice"><path class="shape-divider-fill" d="M0 0v1.4c.6.7 1.1 1.4 1.4 2 2 3.8 2.2 6.6 1.8 10.8-.3 3.3-2.4 9.4 0 12.3 1.7 2 3.7 1.4 4.6-.9 1.4-3.8-.7-8.2-.6-12 .1-3.7 3.2-5.5 6.9-4.9 4 .6 4.8 4 4.9 7.4.1 1.8-1.1 7 0 8.5.6.8 1.6 1.2 2.4.5 1.4-1.1.1-5.4.1-6.9.1-3.7.3-8.6 4.1-10.5 5-2.5 6.2 1.6 5.4 5.6-.4 1.7-1 9.2 2.9 6.3 1.5-1.1.7-3.5.5-4.9-.4-2.4-.4-4.3 1-6.5.9-1.4 2.4-3.1 4.2-3 2.4.1 2.7 2.2 4 3.7 1.5 1.8 1.8 2.2 3 .1 1.1-1.9 1.2-2.8 3.6-3.3 1.3-.3 4.8-1.4 5.9-.5 1.5 1.1.6 2.8.4 4.3-.2 1.1-.6 4 1.8 3.4 1.7-.4-.3-4.1.6-5.6 1.3-2.2 5.8-1.4 7 .5 1.3 2.1.5 5.8.1 8.1s-1.2 5-.6 7.4c1.3 5.1 4.4.9 4.3-2.4-.1-4.4-2-8.8-.5-13 .9-2.4 4.6-6.6 7.7-4.5 2.7 1.8.5 7.8.2 10.3-.2 1.7-.8 4.6.2 6.2.9 1.4 2 1.5 2.6-.3.5-1.5-.9-4.5-1-6.1-.2-1.7-.4-3.7.2-5.4 1.8-5.6 3.5 2.4 6.3.6 1.4-.9 4.3-9.4 6.1-3.1.6 2.2-1.3 7.8.7 8.9 4.2 2.3 1.5-7.1 2.2-8 3.1-4 4.7 3.8 6.1 4.1 3.1.7 2.8-7.9 8.1-4.5 1.7 1.1 2.9 3.3 3.2 5.2.4 2.2-1 4.5-.6 6.6 1 4.3 4.4 1.5 4.4-1.7 0-2.7-3-8.3 1.4-9.1 4.4-.9 7.3 3.5 7.8 6.9.3 2-1.5 10.9 1.3 11.3 4.1.6-3.2-15.7 4.8-15.8 4.7-.1 2.8 4.1 3.9 6.6 1 2.4 2.1 1 2.3-.8.3-1.9-.9-3.2 1.3-4.3 5.9-2.9 5.9 5.4 5.5 8.5-.3 2-1.7 8.4 2 8.1 6.9-.5-2.8-16.9 4.8-18.7 4.7-1.2 6.1 3.6 6.3 7.1.1 1.7-1.2 8.1.6 9.1 3.5 2 1.9-7 2-8.4.2-4 1.2-9.6 6.4-9.8 4.7-.2 3.2 4.6 2.7 7.5-.4 2.2 1.3 8.6 3.8 4.4 1.1-1.9-.3-4.1-.3-6 0-1.7.4-3.2 1.3-4.6 1-1.6 2.9-3.5 5.1-2.9 2.5.6 2.3 4.1 4.1 4.9 1.9.8 1.6-.9 2.3-2.1 1.2-2.1 2.1-2.1 4.4-2.4 1.4-.2 3.6-1.5 4.9-.5 2.3 1.7-.7 4.4.1 6.5.6 1.5 2.1 1.7 2.8.3.7-1.4-1.1-3.4-.3-4.8 1.4-2.5 6.2-1.2 7.2 1 2.3 4.8-3.3 12-.2 16.3 3 4.1 3.9-2.8 3.8-4.8-.4-4.3-2.1-8.9 0-13.1 1.3-2.5 5.9-5.7 7.9-2.4 2 3.2-1.3 9.8-.8 13.4.5 4.4 3.5 3.3 2.7-.8-.4-1.9-2.4-10 .6-11.1 3.7-1.4 2.8 7.2 6.5.4 2.2-4.1 4.9-3.1 5.2 1.2.1 1.5-.6 3.1-.4 4.6.2 1.9 1.8 3.7 3.3 1.3 1-1.6-2.6-10.4 2.9-7.3 2.6 1.5 1.6 6.5 4.8 2.7 1.3-1.5 1.7-3.6 4-3.7 2.2-.1 4 2.3 4.8 4.1 1.3 2.9-1.5 8.4.9 10.3 4.2 3.3 3-5.5 2.7-6.9-.6-3.9 1-7.2 5.5-5 4.1 2.1 4.3 7.7 4.1 11.6 0 .8-.6 9.5 2.5 5.2 1.2-1.7-.1-7.7.1-9.6.3-2.9 1.2-5.5 4.3-6.2 4.5-1 7.7 1.5 7.4 5.8-.2 3.5-1.8 7.7-.5 11.1 1 2.7 3.6 2.8 5 .2 1.6-3.1 0-8.3-.4-11.6-.4-4.2-.2-7 1.8-10.8 0 0-.1.1-.1.2-.2.4-.3.7-.4.8v.1c-.1.2-.1.2 0 0v-.1l.4-.8c0-.1.1-.1.1-.2.2-.4.5-.8.8-1.2V0H0zM282.7 3.4z"></path></svg>';
                break;

            case 'cliff':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 279.24" preserveAspectRatio="none"><path class="shape-divider-fill" d="M1000 0S331.54-4.18 0 279.24h1000z" opacity="0.25"></path><path class="shape-divider-fill" d="M1000 279.24s-339.56-44.3-522.95-109.6S132.86 23.76 0 25.15v254.09z"></path></svg>';
                break;

            case 'zigzag':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1800 5.8" preserveAspectRatio="none"><path class="shape-divider-fill" d="M5.4.4l5.4 5.3L16.5.4l5.4 5.3L27.5.4 33 5.7 38.6.4l5.5 5.4h.1L49.9.4l5.4 5.3L60.9.4l5.5 5.3L72 .4l5.5 5.3L83.1.4l5.4 5.3L94.1.4l5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3L161 .4l5.4 5.3L172 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3L261 .4l5.4 5.3L272 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3L361 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3L461 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1L550 .4l5.4 5.3L561 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2L650 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2L750 .4l5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2L850 .4l5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.4h.2l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.7-5.4 5.4 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.5 5.4h.1l5.6-5.4 5.5 5.3 5.6-5.3 5.5 5.3 5.6-5.3 5.4 5.3 5.7-5.3 5.4 5.3 5.6-5.3 5.5 5.4V0H-.2v5.8z"></path></svg>';
                break;

            case 'illusion':
                shape = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 283.5 19.6" preserveAspectRatio="none"><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 18.8 141.8 4.1 283.5 18.8 283.5 0z"></path><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 12.6 141.8 4 283.5 12.6 283.5 0z"></path><path class="shape-divider-fill" opacity="0.33" d="M0 0L0 6.4 141.8 4 283.5 6.4 283.5 0z"></path><path class="shape-divider-fill" d="M0 0L0 1.2 141.8 4 283.5 1.2 283.5 0z"></path></svg>';
                break;

            default:
                shape = '';
                break;

        }

        element.html(shape);
        element.find('svg').addClass('op-ts');

        setTimeout(function () {
            element.find('svg').addClass('op-1');
        }, 500);

    });

};

/*!
 * Theia Sticky Sidebar v1.7.0
 * https://github.com/WeCodePixels/theia-sticky-sidebar
 */
!function (i) {
    i.fn.scwStickySidebar = function (t) {
        function e (t, e) {
            var a = o(t, e);
            a || (console.log(
                'TSS: Body width smaller than options.minWidth. Init is delayed.'), i(
                document).
                on('scroll.' + t.namespace, function (t, e) {
                    return function (a) {
                        var n = o(t, e);
                        n && i(this).unbind(a);
                    };
                }(t, e)), i(window).
                on('resize.' + t.namespace, function (t, e) {
                    return function (a) {
                        var n = o(t, e);
                        n && i(this).unbind(a);
                    };
                }(t, e)));
        }

        function o (t, e) {
            return t.initialized === !0 || !(i('body').width() < t.minWidth) &&
                (a(t, e), !0);
        }

        function a (t, e) {
            t.initialized = !0;
            var o = i('#scw-sticky-sidebar-stylesheet-' + t.namespace);
            0 === o.length && i('head').
                append(i('<style id="scw-sticky-sidebar-stylesheet-' +
                    t.namespace +
                    '">.scwStickySidebar:after {content: ""; display: table; clear: both;}</style>')), e.each(
                function () {
                    function e () {
                        a.fixedScrollTop = 0, a.sidebar.css(
                            { 'min-height': '1px' }), a.stickySidebar.css({
                            position: 'static',
                            width: '',
                            transform: 'none',
                        });
                    }

                    function o (t) {
                        var e = t.height();
                        return t.children().
                            each(function () {
                                e = Math.max(e, i(this).height());
                            }), e;
                    }

                    var a = {};
                    if (a.sidebar = i(this), a.options = t ||
                        {}, a.container = i(a.options.containerSelector), 0 ==
                    a.container.length &&
                    (a.container = a.sidebar.parent()), a.sidebar.parents().
                        css('-webkit-transform', 'none'), a.sidebar.css({
                        position: a.options.defaultPosition,
                        overflow: 'visible',
                        '-webkit-box-sizing': 'border-box',
                        '-moz-box-sizing': 'border-box',
                        'box-sizing': 'border-box',
                    }), a.stickySidebar = a.sidebar.find(
                        '.scwStickySidebar'), 0 == a.stickySidebar.length) {
                        var s = /(?:text|application)\/(?:x-)?(?:javascript|ecmascript)/i;
                        a.sidebar.find('script').
                            filter(function (i, t) {
                                return 0 === t.type.length || t.type.match(s);
                            }).
                            remove(), a.stickySidebar = i('<div>').
                            addClass('scwStickySidebar').
                            append(a.sidebar.children()), a.sidebar.append(
                            a.stickySidebar);
                    }
                    a.marginBottom = parseInt(a.sidebar.css(
                        'margin-bottom')), a.paddingTop = parseInt(
                        a.sidebar.css(
                            'padding-top')), a.paddingBottom = parseInt(
                        a.sidebar.css('padding-bottom'));
                    var r = a.stickySidebar.offset().top,
                        d = a.stickySidebar.outerHeight();
                    a.stickySidebar.css('padding-top', 1), a.stickySidebar.css(
                        'padding-bottom',
                        1), r -= a.stickySidebar.offset().top, d = a.stickySidebar.outerHeight() -
                        d - r, 0 == r
                        ? (a.stickySidebar.css('padding-top',
                            0), a.stickySidebarPaddingTop = 0)
                        : a.stickySidebarPaddingTop = 1, 0 == d
                        ? (a.stickySidebar.css('padding-bottom',
                            0), a.stickySidebarPaddingBottom = 0)
                        : a.stickySidebarPaddingBottom = 1, a.previousScrollTop = null, a.fixedScrollTop = 0, e(), a.onScroll = function (a) {
                        if (a.stickySidebar.is(':visible')) {
                            if (i('body').width() <
                                a.options.minWidth) return void e();
                            if (a.options.disableOnResponsiveLayouts) {
                                var s = a.sidebar.outerWidth(
                                    'none' == a.sidebar.css('float'));
                                if (s + 50 >
                                    a.container.width()) return void e();
                            }
                            var r = i(document).scrollTop(), d = 'static';
                            if (r >= a.sidebar.offset().top + (a.paddingTop -
                                a.options.additionalMarginTop)) {
                                var c, p = a.paddingTop + t.additionalMarginTop,
                                    b = a.paddingBottom + a.marginBottom +
                                        t.additionalMarginBottom,
                                    l = a.sidebar.offset().top,
                                    f = a.sidebar.offset().top + o(a.container),
                                    h = 0 + t.additionalMarginTop,
                                    g = a.stickySidebar.outerHeight() + p + b <
                                        i(window).height();
                                c = g ? h + a.stickySidebar.outerHeight() : i(
                                    window).height() - a.marginBottom -
                                    a.paddingBottom - t.additionalMarginBottom;
                                var u = l - r + a.paddingTop,
                                    S = f - r - a.paddingBottom -
                                        a.marginBottom,
                                    y = a.stickySidebar.offset().top - r,
                                    m = a.previousScrollTop - r;
                                'fixed' == a.stickySidebar.css('position') &&
                                'modern' == a.options.sidebarBehavior &&
                                (y += m), 'stick-to-top' ==
                                a.options.sidebarBehavior &&
                                (y = t.additionalMarginTop), 'stick-to-bottom' ==
                                a.options.sidebarBehavior &&
                                (y = c - a.stickySidebar.outerHeight()), y = m >
                                0 ? Math.min(y, h) : Math.max(y, c -
                                    a.stickySidebar.outerHeight()), y = Math.max(
                                    y, u), y = Math.min(y,
                                    S - a.stickySidebar.outerHeight());
                                var k = a.container.height() ==
                                    a.stickySidebar.outerHeight();
                                d = (k || y != h) &&
                                (k || y != c - a.stickySidebar.outerHeight())
                                    ? r + y - a.sidebar.offset().top -
                                    a.paddingTop <= t.additionalMarginTop
                                        ? 'static'
                                        : 'absolute'
                                    : 'fixed';
                            }
                            if ('fixed' == d) {
                                var v = i(document).scrollLeft();
                                a.stickySidebar.css({
                                    position: 'fixed',
                                    width: n(a.stickySidebar) + 'px',
                                    transform: 'translateY(' + y + 'px)',
                                    left: a.sidebar.offset().left + parseInt(
                                        a.sidebar.css('padding-left')) - v +
                                        'px',
                                    top: '0px',
                                });
                            } else if ('absolute' == d) {
                                var x = {};
                                'absolute' != a.stickySidebar.css('position') &&
                                (x.position = 'absolute', x.transform = 'translateY(' +
                                    (r + y - a.sidebar.offset().top -
                                        a.stickySidebarPaddingTop -
                                        a.stickySidebarPaddingBottom) +
                                    'px)', x.top = '0px'), x.width = n(
                                    a.stickySidebar) +
                                    'px', x.left = '', a.stickySidebar.css(x);
                            } else 'static' == d && e();
                            'static' != d && 1 ==
                            a.options.updateSidebarHeight && a.sidebar.css({
                                'min-height': a.stickySidebar.outerHeight() +
                                    a.stickySidebar.offset().top -
                                    a.sidebar.offset().top + a.paddingBottom,
                            }), a.previousScrollTop = r;
                        }
                    }, a.onScroll(a), i(document).
                        on('scroll.' + a.options.namespace,
                            function (i) {return function () {i.onScroll(i);};}(
                                a)), i(window).
                        on('resize.' + a.options.namespace, function (i) {
                            return function () {
                                i.stickySidebar.css(
                                    { position: 'static' }), i.onScroll(i);
                            };
                        }(a)), 'undefined' != typeof ResizeSensor &&
                    new ResizeSensor(a.stickySidebar[0],
                        function (i) {return function () {i.onScroll(i);};}(a));
                });
        }

        function n (i) {
            var t;
            try {t = i[0].getBoundingClientRect().width;} catch (i) {}
            return 'undefined' == typeof t && (t = i.width()), t;
        }

        var s = {
            containerSelector: '',
            additionalMarginTop: 0,
            additionalMarginBottom: 0,
            updateSidebarHeight: !0,
            minWidth: 0,
            disableOnResponsiveLayouts: !0,
            sidebarBehavior: 'modern',
            defaultPosition: 'relative',
            namespace: 'TSS',
        };
        return t = i.extend(s, t), t.additionalMarginTop = parseInt(
            t.additionalMarginTop) || 0, t.additionalMarginBottom = parseInt(
            t.additionalMarginBottom) || 0, e(t, this), this;
    };
}(jQuery);
!function () {
    var e = function (t, i) {
        function s () {
            this.q = [], this.add = function (e) {this.q.push(e);};
            var e, t;
            this.call = function () {
                for (e = 0, t = this.q.length; e < t; e++) this.q[e].call();
            };
        }

        function o (e, t) {
            return e.currentStyle
                ? e.currentStyle[t]
                : window.getComputedStyle ? window.getComputedStyle(e, null).
                    getPropertyValue(t) : e.style[t];
        }

        function n (e, t) {
            if (e.resizedAttached) {
                if (e.resizedAttached) return void e.resizedAttached.add(t);
            } else e.resizedAttached = new s, e.resizedAttached.add(t);
            e.resizeSensor = document.createElement(
                'div'), e.resizeSensor.className = 'resize-sensor';
            var i = 'position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;',
                n = 'position: absolute; left: 0; top: 0; transition: 0s;';
            e.resizeSensor.style.cssText = i, e.resizeSensor.innerHTML = '<div class="resize-sensor-expand" style="' +
                i + '"><div style="' + n +
                '"></div></div><div class="resize-sensor-shrink" style="' + i +
                '"><div style="' + n +
                ' width: 200%; height: 200%"></div></div>', e.appendChild(
                e.resizeSensor), { fixed: 1, absolute: 1 }[o(e, 'position')] ||
            (e.style.position = 'relative');
            var d, r, l = e.resizeSensor.childNodes[0], c = l.childNodes[0],
                h = e.resizeSensor.childNodes[1],
                a = (h.childNodes[0], function () {
                    c.style.width = l.offsetWidth + 10 +
                        'px', c.style.height = l.offsetHeight + 10 +
                        'px', l.scrollLeft = l.scrollWidth, l.scrollTop = l.scrollHeight, h.scrollLeft = h.scrollWidth, h.scrollTop = h.scrollHeight, d = e.offsetWidth, r = e.offsetHeight;
                });
            a();
            var f = function () {
                    e.resizedAttached && e.resizedAttached.call();
                },
                u = function (e, t, i) {
                    e.attachEvent
                        ? e.attachEvent('on' + t, i)
                        : e.addEventListener(t, i);
                }, p = function () {
                    e.offsetWidth == d && e.offsetHeight == r || f(), a();
                };
            u(l, 'scroll', p), u(h, 'scroll', p);
        }

        var d = Object.prototype.toString.call(t),
            r = '[object Array]' === d || '[object NodeList]' === d ||
                '[object HTMLCollection]' === d || 'undefined' !=
                typeof jQuery && t instanceof jQuery || 'undefined' !=
                typeof Elements && t instanceof Elements;
        if (r) for (var l = 0, c = t.length; l < c; l++) n(t[l], i); else n(t,
            i);
        this.detach = function () {
            if (r) for (var i = 0, s = t.length; i < s; i++) e.detach(
                t[i]); else e.detach(t);
        };
    };
    e.detach = function (e) {
        e.resizeSensor && (e.removeChild(
            e.resizeSensor), delete e.resizeSensor, delete e.resizedAttached);
    }, 'undefined' != typeof module && 'undefined' != typeof module.exports
        ? module.exports = e
        : window.ResizeSensor = e;
}();

window.SEMICOLON_stickySidebarInit = function ($stickySidebar) {

    $stickySidebar = $stickySidebar.filter(':not(.customjs)');

    if ($stickySidebar.length < 1) {
        return true;
    }

    $stickySidebar.each(function () {
        let element = $(this),
            elTop = element.attr('data-offset-top') || 110,
            elBottom = element.attr('data-offset-bottom') || 50;

        element.scwStickySidebar({
            additionalMarginTop: Number(elTop),
            additionalMarginBottom: Number(elBottom),
        });
    });

};

window.scwSubscribeFormPlugin = window.scwSubscribeFormPlugin || {};

window.SEMICOLON_subscribeFormInit = function ($subscribeForm) {

    $subscribeForm = $subscribeForm.filter(':not(.customjs)');

    if ($subscribeForm.length < 1) {
        return true;
    }

    $subscribeForm.each(function () {
        let element = $(this),
            elAlert = element.attr('data-alert-type'),
            elLoader = element.attr('data-loader'),
            elResult = element.find('.widget-subscribe-form-result'),
            elRedirect = element.attr('data-redirect'),
            defButton, defButtonText, alertType;

        element.find('form').validate({
            submitHandler: function (form) {

                elResult.hide();

                if (elLoader == 'button') {
                    defButton = $(form).find('button');
                    defButtonText = defButton.html();

                    defButton.html(
                        '<i class="icon-line-loader icon-spin nomargin"></i>');
                } else {
                    $(form).
                        find('.icon-email2').
                        removeClass('icon-email2').
                        addClass('icon-line-loader icon-spin');
                }

                $(form).ajaxSubmit({
                    target: elResult,
                    dataType: 'json',
                    resetForm: true,
                    success: function (data) {
                        if (elLoader == 'button') {
                            defButton.html(defButtonText);
                        } else {
                            $(form).
                                find('.icon-line-loader').
                                removeClass('icon-line-loader icon-spin').
                                addClass('icon-email2');
                        }
                        if (data.alert != 'error' && elRedirect) {
                            window.location.replace(elRedirect);
                            return true;
                        }
                        if (elAlert == 'inline') {
                            if (data.alert == 'error') {
                                alertType = 'alert-danger';
                            } else {
                                alertType = 'alert-success';
                            }

                            elResult.addClass('alert ' + alertType).
                                html(data.message).
                                slideDown(400);
                        } else {
                            elResult.attr('data-notify-type', data.alert).
                                attr('data-notify-msg', data.message).
                                html('');
                            SEMICOLON.widget.notifications({ el: elResult });
                        }
                    },
                });
            },
        });

    });

};

/**
 * Swiper 6.8.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * https://swiperjs.com
 *
 * Copyright 2014-2021 Vladimir Kharlampidi
 *
 * Released under the MIT License
 *
 * Released on: August 3, 2021
 */

!function (e, t) {
    'object' == typeof exports && 'undefined' != typeof module
        ? module.exports = t()
        : 'function' == typeof define && define.amd
        ? define(t)
        : (e = 'undefined' != typeof globalThis ? globalThis : e ||
            self).Swiper = t();
}(this, (function () {
    'use strict';

    function e (e, t) {
        for (var a = 0; a < t.length; a++) {
            var i = t[a];
            i.enumerable = i.enumerable || !1, i.configurable = !0, 'value' in
            i && (i.writable = !0), Object.defineProperty(e, i.key, i);
        }
    }

    function t () {
        return (t = Object.assign || function (e) {
            for (var t = 1; t < arguments.length; t++) {
                var a = arguments[t];
                for (var i in a) Object.prototype.hasOwnProperty.call(a, i) &&
                (e[i] = a[i]);
            }
            return e;
        }).apply(this, arguments);
    }

    function a (e) {
        return null !== e && 'object' == typeof e && 'constructor' in e &&
            e.constructor === Object;
    }

    function i (e, t) {
        void 0 === e && (e = {}), void 0 === t && (t = {}), Object.keys(t).
            forEach((function (s) {
                void 0 === e[s] ? e[s] = t[s] : a(t[s]) && a(e[s]) &&
                    Object.keys(t[s]).length > 0 && i(e[s], t[s]);
            }));
    }

    var s = {
        body: {},
        addEventListener: function () {},
        removeEventListener: function () {},
        activeElement: { blur: function () {}, nodeName: '' },
        querySelector: function () {return null;},
        querySelectorAll: function () {return [];},
        getElementById: function () {return null;},
        createEvent: function () {return { initEvent: function () {} };},
        createElement: function () {
            return {
                children: [],
                childNodes: [],
                style: {},
                setAttribute: function () {},
                getElementsByTagName: function () {return [];},
            };
        },
        createElementNS: function () {return {};},
        importNode: function () {return null;},
        location: {
            hash: '',
            host: '',
            hostname: '',
            href: '',
            origin: '',
            pathname: '',
            protocol: '',
            search: '',
        },
    };

    function r () {
        var e = 'undefined' != typeof document ? document : {};
        return i(e, s), e;
    }

    var n = {
        document: s,
        navigator: { userAgent: '' },
        location: {
            hash: '',
            host: '',
            hostname: '',
            href: '',
            origin: '',
            pathname: '',
            protocol: '',
            search: '',
        },
        history: {
            replaceState: function () {},
            pushState: function () {},
            go: function () {},
            back: function () {},
        },
        CustomEvent: function () {return this;},
        addEventListener: function () {},
        removeEventListener: function () {},
        getComputedStyle: function () {return { getPropertyValue: function () {return '';} };},
        Image: function () {},
        Date: function () {},
        screen: {},
        setTimeout: function () {},
        clearTimeout: function () {},
        matchMedia: function () {return {};},
        requestAnimationFrame: function (e) {
            return 'undefined' == typeof setTimeout ? (e(), null) : setTimeout(
                e, 0);
        },
        cancelAnimationFrame: function (e) {
            'undefined' != typeof setTimeout && clearTimeout(e);
        },
    };

    function l () {
        var e = 'undefined' != typeof window ? window : {};
        return i(e, n), e;
    }

    function o (e) {
        return (o = Object.setPrototypeOf
            ? Object.getPrototypeOf
            : function (e) {return e.__proto__ || Object.getPrototypeOf(e);})(
            e);
    }

    function d (e, t) {
        return (d = Object.setPrototypeOf ||
            function (e, t) {return e.__proto__ = t, e;})(e, t);
    }

    function p () {
        if ('undefined' == typeof Reflect || !Reflect.construct) return !1;
        if (Reflect.construct.sham) return !1;
        if ('function' == typeof Proxy) return !0;
        try {
            return Date.prototype.toString.call(
                Reflect.construct(Date, [], (function () {}))), !0;
        } catch (e) {return !1;}
    }

    function u (e, t, a) {
        return (u = p() ? Reflect.construct : function (
            e, t, a) {
            var i = [null];
            i.push.apply(i, t);
            var s = new (Function.bind.apply(e, i));
            return a && d(s, a.prototype), s;
        }).apply(null, arguments);
    }

    function c (e) {
        var t = 'function' == typeof Map ? new Map : void 0;
        return (c = function (e) {
            if (null === e || (a = e, -1 ===
            Function.toString.call(a).indexOf('[native code]'))) return e;
            var a;
            if ('function' != typeof e) throw new TypeError(
                'Super expression must either be null or a function');
            if (void 0 !== t) {
                if (t.has(e)) return t.get(e);
                t.set(e, i);
            }

            function i () {return u(e, arguments, o(this).constructor);}

            return i.prototype = Object.create(e.prototype, {
                constructor: {
                    value: i,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0,
                },
            }), d(i, e);
        })(e);
    }

    var h = function (e) {
        var t, a;

        function i (t) {
            var a, i, s;
            return a = e.call.apply(e, [this].concat(t)) ||
                this, i = function (e) {
                if (void 0 === e) throw new ReferenceError(
                    'this hasn\'t been initialised - super() hasn\'t been called');
                return e;
            }(a), s = i.__proto__, Object.defineProperty(i, '__proto__', {
                get: function () {return s;},
                set: function (e) {s.__proto__ = e;},
            }), a;
        }

        return a = e, (t = i).prototype = Object.create(
            a.prototype), t.prototype.constructor = t, t.__proto__ = a, i;
    }(c(Array));

    function v (e) {
        void 0 === e && (e = []);
        var t = [];
        return e.forEach((function (e) {
            Array.isArray(e) ? t.push.apply(t, v(e)) : t.push(e);
        })), t;
    }

    function f (e, t) {return Array.prototype.filter.call(e, t);}

    function m (e, t) {
        var a = l(), i = r(), s = [];
        if (!t && e instanceof h) return e;
        if (!e) return new h(s);
        if ('string' == typeof e) {
            var n = e.trim();
            if (n.indexOf('<') >= 0 && n.indexOf('>') >= 0) {
                var o = 'div';
                0 === n.indexOf('<li') && (o = 'ul'), 0 === n.indexOf('<tr') &&
                (o = 'tbody'), 0 !== n.indexOf('<td') && 0 !==
                n.indexOf('<th') || (o = 'tr'), 0 === n.indexOf('<tbody') &&
                (o = 'table'), 0 === n.indexOf('<option') && (o = 'select');
                var d = i.createElement(o);
                d.innerHTML = n;
                for (var p = 0; p < d.childNodes.length; p += 1) s.push(
                    d.childNodes[p]);
            } else s = function (e, t) {
                if ('string' != typeof e) return [e];
                for (var a = [], i = t.querySelectorAll(e), s = 0; s <
                i.length; s += 1) a.push(i[s]);
                return a;
            }(e.trim(), t || i);
        } else if (e.nodeType || e === a || e === i) s.push(
            e); else if (Array.isArray(e)) {
            if (e instanceof h) return e;
            s = e;
        }
        return new h(function (e) {
            for (var t = [], a = 0; a < e.length; a += 1) -1 ===
            t.indexOf(e[a]) && t.push(e[a]);
            return t;
        }(s));
    }

    m.fn = h.prototype;
    var g, b, w, y = {
        addClass: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = v(t.map((function (e) {return e.split(' ');})));
            return this.forEach((function (e) {
                var t;
                (t = e.classList).add.apply(t, i);
            })), this;
        },
        removeClass: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = v(t.map((function (e) {return e.split(' ');})));
            return this.forEach((function (e) {
                var t;
                (t = e.classList).remove.apply(t, i);
            })), this;
        },
        hasClass: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = v(t.map((function (e) {return e.split(' ');})));
            return f(this, (function (e) {
                return i.filter(
                    (function (t) {return e.classList.contains(t);})).length >
                    0;
            })).length > 0;
        },
        toggleClass: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = v(t.map((function (e) {return e.split(' ');})));
            this.forEach((function (e) {
                i.forEach((function (t) {e.classList.toggle(t);}));
            }));
        },
        attr: function (e, t) {
            if (1 === arguments.length && 'string' == typeof e) return this[0]
                ? this[0].getAttribute(e)
                : void 0;
            for (var a = 0; a < this.length; a += 1) if (2 ===
                arguments.length) this[a].setAttribute(e,
                t); else for (var i in e) this[a][i] = e[i], this[a].setAttribute(
                i, e[i]);
            return this;
        },
        removeAttr: function (e) {
            for (var t = 0; t < this.length; t += 1) this[t].removeAttribute(e);
            return this;
        },
        transform: function (e) {
            for (var t = 0; t <
            this.length; t += 1) this[t].style.transform = e;
            return this;
        },
        transition: function (e) {
            for (var t = 0; t <
            this.length; t += 1) this[t].style.transitionDuration = 'string' !=
            typeof e ? e + 'ms' : e;
            return this;
        },
        on: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = t[0], s = t[1], r = t[2], n = t[3];

            function l (e) {
                var t = e.target;
                if (t) {
                    var a = e.target.dom7EventData || [];
                    if (a.indexOf(e) < 0 && a.unshift(e), m(t).is(s)) r.apply(t,
                        a); else for (var i = m(t).parents(), n = 0; n <
                    i.length; n += 1) m(i[n]).is(s) && r.apply(i[n], a);
                }
            }

            function o (e) {
                var t = e && e.target && e.target.dom7EventData || [];
                t.indexOf(e) < 0 && t.unshift(e), r.apply(this, t);
            }

            'function' == typeof t[1] &&
            (i = t[0], r = t[1], n = t[2], s = void 0), n || (n = !1);
            for (var d, p = i.split(' '), u = 0; u < this.length; u += 1) {
                var c = this[u];
                if (s) for (d = 0; d < p.length; d += 1) {
                    var h = p[d];
                    c.dom7LiveListeners ||
                    (c.dom7LiveListeners = {}), c.dom7LiveListeners[h] ||
                    (c.dom7LiveListeners[h] = []), c.dom7LiveListeners[h].push(
                        { listener: r, proxyListener: l }), c.addEventListener(
                        h, l, n);
                } else for (d = 0; d < p.length; d += 1) {
                    var v = p[d];
                    c.dom7Listeners ||
                    (c.dom7Listeners = {}), c.dom7Listeners[v] ||
                    (c.dom7Listeners[v] = []), c.dom7Listeners[v].push(
                        { listener: r, proxyListener: o }), c.addEventListener(
                        v, o, n);
                }
            }
            return this;
        },
        off: function () {
            for (var e = arguments.length, t = new Array(e), a = 0; a <
            e; a++) t[a] = arguments[a];
            var i = t[0], s = t[1], r = t[2], n = t[3];
            'function' == typeof t[1] &&
            (i = t[0], r = t[1], n = t[2], s = void 0), n || (n = !1);
            for (var l = i.split(' '), o = 0; o <
            l.length; o += 1) for (var d = l[o], p = 0; p <
            this.length; p += 1) {
                var u = this[p], c = void 0;
                if (!s && u.dom7Listeners ? c = u.dom7Listeners[d] : s &&
                    u.dom7LiveListeners && (c = u.dom7LiveListeners[d]), c &&
                c.length) for (var h = c.length - 1; h >= 0; h -= 1) {
                    var v = c[h];
                    r && v.listener === r || r && v.listener &&
                    v.listener.dom7proxy && v.listener.dom7proxy === r
                        ? (u.removeEventListener(d, v.proxyListener,
                        n), c.splice(h, 1))
                        : r ||
                        (u.removeEventListener(d, v.proxyListener, n), c.splice(
                            h, 1));
                }
            }
            return this;
        },
        trigger: function () {
            for (var e = l(), t = arguments.length, a = new Array(t), i = 0; i <
            t; i++) a[i] = arguments[i];
            for (var s = a[0].split(' '), r = a[1], n = 0; n <
            s.length; n += 1) for (var o = s[n], d = 0; d <
            this.length; d += 1) {
                var p = this[d];
                if (e.CustomEvent) {
                    var u = new e.CustomEvent(o,
                        { detail: r, bubbles: !0, cancelable: !0 });
                    p.dom7EventData = a.filter(
                        (function (e, t) {return t > 0;})), p.dispatchEvent(
                        u), p.dom7EventData = [], delete p.dom7EventData;
                }
            }
            return this;
        },
        transitionEnd: function (e) {
            var t = this;
            return e && t.on('transitionend', (function a (i) {
                i.target === this &&
                (e.call(this, i), t.off('transitionend', a));
            })), this;
        },
        outerWidth: function (e) {
            if (this.length > 0) {
                if (e) {
                    var t = this.styles();
                    return this[0].offsetWidth +
                        parseFloat(t.getPropertyValue('margin-right')) +
                        parseFloat(t.getPropertyValue('margin-left'));
                }
                return this[0].offsetWidth;
            }
            return null;
        },
        outerHeight: function (e) {
            if (this.length > 0) {
                if (e) {
                    var t = this.styles();
                    return this[0].offsetHeight +
                        parseFloat(t.getPropertyValue('margin-top')) +
                        parseFloat(t.getPropertyValue('margin-bottom'));
                }
                return this[0].offsetHeight;
            }
            return null;
        },
        styles: function () {
            var e = l();
            return this[0] ? e.getComputedStyle(this[0], null) : {};
        },
        offset: function () {
            if (this.length > 0) {
                var e = l(), t = r(), a = this[0],
                    i = a.getBoundingClientRect(), s = t.body,
                    n = a.clientTop || s.clientTop || 0,
                    o = a.clientLeft || s.clientLeft || 0,
                    d = a === e ? e.scrollY : a.scrollTop,
                    p = a === e ? e.scrollX : a.scrollLeft;
                return { top: i.top + d - n, left: i.left + p - o };
            }
            return null;
        },
        css: function (e, t) {
            var a, i = l();
            if (1 === arguments.length) {
                if ('string' != typeof e) {
                    for (a = 0; a <
                    this.length; a += 1) for (var s in e) this[a].style[s] = e[s];
                    return this;
                }
                if (this[0]) return i.getComputedStyle(this[0], null).
                    getPropertyValue(e);
            }
            if (2 === arguments.length && 'string' == typeof e) {
                for (a = 0; a < this.length; a += 1) this[a].style[e] = t;
                return this;
            }
            return this;
        },
        each: function (e) {
            return e ? (this.forEach(
                (function (t, a) {e.apply(t, [t, a]);})), this) : this;
        },
        html: function (e) {
            if (void 0 === e) return this[0]
                ? this[0].innerHTML
                : null;
            for (var t = 0; t < this.length; t += 1) this[t].innerHTML = e;
            return this;
        },
        text: function (e) {
            if (void 0 === e) return this[0]
                ? this[0].textContent.trim()
                : null;
            for (var t = 0; t < this.length; t += 1) this[t].textContent = e;
            return this;
        },
        is: function (e) {
            var t, a, i = l(), s = r(), n = this[0];
            if (!n || void 0 === e) return !1;
            if ('string' == typeof e) {
                if (n.matches) return n.matches(e);
                if (n.webkitMatchesSelector) return n.webkitMatchesSelector(e);
                if (n.msMatchesSelector) return n.msMatchesSelector(e);
                for (t = m(e), a = 0; a < t.length; a += 1) if (t[a] ===
                    n) return !0;
                return !1;
            }
            if (e === s) return n === s;
            if (e === i) return n === i;
            if (e.nodeType || e instanceof h) {
                for (t = e.nodeType
                    ? [e]
                    : e, a = 0; a < t.length; a += 1) if (t[a] === n) return !0;
                return !1;
            }
            return !1;
        },
        index: function () {
            var e, t = this[0];
            if (t) {
                for (e = 0; null !== (t = t.previousSibling);) 1 ===
                t.nodeType && (e += 1);
                return e;
            }
        },
        eq: function (e) {
            if (void 0 === e) return this;
            var t = this.length;
            if (e > t - 1) return m([]);
            if (e < 0) {
                var a = t + e;
                return m(a < 0 ? [] : [this[a]]);
            }
            return m([this[e]]);
        },
        append: function () {
            for (var e, t = r(), a = 0; a < arguments.length; a += 1) {
                e = a < 0 || arguments.length <= a ? void 0 : arguments[a];
                for (var i = 0; i < this.length; i += 1) if ('string' ==
                    typeof e) {
                    var s = t.createElement('div');
                    for (s.innerHTML = e; s.firstChild;) this[i].appendChild(
                        s.firstChild);
                } else if (e instanceof h) for (var n = 0; n <
                e.length; n += 1) this[i].appendChild(
                    e[n]); else this[i].appendChild(e);
            }
            return this;
        },
        prepend: function (e) {
            var t, a, i = r();
            for (t = 0; t < this.length; t += 1) if ('string' == typeof e) {
                var s = i.createElement('div');
                for (s.innerHTML = e, a = s.childNodes.length - 1; a >=
                0; a -= 1) this[t].insertBefore(s.childNodes[a],
                    this[t].childNodes[0]);
            } else if (e instanceof h) for (a = 0; a <
            e.length; a += 1) this[t].insertBefore(e[a],
                this[t].childNodes[0]); else this[t].insertBefore(e,
                this[t].childNodes[0]);
            return this;
        },
        next: function (e) {
            return this.length > 0 ? e
                ? this[0].nextElementSibling &&
                m(this[0].nextElementSibling).is(e) ? m(
                    [this[0].nextElementSibling]) : m([])
                : this[0].nextElementSibling
                    ? m([this[0].nextElementSibling])
                    : m([]) : m([]);
        },
        nextAll: function (e) {
            var t = [], a = this[0];
            if (!a) return m([]);
            for (; a.nextElementSibling;) {
                var i = a.nextElementSibling;
                e ? m(i).is(e) && t.push(i) : t.push(i), a = i;
            }
            return m(t);
        },
        prev: function (e) {
            if (this.length > 0) {
                var t = this[0];
                return e ? t.previousElementSibling &&
                m(t.previousElementSibling).is(e)
                    ? m([t.previousElementSibling])
                    : m([]) : t.previousElementSibling ? m(
                    [t.previousElementSibling]) : m([]);
            }
            return m([]);
        },
        prevAll: function (e) {
            var t = [], a = this[0];
            if (!a) return m([]);
            for (; a.previousElementSibling;) {
                var i = a.previousElementSibling;
                e ? m(i).is(e) && t.push(i) : t.push(i), a = i;
            }
            return m(t);
        },
        parent: function (e) {
            for (var t = [], a = 0; a < this.length; a += 1) null !==
            this[a].parentNode && (e
                ? m(this[a].parentNode).is(e) && t.push(this[a].parentNode)
                : t.push(this[a].parentNode));
            return m(t);
        },
        parents: function (e) {
            for (var t = [], a = 0; a <
            this.length; a += 1) for (var i = this[a].parentNode; i;) e ? m(i).
                is(e) && t.push(i) : t.push(i), i = i.parentNode;
            return m(t);
        },
        closest: function (e) {
            var t = this;
            return void 0 === e ? m([]) : (t.is(e) ||
            (t = t.parents(e).eq(0)), t);
        },
        find: function (e) {
            for (var t = [], a = 0; a < this.length; a += 1) {
                try {
                    var i = this[a].querySelectorAll(e);
                } catch (t) {console.log(e);}
                for (var s = 0; s < i.length; s += 1) t.push(i[s]);
            }
            return m(t);
        },
        children: function (e) {
            for (var t = [], a = 0; a <
            this.length; a += 1) for (var i = this[a].children, s = 0; s <
            i.length; s += 1) e && !m(i[s]).is(e) || t.push(i[s]);
            return m(t);
        },
        filter: function (e) {return m(f(this, e));},
        remove: function () {
            for (var e = 0; e < this.length; e += 1) this[e].parentNode &&
            this[e].parentNode.removeChild(this[e]);
            return this;
        },
    };

    function E (e, t) {return void 0 === t && (t = 0), setTimeout(e, t);}

    function x () {return Date.now();}

    function T (e, t) {
        void 0 === t && (t = 'x');
        var a, i, s, r = l(), n = function (e) {
            var t, a = l();
            return a.getComputedStyle &&
            (t = a.getComputedStyle(e, null)), !t && e.currentStyle &&
            (t = e.currentStyle), t || (t = e.style), t;
        }(e);
        return r.WebKitCSSMatrix
            ? ((i = n.transform || n.webkitTransform).split(',').length > 6 &&
            (i = i.split(', ').
                map((function (e) {return e.replace(',', '.');})).
                join(', ')), s = new r.WebKitCSSMatrix('none' === i ? '' : i))
            : a = (s = n.MozTransform || n.OTransform || n.MsTransform ||
                n.msTransform || n.transform || n.getPropertyValue('transform').
                    replace('translate(', 'matrix(1, 0, 0, 1,')).toString().
                split(','), 'x' === t &&
        (i = r.WebKitCSSMatrix ? s.m41 : 16 === a.length
            ? parseFloat(a[12])
            : parseFloat(a[4])), 'y' === t &&
        (i = r.WebKitCSSMatrix ? s.m42 : 16 === a.length
            ? parseFloat(a[13])
            : parseFloat(a[5])), i || 0;
    }

    function C (e) {
        return 'object' == typeof e && null !== e && e.constructor &&
            'Object' === Object.prototype.toString.call(e).slice(8, -1);
    }

    function S (e) {
        return 'undefined' != typeof window && void 0 !== window.HTMLElement
            ? e instanceof HTMLElement
            : e && (1 === e.nodeType || 11 === e.nodeType);
    }

    function M () {
        for (var e = Object(
            arguments.length <= 0 ? void 0 : arguments[0]), t = [
            '__proto__',
            'constructor',
            'prototype'], a = 1; a < arguments.length; a += 1) {
            var i = a < 0 || arguments.length <= a ? void 0 : arguments[a];
            if (null != i && !S(i)) for (var s = Object.keys(Object(i)).
                filter((function (e) {
                    return t.indexOf(e) < 0;
                })), r = 0, n = s.length; r < n; r += 1) {
                var l = s[r], o = Object.getOwnPropertyDescriptor(i, l);
                void 0 !== o && o.enumerable && (C(e[l]) && C(i[l])
                    ? i[l].__swiper__ ? e[l] = i[l] : M(e[l], i[l])
                    : !C(e[l]) && C(i[l]) ? (e[l] = {}, i[l].__swiper__
                        ? e[l] = i[l]
                        : M(e[l], i[l])) : e[l] = i[l]);
            }
        }
        return e;
    }

    function z (e, t) {
        Object.keys(t).
            forEach((function (a) {
                C(t[a]) && Object.keys(t[a]).
                    forEach((function (i) {
                        'function' == typeof t[a][i] &&
                        (t[a][i] = t[a][i].bind(e));
                    })), e[a] = t[a];
            }));
    }

    function P (e) {
        return void 0 === e && (e = ''), '.' +
        e.trim().replace(/([\.:\/])/g, '\\$1').replace(/ /g, '.');
    }

    function k (e, t, a, i) {
        var s = r();
        return a && Object.keys(i).
            forEach((function (a) {
                if (!t[a] && !0 === t.auto) {
                    var r = s.createElement('div');
                    r.className = i[a], e.append(r), t[a] = r;
                }
            })), t;
    }

    function $ () {
        return g || (g = function () {
            var e = l(), t = r();
            return {
                touch: !!('ontouchstart' in e || e.DocumentTouch && t instanceof
                    e.DocumentTouch),
                pointerEvents: !!e.PointerEvent && 'maxTouchPoints' in
                    e.navigator && e.navigator.maxTouchPoints >= 0,
                observer: 'MutationObserver' in e || 'WebkitMutationObserver' in
                    e,
                passiveListener: function () {
                    var t = !1;
                    try {
                        var a = Object.defineProperty({}, 'passive',
                            { get: function () {t = !0;} });
                        e.addEventListener('testPassiveListener', null, a);
                    } catch (e) {}
                    return t;
                }(),
                gestures: 'ongesturestart' in e,
            };
        }()), g;
    }

    function L (e) {
        return void 0 === e && (e = {}), b || (b = function (e) {
            var t = (void 0 === e ? {} : e).userAgent, a = $(), i = l(),
                s = i.navigator.platform, r = t || i.navigator.userAgent,
                n = { ios: !1, android: !1 }, o = i.screen.width,
                d = i.screen.height, p = r.match(/(Android);?[\s\/]+([\d.]+)?/),
                u = r.match(/(iPad).*OS\s([\d_]+)/),
                c = r.match(/(iPod)(.*OS\s([\d_]+))?/),
                h = !u && r.match(/(iPhone\sOS|iOS)\s([\d_]+)/),
                v = 'Win32' === s, f = 'MacIntel' === s;
            return !u && f && a.touch && [
                '1024x1366',
                '1366x1024',
                '834x1194',
                '1194x834',
                '834x1112',
                '1112x834',
                '768x1024',
                '1024x768',
                '820x1180',
                '1180x820',
                '810x1080',
                '1080x810'].indexOf(o + 'x' + d) >= 0 &&
            ((u = r.match(/(Version)\/([\d.]+)/)) ||
            (u = [0, 1, '13_0_0']), f = !1), p && !v &&
            (n.os = 'android', n.android = !0), (u || h || c) &&
            (n.os = 'ios', n.ios = !0), n;
        }(e)), b;
    }

    function I () {
        return w || (w = function () {
            var e, t = l();
            return {
                isEdge: !!t.navigator.userAgent.match(/Edge/g),
                isSafari: (e = t.navigator.userAgent.toLowerCase(), e.indexOf(
                    'safari') >= 0 && e.indexOf('chrome') < 0 &&
                e.indexOf('android') < 0),
                isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(
                    t.navigator.userAgent),
            };
        }()), w;
    }

    Object.keys(y).
        forEach((function (e) {
            Object.defineProperty(m.fn, e, { value: y[e], writable: !0 });
        }));
    var O = {
        name: 'resize', create: function () {
            var e = this;
            M(e, {
                resize: {
                    observer: null,
                    createObserver: function () {
                        e && !e.destroyed && e.initialized &&
                        (e.resize.observer = new ResizeObserver((function (t) {
                            var a = e.width, i = e.height, s = a, r = i;
                            t.forEach((function (t) {
                                var a = t.contentBoxSize, i = t.contentRect,
                                    n = t.target;
                                n && n !== e.el ||
                                (s = i ? i.width : (a[0] || a).inlineSize, r = i
                                    ? i.height
                                    : (a[0] || a).blockSize);
                            })), s === a && r === i || e.resize.resizeHandler();
                        })), e.resize.observer.observe(e.el));
                    },
                    removeObserver: function () {
                        e.resize.observer && e.resize.observer.unobserve &&
                        e.el && (e.resize.observer.unobserve(
                            e.el), e.resize.observer = null);
                    },
                    resizeHandler: function () {
                        e && !e.destroyed && e.initialized &&
                        (e.emit('beforeResize'), e.emit('resize'));
                    },
                    orientationChangeHandler: function () {
                        e && !e.destroyed && e.initialized &&
                        e.emit('orientationchange');
                    },
                },
            });
        }, on: {
            init: function (e) {
                var t = l();
                e.params.resizeObserver && void 0 !== l().ResizeObserver
                    ? e.resize.createObserver()
                    : (t.addEventListener('resize',
                    e.resize.resizeHandler), t.addEventListener(
                    'orientationchange', e.resize.orientationChangeHandler));
            }, destroy: function (e) {
                var t = l();
                e.resize.removeObserver(), t.removeEventListener('resize',
                    e.resize.resizeHandler), t.removeEventListener(
                    'orientationchange', e.resize.orientationChangeHandler);
            },
        },
    }, A = {
        attach: function (e, t) {
            void 0 === t && (t = {});
            var a = l(), i = this,
                s = new (a.MutationObserver || a.WebkitMutationObserver)(
                    (function (e) {
                        if (1 !== e.length) {
                            var t = function () {
                                i.emit('observerUpdate', e[0]);
                            };
                            a.requestAnimationFrame
                                ? a.requestAnimationFrame(t)
                                : a.setTimeout(t, 0);
                        } else i.emit('observerUpdate', e[0]);
                    }));
            s.observe(e, {
                attributes: void 0 === t.attributes || t.attributes,
                childList: void 0 === t.childList || t.childList,
                characterData: void 0 === t.characterData || t.characterData,
            }), i.observer.observers.push(s);
        },
        init: function () {
            var e = this;
            if (e.support.observer && e.params.observer) {
                if (e.params.observeParents) for (var t = e.$el.parents(), a = 0; a <
                t.length; a += 1) e.observer.attach(t[a]);
                e.observer.attach(e.$el[0],
                    { childList: e.params.observeSlideChildren }), e.observer.attach(
                    e.$wrapperEl[0], { attributes: !1 });
            }
        },
        destroy: function () {
            this.observer.observers.forEach(
                (function (e) {e.disconnect();})), this.observer.observers = [];
        },
    }, D = {
        name: 'observer',
        params: { observer: !1, observeParents: !1, observeSlideChildren: !1 },
        create: function () {
            z(this, { observer: t({}, A, { observers: [] }) });
        },
        on: {
            init: function (e) {e.observer.init();},
            destroy: function (e) {e.observer.destroy();},
        },
    };

    function N (e) {
        var t = this, a = r(), i = l(), s = t.touchEventsData, n = t.params,
            o = t.touches;
        if (t.enabled && (!t.animating || !n.preventInteractionOnTransition)) {
            var d = e;
            d.originalEvent && (d = d.originalEvent);
            var p = m(d.target);
            if (('wrapper' !== n.touchEventsTarget ||
                p.closest(t.wrapperEl).length) &&
                (s.isTouchEvent = 'touchstart' === d.type, (s.isTouchEvent ||
                    !('which' in d) || 3 !== d.which) &&
                !(!s.isTouchEvent && 'button' in d && d.button > 0 ||
                    s.isTouched && s.isMoved))) {
                !!n.noSwipingClass && '' !== n.noSwipingClass && d.target &&
                d.target.shadowRoot && e.path && e.path[0] &&
                (p = m(e.path[0]));
                var u = n.noSwipingSelector ? n.noSwipingSelector : '.' +
                    n.noSwipingClass, c = !(!d.target || !d.target.shadowRoot);
                if (n.noSwiping && (c ? function (e, t) {
                    return void 0 === t && (t = this), function t (a) {
                        return a && a !== r() && a !== l() ? (a.assignedSlot &&
                        (a = a.assignedSlot), a.closest(e) ||
                        t(a.getRootNode().host)) : null;
                    }(t);
                }(u, d.target) : p.closest(
                    u)[0])) t.allowClick = !0; else if (!n.swipeHandler ||
                    p.closest(n.swipeHandler)[0]) {
                    o.currentX = 'touchstart' === d.type
                        ? d.targetTouches[0].pageX
                        : d.pageX, o.currentY = 'touchstart' === d.type
                        ? d.targetTouches[0].pageY
                        : d.pageY;
                    var h = o.currentX, v = o.currentY,
                        f = n.edgeSwipeDetection || n.iOSEdgeSwipeDetection,
                        g = n.edgeSwipeThreshold || n.iOSEdgeSwipeThreshold;
                    if (f && (h <= g || h >= i.innerWidth - g)) {
                        if ('prevent' !== f) return;
                        e.preventDefault();
                    }
                    if (M(s, {
                        isTouched: !0,
                        isMoved: !1,
                        allowTouchCallbacks: !0,
                        isScrolling: void 0,
                        startMoving: void 0,
                    }), o.startX = h, o.startY = v, s.touchStartTime = x(), t.allowClick = !0, t.updateSize(), t.swipeDirection = void 0, n.threshold >
                    0 && (s.allowThresholdMove = !1), 'touchstart' !== d.type) {
                        var b = !0;
                        p.is(s.focusableElements) &&
                        (b = !1), a.activeElement &&
                        m(a.activeElement).is(s.focusableElements) &&
                        a.activeElement !== p[0] && a.activeElement.blur();
                        var w = b && t.allowTouchMove &&
                            n.touchStartPreventDefault;
                        !n.touchStartForcePreventDefault && !w ||
                        p[0].isContentEditable || d.preventDefault();
                    }
                    t.emit('touchStart', d);
                }
            }
        }
    }

    function G (e) {
        var t = r(), a = this, i = a.touchEventsData, s = a.params,
            n = a.touches, l = a.rtlTranslate;
        if (a.enabled) {
            var o = e;
            if (o.originalEvent && (o = o.originalEvent), i.isTouched) {
                if (!i.isTouchEvent || 'touchmove' === o.type) {
                    var d = 'touchmove' === o.type && o.targetTouches &&
                        (o.targetTouches[0] || o.changedTouches[0]),
                        p = 'touchmove' === o.type ? d.pageX : o.pageX,
                        u = 'touchmove' === o.type ? d.pageY : o.pageY;
                    if (o.preventedByNestedSwiper) return n.startX = p, void (n.startY = u);
                    if (!a.allowTouchMove) return a.allowClick = !1, void (i.isTouched &&
                        (M(n, {
                            startX: p,
                            startY: u,
                            currentX: p,
                            currentY: u,
                        }), i.touchStartTime = x()));
                    if (i.isTouchEvent && s.touchReleaseOnEdges &&
                        !s.loop) if (a.isVertical()) {
                        if (u < n.startY && a.translate <= a.maxTranslate() ||
                            u > n.startY && a.translate >=
                            a.minTranslate()) return i.isTouched = !1, void (i.isMoved = !1);
                    } else if (p < n.startX && a.translate <=
                        a.maxTranslate() || p > n.startX && a.translate >=
                        a.minTranslate()) return;
                    if (i.isTouchEvent && t.activeElement && o.target ===
                        t.activeElement && m(o.target).
                            is(i.focusableElements)) return i.isMoved = !0, void (a.allowClick = !1);
                    if (i.allowTouchCallbacks &&
                    a.emit('touchMove', o), !(o.targetTouches &&
                        o.targetTouches.length > 1)) {
                        n.currentX = p, n.currentY = u;
                        var c = n.currentX - n.startX,
                            h = n.currentY - n.startY;
                        if (!(a.params.threshold &&
                            Math.sqrt(Math.pow(c, 2) + Math.pow(h, 2)) <
                            a.params.threshold)) {
                            var v;
                            if (void 0 === i.isScrolling) a.isHorizontal() &&
                            n.currentY === n.startY || a.isVertical() &&
                            n.currentX === n.startX ? i.isScrolling = !1 : c *
                                c + h * h >= 25 && (v = 180 *
                                    Math.atan2(Math.abs(h), Math.abs(c)) /
                                    Math.PI, i.isScrolling = a.isHorizontal()
                                    ? v > s.touchAngle
                                    : 90 - v > s.touchAngle);
                            if (i.isScrolling &&
                            a.emit('touchMoveOpposite', o), void 0 ===
                            i.startMoving &&
                            (n.currentX === n.startX && n.currentY ===
                                n.startY ||
                                (i.startMoving = !0)), i.isScrolling) i.isTouched = !1; else if (i.startMoving) {
                                a.allowClick = !1, !s.cssMode && o.cancelable &&
                                o.preventDefault(), s.touchMoveStopPropagation &&
                                !s.nested && o.stopPropagation(), i.isMoved ||
                                (s.loop &&
                                a.loopFix(), i.startTranslate = a.getTranslate(), a.setTransition(
                                    0), a.animating && a.$wrapperEl.trigger(
                                    'webkitTransitionEnd transitionend'), i.allowMomentumBounce = !1, !s.grabCursor ||
                                !0 !== a.allowSlideNext && !0 !==
                                a.allowSlidePrev || a.setGrabCursor(!0), a.emit(
                                    'sliderFirstMove', o)), a.emit('sliderMove',
                                    o), i.isMoved = !0;
                                var f = a.isHorizontal() ? c : h;
                                n.diff = f, f *= s.touchRatio, l &&
                                (f = -f), a.swipeDirection = f > 0
                                    ? 'prev'
                                    : 'next', i.currentTranslate = f +
                                    i.startTranslate;
                                var g = !0, b = s.resistanceRatio;
                                if (s.touchReleaseOnEdges && (b = 0), f > 0 &&
                                i.currentTranslate > a.minTranslate()
                                    ? (g = !1, s.resistance &&
                                    (i.currentTranslate = a.minTranslate() - 1 +
                                        Math.pow(-a.minTranslate() +
                                            i.startTranslate + f, b)))
                                    : f < 0 && i.currentTranslate <
                                    a.maxTranslate() && (g = !1, s.resistance &&
                                    (i.currentTranslate = a.maxTranslate() + 1 -
                                        Math.pow(a.maxTranslate() -
                                            i.startTranslate - f, b))), g &&
                                (o.preventedByNestedSwiper = !0), !a.allowSlideNext &&
                                'next' === a.swipeDirection &&
                                i.currentTranslate < i.startTranslate &&
                                (i.currentTranslate = i.startTranslate), !a.allowSlidePrev &&
                                'prev' === a.swipeDirection &&
                                i.currentTranslate > i.startTranslate &&
                                (i.currentTranslate = i.startTranslate), a.allowSlidePrev ||
                                a.allowSlideNext ||
                                (i.currentTranslate = i.startTranslate), s.threshold >
                                0) {
                                    if (!(Math.abs(f) > s.threshold ||
                                        i.allowThresholdMove)) return void (i.currentTranslate = i.startTranslate);
                                    if (!i.allowThresholdMove) return i.allowThresholdMove = !0, n.startX = n.currentX, n.startY = n.currentY, i.currentTranslate = i.startTranslate, void (n.diff = a.isHorizontal()
                                        ? n.currentX - n.startX
                                        : n.currentY - n.startY);
                                }
                                s.followFinger && !s.cssMode &&
                                ((s.freeMode || s.watchSlidesProgress ||
                                    s.watchSlidesVisibility) &&
                                (a.updateActiveIndex(), a.updateSlidesClasses()), s.freeMode &&
                                (0 === i.velocities.length && i.velocities.push(
                                    {
                                        position: n[a.isHorizontal()
                                            ? 'startX'
                                            : 'startY'], time: i.touchStartTime,
                                    }), i.velocities.push({
                                    position: n[a.isHorizontal()
                                        ? 'currentX'
                                        : 'currentY'], time: x(),
                                })), a.updateProgress(
                                    i.currentTranslate), a.setTranslate(
                                    i.currentTranslate));
                            }
                        }
                    }
                }
            } else i.startMoving && i.isScrolling &&
            a.emit('touchMoveOpposite', o);
        }
    }

    function B (e) {
        var t = this, a = t.touchEventsData, i = t.params, s = t.touches,
            r = t.rtlTranslate, n = t.$wrapperEl, l = t.slidesGrid,
            o = t.snapGrid;
        if (t.enabled) {
            var d = e;
            if (d.originalEvent &&
            (d = d.originalEvent), a.allowTouchCallbacks && t.emit('touchEnd',
                d), a.allowTouchCallbacks = !1, !a.isTouched) return a.isMoved &&
            i.grabCursor &&
            t.setGrabCursor(!1), a.isMoved = !1, void (a.startMoving = !1);
            i.grabCursor && a.isMoved && a.isTouched &&
            (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) &&
            t.setGrabCursor(!1);
            var p, u = x(), c = u - a.touchStartTime;
            if (t.allowClick &&
            (t.updateClickedSlide(d), t.emit('tap click', d), c < 300 && u -
            a.lastClickTime < 300 &&
            t.emit('doubleTap doubleClick', d)), a.lastClickTime = x(), E(
                (function () {
                    t.destroyed || (t.allowClick = !0);
                })), !a.isTouched || !a.isMoved || !t.swipeDirection || 0 ===
            s.diff || a.currentTranslate ===
            a.startTranslate) return a.isTouched = !1, a.isMoved = !1, void (a.startMoving = !1);
            if (a.isTouched = !1, a.isMoved = !1, a.startMoving = !1, p = i.followFinger
                ? r ? t.translate : -t.translate
                : -a.currentTranslate, !i.cssMode) if (i.freeMode) {
                if (p < -t.minTranslate()) return void t.slideTo(t.activeIndex);
                if (p > -t.maxTranslate()) return void (t.slides.length <
                o.length ? t.slideTo(o.length - 1) : t.slideTo(
                    t.slides.length - 1));
                if (i.freeModeMomentum) {
                    if (a.velocities.length > 1) {
                        var h = a.velocities.pop(), v = a.velocities.pop(),
                            f = h.position - v.position, m = h.time - v.time;
                        t.velocity = f / m, t.velocity /= 2, Math.abs(
                            t.velocity) < i.freeModeMinimumVelocity &&
                        (t.velocity = 0), (m > 150 || x() - h.time > 300) &&
                        (t.velocity = 0);
                    } else t.velocity = 0;
                    t.velocity *= i.freeModeMomentumVelocityRatio, a.velocities.length = 0;
                    var g = 1e3 * i.freeModeMomentumRatio, b = t.velocity * g,
                        w = t.translate + b;
                    r && (w = -w);
                    var y, T, C = !1, S = 20 * Math.abs(t.velocity) *
                        i.freeModeMomentumBounceRatio;
                    if (w < t.maxTranslate()) i.freeModeMomentumBounce
                        ? (w + t.maxTranslate() < -S && (w = t.maxTranslate() -
                            S), y = t.maxTranslate(), C = !0, a.allowMomentumBounce = !0)
                        : w = t.maxTranslate(), i.loop && i.centeredSlides &&
                    (T = !0); else if (w >
                        t.minTranslate()) i.freeModeMomentumBounce
                        ? (w - t.minTranslate() > S && (w = t.minTranslate() +
                            S), y = t.minTranslate(), C = !0, a.allowMomentumBounce = !0)
                        : w = t.minTranslate(), i.loop && i.centeredSlides &&
                    (T = !0); else if (i.freeModeSticky) {
                        for (var M, z = 0; z < o.length; z += 1) if (o[z] >
                            -w) {
                            M = z;
                            break;
                        }
                        w = -(w = Math.abs(o[M] - w) < Math.abs(o[M - 1] - w) ||
                        'next' === t.swipeDirection ? o[M] : o[M - 1]);
                    }
                    if (T &&
                    t.once('transitionEnd', (function () {t.loopFix();})), 0 !==
                    t.velocity) {
                        if (g = r
                            ? Math.abs((-w - t.translate) / t.velocity)
                            : Math.abs((w - t.translate) /
                                t.velocity), i.freeModeSticky) {
                            var P = Math.abs((r ? -w : w) - t.translate),
                                k = t.slidesSizesGrid[t.activeIndex];
                            g = P < k ? i.speed : P < 2 * k
                                ? 1.5 * i.speed
                                : 2.5 * i.speed;
                        }
                    } else if (i.freeModeSticky) return void t.slideToClosest();
                    i.freeModeMomentumBounce && C ? (t.updateProgress(
                        y), t.setTransition(g), t.setTranslate(
                        w), t.transitionStart(!0,
                        t.swipeDirection), t.animating = !0, n.transitionEnd(
                        (function () {
                            t && !t.destroyed && a.allowMomentumBounce &&
                            (t.emit('momentumBounce'), t.setTransition(
                                i.speed), setTimeout((function () {
                                t.setTranslate(y), n.transitionEnd(
                                    (function () {
                                        t && !t.destroyed && t.transitionEnd();
                                    }));
                            }), 0));
                        }))) : t.velocity ? (t.updateProgress(
                        w), t.setTransition(g), t.setTranslate(
                        w), t.transitionStart(!0,
                        t.swipeDirection), t.animating ||
                    (t.animating = !0, n.transitionEnd((function () {
                        t && !t.destroyed && t.transitionEnd();
                    })))) : (t.emit(
                        '_freeModeNoMomentumRelease'), t.updateProgress(
                        w)), t.updateActiveIndex(), t.updateSlidesClasses();
                } else {
                    if (i.freeModeSticky) return void t.slideToClosest();
                    i.freeMode && t.emit('_freeModeNoMomentumRelease');
                }
                (!i.freeModeMomentum || c >= i.longSwipesMs) &&
                (t.updateProgress(), t.updateActiveIndex(), t.updateSlidesClasses());
            } else {
                for (var $ = 0, L = t.slidesSizesGrid[0], I = 0; I <
                l.length; I += I < i.slidesPerGroupSkip
                    ? 1
                    : i.slidesPerGroup) {
                    var O = I < i.slidesPerGroupSkip - 1
                        ? 1
                        : i.slidesPerGroup;
                    void 0 !== l[I + O] ? p >= l[I] && p < l[I + O] &&
                        ($ = I, L = l[I + O] - l[I]) : p >= l[I] &&
                        ($ = I, L = l[l.length - 1] - l[l.length - 2]);
                }
                var A = (p - l[$]) / L,
                    D = $ < i.slidesPerGroupSkip - 1 ? 1 : i.slidesPerGroup;
                if (c > i.longSwipesMs) {
                    if (!i.longSwipes) return void t.slideTo(t.activeIndex);
                    'next' === t.swipeDirection &&
                    (A >= i.longSwipesRatio ? t.slideTo($ + D) : t.slideTo(
                        $)), 'prev' === t.swipeDirection &&
                    (A > 1 - i.longSwipesRatio ? t.slideTo($ + D) : t.slideTo(
                        $));
                } else {
                    if (!i.shortSwipes) return void t.slideTo(t.activeIndex);
                    t.navigation &&
                    (d.target === t.navigation.nextEl || d.target ===
                        t.navigation.prevEl) ? d.target === t.navigation.nextEl
                        ? t.slideTo($ + D)
                        : t.slideTo($) : ('next' === t.swipeDirection &&
                    t.slideTo($ + D), 'prev' === t.swipeDirection &&
                    t.slideTo($));
                }
            }
        }
    }

    function H () {
        var e = this, t = e.params, a = e.el;
        if (!a || 0 !== a.offsetWidth) {
            t.breakpoints && e.setBreakpoint();
            var i = e.allowSlideNext, s = e.allowSlidePrev, r = e.snapGrid;
            e.allowSlideNext = !0, e.allowSlidePrev = !0, e.updateSize(), e.updateSlides(), e.updateSlidesClasses(), ('auto' ===
                t.slidesPerView || t.slidesPerView > 1) && e.isEnd &&
            !e.isBeginning && !e.params.centeredSlides ? e.slideTo(
                e.slides.length - 1, 0, !1, !0) : e.slideTo(e.activeIndex, 0,
                !1, !0), e.autoplay && e.autoplay.running &&
            e.autoplay.paused &&
            e.autoplay.run(), e.allowSlidePrev = s, e.allowSlideNext = i, e.params.watchOverflow &&
            r !== e.snapGrid && e.checkOverflow();
        }
    }

    function R (e) {
        var t = this;
        t.enabled && (t.allowClick || (t.params.preventClicks &&
        e.preventDefault(), t.params.preventClicksPropagation && t.animating &&
        (e.stopPropagation(), e.stopImmediatePropagation())));
    }

    function X () {
        var e = this, t = e.wrapperEl, a = e.rtlTranslate;
        if (e.enabled) {
            e.previousTranslate = e.translate, e.isHorizontal()
                ? e.translate = a
                    ? t.scrollWidth - t.offsetWidth - t.scrollLeft
                    : -t.scrollLeft
                : e.translate = -t.scrollTop, -0 === e.translate &&
            (e.translate = 0), e.updateActiveIndex(), e.updateSlidesClasses();
            var i = e.maxTranslate() - e.minTranslate();
            (0 === i ? 0 : (e.translate - e.minTranslate()) / i) !==
            e.progress &&
            e.updateProgress(a ? -e.translate : e.translate), e.emit(
                'setTranslate', e.translate, !1);
        }
    }

    var Y = !1;

    function V () {}

    var W = {
        init: !0,
        direction: 'horizontal',
        touchEventsTarget: 'container',
        initialSlide: 0,
        speed: 300,
        cssMode: !1,
        updateOnWindowResize: !0,
        resizeObserver: !1,
        nested: !1,
        createElements: !1,
        enabled: !0,
        focusableElements: 'input, select, option, textarea, button, video, label',
        width: null,
        height: null,
        preventInteractionOnTransition: !1,
        userAgent: null,
        url: null,
        edgeSwipeDetection: !1,
        edgeSwipeThreshold: 20,
        freeMode: !1,
        freeModeMomentum: !0,
        freeModeMomentumRatio: 1,
        freeModeMomentumBounce: !0,
        freeModeMomentumBounceRatio: 1,
        freeModeMomentumVelocityRatio: 1,
        freeModeSticky: !1,
        freeModeMinimumVelocity: .02,
        autoHeight: !1,
        setWrapperSize: !1,
        virtualTranslate: !1,
        effect: 'slide',
        breakpoints: void 0,
        breakpointsBase: 'window',
        spaceBetween: 0,
        slidesPerView: 1,
        slidesPerColumn: 1,
        slidesPerColumnFill: 'column',
        slidesPerGroup: 1,
        slidesPerGroupSkip: 0,
        centeredSlides: !1,
        centeredSlidesBounds: !1,
        slidesOffsetBefore: 0,
        slidesOffsetAfter: 0,
        normalizeSlideIndex: !0,
        centerInsufficientSlides: !1,
        watchOverflow: !1,
        roundLengths: !1,
        touchRatio: 1,
        touchAngle: 45,
        simulateTouch: !0,
        shortSwipes: !0,
        longSwipes: !0,
        longSwipesRatio: .5,
        longSwipesMs: 300,
        followFinger: !0,
        allowTouchMove: !0,
        threshold: 0,
        touchMoveStopPropagation: !1,
        touchStartPreventDefault: !0,
        touchStartForcePreventDefault: !1,
        touchReleaseOnEdges: !1,
        uniqueNavElements: !0,
        resistance: !0,
        resistanceRatio: .85,
        watchSlidesProgress: !1,
        watchSlidesVisibility: !1,
        grabCursor: !1,
        preventClicks: !0,
        preventClicksPropagation: !0,
        slideToClickedSlide: !1,
        preloadImages: !0,
        updateOnImagesReady: !0,
        loop: !1,
        loopAdditionalSlides: 0,
        loopedSlides: null,
        loopFillGroupWithBlank: !1,
        loopPreventsSlide: !0,
        allowSlidePrev: !0,
        allowSlideNext: !0,
        swipeHandler: null,
        noSwiping: !0,
        noSwipingClass: 'swiper-no-swiping',
        noSwipingSelector: null,
        passiveListeners: !0,
        containerModifierClass: 'swiper-container-',
        slideClass: 'swiper-slide',
        slideBlankClass: 'swiper-slide-invisible-blank',
        slideActiveClass: 'swiper-slide-active',
        slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
        slideVisibleClass: 'swiper-slide-visible',
        slideDuplicateClass: 'swiper-slide-duplicate',
        slideNextClass: 'swiper-slide-next',
        slideDuplicateNextClass: 'swiper-slide-duplicate-next',
        slidePrevClass: 'swiper-slide-prev',
        slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
        wrapperClass: 'swiper-wrapper',
        runCallbacksOnInit: !0,
        _emitClasses: !1,
    }, F = {
        modular: {
            useParams: function (e) {
                var t = this;
                t.modules && Object.keys(t.modules).
                    forEach((function (a) {
                        var i = t.modules[a];
                        i.params && M(e, i.params);
                    }));
            }, useModules: function (e) {
                void 0 === e && (e = {});
                var t = this;
                t.modules && Object.keys(t.modules).
                    forEach((function (a) {
                        var i = t.modules[a], s = e[a] || {};
                        i.on && t.on && Object.keys(i.on).
                            forEach(
                                (function (e) {t.on(e, i.on[e]);})), i.create &&
                        i.create.bind(t)(s);
                    }));
            },
        },
        eventsEmitter: {
            on: function (e, t, a) {
                var i = this;
                if ('function' != typeof t) return i;
                var s = a ? 'unshift' : 'push';
                return e.split(' ').
                    forEach((function (e) {
                        i.eventsListeners[e] ||
                        (i.eventsListeners[e] = []), i.eventsListeners[e][s](t);
                    })), i;
            }, once: function (e, t, a) {
                var i = this;
                if ('function' != typeof t) return i;

                function s () {
                    i.off(e, s), s.__emitterProxy && delete s.__emitterProxy;
                    for (var a = arguments.length, r = new Array(a), n = 0; n <
                    a; n++) r[n] = arguments[n];
                    t.apply(i, r);
                }

                return s.__emitterProxy = t, i.on(e, s, a);
            }, onAny: function (e, t) {
                var a = this;
                if ('function' != typeof e) return a;
                var i = t ? 'unshift' : 'push';
                return a.eventsAnyListeners.indexOf(e) < 0 &&
                a.eventsAnyListeners[i](e), a;
            }, offAny: function (e) {
                var t = this;
                if (!t.eventsAnyListeners) return t;
                var a = t.eventsAnyListeners.indexOf(e);
                return a >= 0 && t.eventsAnyListeners.splice(a, 1), t;
            }, off: function (e, t) {
                var a = this;
                return a.eventsListeners ? (e.split(' ').
                    forEach((function (e) {
                        void 0 === t
                            ? a.eventsListeners[e] = []
                            : a.eventsListeners[e] &&
                            a.eventsListeners[e].forEach((function (i, s) {
                                (i === t || i.__emitterProxy &&
                                    i.__emitterProxy === t) &&
                                a.eventsListeners[e].splice(s, 1);
                            }));
                    })), a) : a;
            }, emit: function () {
                var e, t, a, i = this;
                if (!i.eventsListeners) return i;
                for (var s = arguments.length, r = new Array(s), n = 0; n <
                s; n++) r[n] = arguments[n];
                'string' == typeof r[0] || Array.isArray(r[0])
                    ? (e = r[0], t = r.slice(1, r.length), a = i)
                    : (e = r[0].events, t = r[0].data, a = r[0].context ||
                    i), t.unshift(a);
                var l = Array.isArray(e) ? e : e.split(' ');
                return l.forEach((function (e) {
                    i.eventsAnyListeners && i.eventsAnyListeners.length &&
                    i.eventsAnyListeners.forEach((function (i) {
                        i.apply(a, [e].concat(t));
                    })), i.eventsListeners && i.eventsListeners[e] &&
                    i.eventsListeners[e].forEach(
                        (function (e) {e.apply(a, t);}));
                })), i;
            },
        },
        update: {
            updateSize: function () {
                var e, t, a = this, i = a.$el;
                e = void 0 !== a.params.width && null !== a.params.width
                    ? a.params.width
                    : i[0].clientWidth, t = void 0 !== a.params.height &&
                null !== a.params.height
                    ? a.params.height
                    : i[0].clientHeight, 0 === e && a.isHorizontal() || 0 ===
                t && a.isVertical() ||
                (e = e - parseInt(i.css('padding-left') || 0, 10) -
                    parseInt(i.css('padding-right') || 0, 10), t = t -
                    parseInt(i.css('padding-top') || 0, 10) -
                    parseInt(i.css('padding-bottom') || 0, 10), Number.isNaN(
                    e) && (e = 0), Number.isNaN(t) && (t = 0), M(a,
                    { width: e, height: t, size: a.isHorizontal() ? e : t }));
            },
            updateSlides: function () {
                var e = this;

                function t (t) {
                    return e.isHorizontal() ? t : {
                        width: 'height',
                        'margin-top': 'margin-left',
                        'margin-bottom ': 'margin-right',
                        'margin-left': 'margin-top',
                        'margin-right': 'margin-bottom',
                        'padding-left': 'padding-top',
                        'padding-right': 'padding-bottom',
                        marginRight: 'marginBottom',
                    }[t];
                }

                function a (e, a) {
                    return parseFloat(e.getPropertyValue(t(a)) || 0);
                }

                var i = e.params, s = e.$wrapperEl, r = e.size,
                    n = e.rtlTranslate, l = e.wrongRTL,
                    o = e.virtual && i.virtual.enabled,
                    d = o ? e.virtual.slides.length : e.slides.length,
                    p = s.children('.' + e.params.slideClass),
                    u = o ? e.virtual.slides.length : p.length, c = [], h = [],
                    v = [], f = i.slidesOffsetBefore;
                'function' == typeof f && (f = i.slidesOffsetBefore.call(e));
                var m = i.slidesOffsetAfter;
                'function' == typeof m && (m = i.slidesOffsetAfter.call(e));
                var g = e.snapGrid.length, b = e.slidesGrid.length,
                    w = i.spaceBetween, y = -f, E = 0, x = 0;
                if (void 0 !== r) {
                    var T, C;
                    'string' == typeof w && w.indexOf('%') >= 0 &&
                    (w = parseFloat(w.replace('%', '')) / 100 *
                        r), e.virtualSize = -w, n
                        ? p.css(
                            { marginLeft: '', marginBottom: '', marginTop: '' })
                        : p.css({
                            marginRight: '',
                            marginBottom: '',
                            marginTop: '',
                        }), i.slidesPerColumn > 1 &&
                    (T = Math.floor(u / i.slidesPerColumn) === u /
                    e.params.slidesPerColumn ? u : Math.ceil(
                        u / i.slidesPerColumn) * i.slidesPerColumn, 'auto' !==
                    i.slidesPerView && 'row' === i.slidesPerColumnFill &&
                    (T = Math.max(T, i.slidesPerView * i.slidesPerColumn)));
                    for (var S, z, P, k = i.slidesPerColumn, $ = T /
                        k, L = Math.floor(u / i.slidesPerColumn), I = 0; I <
                         u; I += 1) {
                        C = 0;
                        var O = p.eq(I);
                        if (i.slidesPerColumn > 1) {
                            var A = void 0, D = void 0, N = void 0;
                            if ('row' === i.slidesPerColumnFill &&
                                i.slidesPerGroup > 1) {
                                var G = Math.floor(
                                    I / (i.slidesPerGroup * i.slidesPerColumn)),
                                    B = I - i.slidesPerColumn *
                                        i.slidesPerGroup * G,
                                    H = 0 === G ? i.slidesPerGroup : Math.min(
                                        Math.ceil(
                                            (u - G * k * i.slidesPerGroup) / k),
                                        i.slidesPerGroup);
                                A = (D = B - (N = Math.floor(B / H)) * H + G *
                                    i.slidesPerGroup) + N * T / k, O.css({
                                    '-webkit-box-ordinal-group': A,
                                    '-moz-box-ordinal-group': A,
                                    '-ms-flex-order': A,
                                    '-webkit-order': A,
                                    order: A,
                                });
                            } else 'column' === i.slidesPerColumnFill ? (N = I -
                                (D = Math.floor(I / k)) * k, (D > L || D ===
                                L && N === k - 1) && (N += 1) >= k &&
                            (N = 0, D += 1)) : D = I - (N = Math.floor(I / $)) *
                                $;
                            O.css(t('margin-top'),
                                0 !== N ? i.spaceBetween && i.spaceBetween +
                                    'px' : '');
                        }
                        if ('none' !== O.css('display')) {
                            if ('auto' === i.slidesPerView) {
                                var R = getComputedStyle(O[0]),
                                    X = O[0].style.transform,
                                    Y = O[0].style.webkitTransform;
                                if (X && (O[0].style.transform = 'none'), Y &&
                                (O[0].style.webkitTransform = 'none'), i.roundLengths) C = e.isHorizontal()
                                    ? O.outerWidth(!0)
                                    : O.outerHeight(!0); else {
                                    var V = a(R, 'width'),
                                        W = a(R, 'padding-left'),
                                        F = a(R, 'padding-right'),
                                        _ = a(R, 'margin-left'),
                                        q = a(R, 'margin-right'),
                                        j = R.getPropertyValue('box-sizing');
                                    if (j && 'border-box' === j) C = V + _ +
                                        q; else {
                                        var U = O[0], K = U.clientWidth;
                                        C = V + W + F + _ + q +
                                            (U.offsetWidth - K);
                                    }
                                }
                                X && (O[0].style.transform = X), Y &&
                                (O[0].style.webkitTransform = Y), i.roundLengths &&
                                (C = Math.floor(C));
                            } else C = (r - (i.slidesPerView - 1) * w) /
                                i.slidesPerView, i.roundLengths &&
                            (C = Math.floor(C)), p[I] &&
                            (p[I].style[t('width')] = C + 'px');
                            p[I] && (p[I].swiperSlideSize = C), v.push(
                                C), i.centeredSlides
                                ? (y = y + C / 2 + E / 2 + w, 0 === E && 0 !==
                                I && (y = y - r / 2 - w), 0 === I &&
                                (y = y - r / 2 - w), Math.abs(y) < .001 &&
                                (y = 0), i.roundLengths &&
                                (y = Math.floor(y)), x % i.slidesPerGroup ==
                                0 && c.push(y), h.push(y))
                                : (i.roundLengths && (y = Math.floor(y)), (x -
                                    Math.min(e.params.slidesPerGroupSkip, x)) %
                                e.params.slidesPerGroup == 0 &&
                                c.push(y), h.push(y), y = y + C +
                                    w), e.virtualSize += C + w, E = C, x += 1;
                        }
                    }
                    if (e.virtualSize = Math.max(e.virtualSize, r) + m, n &&
                    l && ('slide' === i.effect || 'coverflow' === i.effect) &&
                    s.css({
                        width: e.virtualSize + i.spaceBetween + 'px',
                    }), i.setWrapperSize) s.css(
                        ((z = {})[t('width')] = e.virtualSize + i.spaceBetween +
                            'px', z));
                    if (i.slidesPerColumn > 1) if (e.virtualSize = (C +
                        i.spaceBetween) * T, e.virtualSize = Math.ceil(
                        e.virtualSize / i.slidesPerColumn) -
                        i.spaceBetween, s.css(
                        ((P = {})[t('width')] = e.virtualSize + i.spaceBetween +
                            'px', P)), i.centeredSlides) {
                        S = [];
                        for (var Z = 0; Z < c.length; Z += 1) {
                            var J = c[Z];
                            i.roundLengths && (J = Math.floor(J)), c[Z] <
                            e.virtualSize + c[0] && S.push(J);
                        }
                        c = S;
                    }
                    if (!i.centeredSlides) {
                        S = [];
                        for (var Q = 0; Q < c.length; Q += 1) {
                            var ee = c[Q];
                            i.roundLengths && (ee = Math.floor(ee)), c[Q] <=
                            e.virtualSize - r && S.push(ee);
                        }
                        c = S, Math.floor(e.virtualSize - r) -
                        Math.floor(c[c.length - 1]) > 1 &&
                        c.push(e.virtualSize - r);
                    }
                    if (0 === c.length && (c = [0]), 0 !== i.spaceBetween) {
                        var te, ae = e.isHorizontal() && n ? 'marginLeft' : t(
                            'marginRight');
                        p.filter((function (e, t) {
                            return !i.cssMode || t !== p.length - 1;
                        })).css(((te = {})[ae] = w + 'px', te));
                    }
                    if (i.centeredSlides && i.centeredSlidesBounds) {
                        var ie = 0;
                        v.forEach((function (e) {
                            ie += e + (i.spaceBetween ? i.spaceBetween : 0);
                        }));
                        var se = (ie -= i.spaceBetween) - r;
                        c = c.map((function (e) {
                            return e < 0 ? -f : e > se
                                ? se + m
                                : e;
                        }));
                    }
                    if (i.centerInsufficientSlides) {
                        var re = 0;
                        if (v.forEach((function (e) {
                            re += e + (i.spaceBetween ? i.spaceBetween : 0);
                        })), (re -= i.spaceBetween) < r) {
                            var ne = (r - re) / 2;
                            c.forEach(
                                (function (e, t) {c[t] = e - ne;})), h.forEach(
                                (function (e, t) {h[t] = e + ne;}));
                        }
                    }
                    M(e, {
                        slides: p,
                        snapGrid: c,
                        slidesGrid: h,
                        slidesSizesGrid: v,
                    }), u !== d && e.emit('slidesLengthChange'), c.length !==
                    g && (e.params.watchOverflow && e.checkOverflow(), e.emit(
                        'snapGridLengthChange')), h.length !== b &&
                    e.emit('slidesGridLengthChange'), (i.watchSlidesProgress ||
                        i.watchSlidesVisibility) && e.updateSlidesOffset();
                }
            },
            updateAutoHeight: function (e) {
                var t, a = this, i = [],
                    s = a.virtual && a.params.virtual.enabled, r = 0;
                'number' == typeof e ? a.setTransition(e) : !0 === e &&
                    a.setTransition(a.params.speed);
                var n = function (e) {
                    return s ? a.slides.filter((function (t) {
                        return parseInt(
                            t.getAttribute('data-swiper-slide-index'), 10) ===
                            e;
                    }))[0] : a.slides.eq(e)[0];
                };
                if ('auto' !== a.params.slidesPerView &&
                    a.params.slidesPerView >
                    1) if (a.params.centeredSlides) a.visibleSlides.each(
                    (function (e) {i.push(e);})); else for (t = 0; t <
                Math.ceil(
                    a.params.slidesPerView); t += 1) {
                    var l = a.activeIndex + t;
                    if (l > a.slides.length && !s) break;
                    i.push(n(l));
                } else i.push(n(a.activeIndex));
                for (t = 0; t < i.length; t += 1) if (void 0 !== i[t]) {
                    var o = i[t].offsetHeight;
                    r = o > r ? o : r;
                }
                r && a.$wrapperEl.css('height', r + 'px');
            },
            updateSlidesOffset: function () {
                for (var e = this.slides, t = 0; t <
                e.length; t += 1) e[t].swiperSlideOffset = this.isHorizontal()
                    ? e[t].offsetLeft
                    : e[t].offsetTop;
            },
            updateSlidesProgress: function (e) {
                void 0 === e && (e = this && this.translate || 0);
                var t = this, a = t.params, i = t.slides, s = t.rtlTranslate;
                if (0 !== i.length) {
                    void 0 === i[0].swiperSlideOffset && t.updateSlidesOffset();
                    var r = -e;
                    s && (r = e), i.removeClass(
                        a.slideVisibleClass), t.visibleSlidesIndexes = [], t.visibleSlides = [];
                    for (var n = 0; n < i.length; n += 1) {
                        var l = i[n],
                            o = (r + (a.centeredSlides ? t.minTranslate() : 0) -
                                l.swiperSlideOffset) /
                                (l.swiperSlideSize + a.spaceBetween);
                        if (a.watchSlidesVisibility || a.centeredSlides &&
                            a.autoHeight) {
                            var d = -(r - l.swiperSlideOffset),
                                p = d + t.slidesSizesGrid[n];
                            (d >= 0 && d < t.size - 1 || p > 1 && p <= t.size ||
                                d <= 0 && p >= t.size) && (t.visibleSlides.push(
                                l), t.visibleSlidesIndexes.push(n), i.eq(n).
                                addClass(a.slideVisibleClass));
                        }
                        l.progress = s ? -o : o;
                    }
                    t.visibleSlides = m(t.visibleSlides);
                }
            },
            updateProgress: function (e) {
                var t = this;
                if (void 0 === e) {
                    var a = t.rtlTranslate ? -1 : 1;
                    e = t && t.translate && t.translate * a || 0;
                }
                var i = t.params, s = t.maxTranslate() - t.minTranslate(),
                    r = t.progress, n = t.isBeginning, l = t.isEnd, o = n,
                    d = l;
                0 === s ? (r = 0, n = !0, l = !0) : (n = (r = (e -
                    t.minTranslate()) / s) <= 0, l = r >= 1), M(t, {
                    progress: r,
                    isBeginning: n,
                    isEnd: l,
                }), (i.watchSlidesProgress || i.watchSlidesVisibility ||
                    i.centeredSlides && i.autoHeight) &&
                t.updateSlidesProgress(e), n && !o &&
                t.emit('reachBeginning toEdge'), l && !d &&
                t.emit('reachEnd toEdge'), (o && !n || d && !l) &&
                t.emit('fromEdge'), t.emit('progress', r);
            },
            updateSlidesClasses: function () {
                var e, t = this, a = t.slides, i = t.params, s = t.$wrapperEl,
                    r = t.activeIndex, n = t.realIndex,
                    l = t.virtual && i.virtual.enabled;
                a.removeClass(
                    i.slideActiveClass + ' ' + i.slideNextClass + ' ' +
                    i.slidePrevClass + ' ' + i.slideDuplicateActiveClass + ' ' +
                    i.slideDuplicateNextClass + ' ' +
                    i.slideDuplicatePrevClass), (e = l ? t.$wrapperEl.find(
                    '.' + i.slideClass + '[data-swiper-slide-index="' + r +
                    '"]') : a.eq(r)).addClass(i.slideActiveClass), i.loop &&
                (e.hasClass(i.slideDuplicateClass) ? s.children(
                    '.' + i.slideClass + ':not(.' + i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' + n + '"]').
                    addClass(i.slideDuplicateActiveClass) : s.children(
                    '.' + i.slideClass + '.' + i.slideDuplicateClass +
                    '[data-swiper-slide-index="' + n + '"]').
                    addClass(i.slideDuplicateActiveClass));
                var o = e.nextAll('.' + i.slideClass).
                    eq(0).
                    addClass(i.slideNextClass);
                i.loop && 0 === o.length &&
                (o = a.eq(0)).addClass(i.slideNextClass);
                var d = e.prevAll('.' + i.slideClass).
                    eq(0).
                    addClass(i.slidePrevClass);
                i.loop && 0 === d.length &&
                (d = a.eq(-1)).addClass(i.slidePrevClass), i.loop &&
                (o.hasClass(i.slideDuplicateClass) ? s.children(
                    '.' + i.slideClass + ':not(.' + i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' +
                    o.attr('data-swiper-slide-index') + '"]').
                    addClass(i.slideDuplicateNextClass) : s.children(
                    '.' + i.slideClass + '.' + i.slideDuplicateClass +
                    '[data-swiper-slide-index="' +
                    o.attr('data-swiper-slide-index') + '"]').
                    addClass(i.slideDuplicateNextClass), d.hasClass(
                    i.slideDuplicateClass) ? s.children(
                    '.' + i.slideClass + ':not(.' + i.slideDuplicateClass +
                    ')[data-swiper-slide-index="' +
                    d.attr('data-swiper-slide-index') + '"]').
                    addClass(i.slideDuplicatePrevClass) : s.children(
                    '.' + i.slideClass + '.' + i.slideDuplicateClass +
                    '[data-swiper-slide-index="' +
                    d.attr('data-swiper-slide-index') + '"]').
                    addClass(i.slideDuplicatePrevClass)), t.emitSlidesClasses();
            },
            updateActiveIndex: function (e) {
                var t, a = this,
                    i = a.rtlTranslate ? a.translate : -a.translate,
                    s = a.slidesGrid, r = a.snapGrid, n = a.params,
                    l = a.activeIndex, o = a.realIndex, d = a.snapIndex, p = e;
                if (void 0 === p) {
                    for (var u = 0; u < s.length; u += 1) void 0 !== s[u + 1]
                        ? i >= s[u] && i < s[u + 1] - (s[u + 1] - s[u]) / 2
                            ? p = u
                            : i >= s[u] && i < s[u + 1] && (p = u + 1)
                        : i >= s[u] && (p = u);
                    n.normalizeSlideIndex && (p < 0 || void 0 === p) && (p = 0);
                }
                if (r.indexOf(i) >= 0) t = r.indexOf(i); else {
                    var c = Math.min(n.slidesPerGroupSkip, p);
                    t = c + Math.floor((p - c) / n.slidesPerGroup);
                }
                if (t >= r.length && (t = r.length - 1), p !== l) {
                    var h = parseInt(
                        a.slides.eq(p).attr('data-swiper-slide-index') || p,
                        10);
                    M(a, {
                        snapIndex: t,
                        realIndex: h,
                        previousIndex: l,
                        activeIndex: p,
                    }), a.emit('activeIndexChange'), a.emit(
                        'snapIndexChange'), o !== h &&
                    a.emit('realIndexChange'), (a.initialized ||
                        a.params.runCallbacksOnInit) && a.emit('slideChange');
                } else t !== d && (a.snapIndex = t, a.emit('snapIndexChange'));
            },
            updateClickedSlide: function (e) {
                var t, a = this, i = a.params,
                    s = m(e.target).closest('.' + i.slideClass)[0], r = !1;
                if (s) for (var n = 0; n <
                a.slides.length; n += 1) if (a.slides[n] === s) {
                    r = !0, t = n;
                    break;
                }
                if (!s ||
                    !r) return a.clickedSlide = void 0, void (a.clickedIndex = void 0);
                a.clickedSlide = s, a.virtual && a.params.virtual.enabled
                    ? a.clickedIndex = parseInt(
                        m(s).attr('data-swiper-slide-index'), 10)
                    : a.clickedIndex = t, i.slideToClickedSlide && void 0 !==
                a.clickedIndex && a.clickedIndex !== a.activeIndex &&
                a.slideToClickedSlide();
            },
        },
        translate: {
            getTranslate: function (e) {
                void 0 === e && (e = this.isHorizontal() ? 'x' : 'y');
                var t = this, a = t.params, i = t.rtlTranslate, s = t.translate,
                    r = t.$wrapperEl;
                if (a.virtualTranslate) return i ? -s : s;
                if (a.cssMode) return s;
                var n = T(r[0], e);
                return i && (n = -n), n || 0;
            },
            setTranslate: function (e, t) {
                var a = this, i = a.rtlTranslate, s = a.params,
                    r = a.$wrapperEl, n = a.wrapperEl, l = a.progress, o = 0,
                    d = 0;
                a.isHorizontal() ? o = i ? -e : e : d = e, s.roundLengths &&
                (o = Math.floor(o), d = Math.floor(d)), s.cssMode
                    ? n[a.isHorizontal()
                        ? 'scrollLeft'
                        : 'scrollTop'] = a.isHorizontal() ? -o : -d
                    : s.virtualTranslate || r.transform(
                    'translate3d(' + o + 'px, ' + d +
                    'px, 0px)'), a.previousTranslate = a.translate, a.translate = a.isHorizontal()
                    ? o
                    : d;
                var p = a.maxTranslate() - a.minTranslate();
                (0 === p ? 0 : (e - a.minTranslate()) / p) !== l &&
                a.updateProgress(e), a.emit('setTranslate', a.translate, t);
            },
            minTranslate: function () {return -this.snapGrid[0];},
            maxTranslate: function () {
                return -this.snapGrid[this.snapGrid.length - 1];
            },
            translateTo: function (e, t, a, i, s) {
                void 0 === e && (e = 0), void 0 === t &&
                (t = this.params.speed), void 0 === a && (a = !0), void 0 ===
                i && (i = !0);
                var r = this, n = r.params, l = r.wrapperEl;
                if (r.animating && n.preventInteractionOnTransition) return !1;
                var o, d = r.minTranslate(), p = r.maxTranslate();
                if (o = i && e > d ? d : i && e < p ? p : e, r.updateProgress(
                    o), n.cssMode) {
                    var u, c = r.isHorizontal();
                    if (0 === t) l[c
                        ? 'scrollLeft'
                        : 'scrollTop'] = -o; else if (l.scrollTo) l.scrollTo(
                        ((u = {})[c
                            ? 'left'
                            : 'top'] = -o, u.behavior = 'smooth', u)); else l[c
                        ? 'scrollLeft'
                        : 'scrollTop'] = -o;
                    return !0;
                }
                return 0 === t ? (r.setTransition(0), r.setTranslate(o), a &&
                (r.emit('beforeTransitionStart', t, s), r.emit(
                    'transitionEnd'))) : (r.setTransition(t), r.setTranslate(
                    o), a && (r.emit('beforeTransitionStart', t, s), r.emit(
                    'transitionStart')), r.animating ||
                (r.animating = !0, r.onTranslateToWrapperTransitionEnd ||
                (r.onTranslateToWrapperTransitionEnd = function (e) {
                    r && !r.destroyed && e.target === this &&
                    (r.$wrapperEl[0].removeEventListener('transitionend',
                        r.onTranslateToWrapperTransitionEnd), r.$wrapperEl[0].removeEventListener(
                        'webkitTransitionEnd',
                        r.onTranslateToWrapperTransitionEnd), r.onTranslateToWrapperTransitionEnd = null, delete r.onTranslateToWrapperTransitionEnd, a &&
                    r.emit('transitionEnd'));
                }), r.$wrapperEl[0].addEventListener('transitionend',
                    r.onTranslateToWrapperTransitionEnd), r.$wrapperEl[0].addEventListener(
                    'webkitTransitionEnd',
                    r.onTranslateToWrapperTransitionEnd))), !0;
            },
        },
        transition: {
            setTransition: function (e, t) {
                var a = this;
                a.params.cssMode || a.$wrapperEl.transition(e), a.emit(
                    'setTransition', e, t);
            }, transitionStart: function (e, t) {
                void 0 === e && (e = !0);
                var a = this, i = a.activeIndex, s = a.params,
                    r = a.previousIndex;
                if (!s.cssMode) {
                    s.autoHeight && a.updateAutoHeight();
                    var n = t;
                    if (n ||
                    (n = i > r ? 'next' : i < r ? 'prev' : 'reset'), a.emit(
                        'transitionStart'), e && i !== r) {
                        if ('reset' === n) return void a.emit(
                            'slideResetTransitionStart');
                        a.emit('slideChangeTransitionStart'), 'next' === n
                            ? a.emit('slideNextTransitionStart')
                            : a.emit('slidePrevTransitionStart');
                    }
                }
            }, transitionEnd: function (e, t) {
                void 0 === e && (e = !0);
                var a = this, i = a.activeIndex, s = a.previousIndex,
                    r = a.params;
                if (a.animating = !1, !r.cssMode) {
                    a.setTransition(0);
                    var n = t;
                    if (n ||
                    (n = i > s ? 'next' : i < s ? 'prev' : 'reset'), a.emit(
                        'transitionEnd'), e && i !== s) {
                        if ('reset' === n) return void a.emit(
                            'slideResetTransitionEnd');
                        a.emit('slideChangeTransitionEnd'), 'next' === n
                            ? a.emit('slideNextTransitionEnd')
                            : a.emit('slidePrevTransitionEnd');
                    }
                }
            },
        },
        slide: {
            slideTo: function (e, t, a, i, s) {
                if (void 0 === e && (e = 0), void 0 === t &&
                (t = this.params.speed), void 0 === a && (a = !0), 'number' !=
                typeof e && 'string' != typeof e) throw new Error(
                    'The \'index\' argument cannot have type other than \'number\' or \'string\'. [' +
                    typeof e + '] given.');
                if ('string' == typeof e) {
                    var r = parseInt(e, 10);
                    if (!isFinite(r)) throw new Error(
                        'The passed-in \'index\' (string) couldn\'t be converted to \'number\'. [' +
                        e + '] given.');
                    e = r;
                }
                var n = this, l = e;
                l < 0 && (l = 0);
                var o = n.params, d = n.snapGrid, p = n.slidesGrid,
                    u = n.previousIndex, c = n.activeIndex, h = n.rtlTranslate,
                    v = n.wrapperEl, f = n.enabled;
                if (n.animating && o.preventInteractionOnTransition || !f &&
                    !i && !s) return !1;
                var m = Math.min(n.params.slidesPerGroupSkip, l),
                    g = m + Math.floor((l - m) / n.params.slidesPerGroup);
                g >= d.length && (g = d.length - 1), (c || o.initialSlide ||
                    0) === (u || 0) && a && n.emit('beforeSlideChangeStart');
                var b, w = -d[g];
                if (n.updateProgress(
                    w), o.normalizeSlideIndex) for (var y = 0; y <
                p.length; y += 1) {
                    var E = -Math.floor(100 * w), x = Math.floor(100 * p[y]),
                        T = Math.floor(100 * p[y + 1]);
                    void 0 !== p[y + 1] ? E >= x && E < T - (T - x) / 2
                        ? l = y
                        : E >= x && E < T && (l = y + 1) : E >= x && (l = y);
                }
                if (n.initialized && l !== c) {
                    if (!n.allowSlideNext && w < n.translate && w <
                        n.minTranslate()) return !1;
                    if (!n.allowSlidePrev && w > n.translate && w >
                        n.maxTranslate() && (c || 0) !== l) return !1;
                }
                if (b = l > c ? 'next' : l < c ? 'prev' : 'reset', h && -w ===
                n.translate || !h && w ===
                n.translate) return n.updateActiveIndex(l), o.autoHeight &&
                n.updateAutoHeight(), n.updateSlidesClasses(), 'slide' !==
                o.effect && n.setTranslate(w), 'reset' !== b &&
                (n.transitionStart(a, b), n.transitionEnd(a, b)), !1;
                if (o.cssMode) {
                    var C, S = n.isHorizontal(), M = -w;
                    if (h && (M = v.scrollWidth - v.offsetWidth - M), 0 ===
                    t) v[S
                        ? 'scrollLeft'
                        : 'scrollTop'] = M; else if (v.scrollTo) v.scrollTo(
                        ((C = {})[S
                            ? 'left'
                            : 'top'] = M, C.behavior = 'smooth', C)); else v[S
                        ? 'scrollLeft'
                        : 'scrollTop'] = M;
                    return !0;
                }
                return 0 === t ? (n.setTransition(0), n.setTranslate(
                    w), n.updateActiveIndex(l), n.updateSlidesClasses(), n.emit(
                    'beforeTransitionStart', t, i), n.transitionStart(a,
                    b), n.transitionEnd(a, b)) : (n.setTransition(
                    t), n.setTranslate(w), n.updateActiveIndex(
                    l), n.updateSlidesClasses(), n.emit('beforeTransitionStart',
                    t, i), n.transitionStart(a, b), n.animating ||
                (n.animating = !0, n.onSlideToWrapperTransitionEnd ||
                (n.onSlideToWrapperTransitionEnd = function (e) {
                    n && !n.destroyed && e.target === this &&
                    (n.$wrapperEl[0].removeEventListener('transitionend',
                        n.onSlideToWrapperTransitionEnd), n.$wrapperEl[0].removeEventListener(
                        'webkitTransitionEnd',
                        n.onSlideToWrapperTransitionEnd), n.onSlideToWrapperTransitionEnd = null, delete n.onSlideToWrapperTransitionEnd, n.transitionEnd(
                        a, b));
                }), n.$wrapperEl[0].addEventListener('transitionend',
                    n.onSlideToWrapperTransitionEnd), n.$wrapperEl[0].addEventListener(
                    'webkitTransitionEnd',
                    n.onSlideToWrapperTransitionEnd))), !0;
            },
            slideToLoop: function (e, t, a, i) {
                void 0 === e && (e = 0), void 0 === t &&
                (t = this.params.speed), void 0 === a && (a = !0);
                var s = this, r = e;
                return s.params.loop && (r += s.loopedSlides), s.slideTo(r, t,
                    a, i);
            },
            slideNext: function (e, t, a) {
                void 0 === e && (e = this.params.speed), void 0 === t &&
                (t = !0);
                var i = this, s = i.params, r = i.animating;
                if (!i.enabled) return i;
                var n = i.activeIndex < s.slidesPerGroupSkip
                    ? 1
                    : s.slidesPerGroup;
                if (s.loop) {
                    if (r && s.loopPreventsSlide) return !1;
                    i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft;
                }
                return i.slideTo(i.activeIndex + n, e, t, a);
            },
            slidePrev: function (e, t, a) {
                void 0 === e && (e = this.params.speed), void 0 === t &&
                (t = !0);
                var i = this, s = i.params, r = i.animating, n = i.snapGrid,
                    l = i.slidesGrid, o = i.rtlTranslate;
                if (!i.enabled) return i;
                if (s.loop) {
                    if (r && s.loopPreventsSlide) return !1;
                    i.loopFix(), i._clientLeft = i.$wrapperEl[0].clientLeft;
                }

                function d (e) {
                    return e < 0
                        ? -Math.floor(Math.abs(e))
                        : Math.floor(e);
                }

                var p, u = d(o ? i.translate : -i.translate),
                    c = n.map((function (e) {return d(e);})),
                    h = n[c.indexOf(u) - 1];
                return void 0 === h && s.cssMode &&
                n.forEach((function (e) {!h && u >= e && (h = e);})), void 0 !==
                h && (p = l.indexOf(h)) < 0 &&
                (p = i.activeIndex - 1), i.slideTo(p, e, t, a);
            },
            slideReset: function (e, t, a) {
                return void 0 === e && (e = this.params.speed), void 0 === t &&
                (t = !0), this.slideTo(this.activeIndex, e, t, a);
            },
            slideToClosest: function (e, t, a, i) {
                void 0 === e && (e = this.params.speed), void 0 === t &&
                (t = !0), void 0 === i && (i = .5);
                var s = this, r = s.activeIndex,
                    n = Math.min(s.params.slidesPerGroupSkip, r),
                    l = n + Math.floor((r - n) / s.params.slidesPerGroup),
                    o = s.rtlTranslate ? s.translate : -s.translate;
                if (o >= s.snapGrid[l]) {
                    var d = s.snapGrid[l];
                    o - d > (s.snapGrid[l + 1] - d) * i &&
                    (r += s.params.slidesPerGroup);
                } else {
                    var p = s.snapGrid[l - 1];
                    o - p <= (s.snapGrid[l] - p) * i &&
                    (r -= s.params.slidesPerGroup);
                }
                return r = Math.max(r, 0), r = Math.min(r,
                    s.slidesGrid.length - 1), s.slideTo(r, e, t, a);
            },
            slideToClickedSlide: function () {
                var e, t = this, a = t.params, i = t.$wrapperEl,
                    s = 'auto' === a.slidesPerView
                        ? t.slidesPerViewDynamic()
                        : a.slidesPerView, r = t.clickedIndex;
                if (a.loop) {
                    if (t.animating) return;
                    e = parseInt(
                        m(t.clickedSlide).attr('data-swiper-slide-index'),
                        10), a.centeredSlides ? r < t.loopedSlides - s / 2 ||
                    r > t.slides.length - t.loopedSlides + s / 2
                        ? (t.loopFix(), r = i.children(
                            '.' + a.slideClass + '[data-swiper-slide-index="' +
                            e + '"]:not(.' + a.slideDuplicateClass + ')').
                            eq(0).
                            index(), E((function () {t.slideTo(r);})))
                        : t.slideTo(r) : r > t.slides.length - s
                        ? (t.loopFix(), r = i.children(
                            '.' + a.slideClass + '[data-swiper-slide-index="' +
                            e + '"]:not(.' + a.slideDuplicateClass + ')').
                            eq(0).
                            index(), E((function () {t.slideTo(r);})))
                        : t.slideTo(r);
                } else t.slideTo(r);
            },
        },
        loop: {
            loopCreate: function () {
                var e = this, t = r(), a = e.params, i = e.$wrapperEl;
                i.children('.' + a.slideClass + '.' + a.slideDuplicateClass).
                    remove();
                var s = i.children('.' + a.slideClass);
                if (a.loopFillGroupWithBlank) {
                    var n = a.slidesPerGroup - s.length % a.slidesPerGroup;
                    if (n !== a.slidesPerGroup) {
                        for (var l = 0; l < n; l += 1) {
                            var o = m(t.createElement('div')).
                                addClass(
                                    a.slideClass + ' ' + a.slideBlankClass);
                            i.append(o);
                        }
                        s = i.children('.' + a.slideClass);
                    }
                }
                'auto' !== a.slidesPerView || a.loopedSlides ||
                (a.loopedSlides = s.length), e.loopedSlides = Math.ceil(
                    parseFloat(a.loopedSlides || a.slidesPerView,
                        10)), e.loopedSlides += a.loopAdditionalSlides, e.loopedSlides >
                s.length && (e.loopedSlides = s.length);
                var d = [], p = [];
                s.each((function (t, a) {
                    var i = m(t);
                    a < e.loopedSlides && p.push(t), a < s.length && a >=
                    s.length - e.loopedSlides && d.push(t), i.attr(
                        'data-swiper-slide-index', a);
                }));
                for (var u = 0; u < p.length; u += 1) i.append(
                    m(p[u].cloneNode(!0)).addClass(a.slideDuplicateClass));
                for (var c = d.length - 1; c >= 0; c -= 1) i.prepend(
                    m(d[c].cloneNode(!0)).addClass(a.slideDuplicateClass));
            },
            loopFix: function () {
                var e = this;
                e.emit('beforeLoopFix');
                var t, a = e.activeIndex, i = e.slides, s = e.loopedSlides,
                    r = e.allowSlidePrev, n = e.allowSlideNext, l = e.snapGrid,
                    o = e.rtlTranslate;
                e.allowSlidePrev = !0, e.allowSlideNext = !0;
                var d = -l[a] - e.getTranslate();
                if (a < s) t = i.length - 3 * s + a, t += s, e.slideTo(t, 0, !1,
                    !0) && 0 !== d && e.setTranslate(
                    (o ? -e.translate : e.translate) - d); else if (a >=
                    i.length - s) {
                    t = -i.length + a + s, t += s, e.slideTo(t, 0, !1, !0) &&
                    0 !== d &&
                    e.setTranslate((o ? -e.translate : e.translate) - d);
                }
                e.allowSlidePrev = r, e.allowSlideNext = n, e.emit('loopFix');
            },
            loopDestroy: function () {
                var e = this, t = e.$wrapperEl, a = e.params, i = e.slides;
                t.children(
                    '.' + a.slideClass + '.' + a.slideDuplicateClass + ',.' +
                    a.slideClass + '.' + a.slideBlankClass).
                    remove(), i.removeAttr('data-swiper-slide-index');
            },
        },
        grabCursor: {
            setGrabCursor: function (e) {
                var t = this;
                if (!(t.support.touch || !t.params.simulateTouch ||
                    t.params.watchOverflow && t.isLocked || t.params.cssMode)) {
                    var a = t.el;
                    a.style.cursor = 'move', a.style.cursor = e
                        ? '-webkit-grabbing'
                        : '-webkit-grab', a.style.cursor = e
                        ? '-moz-grabbin'
                        : '-moz-grab', a.style.cursor = e ? 'grabbing' : 'grab';
                }
            }, unsetGrabCursor: function () {
                var e = this;
                e.support.touch || e.params.watchOverflow && e.isLocked ||
                e.params.cssMode || (e.el.style.cursor = '');
            },
        },
        manipulation: {
            appendSlide: function (e) {
                var t = this, a = t.$wrapperEl, i = t.params;
                if (i.loop && t.loopDestroy(), 'object' == typeof e &&
                'length' in e) for (var s = 0; s < e.length; s += 1) e[s] &&
                a.append(e[s]); else a.append(e);
                i.loop && t.loopCreate(), i.observer && t.support.observer ||
                t.update();
            },
            prependSlide: function (e) {
                var t = this, a = t.params, i = t.$wrapperEl, s = t.activeIndex;
                a.loop && t.loopDestroy();
                var r = s + 1;
                if ('object' == typeof e && 'length' in e) {
                    for (var n = 0; n < e.length; n += 1) e[n] &&
                    i.prepend(e[n]);
                    r = s + e.length;
                } else i.prepend(e);
                a.loop && t.loopCreate(), a.observer && t.support.observer ||
                t.update(), t.slideTo(r, 0, !1);
            },
            addSlide: function (e, t) {
                var a = this, i = a.$wrapperEl, s = a.params, r = a.activeIndex;
                s.loop &&
                (r -= a.loopedSlides, a.loopDestroy(), a.slides = i.children(
                    '.' + s.slideClass));
                var n = a.slides.length;
                if (e <= 0) a.prependSlide(t); else if (e >= n) a.appendSlide(
                    t); else {
                    for (var l = r > e ? r + 1 : r, o = [], d = n - 1; d >=
                    e; d -= 1) {
                        var p = a.slides.eq(d);
                        p.remove(), o.unshift(p);
                    }
                    if ('object' == typeof t && 'length' in t) {
                        for (var u = 0; u < t.length; u += 1) t[u] &&
                        i.append(t[u]);
                        l = r > e ? r + t.length : r;
                    } else i.append(t);
                    for (var c = 0; c < o.length; c += 1) i.append(o[c]);
                    s.loop && a.loopCreate(), s.observer &&
                    a.support.observer || a.update(), s.loop ? a.slideTo(
                        l + a.loopedSlides, 0, !1) : a.slideTo(l, 0, !1);
                }
            },
            removeSlide: function (e) {
                var t = this, a = t.params, i = t.$wrapperEl, s = t.activeIndex;
                a.loop &&
                (s -= t.loopedSlides, t.loopDestroy(), t.slides = i.children(
                    '.' + a.slideClass));
                var r, n = s;
                if ('object' == typeof e && 'length' in e) {
                    for (var l = 0; l <
                    e.length; l += 1) r = e[l], t.slides[r] &&
                    t.slides.eq(r).remove(), r < n && (n -= 1);
                    n = Math.max(n, 0);
                } else r = e, t.slides[r] && t.slides.eq(r).remove(), r < n &&
                (n -= 1), n = Math.max(n, 0);
                a.loop && t.loopCreate(), a.observer && t.support.observer ||
                t.update(), a.loop
                    ? t.slideTo(n + t.loopedSlides, 0, !1)
                    : t.slideTo(n, 0, !1);
            },
            removeAllSlides: function () {
                for (var e = [], t = 0; t < this.slides.length; t += 1) e.push(
                    t);
                this.removeSlide(e);
            },
        },
        events: {
            attachEvents: function () {
                var e = this, t = r(), a = e.params, i = e.touchEvents,
                    s = e.el, n = e.wrapperEl, l = e.device, o = e.support;
                e.onTouchStart = N.bind(e), e.onTouchMove = G.bind(
                    e), e.onTouchEnd = B.bind(e), a.cssMode &&
                (e.onScroll = X.bind(e)), e.onClick = R.bind(e);
                var d = !!a.nested;
                if (!o.touch && o.pointerEvents) s.addEventListener(i.start,
                    e.onTouchStart, !1), t.addEventListener(i.move,
                    e.onTouchMove, d), t.addEventListener(i.end, e.onTouchEnd,
                    !1); else {
                    if (o.touch) {
                        var p = !('touchstart' !== i.start ||
                            !o.passiveListener || !a.passiveListeners) &&
                            { passive: !0, capture: !1 };
                        s.addEventListener(i.start, e.onTouchStart,
                            p), s.addEventListener(i.move, e.onTouchMove,
                            o.passiveListener
                                ? { passive: !1, capture: d }
                                : d), s.addEventListener(i.end, e.onTouchEnd,
                            p), i.cancel &&
                        s.addEventListener(i.cancel, e.onTouchEnd, p), Y ||
                        (t.addEventListener('touchstart', V), Y = !0);
                    }
                    (a.simulateTouch && !l.ios && !l.android ||
                        a.simulateTouch && !o.touch && l.ios) &&
                    (s.addEventListener('mousedown', e.onTouchStart,
                        !1), t.addEventListener('mousemove', e.onTouchMove,
                        d), t.addEventListener('mouseup', e.onTouchEnd, !1));
                }
                (a.preventClicks || a.preventClicksPropagation) &&
                s.addEventListener('click', e.onClick, !0), a.cssMode &&
                n.addEventListener('scroll', e.onScroll), a.updateOnWindowResize
                    ? e.on(l.ios || l.android
                        ? 'resize orientationchange observerUpdate'
                        : 'resize observerUpdate', H, !0)
                    : e.on('observerUpdate', H, !0);
            }, detachEvents: function () {
                var e = this, t = r(), a = e.params, i = e.touchEvents,
                    s = e.el, n = e.wrapperEl, l = e.device, o = e.support,
                    d = !!a.nested;
                if (!o.touch && o.pointerEvents) s.removeEventListener(i.start,
                    e.onTouchStart, !1), t.removeEventListener(i.move,
                    e.onTouchMove, d), t.removeEventListener(i.end,
                    e.onTouchEnd, !1); else {
                    if (o.touch) {
                        var p = !('onTouchStart' !== i.start ||
                            !o.passiveListener || !a.passiveListeners) &&
                            { passive: !0, capture: !1 };
                        s.removeEventListener(i.start, e.onTouchStart,
                            p), s.removeEventListener(i.move, e.onTouchMove,
                            d), s.removeEventListener(i.end, e.onTouchEnd,
                            p), i.cancel &&
                        s.removeEventListener(i.cancel, e.onTouchEnd, p);
                    }
                    (a.simulateTouch && !l.ios && !l.android ||
                        a.simulateTouch && !o.touch && l.ios) &&
                    (s.removeEventListener('mousedown', e.onTouchStart,
                        !1), t.removeEventListener('mousemove', e.onTouchMove,
                        d), t.removeEventListener('mouseup', e.onTouchEnd, !1));
                }
                (a.preventClicks || a.preventClicksPropagation) &&
                s.removeEventListener('click', e.onClick, !0), a.cssMode &&
                n.removeEventListener('scroll', e.onScroll), e.off(
                    l.ios || l.android
                        ? 'resize orientationchange observerUpdate'
                        : 'resize observerUpdate', H);
            },
        },
        breakpoints: {
            setBreakpoint: function () {
                var e = this, t = e.activeIndex, a = e.initialized,
                    i = e.loopedSlides, s = void 0 === i ? 0 : i, r = e.params,
                    n = e.$el, l = r.breakpoints;
                if (l && (!l || 0 !== Object.keys(l).length)) {
                    var o = e.getBreakpoint(l, e.params.breakpointsBase, e.el);
                    if (o && e.currentBreakpoint !== o) {
                        var d = o in l ? l[o] : void 0;
                        d && [
                            'slidesPerView',
                            'spaceBetween',
                            'slidesPerGroup',
                            'slidesPerGroupSkip',
                            'slidesPerColumn'].forEach((function (e) {
                            var t = d[e];
                            void 0 !== t &&
                            (d[e] = 'slidesPerView' !== e || 'AUTO' !== t &&
                            'auto' !== t ? 'slidesPerView' === e
                                ? parseFloat(t)
                                : parseInt(t, 10) : 'auto');
                        }));
                        var p = d || e.originalParams,
                            u = r.slidesPerColumn > 1,
                            c = p.slidesPerColumn > 1, h = r.enabled;
                        u && !c
                            ? (n.removeClass(
                            r.containerModifierClass + 'multirow ' +
                            r.containerModifierClass +
                            'multirow-column'), e.emitContainerClasses())
                            : !u && c && (n.addClass(r.containerModifierClass +
                            'multirow'), (p.slidesPerColumnFill && 'column' ===
                            p.slidesPerColumnFill || !p.slidesPerColumnFill &&
                            'column' === r.slidesPerColumnFill) && n.addClass(
                            r.containerModifierClass +
                            'multirow-column'), e.emitContainerClasses());
                        var v = p.direction && p.direction !== r.direction,
                            f = r.loop &&
                                (p.slidesPerView !== r.slidesPerView || v);
                        v && a && e.changeDirection(), M(e.params, p);
                        var m = e.params.enabled;
                        M(e, {
                            allowTouchMove: e.params.allowTouchMove,
                            allowSlideNext: e.params.allowSlideNext,
                            allowSlidePrev: e.params.allowSlidePrev,
                        }), h && !m ? e.disable() : !h && m &&
                            e.enable(), e.currentBreakpoint = o, e.emit(
                            '_beforeBreakpoint', p), f && a &&
                        (e.loopDestroy(), e.loopCreate(), e.updateSlides(), e.slideTo(
                            t - s + e.loopedSlides, 0, !1)), e.emit(
                            'breakpoint', p);
                    }
                }
            },
            getBreakpoint: function (e, t, a) {
                if (void 0 === t && (t = 'window'), e &&
                ('container' !== t || a)) {
                    var i = !1, s = l(),
                        r = 'window' === t ? s.innerHeight : a.clientHeight,
                        n = Object.keys(e).
                            map((function (e) {
                                if ('string' == typeof e && 0 ===
                                    e.indexOf('@')) {
                                    var t = parseFloat(e.substr(1));
                                    return { value: r * t, point: e };
                                }
                                return { value: e, point: e };
                            }));
                    n.sort((function (e, t) {
                        return parseInt(e.value, 10) - parseInt(t.value, 10);
                    }));
                    for (var o = 0; o < n.length; o += 1) {
                        var d = n[o], p = d.point, u = d.value;
                        'window' === t
                            ? s.matchMedia(
                            '(min-width: ' + u + 'px)').matches && (i = p)
                            : u <= a.clientWidth && (i = p);
                    }
                    return i || 'max';
                }
            },
        },
        checkOverflow: {
            checkOverflow: function () {
                var e = this, t = e.params, a = e.isLocked,
                    i = e.slides.length > 0 && t.slidesOffsetBefore +
                        t.spaceBetween * (e.slides.length - 1) +
                        e.slides[0].offsetWidth * e.slides.length;
                t.slidesOffsetBefore && t.slidesOffsetAfter && i
                    ? e.isLocked = i <= e.size
                    : e.isLocked = 1 ===
                    e.snapGrid.length, e.allowSlideNext = !e.isLocked, e.allowSlidePrev = !e.isLocked, a !==
                e.isLocked && e.emit(e.isLocked ? 'lock' : 'unlock'), a && a !==
                e.isLocked &&
                (e.isEnd = !1, e.navigation && e.navigation.update());
            },
        },
        classes: {
            addClasses: function () {
                var e, t, a, i = this, s = i.classNames, r = i.params,
                    n = i.rtl, l = i.$el, o = i.device, d = i.support,
                    p = (e = [
                        'initialized',
                        r.direction,
                        { 'pointer-events': d.pointerEvents && !d.touch },
                        { 'free-mode': r.freeMode },
                        { autoheight: r.autoHeight },
                        { rtl: n },
                        { multirow: r.slidesPerColumn > 1 },
                        {
                            'multirow-column': r.slidesPerColumn > 1 &&
                                'column' === r.slidesPerColumnFill,
                        },
                        { android: o.android },
                        { ios: o.ios },
                        { 'css-mode': r.cssMode }], t = r.containerModifierClass, a = [], e.forEach(
                        (function (e) {
                            'object' == typeof e
                                ? Object.keys(e).
                                    forEach((function (i) {e[i] && a.push(t + i);}))
                                : 'string' == typeof e && a.push(t + e);
                        })), a);
                s.push.apply(s, p), l.addClass(
                    [].concat(s).join(' ')), i.emitContainerClasses();
            },
            removeClasses: function () {
                var e = this, t = e.$el, a = e.classNames;
                t.removeClass(a.join(' ')), e.emitContainerClasses();
            },
        },
        images: {
            loadImage: function (e, t, a, i, s, r) {
                var n, o = l();

                function d () {r && r();}

                m(e).parent('picture')[0] || e.complete && s ? d() : t
                    ? ((n = new o.Image).onload = d, n.onerror = d, i &&
                    (n.sizes = i), a && (n.srcset = a), t && (n.src = t))
                    : d();
            }, preloadImages: function () {
                var e = this;

                function t () {
                    null != e && e && !e.destroyed &&
                    (void 0 !== e.imagesLoaded &&
                    (e.imagesLoaded += 1), e.imagesLoaded ===
                    e.imagesToLoad.length &&
                    (e.params.updateOnImagesReady && e.update(), e.emit(
                        'imagesReady')));
                }

                e.imagesToLoad = e.$el.find('img');
                for (var a = 0; a < e.imagesToLoad.length; a += 1) {
                    var i = e.imagesToLoad[a];
                    e.loadImage(i, i.currentSrc || i.getAttribute('src'),
                        i.srcset || i.getAttribute('srcset'),
                        i.sizes || i.getAttribute('sizes'), !0, t);
                }
            },
        },
    }, _ = {}, q = function () {
        function t () {
            for (var e, a, i = arguments.length, s = new Array(i), r = 0; r <
            i; r++) s[r] = arguments[r];
            if (1 === s.length && s[0].constructor && 'Object' ===
            Object.prototype.toString.call(s[0]).slice(8, -1)
                ? a = s[0]
                : (e = s[0], a = s[1]), a || (a = {}), a = M({}, a), e &&
            !a.el && (a.el = e), a.el && m(a.el).length > 1) {
                var n = [];
                return m(a.el).each((function (e) {
                    var i = M({}, a, { el: e });
                    n.push(new t(i));
                })), n;
            }
            var l = this;
            l.__swiper__ = !0, l.support = $(), l.device = L(
                { userAgent: a.userAgent }), l.browser = I(), l.eventsListeners = {}, l.eventsAnyListeners = [], void 0 ===
            l.modules && (l.modules = {}), Object.keys(l.modules).
                forEach((function (e) {
                    var t = l.modules[e];
                    if (t.params) {
                        var i = Object.keys(t.params)[0], s = t.params[i];
                        if ('object' != typeof s || null === s) return;
                        if (['navigation', 'pagination', 'scrollbar'].indexOf(
                            i) >= 0 && !0 === a[i] &&
                        (a[i] = { auto: !0 }), !(i in a) ||
                        !('enabled' in s)) return;
                        !0 === a[i] && (a[i] = { enabled: !0 }), 'object' !=
                        typeof a[i] || 'enabled' in a[i] ||
                        (a[i].enabled = !0), a[i] || (a[i] = { enabled: !1 });
                    }
                }));
            var o, d, p = M({}, W);
            return l.useParams(p), l.params = M({}, p, _,
                a), l.originalParams = M({}, l.params), l.passedParams = M({},
                a), l.params && l.params.on && Object.keys(l.params.on).
                forEach((function (e) {l.on(e, l.params.on[e]);})), l.params &&
            l.params.onAny && l.onAny(l.params.onAny), l.$ = m, M(l, {
                enabled: l.params.enabled,
                el: e,
                classNames: [],
                slides: m(),
                slidesGrid: [],
                snapGrid: [],
                slidesSizesGrid: [],
                isHorizontal: function () {
                    return 'horizontal' === l.params.direction;
                },
                isVertical: function () {
                    return 'vertical' === l.params.direction;
                },
                activeIndex: 0,
                realIndex: 0,
                isBeginning: !0,
                isEnd: !1,
                translate: 0,
                previousTranslate: 0,
                progress: 0,
                velocity: 0,
                animating: !1,
                allowSlideNext: l.params.allowSlideNext,
                allowSlidePrev: l.params.allowSlidePrev,
                touchEvents: (o = [
                    'touchstart',
                    'touchmove',
                    'touchend',
                    'touchcancel'], d = [
                    'mousedown',
                    'mousemove',
                    'mouseup'], l.support.pointerEvents && (d = [
                    'pointerdown',
                    'pointermove',
                    'pointerup']), l.touchEventsTouch = {
                    start: o[0],
                    move: o[1],
                    end: o[2],
                    cancel: o[3],
                }, l.touchEventsDesktop = {
                    start: d[0],
                    move: d[1],
                    end: d[2],
                }, l.support.touch || !l.params.simulateTouch
                    ? l.touchEventsTouch
                    : l.touchEventsDesktop),
                touchEventsData: {
                    isTouched: void 0,
                    isMoved: void 0,
                    allowTouchCallbacks: void 0,
                    touchStartTime: void 0,
                    isScrolling: void 0,
                    currentTranslate: void 0,
                    startTranslate: void 0,
                    allowThresholdMove: void 0,
                    focusableElements: l.params.focusableElements,
                    lastClickTime: x(),
                    clickTimeout: void 0,
                    velocities: [],
                    allowMomentumBounce: void 0,
                    isTouchEvent: void 0,
                    startMoving: void 0,
                },
                allowClick: !0,
                allowTouchMove: l.params.allowTouchMove,
                touches: {
                    startX: 0,
                    startY: 0,
                    currentX: 0,
                    currentY: 0,
                    diff: 0,
                },
                imagesToLoad: [],
                imagesLoaded: 0,
            }), l.useModules(), l.emit('_swiper'), l.params.init && l.init(), l;
        }

        var a, i, s, n = t.prototype;
        return n.enable = function () {
            var e = this;
            e.enabled ||
            (e.enabled = !0, e.params.grabCursor && e.setGrabCursor(), e.emit(
                'enable'));
        }, n.disable = function () {
            var e = this;
            e.enabled &&
            (e.enabled = !1, e.params.grabCursor && e.unsetGrabCursor(), e.emit(
                'disable'));
        }, n.setProgress = function (e, t) {
            var a = this;
            e = Math.min(Math.max(e, 0), 1);
            var i = a.minTranslate(), s = (a.maxTranslate() - i) * e + i;
            a.translateTo(s, void 0 === t
                ? 0
                : t), a.updateActiveIndex(), a.updateSlidesClasses();
        }, n.emitContainerClasses = function () {
            var e = this;
            if (e.params._emitClasses && e.el) {
                var t = e.el.className.split(' ').
                    filter((function (t) {
                        return 0 === t.indexOf('swiper-container') || 0 ===
                            t.indexOf(e.params.containerModifierClass);
                    }));
                e.emit('_containerClasses', t.join(' '));
            }
        }, n.getSlideClasses = function (e) {
            var t = this;
            return e.className.split(' ').
                filter((function (e) {
                    return 0 === e.indexOf('swiper-slide') || 0 ===
                        e.indexOf(t.params.slideClass);
                })).
                join(' ');
        }, n.emitSlidesClasses = function () {
            var e = this;
            if (e.params._emitClasses && e.el) {
                var t = [];
                e.slides.each((function (a) {
                    var i = e.getSlideClasses(a);
                    t.push({ slideEl: a, classNames: i }), e.emit('_slideClass',
                        a, i);
                })), e.emit('_slideClasses', t);
            }
        }, n.slidesPerViewDynamic = function () {
            var e = this, t = e.params, a = e.slides, i = e.slidesGrid,
                s = e.size, r = e.activeIndex, n = 1;
            if (t.centeredSlides) {
                for (var l, o = a[r].swiperSlideSize, d = r + 1; d <
                a.length; d += 1) a[d] && !l &&
                (n += 1, (o += a[d].swiperSlideSize) > s && (l = !0));
                for (var p = r - 1; p >= 0; p -= 1) a[p] && !l &&
                (n += 1, (o += a[p].swiperSlideSize) > s && (l = !0));
            } else for (var u = r + 1; u < a.length; u += 1) i[u] - i[r] < s &&
            (n += 1);
            return n;
        }, n.update = function () {
            var e = this;
            if (e && !e.destroyed) {
                var t = e.snapGrid, a = e.params;
                a.breakpoints &&
                e.setBreakpoint(), e.updateSize(), e.updateSlides(), e.updateProgress(), e.updateSlidesClasses(), e.params.freeMode
                    ? (i(), e.params.autoHeight && e.updateAutoHeight())
                    : (('auto' === e.params.slidesPerView ||
                    e.params.slidesPerView > 1) && e.isEnd &&
                    !e.params.centeredSlides ? e.slideTo(e.slides.length - 1, 0, !1,
                    !0) : e.slideTo(e.activeIndex, 0, !1, !0)) ||
                    i(), a.watchOverflow && t !== e.snapGrid &&
                e.checkOverflow(), e.emit('update');
            }

            function i () {
                var t = e.rtlTranslate
                    ? -1 * e.translate
                    : e.translate, a = Math.min(Math.max(t, e.maxTranslate()),
                    e.minTranslate());
                e.setTranslate(
                    a), e.updateActiveIndex(), e.updateSlidesClasses();
            }
        }, n.changeDirection = function (e, t) {
            void 0 === t && (t = !0);
            var a = this, i = a.params.direction;
            return e ||
            (e = 'horizontal' === i ? 'vertical' : 'horizontal'), e === i ||
            'horizontal' !== e && 'vertical' !== e ||
            (a.$el.removeClass('' + a.params.containerModifierClass + i).
                addClass('' + a.params.containerModifierClass +
                    e), a.emitContainerClasses(), a.params.direction = e, a.slides.each(
                (function (t) {
                    'vertical' === e
                        ? t.style.width = ''
                        : t.style.height = '';
                })), a.emit('changeDirection'), t && a.update()), a;
        }, n.mount = function (e) {
            var t = this;
            if (t.mounted) return !0;
            var a = m(e || t.params.el);
            if (!(e = a[0])) return !1;
            e.swiper = t;
            var i = function () {
                return '.' +
                    (t.params.wrapperClass || '').trim().split(' ').join('.');
            }, s = function () {
                if (e && e.shadowRoot && e.shadowRoot.querySelector) {
                    var t = m(e.shadowRoot.querySelector(i()));
                    return t.children = function (e) {return a.children(e);}, t;
                }
                return a.children(i());
            }();
            if (0 === s.length && t.params.createElements) {
                var n = r().
                    createElement('div');
                s = m(n), n.className = t.params.wrapperClass, a.append(
                    n), a.children('.' + t.params.slideClass).
                    each((function (e) {s.append(e);}));
            }
            return M(t, {
                $el: a,
                el: e,
                $wrapperEl: s,
                wrapperEl: s[0],
                mounted: !0,
                rtl: 'rtl' === e.dir.toLowerCase() || 'rtl' ===
                    a.css('direction'),
                rtlTranslate: 'horizontal' === t.params.direction &&
                    ('rtl' === e.dir.toLowerCase() || 'rtl' ===
                        a.css('direction')),
                wrongRTL: '-webkit-box' === s.css('display'),
            }), !0;
        }, n.init = function (e) {
            var t = this;
            return t.initialized || !1 === t.mount(e) ||
            (t.emit('beforeInit'), t.params.breakpoints &&
            t.setBreakpoint(), t.addClasses(), t.params.loop &&
            t.loopCreate(), t.updateSize(), t.updateSlides(), t.params.watchOverflow &&
            t.checkOverflow(), t.params.grabCursor && t.enabled &&
            t.setGrabCursor(), t.params.preloadImages &&
            t.preloadImages(), t.params.loop ? t.slideTo(
                t.params.initialSlide + t.loopedSlides, 0,
                t.params.runCallbacksOnInit, !1, !0) : t.slideTo(
                t.params.initialSlide, 0, t.params.runCallbacksOnInit, !1,
                !0), t.attachEvents(), t.initialized = !0, t.emit(
                'init'), t.emit('afterInit')), t;
        }, n.destroy = function (e, t) {
            void 0 === e && (e = !0), void 0 === t && (t = !0);
            var a, i = this, s = i.params, r = i.$el, n = i.$wrapperEl,
                l = i.slides;
            return void 0 === i.params || i.destroyed || (i.emit(
                'beforeDestroy'), i.initialized = !1, i.detachEvents(), s.loop &&
            i.loopDestroy(), t &&
            (i.removeClasses(), r.removeAttr('style'), n.removeAttr(
                'style'), l && l.length && l.removeClass([
                s.slideVisibleClass,
                s.slideActiveClass,
                s.slideNextClass,
                s.slidePrevClass].join(' ')).
                removeAttr('style').
                removeAttr('data-swiper-slide-index')), i.emit(
                'destroy'), Object.keys(i.eventsListeners).
                forEach((function (e) {i.off(e);})), !1 !== e &&
            (i.$el[0].swiper = null, a = i, Object.keys(a).
                forEach((function (e) {
                    try {a[e] = null;} catch (e) {}
                    try {delete a[e];} catch (e) {}
                }))), i.destroyed = !0), null;
        }, t.extendDefaults = function (e) {
            M(_, e);
        }, t.installModule = function (e) {
            t.prototype.modules || (t.prototype.modules = {});
            var a = e.name || Object.keys(t.prototype.modules).length + '_' +
                x();
            t.prototype.modules[a] = e;
        }, t.use = function (e) {
            return Array.isArray(e)
                ? (e.forEach((function (e) {return t.installModule(e);})), t)
                : (t.installModule(e), t);
        }, a = t, s = [
            { key: 'extendedDefaults', get: function () {return _;} },
            { key: 'defaults', get: function () {return W;} }], (i = null) &&
        e(a.prototype, i), s && e(a, s), t;
    }();
    Object.keys(F).
        forEach((function (e) {
            Object.keys(F[e]).
                forEach((function (t) {q.prototype[t] = F[e][t];}));
        })), q.use([O, D]);
    var j = {
        update: function (e) {
            var t = this, a = t.params, i = a.slidesPerView,
                s = a.slidesPerGroup, r = a.centeredSlides,
                n = t.params.virtual, l = n.addSlidesBefore,
                o = n.addSlidesAfter, d = t.virtual, p = d.from, u = d.to,
                c = d.slides, h = d.slidesGrid, v = d.renderSlide, f = d.offset;
            t.updateActiveIndex();
            var m, g, b, w = t.activeIndex || 0;
            m = t.rtlTranslate ? 'right' : t.isHorizontal() ? 'left' : 'top', r
                ? (g = Math.floor(i / 2) + s + o, b = Math.floor(i / 2) + s + l)
                : (g = i + (s - 1) + o, b = s + l);
            var y = Math.max((w || 0) - b, 0),
                E = Math.min((w || 0) + g, c.length - 1),
                x = (t.slidesGrid[y] || 0) - (t.slidesGrid[0] || 0);

            function T () {
                t.updateSlides(), t.updateProgress(), t.updateSlidesClasses(), t.lazy &&
                t.params.lazy.enabled && t.lazy.load();
            }

            if (M(t.virtual,
                { from: y, to: E, offset: x, slidesGrid: t.slidesGrid }), p ===
            y && u === E && !e) return t.slidesGrid !== h && x !== f &&
            t.slides.css(m, x + 'px'), void t.updateProgress();
            if (t.params.virtual.renderExternal) return t.params.virtual.renderExternal.call(
                t, {
                    offset: x,
                    from: y,
                    to: E,
                    slides: function () {
                        for (var e = [], t = y; t <= E; t += 1) e.push(c[t]);
                        return e;
                    }(),
                }), void (t.params.virtual.renderExternalUpdate && T());
            var C = [], S = [];
            if (e) t.$wrapperEl.find('.' + t.params.slideClass).
                remove(); else for (var z = p; z <= u; z += 1) (z < y || z >
                E) && t.$wrapperEl.find(
                '.' + t.params.slideClass + '[data-swiper-slide-index="' + z +
                '"]').remove();
            for (var P = 0; P < c.length; P += 1) P >= y && P <= E &&
            (void 0 === u || e ? S.push(P) : (P > u && S.push(P), P < p &&
            C.push(P)));
            S.forEach(
                (function (e) {t.$wrapperEl.append(v(c[e], e));})), C.sort(
                (function (e, t) {return t - e;})).
                forEach((function (e) {
                    t.$wrapperEl.prepend(v(c[e], e));
                })), t.$wrapperEl.children('.swiper-slide').
                css(m, x + 'px'), T();
        },
        renderSlide: function (e, t) {
            var a = this, i = a.params.virtual;
            if (i.cache && a.virtual.cache[t]) return a.virtual.cache[t];
            var s = i.renderSlide ? m(i.renderSlide.call(a, e, t)) : m(
                '<div class="' + a.params.slideClass +
                '" data-swiper-slide-index="' + t + '">' + e + '</div>');
            return s.attr('data-swiper-slide-index') ||
            s.attr('data-swiper-slide-index', t), i.cache &&
            (a.virtual.cache[t] = s), s;
        },
        appendSlide: function (e) {
            var t = this;
            if ('object' == typeof e && 'length' in e) for (var a = 0; a <
            e.length; a += 1) e[a] &&
            t.virtual.slides.push(e[a]); else t.virtual.slides.push(e);
            t.virtual.update(!0);
        },
        prependSlide: function (e) {
            var t = this, a = t.activeIndex, i = a + 1, s = 1;
            if (Array.isArray(e)) {
                for (var r = 0; r < e.length; r += 1) e[r] &&
                t.virtual.slides.unshift(e[r]);
                i = a + e.length, s = e.length;
            } else t.virtual.slides.unshift(e);
            if (t.params.virtual.cache) {
                var n = t.virtual.cache, l = {};
                Object.keys(n).
                    forEach((function (e) {
                        var t = n[e], a = t.attr('data-swiper-slide-index');
                        a && t.attr('data-swiper-slide-index',
                            parseInt(a, 10) + 1), l[parseInt(e, 10) + s] = t;
                    })), t.virtual.cache = l;
            }
            t.virtual.update(!0), t.slideTo(i, 0);
        },
        removeSlide: function (e) {
            var t = this;
            if (null != e) {
                var a = t.activeIndex;
                if (Array.isArray(e)) for (var i = e.length - 1; i >=
                0; i -= 1) t.virtual.slides.splice(e[i],
                    1), t.params.virtual.cache &&
                delete t.virtual.cache[e[i]], e[i] < a &&
                (a -= 1), a = Math.max(a, 0); else t.virtual.slides.splice(e,
                    1), t.params.virtual.cache && delete t.virtual.cache[e], e <
                a && (a -= 1), a = Math.max(a, 0);
                t.virtual.update(!0), t.slideTo(a, 0);
            }
        },
        removeAllSlides: function () {
            var e = this;
            e.virtual.slides = [], e.params.virtual.cache &&
            (e.virtual.cache = {}), e.virtual.update(!0), e.slideTo(0, 0);
        },
    }, U = {
        name: 'virtual',
        params: {
            virtual: {
                enabled: !1,
                slides: [],
                cache: !0,
                renderSlide: null,
                renderExternal: null,
                renderExternalUpdate: !0,
                addSlidesBefore: 0,
                addSlidesAfter: 0,
            },
        },
        create: function () {
            z(this, {
                virtual: t({}, j,
                    { slides: this.params.virtual.slides, cache: {} }),
            });
        },
        on: {
            beforeInit: function (e) {
                if (e.params.virtual.enabled) {
                    e.classNames.push(
                        e.params.containerModifierClass + 'virtual');
                    var t = { watchSlidesProgress: !0 };
                    M(e.params, t), M(e.originalParams,
                        t), e.params.initialSlide || e.virtual.update();
                }
            },
            setTranslate: function (e) {
                e.params.virtual.enabled && e.virtual.update();
            },
        },
    }, K = {
        handle: function (e) {
            var t = this;
            if (t.enabled) {
                var a = l(), i = r(), s = t.rtlTranslate, n = e;
                n.originalEvent && (n = n.originalEvent);
                var o = n.keyCode || n.charCode,
                    d = t.params.keyboard.pageUpDown, p = d && 33 === o,
                    u = d && 34 === o, c = 37 === o, h = 39 === o, v = 38 === o,
                    f = 40 === o;
                if (!t.allowSlideNext &&
                    (t.isHorizontal() && h || t.isVertical() && f ||
                        u)) return !1;
                if (!t.allowSlidePrev &&
                    (t.isHorizontal() && c || t.isVertical() && v ||
                        p)) return !1;
                if (!(n.shiftKey || n.altKey || n.ctrlKey || n.metaKey ||
                    i.activeElement && i.activeElement.nodeName &&
                    ('input' === i.activeElement.nodeName.toLowerCase() ||
                        'textarea' ===
                        i.activeElement.nodeName.toLowerCase()))) {
                    if (t.params.keyboard.onlyInViewport &&
                        (p || u || c || h || v || f)) {
                        var m = !1;
                        if (t.$el.parents('.' + t.params.slideClass).length >
                            0 && 0 === t.$el.parents(
                                '.' + t.params.slideActiveClass).length) return;
                        var g = t.$el, b = g[0].clientWidth,
                            w = g[0].clientHeight, y = a.innerWidth,
                            E = a.innerHeight, x = t.$el.offset();
                        s && (x.left -= t.$el[0].scrollLeft);
                        for (var T = [
                            [x.left, x.top],
                            [x.left + b, x.top],
                            [x.left, x.top + w],
                            [x.left + b, x.top + w]], C = 0; C <
                             T.length; C += 1) {
                            var S = T[C];
                            if (S[0] >= 0 && S[0] <= y && S[1] >= 0 && S[1] <=
                                E) {
                                if (0 === S[0] && 0 === S[1]) continue;
                                m = !0;
                            }
                        }
                        if (!m) return;
                    }
                    t.isHorizontal() ? ((p || u || c || h) && (n.preventDefault
                        ? n.preventDefault()
                        : n.returnValue = !1), ((u || h) && !s || (p || c) &&
                        s) && t.slideNext(), ((p || c) && !s || (u || h) &&
                        s) && t.slidePrev()) : ((p || u || v || f) &&
                    (n.preventDefault
                        ? n.preventDefault()
                        : n.returnValue = !1), (u || f) && t.slideNext(), (p ||
                        v) && t.slidePrev()), t.emit('keyPress', o);
                }
            }
        }, enable: function () {
            var e = this, t = r();
            e.keyboard.enabled ||
            (m(t).on('keydown', e.keyboard.handle), e.keyboard.enabled = !0);
        }, disable: function () {
            var e = this, t = r();
            e.keyboard.enabled &&
            (m(t).off('keydown', e.keyboard.handle), e.keyboard.enabled = !1);
        },
    }, Z = {
        name: 'keyboard',
        params: {
            keyboard: {
                enabled: !1,
                onlyInViewport: !0,
                pageUpDown: !0,
            },
        },
        create: function () {z(this, { keyboard: t({ enabled: !1 }, K) });},
        on: {
            init: function (e) {
                e.params.keyboard.enabled && e.keyboard.enable();
            },
            destroy: function (e) {e.keyboard.enabled && e.keyboard.disable();},
        },
    };
    var J = {
        lastScrollTime: x(),
        lastEventBeforeSnap: void 0,
        recentWheelEvents: [],
        event: function () {
            return l().navigator.userAgent.indexOf('firefox') > -1
                ? 'DOMMouseScroll'
                : function () {
                    var e = r(), t = 'onwheel', a = t in e;
                    if (!a) {
                        var i = e.createElement('div');
                        i.setAttribute(t, 'return;'), a = 'function' ==
                            typeof i.onwheel;
                    }
                    return !a && e.implementation &&
                    e.implementation.hasFeature && !0 !==
                    e.implementation.hasFeature('', '') &&
                    (a = e.implementation.hasFeature('Events.wheel', '3.0')), a;
                }() ? 'wheel' : 'mousewheel';
        },
        normalize: function (e) {
            var t = 0, a = 0, i = 0, s = 0;
            return 'detail' in e && (a = e.detail), 'wheelDelta' in e &&
            (a = -e.wheelDelta / 120), 'wheelDeltaY' in e &&
            (a = -e.wheelDeltaY / 120), 'wheelDeltaX' in e &&
            (t = -e.wheelDeltaX / 120), 'axis' in e && e.axis ===
            e.HORIZONTAL_AXIS && (t = a, a = 0), i = 10 * t, s = 10 *
                a, 'deltaY' in e && (s = e.deltaY), 'deltaX' in e &&
            (i = e.deltaX), e.shiftKey && !i && (i = s, s = 0), (i || s) &&
            e.deltaMode && (1 === e.deltaMode
                ? (i *= 40, s *= 40)
                : (i *= 800, s *= 800)), i && !t && (t = i < 1 ? -1 : 1), s &&
            !a && (a = s < 1 ? -1 : 1), {
                spinX: t,
                spinY: a,
                pixelX: i,
                pixelY: s,
            };
        },
        handleMouseEnter: function () {
            this.enabled && (this.mouseEntered = !0);
        },
        handleMouseLeave: function () {
            this.enabled && (this.mouseEntered = !1);
        },
        handle: function (e) {
            var t = e, a = this;
            if (a.enabled) {
                var i = a.params.mousewheel;
                a.params.cssMode && t.preventDefault();
                var s = a.$el;
                if ('container' !== a.params.mousewheel.eventsTarget &&
                (s = m(a.params.mousewheel.eventsTarget)), !a.mouseEntered &&
                !s[0].contains(t.target) && !i.releaseOnEdges) return !0;
                t.originalEvent && (t = t.originalEvent);
                var r = 0, n = a.rtlTranslate ? -1 : 1, l = J.normalize(t);
                if (i.forceToAxis) if (a.isHorizontal()) {
                    if (!(Math.abs(l.pixelX) > Math.abs(l.pixelY))) return !0;
                    r = -l.pixelX * n;
                } else {
                    if (!(Math.abs(l.pixelY) > Math.abs(l.pixelX))) return !0;
                    r = -l.pixelY;
                } else r = Math.abs(l.pixelX) > Math.abs(l.pixelY) ? -l.pixelX *
                    n : -l.pixelY;
                if (0 === r) return !0;
                i.invert && (r = -r);
                var o = a.getTranslate() + r * i.sensitivity;
                if (o >= a.minTranslate() && (o = a.minTranslate()), o <=
                a.maxTranslate() && (o = a.maxTranslate()), (!!a.params.loop ||
                    !(o === a.minTranslate() || o === a.maxTranslate())) &&
                a.params.nested && t.stopPropagation(), a.params.freeMode) {
                    var d = {
                            time: x(),
                            delta: Math.abs(r),
                            direction: Math.sign(r),
                        }, p = a.mousewheel.lastEventBeforeSnap,
                        u = p && d.time < p.time + 500 && d.delta <= p.delta &&
                            d.direction === p.direction;
                    if (!u) {
                        a.mousewheel.lastEventBeforeSnap = void 0, a.params.loop &&
                        a.loopFix();
                        var c = a.getTranslate() + r * i.sensitivity,
                            h = a.isBeginning, v = a.isEnd;
                        if (c >= a.minTranslate() &&
                        (c = a.minTranslate()), c <= a.maxTranslate() &&
                        (c = a.maxTranslate()), a.setTransition(
                            0), a.setTranslate(
                            c), a.updateProgress(), a.updateActiveIndex(), a.updateSlidesClasses(), (!h &&
                            a.isBeginning || !v && a.isEnd) &&
                        a.updateSlidesClasses(), a.params.freeModeSticky) {
                            clearTimeout(
                                a.mousewheel.timeout), a.mousewheel.timeout = void 0;
                            var f = a.mousewheel.recentWheelEvents;
                            f.length >= 15 && f.shift();
                            var g = f.length ? f[f.length - 1] : void 0,
                                b = f[0];
                            if (f.push(d), g &&
                            (d.delta > g.delta || d.direction !==
                                g.direction)) f.splice(0); else if (f.length >=
                                15 && d.time - b.time < 500 && b.delta -
                                d.delta >= 1 && d.delta <= 6) {
                                var w = r > 0
                                    ? .8
                                    : .2;
                                a.mousewheel.lastEventBeforeSnap = d, f.splice(
                                    0), a.mousewheel.timeout = E((function () {
                                    a.slideToClosest(a.params.speed, !0, void 0,
                                        w);
                                }), 0);
                            }
                            a.mousewheel.timeout || (a.mousewheel.timeout = E(
                                (function () {
                                    a.mousewheel.lastEventBeforeSnap = d, f.splice(
                                        0), a.slideToClosest(a.params.speed, !0,
                                        void 0, .5);
                                }), 500));
                        }
                        if (u || a.emit('scroll', t), a.params.autoplay &&
                        a.params.autoplayDisableOnInteraction &&
                        a.autoplay.stop(), c === a.minTranslate() || c ===
                        a.maxTranslate()) return !0;
                    }
                } else {
                    var y = {
                        time: x(),
                        delta: Math.abs(r),
                        direction: Math.sign(r),
                        raw: e,
                    }, T = a.mousewheel.recentWheelEvents;
                    T.length >= 2 && T.shift();
                    var C = T.length ? T[T.length - 1] : void 0;
                    if (T.push(y), C
                        ? (y.direction !== C.direction || y.delta > C.delta ||
                        y.time > C.time + 150) && a.mousewheel.animateSlider(y)
                        : a.mousewheel.animateSlider(
                            y), a.mousewheel.releaseScroll(y)) return !0;
                }
                return t.preventDefault
                    ? t.preventDefault()
                    : t.returnValue = !1, !1;
            }
        },
        animateSlider: function (e) {
            var t = this, a = l();
            return !(this.params.mousewheel.thresholdDelta && e.delta <
                this.params.mousewheel.thresholdDelta) &&
                (!(this.params.mousewheel.thresholdTime && x() -
                    t.mousewheel.lastScrollTime <
                    this.params.mousewheel.thresholdTime) &&
                    (e.delta >= 6 && x() - t.mousewheel.lastScrollTime < 60 ||
                        (e.direction < 0
                            ? t.isEnd && !t.params.loop || t.animating ||
                            (t.slideNext(), t.emit('scroll', e.raw))
                            : t.isBeginning && !t.params.loop || t.animating ||
                            (t.slidePrev(), t.emit('scroll',
                                e.raw)), t.mousewheel.lastScrollTime = (new a.Date).getTime(), !1)));
        },
        releaseScroll: function (e) {
            var t = this, a = t.params.mousewheel;
            if (e.direction < 0) {
                if (t.isEnd && !t.params.loop && a.releaseOnEdges) return !0;
            } else if (t.isBeginning && !t.params.loop &&
                a.releaseOnEdges) return !0;
            return !1;
        },
        enable: function () {
            var e = this, t = J.event();
            if (e.params.cssMode) return e.wrapperEl.removeEventListener(t,
                e.mousewheel.handle), !0;
            if (!t) return !1;
            if (e.mousewheel.enabled) return !1;
            var a = e.$el;
            return 'container' !== e.params.mousewheel.eventsTarget &&
            (a = m(e.params.mousewheel.eventsTarget)), a.on('mouseenter',
                e.mousewheel.handleMouseEnter), a.on('mouseleave',
                e.mousewheel.handleMouseLeave), a.on(t,
                e.mousewheel.handle), e.mousewheel.enabled = !0, !0;
        },
        disable: function () {
            var e = this, t = J.event();
            if (e.params.cssMode) return e.wrapperEl.addEventListener(t,
                e.mousewheel.handle), !0;
            if (!t) return !1;
            if (!e.mousewheel.enabled) return !1;
            var a = e.$el;
            return 'container' !== e.params.mousewheel.eventsTarget &&
            (a = m(e.params.mousewheel.eventsTarget)), a.off(t,
                e.mousewheel.handle), e.mousewheel.enabled = !1, !0;
        },
    }, Q = {
        toggleEl: function (e, t) {
            e[t ? 'addClass' : 'removeClass'](
                this.params.navigation.disabledClass), e[0] && 'BUTTON' ===
            e[0].tagName && (e[0].disabled = t);
        },
        update: function () {
            var e = this, t = e.params.navigation, a = e.navigation.toggleEl;
            if (!e.params.loop) {
                var i = e.navigation, s = i.$nextEl, r = i.$prevEl;
                r && r.length > 0 &&
                (e.isBeginning ? a(r, !0) : a(r, !1), e.params.watchOverflow &&
                e.enabled &&
                r[e.isLocked ? 'addClass' : 'removeClass'](t.lockClass)), s &&
                s.length > 0 &&
                (e.isEnd ? a(s, !0) : a(s, !1), e.params.watchOverflow &&
                e.enabled &&
                s[e.isLocked ? 'addClass' : 'removeClass'](t.lockClass));
            }
        },
        onPrevClick: function (e) {
            var t = this;
            e.preventDefault(), t.isBeginning && !t.params.loop ||
            t.slidePrev();
        },
        onNextClick: function (e) {
            var t = this;
            e.preventDefault(), t.isEnd && !t.params.loop || t.slideNext();
        },
        init: function () {
            var e, t, a = this, i = a.params.navigation;
            (a.params.navigation = k(a.$el, a.params.navigation,
                a.params.createElements, {
                    nextEl: 'swiper-button-next',
                    prevEl: 'swiper-button-prev',
                }), i.nextEl || i.prevEl) && (i.nextEl &&
            (e = m(i.nextEl), a.params.uniqueNavElements && 'string' ==
            typeof i.nextEl && e.length > 1 && 1 ===
            a.$el.find(i.nextEl).length &&
            (e = a.$el.find(i.nextEl))), i.prevEl &&
            (t = m(i.prevEl), a.params.uniqueNavElements && 'string' ==
            typeof i.prevEl && t.length > 1 && 1 ===
            a.$el.find(i.prevEl).length && (t = a.$el.find(i.prevEl))), e &&
            e.length > 0 && e.on('click', a.navigation.onNextClick), t &&
            t.length > 0 && t.on('click', a.navigation.onPrevClick), M(
                a.navigation, {
                    $nextEl: e,
                    nextEl: e && e[0],
                    $prevEl: t,
                    prevEl: t && t[0],
                }), a.enabled ||
            (e && e.addClass(i.lockClass), t && t.addClass(i.lockClass)));
        },
        destroy: function () {
            var e = this, t = e.navigation, a = t.$nextEl, i = t.$prevEl;
            a && a.length &&
            (a.off('click', e.navigation.onNextClick), a.removeClass(
                e.params.navigation.disabledClass)), i && i.length &&
            (i.off('click', e.navigation.onPrevClick), i.removeClass(
                e.params.navigation.disabledClass));
        },
    }, ee = {
        update: function () {
            var e = this, t = e.rtl, a = e.params.pagination;
            if (a.el && e.pagination.el && e.pagination.$el && 0 !==
                e.pagination.$el.length) {
                var i, s = e.virtual && e.params.virtual.enabled
                    ? e.virtual.slides.length
                    : e.slides.length, r = e.pagination.$el, n = e.params.loop
                    ? Math.ceil(
                        (s - 2 * e.loopedSlides) / e.params.slidesPerGroup)
                    : e.snapGrid.length;
                if (e.params.loop
                    ? ((i = Math.ceil((e.activeIndex - e.loopedSlides) /
                        e.params.slidesPerGroup)) > s - 1 - 2 *
                    e.loopedSlides && (i -= s - 2 * e.loopedSlides), i > n -
                    1 && (i -= n), i < 0 && 'bullets' !==
                    e.params.paginationType && (i = n + i))
                    : i = void 0 !== e.snapIndex
                        ? e.snapIndex
                        : e.activeIndex || 0, 'bullets' === a.type &&
                e.pagination.bullets && e.pagination.bullets.length > 0) {
                    var l, o, d, p = e.pagination.bullets;
                    if (a.dynamicBullets &&
                    (e.pagination.bulletSize = p.eq(0)[e.isHorizontal()
                        ? 'outerWidth'
                        : 'outerHeight'](!0), r.css(
                        e.isHorizontal() ? 'width' : 'height',
                        e.pagination.bulletSize * (a.dynamicMainBullets + 4) +
                        'px'), a.dynamicMainBullets > 1 && void 0 !==
                    e.previousIndex && (e.pagination.dynamicBulletIndex += i -
                        e.previousIndex, e.pagination.dynamicBulletIndex >
                    a.dynamicMainBullets - 1
                        ? e.pagination.dynamicBulletIndex = a.dynamicMainBullets -
                            1
                        : e.pagination.dynamicBulletIndex < 0 &&
                        (e.pagination.dynamicBulletIndex = 0)), l = i -
                        e.pagination.dynamicBulletIndex, d = ((o = l +
                        (Math.min(p.length, a.dynamicMainBullets) - 1)) + l) /
                        2), p.removeClass(
                        a.bulletActiveClass + ' ' + a.bulletActiveClass +
                        '-next ' + a.bulletActiveClass + '-next-next ' +
                        a.bulletActiveClass + '-prev ' + a.bulletActiveClass +
                        '-prev-prev ' + a.bulletActiveClass +
                        '-main'), r.length > 1) p.each((function (e) {
                        var t = m(e), s = t.index();
                        s === i &&
                        t.addClass(a.bulletActiveClass), a.dynamicBullets &&
                        (s >= l && s <= o &&
                        t.addClass(a.bulletActiveClass + '-main'), s === l &&
                        t.prev().
                            addClass(a.bulletActiveClass + '-prev').
                            prev().
                            addClass(a.bulletActiveClass + '-prev-prev'), s ===
                        o && t.next().
                            addClass(a.bulletActiveClass + '-next').
                            next().
                            addClass(a.bulletActiveClass + '-next-next'));
                    })); else {
                        var u = p.eq(i), c = u.index();
                        if (u.addClass(a.bulletActiveClass), a.dynamicBullets) {
                            for (var h = p.eq(l), v = p.eq(o), f = l; f <=
                            o; f += 1) p.eq(f).
                                addClass(a.bulletActiveClass + '-main');
                            if (e.params.loop) if (c >= p.length -
                                a.dynamicMainBullets) {
                                for (var g = a.dynamicMainBullets; g >=
                                0; g -= 1) p.eq(p.length - g).
                                    addClass(a.bulletActiveClass + '-main');
                                p.eq(p.length - a.dynamicMainBullets - 1).
                                    addClass(a.bulletActiveClass + '-prev');
                            } else h.prev().
                                addClass(a.bulletActiveClass + '-prev').
                                prev().
                                addClass(a.bulletActiveClass +
                                    '-prev-prev'), v.next().
                                addClass(a.bulletActiveClass + '-next').
                                next().
                                addClass(a.bulletActiveClass +
                                    '-next-next'); else h.prev().
                                addClass(a.bulletActiveClass + '-prev').
                                prev().
                                addClass(a.bulletActiveClass +
                                    '-prev-prev'), v.next().
                                addClass(a.bulletActiveClass + '-next').
                                next().
                                addClass(a.bulletActiveClass + '-next-next');
                        }
                    }
                    if (a.dynamicBullets) {
                        var b = Math.min(p.length, a.dynamicMainBullets + 4),
                            w = (e.pagination.bulletSize * b -
                                e.pagination.bulletSize) / 2 - d *
                                e.pagination.bulletSize,
                            y = t ? 'right' : 'left';
                        p.css(e.isHorizontal() ? y : 'top', w + 'px');
                    }
                }
                if ('fraction' === a.type && (r.find(P(a.currentClass)).
                    text(a.formatFractionCurrent(i + 1)), r.find(
                    P(a.totalClass)).
                    text(a.formatFractionTotal(n))), 'progressbar' === a.type) {
                    var E;
                    E = a.progressbarOpposite ? e.isHorizontal()
                        ? 'vertical'
                        : 'horizontal' : e.isHorizontal()
                        ? 'horizontal'
                        : 'vertical';
                    var x = (i + 1) / n, T = 1, C = 1;
                    'horizontal' === E ? T = x : C = x, r.find(
                        P(a.progressbarFillClass)).
                        transform(
                            'translate3d(0,0,0) scaleX(' + T + ') scaleY(' + C +
                            ')').
                        transition(e.params.speed);
                }
                'custom' === a.type && a.renderCustom ? (r.html(
                    a.renderCustom(e, i + 1, n)), e.emit('paginationRender',
                    r[0])) : e.emit('paginationUpdate',
                    r[0]), e.params.watchOverflow && e.enabled &&
                r[e.isLocked ? 'addClass' : 'removeClass'](a.lockClass);
            }
        }, render: function () {
            var e = this, t = e.params.pagination;
            if (t.el && e.pagination.el && e.pagination.$el && 0 !==
                e.pagination.$el.length) {
                var a = e.virtual && e.params.virtual.enabled
                    ? e.virtual.slides.length
                    : e.slides.length, i = e.pagination.$el, s = '';
                if ('bullets' === t.type) {
                    var r = e.params.loop
                        ? Math.ceil(
                            (a - 2 * e.loopedSlides) / e.params.slidesPerGroup)
                        : e.snapGrid.length;
                    e.params.freeMode && !e.params.loop && r > a && (r = a);
                    for (var n = 0; n < r; n += 1) t.renderBullet
                        ? s += t.renderBullet.call(e, n, t.bulletClass)
                        : s += '<' + t.bulletElement + ' class="' +
                            t.bulletClass + '"></' + t.bulletElement + '>';
                    i.html(s), e.pagination.bullets = i.find(P(t.bulletClass));
                }
                'fraction' === t.type &&
                (s = t.renderFraction ? t.renderFraction.call(e, t.currentClass,
                    t.totalClass) : '<span class="' + t.currentClass +
                    '"></span> / <span class="' + t.totalClass +
                    '"></span>', i.html(s)), 'progressbar' === t.type &&
                (s = t.renderProgressbar ? t.renderProgressbar.call(e,
                    t.progressbarFillClass) : '<span class="' +
                    t.progressbarFillClass + '"></span>', i.html(
                    s)), 'custom' !== t.type &&
                e.emit('paginationRender', e.pagination.$el[0]);
            }
        }, init: function () {
            var e = this;
            e.params.pagination = k(e.$el, e.params.pagination,
                e.params.createElements, { el: 'swiper-pagination' });
            var t = e.params.pagination;
            if (t.el) {
                var a = m(t.el);
                0 !== a.length &&
                (e.params.uniqueNavElements && 'string' == typeof t.el &&
                a.length > 1 && (a = e.$el.find(t.el)), 'bullets' === t.type &&
                t.clickable && a.addClass(t.clickableClass), a.addClass(
                    t.modifierClass + t.type), 'bullets' === t.type &&
                t.dynamicBullets && (a.addClass('' + t.modifierClass + t.type +
                    '-dynamic'), e.pagination.dynamicBulletIndex = 0, t.dynamicMainBullets <
                1 && (t.dynamicMainBullets = 1)), 'progressbar' === t.type &&
                t.progressbarOpposite &&
                a.addClass(t.progressbarOppositeClass), t.clickable &&
                a.on('click', P(t.bulletClass), (function (t) {
                    t.preventDefault();
                    var a = m(this).index() * e.params.slidesPerGroup;
                    e.params.loop && (a += e.loopedSlides), e.slideTo(a);
                })), M(e.pagination, { $el: a, el: a[0] }), e.enabled ||
                a.addClass(t.lockClass));
            }
        }, destroy: function () {
            var e = this, t = e.params.pagination;
            if (t.el && e.pagination.el && e.pagination.$el && 0 !==
                e.pagination.$el.length) {
                var a = e.pagination.$el;
                a.removeClass(t.hiddenClass), a.removeClass(
                    t.modifierClass + t.type), e.pagination.bullets &&
                e.pagination.bullets.removeClass(
                    t.bulletActiveClass), t.clickable &&
                a.off('click', P(t.bulletClass));
            }
        },
    }, te = {
        setTranslate: function () {
            var e = this;
            if (e.params.scrollbar.el && e.scrollbar.el) {
                var t = e.scrollbar, a = e.rtlTranslate, i = e.progress,
                    s = t.dragSize, r = t.trackSize, n = t.$dragEl, l = t.$el,
                    o = e.params.scrollbar, d = s, p = (r - s) * i;
                a ? (p = -p) > 0 ? (d = s - p, p = 0) : -p + s > r &&
                    (d = r + p) : p < 0 ? (d = s + p, p = 0) : p + s > r &&
                    (d = r - p), e.isHorizontal() ? (n.transform(
                    'translate3d(' + p + 'px, 0, 0)'), n[0].style.width = d +
                    'px') : (n.transform(
                    'translate3d(0px, ' + p + 'px, 0)'), n[0].style.height = d +
                    'px'), o.hide && (clearTimeout(
                    e.scrollbar.timeout), l[0].style.opacity = 1, e.scrollbar.timeout = setTimeout(
                    (function () {l[0].style.opacity = 0, l.transition(400);}),
                    1e3));
            }
        },
        setTransition: function (e) {
            var t = this;
            t.params.scrollbar.el && t.scrollbar.el &&
            t.scrollbar.$dragEl.transition(e);
        },
        updateSize: function () {
            var e = this;
            if (e.params.scrollbar.el && e.scrollbar.el) {
                var t = e.scrollbar, a = t.$dragEl, i = t.$el;
                a[0].style.width = '', a[0].style.height = '';
                var s,
                    r = e.isHorizontal() ? i[0].offsetWidth : i[0].offsetHeight,
                    n = e.size / e.virtualSize, l = n * (r / e.size);
                s = 'auto' === e.params.scrollbar.dragSize ? r * n : parseInt(
                    e.params.scrollbar.dragSize, 10), e.isHorizontal()
                    ? a[0].style.width = s + 'px'
                    : a[0].style.height = s + 'px', i[0].style.display = n >= 1
                    ? 'none'
                    : '', e.params.scrollbar.hide &&
                (i[0].style.opacity = 0), M(t, {
                    trackSize: r,
                    divider: n,
                    moveDivider: l,
                    dragSize: s,
                }), e.params.watchOverflow && e.enabled &&
                t.$el[e.isLocked ? 'addClass' : 'removeClass'](
                    e.params.scrollbar.lockClass);
            }
        },
        getPointerPosition: function (e) {
            return this.isHorizontal()
                ? 'touchstart' === e.type || 'touchmove' === e.type
                    ? e.targetTouches[0].clientX
                    : e.clientX
                : 'touchstart' === e.type || 'touchmove' === e.type
                    ? e.targetTouches[0].clientY
                    : e.clientY;
        },
        setDragPosition: function (e) {
            var t, a = this, i = a.scrollbar, s = a.rtlTranslate, r = i.$el,
                n = i.dragSize, l = i.trackSize, o = i.dragStartPos;
            t = (i.getPointerPosition(e) -
                r.offset()[a.isHorizontal() ? 'left' : 'top'] -
                (null !== o ? o : n / 2)) / (l - n), t = Math.max(
                Math.min(t, 1), 0), s && (t = 1 - t);
            var d = a.minTranslate() + (a.maxTranslate() - a.minTranslate()) *
                t;
            a.updateProgress(d), a.setTranslate(
                d), a.updateActiveIndex(), a.updateSlidesClasses();
        },
        onDragStart: function (e) {
            var t = this, a = t.params.scrollbar, i = t.scrollbar,
                s = t.$wrapperEl, r = i.$el, n = i.$dragEl;
            t.scrollbar.isTouched = !0, t.scrollbar.dragStartPos = e.target ===
            n[0] || e.target === n
                ? i.getPointerPosition(e) -
                e.target.getBoundingClientRect()[t.isHorizontal()
                    ? 'left'
                    : 'top']
                : null, e.preventDefault(), e.stopPropagation(), s.transition(
                100), n.transition(100), i.setDragPosition(e), clearTimeout(
                t.scrollbar.dragTimeout), r.transition(0), a.hide &&
            r.css('opacity', 1), t.params.cssMode &&
            t.$wrapperEl.css('scroll-snap-type', 'none'), t.emit(
                'scrollbarDragStart', e);
        },
        onDragMove: function (e) {
            var t = this, a = t.scrollbar, i = t.$wrapperEl, s = a.$el,
                r = a.$dragEl;
            t.scrollbar.isTouched && (e.preventDefault
                ? e.preventDefault()
                : e.returnValue = !1, a.setDragPosition(e), i.transition(
                0), s.transition(0), r.transition(0), t.emit(
                'scrollbarDragMove', e));
        },
        onDragEnd: function (e) {
            var t = this, a = t.params.scrollbar, i = t.scrollbar,
                s = t.$wrapperEl, r = i.$el;
            t.scrollbar.isTouched &&
            (t.scrollbar.isTouched = !1, t.params.cssMode &&
            (t.$wrapperEl.css('scroll-snap-type', ''), s.transition(
                '')), a.hide &&
            (clearTimeout(t.scrollbar.dragTimeout), t.scrollbar.dragTimeout = E(
                (function () {r.css('opacity', 0), r.transition(400);}),
                1e3)), t.emit('scrollbarDragEnd', e), a.snapOnRelease &&
            t.slideToClosest());
        },
        enableDraggable: function () {
            var e = this;
            if (e.params.scrollbar.el) {
                var t = r(), a = e.scrollbar, i = e.touchEventsTouch,
                    s = e.touchEventsDesktop, n = e.params, l = e.support,
                    o = a.$el[0],
                    d = !(!l.passiveListener || !n.passiveListeners) &&
                        { passive: !1, capture: !1 },
                    p = !(!l.passiveListener || !n.passiveListeners) &&
                        { passive: !0, capture: !1 };
                o && (l.touch
                    ? (o.addEventListener(i.start, e.scrollbar.onDragStart,
                        d), o.addEventListener(i.move, e.scrollbar.onDragMove,
                        d), o.addEventListener(i.end, e.scrollbar.onDragEnd, p))
                    : (o.addEventListener(s.start, e.scrollbar.onDragStart,
                        d), t.addEventListener(s.move, e.scrollbar.onDragMove,
                        d), t.addEventListener(s.end, e.scrollbar.onDragEnd,
                        p)));
            }
        },
        disableDraggable: function () {
            var e = this;
            if (e.params.scrollbar.el) {
                var t = r(), a = e.scrollbar, i = e.touchEventsTouch,
                    s = e.touchEventsDesktop, n = e.params, l = e.support,
                    o = a.$el[0],
                    d = !(!l.passiveListener || !n.passiveListeners) &&
                        { passive: !1, capture: !1 },
                    p = !(!l.passiveListener || !n.passiveListeners) &&
                        { passive: !0, capture: !1 };
                o && (l.touch ? (o.removeEventListener(i.start,
                    e.scrollbar.onDragStart, d), o.removeEventListener(i.move,
                    e.scrollbar.onDragMove, d), o.removeEventListener(i.end,
                    e.scrollbar.onDragEnd, p)) : (o.removeEventListener(s.start,
                    e.scrollbar.onDragStart, d), t.removeEventListener(s.move,
                    e.scrollbar.onDragMove, d), t.removeEventListener(s.end,
                    e.scrollbar.onDragEnd, p)));
            }
        },
        init: function () {
            var e = this, t = e.scrollbar, a = e.$el;
            e.params.scrollbar = k(a, e.params.scrollbar,
                e.params.createElements, { el: 'swiper-scrollbar' });
            var i = e.params.scrollbar;
            if (i.el) {
                var s = m(i.el);
                e.params.uniqueNavElements && 'string' == typeof i.el &&
                s.length > 1 && 1 === a.find(i.el).length && (s = a.find(i.el));
                var r = s.find('.' + e.params.scrollbar.dragClass);
                0 === r.length && (r = m(
                    '<div class="' + e.params.scrollbar.dragClass +
                    '"></div>'), s.append(r)), M(t, {
                    $el: s,
                    el: s[0],
                    $dragEl: r,
                    dragEl: r[0],
                }), i.draggable && t.enableDraggable(), s &&
                s[e.enabled ? 'removeClass' : 'addClass'](
                    e.params.scrollbar.lockClass);
            }
        },
        destroy: function () {this.scrollbar.disableDraggable();},
    }, ae = {
        setTransform: function (e, t) {
            var a = this.rtl, i = m(e), s = a ? -1 : 1,
                r = i.attr('data-swiper-parallax') || '0',
                n = i.attr('data-swiper-parallax-x'),
                l = i.attr('data-swiper-parallax-y'),
                o = i.attr('data-swiper-parallax-scale'),
                d = i.attr('data-swiper-parallax-opacity');
            if (n || l ? (n = n || '0', l = l || '0') : this.isHorizontal()
                ? (n = r, l = '0')
                : (l = r, n = '0'), n = n.indexOf('%') >= 0 ? parseInt(n, 10) *
                t * s + '%' : n * t * s + 'px', l = l.indexOf('%') >= 0
                ? parseInt(l, 10) * t + '%'
                : l * t + 'px', null != d) {
                var p = d - (d - 1) * (1 - Math.abs(t));
                i[0].style.opacity = p;
            }
            if (null == o) i.transform(
                'translate3d(' + n + ', ' + l + ', 0px)'); else {
                var u = o - (o - 1) * (1 - Math.abs(t));
                i.transform(
                    'translate3d(' + n + ', ' + l + ', 0px) scale(' + u + ')');
            }
        },
        setTranslate: function () {
            var e = this, t = e.$el, a = e.slides, i = e.progress,
                s = e.snapGrid;
            t.children(
                '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').
                each((function (t) {e.parallax.setTransform(t, i);})), a.each(
                (function (t, a) {
                    var r = t.progress;
                    e.params.slidesPerGroup > 1 && 'auto' !==
                    e.params.slidesPerView &&
                    (r += Math.ceil(a / 2) - i * (s.length - 1)), r = Math.min(
                        Math.max(r, -1), 1), m(t).
                        find(
                            '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').
                        each((function (t) {e.parallax.setTransform(t, r);}));
                }));
        },
        setTransition: function (e) {
            void 0 === e && (e = this.params.speed);
            this.$el.find(
                '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').
                each((function (t) {
                    var a = m(t),
                        i = parseInt(a.attr('data-swiper-parallax-duration'),
                            10) || e;
                    0 === e && (i = 0), a.transition(i);
                }));
        },
    }, ie = {
        getDistanceBetweenTouches: function (e) {
            if (e.targetTouches.length < 2) return 1;
            var t = e.targetTouches[0].pageX, a = e.targetTouches[0].pageY,
                i = e.targetTouches[1].pageX, s = e.targetTouches[1].pageY;
            return Math.sqrt(Math.pow(i - t, 2) + Math.pow(s - a, 2));
        },
        onGestureStart: function (e) {
            var t = this, a = t.support, i = t.params.zoom, s = t.zoom,
                r = s.gesture;
            if (s.fakeGestureTouched = !1, s.fakeGestureMoved = !1, !a.gestures) {
                if ('touchstart' !== e.type || 'touchstart' === e.type &&
                    e.targetTouches.length < 2) return;
                s.fakeGestureTouched = !0, r.scaleStart = ie.getDistanceBetweenTouches(
                    e);
            }
            r.$slideEl && r.$slideEl.length ||
            (r.$slideEl = m(e.target).closest('.' + t.params.slideClass), 0 ===
            r.$slideEl.length && (r.$slideEl = t.slides.eq(
                t.activeIndex)), r.$imageEl = r.$slideEl.find(
                'img, svg, canvas, picture, .swiper-zoom-target'), r.$imageWrapEl = r.$imageEl.parent(
                '.' + i.containerClass), r.maxRatio = r.$imageWrapEl.attr(
                'data-swiper-zoom') || i.maxRatio, 0 !== r.$imageWrapEl.length)
                ? (r.$imageEl &&
                r.$imageEl.transition(0), t.zoom.isScaling = !0)
                : r.$imageEl = void 0;
        },
        onGestureChange: function (e) {
            var t = this, a = t.support, i = t.params.zoom, s = t.zoom,
                r = s.gesture;
            if (!a.gestures) {
                if ('touchmove' !== e.type || 'touchmove' === e.type &&
                    e.targetTouches.length < 2) return;
                s.fakeGestureMoved = !0, r.scaleMove = ie.getDistanceBetweenTouches(
                    e);
            }
            r.$imageEl && 0 !== r.$imageEl.length
                ? (a.gestures
                ? s.scale = e.scale * s.currentScale
                : s.scale = r.scaleMove / r.scaleStart *
                    s.currentScale, s.scale > r.maxRatio &&
                (s.scale = r.maxRatio - 1 +
                    Math.pow(s.scale - r.maxRatio + 1, .5)), s.scale < i.minRatio &&
                (s.scale = i.minRatio + 1 -
                    Math.pow(i.minRatio - s.scale + 1, .5)), r.$imageEl.transform(
                'translate3d(0,0,0) scale(' + s.scale + ')'))
                : 'gesturechange' === e.type && s.onGestureStart(e);
        },
        onGestureEnd: function (e) {
            var t = this, a = t.device, i = t.support, s = t.params.zoom,
                r = t.zoom, n = r.gesture;
            if (!i.gestures) {
                if (!r.fakeGestureTouched || !r.fakeGestureMoved) return;
                if ('touchend' !== e.type || 'touchend' === e.type &&
                    e.changedTouches.length < 2 && !a.android) return;
                r.fakeGestureTouched = !1, r.fakeGestureMoved = !1;
            }
            n.$imageEl && 0 !== n.$imageEl.length &&
            (r.scale = Math.max(Math.min(r.scale, n.maxRatio),
                s.minRatio), n.$imageEl.transition(t.params.speed).
                transform('translate3d(0,0,0) scale(' + r.scale +
                    ')'), r.currentScale = r.scale, r.isScaling = !1, 1 ===
            r.scale && (n.$slideEl = void 0));
        },
        onTouchStart: function (e) {
            var t = this.device, a = this.zoom, i = a.gesture, s = a.image;
            i.$imageEl && 0 !== i.$imageEl.length && (s.isTouched ||
                (t.android && e.cancelable &&
                e.preventDefault(), s.isTouched = !0, s.touchesStart.x = 'touchstart' ===
                e.type
                    ? e.targetTouches[0].pageX
                    : e.pageX, s.touchesStart.y = 'touchstart' === e.type
                    ? e.targetTouches[0].pageY
                    : e.pageY));
        },
        onTouchMove: function (e) {
            var t = this, a = t.zoom, i = a.gesture, s = a.image,
                r = a.velocity;
            if (i.$imageEl && 0 !== i.$imageEl.length &&
                (t.allowClick = !1, s.isTouched && i.$slideEl)) {
                s.isMoved ||
                (s.width = i.$imageEl[0].offsetWidth, s.height = i.$imageEl[0].offsetHeight, s.startX = T(
                    i.$imageWrapEl[0], 'x') || 0, s.startY = T(
                    i.$imageWrapEl[0], 'y') ||
                    0, i.slideWidth = i.$slideEl[0].offsetWidth, i.slideHeight = i.$slideEl[0].offsetHeight, i.$imageWrapEl.transition(
                    0));
                var n = s.width * a.scale, l = s.height * a.scale;
                if (!(n < i.slideWidth && l < i.slideHeight)) {
                    if (s.minX = Math.min(i.slideWidth / 2 - n / 2,
                        0), s.maxX = -s.minX, s.minY = Math.min(
                        i.slideHeight / 2 - l / 2,
                        0), s.maxY = -s.minY, s.touchesCurrent.x = 'touchmove' ===
                    e.type
                        ? e.targetTouches[0].pageX
                        : e.pageX, s.touchesCurrent.y = 'touchmove' === e.type
                        ? e.targetTouches[0].pageY
                        : e.pageY, !s.isMoved && !a.isScaling) {
                        if (t.isHorizontal() &&
                            (Math.floor(s.minX) === Math.floor(s.startX) &&
                                s.touchesCurrent.x < s.touchesStart.x ||
                                Math.floor(s.maxX) === Math.floor(s.startX) &&
                                s.touchesCurrent.x >
                                s.touchesStart.x)) return void (s.isTouched = !1);
                        if (!t.isHorizontal() &&
                            (Math.floor(s.minY) === Math.floor(s.startY) &&
                                s.touchesCurrent.y < s.touchesStart.y ||
                                Math.floor(s.maxY) === Math.floor(s.startY) &&
                                s.touchesCurrent.y >
                                s.touchesStart.y)) return void (s.isTouched = !1);
                    }
                    e.cancelable &&
                    e.preventDefault(), e.stopPropagation(), s.isMoved = !0, s.currentX = s.touchesCurrent.x -
                        s.touchesStart.x +
                        s.startX, s.currentY = s.touchesCurrent.y -
                        s.touchesStart.y + s.startY, s.currentX < s.minX &&
                    (s.currentX = s.minX + 1 -
                        Math.pow(s.minX - s.currentX + 1, .8)), s.currentX >
                    s.maxX && (s.currentX = s.maxX - 1 +
                        Math.pow(s.currentX - s.maxX + 1, .8)), s.currentY <
                    s.minY && (s.currentY = s.minY + 1 -
                        Math.pow(s.minY - s.currentY + 1, .8)), s.currentY >
                    s.maxY && (s.currentY = s.maxY - 1 +
                        Math.pow(s.currentY - s.maxY + 1,
                            .8)), r.prevPositionX ||
                    (r.prevPositionX = s.touchesCurrent.x), r.prevPositionY ||
                    (r.prevPositionY = s.touchesCurrent.y), r.prevTime ||
                    (r.prevTime = Date.now()), r.x = (s.touchesCurrent.x -
                        r.prevPositionX) / (Date.now() - r.prevTime) /
                        2, r.y = (s.touchesCurrent.y - r.prevPositionY) /
                        (Date.now() - r.prevTime) / 2, Math.abs(
                        s.touchesCurrent.x - r.prevPositionX) < 2 &&
                    (r.x = 0), Math.abs(s.touchesCurrent.y - r.prevPositionY) <
                    2 &&
                    (r.y = 0), r.prevPositionX = s.touchesCurrent.x, r.prevPositionY = s.touchesCurrent.y, r.prevTime = Date.now(), i.$imageWrapEl.transform(
                        'translate3d(' + s.currentX + 'px, ' + s.currentY +
                        'px,0)');
                }
            }
        },
        onTouchEnd: function () {
            var e = this.zoom, t = e.gesture, a = e.image, i = e.velocity;
            if (t.$imageEl && 0 !== t.$imageEl.length) {
                if (!a.isTouched ||
                    !a.isMoved) return a.isTouched = !1, void (a.isMoved = !1);
                a.isTouched = !1, a.isMoved = !1;
                var s = 300, r = 300, n = i.x * s, l = a.currentX + n,
                    o = i.y * r, d = a.currentY + o;
                0 !== i.x && (s = Math.abs((l - a.currentX) / i.x)), 0 !==
                i.y && (r = Math.abs((d - a.currentY) / i.y));
                var p = Math.max(s, r);
                a.currentX = l, a.currentY = d;
                var u = a.width * e.scale, c = a.height * e.scale;
                a.minX = Math.min(t.slideWidth / 2 - u / 2,
                    0), a.maxX = -a.minX, a.minY = Math.min(
                    t.slideHeight / 2 - c / 2,
                    0), a.maxY = -a.minY, a.currentX = Math.max(
                    Math.min(a.currentX, a.maxX),
                    a.minX), a.currentY = Math.max(Math.min(a.currentY, a.maxY),
                    a.minY), t.$imageWrapEl.transition(p).
                    transform(
                        'translate3d(' + a.currentX + 'px, ' + a.currentY +
                        'px,0)');
            }
        },
        onTransitionEnd: function () {
            var e = this, t = e.zoom, a = t.gesture;
            a.$slideEl && e.previousIndex !== e.activeIndex && (a.$imageEl &&
            a.$imageEl.transform(
                'translate3d(0,0,0) scale(1)'), a.$imageWrapEl &&
            a.$imageWrapEl.transform(
                'translate3d(0,0,0)'), t.scale = 1, t.currentScale = 1, a.$slideEl = void 0, a.$imageEl = void 0, a.$imageWrapEl = void 0);
        },
        toggle: function (e) {
            var t = this.zoom;
            t.scale && 1 !== t.scale ? t.out() : t.in(e);
        },
        in: function (e) {
            var t, a, i, s, r, n, o, d, p, u, c, h, v, f, g, b, w = this,
                y = l(), E = w.zoom, x = w.params.zoom, T = E.gesture,
                C = E.image;
            (T.$slideEl || (e && e.target && (T.$slideEl = m(e.target).
                closest('.' + w.params.slideClass)), T.$slideEl ||
            (w.params.virtual && w.params.virtual.enabled && w.virtual
                ? T.$slideEl = w.$wrapperEl.children(
                    '.' + w.params.slideActiveClass)
                : T.$slideEl = w.slides.eq(
                    w.activeIndex)), T.$imageEl = T.$slideEl.find(
                'img, svg, canvas, picture, .swiper-zoom-target'), T.$imageWrapEl = T.$imageEl.parent(
                '.' + x.containerClass)), T.$imageEl && 0 !==
            T.$imageEl.length && T.$imageWrapEl && 0 !==
            T.$imageWrapEl.length) &&
            (T.$slideEl.addClass('' + x.zoomedSlideClass), void 0 ===
            C.touchesStart.x && e
                ? (t = 'touchend' === e.type
                    ? e.changedTouches[0].pageX
                    : e.pageX, a = 'touchend' === e.type
                    ? e.changedTouches[0].pageY
                    : e.pageY)
                : (t = C.touchesStart.x, a = C.touchesStart.y), E.scale = T.$imageWrapEl.attr(
                'data-swiper-zoom') ||
                x.maxRatio, E.currentScale = T.$imageWrapEl.attr(
                'data-swiper-zoom') || x.maxRatio, e
                ? (g = T.$slideEl[0].offsetWidth, b = T.$slideEl[0].offsetHeight, i = T.$slideEl.offset().left +
                    y.scrollX + g / 2 - t, s = T.$slideEl.offset().top +
                    y.scrollY + b / 2 -
                    a, o = T.$imageEl[0].offsetWidth, d = T.$imageEl[0].offsetHeight, p = o *
                    E.scale, u = d * E.scale, v = -(c = Math.min(g / 2 - p / 2,
                    0)), f = -(h = Math.min(b / 2 - u / 2, 0)), (r = i *
                    E.scale) < c && (r = c), r > v && (r = v), (n = s *
                    E.scale) < h && (n = h), n > f && (n = f))
                : (r = 0, n = 0), T.$imageWrapEl.transition(300).
                transform('translate3d(' + r + 'px, ' + n +
                    'px,0)'), T.$imageEl.transition(300).
                transform('translate3d(0,0,0) scale(' + E.scale + ')'));
        },
        out: function () {
            var e = this, t = e.zoom, a = e.params.zoom, i = t.gesture;
            i.$slideEl ||
            (e.params.virtual && e.params.virtual.enabled && e.virtual
                ? i.$slideEl = e.$wrapperEl.children(
                    '.' + e.params.slideActiveClass)
                : i.$slideEl = e.slides.eq(
                    e.activeIndex), i.$imageEl = i.$slideEl.find(
                'img, svg, canvas, picture, .swiper-zoom-target'), i.$imageWrapEl = i.$imageEl.parent(
                '.' + a.containerClass)), i.$imageEl && 0 !==
            i.$imageEl.length && i.$imageWrapEl && 0 !==
            i.$imageWrapEl.length &&
            (t.scale = 1, t.currentScale = 1, i.$imageWrapEl.transition(300).
                transform('translate3d(0,0,0)'), i.$imageEl.transition(300).
                transform(
                    'translate3d(0,0,0) scale(1)'), i.$slideEl.removeClass(
                '' + a.zoomedSlideClass), i.$slideEl = void 0);
        },
        toggleGestures: function (e) {
            var t = this, a = t.zoom, i = a.slideSelector,
                s = a.passiveListener;
            t.$wrapperEl[e]('gesturestart', i, a.onGestureStart,
                s), t.$wrapperEl[e]('gesturechange', i, a.onGestureChange,
                s), t.$wrapperEl[e]('gestureend', i, a.onGestureEnd, s);
        },
        enableGestures: function () {
            this.zoom.gesturesEnabled ||
            (this.zoom.gesturesEnabled = !0, this.zoom.toggleGestures('on'));
        },
        disableGestures: function () {
            this.zoom.gesturesEnabled &&
            (this.zoom.gesturesEnabled = !1, this.zoom.toggleGestures('off'));
        },
        enable: function () {
            var e = this, t = e.support, a = e.zoom;
            if (!a.enabled) {
                a.enabled = !0;
                var i = !('touchstart' !== e.touchEvents.start ||
                    !t.passiveListener || !e.params.passiveListeners) &&
                    { passive: !0, capture: !1 },
                    s = !t.passiveListener || { passive: !1, capture: !0 },
                    r = '.' + e.params.slideClass;
                e.zoom.passiveListener = i, e.zoom.slideSelector = r, t.gestures
                    ? (e.$wrapperEl.on(e.touchEvents.start,
                        e.zoom.enableGestures, i), e.$wrapperEl.on(
                        e.touchEvents.end, e.zoom.disableGestures, i))
                    : 'touchstart' === e.touchEvents.start &&
                    (e.$wrapperEl.on(e.touchEvents.start, r, a.onGestureStart,
                        i), e.$wrapperEl.on(e.touchEvents.move, r,
                        a.onGestureChange, s), e.$wrapperEl.on(
                        e.touchEvents.end, r, a.onGestureEnd,
                        i), e.touchEvents.cancel &&
                    e.$wrapperEl.on(e.touchEvents.cancel, r, a.onGestureEnd,
                        i)), e.$wrapperEl.on(e.touchEvents.move,
                    '.' + e.params.zoom.containerClass, a.onTouchMove, s);
            }
        },
        disable: function () {
            var e = this, t = e.zoom;
            if (t.enabled) {
                var a = e.support;
                e.zoom.enabled = !1;
                var i = !('touchstart' !== e.touchEvents.start ||
                    !a.passiveListener || !e.params.passiveListeners) &&
                    { passive: !0, capture: !1 },
                    s = !a.passiveListener || { passive: !1, capture: !0 },
                    r = '.' + e.params.slideClass;
                a.gestures
                    ? (e.$wrapperEl.off(e.touchEvents.start,
                    e.zoom.enableGestures, i), e.$wrapperEl.off(
                    e.touchEvents.end, e.zoom.disableGestures, i))
                    : 'touchstart' === e.touchEvents.start &&
                    (e.$wrapperEl.off(e.touchEvents.start, r, t.onGestureStart,
                        i), e.$wrapperEl.off(e.touchEvents.move, r,
                        t.onGestureChange, s), e.$wrapperEl.off(
                        e.touchEvents.end, r, t.onGestureEnd,
                        i), e.touchEvents.cancel &&
                    e.$wrapperEl.off(e.touchEvents.cancel, r, t.onGestureEnd,
                        i)), e.$wrapperEl.off(e.touchEvents.move,
                    '.' + e.params.zoom.containerClass, t.onTouchMove, s);
            }
        },
    }, se = {
        loadInSlide: function (e, t) {
            void 0 === t && (t = !0);
            var a = this, i = a.params.lazy;
            if (void 0 !== e && 0 !== a.slides.length) {
                var s = a.virtual && a.params.virtual.enabled
                    ? a.$wrapperEl.children('.' + a.params.slideClass +
                        '[data-swiper-slide-index="' + e + '"]')
                    : a.slides.eq(e), r = s.find(
                    '.' + i.elementClass + ':not(.' + i.loadedClass +
                    '):not(.' + i.loadingClass + ')');
                !s.hasClass(i.elementClass) || s.hasClass(i.loadedClass) ||
                s.hasClass(i.loadingClass) || r.push(s[0]), 0 !== r.length &&
                r.each((function (e) {
                    var r = m(e);
                    r.addClass(i.loadingClass);
                    var n = r.attr('data-background'), l = r.attr('data-src'),
                        o = r.attr('data-srcset'), d = r.attr('data-sizes'),
                        p = r.parent('picture');
                    a.loadImage(r[0], l || n, o, d, !1, (function () {
                        if (null != a && a && (!a || a.params) &&
                            !a.destroyed) {
                            if (n ? (r.css('background-image',
                                'url("' + n + '")'), r.removeAttr(
                                'data-background')) : (o &&
                            (r.attr('srcset', o), r.removeAttr(
                                'data-srcset')), d &&
                            (r.attr('sizes', d), r.removeAttr(
                                'data-sizes')), p.length &&
                            p.children('source').each((function (e) {
                                var t = m(e);
                                t.attr('data-srcset') && (t.attr('srcset',
                                    t.attr('data-srcset')), t.removeAttr(
                                    'data-srcset'));
                            })), l && (r.attr('src', l), r.removeAttr(
                                'data-src'))), r.addClass(i.loadedClass).
                                removeClass(i.loadingClass), s.find(
                                '.' + i.preloaderClass).
                                remove(), a.params.loop && t) {
                                var e = s.attr('data-swiper-slide-index');
                                if (s.hasClass(a.params.slideDuplicateClass)) {
                                    var u = a.$wrapperEl.children(
                                        '[data-swiper-slide-index="' + e +
                                        '"]:not(.' +
                                        a.params.slideDuplicateClass + ')');
                                    a.lazy.loadInSlide(u.index(), !1);
                                } else {
                                    var c = a.$wrapperEl.children(
                                        '.' + a.params.slideDuplicateClass +
                                        '[data-swiper-slide-index="' + e +
                                        '"]');
                                    a.lazy.loadInSlide(c.index(), !1);
                                }
                            }
                            a.emit('lazyImageReady', s[0],
                                r[0]), a.params.autoHeight &&
                            a.updateAutoHeight();
                        }
                    })), a.emit('lazyImageLoad', s[0], r[0]);
                }));
            }
        }, load: function () {
            var e = this, t = e.$wrapperEl, a = e.params, i = e.slides,
                s = e.activeIndex, r = e.virtual && a.virtual.enabled,
                n = a.lazy, l = a.slidesPerView;

            function o (e) {
                if (r) {
                    if (t.children(
                        '.' + a.slideClass + '[data-swiper-slide-index="' + e +
                        '"]').length) return !0;
                } else if (i[e]) return !0;
                return !1;
            }

            function d (e) {
                return r ? m(e).attr('data-swiper-slide-index') : m(e).index();
            }

            if ('auto' === l && (l = 0), e.lazy.initialImageLoaded ||
            (e.lazy.initialImageLoaded = !0), e.params.watchSlidesVisibility) t.children(
                '.' + a.slideVisibleClass).
                each((function (t) {
                    var a = r ? m(t).
                        attr('data-swiper-slide-index') : m(t).index();
                    e.lazy.loadInSlide(a);
                })); else if (l > 1) for (var p = s; p < s + l; p += 1) o(p) &&
            e.lazy.loadInSlide(p); else e.lazy.loadInSlide(s);
            if (n.loadPrevNext) if (l > 1 || n.loadPrevNextAmount &&
                n.loadPrevNextAmount > 1) {
                for (var u = n.loadPrevNextAmount, c = l, h = Math.min(
                    s + c + Math.max(u, c), i.length), v = Math.max(
                    s - Math.max(c, u), 0), f = s + l; f < h; f += 1) o(f) &&
                e.lazy.loadInSlide(f);
                for (var g = v; g < s; g += 1) o(g) && e.lazy.loadInSlide(g);
            } else {
                var b = t.children('.' + a.slideNextClass);
                b.length > 0 && e.lazy.loadInSlide(d(b));
                var w = t.children('.' + a.slidePrevClass);
                w.length > 0 && e.lazy.loadInSlide(d(w));
            }
        }, checkInViewOnLoad: function () {
            var e = l(), t = this;
            if (t && !t.destroyed) {
                var a = t.params.lazy.scrollingElement ? m(
                    t.params.lazy.scrollingElement) : m(e), i = a[0] === e,
                    s = i ? e.innerWidth : a[0].offsetWidth,
                    r = i ? e.innerHeight : a[0].offsetHeight,
                    n = t.$el.offset(), o = !1;
                t.rtlTranslate && (n.left -= t.$el[0].scrollLeft);
                for (var d = [
                    [n.left, n.top],
                    [n.left + t.width, n.top],
                    [n.left, n.top + t.height],
                    [n.left + t.width, n.top + t.height]], p = 0; p <
                     d.length; p += 1) {
                    var u = d[p];
                    if (u[0] >= 0 && u[0] <= s && u[1] >= 0 && u[1] <= r) {
                        if (0 === u[0] && 0 === u[1]) continue;
                        o = !0;
                    }
                }
                var c = !('touchstart' !== t.touchEvents.start ||
                    !t.support.passiveListener || !t.params.passiveListeners) &&
                    { passive: !0, capture: !1 };
                o ? (t.lazy.load(), a.off('scroll', t.lazy.checkInViewOnLoad,
                    c)) : t.lazy.scrollHandlerAttached ||
                    (t.lazy.scrollHandlerAttached = !0, a.on('scroll',
                        t.lazy.checkInViewOnLoad, c));
            }
        },
    }, re = {
        LinearSpline: function (e, t) {
            var a, i, s, r, n, l = function (e, t) {
                for (i = -1, a = e.length; a - i > 1;) e[s = a + i >> 1] <= t
                    ? i = s
                    : a = s;
                return a;
            };
            return this.x = e, this.y = t, this.lastIndex = e.length -
                1, this.interpolate = function (e) {
                return e
                    ? (n = l(this.x, e), r = n - 1, (e - this.x[r]) *
                    (this.y[n] - this.y[r]) / (this.x[n] - this.x[r]) +
                    this.y[r])
                    : 0;
            }, this;
        },
        getInterpolateFunction: function (e) {
            var t = this;
            t.controller.spline ||
            (t.controller.spline = t.params.loop ? new re.LinearSpline(
                t.slidesGrid, e.slidesGrid) : new re.LinearSpline(t.snapGrid,
                e.snapGrid));
        },
        setTranslate: function (e, t) {
            var a, i, s = this, r = s.controller.control, n = s.constructor;

            function l (e) {
                var t = s.rtlTranslate ? -s.translate : s.translate;
                'slide' === s.params.controller.by &&
                (s.controller.getInterpolateFunction(
                    e), i = -s.controller.spline.interpolate(-t)), i &&
                'container' !== s.params.controller.by ||
                (a = (e.maxTranslate() - e.minTranslate()) /
                    (s.maxTranslate() - s.minTranslate()), i = (t -
                    s.minTranslate()) * a +
                    e.minTranslate()), s.params.controller.inverse &&
                (i = e.maxTranslate() - i), e.updateProgress(i), e.setTranslate(
                    i, s), e.updateActiveIndex(), e.updateSlidesClasses();
            }

            if (Array.isArray(r)) for (var o = 0; o < r.length; o += 1) r[o] !==
            t && r[o] instanceof n && l(r[o]); else r instanceof n && t !== r &&
            l(r);
        },
        setTransition: function (e, t) {
            var a, i = this, s = i.constructor, r = i.controller.control;

            function n (t) {
                t.setTransition(e, i), 0 !== e &&
                (t.transitionStart(), t.params.autoHeight &&
                E((function () {t.updateAutoHeight();})), t.$wrapperEl.transitionEnd(
                    (function () {
                        r &&
                        (t.params.loop && 'slide' === i.params.controller.by &&
                        t.loopFix(), t.transitionEnd());
                    })));
            }

            if (Array.isArray(r)) for (a = 0; a < r.length; a += 1) r[a] !==
            t && r[a] instanceof s && n(r[a]); else r instanceof s && t !== r &&
            n(r);
        },
    }, ne = {
        getRandomNumber: function (e) {
            void 0 === e && (e = 16);
            return 'x'.repeat(e).
                replace(/x/g, (function () {
                    return Math.round(16 * Math.random()).
                        toString(16);
                }));
        },
        makeElFocusable: function (e) {return e.attr('tabIndex', '0'), e;},
        makeElNotFocusable: function (e) {return e.attr('tabIndex', '-1'), e;},
        addElRole: function (e, t) {return e.attr('role', t), e;},
        addElRoleDescription: function (e, t) {
            return e.attr('aria-roledescription', t), e;
        },
        addElControls: function (e, t) {return e.attr('aria-controls', t), e;},
        addElLabel: function (e, t) {return e.attr('aria-label', t), e;},
        addElId: function (e, t) {return e.attr('id', t), e;},
        addElLive: function (e, t) {return e.attr('aria-live', t), e;},
        disableEl: function (e) {return e.attr('aria-disabled', !0), e;},
        enableEl: function (e) {return e.attr('aria-disabled', !1), e;},
        onEnterOrSpaceKey: function (e) {
            if (13 === e.keyCode || 32 === e.keyCode) {
                var t = this, a = t.params.a11y, i = m(e.target);
                t.navigation && t.navigation.$nextEl &&
                i.is(t.navigation.$nextEl) &&
                (t.isEnd && !t.params.loop || t.slideNext(), t.isEnd
                    ? t.a11y.notify(a.lastSlideMessage)
                    : t.a11y.notify(a.nextSlideMessage)), t.navigation &&
                t.navigation.$prevEl && i.is(t.navigation.$prevEl) &&
                (t.isBeginning && !t.params.loop || t.slidePrev(), t.isBeginning
                    ? t.a11y.notify(a.firstSlideMessage)
                    : t.a11y.notify(a.prevSlideMessage)), t.pagination &&
                i.is(P(t.params.pagination.bulletClass)) && i[0].click();
            }
        },
        notify: function (e) {
            var t = this.a11y.liveRegion;
            0 !== t.length && (t.html(''), t.html(e));
        },
        updateNavigation: function () {
            var e = this;
            if (!e.params.loop && e.navigation) {
                var t = e.navigation, a = t.$nextEl, i = t.$prevEl;
                i && i.length > 0 && (e.isBeginning ? (e.a11y.disableEl(
                    i), e.a11y.makeElNotFocusable(i)) : (e.a11y.enableEl(
                    i), e.a11y.makeElFocusable(i))), a && a.length > 0 &&
                (e.isEnd
                    ? (e.a11y.disableEl(a), e.a11y.makeElNotFocusable(a))
                    : (e.a11y.enableEl(a), e.a11y.makeElFocusable(a)));
            }
        },
        updatePagination: function () {
            var e = this, t = e.params.a11y;
            e.pagination && e.params.pagination.clickable &&
            e.pagination.bullets && e.pagination.bullets.length &&
            e.pagination.bullets.each((function (a) {
                var i = m(a);
                e.a11y.makeElFocusable(i), e.params.pagination.renderBullet ||
                (e.a11y.addElRole(i, 'button'), e.a11y.addElLabel(i,
                    t.paginationBulletMessage.replace(/\{\{index\}\}/,
                        i.index() + 1)));
            }));
        },
        init: function () {
            var e = this, t = e.params.a11y;
            e.$el.append(e.a11y.liveRegion);
            var a = e.$el;
            t.containerRoleDescriptionMessage && e.a11y.addElRoleDescription(a,
                t.containerRoleDescriptionMessage), t.containerMessage &&
            e.a11y.addElLabel(a, t.containerMessage);
            var i = e.$wrapperEl, s = i.attr('id') || 'swiper-wrapper-' +
                e.a11y.getRandomNumber(16),
                r = e.params.autoplay && e.params.autoplay.enabled
                    ? 'off'
                    : 'polite';
            e.a11y.addElId(i, s), e.a11y.addElLive(i,
                r), t.itemRoleDescriptionMessage &&
            e.a11y.addElRoleDescription(m(e.slides),
                t.itemRoleDescriptionMessage), e.a11y.addElRole(m(e.slides),
                t.slideRole);
            var n, l, o = e.params.loop ? e.slides.filter((function (t) {
                return !t.classList.contains(e.params.slideDuplicateClass);
            })).length : e.slides.length;
            e.slides.each((function (a, i) {
                var s = m(a), r = e.params.loop ? parseInt(
                    s.attr('data-swiper-slide-index'), 10) : i,
                    n = t.slideLabelMessage.replace(/\{\{index\}\}/, r + 1).
                        replace(/\{\{slidesLength\}\}/, o);
                e.a11y.addElLabel(s, n);
            })), e.navigation && e.navigation.$nextEl &&
            (n = e.navigation.$nextEl), e.navigation && e.navigation.$prevEl &&
            (l = e.navigation.$prevEl), n && n.length &&
            (e.a11y.makeElFocusable(n), 'BUTTON' !== n[0].tagName &&
            (e.a11y.addElRole(n, 'button'), n.on('keydown',
                e.a11y.onEnterOrSpaceKey)), e.a11y.addElLabel(n,
                t.nextSlideMessage), e.a11y.addElControls(n, s)), l &&
            l.length && (e.a11y.makeElFocusable(l), 'BUTTON' !== l[0].tagName &&
            (e.a11y.addElRole(l, 'button'), l.on('keydown',
                e.a11y.onEnterOrSpaceKey)), e.a11y.addElLabel(l,
                t.prevSlideMessage), e.a11y.addElControls(l,
                s)), e.pagination && e.params.pagination.clickable &&
            e.pagination.bullets && e.pagination.bullets.length &&
            e.pagination.$el.on('keydown', P(e.params.pagination.bulletClass),
                e.a11y.onEnterOrSpaceKey);
        },
        destroy: function () {
            var e, t, a = this;
            a.a11y.liveRegion && a.a11y.liveRegion.length > 0 &&
            a.a11y.liveRegion.remove(), a.navigation && a.navigation.$nextEl &&
            (e = a.navigation.$nextEl), a.navigation && a.navigation.$prevEl &&
            (t = a.navigation.$prevEl), e &&
            e.off('keydown', a.a11y.onEnterOrSpaceKey), t &&
            t.off('keydown', a.a11y.onEnterOrSpaceKey), a.pagination &&
            a.params.pagination.clickable && a.pagination.bullets &&
            a.pagination.bullets.length &&
            a.pagination.$el.off('keydown', P(a.params.pagination.bulletClass),
                a.a11y.onEnterOrSpaceKey);
        },
    }, le = {
        init: function () {
            var e = this, t = l();
            if (e.params.history) {
                if (!t.history ||
                    !t.history.pushState) return e.params.history.enabled = !1, void (e.params.hashNavigation.enabled = !0);
                var a = e.history;
                a.initialized = !0, a.paths = le.getPathValues(
                    e.params.url), (a.paths.key || a.paths.value) &&
                (a.scrollToSlide(0, a.paths.value,
                    e.params.runCallbacksOnInit), e.params.history.replaceState ||
                t.addEventListener('popstate', e.history.setHistoryPopState));
            }
        },
        destroy: function () {
            var e = l();
            this.params.history.replaceState ||
            e.removeEventListener('popstate', this.history.setHistoryPopState);
        },
        setHistoryPopState: function () {
            var e = this;
            e.history.paths = le.getPathValues(
                e.params.url), e.history.scrollToSlide(e.params.speed,
                e.history.paths.value, !1);
        },
        getPathValues: function (e) {
            var t = l(), a = (e ? new URL(e) : t.location).pathname.slice(1).
                split('/').
                filter((function (e) {return '' !== e;})), i = a.length;
            return { key: a[i - 2], value: a[i - 1] };
        },
        setHistory: function (e, t) {
            var a = this, i = l();
            if (a.history.initialized && a.params.history.enabled) {
                var s;
                s = a.params.url ? new URL(a.params.url) : i.location;
                var r = a.slides.eq(t), n = le.slugify(r.attr('data-history'));
                if (a.params.history.root.length > 0) {
                    var o = a.params.history.root;
                    '/' === o[o.length - 1] &&
                    (o = o.slice(0, o.length - 1)), n = o + '/' + e + '/' + n;
                } else s.pathname.includes(e) || (n = e + '/' + n);
                var d = i.history.state;
                d && d.value === n ||
                (a.params.history.replaceState ? i.history.replaceState(
                    { value: n }, null, n) : i.history.pushState({ value: n },
                    null, n));
            }
        },
        slugify: function (e) {
            return e.toString().
                replace(/\s+/g, '-').
                replace(/[^\w-]+/g, '').
                replace(/--+/g, '-').
                replace(/^-+/, '').
                replace(/-+$/, '');
        },
        scrollToSlide: function (e, t, a) {
            var i = this;
            if (t) for (var s = 0, r = i.slides.length; s < r; s += 1) {
                var n = i.slides.eq(s);
                if (le.slugify(n.attr('data-history')) === t && !n.hasClass(
                    i.params.slideDuplicateClass)) {
                    var l = n.index();
                    i.slideTo(l, e, a);
                }
            } else i.slideTo(0, e, a);
        },
    }, oe = {
        onHashChange: function () {
            var e = this, t = r();
            e.emit('hashChange');
            var a = t.location.hash.replace('#', '');
            if (a !== e.slides.eq(e.activeIndex).
                attr('data-hash')) {
                var i = e.$wrapperEl.children(
                    '.' + e.params.slideClass + '[data-hash="' + a + '"]').
                    index();
                if (void 0 === i) return;
                e.slideTo(i);
            }
        }, setHash: function () {
            var e = this, t = l(), a = r();
            if (e.hashNavigation.initialized &&
                e.params.hashNavigation.enabled) if (e.params.hashNavigation.replaceState &&
                t.history && t.history.replaceState) t.history.replaceState(
                null, null,
                '#' + e.slides.eq(e.activeIndex).attr('data-hash') ||
                ''), e.emit('hashSet'); else {
                var i = e.slides.eq(e.activeIndex),
                    s = i.attr('data-hash') || i.attr('data-history');
                a.location.hash = s || '', e.emit('hashSet');
            }
        }, init: function () {
            var e = this, t = r(), a = l();
            if (!(!e.params.hashNavigation.enabled || e.params.history &&
                e.params.history.enabled)) {
                e.hashNavigation.initialized = !0;
                var i = t.location.hash.replace('#', '');
                if (i) for (var s = 0, n = e.slides.length; s < n; s += 1) {
                    var o = e.slides.eq(s);
                    if ((o.attr('data-hash') || o.attr('data-history')) === i &&
                        !o.hasClass(e.params.slideDuplicateClass)) {
                        var d = o.index();
                        e.slideTo(d, 0, e.params.runCallbacksOnInit, !0);
                    }
                }
                e.params.hashNavigation.watchState &&
                m(a).on('hashchange', e.hashNavigation.onHashChange);
            }
        }, destroy: function () {
            var e = l();
            this.params.hashNavigation.watchState &&
            m(e).off('hashchange', this.hashNavigation.onHashChange);
        },
    }, de = {
        run: function () {
            var e = this, t = e.slides.eq(e.activeIndex),
                a = e.params.autoplay.delay;
            t.attr('data-swiper-autoplay') &&
            (a = t.attr('data-swiper-autoplay') ||
                e.params.autoplay.delay), clearTimeout(
                e.autoplay.timeout), e.autoplay.timeout = E((function () {
                var t;
                e.params.autoplay.reverseDirection
                    ? e.params.loop
                    ? (e.loopFix(), t = e.slidePrev(e.params.speed, !0,
                        !0), e.emit('autoplay'))
                    : e.isBeginning ? e.params.autoplay.stopOnLastSlide
                        ? e.autoplay.stop()
                        : (t = e.slideTo(e.slides.length - 1, e.params.speed,
                            !0, !0), e.emit('autoplay')) : (t = e.slidePrev(
                        e.params.speed, !0, !0), e.emit('autoplay'))
                    : e.params.loop ? (e.loopFix(), t = e.slideNext(
                    e.params.speed, !0, !0), e.emit('autoplay')) : e.isEnd
                    ? e.params.autoplay.stopOnLastSlide
                        ? e.autoplay.stop()
                        : (t = e.slideTo(0, e.params.speed, !0, !0), e.emit(
                            'autoplay'))
                    : (t = e.slideNext(e.params.speed, !0, !0), e.emit(
                        'autoplay')), (e.params.cssMode && e.autoplay.running ||
                    !1 === t) && e.autoplay.run();
            }), a);
        }, start: function () {
            var e = this;
            return void 0 === e.autoplay.timeout && (!e.autoplay.running &&
                (e.autoplay.running = !0, e.emit(
                    'autoplayStart'), e.autoplay.run(), !0));
        }, stop: function () {
            var e = this;
            return !!e.autoplay.running && (void 0 !== e.autoplay.timeout &&
                (e.autoplay.timeout && (clearTimeout(
                    e.autoplay.timeout), e.autoplay.timeout = void 0), e.autoplay.running = !1, e.emit(
                    'autoplayStop'), !0));
        }, pause: function (e) {
            var t = this;
            t.autoplay.running && (t.autoplay.paused || (t.autoplay.timeout &&
            clearTimeout(t.autoplay.timeout), t.autoplay.paused = !0, 0 !== e &&
            t.params.autoplay.waitForTransition ? [
                'transitionend',
                'webkitTransitionEnd'].forEach((function (e) {
                t.$wrapperEl[0].addEventListener(e, t.autoplay.onTransitionEnd);
            })) : (t.autoplay.paused = !1, t.autoplay.run())));
        }, onVisibilityChange: function () {
            var e = this, t = r();
            'hidden' === t.visibilityState && e.autoplay.running &&
            e.autoplay.pause(), 'visible' === t.visibilityState &&
            e.autoplay.paused && (e.autoplay.run(), e.autoplay.paused = !1);
        }, onTransitionEnd: function (e) {
            var t = this;
            t && !t.destroyed && t.$wrapperEl && e.target === t.$wrapperEl[0] &&
            (['transitionend', 'webkitTransitionEnd'].forEach((function (e) {
                t.$wrapperEl[0].removeEventListener(e,
                    t.autoplay.onTransitionEnd);
            })), t.autoplay.paused = !1, t.autoplay.running
                ? t.autoplay.run()
                : t.autoplay.stop());
        }, onMouseEnter: function () {
            var e = this;
            e.params.autoplay.disableOnInteraction
                ? e.autoplay.stop()
                : e.autoplay.pause(), [
                'transitionend',
                'webkitTransitionEnd'].forEach((function (t) {
                e.$wrapperEl[0].removeEventListener(t,
                    e.autoplay.onTransitionEnd);
            }));
        }, onMouseLeave: function () {
            var e = this;
            e.params.autoplay.disableOnInteraction ||
            (e.autoplay.paused = !1, e.autoplay.run());
        }, attachMouseEvents: function () {
            var e = this;
            e.params.autoplay.pauseOnMouseEnter &&
            (e.$el.on('mouseenter', e.autoplay.onMouseEnter), e.$el.on(
                'mouseleave', e.autoplay.onMouseLeave));
        }, detachMouseEvents: function () {
            var e = this;
            e.$el.off('mouseenter', e.autoplay.onMouseEnter), e.$el.off(
                'mouseleave', e.autoplay.onMouseLeave);
        },
    }, pe = {
        setTranslate: function () {
            for (var e = this, t = e.slides, a = 0; a < t.length; a += 1) {
                var i = e.slides.eq(a), s = -i[0].swiperSlideOffset;
                e.params.virtualTranslate || (s -= e.translate);
                var r = 0;
                e.isHorizontal() || (r = s, s = 0);
                var n = e.params.fadeEffect.crossFade ? Math.max(
                    1 - Math.abs(i[0].progress), 0) : 1 +
                    Math.min(Math.max(i[0].progress, -1), 0);
                i.css({ opacity: n }).
                    transform('translate3d(' + s + 'px, ' + r + 'px, 0px)');
            }
        },
        setTransition: function (e) {
            var t = this, a = t.slides, i = t.$wrapperEl;
            if (a.transition(e), t.params.virtualTranslate && 0 !== e) {
                var s = !1;
                a.transitionEnd((function () {
                    if (!s && t && !t.destroyed) {
                        s = !0, t.animating = !1;
                        for (var e = [
                            'webkitTransitionEnd',
                            'transitionend'], a = 0; a <
                             e.length; a += 1) i.trigger(e[a]);
                    }
                }));
            }
        },
    }, ue = {
        setTranslate: function () {
            var e, t = this, a = t.$el, i = t.$wrapperEl, s = t.slides,
                r = t.width, n = t.height, l = t.rtlTranslate, o = t.size,
                d = t.browser, p = t.params.cubeEffect, u = t.isHorizontal(),
                c = t.virtual && t.params.virtual.enabled, h = 0;
            p.shadow &&
            (u ? (0 === (e = i.find('.swiper-cube-shadow')).length &&
            (e = m('<div class="swiper-cube-shadow"></div>'), i.append(
                e)), e.css({ height: r + 'px' })) : 0 ===
                (e = a.find('.swiper-cube-shadow')).length &&
                (e = m('<div class="swiper-cube-shadow"></div>'), a.append(e)));
            for (var v = 0; v < s.length; v += 1) {
                var f = s.eq(v), g = v;
                c && (g = parseInt(f.attr('data-swiper-slide-index'), 10));
                var b = 90 * g, w = Math.floor(b / 360);
                l && (b = -b, w = Math.floor(-b / 360));
                var y = Math.max(Math.min(f[0].progress, 1), -1), E = 0, x = 0,
                    T = 0;
                g % 4 == 0 ? (E = 4 * -w * o, T = 0) : (g - 1) % 4 == 0
                    ? (E = 0, T = 4 * -w * o)
                    : (g - 2) % 4 == 0 ? (E = o + 4 * w * o, T = o) : (g - 3) %
                        4 == 0 && (E = -o, T = 3 * o + 4 * o * w), l &&
                (E = -E), u || (x = E, E = 0);
                var C = 'rotateX(' + (u ? 0 : -b) + 'deg) rotateY(' +
                    (u ? b : 0) + 'deg) translate3d(' + E + 'px, ' + x +
                    'px, ' + T + 'px)';
                if (y <= 1 && y > -1 &&
                (h = 90 * g + 90 * y, l && (h = 90 * -g - 90 * y)), f.transform(
                    C), p.slideShadows) {
                    var S = u ? f.find('.swiper-slide-shadow-left') : f.find(
                        '.swiper-slide-shadow-top'),
                        M = u ? f.find('.swiper-slide-shadow-right') : f.find(
                            '.swiper-slide-shadow-bottom');
                    0 === S.length && (S = m(
                        '<div class="swiper-slide-shadow-' +
                        (u ? 'left' : 'top') + '"></div>'), f.append(S)), 0 ===
                    M.length && (M = m('<div class="swiper-slide-shadow-' +
                        (u ? 'right' : 'bottom') + '"></div>'), f.append(
                        M)), S.length &&
                    (S[0].style.opacity = Math.max(-y, 0)), M.length &&
                    (M[0].style.opacity = Math.max(y, 0));
                }
            }
            if (i.css({
                '-webkit-transform-origin': '50% 50% -' + o / 2 + 'px',
                '-moz-transform-origin': '50% 50% -' + o / 2 + 'px',
                '-ms-transform-origin': '50% 50% -' + o / 2 + 'px',
                'transform-origin': '50% 50% -' + o / 2 + 'px',
            }), p.shadow) if (u) e.transform(
                'translate3d(0px, ' + (r / 2 + p.shadowOffset) + 'px, ' + -r /
                2 + 'px) rotateX(90deg) rotateZ(0deg) scale(' + p.shadowScale +
                ')'); else {
                var z = Math.abs(h) - 90 * Math.floor(Math.abs(h) / 90),
                    P = 1.5 - (Math.sin(2 * z * Math.PI / 360) / 2 +
                        Math.cos(2 * z * Math.PI / 360) / 2), k = p.shadowScale,
                    $ = p.shadowScale / P, L = p.shadowOffset;
                e.transform(
                    'scale3d(' + k + ', 1, ' + $ + ') translate3d(0px, ' +
                    (n / 2 + L) + 'px, ' + -n / 2 / $ + 'px) rotateX(-90deg)');
            }
            var I = d.isSafari || d.isWebView ? -o / 2 : 0;
            i.transform('translate3d(0px,0,' + I + 'px) rotateX(' +
                (t.isHorizontal() ? 0 : h) + 'deg) rotateY(' +
                (t.isHorizontal() ? -h : 0) + 'deg)');
        }, setTransition: function (e) {
            var t = this, a = t.$el;
            t.slides.transition(e).
                find(
                    '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').
                transition(e), t.params.cubeEffect.shadow &&
            !t.isHorizontal() && a.find('.swiper-cube-shadow').transition(e);
        },
    }, ce = {
        setTranslate: function () {
            for (var e = this, t = e.slides, a = e.rtlTranslate, i = 0; i <
            t.length; i += 1) {
                var s = t.eq(i), r = s[0].progress;
                e.params.flipEffect.limitRotation &&
                (r = Math.max(Math.min(s[0].progress, 1), -1));
                var n = -180 * r, l = 0, o = -s[0].swiperSlideOffset, d = 0;
                if (e.isHorizontal()
                    ? a && (n = -n)
                    : (d = o, o = 0, l = -n, n = 0), s[0].style.zIndex = -Math.abs(
                    Math.round(r)) +
                    t.length, e.params.flipEffect.slideShadows) {
                    var p = e.isHorizontal()
                        ? s.find('.swiper-slide-shadow-left')
                        : s.find('.swiper-slide-shadow-top'),
                        u = e.isHorizontal()
                            ? s.find('.swiper-slide-shadow-right')
                            : s.find('.swiper-slide-shadow-bottom');
                    0 === p.length && (p = m(
                        '<div class="swiper-slide-shadow-' +
                        (e.isHorizontal() ? 'left' : 'top') +
                        '"></div>'), s.append(p)), 0 === u.length && (u = m(
                        '<div class="swiper-slide-shadow-' +
                        (e.isHorizontal() ? 'right' : 'bottom') +
                        '"></div>'), s.append(u)), p.length &&
                    (p[0].style.opacity = Math.max(-r, 0)), u.length &&
                    (u[0].style.opacity = Math.max(r, 0));
                }
                s.transform(
                    'translate3d(' + o + 'px, ' + d + 'px, 0px) rotateX(' + l +
                    'deg) rotateY(' + n + 'deg)');
            }
        },
        setTransition: function (e) {
            var t = this, a = t.slides, i = t.activeIndex, s = t.$wrapperEl;
            if (a.transition(e).
                find(
                    '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').
                transition(e), t.params.virtualTranslate && 0 !== e) {
                var r = !1;
                a.eq(i).
                    transitionEnd((function () {
                        if (!r && t && !t.destroyed) {
                            r = !0, t.animating = !1;
                            for (var e = [
                                'webkitTransitionEnd',
                                'transitionend'], a = 0; a <
                                 e.length; a += 1) s.trigger(e[a]);
                        }
                    }));
            }
        },
    }, he = {
        setTranslate: function () {
            for (var e = this, t = e.width, a = e.height, i = e.slides, s = e.slidesSizesGrid, r = e.params.coverflowEffect, n = e.isHorizontal(), l = e.translate, o = n
                ? t / 2 - l
                : a / 2 - l, d = n
                ? r.rotate
                : -r.rotate, p = r.depth, u = 0, c = i.length; u < c; u += 1) {
                var h = i.eq(u), v = s[u],
                    f = (o - h[0].swiperSlideOffset - v / 2) / v * r.modifier,
                    g = n ? d * f : 0, b = n ? 0 : d * f, w = -p * Math.abs(f),
                    y = r.stretch;
                'string' == typeof y && -1 !== y.indexOf('%') &&
                (y = parseFloat(r.stretch) / 100 * v);
                var E = n ? 0 : y * f, x = n ? y * f : 0,
                    T = 1 - (1 - r.scale) * Math.abs(f);
                Math.abs(x) < .001 && (x = 0), Math.abs(E) < .001 &&
                (E = 0), Math.abs(w) < .001 && (w = 0), Math.abs(g) < .001 &&
                (g = 0), Math.abs(b) < .001 && (b = 0), Math.abs(T) < .001 &&
                (T = 0);
                var C = 'translate3d(' + x + 'px,' + E + 'px,' + w +
                    'px)  rotateX(' + b + 'deg) rotateY(' + g + 'deg) scale(' +
                    T + ')';
                if (h.transform(C), h[0].style.zIndex = 1 -
                    Math.abs(Math.round(f)), r.slideShadows) {
                    var S = n
                        ? h.find('.swiper-slide-shadow-left')
                        : h.find('.swiper-slide-shadow-top'),
                        M = n ? h.find('.swiper-slide-shadow-right') : h.find(
                            '.swiper-slide-shadow-bottom');
                    0 === S.length && (S = m(
                        '<div class="swiper-slide-shadow-' +
                        (n ? 'left' : 'top') + '"></div>'), h.append(S)), 0 ===
                    M.length && (M = m('<div class="swiper-slide-shadow-' +
                        (n ? 'right' : 'bottom') + '"></div>'), h.append(
                        M)), S.length &&
                    (S[0].style.opacity = f > 0 ? f : 0), M.length &&
                    (M[0].style.opacity = -f > 0 ? -f : 0);
                }
            }
        },
        setTransition: function (e) {
            this.slides.transition(e).
                find(
                    '.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').
                transition(e);
        },
    }, ve = {
        init: function () {
            var e = this, t = e.params.thumbs;
            if (e.thumbs.initialized) return !1;
            e.thumbs.initialized = !0;
            var a = e.constructor;
            return t.swiper instanceof a ? (e.thumbs.swiper = t.swiper, M(
                e.thumbs.swiper.originalParams,
                { watchSlidesProgress: !0, slideToClickedSlide: !1 }), M(
                e.thumbs.swiper.params,
                { watchSlidesProgress: !0, slideToClickedSlide: !1 })) : C(
                t.swiper) && (e.thumbs.swiper = new a(M({}, t.swiper, {
                watchSlidesVisibility: !0,
                watchSlidesProgress: !0,
                slideToClickedSlide: !1,
            })), e.thumbs.swiperCreated = !0), e.thumbs.swiper.$el.addClass(
                e.params.thumbs.thumbsContainerClass), e.thumbs.swiper.on('tap',
                e.thumbs.onThumbClick), !0;
        }, onThumbClick: function () {
            var e = this, t = e.thumbs.swiper;
            if (t) {
                var a = t.clickedIndex, i = t.clickedSlide;
                if (!(i &&
                    m(i).hasClass(e.params.thumbs.slideThumbActiveClass) ||
                    null == a)) {
                    var s;
                    if (s = t.params.loop
                        ? parseInt(
                            m(t.clickedSlide).attr('data-swiper-slide-index'),
                            10)
                        : a, e.params.loop) {
                        var r = e.activeIndex;
                        e.slides.eq(r).hasClass(e.params.slideDuplicateClass) &&
                        (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, r = e.activeIndex);
                        var n = e.slides.eq(r).
                            prevAll('[data-swiper-slide-index="' + s + '"]').
                            eq(0).
                            index(), l = e.slides.eq(r).
                            nextAll('[data-swiper-slide-index="' + s + '"]').
                            eq(0).
                            index();
                        s = void 0 === n ? l : void 0 === l ? n : l - r < r - n
                            ? l
                            : n;
                    }
                    e.slideTo(s);
                }
            }
        }, update: function (e) {
            var t = this, a = t.thumbs.swiper;
            if (a) {
                var i = 'auto' === a.params.slidesPerView
                    ? a.slidesPerViewDynamic()
                    : a.params.slidesPerView,
                    s = t.params.thumbs.autoScrollOffset,
                    r = s && !a.params.loop;
                if (t.realIndex !== a.realIndex || r) {
                    var n, l, o = a.activeIndex;
                    if (a.params.loop) {
                        a.slides.eq(o).
                            hasClass(a.params.slideDuplicateClass) &&
                        (a.loopFix(), a._clientLeft = a.$wrapperEl[0].clientLeft, o = a.activeIndex);
                        var d = a.slides.eq(o).
                            prevAll('[data-swiper-slide-index="' + t.realIndex +
                                '"]').
                            eq(0).
                            index(), p = a.slides.eq(o).
                            nextAll('[data-swiper-slide-index="' + t.realIndex +
                                '"]').
                            eq(0).
                            index();
                        n = void 0 === d ? p : void 0 === p ? d : p - o == o - d
                            ? a.params.slidesPerGroup > 1 ? p : o
                            : p - o < o - d ? p : d, l = t.activeIndex >
                        t.previousIndex ? 'next' : 'prev';
                    } else l = (n = t.realIndex) > t.previousIndex
                        ? 'next'
                        : 'prev';
                    r &&
                    (n += 'next' === l ? s : -1 * s), a.visibleSlidesIndexes &&
                    a.visibleSlidesIndexes.indexOf(n) < 0 &&
                    (a.params.centeredSlides ? n = n > o ? n -
                        Math.floor(i / 2) + 1 : n + Math.floor(i / 2) - 1 : n >
                        o && a.params.slidesPerGroup, a.slideTo(n,
                        e ? 0 : void 0));
                }
                var u = 1, c = t.params.thumbs.slideThumbActiveClass;
                if (t.params.slidesPerView > 1 && !t.params.centeredSlides &&
                (u = t.params.slidesPerView), t.params.thumbs.multipleActiveThumbs ||
                (u = 1), u = Math.floor(u), a.slides.removeClass(
                    c), a.params.loop || a.params.virtual &&
                a.params.virtual.enabled) for (var h = 0; h <
                u; h += 1) a.$wrapperEl.children(
                    '[data-swiper-slide-index="' + (t.realIndex + h) + '"]').
                    addClass(c); else for (var v = 0; v <
                u; v += 1) a.slides.eq(t.realIndex + v).addClass(c);
            }
        },
    }, fe = [
        U,
        Z,
        {
            name: 'mousewheel',
            params: {
                mousewheel: {
                    enabled: !1,
                    releaseOnEdges: !1,
                    invert: !1,
                    forceToAxis: !1,
                    sensitivity: 1,
                    eventsTarget: 'container',
                    thresholdDelta: null,
                    thresholdTime: null,
                },
            },
            create: function () {
                z(this, {
                    mousewheel: {
                        enabled: !1,
                        lastScrollTime: x(),
                        lastEventBeforeSnap: void 0,
                        recentWheelEvents: [],
                        enable: J.enable,
                        disable: J.disable,
                        handle: J.handle,
                        handleMouseEnter: J.handleMouseEnter,
                        handleMouseLeave: J.handleMouseLeave,
                        animateSlider: J.animateSlider,
                        releaseScroll: J.releaseScroll,
                    },
                });
            },
            on: {
                init: function (e) {
                    !e.params.mousewheel.enabled && e.params.cssMode &&
                    e.mousewheel.disable(), e.params.mousewheel.enabled &&
                    e.mousewheel.enable();
                },
                destroy: function (e) {
                    e.params.cssMode &&
                    e.mousewheel.enable(), e.mousewheel.enabled &&
                    e.mousewheel.disable();
                },
            },
        },
        {
            name: 'navigation',
            params: {
                navigation: {
                    nextEl: null,
                    prevEl: null,
                    hideOnClick: !1,
                    disabledClass: 'swiper-button-disabled',
                    hiddenClass: 'swiper-button-hidden',
                    lockClass: 'swiper-button-lock',
                },
            },
            create: function () {z(this, { navigation: t({}, Q) });},
            on: {
                init: function (e) {e.navigation.init(), e.navigation.update();},
                toEdge: function (e) {e.navigation.update();},
                fromEdge: function (e) {e.navigation.update();},
                destroy: function (e) {e.navigation.destroy();},
                'enable disable': function (e) {
                    var t = e.navigation, a = t.$nextEl, i = t.$prevEl;
                    a && a[e.enabled ? 'removeClass' : 'addClass'](
                        e.params.navigation.lockClass), i &&
                    i[e.enabled ? 'removeClass' : 'addClass'](
                        e.params.navigation.lockClass);
                },
                click: function (e, t) {
                    var a = e.navigation, i = a.$nextEl, s = a.$prevEl,
                        r = t.target;
                    if (e.params.navigation.hideOnClick && !m(r).is(s) &&
                        !m(r).is(i)) {
                        if (e.pagination && e.params.pagination &&
                            e.params.pagination.clickable &&
                            (e.pagination.el === r ||
                                e.pagination.el.contains(r))) return;
                        var n;
                        i
                            ? n = i.hasClass(e.params.navigation.hiddenClass)
                            : s && (n = s.hasClass(
                            e.params.navigation.hiddenClass)), !0 === n
                            ? e.emit('navigationShow')
                            : e.emit('navigationHide'), i &&
                        i.toggleClass(e.params.navigation.hiddenClass), s &&
                        s.toggleClass(e.params.navigation.hiddenClass);
                    }
                },
            },
        },
        {
            name: 'pagination',
            params: {
                pagination: {
                    el: null,
                    bulletElement: 'span',
                    clickable: !1,
                    hideOnClick: !1,
                    renderBullet: null,
                    renderProgressbar: null,
                    renderFraction: null,
                    renderCustom: null,
                    progressbarOpposite: !1,
                    type: 'bullets',
                    dynamicBullets: !1,
                    dynamicMainBullets: 1,
                    formatFractionCurrent: function (e) {return e;},
                    formatFractionTotal: function (e) {return e;},
                    bulletClass: 'swiper-pagination-bullet',
                    bulletActiveClass: 'swiper-pagination-bullet-active',
                    modifierClass: 'swiper-pagination-',
                    currentClass: 'swiper-pagination-current',
                    totalClass: 'swiper-pagination-total',
                    hiddenClass: 'swiper-pagination-hidden',
                    progressbarFillClass: 'swiper-pagination-progressbar-fill',
                    progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
                    clickableClass: 'swiper-pagination-clickable',
                    lockClass: 'swiper-pagination-lock',
                },
            },
            create: function () {
                z(this, { pagination: t({ dynamicBulletIndex: 0 }, ee) });
            },
            on: {
                init: function (e) {e.pagination.init(), e.pagination.render(), e.pagination.update();},
                activeIndexChange: function (e) {
                    (e.params.loop || void 0 === e.snapIndex) &&
                    e.pagination.update();
                },
                snapIndexChange: function (e) {
                    e.params.loop || e.pagination.update();
                },
                slidesLengthChange: function (e) {
                    e.params.loop &&
                    (e.pagination.render(), e.pagination.update());
                },
                snapGridLengthChange: function (e) {
                    e.params.loop ||
                    (e.pagination.render(), e.pagination.update());
                },
                destroy: function (e) {e.pagination.destroy();},
                'enable disable': function (e) {
                    var t = e.pagination.$el;
                    t && t[e.enabled ? 'removeClass' : 'addClass'](
                        e.params.pagination.lockClass);
                },
                click: function (e, t) {
                    var a = t.target;
                    if (e.params.pagination.el &&
                        e.params.pagination.hideOnClick &&
                        e.pagination.$el.length > 0 && !m(a).
                            hasClass(e.params.pagination.bulletClass)) {
                        if (e.navigation &&
                            (e.navigation.nextEl && a === e.navigation.nextEl ||
                                e.navigation.prevEl && a ===
                                e.navigation.prevEl)) return;
                        !0 === e.pagination.$el.hasClass(
                            e.params.pagination.hiddenClass) ? e.emit(
                            'paginationShow') : e.emit(
                            'paginationHide'), e.pagination.$el.toggleClass(
                            e.params.pagination.hiddenClass);
                    }
                },
            },
        },
        {
            name: 'scrollbar',
            params: {
                scrollbar: {
                    el: null,
                    dragSize: 'auto',
                    hide: !1,
                    draggable: !1,
                    snapOnRelease: !0,
                    lockClass: 'swiper-scrollbar-lock',
                    dragClass: 'swiper-scrollbar-drag',
                },
            },
            create: function () {
                z(this, {
                    scrollbar: t(
                        { isTouched: !1, timeout: null, dragTimeout: null },
                        te),
                });
            },
            on: {
                init: function (e) {e.scrollbar.init(), e.scrollbar.updateSize(), e.scrollbar.setTranslate();},
                update: function (e) {e.scrollbar.updateSize();},
                resize: function (e) {e.scrollbar.updateSize();},
                observerUpdate: function (e) {e.scrollbar.updateSize();},
                setTranslate: function (e) {e.scrollbar.setTranslate();},
                setTransition: function (e, t) {e.scrollbar.setTransition(t);},
                'enable disable': function (e) {
                    var t = e.scrollbar.$el;
                    t && t[e.enabled ? 'removeClass' : 'addClass'](
                        e.params.scrollbar.lockClass);
                },
                destroy: function (e) {e.scrollbar.destroy();},
            },
        },
        {
            name: 'parallax',
            params: { parallax: { enabled: !1 } },
            create: function () {z(this, { parallax: t({}, ae) });},
            on: {
                beforeInit: function (e) {
                    e.params.parallax.enabled &&
                    (e.params.watchSlidesProgress = !0, e.originalParams.watchSlidesProgress = !0);
                },
                init: function (e) {
                    e.params.parallax.enabled && e.parallax.setTranslate();
                },
                setTranslate: function (e) {
                    e.params.parallax.enabled && e.parallax.setTranslate();
                },
                setTransition: function (e, t) {
                    e.params.parallax.enabled && e.parallax.setTransition(t);
                },
            },
        },
        {
            name: 'zoom',
            params: {
                zoom: {
                    enabled: !1,
                    maxRatio: 3,
                    minRatio: 1,
                    toggle: !0,
                    containerClass: 'swiper-zoom-container',
                    zoomedSlideClass: 'swiper-slide-zoomed',
                },
            },
            create: function () {
                var e = this;
                z(e, {
                    zoom: t({
                        enabled: !1,
                        scale: 1,
                        currentScale: 1,
                        isScaling: !1,
                        gesture: {
                            $slideEl: void 0,
                            slideWidth: void 0,
                            slideHeight: void 0,
                            $imageEl: void 0,
                            $imageWrapEl: void 0,
                            maxRatio: 3,
                        },
                        image: {
                            isTouched: void 0,
                            isMoved: void 0,
                            currentX: void 0,
                            currentY: void 0,
                            minX: void 0,
                            minY: void 0,
                            maxX: void 0,
                            maxY: void 0,
                            width: void 0,
                            height: void 0,
                            startX: void 0,
                            startY: void 0,
                            touchesStart: {},
                            touchesCurrent: {},
                        },
                        velocity: {
                            x: void 0,
                            y: void 0,
                            prevPositionX: void 0,
                            prevPositionY: void 0,
                            prevTime: void 0,
                        },
                    }, ie),
                });
                var a = 1;
                Object.defineProperty(e.zoom, 'scale', {
                    get: function () {return a;},
                    set: function (t) {
                        if (a !== t) {
                            var i = e.zoom.gesture.$imageEl
                                ? e.zoom.gesture.$imageEl[0]
                                : void 0, s = e.zoom.gesture.$slideEl
                                ? e.zoom.gesture.$slideEl[0]
                                : void 0;
                            e.emit('zoomChange', t, i, s);
                        }
                        a = t;
                    },
                });
            },
            on: {
                init: function (e) {e.params.zoom.enabled && e.zoom.enable();},
                destroy: function (e) {e.zoom.disable();},
                touchStart: function (e, t) {
                    e.zoom.enabled && e.zoom.onTouchStart(t);
                },
                touchEnd: function (e, t) {
                    e.zoom.enabled && e.zoom.onTouchEnd(t);
                },
                doubleTap: function (e, t) {
                    !e.animating && e.params.zoom.enabled && e.zoom.enabled &&
                    e.params.zoom.toggle && e.zoom.toggle(t);
                },
                transitionEnd: function (e) {
                    e.zoom.enabled && e.params.zoom.enabled &&
                    e.zoom.onTransitionEnd();
                },
                slideChange: function (e) {
                    e.zoom.enabled && e.params.zoom.enabled &&
                    e.params.cssMode && e.zoom.onTransitionEnd();
                },
            },
        },
        {
            name: 'lazy',
            params: {
                lazy: {
                    checkInView: !1,
                    enabled: !1,
                    loadPrevNext: !1,
                    loadPrevNextAmount: 1,
                    loadOnTransitionStart: !1,
                    scrollingElement: '',
                    elementClass: 'swiper-lazy',
                    loadingClass: 'swiper-lazy-loading',
                    loadedClass: 'swiper-lazy-loaded',
                    preloaderClass: 'swiper-lazy-preloader',
                },
            },
            create: function () {
                z(this, { lazy: t({ initialImageLoaded: !1 }, se) });
            },
            on: {
                beforeInit: function (e) {
                    e.params.lazy.enabled && e.params.preloadImages &&
                    (e.params.preloadImages = !1);
                },
                init: function (e) {
                    e.params.lazy.enabled && !e.params.loop && 0 ===
                    e.params.initialSlide && (e.params.lazy.checkInView
                        ? e.lazy.checkInViewOnLoad()
                        : e.lazy.load());
                },
                scroll: function (e) {
                    e.params.freeMode && !e.params.freeModeSticky &&
                    e.lazy.load();
                },
                'scrollbarDragMove resize _freeModeNoMomentumRelease': function (e) {
                    e.params.lazy.enabled && e.lazy.load();
                },
                transitionStart: function (e) {
                    e.params.lazy.enabled &&
                    (e.params.lazy.loadOnTransitionStart ||
                        !e.params.lazy.loadOnTransitionStart &&
                        !e.lazy.initialImageLoaded) && e.lazy.load();
                },
                transitionEnd: function (e) {
                    e.params.lazy.enabled &&
                    !e.params.lazy.loadOnTransitionStart && e.lazy.load();
                },
                slideChange: function (e) {
                    var t = e.params, a = t.lazy, i = t.cssMode,
                        s = t.watchSlidesVisibility, r = t.watchSlidesProgress,
                        n = t.touchReleaseOnEdges, l = t.resistanceRatio;
                    a.enabled && (i || (s || r) && (n || 0 === l)) &&
                    e.lazy.load();
                },
            },
        },
        {
            name: 'controller',
            params: {
                controller: {
                    control: void 0,
                    inverse: !1,
                    by: 'slide',
                },
            },
            create: function () {
                z(this, {
                    controller: t({ control: this.params.controller.control },
                        re),
                });
            },
            on: {
                update: function (e) {
                    e.controller.control && e.controller.spline &&
                    (e.controller.spline = void 0, delete e.controller.spline);
                },
                resize: function (e) {
                    e.controller.control && e.controller.spline &&
                    (e.controller.spline = void 0, delete e.controller.spline);
                },
                observerUpdate: function (e) {
                    e.controller.control && e.controller.spline &&
                    (e.controller.spline = void 0, delete e.controller.spline);
                },
                setTranslate: function (e, t, a) {
                    e.controller.control && e.controller.setTranslate(t, a);
                },
                setTransition: function (e, t, a) {
                    e.controller.control && e.controller.setTransition(t, a);
                },
            },
        },
        {
            name: 'a11y',
            params: {
                a11y: {
                    enabled: !0,
                    notificationClass: 'swiper-notification',
                    prevSlideMessage: 'Previous slide',
                    nextSlideMessage: 'Next slide',
                    firstSlideMessage: 'This is the first slide',
                    lastSlideMessage: 'This is the last slide',
                    paginationBulletMessage: 'Go to slide {{index}}',
                    slideLabelMessage: '{{index}} / {{slidesLength}}',
                    containerMessage: null,
                    containerRoleDescriptionMessage: null,
                    itemRoleDescriptionMessage: null,
                    slideRole: 'group',
                },
            },
            create: function () {
                z(this, {
                    a11y: t({}, ne, {
                        liveRegion: m('<span class="' +
                            this.params.a11y.notificationClass +
                            '" aria-live="assertive" aria-atomic="true"></span>'),
                    }),
                });
            },
            on: {
                afterInit: function (e) {
                    e.params.a11y.enabled &&
                    (e.a11y.init(), e.a11y.updateNavigation());
                },
                toEdge: function (e) {
                    e.params.a11y.enabled && e.a11y.updateNavigation();
                },
                fromEdge: function (e) {
                    e.params.a11y.enabled && e.a11y.updateNavigation();
                },
                paginationUpdate: function (e) {
                    e.params.a11y.enabled && e.a11y.updatePagination();
                },
                destroy: function (e) {
                    e.params.a11y.enabled && e.a11y.destroy();
                },
            },
        },
        {
            name: 'history',
            params: {
                history: {
                    enabled: !1,
                    root: '',
                    replaceState: !1,
                    key: 'slides',
                },
            },
            create: function () {z(this, { history: t({}, le) });},
            on: {
                init: function (e) {
                    e.params.history.enabled && e.history.init();
                },
                destroy: function (e) {
                    e.params.history.enabled && e.history.destroy();
                },
                'transitionEnd _freeModeNoMomentumRelease': function (e) {
                    e.history.initialized &&
                    e.history.setHistory(e.params.history.key, e.activeIndex);
                },
                slideChange: function (e) {
                    e.history.initialized && e.params.cssMode &&
                    e.history.setHistory(e.params.history.key, e.activeIndex);
                },
            },
        },
        {
            name: 'hash-navigation',
            params: {
                hashNavigation: {
                    enabled: !1,
                    replaceState: !1,
                    watchState: !1,
                },
            },
            create: function () {
                z(this, { hashNavigation: t({ initialized: !1 }, oe) });
            },
            on: {
                init: function (e) {
                    e.params.hashNavigation.enabled && e.hashNavigation.init();
                },
                destroy: function (e) {
                    e.params.hashNavigation.enabled &&
                    e.hashNavigation.destroy();
                },
                'transitionEnd _freeModeNoMomentumRelease': function (e) {
                    e.hashNavigation.initialized && e.hashNavigation.setHash();
                },
                slideChange: function (e) {
                    e.hashNavigation.initialized && e.params.cssMode &&
                    e.hashNavigation.setHash();
                },
            },
        },
        {
            name: 'autoplay',
            params: {
                autoplay: {
                    enabled: !1,
                    delay: 3e3,
                    waitForTransition: !0,
                    disableOnInteraction: !0,
                    stopOnLastSlide: !1,
                    reverseDirection: !1,
                    pauseOnMouseEnter: !1,
                },
            },
            create: function () {
                z(this, { autoplay: t({}, de, { running: !1, paused: !1 }) });
            },
            on: {
                init: function (e) {
                    e.params.autoplay.enabled && (e.autoplay.start(), r().
                        addEventListener('visibilitychange',
                            e.autoplay.onVisibilityChange), e.autoplay.attachMouseEvents());
                },
                beforeTransitionStart: function (e, t, a) {
                    e.autoplay.running &&
                    (a || !e.params.autoplay.disableOnInteraction
                        ? e.autoplay.pause(t)
                        : e.autoplay.stop());
                },
                sliderFirstMove: function (e) {
                    e.autoplay.running &&
                    (e.params.autoplay.disableOnInteraction
                        ? e.autoplay.stop()
                        : e.autoplay.pause());
                },
                touchEnd: function (e) {
                    e.params.cssMode && e.autoplay.paused &&
                    !e.params.autoplay.disableOnInteraction && e.autoplay.run();
                },
                destroy: function (e) {
                    e.autoplay.detachMouseEvents(), e.autoplay.running &&
                    e.autoplay.stop(), r().
                        removeEventListener('visibilitychange',
                            e.autoplay.onVisibilityChange);
                },
            },
        },
        {
            name: 'effect-fade',
            params: { fadeEffect: { crossFade: !1 } },
            create: function () {z(this, { fadeEffect: t({}, pe) });},
            on: {
                beforeInit: function (e) {
                    if ('fade' === e.params.effect) {
                        e.classNames.push(
                            e.params.containerModifierClass + 'fade');
                        var t = {
                            slidesPerView: 1,
                            slidesPerColumn: 1,
                            slidesPerGroup: 1,
                            watchSlidesProgress: !0,
                            spaceBetween: 0,
                            virtualTranslate: !0,
                        };
                        M(e.params, t), M(e.originalParams, t);
                    }
                },
                setTranslate: function (e) {
                    'fade' === e.params.effect && e.fadeEffect.setTranslate();
                },
                setTransition: function (e, t) {
                    'fade' === e.params.effect && e.fadeEffect.setTransition(t);
                },
            },
        },
        {
            name: 'effect-cube',
            params: {
                cubeEffect: {
                    slideShadows: !0,
                    shadow: !0,
                    shadowOffset: 20,
                    shadowScale: .94,
                },
            },
            create: function () {z(this, { cubeEffect: t({}, ue) });},
            on: {
                beforeInit: function (e) {
                    if ('cube' === e.params.effect) {
                        e.classNames.push(e.params.containerModifierClass +
                            'cube'), e.classNames.push(
                            e.params.containerModifierClass + '3d');
                        var t = {
                            slidesPerView: 1,
                            slidesPerColumn: 1,
                            slidesPerGroup: 1,
                            watchSlidesProgress: !0,
                            resistanceRatio: 0,
                            spaceBetween: 0,
                            centeredSlides: !1,
                            virtualTranslate: !0,
                        };
                        M(e.params, t), M(e.originalParams, t);
                    }
                },
                setTranslate: function (e) {
                    'cube' === e.params.effect && e.cubeEffect.setTranslate();
                },
                setTransition: function (e, t) {
                    'cube' === e.params.effect && e.cubeEffect.setTransition(t);
                },
            },
        },
        {
            name: 'effect-flip',
            params: { flipEffect: { slideShadows: !0, limitRotation: !0 } },
            create: function () {z(this, { flipEffect: t({}, ce) });},
            on: {
                beforeInit: function (e) {
                    if ('flip' === e.params.effect) {
                        e.classNames.push(e.params.containerModifierClass +
                            'flip'), e.classNames.push(
                            e.params.containerModifierClass + '3d');
                        var t = {
                            slidesPerView: 1,
                            slidesPerColumn: 1,
                            slidesPerGroup: 1,
                            watchSlidesProgress: !0,
                            spaceBetween: 0,
                            virtualTranslate: !0,
                        };
                        M(e.params, t), M(e.originalParams, t);
                    }
                },
                setTranslate: function (e) {
                    'flip' === e.params.effect && e.flipEffect.setTranslate();
                },
                setTransition: function (e, t) {
                    'flip' === e.params.effect && e.flipEffect.setTransition(t);
                },
            },
        },
        {
            name: 'effect-coverflow',
            params: {
                coverflowEffect: {
                    rotate: 50,
                    stretch: 0,
                    depth: 100,
                    scale: 1,
                    modifier: 1,
                    slideShadows: !0,
                },
            },
            create: function () {z(this, { coverflowEffect: t({}, he) });},
            on: {
                beforeInit: function (e) {
                    'coverflow' === e.params.effect && (e.classNames.push(
                        e.params.containerModifierClass +
                        'coverflow'), e.classNames.push(
                        e.params.containerModifierClass +
                        '3d'), e.params.watchSlidesProgress = !0, e.originalParams.watchSlidesProgress = !0);
                },
                setTranslate: function (e) {
                    'coverflow' === e.params.effect &&
                    e.coverflowEffect.setTranslate();
                },
                setTransition: function (e, t) {
                    'coverflow' === e.params.effect &&
                    e.coverflowEffect.setTransition(t);
                },
            },
        },
        {
            name: 'thumbs',
            params: {
                thumbs: {
                    swiper: null,
                    multipleActiveThumbs: !0,
                    autoScrollOffset: 0,
                    slideThumbActiveClass: 'swiper-slide-thumb-active',
                    thumbsContainerClass: 'swiper-container-thumbs',
                },
            },
            create: function () {
                z(this, { thumbs: t({ swiper: null, initialized: !1 }, ve) });
            },
            on: {
                beforeInit: function (e) {
                    var t = e.params.thumbs;
                    t && t.swiper && (e.thumbs.init(), e.thumbs.update(!0));
                },
                slideChange: function (e) {
                    e.thumbs.swiper && e.thumbs.update();
                },
                update: function (e) {e.thumbs.swiper && e.thumbs.update();},
                resize: function (e) {e.thumbs.swiper && e.thumbs.update();},
                observerUpdate: function (e) {
                    e.thumbs.swiper && e.thumbs.update();
                },
                setTransition: function (e, t) {
                    var a = e.thumbs.swiper;
                    a && a.setTransition(t);
                },
                beforeDestroy: function (e) {
                    var t = e.thumbs.swiper;
                    t && e.thumbs.swiperCreated && t && t.destroy();
                },
            },
        }];
    return q.use(fe), q;
}));

window.SEMICOLON_swiperInit = function ($sliderEl) {

    $sliderEl = $sliderEl.filter(':not(.customjs)');

    if ($sliderEl.length < 1) {
        return true;
    }

    $sliderEl.each(function () {
        if (!$(this).hasClass('swiper_wrapper')) {
            return true;
        }

        if ($(this).find('.swiper-slide').length < 1) {
            return true;
        }

        let element = $(this).filter('.swiper_wrapper'),
            elDirection = element.attr('data-direction') || 'horizontal',
            elSpeed = element.attr('data-speed') || 300,
            elAutoPlay = element.attr('data-autoplay'),
            elLoop = element.attr('data-loop'),
            elStart = element.attr('data-start') || 1,
            elEffect = element.attr('data-effect') || 'slide',
            elGrabCursor = element.attr('data-grab'),
            elParallax = element.attr('data-parallax'),
            slideNumberTotal = element.find('.slide-number-total'),
            slideNumberCurrent = element.find('.slide-number-current'),
            elVideoAutoPlay = element.attr('data-video-autoplay'),
            elSettings = element.attr('data-settings'),
            elPagination, elPaginationClickable;

        if (elAutoPlay) {
            elAutoPlay = Number(elAutoPlay);
        } else { elAutoPlay = 999999999; }
        if (elLoop == 'true') { elLoop = true; } else { elLoop = false; }
        if (elParallax ==
            'true') { elParallax = true; } else { elParallax = false; }
        if (elGrabCursor ==
            'false') { elGrabCursor = false; } else { elGrabCursor = true; }
        if (elVideoAutoPlay ==
            'false') { elVideoAutoPlay = false; } else { elVideoAutoPlay = true; }

        if (elStart === 'random') {
            elStart = Math.floor(Math.random() * element.find(
                '.swiper-slide:not(.swiper-slide-duplicate)').length);
        } else {
            elStart = Number(elStart) - 1;
        }

        if (element.find('.swiper-pagination').length > 0) {
            elPagination = element.find('.swiper-pagination').get(0);
            elPaginationClickable = true;
        } else {
            elPagination = '';
            elPaginationClickable = false;
        }

        let elementNavNext = element.find('.slider-arrow-right').get(0),
            elementNavPrev = element.find('.slider-arrow-left').get(0),
            elementScollBar = element.find('.swiper-scrollbar').get(0);

        let scwSwiperSlider = new Swiper(element.find('.swiper-parent').get(0),
            {
                direction: elDirection,
                speed: Number(elSpeed),
                autoplay: {
                    delay: elAutoPlay,
                },
                loop: elLoop,
                initialSlide: elStart,
                effect: elEffect,
                parallax: elParallax,
                slidesPerView: 1,
                grabCursor: elGrabCursor,
                pagination: {
                    el: elPagination,
                    clickable: elPaginationClickable,
                },
                navigation: {
                    prevEl: elementNavPrev,
                    nextEl: elementNavNext,
                },
                scrollbar: {
                    el: elementScollBar,
                },
                on: {
                    afterInit: function (swiper) {
                        SEMICOLON.slider.sliderDimensions();
                        element.find('.yt-bg-player').
                            attr('data-autoplay', 'false').
                            removeClass('customjs');
                        SEMICOLON.widget.youtubeBgVideo({ parent: swiper });
                        let activeYTVideo = $('.swiper-slide-active').
                            find('.yt-bg-player.mb_YTPlayer:not(.customjs)');
                        activeYTVideo.on('YTPReady', function () {
                            setTimeout(function () {
                                activeYTVideo.YTPPlay();
                            }, 1000);
                        });
                        $('.swiper-slide-active [data-animate]').
                            each(function () {
                                let $toAnimateElement = $(this),
                                    toAnimateDelay = $toAnimateElement.attr(
                                        'data-delay'),
                                    toAnimateDelayTime = 0;
                                if (toAnimateDelay) {
                                    toAnimateDelayTime = Number(
                                        toAnimateDelay) + 750;
                                } else { toAnimateDelayTime = 750; }
                                if (!$toAnimateElement.hasClass('animated')) {
                                    $toAnimateElement.addClass('not-animated');
                                    let elementAnimation = $toAnimateElement.attr(
                                        'data-animate');
                                    setTimeout(function () {
                                        $toAnimateElement.removeClass(
                                            'not-animated').
                                            addClass(
                                                elementAnimation + ' animated');
                                    }, toAnimateDelayTime);
                                }
                            });
                        element.find('[data-animate]').each(function () {
                            let $toAnimateElement = $(this),
                                elementAnimation = $toAnimateElement.attr(
                                    'data-animate');
                            if ($toAnimateElement.parents('.swiper-slide').
                                hasClass(
                                    'swiper-slide-active')) { return true; }
                            $toAnimateElement.removeClass('animated').
                                removeClass(elementAnimation).
                                addClass('not-animated');
                        });
                        SEMICOLON.slider.swiperSliderMenu();
                    },
                    transitionStart: function (swiper) {
                        if (slideNumberCurrent.length > 0) {
                            if (elLoop == true) {
                                slideNumberCurrent.html(Number(element.find(
                                    '.swiper-slide.swiper-slide-active').
                                    attr('data-swiper-slide-index')) + 1);
                            } else {
                                slideNumberCurrent.html(
                                    scwSwiperSlider.activeIndex + 1);
                            }
                        }
                        element.find('[data-animate]').each(function () {
                            let $toAnimateElement = $(this),
                                elementAnimation = $toAnimateElement.attr(
                                    'data-animate');
                            if ($toAnimateElement.parents('.swiper-slide').
                                hasClass(
                                    'swiper-slide-active')) { return true; }
                            $toAnimateElement.removeClass('animated').
                                removeClass(elementAnimation).
                                addClass('not-animated');
                        });
                        SEMICOLON.slider.swiperSliderMenu();
                    },
                    transitionEnd: function (swiper) {
                        element.find('.swiper-slide').each(function () {
                            let slideEl = $(this);
                            if (slideEl.find('video').length > 0 &&
                                elVideoAutoPlay == true) {
                                slideEl.find('video').get(0).pause();
                            }
                            if (slideEl.find(
                                '.yt-bg-player.mb_YTPlayer:not(.customjs)').length >
                                0) {
                                slideEl.find(
                                    '.yt-bg-player.mb_YTPlayer:not(.customjs)').
                                    YTPPause();
                            }
                        });
                        element.find(
                            '.swiper-slide:not(".swiper-slide-active")').
                            each(function () {
                                let slideEl = $(this);
                                if (slideEl.find('video').length > 0) {
                                    if (slideEl.find('video').
                                        get(0).currentTime != 0) {
                                        slideEl.find('video').
                                            get(0).currentTime = 0;
                                    }
                                }
                                if (slideEl.find(
                                    '.yt-bg-player.mb_YTPlayer:not(.customjs)').length >
                                    0) {
                                    slideEl.find(
                                        '.yt-bg-player.mb_YTPlayer:not(.customjs)').
                                        YTPSeekTo(slideEl.find(
                                            '.yt-bg-player.mb_YTPlayer:not(.customjs)').
                                            attr('data-start'));
                                }
                            });
                        if (element.find('.swiper-slide.swiper-slide-active').
                                find('video').length > 0 && elVideoAutoPlay ==
                            true) {
                            element.find('.swiper-slide.swiper-slide-active').
                                find('video').
                                get(0).
                                play();
                        }
                        if (element.find('.swiper-slide.swiper-slide-active').
                                find(
                                    '.yt-bg-player.mb_YTPlayer:not(.customjs)').length >
                            0 && elVideoAutoPlay == true) {
                            element.find('.swiper-slide.swiper-slide-active').
                                find(
                                    '.yt-bg-player.mb_YTPlayer:not(.customjs)').
                                YTPPlay();
                        }

                        element.find(
                            '.swiper-slide.swiper-slide-active [data-animate]').
                            each(function () {
                                let $toAnimateElement = $(this),
                                    toAnimateDelay = $toAnimateElement.attr(
                                        'data-delay'),
                                    toAnimateDelayTime = 0;
                                if (toAnimateDelay) {
                                    toAnimateDelayTime = Number(
                                        toAnimateDelay) + 300;
                                } else { toAnimateDelayTime = 300; }
                                if (!$toAnimateElement.hasClass('animated')) {
                                    $toAnimateElement.addClass('not-animated');
                                    let elementAnimation = $toAnimateElement.attr(
                                        'data-animate');
                                    setTimeout(function () {
                                        $toAnimateElement.removeClass(
                                            'not-animated').
                                            addClass(
                                                elementAnimation + ' animated');
                                    }, toAnimateDelayTime);
                                }
                            });
                    },
                },
            });

        if (slideNumberCurrent.length > 0) {
            if (elLoop == true) {
                slideNumberCurrent.html(scwSwiperSlider.realIndex + 1);
            } else {
                slideNumberCurrent.html(scwSwiperSlider.activeIndex + 1);
            }
        }

        if (slideNumberTotal.length > 0) {
            slideNumberTotal.html(element.find(
                '.swiper-slide:not(.swiper-slide-duplicate)').length);
        }

        if (elSettings) {
            elSettings = Function('return ' + elSettings)();
            Object.keys(elSettings).forEach(function (key, index) {
                scwSwiperSlider.params[key] = elSettings[key];
                scwSwiperSlider.update();
            });
        }
    });

};

/*! jQuery UI - v1.12.1 - 2018-01-02
* http://jqueryui.com
* Includes: widget.js, keycode.js, unique-id.js, widgets/tabs.js, effect.js, effects/effect-fade.js, effects/effect-slide.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
(function (t) {
    'function' == typeof define && define.amd
        ? define(['jquery'], t)
        : t(jQuery);
})(function (t) {
    t.ui = t.ui || {}, t.ui.version = '1.12.1';
    var e = 0, i = Array.prototype.slice;
    t.cleanData = function (e) {
        return function (i) {
            var s, n, o;
            for (o = 0; null != (n = i[o]); o++) try {
                s = t._data(n, 'events'), s && s.remove &&
                t(n).triggerHandler('remove');
            } catch (a) {}
            e(i);
        };
    }(t.cleanData), t.widget = function (e, i, s) {
        var n, o, a, r = {}, l = e.split('.')[0];
        e = e.split('.')[1];
        var h = l + '-' + e;
        return s || (s = i, i = t.Widget), t.isArray(s) &&
        (s = t.extend.apply(null, [{}].concat(
            s))), t.expr[':'][h.toLowerCase()] = function (e) {
            return !!t.data(e, h);
        }, t[l] = t[l] || {}, n = t[l][e], o = t[l][e] = function (
            t, e) {
            return this._createWidget
                ? (arguments.length && this._createWidget(t, e), void 0)
                : new o(t, e);
        }, t.extend(o, n, {
            version: s.version,
            _proto: t.extend({}, s),
            _childConstructors: [],
        }), a = new i, a.options = t.widget.extend({}, a.options), t.each(s,
            function (e, s) {
                return t.isFunction(s)
                    ? (r[e] = function () {
                        function t () {
                            return i.prototype[e].apply(this, arguments);
                        }

                        function n (t) {return i.prototype[e].apply(this, t);}

                        return function () {
                            var e, i = this._super, o = this._superApply;
                            return this._super = t, this._superApply = n, e = s.apply(
                                this,
                                arguments), this._super = i, this._superApply = o, e;
                        };
                    }(), void 0)
                    : (r[e] = s, void 0);
            }), o.prototype = t.widget.extend(a,
            { widgetEventPrefix: n ? a.widgetEventPrefix || e : e }, r, {
                constructor: o,
                namespace: l,
                widgetName: e,
                widgetFullName: h,
            }), n ? (t.each(n._childConstructors, function (e, i) {
            var s = i.prototype;
            t.widget(s.namespace + '.' + s.widgetName, o, i._proto);
        }), delete n._childConstructors) : i._childConstructors.push(
            o), t.widget.bridge(e, o), o;
    }, t.widget.extend = function (e) {
        for (var s, n, o = i.call(arguments, 1), a = 0, r = o.length; r >
        a; a++) for (s in o[a]) n = o[a][s], o[a].hasOwnProperty(s) &&
        void 0 !== n &&
        (e[s] = t.isPlainObject(n) ? t.isPlainObject(e[s]) ? t.widget.extend({},
            e[s], n) : t.widget.extend({}, n) : n);
        return e;
    }, t.widget.bridge = function (e, s) {
        var n = s.prototype.widgetFullName || e;
        t.fn[e] = function (o) {
            var a = 'string' == typeof o, r = i.call(arguments, 1), l = this;
            return a ? this.length || 'instance' !== o ? this.each(function () {
                var i, s = t.data(this, n);
                return 'instance' === o ? (l = s, !1) : s
                    ? t.isFunction(s[o]) && '_' !== o.charAt(0)
                        ? (i = s[o].apply(s, r), i !== s && void 0 !== i
                            ? (l = i && i.jquery
                                ? l.pushStack(i.get())
                                : i, !1)
                            : void 0)
                        : t.error('no such method \'' + o + '\' for ' + e +
                            ' widget instance')
                    : t.error('cannot call methods on ' + e +
                        ' prior to initialization; ' +
                        'attempted to call method \'' + o + '\'');
            }) : l = void 0 : (r.length &&
            (o = t.widget.extend.apply(null, [o].concat(r))), this.each(
                function () {
                    var e = t.data(this, n);
                    e ? (e.option(o || {}), e._init && e._init()) : t.data(this,
                        n, new s(o, this));
                })), l;
        };
    }, t.Widget = function () {}, t.Widget._childConstructors = [], t.Widget.prototype = {
        widgetName: 'widget',
        widgetEventPrefix: '',
        defaultElement: '<div>',
        options: { classes: {}, disabled: !1, create: null },
        _createWidget: function (i, s) {
            s = t(s || this.defaultElement || this)[0], this.element = t(
                s), this.uuid = e++, this.eventNamespace = '.' +
                this.widgetName +
                this.uuid, this.bindings = t(), this.hoverable = t(), this.focusable = t(), this.classesElementLookup = {}, s !==
            this &&
            (t.data(s, this.widgetFullName, this), this._on(!0, this.element, {
                remove: function (t) {
                    t.target === s && this.destroy();
                },
            }), this.document = t(
                s.style ? s.ownerDocument : s.document || s), this.window = t(
                this.document[0].defaultView ||
                this.document[0].parentWindow)), this.options = t.widget.extend(
                {}, this.options, this._getCreateOptions(),
                i), this._create(), this.options.disabled &&
            this._setOptionDisabled(this.options.disabled), this._trigger(
                'create', null, this._getCreateEventData()), this._init();
        },
        _getCreateOptions: function () {return {};},
        _getCreateEventData: t.noop,
        _create: t.noop,
        _init: t.noop,
        destroy: function () {
            var e = this;
            this._destroy(), t.each(this.classesElementLookup,
                function (t, i) {e._removeClass(i, t);}), this.element.off(
                this.eventNamespace).
                removeData(this.widgetFullName), this.widget().
                off(this.eventNamespace).
                removeAttr('aria-disabled'), this.bindings.off(
                this.eventNamespace);
        },
        _destroy: t.noop,
        widget: function () {return this.element;},
        option: function (e, i) {
            var s, n, o, a = e;
            if (0 === arguments.length) return t.widget.extend({},
                this.options);
            if ('string' == typeof e) if (a = {}, s = e.split(
                '.'), e = s.shift(), s.length) {
                for (n = a[e] = t.widget.extend({},
                    this.options[e]), o = 0; s.length - 1 >
                     o; o++) n[s[o]] = n[s[o]] || {}, n = n[s[o]];
                if (e = s.pop(), 1 === arguments.length) return void 0 === n[e]
                    ? null
                    : n[e];
                n[e] = i;
            } else {
                if (1 === arguments.length) return void 0 === this.options[e]
                    ? null
                    : this.options[e];
                a[e] = i;
            }
            return this._setOptions(a), this;
        },
        _setOptions: function (t) {
            var e;
            for (e in t) this._setOption(e, t[e]);
            return this;
        },
        _setOption: function (t, e) {
            return 'classes' === t &&
            this._setOptionClasses(e), this.options[t] = e, 'disabled' === t &&
            this._setOptionDisabled(e), this;
        },
        _setOptionClasses: function (e) {
            var i, s, n;
            for (i in e) n = this.classesElementLookup[i], e[i] !==
            this.options.classes[i] && n && n.length &&
            (s = t(n.get()), this._removeClass(n, i), s.addClass(
                this._classes({ element: s, keys: i, classes: e, add: !0 })));
        },
        _setOptionDisabled: function (t) {
            this._toggleClass(this.widget(), this.widgetFullName + '-disabled',
                null, !!t), t && (this._removeClass(this.hoverable, null,
                'ui-state-hover'), this._removeClass(this.focusable, null,
                'ui-state-focus'));
        },
        enable: function () {return this._setOptions({ disabled: !1 });},
        disable: function () {return this._setOptions({ disabled: !0 });},
        _classes: function (e) {
            function i (i, o) {
                var a, r;
                for (r = 0; i.length >
                r; r++) a = n.classesElementLookup[i[r]] || t(), a = e.add
                    ? t(t.unique(a.get().concat(e.element.get())))
                    : t(a.not(e.element).
                        get()), n.classesElementLookup[i[r]] = a, s.push(
                    i[r]), o && e.classes[i[r]] && s.push(e.classes[i[r]]);
            }

            var s = [], n = this;
            return e = t.extend(
                { element: this.element, classes: this.options.classes || {} },
                e), this._on(e.element,
                { remove: '_untrackClassesElement' }), e.keys &&
            i(e.keys.match(/\S+/g) || [], !0), e.extra &&
            i(e.extra.match(/\S+/g) || []), s.join(' ');
        },
        _untrackClassesElement: function (e) {
            var i = this;
            t.each(i.classesElementLookup, function (s, n) {
                -1 !== t.inArray(e.target, n) &&
                (i.classesElementLookup[s] = t(n.not(e.target).get()));
            });
        },
        _removeClass: function (t, e, i) {
            return this._toggleClass(t, e, i, !1);
        },
        _addClass: function (t, e, i) {return this._toggleClass(t, e, i, !0);},
        _toggleClass: function (t, e, i, s) {
            s = 'boolean' == typeof s ? s : i;
            var n = 'string' == typeof t || null === t, o = {
                extra: n ? e : i,
                keys: n ? t : e,
                element: n ? this.element : t,
                add: s,
            };
            return o.element.toggleClass(this._classes(o), s), this;
        },
        _on: function (e, i, s) {
            var n, o = this;
            'boolean' != typeof e && (s = i, i = e, e = !1), s
                ? (i = n = t(i), this.bindings = this.bindings.add(i))
                : (s = i, i = this.element, n = this.widget()), t.each(s,
                function (s, a) {
                    function r () {
                        return e || o.options.disabled !== !0 &&
                        !t(this).hasClass('ui-state-disabled') ? ('string' ==
                        typeof a ? o[a] : a).apply(o, arguments) : void 0;
                    }

                    'string' != typeof a &&
                    (r.guid = a.guid = a.guid || r.guid || t.guid++);
                    var l = s.match(/^([\w:-]*)\s*(.*)$/),
                        h = l[1] + o.eventNamespace, c = l[2];
                    c ? n.on(h, c, r) : i.on(h, r);
                });
        },
        _off: function (e, i) {
            i = (i || '').split(' ').
                join(this.eventNamespace + ' ') + this.eventNamespace, e.off(i).
                off(i), this.bindings = t(
                this.bindings.not(e).get()), this.focusable = t(
                this.focusable.not(e).get()), this.hoverable = t(
                this.hoverable.not(e).get());
        },
        _delay: function (t, e) {
            function i () {
                return ('string' == typeof t
                    ? s[t]
                    : t).apply(s, arguments);
            }

            var s = this;
            return setTimeout(i, e || 0);
        },
        _hoverable: function (e) {
            this.hoverable = this.hoverable.add(e), this._on(e, {
                mouseenter: function (e) {
                    this._addClass(t(e.currentTarget), null, 'ui-state-hover');
                },
                mouseleave: function (e) {
                    this._removeClass(t(e.currentTarget), null,
                        'ui-state-hover');
                },
            });
        },
        _focusable: function (e) {
            this.focusable = this.focusable.add(e), this._on(e, {
                focusin: function (e) {
                    this._addClass(t(e.currentTarget), null, 'ui-state-focus');
                },
                focusout: function (e) {
                    this._removeClass(t(e.currentTarget), null,
                        'ui-state-focus');
                },
            });
        },
        _trigger: function (e, i, s) {
            var n, o, a = this.options[e];
            if (s = s || {}, i = t.Event(i), i.type = (e ===
            this.widgetEventPrefix ? e : this.widgetEventPrefix +
                e).toLowerCase(), i.target = this.element[0], o = i.originalEvent) for (n in o) n in
            i || (i[n] = o[n]);
            return this.element.trigger(i, s), !(t.isFunction(a) &&
                a.apply(this.element[0], [i].concat(s)) === !1 ||
                i.isDefaultPrevented());
        },
    }, t.each({ show: 'fadeIn', hide: 'fadeOut' }, function (e, i) {
        t.Widget.prototype['_' + e] = function (s, n, o) {
            'string' == typeof n && (n = { effect: n });
            var a, r = n
                ? n === !0 || 'number' == typeof n ? i : n.effect || i
                : e;
            n = n || {}, 'number' == typeof n &&
            (n = { duration: n }), a = !t.isEmptyObject(
                n), n.complete = o, n.delay && s.delay(n.delay), a &&
            t.effects && t.effects.effect[r] ? s[e](n) : r !== e && s[r] ? s[r](
                n.duration, n.easing, o) : s.queue(
                function (i) {t(this)[e](), o && o.call(s[0]), i();});
        };
    }), t.widget, t.ui.keyCode = {
        BACKSPACE: 8,
        COMMA: 188,
        DELETE: 46,
        DOWN: 40,
        END: 35,
        ENTER: 13,
        ESCAPE: 27,
        HOME: 36,
        LEFT: 37,
        PAGE_DOWN: 34,
        PAGE_UP: 33,
        PERIOD: 190,
        RIGHT: 39,
        SPACE: 32,
        TAB: 9,
        UP: 38,
    }, t.fn.extend({
        uniqueId: function () {
            var t = 0;
            return function () {
                return this.each(
                    function () {this.id || (this.id = 'ui-id-' + ++t);});
            };
        }(),
        removeUniqueId: function () {
            return this.each(function () {
                /^ui-id-\d+$/.test(this.id) && t(this).removeAttr('id');
            });
        },
    }), t.ui.escapeSelector = function () {
        var t = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
        return function (e) {return e.replace(t, '\\$1');};
    }(), t.ui.safeActiveElement = function (t) {
        var e;
        try {e = t.activeElement;} catch (i) {e = t.body;}
        return e || (e = t.body), e.nodeName || (e = t.body), e;
    }, t.widget('ui.tabs', {
        version: '1.12.1',
        delay: 300,
        options: {
            active: null,
            classes: {
                'ui-tabs': 'ui-corner-all',
                'ui-tabs-nav': 'ui-corner-all',
                'ui-tabs-panel': 'ui-corner-bottom',
                'ui-tabs-tab': 'ui-corner-top',
            },
            collapsible: !1,
            event: 'click',
            heightStyle: 'content',
            hide: null,
            show: null,
            activate: null,
            beforeActivate: null,
            beforeLoad: null,
            load: null,
        },
        _isLocal: function () {
            var t = /#.*$/;
            return function (e) {
                var i, s;
                i = e.href.replace(t, ''), s = location.href.replace(t, '');
                try {i = decodeURIComponent(i);} catch (n) {}
                try {s = decodeURIComponent(s);} catch (n) {}
                return e.hash.length > 1 && i === s;
            };
        }(),
        _create: function () {
            var e = this, i = this.options;
            this.running = !1, this._addClass('ui-tabs',
                'ui-widget ui-widget-content'), this._toggleClass(
                'ui-tabs-collapsible', null,
                i.collapsible), this._processTabs(), i.active = this._initialActive(), t.isArray(
                i.disabled) && (i.disabled = t.unique(i.disabled.concat(
                t.map(this.tabs.filter('.ui-state-disabled'),
                    function (t) {return e.tabs.index(t);}))).
                sort()), this.active = this.options.active !== !1 &&
            this.anchors.length
                ? this._findActive(i.active)
                : t(), this._refresh(), this.active.length &&
            this.load(i.active);
        },
        _initialActive: function () {
            var e = this.options.active, i = this.options.collapsible,
                s = location.hash.substring(1);
            return null === e && (s && this.tabs.each(function (i, n) {
                return t(n).attr('aria-controls') === s
                    ? (e = i, !1)
                    : void 0;
            }), null === e && (e = this.tabs.index(
                this.tabs.filter('.ui-tabs-active'))), (null === e || -1 ===
                e) && (e = this.tabs.length ? 0 : !1)), e !== !1 &&
            (e = this.tabs.index(this.tabs.eq(e)), -1 === e &&
            (e = i ? !1 : 0)), !i && e === !1 && this.anchors.length &&
            (e = 0), e;
        },
        _getCreateEventData: function () {
            return {
                tab: this.active,
                panel: this.active.length
                    ? this._getPanelForTab(this.active)
                    : t(),
            };
        },
        _tabKeydown: function (e) {
            var i = t(t.ui.safeActiveElement(this.document[0])).closest('li'),
                s = this.tabs.index(i), n = !0;
            if (!this._handlePageNav(e)) {
                switch (e.keyCode) {
                    case t.ui.keyCode.RIGHT:
                    case t.ui.keyCode.DOWN:
                        s++;
                        break;
                    case t.ui.keyCode.UP:
                    case t.ui.keyCode.LEFT:
                        n = !1, s--;
                        break;
                    case t.ui.keyCode.END:
                        s = this.anchors.length - 1;
                        break;
                    case t.ui.keyCode.HOME:
                        s = 0;
                        break;
                    case t.ui.keyCode.SPACE:
                        return e.preventDefault(), clearTimeout(
                            this.activating), this._activate(s), void 0;
                    case t.ui.keyCode.ENTER:
                        return e.preventDefault(), clearTimeout(
                            this.activating), this._activate(
                            s === this.options.active ? !1 : s), void 0;
                    default:
                        return;
                }
                e.preventDefault(), clearTimeout(
                    this.activating), s = this._focusNextTab(s, n), e.ctrlKey ||
                e.metaKey || (i.attr('aria-selected', 'false'), this.tabs.eq(s).
                    attr('aria-selected',
                        'true'), this.activating = this._delay(
                    function () {this.option('active', s);}, this.delay));
            }
        },
        _panelKeydown: function (e) {
            this._handlePageNav(e) || e.ctrlKey && e.keyCode ===
            t.ui.keyCode.UP &&
            (e.preventDefault(), this.active.trigger('focus'));
        },
        _handlePageNav: function (e) {
            return e.altKey && e.keyCode === t.ui.keyCode.PAGE_UP
                ? (this._activate(
                    this._focusNextTab(this.options.active - 1, !1)), !0)
                : e.altKey && e.keyCode === t.ui.keyCode.PAGE_DOWN
                    ? (this._activate(
                        this._focusNextTab(this.options.active + 1, !0)), !0)
                    : void 0;
        },
        _findNextTab: function (e, i) {
            function s () {
                return e > n && (e = 0), 0 > e && (e = n), e;
            }

            for (var n = this.tabs.length - 1; -1 !==
            t.inArray(s(), this.options.disabled);) e = i ? e + 1 : e - 1;
            return e;
        },
        _focusNextTab: function (t, e) {
            return t = this._findNextTab(t, e), this.tabs.eq(t).
                trigger('focus'), t;
        },
        _setOption: function (t, e) {
            return 'active' === t ? (this._activate(e), void 0) : (this._super(
                t, e), 'collapsible' === t &&
            (this._toggleClass('ui-tabs-collapsible', null, e), e ||
            this.options.active !== !1 || this._activate(0)), 'event' === t &&
            this._setupEvents(e), 'heightStyle' === t &&
            this._setupHeightStyle(e), void 0);
        },
        _sanitizeSelector: function (t) {
            return t
                ? t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, '\\$&')
                : '';
        },
        refresh: function () {
            var e = this.options, i = this.tablist.children(':has(a[href])');
            e.disabled = t.map(i.filter('.ui-state-disabled'), function (t) {
                return i.index(t);
            }), this._processTabs(), e.active !== !1 && this.anchors.length
                ? this.active.length &&
                !t.contains(this.tablist[0], this.active[0])
                    ? this.tabs.length === e.disabled.length
                        ? (e.active = !1, this.active = t())
                        : this._activate(
                            this._findNextTab(Math.max(0, e.active - 1), !1))
                    : e.active = this.tabs.index(this.active)
                : (e.active = !1, this.active = t()), this._refresh();
        },
        _refresh: function () {
            this._setOptionDisabled(this.options.disabled), this._setupEvents(
                this.options.event), this._setupHeightStyle(
                this.options.heightStyle), this.tabs.not(this.active).
                attr({
                    'aria-selected': 'false',
                    'aria-expanded': 'false',
                    tabIndex: -1,
                }), this.panels.not(this._getPanelForTab(this.active)).
                hide().
                attr({ 'aria-hidden': 'true' }), this.active.length
                ? (this.active.attr({
                    'aria-selected': 'true',
                    'aria-expanded': 'true',
                    tabIndex: 0,
                }), this._addClass(this.active, 'ui-tabs-active',
                    'ui-state-active'), this._getPanelForTab(this.active).
                    show().
                    attr({ 'aria-hidden': 'false' }))
                : this.tabs.eq(0).attr('tabIndex', 0);
        },
        _processTabs: function () {
            var e = this, i = this.tabs, s = this.anchors, n = this.panels;
            this.tablist = this._getList().
                attr('role', 'tablist'), this._addClass(this.tablist,
                'ui-tabs-nav',
                'ui-helper-reset ui-helper-clearfix ui-widget-header'), this.tablist.on(
                'mousedown' + this.eventNamespace, '> li', function (e) {
                    t(this).is('.ui-state-disabled') && e.preventDefault();
                }).
                on('focus' + this.eventNamespace, '.ui-tabs-anchor',
                    function () {
                        t(this).
                            closest('li').
                            is('.ui-state-disabled') && this.blur();
                    }), this.tabs = this.tablist.find('> li:has(a[href])').
                attr({ role: 'tab', tabIndex: -1 }), this._addClass(this.tabs,
                'ui-tabs-tab',
                'ui-state-default'), this.anchors = this.tabs.map(
                function () {return t('a', this)[0];}).
                attr({ role: 'presentation', tabIndex: -1 }), this._addClass(
                this.anchors,
                'ui-tabs-anchor'), this.panels = t(), this.anchors.each(
                function (i, s) {
                    var n, o, a, r = t(s).uniqueId().attr('id'),
                        l = t(s).closest('li'), h = l.attr('aria-controls');
                    e._isLocal(s)
                        ? (n = s.hash, a = n.substring(1), o = e.element.find(
                        e._sanitizeSelector(n)))
                        : (a = l.attr('aria-controls') ||
                        t({}).uniqueId()[0].id, n = '#' + a, o = e.element.find(
                        n), o.length || (o = e._createPanel(a), o.insertAfter(
                        e.panels[i - 1] || e.tablist)), o.attr('aria-live',
                        'polite')), o.length &&
                    (e.panels = e.panels.add(o)), h &&
                    l.data('ui-tabs-aria-controls', h), l.attr(
                        { 'aria-controls': a, 'aria-labelledby': r }), o.attr(
                        'aria-labelledby', r);
                }), this.panels.attr('role', 'tabpanel'), this._addClass(
                this.panels, 'ui-tabs-panel', 'ui-widget-content'), i &&
            (this._off(i.not(this.tabs)), this._off(
                s.not(this.anchors)), this._off(n.not(this.panels)));
        },
        _getList: function () {
            return this.tablist || this.element.find('ol, ul').eq(0);
        },
        _createPanel: function (e) {
            return t('<div>').
                attr('id', e).
                data('ui-tabs-destroy', !0);
        },
        _setOptionDisabled: function (e) {
            var i, s, n;
            for (t.isArray(e) && (e.length
                ? e.length === this.anchors.length && (e = !0)
                : e = !1), n = 0; s = this.tabs[n]; n++) i = t(s), e === !0 ||
            -1 !== t.inArray(n, e)
                ? (i.attr('aria-disabled', 'true'), this._addClass(i, null,
                    'ui-state-disabled'))
                : (i.removeAttr('aria-disabled'), this._removeClass(i, null,
                    'ui-state-disabled'));
            this.options.disabled = e, this._toggleClass(this.widget(),
                this.widgetFullName + '-disabled', null, e === !0);
        },
        _setupEvents: function (e) {
            var i = {};
            e && t.each(e.split(' '),
                function (t, e) {i[e] = '_eventHandler';}), this._off(
                this.anchors.add(this.tabs).add(this.panels)), this._on(!0,
                this.anchors,
                { click: function (t) {t.preventDefault();} }), this._on(
                this.anchors, i), this._on(this.tabs,
                { keydown: '_tabKeydown' }), this._on(this.panels,
                { keydown: '_panelKeydown' }), this._focusable(
                this.tabs), this._hoverable(this.tabs);
        },
        _setupHeightStyle: function (e) {
            var i, s = this.element.parent();
            'fill' === e ? (i = s.height(), i -= this.element.outerHeight() -
                this.element.height(), this.element.siblings(':visible').
                each(function () {
                    var e = t(this), s = e.css('position');
                    'absolute' !== s && 'fixed' !== s &&
                    (i -= e.outerHeight(!0));
                }), this.element.children().
                not(this.panels).
                each(function () {
                    i -= t(this).
                        outerHeight(!0);
                }), this.panels.each(function () {
                t(this).
                    height(Math.max(0,
                        i - t(this).innerHeight() + t(this).height()));
            }).css('overflow', 'auto')) : 'auto' === e &&
                (i = 0, this.panels.each(
                    function () {
                        i = Math.max(i, t(this).height('').height());
                    }).
                    height(i));
        },
        _eventHandler: function (e) {
            var i = this.options, s = this.active, n = t(e.currentTarget),
                o = n.closest('li'), a = o[0] === s[0], r = a && i.collapsible,
                l = r ? t() : this._getPanelForTab(o),
                h = s.length ? this._getPanelForTab(s) : t(), c = {
                    oldTab: s,
                    oldPanel: h,
                    newTab: r ? t() : o,
                    newPanel: l,
                };
            e.preventDefault(), o.hasClass('ui-state-disabled') ||
            o.hasClass('ui-tabs-loading') || this.running || a &&
            !i.collapsible || this._trigger('beforeActivate', e, c) === !1 ||
            (i.active = r ? !1 : this.tabs.index(o), this.active = a
                ? t()
                : o, this.xhr && this.xhr.abort(), h.length || l.length ||
            t.error(
                'jQuery UI Tabs: Mismatching fragment identifier.'), l.length &&
            this.load(this.tabs.index(o), e), this._toggle(e, c));
        },
        _toggle: function (e, i) {
            function s () {
                o.running = !1, o._trigger('activate', e, i);
            }

            function n () {
                o._addClass(i.newTab.closest('li'), 'ui-tabs-active',
                    'ui-state-active'), a.length && o.options.show ? o._show(a,
                    o.options.show, s) : (a.show(), s());
            }

            var o = this, a = i.newPanel, r = i.oldPanel;
            this.running = !0, r.length && this.options.hide ? this._hide(r,
                this.options.hide, function () {
                    o._removeClass(i.oldTab.closest('li'), 'ui-tabs-active',
                        'ui-state-active'), n();
                }) : (this._removeClass(i.oldTab.closest('li'),
                'ui-tabs-active', 'ui-state-active'), r.hide(), n()), r.attr(
                'aria-hidden', 'true'), i.oldTab.attr({
                'aria-selected': 'false',
                'aria-expanded': 'false',
            }), a.length && r.length
                ? i.oldTab.attr('tabIndex', -1)
                : a.length && this.tabs.filter(
                function () {return 0 === t(this).attr('tabIndex');}).
                attr('tabIndex', -1), a.attr('aria-hidden',
                'false'), i.newTab.attr({
                'aria-selected': 'true',
                'aria-expanded': 'true',
                tabIndex: 0,
            });
        },
        _activate: function (e) {
            var i, s = this._findActive(e);
            s[0] !== this.active[0] &&
            (s.length || (s = this.active), i = s.find(
                '.ui-tabs-anchor')[0], this._eventHandler(
                { target: i, currentTarget: i, preventDefault: t.noop }));
        },
        _findActive: function (e) {return e === !1 ? t() : this.tabs.eq(e);},
        _getIndex: function (e) {
            return 'string' == typeof e && (e = this.anchors.index(
                this.anchors.filter(
                    '[href$=\'' + t.ui.escapeSelector(e) + '\']'))), e;
        },
        _destroy: function () {
            this.xhr && this.xhr.abort(), this.tablist.removeAttr('role').
                off(this.eventNamespace), this.anchors.removeAttr(
                'role tabIndex').removeUniqueId(), this.tabs.add(this.panels).
                each(function () {
                    t.data(this, 'ui-tabs-destroy') ? t(this).
                        remove() : t(this).
                        removeAttr(
                            'role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded');
                }), this.tabs.each(function () {
                var e = t(this), i = e.data('ui-tabs-aria-controls');
                i ? e.attr('aria-controls', i).
                    removeData('ui-tabs-aria-controls') : e.removeAttr(
                    'aria-controls');
            }), this.panels.show(), 'content' !== this.options.heightStyle &&
            this.panels.css('height', '');
        },
        enable: function (e) {
            var i = this.options.disabled;
            i !== !1 &&
            (void 0 === e ? i = !1 : (e = this._getIndex(e), i = t.isArray(i)
                ? t.map(i, function (t) {return t !== e ? t : null;})
                : t.map(this.tabs, function (t, i) {
                    return i !== e
                        ? i
                        : null;
                })), this._setOptionDisabled(i));
        },
        disable: function (e) {
            var i = this.options.disabled;
            if (i !== !0) {
                if (void 0 === e) i = !0; else {
                    if (e = this._getIndex(e), -1 !== t.inArray(e, i)) return;
                    i = t.isArray(i) ? t.merge([e], i).sort() : [e];
                }
                this._setOptionDisabled(i);
            }
        },
        load: function (e, i) {
            e = this._getIndex(e);
            var s = this, n = this.tabs.eq(e), o = n.find('.ui-tabs-anchor'),
                a = this._getPanelForTab(n), r = { tab: n, panel: a },
                l = function (t, e) {
                    'abort' === e && s.panels.stop(!1, !0), s._removeClass(n,
                        'ui-tabs-loading'), a.removeAttr('aria-busy'), t ===
                    s.xhr && delete s.xhr;
                };
            this._isLocal(o[0]) ||
            (this.xhr = t.ajax(this._ajaxSettings(o, i, r)), this.xhr &&
            'canceled' !== this.xhr.statusText &&
            (this._addClass(n, 'ui-tabs-loading'), a.attr('aria-busy',
                'true'), this.xhr.done(function (t, e, n) {
                setTimeout(
                    function () {a.html(t), s._trigger('load', i, r), l(n, e);},
                    1);
            }).fail(function (t, e) {setTimeout(function () {l(t, e);}, 1);})));
        },
        _ajaxSettings: function (e, i, s) {
            var n = this;
            return {
                url: e.attr('href').replace(/#.*$/, ''),
                beforeSend: function (e, o) {
                    return n._trigger('beforeLoad', i,
                        t.extend({ jqXHR: e, ajaxSettings: o }, s));
                },
            };
        },
        _getPanelForTab: function (e) {
            var i = t(e).attr('aria-controls');
            return this.element.find(this._sanitizeSelector('#' + i));
        },
    }), t.uiBackCompat !== !1 && t.widget('ui.tabs', t.ui.tabs, {
        _processTabs: function () {
            this._superApply(arguments), this._addClass(this.tabs, 'ui-tab');
        },
    }), t.ui.tabs;
    var s = 'ui-effects-', n = 'ui-effects-style', o = 'ui-effects-animated',
        a = t;
    t.effects = { effect: {} }, function (t, e) {
        function i (t, e, i) {
            var s = u[e.type] || {};
            return null == t ? i || !e.def ? null : e.def : (t = s.floor
                ? ~~t
                : parseFloat(t), isNaN(t) ? e.def : s.mod
                ? (t + s.mod) % s.mod
                : 0 > t ? 0 : t > s.max ? s.max : t);
        }

        function s (i) {
            var s = h(), n = s._rgba = [];
            return i = i.toLowerCase(), f(l, function (t, o) {
                var a, r = o.re.exec(i), l = r && o.parse(r),
                    h = o.space || 'rgba';
                return l
                    ? (a = s[h](
                        l), s[c[h].cache] = a[c[h].cache], n = s._rgba = a._rgba, !1)
                    : e;
            }), n.length ? ('0,0,0,0' === n.join() &&
            t.extend(n, o.transparent), s) : o[i];
        }

        function n (t, e, i) {
            return i = (i + 1) % 1, 1 > 6 * i ? t + 6 * (e - t) * i : 1 > 2 * i
                ? e
                : 2 > 3 * i ? t + 6 * (e - t) * (2 / 3 - i) : t;
        }

        var o,
            a = 'backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor',
            r = /^([\-+])=\s*(\d+\.?\d*)/, l = [
                {
                    re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                    parse: function (t) {return [t[1], t[2], t[3], t[4]];},
                },
                {
                    re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                    parse: function (t) {
                        return [
                            2.55 * t[1],
                            2.55 * t[2],
                            2.55 * t[3],
                            t[4]];
                    },
                },
                {
                    re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
                    parse: function (t) {
                        return [
                            parseInt(t[1], 16),
                            parseInt(t[2], 16),
                            parseInt(t[3], 16)];
                    },
                },
                {
                    re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
                    parse: function (t) {
                        return [
                            parseInt(t[1] + t[1], 16),
                            parseInt(t[2] + t[2], 16),
                            parseInt(t[3] + t[3], 16)];
                    },
                },
                {
                    re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                    space: 'hsla',
                    parse: function (t) {
                        return [
                            t[1],
                            t[2] / 100,
                            t[3] / 100,
                            t[4]];
                    },
                }], h = t.Color = function (e, i, s, n) {
                return new t.Color.fn.parse(e, i, s, n);
            }, c = {
                rgba: {
                    props: {
                        red: { idx: 0, type: 'byte' },
                        green: { idx: 1, type: 'byte' },
                        blue: { idx: 2, type: 'byte' },
                    },
                },
                hsla: {
                    props: {
                        hue: { idx: 0, type: 'degrees' },
                        saturation: { idx: 1, type: 'percent' },
                        lightness: { idx: 2, type: 'percent' },
                    },
                },
            }, u = {
                'byte': { floor: !0, max: 255 },
                percent: { max: 1 },
                degrees: { mod: 360, floor: !0 },
            }, d = h.support = {}, p = t('<p>')[0], f = t.each;
        p.style.cssText = 'background-color:rgba(1,1,1,.5)', d.rgba = p.style.backgroundColor.indexOf(
            'rgba') > -1, f(c, function (t, e) {
            e.cache = '_' + t, e.props.alpha = {
                idx: 3,
                type: 'percent',
                def: 1,
            };
        }), h.fn = t.extend(h.prototype, {
            parse: function (n, a, r, l) {
                if (n === e) return this._rgba = [null, null, null, null], this;
                (n.jquery || n.nodeType) && (n = t(n).css(a), a = e);
                var u = this, d = t.type(n), p = this._rgba = [];
                return a !== e && (n = [n, a, r, l], d = 'array'), 'string' ===
                d ? this.parse(s(n) || o._default) : 'array' === d
                    ? (f(c.rgba.props,
                        function (t, e) {p[e.idx] = i(n[e.idx], e);}), this)
                    : 'object' === d ? (n instanceof h ? f(c, function (t, e) {
                        n[e.cache] && (u[e.cache] = n[e.cache].slice());
                    }) : f(c, function (e, s) {
                        var o = s.cache;
                        f(s.props, function (t, e) {
                            if (!u[o] && s.to) {
                                if ('alpha' === t || null == n[t]) return;
                                u[o] = s.to(u._rgba);
                            }
                            u[o][e.idx] = i(n[t], e, !0);
                        }), u[o] && 0 > t.inArray(null, u[o].slice(0, 3)) &&
                        (u[o][3] = 1, s.from && (u._rgba = s.from(u[o])));
                    }), this) : e;
            },
            is: function (t) {
                var i = h(t), s = !0, n = this;
                return f(c, function (t, o) {
                    var a, r = i[o.cache];
                    return r &&
                    (a = n[o.cache] || o.to && o.to(n._rgba) || [], f(o.props,
                        function (t, i) {
                            return null != r[i.idx]
                                ? s = r[i.idx] === a[i.idx]
                                : e;
                        })), s;
                }), s;
            },
            _space: function () {
                var t = [], e = this;
                return f(c,
                    function (i, s) {e[s.cache] && t.push(i);}), t.pop();
            },
            transition: function (t, e) {
                var s = h(t), n = s._space(), o = c[n],
                    a = 0 === this.alpha() ? h('transparent') : this,
                    r = a[o.cache] || o.to(a._rgba), l = r.slice();
                return s = s[o.cache], f(o.props, function (t, n) {
                    var o = n.idx, a = r[o], h = s[o], c = u[n.type] || {};
                    null !== h && (null === a ? l[o] = h : (c.mod &&
                    (h - a > c.mod / 2 ? a += c.mod : a - h > c.mod / 2 &&
                        (a -= c.mod)), l[o] = i((h - a) * e + a, n)));
                }), this[n](l);
            },
            blend: function (e) {
                if (1 === this._rgba[3]) return this;
                var i = this._rgba.slice(), s = i.pop(), n = h(e)._rgba;
                return h(
                    t.map(i, function (t, e) {return (1 - s) * n[e] + s * t;}));
            },
            toRgbaString: function () {
                var e = 'rgba(', i = t.map(this._rgba,
                    function (t, e) {return null == t ? e > 2 ? 1 : 0 : t;});
                return 1 === i[3] && (i.pop(), e = 'rgb('), e + i.join() + ')';
            },
            toHslaString: function () {
                var e = 'hsla(', i = t.map(this.hsla(), function (t, e) {
                    return null == t && (t = e > 2 ? 1 : 0), e && 3 > e &&
                    (t = Math.round(100 * t) + '%'), t;
                });
                return 1 === i[3] && (i.pop(), e = 'hsl('), e + i.join() + ')';
            },
            toHexString: function (e) {
                var i = this._rgba.slice(), s = i.pop();
                return e && i.push(~~(255 * s)), '#' + t.map(i, function (t) {
                    return t = (t || 0).toString(16), 1 === t.length
                        ? '0' + t
                        : t;
                }).join('');
            },
            toString: function () {
                return 0 === this._rgba[3]
                    ? 'transparent'
                    : this.toRgbaString();
            },
        }), h.fn.parse.prototype = h.fn, c.hsla.to = function (t) {
            if (null == t[0] || null == t[1] || null == t[2]) return [
                null,
                null,
                null,
                t[3]];
            var e, i, s = t[0] / 255, n = t[1] / 255, o = t[2] / 255, a = t[3],
                r = Math.max(s, n, o), l = Math.min(s, n, o), h = r - l,
                c = r + l, u = .5 * c;
            return e = l === r ? 0 : s === r ? 60 * (n - o) / h + 360 : n === r
                ? 60 * (o - s) / h + 120
                : 60 * (s - n) / h + 240, i = 0 === h ? 0 : .5 >= u
                ? h / c
                : h / (2 - c), [Math.round(e) % 360, i, u, null == a ? 1 : a];
        }, c.hsla.from = function (t) {
            if (null == t[0] || null == t[1] || null == t[2]) return [
                null,
                null,
                null,
                t[3]];
            var e = t[0] / 360, i = t[1], s = t[2], o = t[3],
                a = .5 >= s ? s * (1 + i) : s + i - s * i, r = 2 * s - a;
            return [
                Math.round(255 * n(r, a, e + 1 / 3)),
                Math.round(255 * n(r, a, e)),
                Math.round(255 * n(r, a, e - 1 / 3)),
                o];
        }, f(c, function (s, n) {
            var o = n.props, a = n.cache, l = n.to, c = n.from;
            h.fn[s] = function (s) {
                if (l && !this[a] && (this[a] = l(this._rgba)), s ===
                e) return this[a].slice();
                var n, r = t.type(s),
                    u = 'array' === r || 'object' === r ? s : arguments,
                    d = this[a].slice();
                return f(o, function (t, e) {
                    var s = u['object' === r ? t : e.idx];
                    null == s && (s = d[e.idx]), d[e.idx] = i(s, e);
                }), c ? (n = h(c(d)), n[a] = d, n) : h(d);
            }, f(o, function (e, i) {
                h.fn[e] || (h.fn[e] = function (n) {
                    var o, a = t.type(n), l = 'alpha' === e
                        ? this._hsla ? 'hsla' : 'rgba'
                        : s, h = this[l](), c = h[i.idx];
                    return 'undefined' === a ? c : ('function' === a &&
                    (n = n.call(this, c), a = t.type(n)), null == n && i.empty
                        ? this
                        : ('string' === a && (o = r.exec(n), o &&
                        (n = c + parseFloat(o[2]) *
                            ('+' === o[1] ? 1 : -1))), h[i.idx] = n, this[l](
                            h)));
                });
            });
        }), h.hook = function (e) {
            var i = e.split(' ');
            f(i, function (e, i) {
                t.cssHooks[i] = {
                    set: function (e, n) {
                        var o, a, r = '';
                        if ('transparent' !== n &&
                            ('string' !== t.type(n) || (o = s(n)))) {
                            if (n = h(o || n), !d.rgba && 1 !== n._rgba[3]) {
                                for (a = 'backgroundColor' === i
                                    ? e.parentNode
                                    : e; ("" === r || "transparent" === r) &&
                                     a && a.style;) try {
                                    r = t.css(a,
                                        'backgroundColor'), a = a.parentNode;
                                } catch (l) {}
                                n = n.blend(
                                    r && 'transparent' !== r ? r : '_default');
                            }
                            n = n.toRgbaString();
                        }
                        try {e.style[i] = n;} catch (l) {}
                    },
                }, t.fx.step[i] = function (e) {
                    e.colorInit || (e.start = h(e.elem, i), e.end = h(
                        e.end), e.colorInit = !0), t.cssHooks[i].set(e.elem,
                        e.start.transition(e.end, e.pos));
                };
            });
        }, h.hook(a), t.cssHooks.borderColor = {
            expand: function (t) {
                var e = {};
                return f(['Top', 'Right', 'Bottom', 'Left'],
                    function (i, s) {e['border' + s + 'Color'] = t;}), e;
            },
        }, o = t.Color.names = {
            aqua: '#00ffff',
            black: '#000000',
            blue: '#0000ff',
            fuchsia: '#ff00ff',
            gray: '#808080',
            green: '#008000',
            lime: '#00ff00',
            maroon: '#800000',
            navy: '#000080',
            olive: '#808000',
            purple: '#800080',
            red: '#ff0000',
            silver: '#c0c0c0',
            teal: '#008080',
            white: '#ffffff',
            yellow: '#ffff00',
            transparent: [null, null, null, 0],
            _default: '#ffffff',
        };
    }(a), function () {
        function e (e) {
            var i, s, n = e.ownerDocument.defaultView
                ? e.ownerDocument.defaultView.getComputedStyle(e, null)
                : e.currentStyle, o = {};
            if (n && n.length && n[0] &&
                n[n[0]]) for (s = n.length; s--;) i = n[s], 'string' ==
            typeof n[i] &&
            (o[t.camelCase(i)] = n[i]); else for (i in n) 'string' ==
            typeof n[i] && (o[i] = n[i]);
            return o;
        }

        function i (e, i) {
            var s, o, a = {};
            for (s in i) o = i[s], e[s] !== o &&
            (n[s] || (t.fx.step[s] || !isNaN(parseFloat(o))) && (a[s] = o));
            return a;
        }

        var s = ['add', 'remove', 'toggle'], n = {
            border: 1,
            borderBottom: 1,
            borderColor: 1,
            borderLeft: 1,
            borderRight: 1,
            borderTop: 1,
            borderWidth: 1,
            margin: 1,
            padding: 1,
        };
        t.each([
            'borderLeftStyle',
            'borderRightStyle',
            'borderBottomStyle',
            'borderTopStyle'], function (e, i) {
            t.fx.step[i] = function (t) {
                ('none' !== t.end && !t.setAttr || 1 === t.pos && !t.setAttr) &&
                (a.style(t.elem, i, t.end), t.setAttr = !0);
            };
        }), t.fn.addBack || (t.fn.addBack = function (t) {
            return this.add(
                null == t ? this.prevObject : this.prevObject.filter(t));
        }), t.effects.animateClass = function (n, o, a, r) {
            var l = t.speed(o, a, r);
            return this.queue(function () {
                var o, a = t(this), r = a.attr('class') || '',
                    h = l.children ? a.find('*').addBack() : a;
                h = h.map(function () {
                    var i = t(this);
                    return { el: i, start: e(this) };
                }), o = function () {
                    t.each(s, function (t, e) {n[e] && a[e + 'Class'](n[e]);});
                }, o(), h = h.map(function () {
                    return this.end = e(this.el[0]), this.diff = i(this.start,
                        this.end), this;
                }), a.attr('class', r), h = h.map(function () {
                    var e = this, i = t.Deferred(), s = t.extend({}, l,
                        { queue: !1, complete: function () {i.resolve(e);} });
                    return this.el.animate(this.diff, s), i.promise();
                }), t.when.apply(t, h.get()).
                    done(function () {
                        o(), t.each(arguments, function () {
                            var e = this.el;
                            t.each(this.diff, function (t) {e.css(t, '');});
                        }), l.complete.call(a[0]);
                    });
            });
        }, t.fn.extend({
            addClass: function (e) {
                return function (i, s, n, o) {
                    return s
                        ? t.effects.animateClass.call(this, { add: i }, s, n, o)
                        : e.apply(this, arguments);
                };
            }(t.fn.addClass),
            removeClass: function (e) {
                return function (i, s, n, o) {
                    return arguments.length > 1
                        ? t.effects.animateClass.call(this, { remove: i }, s, n,
                            o)
                        : e.apply(this, arguments);
                };
            }(t.fn.removeClass),
            toggleClass: function (e) {
                return function (i, s, n, o, a) {
                    return 'boolean' == typeof s || void 0 === s
                        ? n ? t.effects.animateClass.call(this,
                            s ? { add: i } : { remove: i }, n, o, a) : e.apply(
                            this, arguments)
                        : t.effects.animateClass.call(this, { toggle: i }, s, n,
                            o);
                };
            }(t.fn.toggleClass),
            switchClass: function (e, i, s, n, o) {
                return t.effects.animateClass.call(this, { add: i, remove: e },
                    s, n, o);
            },
        });
    }(), function () {
        function e (e, i, s, n) {
            return t.isPlainObject(e) &&
            (i = e, e = e.effect), e = { effect: e }, null == i &&
            (i = {}), t.isFunction(i) && (n = i, s = null, i = {}), ('number' ==
                typeof i || t.fx.speeds[i]) &&
            (n = s, s = i, i = {}), t.isFunction(s) && (n = s, s = null), i &&
            t.extend(e, i), s = s || i.duration, e.duration = t.fx.off
                ? 0
                : 'number' == typeof s
                    ? s
                    : s in t.fx.speeds
                        ? t.fx.speeds[s]
                        : t.fx.speeds._default, e.complete = n || i.complete, e;
        }

        function i (e) {
            return !e || 'number' == typeof e || t.fx.speeds[e]
                ? !0
                : 'string' != typeof e || t.effects.effect[e] ? t.isFunction(e)
                    ? !0
                    : 'object' != typeof e || e.effect ? !1 : !0 : !0;
        }

        function a (t, e) {
            var i = e.outerWidth(), s = e.outerHeight(),
                n = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
                o = n.exec(t) || ['', 0, i, s, 0];
            return {
                top: parseFloat(o[1]) || 0,
                right: 'auto' === o[2] ? i : parseFloat(o[2]),
                bottom: 'auto' === o[3] ? s : parseFloat(o[3]),
                left: parseFloat(o[4]) || 0,
            };
        }

        t.expr && t.expr.filters && t.expr.filters.animated &&
        (t.expr.filters.animated = function (e) {
            return function (i) {
                return !!t(i).data(o) || e(i);
            };
        }(t.expr.filters.animated)), t.uiBackCompat !== !1 &&
        t.extend(t.effects, {
            save: function (t, e) {
                for (var i = 0, n = e.length; n > i; i++) null !== e[i] &&
                t.data(s + e[i], t[0].style[e[i]]);
            },
            restore: function (t, e) {
                for (var i, n = 0, o = e.length; o > n; n++) null !== e[n] &&
                (i = t.data(s + e[n]), t.css(e[n], i));
            },
            setMode: function (t, e) {
                return 'toggle' === e &&
                (e = t.is(':hidden') ? 'show' : 'hide'), e;
            },
            createWrapper: function (e) {
                if (e.parent().
                    is('.ui-effects-wrapper')) return e.parent();
                var i = {
                        width: e.outerWidth(!0),
                        height: e.outerHeight(!0),
                        'float': e.css('float'),
                    }, s = t('<div></div>').
                        addClass('ui-effects-wrapper').
                        css({
                            fontSize: '100%',
                            background: 'transparent',
                            border: 'none',
                            margin: 0,
                            padding: 0,
                        }), n = { width: e.width(), height: e.height() },
                    o = document.activeElement;
                try {o.id;} catch (a) {o = document.body;}
                return e.wrap(s), (e[0] === o || t.contains(e[0], o)) &&
                t(o).trigger('focus'), s = e.parent(), 'static' ===
                e.css('position') ? (s.css({ position: 'relative' }), e.css(
                    { position: 'relative' })) : (t.extend(i, {
                    position: e.css('position'),
                    zIndex: e.css('z-index'),
                }), t.each(['top', 'left', 'bottom', 'right'], function (t, s) {
                    i[s] = e.css(s), isNaN(parseInt(i[s], 10)) &&
                    (i[s] = 'auto');
                }), e.css({
                    position: 'relative',
                    top: 0,
                    left: 0,
                    right: 'auto',
                    bottom: 'auto',
                })), e.css(n), s.css(i).show();
            },
            removeWrapper: function (e) {
                var i = document.activeElement;
                return e.parent().is('.ui-effects-wrapper') &&
                (e.parent().replaceWith(e), (e[0] === i ||
                    t.contains(e[0], i)) && t(i).trigger('focus')), e;
            },
        }), t.extend(t.effects, {
            version: '1.12.1',
            define: function (e, i, s) {
                return s ||
                (s = i, i = 'effect'), t.effects.effect[e] = s, t.effects.effect[e].mode = i, s;
            },
            scaledDimensions: function (t, e, i) {
                if (0 === e) return {
                    height: 0,
                    width: 0,
                    outerHeight: 0,
                    outerWidth: 0,
                };
                var s = 'horizontal' !== i ? (e || 100) / 100 : 1,
                    n = 'vertical' !== i ? (e || 100) / 100 : 1;
                return {
                    height: t.height() * n,
                    width: t.width() * s,
                    outerHeight: t.outerHeight() * n,
                    outerWidth: t.outerWidth() * s,
                };
            },
            clipToBox: function (t) {
                return {
                    width: t.clip.right - t.clip.left,
                    height: t.clip.bottom - t.clip.top,
                    left: t.clip.left,
                    top: t.clip.top,
                };
            },
            unshift: function (t, e, i) {
                var s = t.queue();
                e > 1 &&
                s.splice.apply(s, [1, 0].concat(s.splice(e, i))), t.dequeue();
            },
            saveStyle: function (t) {t.data(n, t[0].style.cssText);},
            restoreStyle: function (t) {
                t[0].style.cssText = t.data(n) || '', t.removeData(n);
            },
            mode: function (t, e) {
                var i = t.is(':hidden');
                return 'toggle' === e && (e = i ? 'show' : 'hide'), (i
                    ? 'hide' === e
                    : 'show' === e) && (e = 'none'), e;
            },
            getBaseline: function (t, e) {
                var i, s;
                switch (t[0]) {
                    case'top':
                        i = 0;
                        break;
                    case'middle':
                        i = .5;
                        break;
                    case'bottom':
                        i = 1;
                        break;
                    default:
                        i = t[0] / e.height;
                }
                switch (t[1]) {
                    case'left':
                        s = 0;
                        break;
                    case'center':
                        s = .5;
                        break;
                    case'right':
                        s = 1;
                        break;
                    default:
                        s = t[1] / e.width;
                }
                return { x: s, y: i };
            },
            createPlaceholder: function (e) {
                var i, n = e.css('position'), o = e.position();
                return e.css({
                    marginTop: e.css('marginTop'),
                    marginBottom: e.css('marginBottom'),
                    marginLeft: e.css('marginLeft'),
                    marginRight: e.css('marginRight'),
                }).
                    outerWidth(e.outerWidth()).
                    outerHeight(e.outerHeight()), /^(static|relative)/.test(
                    n) && (n = 'absolute', i = t('<' + e[0].nodeName + '>').
                    insertAfter(e).
                    css({
                        display: /^(inline|ruby)/.test(e.css('display'))
                            ? 'inline-block'
                            : 'block',
                        visibility: 'hidden',
                        marginTop: e.css('marginTop'),
                        marginBottom: e.css('marginBottom'),
                        marginLeft: e.css('marginLeft'),
                        marginRight: e.css('marginRight'),
                        'float': e.css('float'),
                    }).
                    outerWidth(e.outerWidth()).
                    outerHeight(e.outerHeight()).
                    addClass('ui-effects-placeholder'), e.data(
                    s + 'placeholder', i)), e.css(
                    { position: n, left: o.left, top: o.top }), i;
            },
            removePlaceholder: function (t) {
                var e = s + 'placeholder', i = t.data(e);
                i && (i.remove(), t.removeData(e));
            },
            cleanUp: function (e) {
                t.effects.restoreStyle(e), t.effects.removePlaceholder(e);
            },
            setTransition: function (e, i, s, n) {
                return n = n || {}, t.each(i, function (t, i) {
                    var o = e.cssUnit(i);
                    o[0] > 0 && (n[i] = o[0] * s + o[1]);
                }), n;
            },
        }), t.fn.extend({
            effect: function () {
                function i (e) {
                    function i () {
                        l.removeData(o), t.effects.cleanUp(l), 'hide' ===
                        s.mode && l.hide(), r();
                    }

                    function r () {
                        t.isFunction(h) && h.call(l[0]), t.isFunction(e) && e();
                    }

                    var l = t(this);
                    s.mode = u.shift(), t.uiBackCompat === !1 || a ? 'none' ===
                    s.mode ? (l[c](), r()) : n.call(l[0], s, i) : (l.is(
                        ':hidden')
                        ? 'hide' === c
                        : 'show' === c) ? (l[c](), r()) : n.call(l[0], s, r);
                }

                var s = e.apply(this, arguments),
                    n = t.effects.effect[s.effect], a = n.mode, r = s.queue,
                    l = r || 'fx', h = s.complete, c = s.mode, u = [],
                    d = function (e) {
                        var i = t(this), s = t.effects.mode(i, c) || a;
                        i.data(o, !0), u.push(s), a &&
                        ('show' === s || s === a && 'hide' === s) &&
                        i.show(), a && 'none' === s ||
                        t.effects.saveStyle(i), t.isFunction(e) && e();
                    };
                return t.fx.off || !n ? c ? this[c](s.duration, h) : this.each(
                    function () {h && h.call(this);}) : r === !1 ? this.each(d).
                    each(i) : this.queue(l, d).queue(l, i);
            },
            show: function (t) {
                return function (s) {
                    if (i(s)) return t.apply(this, arguments);
                    var n = e.apply(this, arguments);
                    return n.mode = 'show', this.effect.call(this, n);
                };
            }(t.fn.show),
            hide: function (t) {
                return function (s) {
                    if (i(s)) return t.apply(this, arguments);
                    var n = e.apply(this, arguments);
                    return n.mode = 'hide', this.effect.call(this, n);
                };
            }(t.fn.hide),
            toggle: function (t) {
                return function (s) {
                    if (i(s) || 'boolean' == typeof s) return t.apply(this,
                        arguments);
                    var n = e.apply(this, arguments);
                    return n.mode = 'toggle', this.effect.call(this, n);
                };
            }(t.fn.toggle),
            cssUnit: function (e) {
                var i = this.css(e), s = [];
                return t.each(['em', 'px', '%', 'pt'], function (t, e) {
                    i.indexOf(e) > 0 && (s = [parseFloat(i), e]);
                }), s;
            },
            cssClip: function (t) {
                return t ? this.css('clip',
                    'rect(' + t.top + 'px ' + t.right + 'px ' + t.bottom +
                    'px ' + t.left + 'px)') : a(this.css('clip'), this);
            },
            transfer: function (e, i) {
                var s = t(this), n = t(e.to), o = 'fixed' === n.css('position'),
                    a = t('body'), r = o ? a.scrollTop() : 0,
                    l = o ? a.scrollLeft() : 0, h = n.offset(), c = {
                        top: h.top - r,
                        left: h.left - l,
                        height: n.innerHeight(),
                        width: n.innerWidth(),
                    }, u = s.offset(),
                    d = t('<div class=\'ui-effects-transfer\'></div>').
                        appendTo('body').
                        addClass(e.className).
                        css({
                            top: u.top - r,
                            left: u.left - l,
                            height: s.innerHeight(),
                            width: s.innerWidth(),
                            position: o ? 'fixed' : 'absolute',
                        }).
                        animate(c, e.duration, e.easing,
                            function () {d.remove(), t.isFunction(i) && i();});
            },
        }), t.fx.step.clip = function (e) {
            e.clipInit ||
            (e.start = t(e.elem).cssClip(), 'string' == typeof e.end &&
            (e.end = a(e.end, e.elem)), e.clipInit = !0), t(e.elem).
                cssClip({
                    top: e.pos * (e.end.top - e.start.top) + e.start.top,
                    right: e.pos * (e.end.right - e.start.right) +
                        e.start.right,
                    bottom: e.pos * (e.end.bottom - e.start.bottom) +
                        e.start.bottom,
                    left: e.pos * (e.end.left - e.start.left) + e.start.left,
                });
        };
    }(), function () {
        var e = {};
        t.each(['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'], function (t, i) {
            e[i] = function (e) {
                return Math.pow(e, t + 2);
            };
        }), t.extend(e, {
            Sine: function (t) {return 1 - Math.cos(t * Math.PI / 2);},
            Circ: function (t) {return 1 - Math.sqrt(1 - t * t);},
            Elastic: function (t) {
                return 0 === t || 1 === t ? t : -Math.pow(2, 8 * (t - 1)) *
                    Math.sin((80 * (t - 1) - 7.5) * Math.PI / 15);
            },
            Back: function (t) {return t * t * (3 * t - 2);},
            Bounce: function (t) {
                for (var e, i = 4; ((e = Math.pow(2, --i)) - 1) / 11 > t;) ;
                return 1 / Math.pow(4, 3 - i) - 7.5625 *
                    Math.pow((3 * e - 2) / 22 - t, 2);
            },
        }), t.each(e, function (e, i) {
            t.easing['easeIn' + e] = i, t.easing['easeOut' +
            e] = function (t) {return 1 - i(1 - t);}, t.easing['easeInOut' +
            e] = function (t) {
                return .5 > t ? i(2 * t) / 2 : 1 - i(-2 * t + 2) / 2;
            };
        });
    }(), t.effects, t.effects.define('fade', 'toggle', function (e, i) {
        var s = 'show' === e.mode;
        t(this).
            css('opacity', s ? 0 : 1).
            animate({ opacity: s ? 1 : 0 }, {
                queue: !1,
                duration: e.duration,
                easing: e.easing,
                complete: i,
            });
    }), t.effects.define('slide', 'show', function (e, i) {
        var s, n, o = t(this), a = {
                up: ['bottom', 'top'],
                down: ['top', 'bottom'],
                left: ['right', 'left'],
                right: ['left', 'right'],
            }, r = e.mode, l = e.direction || 'left',
            h = 'up' === l || 'down' === l ? 'top' : 'left',
            c = 'up' === l || 'left' === l,
            u = e.distance || o['top' === h ? 'outerHeight' : 'outerWidth'](!0),
            d = {};
        t.effects.createPlaceholder(
            o), s = o.cssClip(), n = o.position()[h], d[h] = (c ? -1 : 1) * u +
            n, d.clip = o.cssClip(), d.clip[a[l][1]] = d.clip[a[l][0]], 'show' ===
        r &&
        (o.cssClip(d.clip), o.css(h, d[h]), d.clip = s, d[h] = n), o.animate(d,
            { queue: !1, duration: e.duration, easing: e.easing, complete: i });
    });
});

window.SEMICOLON_tabsInit = function ($tabsEl) {

    $tabsEl = $tabsEl.filter(':not(.customjs)');

    if ($tabsEl.length < 1) {
        return true;
    }

    $tabsEl.each(function () {
        let element = $(this),
            elAction = element.attr('data-action') || 'click',
            elSpeed = element.attr('data-speed') || 400,
            elActive = element.attr('data-active') || 1;

        elActive = elActive - 1;

        let windowHash = window.location.hash;
        if ($(windowHash).length > 0 && element.find(windowHash).length > 0) {
            elActive = $(windowHash).index();
        }

        element.tabs({
            event: elAction,
            active: Number(elActive),
            show: {
                effect: 'fade',
                duration: Number(elSpeed),
            },
            activate: function (event, ui) {
                $(ui.newPanel).find('.flexslider .slide').resize();
            },
        });

        SEMICOLON_tabsResponsive(element);
        SEMICOLON_tabsResponsiveResizeInit(element);

        $(window).on('scwWindowResize', function () {
            SEMICOLON_tabsResponsiveResizeInit(element);
        });
    });

};

window.SEMICOLON_tabsResponsive = function ($tabsEl) {

    $tabsEl = $tabsEl.filter('.tabs-responsive');

    if ($tabsEl.length < 1) {
        return true;
    }

    $tabsEl.each(function () {
        let element = $(this),
            elementNav = element.find('.tab-nav'),
            elementContent = element.find('.tab-container');

        elementNav.children('li').each(function () {
            let navEl = $(this),
                navElAnchor = navEl.children('a'),
                navElTarget = navElAnchor.attr('href'),
                navElContent = navElAnchor.html();

            elementContent.find(navElTarget).
                before(
                    '<div class="accordion-header d-none"><div class="accordion-icon"><i class="accordion-closed icon-ok-circle"></i><i class="accordion-open icon-remove-circle"></i></div><div class="accordion-title">' +
                    navElContent + '</div></div>');
        });
    });
};

window.SEMICOLON_tabsResponsiveResizeInit = function ($tabsEl) {

    let $body = $('body');
    $tabsEl = $tabsEl.filter('.tabs-responsive');

    if ($tabsEl.length < 1) {
        return true;
    }

    $tabsEl.each(function () {
        let element = $(this),
            elActive = element.tabs('option', 'active') + 1,
            elementAccStyle = element.attr('data-accordion-style');

        if ($body.hasClass('device-sm') || $body.hasClass('device-xs')) {

            element.find('.tab-nav').addClass('d-none');
            element.find('.tab-container').
                addClass('accordion ' + elementAccStyle).
                attr('data-active', elActive);
            element.find('.tab-content').addClass('accordion-content');
            element.find('.accordion-header').removeClass('d-none');
            SEMICOLON.widget.accordions({ 'parent': element });

        } else if ($body.hasClass('device-md') || $body.hasClass('device-lg') ||
            $body.hasClass('device-xl')) {

            element.find('.tab-nav').removeClass('d-none');
            element.find('.tab-container').
                removeClass('accordion ' + elementAccStyle).
                attr('data-active', '');
            elActive = element.find('.acctitlec').next('.tab-content').index();
            element.find('.tab-content').removeClass('accordion-content');
            element.find('.accordion-header').addClass('d-none');
            element.tabs('refresh');
            if (elActive > 0) {
                element.tabs('option', 'active', ((elActive - 1) / 2));
            }

        }
    });
};

/*! Morphext - v2.4.7 - 2016-11-04 */
!function (a) {
    'use strict';

    function b (b, c) {
        this.element = a(b), this.settings = a.extend({}, d,
            c), this._defaults = d, this._init();
    }

    var c = 'Morphext', d = {
        animation: 'bounceIn',
        separator: ',',
        speed: 2e3,
        complete: a.noop,
    };
    b.prototype = {
        _init: function () {
            var b = this;
            this.phrases = [], this.element.addClass('morphext'), a.each(
                this.element.text().split(this.settings.separator),
                function (c, d) {
                    b.phrases.push(a.trim(d));
                }), this.index = -1, this.animate(), this.start();
        },
        animate: function () {
            this.index = ++this.index %
                this.phrases.length, this.element[0].innerHTML = '<span class="animated ' +
                this.settings.animation + '">' + this.phrases[this.index] +
                '</span>', a.isFunction(this.settings.complete) &&
            this.settings.complete.call(this);
        },
        start: function () {
            var a = this;
            this._interval = setInterval(function () {a.animate();},
                this.settings.speed);
        },
        stop: function () {this._interval = clearInterval(this._interval);},
    }, a.fn[c] = function (d) {
        return this.each(function () {
            a.data(this, 'plugin_' + c) ||
            a.data(this, 'plugin_' + c, new b(this, d));
        });
    };
}(jQuery);

/*!
 *
 *   typed.js - A JavaScript Typing Animation Library
 *   Author: Matt Boldt <[email protected]>
 *   Version: v2.0.11
 *   Url: https://github.com/mattboldt/typed.js
 *   License(s): MIT
 *
 */
(function (t, e) {
    'object' == typeof exports && 'object' == typeof module
        ? module.exports = e()
        : 'function' == typeof define && define.amd
        ? define([], e)
        : 'object' == typeof exports ? exports.Typed = e() : t.Typed = e();
})(this, function () {
    return function (t) {
        function e (n) {
            if (s[n]) return s[n].exports;
            var i = s[n] = { exports: {}, id: n, loaded: !1 };
            return t[n].call(i.exports, i, i.exports,
                e), i.loaded = !0, i.exports;
        }

        var s = {};
        return e.m = t, e.c = s, e.p = '', e(0);
    }([
        function (t, e, s) {
            'use strict';

            function n (t, e) {
                if (!(t instanceof e)) throw new TypeError(
                    'Cannot call a class as a function');
            }

            Object.defineProperty(e, '__esModule', { value: !0 });
            var i = function () {
                function t (t, e) {
                    for (var s = 0; s < e.length; s++) {
                        var n = e[s];
                        n.enumerable = n.enumerable ||
                            !1, n.configurable = !0, 'value' in n &&
                        (n.writable = !0), Object.defineProperty(t, n.key, n);
                    }
                }

                return function (e, s, n) {
                    return s && t(e.prototype, s), n && t(e, n), e;
                };
            }(), r = s(1), o = s(3), a = function () {
                function t (e, s) {
                    n(this, t), r.initializer.load(this, s, e), this.begin();
                }

                return i(t, [
                    {
                        key: 'toggle',
                        value: function () {
                            this.pause.status
                                ? this.start()
                                : this.stop();
                        },
                    },
                    {
                        key: 'stop',
                        value: function () {
                            this.typingComplete || this.pause.status ||
                            (this.toggleBlinking(
                                !0), this.pause.status = !0, this.options.onStop(
                                this.arrayPos, this));
                        },
                    },
                    {
                        key: 'start',
                        value: function () {
                            this.typingComplete || this.pause.status &&
                            (this.pause.status = !1, this.pause.typewrite
                                ? this.typewrite(this.pause.curString,
                                    this.pause.curStrPos)
                                : this.backspace(this.pause.curString,
                                    this.pause.curStrPos), this.options.onStart(
                                this.arrayPos, this));
                        },
                    },
                    {
                        key: 'destroy',
                        value: function () {
                            this.reset(!1), this.options.onDestroy(this);
                        },
                    },
                    {
                        key: 'reset',
                        value: function () {
                            var t = arguments.length <= 0 || void 0 ===
                                arguments[0] || arguments[0];
                            clearInterval(this.timeout), this.replaceText(
                                ''), this.cursor && this.cursor.parentNode &&
                            (this.cursor.parentNode.removeChild(
                                this.cursor), this.cursor = null), this.strPos = 0, this.arrayPos = 0, this.curLoop = 0, t &&
                            (this.insertCursor(), this.options.onReset(
                                this), this.begin());
                        },
                    },
                    {
                        key: 'begin', value: function () {
                            var t = this;
                            this.options.onBegin(
                                this), this.typingComplete = !1, this.shuffleStringsIfNeeded(
                                this), this.insertCursor(), this.bindInputFocusEvents &&
                            this.bindFocusEvents(), this.timeout = setTimeout(
                                function () {
                                    t.currentElContent && 0 !==
                                    t.currentElContent.length
                                        ? t.backspace(t.currentElContent,
                                        t.currentElContent.length)
                                        : t.typewrite(
                                        t.strings[t.sequence[t.arrayPos]],
                                        t.strPos);
                                }, this.startDelay);
                        },
                    },
                    {
                        key: 'typewrite', value: function (t, e) {
                            var s = this;
                            this.fadeOut &&
                            this.el.classList.contains(this.fadeOutClass) &&
                            (this.el.classList.remove(
                                this.fadeOutClass), this.cursor &&
                            this.cursor.classList.remove(this.fadeOutClass));
                            var n = this.humanizer(this.typeSpeed), i = 1;
                            return this.pause.status === !0
                                ? void this.setPauseStatus(t, e, !0)
                                : void (this.timeout = setTimeout(function () {
                                    e = o.htmlParser.typeHtmlChars(t, e, s);
                                    var n = 0, r = t.substr(e);
                                    if ('^' === r.charAt(0) &&
                                        /^\^\d+/.test(r)) {
                                        var a = 1;
                                        r = /\d+/.exec(
                                            r)[0], a += r.length, n = parseInt(
                                            r), s.temporaryPause = !0, s.options.onTypingPaused(
                                            s.arrayPos, s), t = t.substring(0,
                                            e) + t.substring(
                                            e + a), s.toggleBlinking(!0);
                                    }
                                    if ('`' === r.charAt(0)) {
                                        for (; "`" !== t.substr(e + i).
                                            charAt(0) && (i++, !(e + i >
                                            t.length));) ;
                                        var u = t.substring(0, e),
                                            l = t.substring(u.length + 1,
                                                e + i),
                                            c = t.substring(e + i + 1);
                                        t = u + l + c, i--;
                                    }
                                    s.timeout = setTimeout(function () {
                                        s.toggleBlinking(!1), e >= t.length
                                            ? s.doneTyping(t, e)
                                            : s.keepTyping(t, e,
                                                i), s.temporaryPause &&
                                        (s.temporaryPause = !1, s.options.onTypingResumed(
                                            s.arrayPos, s));
                                    }, n);
                                }, n));
                        },
                    },
                    {
                        key: 'keepTyping',
                        value: function (t, e, s) {
                            0 === e && (this.toggleBlinking(
                                !1), this.options.preStringTyped(this.arrayPos,
                                this)), e += s;
                            var n = t.substr(0, e);
                            this.replaceText(n), this.typewrite(t, e);
                        },
                    },
                    {
                        key: 'doneTyping', value: function (t, e) {
                            var s = this;
                            this.options.onStringTyped(this.arrayPos,
                                this), this.toggleBlinking(
                                !0), this.arrayPos === this.strings.length -
                            1 && (this.complete(), this.loop === !1 ||
                            this.curLoop === this.loopCount) ||
                            (this.timeout = setTimeout(
                                function () {s.backspace(t, e);},
                                this.backDelay));
                        },
                    },
                    {
                        key: 'backspace', value: function (t, e) {
                            var s = this;
                            if (this.pause.status ===
                                !0) return void this.setPauseStatus(t, e, !0);
                            if (this.fadeOut) return this.initFadeOut();
                            this.toggleBlinking(!1);
                            var n = this.humanizer(this.backSpeed);
                            this.timeout = setTimeout(function () {
                                e = o.htmlParser.backSpaceHtmlChars(t, e, s);
                                var n = t.substr(0, e);
                                if (s.replaceText(n), s.smartBackspace) {
                                    var i = s.strings[s.arrayPos + 1];
                                    i && n === i.substr(0, e)
                                        ? s.stopNum = e
                                        : s.stopNum = 0;
                                }
                                e > s.stopNum ? (e--, s.backspace(t, e)) : e <=
                                    s.stopNum && (s.arrayPos++, s.arrayPos ===
                                    s.strings.length
                                        ? (s.arrayPos = 0, s.options.onLastStringBackspaced(), s.shuffleStringsIfNeeded(), s.begin())
                                        : s.typewrite(
                                            s.strings[s.sequence[s.arrayPos]],
                                            e));
                            }, n);
                        },
                    },
                    {
                        key: 'complete',
                        value: function () {
                            this.options.onComplete(this), this.loop
                                ? this.curLoop++
                                : this.typingComplete = !0;
                        },
                    },
                    {
                        key: 'setPauseStatus',
                        value: function (
                            t, e,
                            s) {this.pause.typewrite = s, this.pause.curString = t, this.pause.curStrPos = e;},
                    },
                    {
                        key: 'toggleBlinking',
                        value: function (t) {
                            this.cursor &&
                            (this.pause.status || this.cursorBlinking !== t &&
                                (this.cursorBlinking = t, t
                                    ? this.cursor.classList.add(
                                        'typed-cursor--blink')
                                    : this.cursor.classList.remove(
                                        'typed-cursor--blink')));
                        },
                    },
                    {
                        key: 'humanizer',
                        value: function (t) {
                            return Math.round(Math.random() * t / 2) + t;
                        },
                    },
                    {
                        key: 'shuffleStringsIfNeeded',
                        value: function () {
                            this.shuffle && (this.sequence = this.sequence.sort(
                                function () {return Math.random() - .5;}));
                        },
                    },
                    {
                        key: 'initFadeOut', value: function () {
                            var t = this;
                            return this.el.className += ' ' +
                                this.fadeOutClass, this.cursor &&
                            (this.cursor.className += ' ' +
                                this.fadeOutClass), setTimeout(function () {
                                t.arrayPos++, t.replaceText(
                                    ''), t.strings.length > t.arrayPos
                                    ? t.typewrite(
                                        t.strings[t.sequence[t.arrayPos]], 0)
                                    : (t.typewrite(t.strings[0],
                                        0), t.arrayPos = 0);
                            }, this.fadeOutDelay);
                        },
                    },
                    {
                        key: 'replaceText',
                        value: function (t) {
                            this.attr
                                ? this.el.setAttribute(this.attr, t)
                                : this.isInput
                                ? this.el.value = t
                                : 'html' === this.contentType
                                    ? this.el.innerHTML = t
                                    : this.el.textContent = t;
                        },
                    },
                    {
                        key: 'bindFocusEvents', value: function () {
                            var t = this;
                            this.isInput && (this.el.addEventListener('focus',
                                function (e) {t.stop();}), this.el.addEventListener(
                                'blur', function (e) {
                                    t.el.value && 0 !== t.el.value.length ||
                                    t.start();
                                }));
                        },
                    },
                    {
                        key: 'insertCursor',
                        value: function () {
                            this.showCursor && (this.cursor ||
                                (this.cursor = document.createElement(
                                    'span'), this.cursor.className = 'typed-cursor', this.cursor.innerHTML = this.cursorChar, this.el.parentNode &&
                                this.el.parentNode.insertBefore(this.cursor,
                                    this.el.nextSibling)));
                        },
                    }]), t;
            }();
            e['default'] = a, t.exports = e['default'];
        }, function (t, e, s) {
            'use strict';

            function n (t) {return t && t.__esModule ? t : { 'default': t };}

            function i (t, e) {
                if (!(t instanceof e)) throw new TypeError(
                    'Cannot call a class as a function');
            }

            Object.defineProperty(e, '__esModule', { value: !0 });
            var r = Object.assign || function (t) {
                for (var e = 1; e < arguments.length; e++) {
                    var s = arguments[e];
                    for (var n in s) Object.prototype.hasOwnProperty.call(s,
                        n) && (t[n] = s[n]);
                }
                return t;
            }, o = function () {
                function t (t, e) {
                    for (var s = 0; s < e.length; s++) {
                        var n = e[s];
                        n.enumerable = n.enumerable ||
                            !1, n.configurable = !0, 'value' in n &&
                        (n.writable = !0), Object.defineProperty(t, n.key, n);
                    }
                }

                return function (e, s, n) {
                    return s && t(e.prototype, s), n && t(e, n), e;
                };
            }(), a = s(2), u = n(a), l = function () {
                function t () {i(this, t);}

                return o(t, [
                    {
                        key: 'load', value: function (t, e, s) {
                            if ('string' == typeof s
                                ? t.el = document.querySelector(s)
                                : t.el = s, t.options = r({}, u['default'],
                                e), t.isInput = 'input' ===
                                t.el.tagName.toLowerCase(), t.attr = t.options.attr, t.bindInputFocusEvents = t.options.bindInputFocusEvents, t.showCursor = !t.isInput &&
                                t.options.showCursor, t.cursorChar = t.options.cursorChar, t.cursorBlinking = !0, t.elContent = t.attr
                                ? t.el.getAttribute(t.attr)
                                : t.el.textContent, t.contentType = t.options.contentType, t.typeSpeed = t.options.typeSpeed, t.startDelay = t.options.startDelay, t.backSpeed = t.options.backSpeed, t.smartBackspace = t.options.smartBackspace, t.backDelay = t.options.backDelay, t.fadeOut = t.options.fadeOut, t.fadeOutClass = t.options.fadeOutClass, t.fadeOutDelay = t.options.fadeOutDelay, t.isPaused = !1, t.strings = t.options.strings.map(
                                function (t) {return t.trim();}), 'string' ==
                            typeof t.options.stringsElement
                                ? t.stringsElement = document.querySelector(
                                    t.options.stringsElement)
                                : t.stringsElement = t.options.stringsElement, t.stringsElement) {
                                t.strings = [], t.stringsElement.style.display = 'none';
                                var n = Array.prototype.slice.apply(
                                    t.stringsElement.children), i = n.length;
                                if (i) for (var o = 0; o < i; o += 1) {
                                    var a = n[o];
                                    t.strings.push(a.innerHTML.trim());
                                }
                            }
                            t.strPos = 0, t.arrayPos = 0, t.stopNum = 0, t.loop = t.options.loop, t.loopCount = t.options.loopCount, t.curLoop = 0, t.shuffle = t.options.shuffle, t.sequence = [], t.pause = {
                                status: !1,
                                typewrite: !0,
                                curString: '',
                                curStrPos: 0,
                            }, t.typingComplete = !1;
                            for (var o in t.strings) t.sequence[o] = o;
                            t.currentElContent = this.getCurrentElContent(
                                t), t.autoInsertCss = t.options.autoInsertCss, this.appendAnimationCss(
                                t);
                        },
                    },
                    {
                        key: 'getCurrentElContent',
                        value: function (t) {
                            var e = '';
                            return e = t.attr
                                ? t.el.getAttribute(t.attr)
                                : t.isInput ? t.el.value : 'html' ===
                                t.contentType
                                    ? t.el.innerHTML
                                    : t.el.textContent;
                        },
                    },
                    {
                        key: 'appendAnimationCss', value: function (t) {
                            var e = 'data-typed-js-css';
                            if (t.autoInsertCss &&
                                (t.showCursor || t.fadeOut) &&
                                !document.querySelector('[' + e + ']')) {
                                var s = document.createElement('style');
                                s.type = 'text/css', s.setAttribute(e, !0);
                                var n = '';
                                t.showCursor &&
                                (n += '\n        .typed-cursor{\n          opacity: 1;\n        }\n        .typed-cursor.typed-cursor--blink{\n          animation: typedjsBlink 0.7s infinite;\n          -webkit-animation: typedjsBlink 0.7s infinite;\n                  animation: typedjsBlink 0.7s infinite;\n        }\n        @keyframes typedjsBlink{\n          50% { opacity: 0.0; }\n        }\n        @-webkit-keyframes typedjsBlink{\n          0% { opacity: 1; }\n          50% { opacity: 0.0; }\n          100% { opacity: 1; }\n        }\n      '), t.fadeOut &&
                                (n += '\n        .typed-fade-out{\n          opacity: 0;\n          transition: opacity .25s;\n        }\n        .typed-cursor.typed-cursor--blink.typed-fade-out{\n          -webkit-animation: 0;\n          animation: 0;\n        }\n      '), 0 !==
                                s.length &&
                                (s.innerHTML = n, document.body.appendChild(s));
                            }
                        },
                    }]), t;
            }();
            e['default'] = l;
            var c = new l;
            e.initializer = c;
        }, function (t, e) {
            'use strict';
            Object.defineProperty(e, '__esModule', { value: !0 });
            var s = {
                strings: [
                    'These are the default values...',
                    'You know what you should do?',
                    'Use your own!',
                    'Have a great day!'],
                stringsElement: null,
                typeSpeed: 0,
                startDelay: 0,
                backSpeed: 0,
                smartBackspace: !0,
                shuffle: !1,
                backDelay: 700,
                fadeOut: !1,
                fadeOutClass: 'typed-fade-out',
                fadeOutDelay: 500,
                loop: !1,
                loopCount: 1 / 0,
                showCursor: !0,
                cursorChar: '|',
                autoInsertCss: !0,
                attr: null,
                bindInputFocusEvents: !1,
                contentType: 'html',
                onBegin: function (t) {},
                onComplete: function (t) {},
                preStringTyped: function (t, e) {},
                onStringTyped: function (t, e) {},
                onLastStringBackspaced: function (t) {},
                onTypingPaused: function (t, e) {},
                onTypingResumed: function (t, e) {},
                onReset: function (t) {},
                onStop: function (t, e) {},
                onStart: function (t, e) {},
                onDestroy: function (t) {},
            };
            e['default'] = s, t.exports = e['default'];
        }, function (t, e) {
            'use strict';

            function s (t, e) {
                if (!(t instanceof e)) throw new TypeError(
                    'Cannot call a class as a function');
            }

            Object.defineProperty(e, '__esModule', { value: !0 });
            var n = function () {
                function t (t, e) {
                    for (var s = 0; s < e.length; s++) {
                        var n = e[s];
                        n.enumerable = n.enumerable ||
                            !1, n.configurable = !0, 'value' in n &&
                        (n.writable = !0), Object.defineProperty(t, n.key, n);
                    }
                }

                return function (e, s, n) {
                    return s && t(e.prototype, s), n && t(e, n), e;
                };
            }(), i = function () {
                function t () {s(this, t);}

                return n(t, [
                    {
                        key: 'typeHtmlChars',
                        value: function (t, e, s) {
                            if ('html' !== s.contentType) return e;
                            var n = t.substr(e).charAt(0);
                            if ('<' === n || '&' === n) {
                                var i = '';
                                for (i = '<' === n ? '>' : ';'; t.substr(e + 1).
                                    charAt(0) !== i &&
                                (e++, !(e + 1 > t.length));) ;
                                e++;
                            }
                            return e;
                        },
                    },
                    {
                        key: 'backSpaceHtmlChars',
                        value: function (t, e, s) {
                            if ('html' !== s.contentType) return e;
                            var n = t.substr(e).charAt(0);
                            if ('>' === n || ';' === n) {
                                var i = '';
                                for (i = '>' === n ? '<' : '&'; t.substr(e - 1).
                                    charAt(0) !== i && (e--, !(e < 0));) ;
                                e--;
                            }
                            return e;
                        },
                    }]), t;
            }();
            e['default'] = i;
            var r = new i;
            e.htmlParser = r;
        }]);
});

window.SEMICOLON_textRotatorInit = function ($textRotatorEl) {

    $textRotatorEl = $textRotatorEl.filter(':not(.customjs)');

    if ($textRotatorEl.length < 1) {
        return true;
    }

    $textRotatorEl.each(function () {
        let element = $(this),
            elTyped = element.attr('data-typed') || 'false',
            elRotator = element.find('.t-rotate'),
            elAnimation = element.attr('data-rotate') || 'fade',
            elSpeed = element.attr('data-speed') || 1200,
            elSep = element.attr('data-separator') || ',';

        if (elTyped == 'true') {
            let elTexts = elRotator.html().split(elSep),
                elLoop = element.attr('data-loop') || 'true',
                elShuffle = element.attr('data-shuffle'),
                elCur = element.attr('data-cursor') || 'true',
                elSpeed = element.attr('data-speed') || 50,
                elBackSpeed = element.attr('data-backspeed') || 30,
                elBackDelay = element.attr('data-backdelay');

            if (elLoop == 'true') { elLoop = true; } else { elLoop = false; }
            if (elShuffle ==
                'true') { elShuffle = true; } else { elShuffle = false; }
            if (elCur == 'true') { elCur = true; } else { elCur = false; }

            elRotator.html('').addClass('plugin-typed-init');

            let typed = new Typed(elRotator.get(0), {
                strings: elTexts,
                typeSpeed: Number(elSpeed),
                loop: elLoop,
                shuffle: elShuffle,
                showCursor: elCur,
                backSpeed: Number(elBackSpeed),
                backDelay: Number(elBackDelay),
            });
        } else {
            let pluginData = elRotator.Morphext({
                animation: elAnimation,
                separator: elSep,
                speed: Number(elSpeed),
            });
        }
    });

};

window.scwTogglesPlugin = window.scwTogglesPlugin || {};

window.SEMICOLON_togglesInit = function ($toggleEl) {

    $toggleEl = $toggleEl.filter(':not(.customjs)');

    if ($toggleEl.length < 1) {
        return true;
    }

    $toggleEl.each(function () {
        let element = $(this),
            elSpeed = element.attr('data-speed') || 300,
            elState = element.attr('data-state');

        if (elState != 'open') {
            element.children('.toggle-content').hide();
        } else {
            element.addClass('toggle-active').
                children('.toggle-content').
                slideDown(Number(elSpeed));
        }

        element.children('.toggle-header').
            off('click').
            on('click', function () {
                element.toggleClass('toggle-active').
                    children('.toggle-content').
                    slideToggle(Number(elSpeed));
                return true;
            });
    });

};

/**
 * Twitter Feed Fetcher
 */

function sm_format_twitter (twitters) {
    var statusHTML = [];
    for (var i = 0; i < twitters.length; i++) {
        var username = twitters[i].user.screen_name;
        var name = twitters[i].user.name;
        var username_avatar = twitters[i].user.profile_image_url_https;
        var status = twitters[i].text.replace(
            /((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,
            function (url) {
                return '<a href="' + url + '" target="_blank">' + url + '</a>';
            }).replace(/\B@([_a-z0-9]+)/ig, function (reply) {
            return reply.charAt(0) + '<a href="https://twitter.com/' +
                reply.substring(1) + '" target="_blank">' + reply.substring(1) +
                '</a>';
        });
        statusHTML.push(
            '<li><i class="icon-twitter"></i><a href="https://twitter.com/' +
            username + '" class="twitter-avatar" target="_blank"><img src="' +
            username_avatar + '" alt="' + name + '" title="' + name +
            '"></a><div><span>' + status +
            '</span><small><a href="https://twitter.com/' + username +
            '/statuses/' + twitters[i].id_str + '" target="_blank">' +
            relative_time(twitters[i].created_at) + '</a></small></div></li>');
    }
    return statusHTML.join('');
}

function sm_format_twitter2 (twitters) {
    var statusHTML = [];
    for (var i = 0; i < twitters.length; i++) {
        var username = twitters[i].user.screen_name;
        var status = twitters[i].text.replace(
            /((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,
            function (url) {
                return '<a href="' + url + '" target="_blank">' + url + '</a>';
            }).replace(/\B@([_a-z0-9]+)/ig, function (reply) {
            return reply.charAt(0) + '<a href="https://twitter.com/' +
                reply.substring(1) + '" target="_blank">' + reply.substring(1) +
                '</a>';
        });
        statusHTML.push('<div class="slide"><span>' + status +
            '</span><small><a href="https://twitter.com/' + username +
            '/statuses/' + twitters[i].id_str + '" target="_blank">' +
            relative_time(twitters[i].created_at) + '</a></small></div>');
    }
    return statusHTML.join('');
}

function sm_format_twitter3 (twitters) {
    var statusHTML = [];
    for (var i = 0; i < twitters.length; i++) {
        var username = twitters[i].user.screen_name;
        var status = twitters[i].text.replace(
            /((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,
            function (url) {
                return '<a href="' + url + '" target="_blank">' + url + '</a>';
            }).replace(/\B@([_a-z0-9]+)/ig, function (reply) {
            return reply.charAt(0) + '<a href="https://twitter.com/' +
                reply.substring(1) + '" target="_blank">' + reply.substring(1) +
                '</a>';
        });
        statusHTML.push(
            '<div class="slide"><div class="testi-content"><p>' + status +
            '</p><div class="testi-meta"><span><a href="https://twitter.com/' +
            username + '/statuses/' + twitters[i].id_str +
            '" target="_blank">' + relative_time(twitters[i].created_at) +
            '</a></span></div></div></div>');
    }
    return statusHTML.join('');
}

function relative_time (time_value) {
    var values = time_value.split(' ');
    time_value = values[1] + ' ' + values[2] + ', ' + values[5] + ' ' +
        values[3];
    var parsed_date = Date.parse(time_value);
    var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
    var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
    delta = delta + (relative_to.getTimezoneOffset() * 60);

    if (delta < 60) {
        return 'less than a minute ago';
    } else if (delta < 120) {
        return 'about a minute ago';
    } else if (delta < (60 * 60)) {
        return (parseInt(delta / 60)).toString() + ' minutes ago';
    } else if (delta < (120 * 60)) {
        return 'about an hour ago';
    } else if (delta < (24 * 60 * 60)) {
        return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
    } else if (delta < (48 * 60 * 60)) {
        return '1 day ago';
    } else {
        return (parseInt(delta / 86400)).toString() + ' days ago';
    }
}

window.SEMICOLON_twitterFeedInit = function ($twitterFeedEl) {

    if ($twitterFeedEl.length < 1) {
        return true;
    }

    $twitterFeedEl.each(function () {
        let element = $(this),
            elUser = element.attr('data-username') || 'twitter',
            elCount = element.attr('data-count') || 3,
            elLoader = element.attr('data-loader') ||
                'include/twitter/tweets.php';

        $.getJSON(
            elLoader + '?username=' + elUser + '&count=' + Number(elCount),
            function (tweets) {
                if (element.hasClass('fslider')) {
                    element.find('.slider-wrap').
                        html(sm_format_twitter3(tweets)).
                        promise().
                        done(function () {
                            let timer = setInterval(function () {
                                if (element.find('.slide').length > 1) {
                                    element.removeClass('customjs');
                                    setTimeout(
                                        function () { SEMICOLON.widget.loadFlexSlider(); },
                                        500);
                                    clearInterval(timer);
                                }
                            }, 500);
                        });
                } else {
                    element.html(sm_format_twitter(tweets));
                }
            });
    });

};

/*jquery.mb.YTPlayer 23-01-2021
 _ jquery.mb.components
 _ email: [email protected]
 _ Copyright (c) 2001-2021. Matteo Bicocchi (Pupunzi);
 _ blog: http://pupunzi.open-lab.com
 _ Open Lab s.r.l., Florence - Italy
 */

var ytp = ytp || {};
let YTPRndSuffix = (new Date).getTime(), YTPTimerLabels = {
    init: 'YTPlayerInit_' + YTPRndSuffix,
    startPlaying: 'YTPlayerStartPlay_' + YTPRndSuffix,
};

function onYouTubeIframeAPIReady () {
    ytp.YTAPIReady ||
    (ytp.YTAPIReady = !0, jQuery(document).trigger('YTAPIReady'));
}

let getYTPVideoID = function (e) {
    let r, t;
    return e.indexOf('youtu.be') > 0 || e.indexOf('youtube.com/embed') > 0
        ? r = (t = (r = e.substr(e.lastIndexOf('/') + 1, e.length)).indexOf(
            '?list=') > 0 ? r.substr(r.lastIndexOf('='), r.length) : null)
            ? r.substr(0, r.lastIndexOf('?'))
            : r
        : e.indexOf('http') > -1 ? (r = e.match(
            /[\\?&]v=([^&#]*)/)[1], t = e.indexOf('list=') > 0 ? e.match(
            /[\\?&]list=([^&#]*)/)[1] : null) : t = (r = e.length > 15
            ? null
            : e) ? null : e, { videoID: r, playlistID: t };
};
!function (jQuery, ytp) {
    jQuery.mbYTPlayer = {
        name: 'jquery.mb.YTPlayer',
        version: '3.3.9',
        build: '7581',
        author: 'Matteo Bicocchi (pupunzi)',
        apiKey: '',
        defaults: {
            videoURL: null,
            containment: 'body',
            ratio: 'auto',
            fadeOnStartTime: 1e3,
            startAt: 0,
            stopAt: 0,
            autoPlay: !0,
            delayAtStart: 1e3,
            coverImage: !1,
            loop: !0,
            addRaster: !1,
            mask: !1,
            opacity: 1,
            quality: 'hd1080',
            vol: 50,
            mute: !1,
            showControls: !0,
            anchor: 'center,center',
            showAnnotations: !1,
            cc_load_policy: !1,
            showYTLogo: !0,
            useOnMobile: !0,
            playOnlyIfVisible: !1,
            onScreenPercentage: 30,
            goFullScreenOnPlay: !1,
            stopMovieOnBlur: !0,
            realFullscreen: !0,
            optimizeDisplay: !0,
            abundance: .3,
            gaTrack: !0,
            remember_last_time: !1,
            addFilters: !1,
            useNoCookie: !0,
            onReady: function (e) {},
            onError: function (e, r) {},
            onEnd: function () {},
        },
        controls: {
            play: 'P',
            pause: 'p',
            mute: 'M',
            unmute: 'A',
            onlyYT: 'O',
            showSite: 'R',
            ytLogo: 'Y',
        },
        controlBar: null,
        locationProtocol: 'https:',
        defaultFilters: {
            grayscale: { value: 0, unit: '%' },
            hue_rotate: { value: 0, unit: 'deg' },
            invert: { value: 0, unit: '%' },
            opacity: { value: 0, unit: '%' },
            saturate: { value: 0, unit: '%' },
            sepia: { value: 0, unit: '%' },
            brightness: { value: 0, unit: '%' },
            contrast: { value: 0, unit: '%' },
            blur: { value: 0, unit: 'px' },
        },
        buildPlayer: function (options) {
            if (ytp.YTAPIReady || void 0 !== window.YT) setTimeout(function () {
                jQuery(document).
                    trigger('YTAPIReady'), ytp.YTAPIReady = !0;
            }, 100); else {
                jQuery('#YTAPI').remove();
                let e = jQuery('<script>').
                    attr({
                        src: 'https://www.youtube.com/iframe_api?v=' +
                            jQuery.mbYTPlayer.version, id: 'YTAPI',
                    });
                jQuery('head').prepend(e);
            }

            function isIframe () {
                let e = !1;
                try {
                    self.location.href !== top.location.href && (e = !0);
                } catch (r) {e = !0;}
                return e;
            }

            return this.each(function () {
                let YTPlayer = this, $YTPlayer = jQuery(YTPlayer);
                $YTPlayer.hide(), YTPlayer.loop = 0, YTPlayer.state = 0, YTPlayer.filters = jQuery.extend(
                    !0, {},
                    jQuery.mbYTPlayer.defaultFilters), YTPlayer.filtersEnabled = !0, YTPlayer.id = YTPlayer.id ||
                    'YTP_' + (new Date).getTime(), $YTPlayer.addClass(
                    'mb_YTPlayer');
                let property = $YTPlayer.data('property') && 'string' ==
                typeof $YTPlayer.data('property') ? eval(
                    '(' + $YTPlayer.data('property') + ')') : $YTPlayer.data(
                    'property');
                'object' != typeof property &&
                (property = {}), YTPlayer.opt = jQuery.extend(!0, {},
                    jQuery.mbYTPlayer.defaults, YTPlayer.opt, options,
                    property), YTPRndSuffix = getYTPVideoID(
                    YTPlayer.opt.videoURL).videoID, YTPTimerLabels = {
                    init: 'YTPlayerInit_' + YTPRndSuffix,
                    startPlaying: 'YTPlayerStartPlay_' + YTPRndSuffix,
                }, console.time(YTPTimerLabels.init), console.time(
                    YTPTimerLabels.startPlaying), YTPlayer.opt.elementId = YTPlayer.id, 0 ===
                YTPlayer.opt.vol &&
                (YTPlayer.opt.vol = 1, YTPlayer.opt.mute = !0), YTPlayer.opt.loop &&
                'boolean' == typeof YTPlayer.opt.loop &&
                (YTPlayer.opt.loop = 9999);
                let fullScreenAvailable = document.fullscreenEnabled ||
                    document.webkitFullscreenEnabled ||
                    document.mozFullScreenEnabled ||
                    document.msFullscreenEnabled;
                YTPlayer.opt.realFullscreen = !(isIframe() ||
                    !fullScreenAvailable) &&
                    YTPlayer.opt.realFullscreen, YTPlayer.opt.showAnnotations = YTPlayer.opt.showAnnotations
                    ? '1'
                    : '3', YTPlayer.opt.cc_load_policy = YTPlayer.opt.cc_load_policy
                    ? '1'
                    : '0', YTPlayer.opt.coverImage = YTPlayer.opt.coverImage ||
                    YTPlayer.opt.backgroundImage, YTPlayer.opt.quality = 'hd1080', jQuery.mbBrowser.msie &&
                jQuery.mbBrowser.version < 9 &&
                (YTPlayer.opt.opacity = 1), YTPlayer.opt.containment = 'self' ===
                YTPlayer.opt.containment ? $YTPlayer : jQuery(
                    YTPlayer.opt.containment), YTPlayer.isRetina = window.retina ||
                    window.devicePixelRatio > 1, YTPlayer.opt.ratio = 'auto' ===
                YTPlayer.opt.ratio
                    ? 16 / 9
                    : YTPlayer.opt.ratio, YTPlayer.opt.ratio = eval(
                    YTPlayer.opt.ratio);
                let origContainmentBackground = YTPlayer.opt.containment.css(
                    'background-image');
                origContainmentBackground = 'none' === origContainmentBackground
                    ? null
                    : origContainmentBackground, YTPlayer.orig_containment_background = origContainmentBackground, $YTPlayer.attr(
                    'id') || $YTPlayer.attr('id', 'ytp_' +
                    (new Date).getTime()), YTPlayer.playerID = 'iframe_' +
                    YTPlayer.id, YTPlayer.isAlone = !1, YTPlayer.hasFocus = !0, YTPlayer.videoID = YTPlayer.opt.videoURL
                    ? getYTPVideoID(YTPlayer.opt.videoURL).videoID
                    : !!$YTPlayer.attr('href') && getYTPVideoID($YTPlayer.attr(
                    'href')).videoID, YTPlayer.playlistID = YTPlayer.opt.videoURL
                    ? getYTPVideoID(YTPlayer.opt.videoURL).playlistID
                    : !!$YTPlayer.attr('href') &&
                    getYTPVideoID($YTPlayer.attr('href')).playlistID;
                let start_from_last = 0;
                if (jQuery.mbCookie.get(
                    'YTPlayer_start_from' + YTPlayer.videoID) &&
                (start_from_last = parseFloat(jQuery.mbCookie.get(
                    'YTPlayer_start_from' +
                    YTPlayer.videoID))), YTPlayer.opt.remember_last_time &&
                start_from_last &&
                (YTPlayer.start_from_last = start_from_last, jQuery.mbCookie.remove(
                    'YTPlayer_start_from' +
                    YTPlayer.videoID)), YTPlayer.isPlayer = $YTPlayer.is(
                    YTPlayer.opt.containment), YTPlayer.isBackground = YTPlayer.opt.containment.is(
                    'body'), YTPlayer.isBackground &&
                ytp.backgroundIsInited) return;
                if (YTPlayer.isPlayer &&
                $YTPlayer.show(), YTPlayer.overlay = jQuery('<div/>').
                    css({
                        position: 'absolute',
                        top: 0,
                        left: 0,
                        width: '100%',
                        height: '100%',
                    }).
                    addClass(
                        'YTPOverlay'), $YTPlayer.changeCoverImage(), YTPlayer.wrapper = jQuery(
                    '<div/>').
                    attr('id', 'wrapper_' + YTPlayer.id).
                    css({
                        position: 'absolute',
                        zIndex: 0,
                        minWidth: '100%',
                        minHeight: '100%',
                        left: 0,
                        top: 0,
                        overflow: 'hidden',
                        opacity: 0,
                    }).
                    addClass('mbYTP_wrapper'), YTPlayer.isPlayer) {
                    let e = jQuery.mbBrowser.mobile
                        ? 'inlinePlayButtonMobile'
                        : 'inlinePlayButton';
                    YTPlayer.inlinePlayButton = jQuery('<div/>').
                        addClass('inlinePlayButton').
                        html(jQuery.mbYTPlayer.controls.play), $YTPlayer.append(
                        YTPlayer.inlinePlayButton), YTPlayer.inlinePlayButton.on(
                        'click', function (e) {
                            $YTPlayer.YTPPlay(), YTPlayer.inlinePlayButton.hide(), YTPlayer.opt.goFullScreenOnPlay &&
                            $YTPlayer.YTPFullscreen(), e.stopPropagation();
                        }), YTPlayer.opt.autoPlay &&
                    YTPlayer.inlinePlayButton.hide(), YTPlayer.overlay.on(
                        'click', function () {
                            $YTPlayer.YTPTogglePlay(), YTPlayer.opt.goFullScreenOnPlay &&
                            $YTPlayer.YTPFullscreen();
                        }).css({ cursor: 'pointer' });
                }
                let playerBox = jQuery('<div/>').
                    attr('id', YTPlayer.playerID).
                    addClass('playerBox');
                if (playerBox.css({
                    position: 'absolute',
                    zIndex: 0,
                    width: '100%',
                    height: '100%',
                    top: 0,
                    left: 0,
                    overflow: 'hidden',
                    opacity: 1,
                }), YTPlayer.wrapper.append(playerBox), playerBox.after(
                    YTPlayer.overlay), YTPlayer.isPlayer &&
                (YTPlayer.inlineWrapper = jQuery('<div/>').
                    addClass('inline-YTPlayer'), YTPlayer.inlineWrapper.css({
                    position: 'relative',
                    maxWidth: YTPlayer.opt.containment.css('width'),
                }), YTPlayer.opt.containment.css({
                    position: 'relative',
                    paddingBottom: '56.25%',
                    overflow: 'hidden',
                    height: 0,
                }), YTPlayer.opt.containment.wrap(
                    YTPlayer.inlineWrapper)), YTPlayer.opt.containment.children().
                    not('script, style').
                    each(function () {
                        'static' === jQuery(this).css('position') &&
                        jQuery(this).css('position', 'relative');
                    }), YTPlayer.isBackground
                    ? (jQuery('body').
                        css({ boxSizing: 'border-box' }), YTPlayer.wrapper.css(
                        { position: 'fixed', top: 0, left: 0, zIndex: 0 }))
                    : 'static' === YTPlayer.opt.containment.css('position') &&
                    (YTPlayer.opt.containment.css(
                        { position: 'relative' }), $YTPlayer.show()), YTPlayer.opt.containment.prepend(
                    YTPlayer.wrapper), YTPlayer.isBackground ||
                YTPlayer.overlay.on('mouseenter', function () {
                    YTPlayer.controlBar && YTPlayer.controlBar.length &&
                    YTPlayer.controlBar.addClass('visible');
                }).
                    on('mouseleave', function () {
                        YTPlayer.controlBar && YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.removeClass('visible');
                    }), jQuery.mbBrowser.mobile &&
                !YTPlayer.opt.useOnMobile) return YTPlayer.opt.coverImage &&
                (YTPlayer.wrapper.css({
                    backgroundImage: 'url(' + YTPlayer.opt.coverImage + ')',
                    backgroundPosition: 'center center',
                    backgroundSize: 'cover',
                    backgroundRepeat: 'no-repeat',
                    opacity: 1,
                }), YTPlayer.wrapper.css({ opacity: 1 })), $YTPlayer;
                jQuery.mbBrowser.mobile && YTPlayer.opt.autoPlay &&
                YTPlayer.opt.useOnMobile && jQuery('body').
                    one('touchstart',
                        function () {YTPlayer.player.playVideo();}), jQuery(
                    document).
                    one('YTAPIReady', function () {
                        $YTPlayer.trigger(
                            'YTAPIReady_' + YTPlayer.id), ytp.YTAPIReady = !0;
                    }), YTPlayer.isOnScreen = jQuery.mbYTPlayer.isOnScreen(
                    YTPlayer, YTPlayer.opt.onScreenPercentage), $YTPlayer.one(
                    'YTAPIReady_' + YTPlayer.id, function () {
                        let e = this, r = jQuery(e);
                        e.isBackground && ytp.backgroundIsInited || e.isInit ||
                        (e.isBackground &&
                        (ytp.backgroundIsInited = !0), e.opt.autoPlay = void 0 ===
                        e.opt.autoPlay
                            ? !!e.isBackground
                            : e.opt.autoPlay, e.opt.vol = e.opt.vol
                            ? e.opt.vol
                            : 100, jQuery.mbYTPlayer.getDataFromAPI(e), jQuery(
                            e).on('YTPChanged', function (t) {
                            if (e.isInit) return;
                            e.isInit = !0;
                            let a = {
                                modestbranding: 1,
                                autoplay: 0,
                                controls: 0,
                                showinfo: 0,
                                rel: 0,
                                enablejsapi: 1,
                                version: 3,
                                playerapiid: e.playerID,
                                origin: '*',
                                allowfullscreen: !0,
                                wmode: 'transparent',
                                iv_load_policy: e.opt.showAnnotations,
                                cc_load_policy: e.opt.cc_load_policy,
                                playsinline: jQuery.mbBrowser.mobile &&
                                !e.isPlayer ? 1 : 0,
                                html5: document.createElement(
                                    'video').canPlayType ? 1 : 0,
                            };
                            new YT.Player(e.playerID, {
                                host: e.opt.useNoCookie
                                    ? 'https://www.youtube-nocookie.com'
                                    : 'https://www.youtube.com',
                                playerVars: a,
                                events: {
                                    onReady: function (t) {
                                        e.player = t.target, e.player.loadVideoById(
                                            {
                                                videoId: e.videoID.toString(),
                                                suggestedQuality: e.opt.quality,
                                            }), r.trigger(
                                            'YTPlayerIsReady_' + e.id);
                                    },
                                    onStateChange: function (r) {
                                        if ('function' !=
                                            typeof r.target.getPlayerState) return;
                                        let t, a = r.target.getPlayerState();
                                        if (e.preventTrigger ||
                                            e.isStarting) return void (e.preventTrigger = !1);
                                        switch (e.state = a, r.data ===
                                        YT.PlayerState.PLAYING &&
                                        r.target.setPlaybackQuality(
                                            e.opt.quality), a) {
                                            case-1:
                                                t = 'YTPUnstarted';
                                                break;
                                            case 0:
                                                t = 'YTPRealEnd';
                                                break;
                                            case 1:
                                                t = 'YTPPlay', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.pause), e.isPlayer &&
                                                e.inlinePlayButton.hide(), jQuery(
                                                    document).
                                                    off('mousedown.YTPstart');
                                                break;
                                            case 2:
                                                t = 'YTPPause', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.play), e.isPlayer &&
                                                e.inlinePlayButton.show();
                                                break;
                                            case 3:
                                                e.player.setPlaybackQuality(
                                                    e.opt.quality), t = 'YTPBuffering', e.controlBar.length &&
                                                e.controlBar.find(
                                                    '.mb_YTPPlayPause').
                                                    html(
                                                        jQuery.mbYTPlayer.controls.play);
                                                break;
                                            case 5:
                                                t = 'YTPCued';
                                        }
                                        let o = jQuery.Event(t);
                                        o.time = e.currentTime, jQuery(e).
                                            trigger(o);
                                    },
                                    onPlaybackQualityChange: function (r) {
                                        let t = r.target.getPlaybackQuality(),
                                            a = jQuery.Event(
                                                'YTPQualityChange');
                                        a.quality = t, jQuery(e).trigger(a);
                                    },
                                    onError: function (t) {
                                        switch ('function' ==
                                        typeof e.opt.onError &&
                                        e.opt.onError(r, t), console.debug(
                                            'error:', t), t.data) {
                                            case 2:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.');
                                                break;
                                            case 5:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.');
                                                break;
                                            case 100:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.');
                                                break;
                                            case 101:
                                            case 150:
                                                console.error(
                                                    'video ID:: ' + e.videoID +
                                                    ': The video doesn\'t exist or The owner does not allow it to be played in embedded players.');
                                        }
                                        e.isList && jQuery(e).YTPPlayNext();
                                    },
                                },
                            }), r.on('YTPlayerIsReady_' + e.id, function () {
                                if (e.isReady) return this;
                                e.playerEl = e.player.getIframe(), jQuery(
                                    e.playerEl).
                                    unselectable(), r.optimizeDisplay(), jQuery(
                                    window).
                                    off('resize.YTP_' + e.id).
                                    on('resize.YTP_' + e.id,
                                        function () {r.optimizeDisplay();}), jQuery(
                                    window).
                                    off('orientationchange.YTP_' + e.id).
                                    on('orientationchange.YTP_' + e.id,
                                        function () {r.optimizeDisplay();}), e.opt.remember_last_time &&
                                jQuery(window).
                                    on('unload.YTP_' + e.id, function () {
                                        let r = e.player.getCurrentTime();
                                        jQuery.mbCookie.set(
                                            'YTPlayer_start_from' + e.videoID,
                                            r, 0);
                                    }), r.YTPCheckForState();
                            });
                        }));
                    }), $YTPlayer.off(
                    'YTPTime.mask'), jQuery.mbYTPlayer.applyMask(
                    YTPlayer), console.timeEnd(YTPTimerLabels.init), setTimeout(
                    function () {
                        ytp.YTAPIReady || 'object' != typeof window.YT ||
                        (jQuery(document).
                            trigger(
                                'YTAPIReady'), ytp.YTAPIReady = !0, console.error(
                            'YTPlayer: More then a call to the YT API has been detected'));
                    }, YTPlayer.opt.delayAtStart);
            });
        },
        isOnScreen: function (e, r) {
            r = r || 10;
            let t = e.wrapper, a = jQuery(window).scrollTop(),
                o = a + jQuery(window).height(), n = t.height() * r / 100,
                i = t.offset().top + n;
            return t.offset().top + (t.height() - n) <= o && i >= a;
        },
        getDataFromAPI: function (e) {
            e.videoData = jQuery.mbStorage.get(
                'YTPlayer_data_' + e.videoID), e.videoData
                ? (setTimeout(function () {
                    e.dataReceived = !0;
                    let r = jQuery.Event('YTPChanged');
                    r.time = e.currentTime, r.videoId = e.videoID, r.opt = e.opt, jQuery(
                        e).trigger(r);
                    let t = jQuery.Event('YTPData');
                    t.prop = {};
                    for (let r in e.videoData) e.videoData.hasOwnProperty(r) &&
                    (t.prop[r] = e.videoData[r]);
                    jQuery(e).trigger(t);
                }, e.opt.fadeOnStartTime), e.hasData = !0)
                : jQuery.mbYTPlayer.apiKey ? jQuery.getJSON(
                    'https://www.googleapis.com/youtube/v3/videos?id=' +
                    e.videoID + '&key=' + jQuery.mbYTPlayer.apiKey +
                    '&part=snippet', function (r) {
                        e.dataReceived = !0;
                        let t = jQuery.Event('YTPChanged');
                        t.time = e.currentTime, t.videoId = e.videoID, jQuery(
                            e).trigger(t), r.items[0]
                            ? (!function (r) {
                                e.videoData = {}, e.videoData.id = e.videoID, e.videoData.channelTitle = r.channelTitle, e.videoData.title = r.title, e.videoData.description = r.description.length <
                                400 ? r.description : r.description.substring(0,
                                    400) +
                                    ' ...', e.videoData.thumb_max = r.thumbnails.maxres
                                    ? r.thumbnails.maxres.url
                                    : null, e.videoData.thumb_high = r.thumbnails.high
                                    ? r.thumbnails.high.url
                                    : null, e.videoData.thumb_medium = r.thumbnails.medium
                                    ? r.thumbnails.medium.url
                                    : null, jQuery.mbStorage.set(
                                    'YTPlayer_data_' + e.videoID, e.videoData);
                            }(r.items[0].snippet), e.hasData = !0)
                            : (e.videoData = {}, e.hasData = !1);
                        let a = jQuery.Event('YTPData');
                        a.prop = {};
                        for (let r in e.videoData) a.prop[r] = e.videoData[r];
                        jQuery(e).trigger(a);
                    }).
                    fail(function (r) {
                        console.error('YT data error:: ', r), e.hasData = !1;
                        let t = jQuery.Event('YTPChanged');
                        t.time = e.currentTime, t.videoId = e.videoID, jQuery(
                            e).trigger(t);
                    }) : (setTimeout(function () {
                    let r = jQuery.Event('YTPChanged');
                    r.time = e.currentTime, r.videoId = e.videoID, jQuery(e).
                        trigger(r);
                }, 10), e.videoData = null), e.opt.ratio = 'auto' == e.opt.ratio
                ? 16 / 9
                : e.opt.ratio, e.isPlayer && !e.opt.autoPlay &&
            (e.loading = jQuery('<div/>').
                addClass('loading').
                html('Loading').
                hide(), jQuery(e).append(e.loading), e.loading.fadeIn());
        },
        removeStoredData: function () {jQuery.mbStorage.remove();},
        getVideoData: function () {return this.get(0).videoData;},
        getVideoID: function () {return this.get(0).videoID || !1;},
        getPlaylistID: function () {return this.get(0).playlistID || !1;},
        setVideoQuality: function (e) {
            let r = this.get(0), t = r.player.getCurrentTime();
            return jQuery(r).
                YTPPause(), r.opt.quality = e, r.player.setPlaybackQuality(
                e), r.player.seekTo(t), jQuery(r).YTPPlay(), this;
        },
        getVideoQuality: function () {
            return this.get(0).
                player.
                getPlaybackQuality();
        },
        playlist: function (e, r, t) {
            let a = this.get(0);
            return a.isList = !0, r && (e = jQuery.shuffle(e)), a.videoID ||
            (a.videos = e, a.videoCounter = 1, a.videoLength = e.length, jQuery(
                a).data('property', e[0]), jQuery(a).YTPlayer()), 'function' ==
            typeof t && jQuery(a).on('YTPChanged', function () {t(a);}), jQuery(
                a).on('YTPEnd', function () {jQuery(a).YTPPlayNext();}), this;
        },
        playNext: function () {
            let e = this.get(0);
            return e.videoCounter++, e.videoCounter > e.videoLength &&
            (e.videoCounter = 1), jQuery(e).YTPPlayIndex(e.videoCounter), this;
        },
        playPrev: function () {
            let e = this.get(0);
            return e.videoCounter--, e.videoCounter <= 0 &&
            (e.videoCounter = e.videoLength), jQuery(e).
                YTPPlayIndex(e.videoCounter), this;
        },
        playIndex: function (e) {
            let r = this.get(0);
            r.checkForStartAt &&
            (clearInterval(r.checkForStartAt), clearInterval(
                r.getState)), r.videoCounter = e, r.videoCounter >=
            r.videoLength && (r.videoCounter = r.videoLength);
            let t = r.videos[r.videoCounter - 1];
            return jQuery(r).YTPChangeVideo(t), this;
        },
        changeVideo: function (e) {
            let r = this, t = r.get(0);
            t.opt.startAt = 0, t.opt.stopAt = 0, t.opt.mask = !1, t.opt.mute = !0, t.opt.autoPlay = !0, t.opt.addFilters = !1, t.opt.coverImage = !1, t.hasData = !1, t.hasChanged = !0, t.player.loopTime = void 0, e &&
            jQuery.extend(t.opt, e), t.videoID = getYTPVideoID(
                t.opt.videoURL).videoID, t.opt.loop && 'boolean' ==
            typeof t.opt.loop && (t.opt.loop = 9999), t.wrapper.css(
                { background: 'none' }), jQuery(t.playerEl).
                CSSAnimate({ opacity: 0 }, t.opt.fadeOnStartTime, function () {
                    jQuery.mbYTPlayer.getDataFromAPI(t), r.YTPGetPlayer().
                        loadVideoById({
                            videoId: t.videoID,
                            suggestedQuality: t.opt.quality,
                        }), r.YTPPause(), r.optimizeDisplay(), t.checkForStartAt &&
                    (clearInterval(t.checkForStartAt), clearInterval(
                        t.getState)), r.YTPCheckForState();
                });
            let a = jQuery.Event('YTPChangeVideo');
            return a.time = t.currentTime, jQuery(t).
                trigger(a), jQuery.mbYTPlayer.applyMask(t), this;
        },
        getPlayer: function () {
            let e = this.get(0);
            return e.isReady ? e.player : null;
        },
        playerDestroy: function () {
            let e = this.get(0);
            return e.isReady
                ? (ytp.YTAPIReady = !0, ytp.backgroundIsInited = !1, e.isInit = !1, e.videoID = null, e.isReady = !1, e.wrapper.remove(), jQuery(
                    '#controlBar_' + e.id).remove(), clearInterval(
                    e.checkForStartAt), clearInterval(e.getState), this)
                : this;
        },
        fullscreen: function (real) {
            let YTPlayer = this.get(0);
            void 0 === real && (real = eval(YTPlayer.opt.realFullscreen));
            let controls = jQuery('#controlBar_' + YTPlayer.id),
                fullScreenBtn = controls.find('.mb_OnlyYT'),
                videoWrapper = YTPlayer.isPlayer
                    ? YTPlayer.opt.containment
                    : YTPlayer.wrapper;
            if (real) {
                let e = jQuery.mbBrowser.mozilla
                    ? 'mozfullscreenchange'
                    : jQuery.mbBrowser.webkit
                        ? 'webkitfullscreenchange'
                        : 'fullscreenchange';
                jQuery(document).
                    off(e).
                    on(e, function () {
                        RunPrefixMethod(document, 'IsFullScreen') ||
                        RunPrefixMethod(document, 'FullScreen')
                            ? jQuery(YTPlayer).trigger('YTPFullScreenStart')
                            : (YTPlayer.isAlone = !1, fullScreenBtn.html(
                            jQuery.mbYTPlayer.controls.onlyYT), jQuery(
                            YTPlayer).
                                YTPSetVideoQuality(
                                    YTPlayer.opt.quality), videoWrapper.removeClass(
                            'YTPFullscreen'), videoWrapper.CSSAnimate(
                            { opacity: YTPlayer.opt.opacity },
                            YTPlayer.opt.fadeOnStartTime), videoWrapper.css(
                            { zIndex: 0 }), YTPlayer.isBackground ? jQuery(
                            'body').after(controls) : YTPlayer.wrapper.before(
                            controls), jQuery(window).resize(), jQuery(
                            YTPlayer).trigger('YTPFullScreenEnd'));
                    });
            }
            if (YTPlayer.isAlone) jQuery(document).
                off('mousemove.YTPlayer'), clearTimeout(
                YTPlayer.hideCursor), YTPlayer.overlay.css(
                { cursor: 'auto' }), real
                ? cancelFullscreen()
                : (videoWrapper.CSSAnimate({ opacity: YTPlayer.opt.opacity },
                    YTPlayer.opt.fadeOnStartTime), videoWrapper.css(
                    { zIndex: 0 })), fullScreenBtn.html(
                jQuery.mbYTPlayer.controls.onlyYT), YTPlayer.isAlone = !1; else {
                function hideMouse () {
                    YTPlayer.overlay.css({ cursor: 'none' });
                }

                jQuery(document).
                    on('mousemove.YTPlayer', function (e) {
                        YTPlayer.overlay.css({ cursor: 'auto' }), clearTimeout(
                            YTPlayer.hideCursor), jQuery(e.target).
                            parents().
                            is('.mb_YTPBar') ||
                        (YTPlayer.hideCursor = setTimeout(hideMouse, 3e3));
                    }), hideMouse(), real ? (videoWrapper.css(
                    { opacity: 0 }), videoWrapper.addClass(
                    'YTPFullscreen'), launchFullscreen(
                    videoWrapper.get(0)), setTimeout(function () {
                    videoWrapper.CSSAnimate({ opacity: 1 },
                        2 * YTPlayer.opt.fadeOnStartTime), videoWrapper.append(
                        controls), jQuery(YTPlayer).
                        optimizeDisplay(), YTPlayer.player.seekTo(
                        YTPlayer.player.getCurrentTime() + .1, !0);
                }, YTPlayer.opt.fadeOnStartTime)) : videoWrapper.css(
                    { zIndex: 1e4 }).
                    CSSAnimate({ opacity: 1 },
                        2 * YTPlayer.opt.fadeOnStartTime), fullScreenBtn.html(
                    jQuery.mbYTPlayer.controls.showSite), YTPlayer.isAlone = !0;
            }

            function RunPrefixMethod (e, r) {
                let t, a, o = ['webkit', 'moz', 'ms', 'o', ''], n = 0;
                for (; n < o.length && !e[t];) {
                    if (t = r, '' === o[n] &&
                    (t = t.substr(0, 1).toLowerCase() +
                        t.substr(1)), 'undefined' != (a = typeof e[t = o[n] +
                        t])) return o = [o[n]], 'function' == a
                        ? e[t]()
                        : e[t];
                    n++;
                }
            }

            function launchFullscreen (e) {
                RunPrefixMethod(e, 'RequestFullScreen');
            }

            function cancelFullscreen () {
                (RunPrefixMethod(document, 'FullScreen') ||
                    RunPrefixMethod(document, 'IsFullScreen')) &&
                RunPrefixMethod(document, 'CancelFullScreen');
            }

            return this;
        },
        toggleLoops: function () {
            let e = this.get(0), r = e.opt;
            return 1 == r.loop ? r.loop = 0 : (r.startAt ? e.player.seekTo(
                r.startAt) : e.player.playVideo(), r.loop = 1), this;
        },
        play: function () {
            let e = this.get(0), r = jQuery(e);
            return e.isReady
                ? (setTimeout(function () {r.YTPSetAbundance(e.opt.abundance);},
                    300), e.player.playVideo(), jQuery(e.playerEl).
                    css({ opacity: 1 }), e.wrapper.css(
                    { backgroundImage: 'none' }), e.wrapper.CSSAnimate(
                    { opacity: e.isAlone ? 1 : e.opt.opacity },
                    e.opt.fadeOnStartTime), jQuery('#controlBar_' + e.id).
                    find('.mb_YTPPlayPause').
                    html(jQuery.mbYTPlayer.controls.pause), e.state = 1, this)
                : this;
        },
        togglePlay: function (e) {
            let r = this.get(0);
            return r.isReady
                ? (1 === r.state
                    ? this.YTPPause()
                    : this.YTPPlay(), 'function' == typeof e &&
                e(r.state), this)
                : this;
        },
        stop: function () {
            let e = this.get(0);
            return e.isReady
                ? (jQuery('#controlBar_' + e.id).
                    find('.mb_YTPPlayPause').
                    html(
                        jQuery.mbYTPlayer.controls.play), e.player.stopVideo(), this)
                : this;
        },
        pause: function () {
            let e = this.get(0);
            return e.isReady
                ? (e.opt.abundance < .2 && this.YTPSetAbundance(
                    .2), e.player.pauseVideo(), e.state = 2, this)
                : this;
        },
        seekTo: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.player.seekTo(e, !0), this) : this;
        },
        getPlaybackRate: function () {
            let e = this.get(0);
            return e.isReady ? e.player.getPlaybackRate() : this;
        },
        setPlaybackRate: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.player.setPlaybackRate(e), this) : this;
        },
        setVolume: function (e) {
            let r = this.get(0);
            return r.isReady
                ? (r.opt.vol = e, this.YTPUnmute(), r.player.setVolume(
                    r.opt.vol), r.volumeBar && r.volumeBar.length &&
                r.volumeBar.updateSliderVal(e), this)
                : this;
        },
        getVolume: function () {
            let e = this.get(0);
            return e.isReady ? e.player.getVolume() : this;
        },
        toggleVolume: function () {
            let e = this.get(0);
            return e.isReady ? (e.isMute
                ? (jQuery.mbBrowser.mobile ||
                this.YTPSetVolume(e.opt.vol), this.YTPUnmute())
                : this.YTPMute(), this) : this;
        },
        mute: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            if (e.isMute) return this;
            e.player.mute(), e.isMute = !0, e.player.setVolume(
                0), e.volumeBar && e.volumeBar.length && e.volumeBar.width() >
            10 && e.volumeBar.updateSliderVal(0), jQuery('#controlBar_' + e.id).
                find('.mb_YTPMuteUnmute').
                html(jQuery.mbYTPlayer.controls.unmute), jQuery(e).
                addClass('isMuted'), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.addClass('muted');
            let r = jQuery.Event('YTPMuted');
            return r.time = e.currentTime, e.preventTrigger ||
            jQuery(e).trigger(r), this;
        },
        unmute: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            if (!e.isMute) return this;
            e.player.unMute(), e.isMute = !1, jQuery(e).
                YTPSetVolume(e.opt.vol), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.updateSliderVal(
                e.opt.vol > 10 ? e.opt.vol : 10), jQuery('#controlBar_' + e.id).
                find('.mb_YTPMuteUnmute').
                html(jQuery.mbYTPlayer.controls.mute), jQuery(e).
                removeClass('isMuted'), e.volumeBar && e.volumeBar.length &&
            e.volumeBar.removeClass('muted');
            let r = jQuery.Event('YTPUnmuted');
            return r.time = e.currentTime, e.preventTrigger ||
            jQuery(e).trigger(r), this;
        },
        applyFilter: function (e, r) {
            let t = this.get(0);
            if (!t.isReady) return this;
            t.filters[e].value = r, t.filtersEnabled && this.YTPEnableFilters();
        },
        applyFilters: function (e) {
            let r = this, t = r.get(0);
            if (!t.isReady) return jQuery(t).
                on('YTPReady', function () {r.YTPApplyFilters(e);}), this;
            for (let t in e) r.YTPApplyFilter(t, e[t]);
            r.trigger('YTPFiltersApplied');
        },
        toggleFilter: function (e, r) {
            let t = this.get(0);
            return t.isReady ? (t.filters[e].value
                ? t.filters[e].value = 0
                : t.filters[e].value = r, t.filtersEnabled &&
            jQuery(t).YTPEnableFilters(), this) : this;
        },
        toggleFilters: function (e) {
            let r = this.get(0);
            return r.isReady ? (r.filtersEnabled
                ? (jQuery(r).
                    trigger('YTPDisableFilters'), jQuery(r).YTPDisableFilters())
                : (jQuery(r).YTPEnableFilters(), jQuery(r).
                    trigger('YTPEnableFilters')), 'function' == typeof e &&
            e(r.filtersEnabled), this) : this;
        },
        disableFilters: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            let r = jQuery(e.playerEl);
            return r.css('-webkit-filter', ''), r.css('filter',
                ''), e.filtersEnabled = !1, this;
        },
        enableFilters: function () {
            let e = this.get(0);
            if (!e.isReady) return this;
            let r = jQuery(e.playerEl), t = '';
            for (let r in e.filters) e.filters[r].value &&
            (t += r.replace('_', '-') + '(' + e.filters[r].value +
                e.filters[r].unit + ') ');
            return r.css('-webkit-filter', t), r.css('filter',
                t), e.filtersEnabled = !0, this;
        },
        removeFilter: function (e, r) {
            let t = this, a = t.get(0);
            if (!a.isReady) return this;
            if ('function' == typeof e &&
            (r = e, e = null), e) t.YTPApplyFilter(e, 0), 'function' ==
            typeof r && r(e); else {
                for (let e in a.filters) a.filters.hasOwnProperty(e) &&
                (t.YTPApplyFilter(e, 0), 'function' == typeof r && r(e));
                a.filters = jQuery.extend(!0, {},
                    jQuery.mbYTPlayer.defaultFilters);
            }
            let o = jQuery.Event('YTPFiltersApplied');
            return t.trigger(o), this;
        },
        getFilters: function () {
            let e = this.get(0);
            return e.isReady ? e.filters : this;
        },
        addMask: function (e) {
            let r = this.get(0);
            e || (e = r.actualMask);
            let t = jQuery('<img/>').
                attr('src', e).
                on('load', function () {
                    r.overlay.CSSAnimate({ opacity: 0 }, r.opt.fadeOnStartTime,
                        function () {
                            r.hasMask = !0, t.remove(), r.overlay.css({
                                backgroundImage: 'url(' + e + ')',
                                backgroundRepeat: 'no-repeat',
                                backgroundPosition: 'center center',
                                backgroundSize: 'cover',
                            }), r.overlay.CSSAnimate({ opacity: 1 },
                                r.opt.fadeOnStartTime);
                        });
                });
            return this;
        },
        removeMask: function () {
            let e = this.get(0);
            return e.overlay.CSSAnimate({ opacity: 0 }, e.opt.fadeOnStartTime,
                function () {
                    e.hasMask = !1, e.overlay.css({
                        backgroundImage: '',
                        backgroundRepeat: '',
                        backgroundPosition: '',
                        backgroundSize: '',
                    }), e.overlay.CSSAnimate({ opacity: 1 },
                        e.opt.fadeOnStartTime);
                }), this;
        },
        applyMask: function (e) {
            let r = jQuery(e);
            if (r.off('YTPTime.mask'), e.opt.mask) if ('string' ==
                typeof e.opt.mask) r.YTPAddMask(
                e.opt.mask), e.actualMask = e.opt.mask; else if ('object' ==
                typeof e.opt.mask) {
                for (let r in e.opt.mask) e.opt.mask[r] &&
                (img = jQuery('<img/>').attr('src', e.opt.mask[r]));
                e.opt.mask[0] && r.YTPAddMask(e.opt.mask[0]), r.on(
                    'YTPTime.mask', function (t) {
                        for (let a in e.opt.mask) t.time === a && (e.opt.mask[a]
                            ? (r.YTPAddMask(
                                e.opt.mask[a]), e.actualMask = e.opt.mask[a])
                            : r.YTPRemoveMask());
                    });
            }
        },
        toggleMask: function () {
            let e = this.get(0), r = jQuery(e);
            return e.hasMask ? r.YTPRemoveMask() : r.YTPAddMask(), this;
        },
        manageProgress: function () {
            let e = this.get(0), r = jQuery('#controlBar_' + e.id),
                t = r.find('.mb_YTPProgress'), a = r.find('.mb_YTPLoaded'),
                o = r.find('.mb_YTPseekbar'), n = t.outerWidth(),
                i = Math.floor(e.player.getCurrentTime()),
                l = Math.floor(e.player.getDuration()), s = i * n / l,
                u = 100 * e.player.getVideoLoadedFraction();
            return a.css({ left: 0, width: u + '%' }), o.css(
                { left: 0, width: s }), { totalTime: l, currentTime: i };
        },
        buildControls: function (YTPlayer) {
            if (jQuery('#controlBar_' + YTPlayer.id).
                remove(), !YTPlayer.opt.showControls) return void (YTPlayer.controlBar = !1);
            if (YTPlayer.opt.showYTLogo = YTPlayer.opt.showYTLogo ||
                YTPlayer.opt.printUrl, jQuery(
                '#controlBar_' + YTPlayer.id).length) return;
            YTPlayer.controlBar = jQuery('<div/>').
                attr('id', 'controlBar_' + YTPlayer.id).
                addClass('mb_YTPBar').
                css({
                    whiteSpace: 'noWrap',
                    position: YTPlayer.isBackground ? 'fixed' : 'absolute',
                    zIndex: YTPlayer.isBackground ? 1e4 : 1e3,
                }).
                hide().
                on('click', function (e) {e.stopPropagation();});
            let buttonBar = jQuery('<div/>').addClass('buttonBar'),
                playpause = jQuery(
                    '<span>' + jQuery.mbYTPlayer.controls.play + '</span>').
                    addClass('mb_YTPPlayPause ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPTogglePlay();
                    }), MuteUnmute = jQuery(
                '<span>' + jQuery.mbYTPlayer.controls.mute + '</span>').
                    addClass('mb_YTPMuteUnmute ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPToggleVolume();
                    }), volumeBar = jQuery('<div/>').
                    addClass('mb_YTPVolumeBar').
                    css({ display: 'inline-block' });
            YTPlayer.volumeBar = volumeBar;
            let idx = jQuery('<span/>').addClass('mb_YTPTime'),
                vURL = YTPlayer.opt.videoURL ? YTPlayer.opt.videoURL : '';
            vURL.indexOf('http') < 0 &&
            (vURL = 'https://www.youtube.com/watch?v=' + YTPlayer.opt.videoURL);
            let movieUrl = jQuery('<span/>').
                    html(jQuery.mbYTPlayer.controls.ytLogo).
                    addClass('mb_YTPUrl ytpicon').
                    attr('title', 'view on YouTube').
                    on('click', function () {window.open(vURL, 'viewOnYT');}),
                onlyVideo = jQuery('<span/>').
                    html(jQuery.mbYTPlayer.controls.onlyYT).
                    addClass('mb_OnlyYT ytpicon').
                    on('click', function (e) {
                        e.stopPropagation(), jQuery(YTPlayer).
                            YTPFullscreen(YTPlayer.opt.realFullscreen);
                    }), progressBar = jQuery('<div/>').
                    addClass('mb_YTPProgress').
                    css('position', 'absolute').
                    on('click', function (e) {
                        e.stopPropagation(), timeBar.css({
                            width: e.clientX - timeBar.offset().left,
                        }), YTPlayer.timeW = e.clientX -
                            timeBar.offset().left, YTPlayer.controlBar.find(
                            '.mb_YTPLoaded').css({ width: 0 });
                        let r = Math.floor(YTPlayer.player.getDuration());
                        YTPlayer.goto = timeBar.outerWidth() * r /
                            progressBar.outerWidth(), YTPlayer.player.seekTo(
                            parseFloat(YTPlayer.goto),
                            !0), YTPlayer.controlBar.find('.mb_YTPLoaded').
                            css({ width: 0 });
                    }), loadedBar = jQuery('<div/>').
                    addClass('mb_YTPLoaded').
                    css('position', 'absolute'), timeBar = jQuery('<div/>').
                    addClass('mb_YTPseekbar').
                    css('position', 'absolute');
            progressBar.append(loadedBar).append(timeBar), buttonBar.append(
                playpause).
                append(MuteUnmute).
                append(volumeBar).
                append(idx), YTPlayer.opt.showYTLogo &&
            buttonBar.append(movieUrl), (YTPlayer.isBackground ||
                eval(YTPlayer.opt.realFullscreen) && !YTPlayer.isBackground) &&
            buttonBar.append(onlyVideo), YTPlayer.controlBar.append(buttonBar).
                append(progressBar), YTPlayer.isBackground ? jQuery('body').
                after(YTPlayer.controlBar) : (YTPlayer.controlBar.addClass(
                'inlinePlayer'), YTPlayer.wrapper.before(
                YTPlayer.controlBar)), volumeBar.simpleSlider({
                initialval: YTPlayer.opt.vol,
                scale: 100,
                orientation: 'h',
                callback: function (e) {
                    0 == e.value ? jQuery(YTPlayer).
                        YTPMute() : jQuery(YTPlayer).
                        YTPUnmute(), YTPlayer.player.setVolume(
                        e.value), YTPlayer.isMute ||
                    (YTPlayer.opt.vol = e.value);
                },
            });
        },
        changeCoverImage: function (e) {
            let r = this.get(0);
            if (r.opt.coverImage || r.orig_containment_background) {
                let t = e || (r.opt.coverImage ? 'url(' + r.opt.coverImage +
                    ') center center' : r.orig_containment_background);
                t && r.opt.containment.css({
                    background: t,
                    backgroundSize: 'cover',
                    backgroundRepeat: 'no-repeat',
                    backgroundAttachment: 'fixed',
                });
            }
            return this;
        },
        checkForState: function () {
            let YTPlayer = this.get(0), $YTPlayer = jQuery(YTPlayer);
            clearInterval(YTPlayer.getState);
            let interval = 100;
            if (!jQuery.contains(document,
                YTPlayer)) return $YTPlayer.YTPPlayerDestroy(), clearInterval(
                YTPlayer.getState), void clearInterval(
                YTPlayer.checkForStartAt);
            jQuery.mbYTPlayer.checkForStart(
                YTPlayer), YTPlayer.getState = setInterval(function () {
                let $YTPlayer = jQuery(YTPlayer);
                if (!YTPlayer.isReady) return;
                let prog = jQuery(YTPlayer).YTPManageProgress(),
                    stopAt = YTPlayer.opt.stopAt > YTPlayer.opt.startAt
                        ? YTPlayer.opt.stopAt
                        : 0;
                if (stopAt = stopAt < YTPlayer.player.getDuration()
                    ? stopAt
                    : 0, YTPlayer.currentTime != prog.currentTime) {
                    let e = jQuery.Event('YTPTime');
                    e.time = YTPlayer.currentTime, jQuery(YTPlayer).trigger(e);
                }
                if (YTPlayer.currentTime = prog.currentTime, YTPlayer.totalTime = YTPlayer.player.getDuration(), 0 ==
                YTPlayer.player.getVolume()
                    ? $YTPlayer.addClass('isMuted')
                    : $YTPlayer.removeClass(
                        'isMuted'), YTPlayer.opt.showControls && (prog.totalTime
                    ? YTPlayer.controlBar.find('.mb_YTPTime').
                        html(jQuery.mbYTPlayer.formatTime(prog.currentTime) +
                            ' / ' +
                            jQuery.mbYTPlayer.formatTime(prog.totalTime))
                    : YTPlayer.controlBar.find('.mb_YTPTime').
                        html('-- : -- / -- : --')), eval(
                    YTPlayer.opt.stopMovieOnBlur) && (document.hasFocus()
                    ? document.hasFocus() && !YTPlayer.hasFocus && -1 !=
                    YTPlayer.state && 0 != YTPlayer.state &&
                    (YTPlayer.hasFocus = !0, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPlay())
                    : 1 == YTPlayer.state &&
                    (YTPlayer.hasFocus = !1, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause())), YTPlayer.opt.playOnlyIfVisible) {
                    let e = jQuery.mbYTPlayer.isOnScreen(YTPlayer,
                        YTPlayer.opt.onScreenPercentage);
                    e || 1 != YTPlayer.state
                        ? e && !YTPlayer.isOnScreen &&
                        (YTPlayer.isOnScreen = !0, YTPlayer.player.playVideo())
                        : (YTPlayer.isOnScreen = !1, $YTPlayer.YTPPause());
                }
                if (YTPlayer.controlBar.length &&
                YTPlayer.controlBar.outerWidth() <= 400 && !YTPlayer.isCompact
                    ? (YTPlayer.controlBar.addClass(
                        'compact'), YTPlayer.isCompact = !0, !YTPlayer.isMute &&
                    YTPlayer.volumeBar &&
                    YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol))
                    : YTPlayer.controlBar.length &&
                    YTPlayer.controlBar.outerWidth() > 400 &&
                    YTPlayer.isCompact && (YTPlayer.controlBar.removeClass(
                        'compact'), YTPlayer.isCompact = !1, !YTPlayer.isMute &&
                    YTPlayer.volumeBar && YTPlayer.volumeBar.updateSliderVal(
                        YTPlayer.opt.vol)), YTPlayer.player.getPlayerState() >
                0 && (parseFloat(YTPlayer.player.getDuration() -
                    YTPlayer.opt.fadeOnStartTime / 1e3) <
                    YTPlayer.player.getCurrentTime() || stopAt > 0 &&
                    parseFloat(YTPlayer.player.getCurrentTime()) >= stopAt)) {
                    if (YTPlayer.isEnded) return;
                    if (YTPlayer.isEnded = !0, setTimeout(
                        function () {YTPlayer.isEnded = !1;},
                        1e3), YTPlayer.isList) {
                        if (!YTPlayer.opt.loop || YTPlayer.opt.loop > 0 &&
                            YTPlayer.player.loopTime === YTPlayer.opt.loop -
                            1) {
                            YTPlayer.player.loopTime = void 0, clearInterval(
                                YTPlayer.getState);
                            let e = jQuery.Event('YTPEnd');
                            return e.time = YTPlayer.currentTime, void jQuery(
                                YTPlayer).trigger(e);
                        }
                    } else if (!YTPlayer.opt.loop || YTPlayer.opt.loop > 0 &&
                        YTPlayer.player.loopTime === YTPlayer.opt.loop -
                        1) return YTPlayer.player.loopTime = void 0, YTPlayer.state = 2, $YTPlayer.changeCoverImage(
                        YTPlayer), jQuery(YTPlayer).
                        YTPPause(), void YTPlayer.wrapper.CSSAnimate(
                        { opacity: 0 }, YTPlayer.opt.fadeOnStartTime,
                        function () {
                            YTPlayer.controlBar.length &&
                            YTPlayer.controlBar.find('.mb_YTPPlayPause').
                                html(
                                    jQuery.mbYTPlayer.controls.play), $YTPlayer.changeCoverImage();
                            let e = jQuery.Event('YTPEnd');
                            e.time = YTPlayer.currentTime, jQuery(YTPlayer).
                                trigger(e), YTPlayer.player.seekTo(
                                YTPlayer.opt.startAt, !0);
                        });
                    YTPlayer.player.loopTime = YTPlayer.player.loopTime
                        ? ++YTPlayer.player.loopTime
                        : 1, YTPlayer.opt.startAt = YTPlayer.opt.startAt ||
                        1, YTPlayer.preventTrigger = !0, YTPlayer.state = 2, YTPlayer.player.seekTo(
                        YTPlayer.opt.startAt, !0);
                }
            }, interval);
        },
        checkForStart: function (YTPlayer) {
            let $YTPlayer = jQuery(YTPlayer);
            if (!jQuery.contains(document,
                YTPlayer)) return void $YTPlayer.YTPPlayerDestroy();
            if (jQuery.mbYTPlayer.buildControls(
                YTPlayer), YTPlayer.overlay) if (YTPlayer.opt.addRaster) {
                let e = 'dot' == YTPlayer.opt.addRaster
                    ? 'raster-dot'
                    : 'raster';
                YTPlayer.overlay.addClass(
                    YTPlayer.isRetina ? e + ' retina' : e);
            } else YTPlayer.overlay.removeClass(function (e, r) {
                let t = r.split(' '), a = [];
                return jQuery.each(t, function (e, r) {
                    /raster.*/.test(r) && a.push(r);
                }), a.push('retina'), a.join(' ');
            });
            YTPlayer.preventTrigger = !0, YTPlayer.state = 2, YTPlayer.preventTrigger = !0, YTPlayer.player.mute(), YTPlayer.player.playVideo(), YTPlayer.isStarting = !0;
            let startAt = YTPlayer.start_from_last
                ? YTPlayer.start_from_last
                : YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
            return YTPlayer.preventTrigger = !0, YTPlayer.checkForStartAt = setInterval(
                function () {
                    YTPlayer.player.mute(), YTPlayer.player.seekTo(startAt, !0);
                    let canPlayVideo = YTPlayer.player.getVideoLoadedFraction() >=
                        startAt / YTPlayer.player.getDuration();
                    if (jQuery.mbBrowser.mobile &&
                    (canPlayVideo = !0), YTPlayer.player.getDuration() > 0 &&
                    YTPlayer.player.getCurrentTime() >= startAt &&
                    canPlayVideo) {
                        YTPlayer.start_from_last = null, YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), clearInterval(
                            YTPlayer.checkForStartAt), 'function' ==
                        typeof YTPlayer.opt.onReady && YTPlayer.opt.onReady(
                            YTPlayer), YTPlayer.isReady = !0, $YTPlayer.YTPRemoveFilter(), YTPlayer.opt.addFilters
                            ? $YTPlayer.YTPApplyFilters(YTPlayer.opt.addFilters)
                            : $YTPlayer.YTPApplyFilters(), $YTPlayer.YTPEnableFilters();
                        let YTPready = jQuery.Event('YTPReady');
                        if (YTPready.time = YTPlayer.currentTime, $YTPlayer.trigger(
                            YTPready), YTPlayer.state = 2, YTPlayer.opt.mute
                            ? $YTPlayer.YTPMute()
                            : YTPlayer.opt.autoPlay
                                ? (console.debug(
                                    'We muted the audio to make the video \'auto-play\' according with the latest vendor policy. The audio will unmute at the first user interaction with the page'), YTPlayer.player.mute(), YTPlayer.forcedMuted = !0, jQuery(
                                    document).
                                    on('mousedown.YTPstartAudio', function () {
                                        YTPlayer.forcedMuted && (console.debug(
                                            'AAAAAAA'), YTPlayer.player.unMute(), YTPlayer.forcedMuted = !1, jQuery(
                                            document).
                                            off('mousedown.YTPstartAudio'));
                                    }), jQuery(window).
                                    on('scroll',
                                        function () {console.debug('AAAAA');}))
                                : YTPlayer.player.unMute(), 'undefined' !=
                        typeof _gaq && eval(YTPlayer.opt.gaTrack) ? _gaq.push([
                            '_trackEvent',
                            'YTPlayer',
                            'Play',
                            YTPlayer.hasData
                                ? YTPlayer.videoData.title
                                : YTPlayer.videoID.toString()]) : 'undefined' !=
                            typeof ga && eval(YTPlayer.opt.gaTrack) &&
                            ga('send', 'event', 'YTPlayer', 'play',
                                YTPlayer.hasData
                                    ? YTPlayer.videoData.title
                                    : YTPlayer.videoID.toString()), YTPlayer.opt.autoPlay) {
                            let e = jQuery.Event('YTPStart');
                            e.time = YTPlayer.currentTime, jQuery(YTPlayer).
                                trigger(e), YTPlayer.isStarting = !1, 'mac' ===
                            jQuery.mbBrowser.os.name &&
                            jQuery.mbBrowser.safari && jQuery('body').
                                one('mousedown.YTPstart',
                                    function () {$YTPlayer.YTPPlay();}), $YTPlayer.YTPPlay(), console.timeEnd(
                                YTPTimerLabels.startPlaying);
                        } else YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), YTPlayer.start_from_last &&
                        YTPlayer.player.seekTo(startAt, !0), setTimeout(
                            function () {
                                YTPlayer.preventTrigger = !0, $YTPlayer.YTPPause(), YTPlayer.isPlayer ||
                                (YTPlayer.opt.coverImage
                                    ? (YTPlayer.wrapper.css(
                                        { opacity: 0 }), setTimeout(
                                        function () {$YTPlayer.changeCoverImage();},
                                        YTPlayer.opt.fadeOnStartTime))
                                    : (jQuery(YTPlayer.playerEl).
                                        CSSAnimate({ opacity: 1 },
                                            YTPlayer.opt.fadeOnStartTime), YTPlayer.wrapper.CSSAnimate(
                                        {
                                            opacity: YTPlayer.isAlone
                                                ? 1
                                                : YTPlayer.opt.opacity,
                                        },
                                        YTPlayer.opt.fadeOnStartTime))), YTPlayer.isStarting = !1;
                            }, 500), YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.find('.mb_YTPPlayPause').
                            html(jQuery.mbYTPlayer.controls.play);
                        YTPlayer.isPlayer && !YTPlayer.opt.autoPlay &&
                        YTPlayer.loading && YTPlayer.loading.length &&
                        (YTPlayer.loading.html('Ready'), setTimeout(
                            function () {YTPlayer.loading.fadeOut();},
                            100)), YTPlayer.controlBar &&
                        YTPlayer.controlBar.length &&
                        YTPlayer.controlBar.slideDown(1e3);
                    }
                    'mac' === jQuery.mbBrowser.os.name &&
                    jQuery.mbBrowser.safari &&
                    (YTPlayer.player.playVideo(), startAt >= 0 &&
                    YTPlayer.player.seekTo(startAt, !0));
                }, 100), $YTPlayer;
        },
        getTime: function () {
            let e = this.get(0);
            return jQuery.mbYTPlayer.formatTime(e.currentTime);
        },
        getTotalTime: function () {
            let e = this.get(0);
            return jQuery.mbYTPlayer.formatTime(e.totalTime);
        },
        formatTime: function (e) {
            let r = Math.floor(e / 60), t = Math.floor(e - 60 * r);
            return (r <= 9 ? '0' + r : r) + ' : ' + (t <= 9 ? '0' + t : t);
        },
        setAnchor: function (e) {this.optimizeDisplay(e);},
        getAnchor: function () {return this.get(0).opt.anchor;},
        setAbundance: function (e, r) {
            let t = this.get(0);
            return r && (t.opt.abundance = e), this.optimizeDisplay(
                t.opt.anchor, e), this;
        },
        getAbundance: function () {return this.get(0).opt.abundance;},
        setOption: function (e, r) {return this.get(0).opt[e] = r, this;},
    }, jQuery.fn.optimizeDisplay = function (anchor, abundanceX) {
        let YTPlayer = this.get(0), vid = {}, el = YTPlayer.wrapper,
            iframe = jQuery(YTPlayer.playerEl);
        YTPlayer.opt.anchor = anchor ||
            YTPlayer.opt.anchor, YTPlayer.opt.anchor = 'undefined ' !=
        typeof YTPlayer.opt.anchor ? YTPlayer.opt.anchor : 'center,center';
        let YTPAlign = YTPlayer.opt.anchor.split(','),
            ab = abundanceX || YTPlayer.opt.abundance;
        if (YTPlayer.opt.optimizeDisplay) {
            let abundance = el.height() * ab, win = {};
            win.width = el.outerWidth(), win.height = el.outerHeight() +
                abundance, YTPlayer.opt.ratio = 'auto' === YTPlayer.opt.ratio
                ? 16 / 9
                : YTPlayer.opt.ratio, YTPlayer.opt.ratio = eval(
                YTPlayer.opt.ratio), vid.width = win.width +
                abundance, vid.height = Math.ceil(
                vid.width / YTPlayer.opt.ratio), vid.marginTop = Math.ceil(
                -(vid.height - win.height + abundance) /
                2), vid.marginLeft = -abundance / 2;
            let lowest = vid.height < win.height;
            lowest &&
            (vid.height = win.height + abundance, vid.width = Math.ceil(
                vid.height * YTPlayer.opt.ratio), vid.marginTop = -abundance /
                2, vid.marginLeft = Math.ceil(-(vid.width - win.width) / 2));
            for (let e in YTPAlign) if (YTPAlign.hasOwnProperty(e)) {
                let r = YTPAlign[e].replace(/ /g, '');
                switch (r) {
                    case'top':
                        vid.marginTop = -abundance;
                        break;
                    case'bottom':
                        vid.marginTop = Math.ceil(
                            -(vid.height - win.height) - abundance / 2);
                        break;
                    case'left':
                        vid.marginLeft = -abundance;
                        break;
                    case'right':
                        vid.marginLeft = Math.ceil(
                            -(vid.width - win.width) + abundance / 2);
                }
            }
        } else vid.width = '100%', vid.height = '100%', vid.marginTop = 0, vid.marginLeft = 0;
        iframe.css({
            width: vid.width,
            height: vid.height,
            marginTop: vid.marginTop,
            marginLeft: vid.marginLeft,
            maxWidth: 'initial',
        });
    }, jQuery.shuffle = function (e) {
        let r = e.slice(), t = r.length, a = t;
        for (; a--;) {
            let e = parseInt(Math.random() * t), o = r[a];
            r[a] = r[e], r[e] = o;
        }
        return r;
    }, jQuery.fn.unselectable = function () {
        return this.each(function () {
            jQuery(this).
                css({
                    '-moz-user-select': 'none',
                    '-webkit-user-select': 'none',
                    'user-select': 'none',
                }).
                attr('unselectable', 'on');
        });
    }, jQuery.fn.YTPlayer = jQuery.mbYTPlayer.buildPlayer, jQuery.fn.mb_YTPlayer = jQuery.mbYTPlayer.buildPlayer, jQuery.fn.YTPCheckForState = jQuery.mbYTPlayer.checkForState, jQuery.fn.YTPGetPlayer = jQuery.mbYTPlayer.getPlayer, jQuery.fn.YTPGetVideoID = jQuery.mbYTPlayer.getVideoID, jQuery.fn.YTPGetPlaylistID = jQuery.mbYTPlayer.getPlaylistID, jQuery.fn.YTPChangeVideo = jQuery.fn.YTPChangeMovie = jQuery.mbYTPlayer.changeVideo, jQuery.fn.YTPPlayerDestroy = jQuery.mbYTPlayer.playerDestroy, jQuery.fn.YTPPlay = jQuery.mbYTPlayer.play, jQuery.fn.YTPTogglePlay = jQuery.mbYTPlayer.togglePlay, jQuery.fn.YTPStop = jQuery.mbYTPlayer.stop, jQuery.fn.YTPPause = jQuery.mbYTPlayer.pause, jQuery.fn.YTPSeekTo = jQuery.mbYTPlayer.seekTo, jQuery.fn.YTPGetPlaybackRate = jQuery.mbYTPlayer.getPlaybackRate, jQuery.fn.YTPSetPlaybackRate = jQuery.mbYTPlayer.setPlaybackRate, jQuery.fn.changeCoverImage = jQuery.mbYTPlayer.changeCoverImage, jQuery.fn.YTPlaylist = jQuery.mbYTPlayer.playlist, jQuery.fn.YTPPlayNext = jQuery.mbYTPlayer.playNext, jQuery.fn.YTPPlayPrev = jQuery.mbYTPlayer.playPrev, jQuery.fn.YTPPlayIndex = jQuery.mbYTPlayer.playIndex, jQuery.fn.YTPMute = jQuery.mbYTPlayer.mute, jQuery.fn.YTPUnmute = jQuery.mbYTPlayer.unmute, jQuery.fn.YTPToggleVolume = jQuery.mbYTPlayer.toggleVolume, jQuery.fn.YTPSetVolume = jQuery.mbYTPlayer.setVolume, jQuery.fn.YTPGetVolume = jQuery.mbYTPlayer.getVolume, jQuery.fn.YTPGetVideoData = jQuery.mbYTPlayer.getVideoData, jQuery.fn.YTPFullscreen = jQuery.mbYTPlayer.fullscreen, jQuery.fn.YTPToggleLoops = jQuery.mbYTPlayer.toggleLoops, jQuery.fn.YTPManageProgress = jQuery.mbYTPlayer.manageProgress, jQuery.fn.YTPSetVideoQuality = jQuery.mbYTPlayer.setVideoQuality, jQuery.fn.YTPGetVideoQuality = jQuery.mbYTPlayer.getVideoQuality, jQuery.fn.YTPApplyFilter = jQuery.mbYTPlayer.applyFilter, jQuery.fn.YTPApplyFilters = jQuery.mbYTPlayer.applyFilters, jQuery.fn.YTPToggleFilter = jQuery.mbYTPlayer.toggleFilter, jQuery.fn.YTPToggleFilters = jQuery.mbYTPlayer.toggleFilters, jQuery.fn.YTPRemoveFilter = jQuery.mbYTPlayer.removeFilter, jQuery.fn.YTPDisableFilters = jQuery.mbYTPlayer.disableFilters, jQuery.fn.YTPEnableFilters = jQuery.mbYTPlayer.enableFilters, jQuery.fn.YTPGetFilters = jQuery.mbYTPlayer.getFilters, jQuery.fn.YTPGetTime = jQuery.mbYTPlayer.getTime, jQuery.fn.YTPGetTotalTime = jQuery.mbYTPlayer.getTotalTime, jQuery.fn.YTPAddMask = jQuery.mbYTPlayer.addMask, jQuery.fn.YTPRemoveMask = jQuery.mbYTPlayer.removeMask, jQuery.fn.YTPToggleMask = jQuery.mbYTPlayer.toggleMask, jQuery.fn.YTPGetAbundance = jQuery.mbYTPlayer.getAbundance, jQuery.fn.YTPSetAbundance = jQuery.mbYTPlayer.setAbundance, jQuery.fn.YTPSetAnchor = jQuery.mbYTPlayer.setAnchor, jQuery.fn.YTPGetAnchor = jQuery.mbYTPlayer.getAnchor, jQuery.fn.YTPSetOption = jQuery.mbYTPlayer.setOption;
}(jQuery, ytp);
var nAgt = navigator.userAgent;

function isTouchSupported () {
    var e = nAgt.msMaxTouchPoints,
        r = 'ontouchstart' in document.createElement('div');
    return !(!e && !r);
}

jQuery.browser = jQuery.browser ||
    {}, jQuery.browser.mozilla = !1, jQuery.browser.webkit = !1, jQuery.browser.opera = !1, jQuery.browser.safari = !1, jQuery.browser.chrome = !1, jQuery.browser.androidStock = !1, jQuery.browser.msie = !1, jQuery.browser.edge = !1, jQuery.browser.ua = nAgt;
var getOS = function () {
    var e = {
        version: 'Unknown version',
        name: 'Unknown OS',
    };
    return -1 != navigator.appVersion.indexOf('Win') &&
    (e.name = 'Windows'), -1 != navigator.appVersion.indexOf('Mac') && 0 >
    navigator.appVersion.indexOf('Mobile') && (e.name = 'Mac'), -1 !=
    navigator.appVersion.indexOf('Linux') &&
    (e.name = 'Linux'), /Mac OS X/.test(nAgt) && !/Mobile/.test(nAgt) &&
    (e.version = /Mac OS X ([\._\d]+)/.exec(
        nAgt)[1], e.version = e.version.replace(/_/g, '.').
        substring(0, 5)), /Windows/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), /Windows NT 5.1/.test(nAgt) &&
    (e.version = '5.1'), /Windows NT 6.0/.test(nAgt) &&
    (e.version = '6.0'), /Windows NT 6.1/.test(nAgt) &&
    (e.version = '6.1'), /Windows NT 6.2/.test(nAgt) &&
    (e.version = '6.2'), /Windows NT 10.0/.test(nAgt) &&
    (e.version = '10.0'), /Linux/.test(nAgt) && /Linux/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), e.name = e.name.toLowerCase(), e.major_version = 'Unknown', e.minor_version = 'Unknown', 'Unknown.Unknown' !=
    e.version && (e.major_version = parseFloat(
        e.version.split('.')[0]), e.minor_version = parseFloat(
        e.version.split('.')[1])), e;
}, nameOffset, verOffset, ix;
if (jQuery.browser.os = getOS(), jQuery.browser.hasTouch = isTouchSupported(), jQuery.browser.name = navigator.appName, jQuery.browser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(
    navigator.appVersion, 10), -1 != (verOffset = nAgt.indexOf(
    'Opera'))) jQuery.browser.opera = !0, jQuery.browser.name = 'Opera', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 6), -1 != (verOffset = nAgt.indexOf('Version')) &&
(jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 !=
    (verOffset = nAgt.indexOf(
        'OPR'))) jQuery.browser.opera = !0, jQuery.browser.name = 'Opera', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 4); else if (-1 != (verOffset = nAgt.indexOf(
    'MSIE'))) jQuery.browser.msie = !0, jQuery.browser.name = 'Microsoft Internet Explorer', jQuery.browser.fullVersion = nAgt.substring(
    verOffset + 5); else if (-1 != nAgt.indexOf('Trident')) {
    jQuery.browser.msie = !0, jQuery.browser.name = 'Microsoft Internet Explorer';
    var start = nAgt.indexOf('rv:') + 3, end = start + 4;
    jQuery.browser.fullVersion = nAgt.substring(start, end);
} else -1 != (verOffset = nAgt.indexOf('Edge'))
    ? (jQuery.browser.edge = !0, jQuery.browser.name = 'Microsoft Edge', jQuery.browser.fullVersion = nAgt.substring(
        verOffset + 5))
    : -1 != (verOffset = nAgt.indexOf('Chrome'))
        ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = 'Chrome', jQuery.browser.fullVersion = nAgt.substring(
            verOffset + 7))
        : -1 < nAgt.indexOf('mozilla/5.0') && -1 < nAgt.indexOf('android ') &&
        -1 < nAgt.indexOf('applewebkit') && !(-1 < nAgt.indexOf('chrome'))
            ? (verOffset = nAgt.indexOf(
                'Chrome'), jQuery.browser.webkit = !0, jQuery.browser.androidStock = !0, jQuery.browser.name = 'androidStock', jQuery.browser.fullVersion = nAgt.substring(
                verOffset + 7))
            : -1 != (verOffset = nAgt.indexOf('Safari'))
                ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = 'Safari', jQuery.browser.fullVersion = nAgt.substring(
                    verOffset + 7), -1 !=
                (verOffset = nAgt.indexOf('Version')) &&
                (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)))
                : -1 != (verOffset = nAgt.indexOf('AppleWebkit'))
                    ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = 'Safari', jQuery.browser.fullVersion = nAgt.substring(
                        verOffset + 7), -1 !=
                    (verOffset = nAgt.indexOf('Version')) &&
                    (jQuery.browser.fullVersion = nAgt.substring(
                        verOffset + 8)))
                    : -1 != (verOffset = nAgt.indexOf('Firefox'))
                        ? (jQuery.browser.mozilla = !0, jQuery.browser.name = 'Firefox', jQuery.browser.fullVersion = nAgt.substring(
                            verOffset + 8))
                        : (nameOffset = nAgt.lastIndexOf(' ') + 1) <
                        (verOffset = nAgt.lastIndexOf('/')) &&
                        (jQuery.browser.name = nAgt.substring(nameOffset,
                            verOffset), jQuery.browser.fullVersion = nAgt.substring(
                            verOffset + 1), jQuery.browser.name.toLowerCase() ==
                        jQuery.browser.name.toUpperCase() &&
                        (jQuery.browser.name = navigator.appName));

function uncamel (e) {
    return e.replace(/([A-Z])/g, function (e) {return '-' + e.toLowerCase();});
}

function setUnit (e, r) {
    return 'string' != typeof e || e.match(/^[\-0-9\.]+jQuery/)
        ? '' + e + r
        : e;
}

function setFilter (e, r, t) {
    var a = uncamel(r), o = jQuery.browser.mozilla ? '' : jQuery.CSS.sfx;
    e[o + 'filter'] = e[o + 'filter'] || '', t = setUnit(
        t > jQuery.CSS.filters[r].max ? jQuery.CSS.filters[r].max : t,
        jQuery.CSS.filters[r].unit), e[o + 'filter'] += a + '(' + t +
        ') ', delete e[r];
}

-1 != (ix = jQuery.browser.fullVersion.indexOf(';')) &&
(jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0,
    ix)), -1 != (ix = jQuery.browser.fullVersion.indexOf(' ')) &&
(jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0,
    ix)), jQuery.browser.majorVersion = parseInt(
    '' + jQuery.browser.fullVersion, 10), isNaN(jQuery.browser.majorVersion) &&
(jQuery.browser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(
    navigator.appVersion,
    10)), jQuery.browser.version = jQuery.browser.majorVersion, jQuery.browser.android = /Android/i.test(
    nAgt), jQuery.browser.blackberry = /BlackBerry|BB|PlayBook/i.test(
    nAgt), jQuery.browser.ios = /iPhone|iPad|iPod|webOS/i.test(
    nAgt), jQuery.browser.operaMobile = /Opera Mini/i.test(
    nAgt), jQuery.browser.windowsMobile = /IEMobile|Windows Phone/i.test(
    nAgt), jQuery.browser.kindle = /Kindle|Silk/i.test(
    nAgt), jQuery.browser.mobile = jQuery.browser.android ||
    jQuery.browser.blackberry || jQuery.browser.ios ||
    jQuery.browser.windowsMobile || jQuery.browser.operaMobile ||
    jQuery.browser.kindle, jQuery.isMobile = jQuery.browser.mobile, jQuery.isTablet = jQuery.browser.mobile &&
    765 <
    jQuery(window).width(), jQuery.isAndroidDefault = jQuery.browser.android &&
    !/chrome/i.test(
        nAgt), jQuery.mbBrowser = jQuery.browser, jQuery.browser.versionCompare = function (
    e, r) {
    if ('stringstring' != typeof e + typeof r) return !1;
    for (var t = e.split('.'), a = r.split('.'), o = 0, n = Math.max(t.length,
        a.length); o < n; o++) {
        if (t[o] && !a[o] && 0 < parseInt(t[o]) || parseInt(t[o]) >
            parseInt(a[o])) return 1;
        if (a[o] && !t[o] && 0 < parseInt(a[o]) || parseInt(t[o]) <
            parseInt(a[o])) return -1;
    }
    return 0;
}, jQuery.support.CSStransition = function () {
    var e = (document.body || document.documentElement).style;
    return void 0 !== e.transition || void 0 !== e.WebkitTransition ||
        void 0 !== e.MozTransition || void 0 !== e.MsTransition || void 0 !==
        e.OTransition;
}(), jQuery.CSS = {
    name: 'mb.CSSAnimate',
    author: 'Matteo Bicocchi',
    version: '2.0.0',
    transitionEnd: 'transitionEnd',
    sfx: '',
    filters: {
        blur: { min: 0, max: 100, unit: 'px' },
        brightness: { min: 0, max: 400, unit: '%' },
        contrast: { min: 0, max: 400, unit: '%' },
        grayscale: { min: 0, max: 100, unit: '%' },
        hueRotate: { min: 0, max: 360, unit: 'deg' },
        invert: { min: 0, max: 100, unit: '%' },
        saturate: { min: 0, max: 400, unit: '%' },
        sepia: { min: 0, max: 100, unit: '%' },
    },
    normalizeCss: function (e) {
        var r = jQuery.extend(!0, {}, e);
        for (var t in jQuery.browser.webkit || jQuery.browser.opera
            ? jQuery.CSS.sfx = '-webkit-'
            : jQuery.browser.mozilla
                ? jQuery.CSS.sfx = '-moz-'
                : jQuery.browser.msie &&
                (jQuery.CSS.sfx = '-ms-'), jQuery.CSS.sfx = '', r) {
            if ('transform' === t && (r[jQuery.CSS.sfx +
            'transform'] = r[t], delete r[t]), 'transform-origin' === t &&
            (r[jQuery.CSS.sfx +
            'transform-origin'] = e[t], delete r[t]), 'filter' !== t ||
            jQuery.browser.mozilla ||
            (r[jQuery.CSS.sfx + 'filter'] = e[t], delete r[t]), 'blur' === t &&
            setFilter(r, 'blur', e[t]), 'brightness' === t &&
            setFilter(r, 'brightness', e[t]), 'contrast' === t &&
            setFilter(r, 'contrast', e[t]), 'grayscale' === t &&
            setFilter(r, 'grayscale', e[t]), 'hueRotate' === t &&
            setFilter(r, 'hueRotate', e[t]), 'invert' === t &&
            setFilter(r, 'invert', e[t]), 'saturate' === t &&
            setFilter(r, 'saturate', e[t]), 'sepia' === t &&
            setFilter(r, 'sepia', e[t]), 'x' === t) {
                var a = jQuery.CSS.sfx + 'transform';
                r[a] = r[a] || '', r[a] += ' translateX(' +
                    setUnit(e[t], 'px') + ')', delete r[t];
            }
            'y' === t && (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' translateY(' + setUnit(e[t], 'px') +
                ')', delete r[t]), 'z' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' translateZ(' + setUnit(e[t], 'px') +
                ')', delete r[t]), 'rotate' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotate(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateX(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateY(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'rotateZ' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' rotateZ(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'scale' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scale(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleX(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleY(' + setUnit(e[t], '') +
                ')', delete r[t]), 'scaleZ' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' scaleZ(' + setUnit(e[t], '') +
                ')', delete r[t]), 'skew' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skew(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'skewX' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skewX(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'skewY' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' skewY(' + setUnit(e[t], 'deg') +
                ')', delete r[t]), 'perspective' === t &&
            (r[a = jQuery.CSS.sfx + 'transform'] = r[a] ||
                '', r[a] += ' perspective(' + setUnit(e[t], 'px') +
                ')', delete r[t]);
        }
        return r;
    },
    getProp: function (e) {
        var r, t = [];
        for (r in e) 0 > t.indexOf(r) && t.push(uncamel(r));
        return t.join(',');
    },
    animate: function (e, r, t, a, o) {
        return this.each(function () {
            function n () {
                i.called = !0, i.CSSAIsRunning = !1, l.off(
                    jQuery.CSS.transitionEnd + '.' + i.id), clearTimeout(
                    i.timeout), l.css(jQuery.CSS.sfx + 'transition',
                    ''), 'function' == typeof o && o.apply(i), 'function' ==
                typeof i.CSSqueue && (i.CSSqueue(), i.CSSqueue = null);
            }

            var i = this, l = jQuery(this);
            i.id = i.id || 'CSSA_' + (new Date).getTime();
            var s = s || { type: 'noEvent' };
            if (i.CSSAIsRunning && i.eventType == s.type &&
                !jQuery.browser.msie && 9 >=
                jQuery.browser.version) i.CSSqueue = function () {
                l.CSSAnimate(e, r, t, a, o);
            }; else if (i.CSSqueue = null, i.eventType = s.type, 0 !==
            l.length && e) {
                if (e = jQuery.normalizeCss(
                    e), i.CSSAIsRunning = !0, 'function' == typeof r &&
                (o = r, r = jQuery.fx.speeds._default), 'function' ==
                typeof t && (a = t, t = 0), 'string' == typeof t &&
                (o = t, t = 0), 'function' == typeof a &&
                (o = a, a = 'cubic-bezier(0.65,0.03,0.36,0.72)'), 'string' ==
                typeof r) for (var u in jQuery.fx.speeds) {
                    if (r == u) {
                        r = jQuery.fx.speeds[u];
                        break;
                    }
                    r = jQuery.fx.speeds._default;
                }
                if (r || (r = jQuery.fx.speeds._default), 'string' ==
                typeof o && (a = o, o = null), jQuery.support.CSStransition) {
                    var y = {
                        default: 'ease',
                        in: 'ease-in',
                        out: 'ease-out',
                        'in-out': 'ease-in-out',
                        snap: 'cubic-bezier(0,1,.5,1)',
                        easeOutCubic: 'cubic-bezier(.215,.61,.355,1)',
                        easeInOutCubic: 'cubic-bezier(.645,.045,.355,1)',
                        easeInCirc: 'cubic-bezier(.6,.04,.98,.335)',
                        easeOutCirc: 'cubic-bezier(.075,.82,.165,1)',
                        easeInOutCirc: 'cubic-bezier(.785,.135,.15,.86)',
                        easeInExpo: 'cubic-bezier(.95,.05,.795,.035)',
                        easeOutExpo: 'cubic-bezier(.19,1,.22,1)',
                        easeInOutExpo: 'cubic-bezier(1,0,0,1)',
                        easeInQuad: 'cubic-bezier(.55,.085,.68,.53)',
                        easeOutQuad: 'cubic-bezier(.25,.46,.45,.94)',
                        easeInOutQuad: 'cubic-bezier(.455,.03,.515,.955)',
                        easeInQuart: 'cubic-bezier(.895,.03,.685,.22)',
                        easeOutQuart: 'cubic-bezier(.165,.84,.44,1)',
                        easeInOutQuart: 'cubic-bezier(.77,0,.175,1)',
                        easeInQuint: 'cubic-bezier(.755,.05,.855,.06)',
                        easeOutQuint: 'cubic-bezier(.23,1,.32,1)',
                        easeInOutQuint: 'cubic-bezier(.86,0,.07,1)',
                        easeInSine: 'cubic-bezier(.47,0,.745,.715)',
                        easeOutSine: 'cubic-bezier(.39,.575,.565,1)',
                        easeInOutSine: 'cubic-bezier(.445,.05,.55,.95)',
                        easeInBack: 'cubic-bezier(.6,-.28,.735,.045)',
                        easeOutBack: 'cubic-bezier(.175, .885,.32,1.275)',
                        easeInOutBack: 'cubic-bezier(.68,-.55,.265,1.55)',
                    };
                    y[a] && (a = y[a]), l.off(jQuery.CSS.transitionEnd + '.' +
                        i.id), y = jQuery.CSS.getProp(e);
                    var d = {};
                    jQuery.extend(d, e), d[jQuery.CSS.sfx +
                    'transition-property'] = y, d[jQuery.CSS.sfx +
                    'transition-duration'] = r + 'ms', d[jQuery.CSS.sfx +
                    'transition-delay'] = t + 'ms', d[jQuery.CSS.sfx +
                    'transition-timing-function'] = a, setTimeout(function () {
                        l.one(jQuery.CSS.transitionEnd + '.' + i.id, n), l.css(
                            d);
                    }, 1), i.timeout = setTimeout(function () {
                        i.called || !o
                            ? (i.called = !1, i.CSSAIsRunning = !1)
                            : (l.css(jQuery.CSS.sfx + 'transition',
                            ''), o.apply(i), i.CSSAIsRunning = !1, 'function' ==
                            typeof i.CSSqueue && (i.CSSqueue(), i.CSSqueue = null));
                    }, r + t + 10);
                } else {
                    for (y in e) 'transform' === y && delete e[y], 'filter' ===
                    y && delete e[y], 'transform-origin' === y &&
                    delete e[y], 'auto' === e[y] && delete e[y], 'x' === y &&
                    (s = e[y], e[u = 'left'] = s, delete e[y]), 'y' === y &&
                    (s = e[y], e[u = 'top'] = s, delete e[y]), '-ms-transform' !==
                    y && '-ms-filter' !== y || delete e[y];
                    l.delay(t).animate(e, r, o);
                }
            }
        });
    },
}, jQuery.fn.CSSAnimate = jQuery.CSS.animate, jQuery.normalizeCss = jQuery.CSS.normalizeCss, jQuery.fn.css3 = function (e) {
    return this.each(function () {
        var r = jQuery(this), t = jQuery.normalizeCss(e);
        r.css(t);
    });
}, function (e) {
    e.simpleSlider = {
        defaults: {
            initialval: 0,
            maxval: 100,
            orientation: 'h',
            readonly: !1,
            callback: !1,
        },
        events: {
            start: e.browser.mobile ? 'touchstart' : 'mousedown',
            end: e.browser.mobile ? 'touchend' : 'mouseup',
            move: e.browser.mobile ? 'touchmove' : 'mousemove',
        },
        init: function (r) {
            return this.each(function () {
                var t = this, a = e(t);
                a.addClass('simpleSlider'), t.opt = {}, e.extend(t.opt,
                    e.simpleSlider.defaults, r), e.extend(t.opt, a.data());
                var o = 'h' === t.opt.orientation ? 'horizontal' : 'vertical';
                o = e('<div/>').addClass('level').addClass(o), a.prepend(
                    o), t.level = o, a.css({ cursor: 'default' }), 'auto' ==
                t.opt.maxval && (t.opt.maxval = e(t).
                    outerWidth()), a.updateSliderVal(), t.opt.readonly ||
                (a.on(e.simpleSlider.events.start, function (r) {
                    e.browser.mobile &&
                    (r = r.changedTouches[0]), t.canSlide = !0, a.updateSliderVal(
                        r), 'h' === t.opt.orientation ? a.css(
                        { cursor: 'col-resize' }) : a.css(
                        { cursor: 'row-resize' }), t.lastVal = t.val, e.browser.mobile ||
                    (r.preventDefault(), r.stopPropagation());
                }), e(document).
                    on(e.simpleSlider.events.move, function (r) {
                        e.browser.mobile &&
                        (r = r.changedTouches[0]), t.canSlide && (e(document).
                            css({ cursor: 'default' }), a.updateSliderVal(
                            r), e.browser.mobile ||
                        (r.preventDefault(), r.stopPropagation()));
                    }).
                    on(e.simpleSlider.events.end, function () {
                        e(document).
                            css({ cursor: 'auto' }), t.canSlide = !1, a.css(
                            { cursor: 'auto' });
                    }));
            });
        },
        updateSliderVal: function (r) {
            var t = this.get(0);
            if (t.opt) {
                t.opt.initialval = 'number' == typeof t.opt.initialval
                    ? t.opt.initialval
                    : t.opt.initialval(t);
                var a = e(t).outerWidth(), o = e(t).outerHeight();
                t.x = 'object' == typeof r ? r.clientX +
                    document.body.scrollLeft - this.offset().left : 'number' ==
                typeof r ? r * a / t.opt.maxval : t.opt.initialval * a /
                    t.opt.maxval, t.y = 'object' == typeof r ? r.clientY +
                    document.body.scrollTop - this.offset().top : 'number' ==
                typeof r ? (t.opt.maxval - t.opt.initialval - r) * o /
                    t.opt.maxval : t.opt.initialval * o /
                    t.opt.maxval, t.y = this.outerHeight() -
                    t.y, t.scaleX = t.x * t.opt.maxval / a, t.scaleY = t.y *
                    t.opt.maxval / o, t.outOfRangeX = t.scaleX > t.opt.maxval
                    ? t.scaleX - t.opt.maxval
                    : 0 > t.scaleX ? t.scaleX : 0, t.outOfRangeY = t.scaleY >
                t.opt.maxval ? t.scaleY - t.opt.maxval : 0 > t.scaleY
                    ? t.scaleY
                    : 0, t.outOfRange = 'h' === t.opt.orientation
                    ? t.outOfRangeX
                    : t.outOfRangeY, t.value = void 0 !== r ? 'h' ===
                t.opt.orientation ? t.x >= this.outerWidth()
                    ? t.opt.maxval
                    : 0 >= t.x ? 0 : t.scaleX : t.y >= this.outerHeight()
                    ? t.opt.maxval
                    : 0 >= t.y ? 0 : t.scaleY : 'h' === t.opt.orientation
                    ? t.scaleX
                    : t.scaleY, 'h' === t.opt.orientation ? t.level.width(
                    Math.floor(100 * t.x / a) + '%') : t.level.height(
                    Math.floor(100 * t.y / o)), t.lastVal === t.value &&
                ('h' === t.opt.orientation &&
                    (t.x >= this.outerWidth() || 0 >= t.x) || 'h' !==
                    t.opt.orientation &&
                    (t.y >= this.outerHeight() || 0 >= t.y)) ||
                ('function' == typeof t.opt.callback &&
                t.opt.callback(t), t.lastVal = t.value);
            }
        },
    }, e.fn.simpleSlider = e.simpleSlider.init, e.fn.updateSliderVal = e.simpleSlider.updateSliderVal;
}(jQuery), function (e) {
    e.mbCookie = {
        set: function (e, r, t, a) {
            'object' == typeof r && (r = JSON.stringify(r)), a = a
                ? '; domain=' + a
                : '';
            var o = new Date, n = '';
            0 < t && (o.setTime(o.getTime() + 864e5 * t), n = '; expires=' +
                o.toGMTString()), document.cookie = e + '=' + r + n +
                '; path=/' + a;
        }, get: function (e) {
            e += '=';
            for (var r = document.cookie.split(';'), t = 0; t < r.length; t++) {
                for (var a = r[t]; " " == a.charAt(0);) a = a.substring(1,
                    a.length);
                if (0 == a.indexOf(e)) try {
                    return JSON.parse(a.substring(e.length, a.length));
                } catch (r) {return a.substring(e.length, a.length);}
            }
            return null;
        }, remove: function (r) {e.mbCookie.set(r, '', -1);},
    }, e.mbStorage = {
        set: function (e, r) {
            'object' == typeof r &&
            (r = JSON.stringify(r)), localStorage.setItem(e, r);
        },
        get: function (e) {
            if (!localStorage[e]) return null;
            try {
                return JSON.parse(localStorage[e]);
            } catch (r) {return localStorage[e];}
        },
        remove: function (e) {
            e
                ? localStorage.removeItem(e)
                : localStorage.clear();
        },
    };
}(jQuery);
var nAgt = navigator.userAgent;

function isTouchSupported () {
    var e = nAgt.msMaxTouchPoints,
        r = 'ontouchstart' in document.createElement('div');
    return !(!e && !r);
}

jQuery.mbBrowser = {}, jQuery.mbBrowser.mozilla = !1, jQuery.mbBrowser.webkit = !1, jQuery.mbBrowser.opera = !1, jQuery.mbBrowser.safari = !1, jQuery.mbBrowser.chrome = !1, jQuery.mbBrowser.androidStock = !1, jQuery.mbBrowser.msie = !1, jQuery.mbBrowser.edge = !1, jQuery.mbBrowser.ua = nAgt;
var getOS = function () {
    var e = {
        version: 'Unknown version',
        name: 'Unknown OS',
    };
    return -1 != navigator.appVersion.indexOf('Win') &&
    (e.name = 'Windows'), -1 != navigator.appVersion.indexOf('Mac') && 0 >
    navigator.appVersion.indexOf('Mobile') && (e.name = 'Mac'), -1 !=
    navigator.appVersion.indexOf('Linux') &&
    (e.name = 'Linux'), /Mac OS X/.test(nAgt) && !/Mobile/.test(nAgt) &&
    (e.version = /Mac OS X ([\._\d]+)/.exec(
        nAgt)[1], e.version = e.version.replace(/_/g, '.').
        substring(0, 5)), /Windows/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), /Windows NT 5.1/.test(nAgt) &&
    (e.version = '5.1'), /Windows NT 6.0/.test(nAgt) &&
    (e.version = '6.0'), /Windows NT 6.1/.test(nAgt) &&
    (e.version = '6.1'), /Windows NT 6.2/.test(nAgt) &&
    (e.version = '6.2'), /Windows NT 10.0/.test(nAgt) &&
    (e.version = '10.0'), /Linux/.test(nAgt) && /Linux/.test(nAgt) &&
    (e.version = 'Unknown.Unknown'), e.name = e.name.toLowerCase(), e.major_version = 'Unknown', e.minor_version = 'Unknown', 'Unknown.Unknown' !=
    e.version && (e.major_version = parseFloat(
        e.version.split('.')[0]), e.minor_version = parseFloat(
        e.version.split('.')[1])), e;
}, nameOffset, verOffset, ix;
if (jQuery.mbBrowser.os = getOS(), jQuery.mbBrowser.hasTouch = isTouchSupported(), jQuery.mbBrowser.name = navigator.appName, jQuery.mbBrowser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.mbBrowser.majorVersion = parseInt(
    navigator.appVersion, 10), -1 != (verOffset = nAgt.indexOf(
    'Opera'))) jQuery.mbBrowser.opera = !0, jQuery.mbBrowser.name = 'Opera', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 6), -1 != (verOffset = nAgt.indexOf('Version')) &&
(jQuery.mbBrowser.fullVersion = nAgt.substring(verOffset + 8)); else if (-1 !=
    (verOffset = nAgt.indexOf(
        'OPR'))) jQuery.mbBrowser.opera = !0, jQuery.mbBrowser.name = 'Opera', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 4); else if (-1 != (verOffset = nAgt.indexOf(
    'MSIE'))) jQuery.mbBrowser.msie = !0, jQuery.mbBrowser.name = 'Microsoft Internet Explorer', jQuery.mbBrowser.fullVersion = nAgt.substring(
    verOffset + 5); else if (-1 != nAgt.indexOf('Trident')) {
    jQuery.mbBrowser.msie = !0, jQuery.mbBrowser.name = 'Microsoft Internet Explorer';
    var start = nAgt.indexOf('rv:') + 3, end = start + 4;
    jQuery.mbBrowser.fullVersion = nAgt.substring(start, end);
} else -1 != (verOffset = nAgt.indexOf('Edge'))
    ? (jQuery.mbBrowser.edge = !0, jQuery.mbBrowser.name = 'Microsoft Edge', jQuery.mbBrowser.fullVersion = nAgt.substring(
        verOffset + 5))
    : -1 != (verOffset = nAgt.indexOf('Chrome'))
        ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.chrome = !0, jQuery.mbBrowser.name = 'Chrome', jQuery.mbBrowser.fullVersion = nAgt.substring(
            verOffset + 7))
        : -1 < nAgt.indexOf('mozilla/5.0') && -1 < nAgt.indexOf('android ') &&
        -1 < nAgt.indexOf('applewebkit') && !(-1 < nAgt.indexOf('chrome'))
            ? (verOffset = nAgt.indexOf(
                'Chrome'), jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.androidStock = !0, jQuery.mbBrowser.name = 'androidStock', jQuery.mbBrowser.fullVersion = nAgt.substring(
                verOffset + 7))
            : -1 != (verOffset = nAgt.indexOf('Safari'))
                ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.safari = !0, jQuery.mbBrowser.name = 'Safari', jQuery.mbBrowser.fullVersion = nAgt.substring(
                    verOffset + 7), -1 !=
                (verOffset = nAgt.indexOf('Version')) &&
                (jQuery.mbBrowser.fullVersion = nAgt.substring(verOffset + 8)))
                : -1 != (verOffset = nAgt.indexOf('AppleWebkit'))
                    ? (jQuery.mbBrowser.webkit = !0, jQuery.mbBrowser.safari = !0, jQuery.mbBrowser.name = 'Safari', jQuery.mbBrowser.fullVersion = nAgt.substring(
                        verOffset + 7), -1 !=
                    (verOffset = nAgt.indexOf('Version')) &&
                    (jQuery.mbBrowser.fullVersion = nAgt.substring(
                        verOffset + 8)))
                    : -1 != (verOffset = nAgt.indexOf('Firefox'))
                        ? (jQuery.mbBrowser.mozilla = !0, jQuery.mbBrowser.name = 'Firefox', jQuery.mbBrowser.fullVersion = nAgt.substring(
                            verOffset + 8))
                        : (nameOffset = nAgt.lastIndexOf(' ') + 1) <
                        (verOffset = nAgt.lastIndexOf('/')) &&
                        (jQuery.mbBrowser.name = nAgt.substring(nameOffset,
                            verOffset), jQuery.mbBrowser.fullVersion = nAgt.substring(
                            verOffset +
                            1), jQuery.mbBrowser.name.toLowerCase() ==
                        jQuery.mbBrowser.name.toUpperCase() &&
                        (jQuery.mbBrowser.name = navigator.appName));
-1 != (ix = jQuery.mbBrowser.fullVersion.indexOf(';')) &&
(jQuery.mbBrowser.fullVersion = jQuery.mbBrowser.fullVersion.substring(0,
    ix)), -1 != (ix = jQuery.mbBrowser.fullVersion.indexOf(' ')) &&
(jQuery.mbBrowser.fullVersion = jQuery.mbBrowser.fullVersion.substring(0,
    ix)), jQuery.mbBrowser.majorVersion = parseInt(
    '' + jQuery.mbBrowser.fullVersion, 10), isNaN(
    jQuery.mbBrowser.majorVersion) && (jQuery.mbBrowser.fullVersion = '' +
    parseFloat(navigator.appVersion), jQuery.mbBrowser.majorVersion = parseInt(
    navigator.appVersion,
    10)), jQuery.mbBrowser.version = jQuery.mbBrowser.majorVersion, jQuery.mbBrowser.android = /Android/i.test(
    nAgt), jQuery.mbBrowser.blackberry = /BlackBerry|BB|PlayBook/i.test(
    nAgt), jQuery.mbBrowser.ios = /iPhone|iPad|iPod|webOS/i.test(
    nAgt), jQuery.mbBrowser.operaMobile = /Opera Mini/i.test(
    nAgt), jQuery.mbBrowser.windowsMobile = /IEMobile|Windows Phone/i.test(
    nAgt), jQuery.mbBrowser.kindle = /Kindle|Silk/i.test(
    nAgt), jQuery.mbBrowser.mobile = jQuery.mbBrowser.android ||
    jQuery.mbBrowser.blackberry || jQuery.mbBrowser.ios ||
    jQuery.mbBrowser.windowsMobile || jQuery.mbBrowser.operaMobile ||
    jQuery.mbBrowser.kindle, jQuery.isMobile = jQuery.mbBrowser.mobile, jQuery.isTablet = jQuery.mbBrowser.mobile &&
    765 < jQuery(window).
        width(), jQuery.isAndroidDefault = jQuery.mbBrowser.android &&
    !/chrome/i.test(
        nAgt), jQuery.mbBrowser = jQuery.mbBrowser, jQuery.mbBrowser.versionCompare = function (
    e, r) {
    if ('stringstring' != typeof e + typeof r) return !1;
    for (var t = e.split('.'), a = r.split('.'), o = 0, n = Math.max(t.length,
        a.length); o < n; o++) {
        if (t[o] && !a[o] && 0 < parseInt(t[o]) || parseInt(t[o]) >
            parseInt(a[o])) return 1;
        if (a[o] && !t[o] && 0 < parseInt(a[o]) || parseInt(t[o]) <
            parseInt(a[o])) return -1;
    }
    return 0;
};

window.SEMICOLON_youtubeBgVideoInit = function ($youtubeBgPlayerEl) {

    $youtubeBgPlayerEl = $youtubeBgPlayerEl.filter(
        ':not(.mb_YTPlayer,.customjs)');

    if ($youtubeBgPlayerEl.length < 1) {
        return true;
    }

    $youtubeBgPlayerEl.each(function () {

        let element = $(this),
            elVideo = element.attr('data-video'),
            elMute = element.attr('data-mute') || true,
            elRatio = element.attr('data-ratio') || '16/9',
            elQuality = element.attr('data-quality') || 'hd720',
            elOpacity = element.attr('data-opacity') || 1,
            elContainer = element.attr('data-container') || 'parent',
            elOptimize = element.attr('data-optimize') || true,
            elLoop = element.attr('data-loop') || true,
            elControls = element.attr('data-controls') || false,
            elVolume = element.attr('data-volume') || 50,
            elStart = element.attr('data-start') || 0,
            elStop = element.attr('data-stop') || 0,
            elAutoPlay = element.attr('data-autoplay') || true,
            elFullScreen = element.attr('data-fullscreen') || false;

        if (elMute == 'false') {
            elMute = false;
        }

        if (elContainer == 'parent') {
            let parent = element.parent();
            if (parent.attr('id')) {
                elContainer = '#' + parent.attr('id');
            } else {
                let ytPid = 'yt-bg-player-parent-' +
                    Math.floor(Math.random() * 10000);
                parent.attr('id', ytPid);
                elContainer = '#' + ytPid;
            }
        }

        if (elOptimize == 'false') {
            elOptimize = false;
        }

        if (elLoop == 'false') {
            elLoop = false;
        }

        if (elControls == 'true') {
            elControls = true;
        }

        if (elAutoPlay == 'false') {
            elAutoPlay = false;
        }

        if (elFullScreen == 'true') {
            elFullScreen = true;
        }

        element.YTPlayer({
            videoURL: elVideo,
            mute: elMute,
            ratio: elRatio,
            quality: elQuality,
            opacity: Number(elOpacity),
            containment: elContainer,
            optimizeDisplay: elOptimize,
            loop: elLoop,
            vol: Number(elVolume),
            startAt: Number(elStart),
            stopAt: Number(elStop),
            autoPlay: elAutoPlay,
            realfullscreen: elFullScreen,
            showYTLogo: false,
            showControls: false,
        });

    });

};

/**
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.
 *
 *  https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
 *
 */
(function () {
    'use strict';

// Exit early if we're not running in a browser.
    if (typeof window !== 'object') {
        return;
    }

// Exit early if all IntersectionObserver and IntersectionObserverEntry
// features are natively supported.
    if ('IntersectionObserver' in window &&
        'IntersectionObserverEntry' in window &&
        'intersectionRatio' in window.IntersectionObserverEntry.prototype) {

        // Minimal polyfill for Edge 15's lack of `isIntersecting`
        // See: https://github.com/w3c/IntersectionObserver/issues/211
        if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {
            Object.defineProperty(window.IntersectionObserverEntry.prototype,
                'isIntersecting', {
                    get: function () {
                        return this.intersectionRatio > 0;
                    },
                });
        }
        return;
    }

    /**
     * A local reference to the document.
     */
    var document = window.document;

    /**
     * An IntersectionObserver registry. This registry exists to hold a strong
     * reference to IntersectionObserver instances currently observing a target
     * element. Without this registry, instances without another reference may be
     * garbage collected.
     */
    var registry = [];

    /**
     * The signal updater for cross-origin intersection. When not null, it means
     * that the polyfill is configured to work in a cross-origin mode.
     * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}
     */
    var crossOriginUpdater = null;

    /**
     * The current cross-origin intersection. Only used in the cross-origin mode.
     * @type {DOMRect|ClientRect}
     */
    var crossOriginRect = null;

    /**
     * Creates the global IntersectionObserverEntry constructor.
     * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry
     * @param {Object} entry A dictionary of instance properties.
     * @constructor
     */
    function IntersectionObserverEntry (entry) {
        this.time = entry.time;
        this.target = entry.target;
        this.rootBounds = ensureDOMRect(entry.rootBounds);
        this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);
        this.intersectionRect = ensureDOMRect(
            entry.intersectionRect || getEmptyRect());
        this.isIntersecting = !!entry.intersectionRect;

        // Calculates the intersection ratio.
        var targetRect = this.boundingClientRect;
        var targetArea = targetRect.width * targetRect.height;
        var intersectionRect = this.intersectionRect;
        var intersectionArea = intersectionRect.width * intersectionRect.height;

        // Sets intersection ratio.
        if (targetArea) {
            // Round the intersection ratio to avoid floating point math issues:
            // https://github.com/w3c/IntersectionObserver/issues/324
            this.intersectionRatio = Number(
                (intersectionArea / targetArea).toFixed(4));
        } else {
            // If area is zero and is intersecting, sets to 1, otherwise to 0
            this.intersectionRatio = this.isIntersecting ? 1 : 0;
        }
    }

    /**
     * Creates the global IntersectionObserver constructor.
     * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface
     * @param {Function} callback The function to be invoked after intersection
     *     changes have queued. The function is not invoked if the queue has
     *     been emptied by calling the `takeRecords` method.
     * @param {Object=} opt_options Optional configuration options.
     * @constructor
     */
    function IntersectionObserver (callback, opt_options) {

        var options = opt_options || {};

        if (typeof callback != 'function') {
            throw new Error('callback must be a function');
        }

        if (options.root && options.root.nodeType != 1) {
            throw new Error('root must be an Element');
        }

        // Binds and throttles `this._checkForIntersections`.
        this._checkForIntersections = throttle(
            this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);

        // Private properties.
        this._callback = callback;
        this._observationTargets = [];
        this._queuedEntries = [];
        this._rootMarginValues = this._parseRootMargin(options.rootMargin);

        // Public properties.
        this.thresholds = this._initThresholds(options.threshold);
        this.root = options.root || null;
        this.rootMargin = this._rootMarginValues.map(function (margin) {
            return margin.value + margin.unit;
        }).join(' ');

        /** @private @const {!Array<!Document>} */
        this._monitoringDocuments = [];
        /** @private @const {!Array<function()>} */
        this._monitoringUnsubscribes = [];
    }

    /**
     * The minimum interval within which the document will be checked for
     * intersection changes.
     */
    IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;

    /**
     * The frequency in which the polyfill polls for intersection changes.
     * this can be updated on a per instance basis and must be set prior to
     * calling `observe` on the first target.
     */
    IntersectionObserver.prototype.POLL_INTERVAL = null;

    /**
     * Use a mutation observer on the root element
     * to detect intersection changes.
     */
    IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;

    /**
     * Sets up the polyfill in the cross-origin mode. The result is the
     * updater function that accepts two arguments: `boundingClientRect` and
     * `intersectionRect` - just as these fields would be available to the
     * parent via `IntersectionObserverEntry`. This function should be called
     * each time the iframe receives intersection information from the parent
     * window, e.g. via messaging.
     * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}
     */
    IntersectionObserver._setupCrossOriginUpdater = function () {
        if (!crossOriginUpdater) {
            /**
             * @param {DOMRect|ClientRect} boundingClientRect
             * @param {DOMRect|ClientRect} intersectionRect
             */
            crossOriginUpdater = function (
                boundingClientRect, intersectionRect) {
                if (!boundingClientRect || !intersectionRect) {
                    crossOriginRect = getEmptyRect();
                } else {
                    crossOriginRect = convertFromParentRect(boundingClientRect,
                        intersectionRect);
                }
                registry.forEach(function (observer) {
                    observer._checkForIntersections();
                });
            };
        }
        return crossOriginUpdater;
    };

    /**
     * Resets the cross-origin mode.
     */
    IntersectionObserver._resetCrossOriginUpdater = function () {
        crossOriginUpdater = null;
        crossOriginRect = null;
    };

    /**
     * Starts observing a target element for intersection changes based on
     * the thresholds values.
     * @param {Element} target The DOM element to observe.
     */
    IntersectionObserver.prototype.observe = function (target) {
        var isTargetAlreadyObserved = this._observationTargets.some(
            function (item) {
                return item.element == target;
            });

        if (isTargetAlreadyObserved) {
            return;
        }

        if (!(target && target.nodeType == 1)) {
            throw new Error('target must be an Element');
        }

        this._registerInstance();
        this._observationTargets.push({ element: target, entry: null });
        this._monitorIntersections(target.ownerDocument);
        this._checkForIntersections();
    };

    /**
     * Stops observing a target element for intersection changes.
     * @param {Element} target The DOM element to observe.
     */
    IntersectionObserver.prototype.unobserve = function (target) {
        this._observationTargets =
            this._observationTargets.filter(function (item) {
                return item.element != target;
            });
        this._unmonitorIntersections(target.ownerDocument);
        if (this._observationTargets.length == 0) {
            this._unregisterInstance();
        }
    };

    /**
     * Stops observing all target elements for intersection changes.
     */
    IntersectionObserver.prototype.disconnect = function () {
        this._observationTargets = [];
        this._unmonitorAllIntersections();
        this._unregisterInstance();
    };

    /**
     * Returns any queue entries that have not yet been reported to the
     * callback and clears the queue. This can be used in conjunction with the
     * callback to obtain the absolute most up-to-date intersection information.
     * @return {Array} The currently queued entries.
     */
    IntersectionObserver.prototype.takeRecords = function () {
        var records = this._queuedEntries.slice();
        this._queuedEntries = [];
        return records;
    };

    /**
     * Accepts the threshold value from the user configuration object and
     * returns a sorted array of unique threshold values. If a value is not
     * between 0 and 1 and error is thrown.
     * @private
     * @param {Array|number=} opt_threshold An optional threshold value or
     *     a list of threshold values, defaulting to [0].
     * @return {Array} A sorted list of unique and valid threshold values.
     */
    IntersectionObserver.prototype._initThresholds = function (opt_threshold) {
        var threshold = opt_threshold || [0];
        if (!Array.isArray(threshold)) threshold = [threshold];

        return threshold.sort().filter(function (t, i, a) {
            if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
                throw new Error(
                    'threshold must be a number between 0 and 1 inclusively');
            }
            return t !== a[i - 1];
        });
    };

    /**
     * Accepts the rootMargin value from the user configuration object
     * and returns an array of the four margin values as an object containing
     * the value and unit properties. If any of the values are not properly
     * formatted or use a unit other than px or %, and error is thrown.
     * @private
     * @param {string=} opt_rootMargin An optional rootMargin value,
     *     defaulting to '0px'.
     * @return {Array<Object>} An array of margin objects with the keys
     *     value and unit.
     */
    IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {
        var marginString = opt_rootMargin || '0px';
        var margins = marginString.split(/\s+/).map(function (margin) {
            var parts = /^(-?\d*\.?\d+)(px|%)$/.exec(margin);
            if (!parts) {
                throw new Error(
                    'rootMargin must be specified in pixels or percent');
            }
            return { value: parseFloat(parts[1]), unit: parts[2] };
        });

        // Handles shorthand.
        margins[1] = margins[1] || margins[0];
        margins[2] = margins[2] || margins[0];
        margins[3] = margins[3] || margins[1];

        return margins;
    };

    /**
     * Starts polling for intersection changes if the polling is not already
     * happening, and if the page's visibility state is visible.
     * @param {!Document} doc
     * @private
     */
    IntersectionObserver.prototype._monitorIntersections = function (doc) {
        var win = doc.defaultView;
        if (!win) {
            // Already destroyed.
            return;
        }
        if (this._monitoringDocuments.indexOf(doc) != -1) {
            // Already monitoring.
            return;
        }

        // Private state for monitoring.
        var callback = this._checkForIntersections;
        var monitoringInterval = null;
        var domObserver = null;

        // If a poll interval is set, use polling instead of listening to
        // resize and scroll events or DOM mutations.
        if (this.POLL_INTERVAL) {
            monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);
        } else {
            addEvent(win, 'resize', callback, true);
            addEvent(doc, 'scroll', callback, true);
            if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {
                domObserver = new win.MutationObserver(callback);
                domObserver.observe(doc, {
                    attributes: true,
                    childList: true,
                    characterData: true,
                    subtree: true,
                });
            }
        }

        this._monitoringDocuments.push(doc);
        this._monitoringUnsubscribes.push(function () {
            // Get the window object again. When a friendly iframe is destroyed, it
            // will be null.
            var win = doc.defaultView;

            if (win) {
                if (monitoringInterval) {
                    win.clearInterval(monitoringInterval);
                }
                removeEvent(win, 'resize', callback, true);
            }

            removeEvent(doc, 'scroll', callback, true);
            if (domObserver) {
                domObserver.disconnect();
            }
        });

        // Also monitor the parent.
        if (doc != (this.root && this.root.ownerDocument || document)) {
            var frame = getFrameElement(doc);
            if (frame) {
                this._monitorIntersections(frame.ownerDocument);
            }
        }
    };

    /**
     * Stops polling for intersection changes.
     * @param {!Document} doc
     * @private
     */
    IntersectionObserver.prototype._unmonitorIntersections = function (doc) {
        var index = this._monitoringDocuments.indexOf(doc);
        if (index == -1) {
            return;
        }

        var rootDoc = (this.root && this.root.ownerDocument || document);

        // Check if any dependent targets are still remaining.
        var hasDependentTargets =
            this._observationTargets.some(function (item) {
                var itemDoc = item.element.ownerDocument;
                // Target is in this context.
                if (itemDoc == doc) {
                    return true;
                }
                // Target is nested in this context.
                while (itemDoc && itemDoc != rootDoc) {
                    var frame = getFrameElement(itemDoc);
                    itemDoc = frame && frame.ownerDocument;
                    if (itemDoc == doc) {
                        return true;
                    }
                }
                return false;
            });
        if (hasDependentTargets) {
            return;
        }

        // Unsubscribe.
        var unsubscribe = this._monitoringUnsubscribes[index];
        this._monitoringDocuments.splice(index, 1);
        this._monitoringUnsubscribes.splice(index, 1);
        unsubscribe();

        // Also unmonitor the parent.
        if (doc != rootDoc) {
            var frame = getFrameElement(doc);
            if (frame) {
                this._unmonitorIntersections(frame.ownerDocument);
            }
        }
    };

    /**
     * Stops polling for intersection changes.
     * @param {!Document} doc
     * @private
     */
    IntersectionObserver.prototype._unmonitorAllIntersections = function () {
        var unsubscribes = this._monitoringUnsubscribes.slice(0);
        this._monitoringDocuments.length = 0;
        this._monitoringUnsubscribes.length = 0;
        for (var i = 0; i < unsubscribes.length; i++) {
            unsubscribes[i]();
        }
    };

    /**
     * Scans each observation target for intersection changes and adds them
     * to the internal entries queue. If new entries are found, it
     * schedules the callback to be invoked.
     * @private
     */
    IntersectionObserver.prototype._checkForIntersections = function () {
        if (!this.root && crossOriginUpdater && !crossOriginRect) {
            // Cross origin monitoring, but no initial data available yet.
            return;
        }

        var rootIsInDom = this._rootIsInDom();
        var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();

        this._observationTargets.forEach(function (item) {
            var target = item.element;
            var targetRect = getBoundingClientRect(target);
            var rootContainsTarget = this._rootContainsTarget(target);
            var oldEntry = item.entry;
            var intersectionRect = rootIsInDom && rootContainsTarget &&
                this._computeTargetAndRootIntersection(target, targetRect,
                    rootRect);

            var newEntry = item.entry = new IntersectionObserverEntry({
                time: now(),
                target: target,
                boundingClientRect: targetRect,
                rootBounds: crossOriginUpdater && !this.root ? null : rootRect,
                intersectionRect: intersectionRect,
            });

            if (!oldEntry) {
                this._queuedEntries.push(newEntry);
            } else if (rootIsInDom && rootContainsTarget) {
                // If the new entry intersection ratio has crossed any of the
                // thresholds, add a new entry.
                if (this._hasCrossedThreshold(oldEntry, newEntry)) {
                    this._queuedEntries.push(newEntry);
                }
            } else {
                // If the root is not in the DOM or target is not contained within
                // root but the previous entry for this target had an intersection,
                // add a new record indicating removal.
                if (oldEntry && oldEntry.isIntersecting) {
                    this._queuedEntries.push(newEntry);
                }
            }
        }, this);

        if (this._queuedEntries.length) {
            this._callback(this.takeRecords(), this);
        }
    };

    /**
     * Accepts a target and root rect computes the intersection between then
     * following the algorithm in the spec.
     * TODO(philipwalton): at this time clip-path is not considered.
     * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo
     * @param {Element} target The target DOM element
     * @param {Object} targetRect The bounding rect of the target.
     * @param {Object} rootRect The bounding rect of the root after being
     *     expanded by the rootMargin value.
     * @return {?Object} The final intersection rect object or undefined if no
     *     intersection is found.
     * @private
     */
    IntersectionObserver.prototype._computeTargetAndRootIntersection =
        function (target, targetRect, rootRect) {
            // If the element isn't displayed, an intersection can't happen.
            if (window.getComputedStyle(target).display == 'none') return;

            var intersectionRect = targetRect;
            var parent = getParentNode(target);
            var atRoot = false;

            while (!atRoot && parent) {
                var parentRect = null;
                var parentComputedStyle = parent.nodeType == 1 ?
                    window.getComputedStyle(parent) : {};

                // If the parent isn't displayed, an intersection can't happen.
                if (parentComputedStyle.display == 'none') return null;

                if (parent == this.root || parent.nodeType == /* DOCUMENT */9) {
                    atRoot = true;
                    if (parent == this.root || parent == document) {
                        if (crossOriginUpdater && !this.root) {
                            if (!crossOriginRect ||
                                crossOriginRect.width == 0 &&
                                crossOriginRect.height == 0) {
                                // A 0-size cross-origin intersection means no-intersection.
                                parent = null;
                                parentRect = null;
                                intersectionRect = null;
                            } else {
                                parentRect = crossOriginRect;
                            }
                        } else {
                            parentRect = rootRect;
                        }
                    } else {
                        // Check if there's a frame that can be navigated to.
                        var frame = getParentNode(parent);
                        var frameRect = frame && getBoundingClientRect(frame);
                        var frameIntersect =
                            frame &&
                            this._computeTargetAndRootIntersection(frame,
                                frameRect, rootRect);
                        if (frameRect && frameIntersect) {
                            parent = frame;
                            parentRect = convertFromParentRect(frameRect,
                                frameIntersect);
                        } else {
                            parent = null;
                            intersectionRect = null;
                        }
                    }
                } else {
                    // If the element has a non-visible overflow, and it's not the <body>
                    // or <html> element, update the intersection rect.
                    // Note: <body> and <html> cannot be clipped to a rect that's not also
                    // the document rect, so no need to compute a new intersection.
                    var doc = parent.ownerDocument;
                    if (parent != doc.body &&
                        parent != doc.documentElement &&
                        parentComputedStyle.overflow != 'visible') {
                        parentRect = getBoundingClientRect(parent);
                    }
                }

                // If either of the above conditionals set a new parentRect,
                // calculate new intersection data.
                if (parentRect) {
                    intersectionRect = computeRectIntersection(parentRect,
                        intersectionRect);
                }
                if (!intersectionRect) break;
                parent = parent && getParentNode(parent);
            }
            return intersectionRect;
        };

    /**
     * Returns the root rect after being expanded by the rootMargin value.
     * @return {ClientRect} The expanded root rect.
     * @private
     */
    IntersectionObserver.prototype._getRootRect = function () {
        var rootRect;
        if (this.root) {
            rootRect = getBoundingClientRect(this.root);
        } else {
            // Use <html>/<body> instead of window since scroll bars affect size.
            var html = document.documentElement;
            var body = document.body;
            rootRect = {
                top: 0,
                left: 0,
                right: html.clientWidth || body.clientWidth,
                width: html.clientWidth || body.clientWidth,
                bottom: html.clientHeight || body.clientHeight,
                height: html.clientHeight || body.clientHeight,
            };
        }
        return this._expandRectByRootMargin(rootRect);
    };

    /**
     * Accepts a rect and expands it by the rootMargin value.
     * @param {DOMRect|ClientRect} rect The rect object to expand.
     * @return {ClientRect} The expanded rect.
     * @private
     */
    IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {
        var margins = this._rootMarginValues.map(function (margin, i) {
            return margin.unit == 'px' ? margin.value :
                margin.value * (i % 2 ? rect.width : rect.height) / 100;
        });
        var newRect = {
            top: rect.top - margins[0],
            right: rect.right + margins[1],
            bottom: rect.bottom + margins[2],
            left: rect.left - margins[3],
        };
        newRect.width = newRect.right - newRect.left;
        newRect.height = newRect.bottom - newRect.top;

        return newRect;
    };

    /**
     * Accepts an old and new entry and returns true if at least one of the
     * threshold values has been crossed.
     * @param {?IntersectionObserverEntry} oldEntry The previous entry for a
     *    particular target element or null if no previous entry exists.
     * @param {IntersectionObserverEntry} newEntry The current entry for a
     *    particular target element.
     * @return {boolean} Returns true if a any threshold has been crossed.
     * @private
     */
    IntersectionObserver.prototype._hasCrossedThreshold =
        function (oldEntry, newEntry) {

            // To make comparing easier, an entry that has a ratio of 0
            // but does not actually intersect is given a value of -1
            var oldRatio = oldEntry && oldEntry.isIntersecting ?
                oldEntry.intersectionRatio || 0 : -1;
            var newRatio = newEntry.isIntersecting ?
                newEntry.intersectionRatio || 0 : -1;

            // Ignore unchanged ratios
            if (oldRatio === newRatio) return;

            for (var i = 0; i < this.thresholds.length; i++) {
                var threshold = this.thresholds[i];

                // Return true if an entry matches a threshold or if the new ratio
                // and the old ratio are on the opposite sides of a threshold.
                if (threshold == oldRatio || threshold == newRatio ||
                    threshold < oldRatio !== threshold < newRatio) {
                    return true;
                }
            }
        };

    /**
     * Returns whether or not the root element is an element and is in the DOM.
     * @return {boolean} True if the root element is an element and is in the DOM.
     * @private
     */
    IntersectionObserver.prototype._rootIsInDom = function () {
        return !this.root || containsDeep(document, this.root);
    };

    /**
     * Returns whether or not the target element is a child of root.
     * @param {Element} target The target element to check.
     * @return {boolean} True if the target element is a child of root.
     * @private
     */
    IntersectionObserver.prototype._rootContainsTarget = function (target) {
        return containsDeep(this.root || document, target) &&
            (!this.root || this.root.ownerDocument == target.ownerDocument);
    };

    /**
     * Adds the instance to the global IntersectionObserver registry if it isn't
     * already present.
     * @private
     */
    IntersectionObserver.prototype._registerInstance = function () {
        if (registry.indexOf(this) < 0) {
            registry.push(this);
        }
    };

    /**
     * Removes the instance from the global IntersectionObserver registry.
     * @private
     */
    IntersectionObserver.prototype._unregisterInstance = function () {
        var index = registry.indexOf(this);
        if (index != -1) registry.splice(index, 1);
    };

    /**
     * Returns the result of the performance.now() method or null in browsers
     * that don't support the API.
     * @return {number} The elapsed time since the page was requested.
     */
    function now () {
        return window.performance && performance.now && performance.now();
    }

    /**
     * Throttles a function and delays its execution, so it's only called at most
     * once within a given time period.
     * @param {Function} fn The function to throttle.
     * @param {number} timeout The amount of time that must pass before the
     *     function can be called again.
     * @return {Function} The throttled function.
     */
    function throttle (fn, timeout) {
        var timer = null;
        return function () {
            if (!timer) {
                timer = setTimeout(function () {
                    fn();
                    timer = null;
                }, timeout);
            }
        };
    }

    /**
     * Adds an event handler to a DOM node ensuring cross-browser compatibility.
     * @param {Node} node The DOM node to add the event handler to.
     * @param {string} event The event name.
     * @param {Function} fn The event handler to add.
     * @param {boolean} opt_useCapture Optionally adds the even to the capture
     *     phase. Note: this only works in modern browsers.
     */
    function addEvent (node, event, fn, opt_useCapture) {
        if (typeof node.addEventListener == 'function') {
            node.addEventListener(event, fn, opt_useCapture || false);
        } else if (typeof node.attachEvent == 'function') {
            node.attachEvent('on' + event, fn);
        }
    }

    /**
     * Removes a previously added event handler from a DOM node.
     * @param {Node} node The DOM node to remove the event handler from.
     * @param {string} event The event name.
     * @param {Function} fn The event handler to remove.
     * @param {boolean} opt_useCapture If the event handler was added with this
     *     flag set to true, it should be set to true here in order to remove it.
     */
    function removeEvent (node, event, fn, opt_useCapture) {
        if (typeof node.removeEventListener == 'function') {
            node.removeEventListener(event, fn, opt_useCapture || false);
        } else if (typeof node.detatchEvent == 'function') {
            node.detatchEvent('on' + event, fn);
        }
    }

    /**
     * Returns the intersection between two rect objects.
     * @param {Object} rect1 The first rect.
     * @param {Object} rect2 The second rect.
     * @return {?Object|?ClientRect} The intersection rect or undefined if no
     *     intersection is found.
     */
    function computeRectIntersection (rect1, rect2) {
        var top = Math.max(rect1.top, rect2.top);
        var bottom = Math.min(rect1.bottom, rect2.bottom);
        var left = Math.max(rect1.left, rect2.left);
        var right = Math.min(rect1.right, rect2.right);
        var width = right - left;
        var height = bottom - top;

        return (width >= 0 && height >= 0) && {
            top: top,
            bottom: bottom,
            left: left,
            right: right,
            width: width,
            height: height,
        } || null;
    }

    /**
     * Shims the native getBoundingClientRect for compatibility with older IE.
     * @param {Element} el The element whose bounding rect to get.
     * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.
     */
    function getBoundingClientRect (el) {
        var rect;

        try {
            rect = el.getBoundingClientRect();
        } catch (err) {
            // Ignore Windows 7 IE11 "Unspecified error"
            // https://github.com/w3c/IntersectionObserver/pull/205
        }

        if (!rect) return getEmptyRect();

        // Older IE
        if (!(rect.width && rect.height)) {
            rect = {
                top: rect.top,
                right: rect.right,
                bottom: rect.bottom,
                left: rect.left,
                width: rect.right - rect.left,
                height: rect.bottom - rect.top,
            };
        }
        return rect;
    }

    /**
     * Returns an empty rect object. An empty rect is returned when an element
     * is not in the DOM.
     * @return {ClientRect} The empty rect.
     */
    function getEmptyRect () {
        return {
            top: 0,
            bottom: 0,
            left: 0,
            right: 0,
            width: 0,
            height: 0,
        };
    }

    /**
     * Ensure that the result has all of the necessary fields of the DOMRect.
     * Specifically this ensures that `x` and `y` fields are set.
     *
     * @param {?DOMRect|?ClientRect} rect
     * @return {?DOMRect}
     */
    function ensureDOMRect (rect) {
        // A `DOMRect` object has `x` and `y` fields.
        if (!rect || 'x' in rect) {
            return rect;
        }
        // A IE's `ClientRect` type does not have `x` and `y`. The same is the case
        // for internally calculated Rect objects. For the purposes of
        // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`
        // for these fields.
        return {
            top: rect.top,
            y: rect.top,
            bottom: rect.bottom,
            left: rect.left,
            x: rect.left,
            right: rect.right,
            width: rect.width,
            height: rect.height,
        };
    }

    /**
     * Inverts the intersection and bounding rect from the parent (frame) BCR to
     * the local BCR space.
     * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.
     * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.
     * @return {ClientRect} The local root bounding rect for the parent's children.
     */
    function convertFromParentRect (
        parentBoundingRect, parentIntersectionRect) {
        var top = parentIntersectionRect.top - parentBoundingRect.top;
        var left = parentIntersectionRect.left - parentBoundingRect.left;
        return {
            top: top,
            left: left,
            height: parentIntersectionRect.height,
            width: parentIntersectionRect.width,
            bottom: top + parentIntersectionRect.height,
            right: left + parentIntersectionRect.width,
        };
    }

    /**
     * Checks to see if a parent element contains a child element (including inside
     * shadow DOM).
     * @param {Node} parent The parent element.
     * @param {Node} child The child element.
     * @return {boolean} True if the parent node contains the child node.
     */
    function containsDeep (parent, child) {
        var node = child;
        while (node) {
            if (node == parent) return true;

            node = getParentNode(node);
        }
        return false;
    }

    /**
     * Gets the parent node of an element or its host element if the parent node
     * is a shadow root.
     * @param {Node} node The node whose parent to get.
     * @return {Node|null} The parent node or null if no parent exists.
     */
    function getParentNode (node) {
        var parent = node.parentNode;

        if (node.nodeType == /* DOCUMENT */ 9 && node != document) {
            // If this node is a document node, look for the embedding frame.
            return getFrameElement(node);
        }

        if (parent && parent.nodeType == 11 && parent.host) {
            // If the parent is a shadow root, return the host element.
            return parent.host;
        }

        if (parent && parent.assignedSlot) {
            // If the parent is distributed in a <slot>, return the parent of a slot.
            return parent.assignedSlot.parentNode;
        }

        return parent;
    }

    /**
     * Returns the embedding frame element, if any.
     * @param {!Document} doc
     * @return {!Element}
     */
    function getFrameElement (doc) {
        try {
            return doc.defaultView && doc.defaultView.frameElement || null;
        } catch (e) {
            // Ignore the error.
            return null;
        }
    }

// Exposes the constructors globally.
    window.IntersectionObserver = IntersectionObserver;
    window.IntersectionObserverEntry = IntersectionObserverEntry;

}());


Spamworldpro Mini