"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var _a;
/**
 * Contestants to keep inner configuration on one place
 */
class Constants {
}
/** @type {boolean} Enable/disable debug logging - set to false in production */
Constants.DEBUG_MODE_ENABLED = true;
Constants.URL_CHANGE_CHECKER_PERIOD_IN_SECONDS = 1;
Constants.WEBSITE_SETTINGS_LOCAL_STORAGE_EXPIRATION_IN_SECONDS = 3 * 60 * 60;
Constants.NOTIFICATIONS_CLOSED_BY_USER_DURATION_IN_SECONDS = 24 * 60 * 60;
/** This defines for how long is activity information keep. It's important to let here 1 day bcs we are counting visitors per days */
Constants.DAILY_ACTIVITY_EXPIRATION_IN_SECONDS = 24 * 60 * 60;
/** How often is checked if user still has its daily activity id */
Constants.DAILY_ACTIVITY_WATCH_PERIOD_IN_SECONDS = 60 * 5;
Constants.ACTIVITY_ID_EXPIRATION_IN_SECONDS = 365 * 24 * 60 * 60;
Constants.ACTIVITY_ID_WATCH_PERIOD_IN_SECONDS = 24 * 60 * 60;
Constants.NOTIFICATION_INVALID_STATE_DURATION_IN_SECONDS = 15 * 60;
Constants.NOTIFICATION_ALREADY_SEEN_STATE_DURATION_IN_SECONDS = 12 * 60 * 60;
Constants.REVIEWS_STORAGE_EXPIRATION_IN_SECONDS = 60 * 60 * 24 * 3;
/** @type {string} unique string used to create unique classes, ids and so on */
Constants.UNIQUE = 'xh1dse454';
/**
 * Debug logging helper - only logs when DEBUG_MODE_ENABLED is true
 */
function debugLog(...args) {
    if (Constants.DEBUG_MODE_ENABLED) {
        console.log(...args);
    }
}
function debugError(...args) {
    if (Constants.DEBUG_MODE_ENABLED) {
        console.error(...args);
    }
}
//region App stability
const AppStates = {
    Valid: 'valid',
    FatalError: 'fatal_error',
    Error: 'error',
    Unhealthy: 'unhealthy'
};
let APP_STATE = AppStates.Valid;
function IsAppRunning() {
    if (APP_STATE === AppStates.Valid || APP_STATE === AppStates.Unhealthy) {
        return true;
    }
    return false;
}
//endregion
//region Initial run
/**
 * Class ideally to be extended to provide all other parts of code one way to logging
 */
class Logger {
    /**
     * @param {Config} Configuration
     */
    constructor(config) {
        /**
         * Classic information log
         * @param args just use like classing console.log
         */
        this.log_info = (...args) => {
            if (this.config.debugMode)
                console.log(...args);
        };
        /**
         * Classic error log
         * @param args just use like classing console.error
         */
        this.log_error = (...args) => {
            if (this.config.debugMode)
                console.error(...args);
        };
        this.config = config;
    }
}
/**
 * Main part of script, which is centre of all functionalities. Register, load and run all parts of pixel.
 */
class Main extends Logger {
    /**
     * @param {Configuration} config
     */
    constructor(config) {
        super(config);
        // Create all important dependencies
        this.api = new ApiGate(this.config);
        this.urlChecker = new UrlChecker(location.href);
        this.notificationsManager = new NotificationsManager(this.api, this.config, this.urlChecker);
        // Check if debug mode is active
        if (!CookiesManager.checkCookie(CookiesManager.Name.DEBUG_MODE))
            CookiesManager.setCookie(CookiesManager.Name.DEBUG_MODE, this.config.debugMode);
        else {
            this.config.debugMode = Utils.strToBool(CookiesManager.getCookie(CookiesManager.Name.DEBUG_MODE));
        }
        // Print info about successful loading and show configuration into console for dev
        this.log_info('Pixel script loaded');
        this.log_info(' - preview mode: ', this.config.previewMode);
        this.log_info(' - website id: ', this.config.websiteId);
        this.log_info(' - backend url: ', this.config.backendUrl);
        this.log_info(' - mobile mode: ', this.config.mobileMode);
        this.log_info(' - debug mode: ', this.config.debugMode);
        // Add callback which will be called with each url address change
        this.log_info('Registering callbacks...');
        this.urlChecker.registerOnChangeCallback(this.api.decrease_credit.bind(this.api));
        this.log_info('Callbacks registered');
    }
    /**
     * This is core method to start all watchers load all important data and make everything functional
     * @returns {Promise<void>} end when everything is started, app still should be in failed state but bcs of async it will be shown later
     */
    run() {
        return __awaiter(this, void 0, void 0, function* () {
            let scriptBeginDateTime = new Date();
            debugLog('[Script Init] Starting pixel script');
            debugLog('[Script Init] Device detection - Mobile mode:', this.config.mobileMode);
            debugLog('[Script Init] Configuration:', {
                websiteId: this.config.websiteId,
                backendUrl: this.config.backendUrl,
                debugMode: this.config.debugMode,
                previewMode: this.config.previewMode
            });
            if (this.config.previewMode) {
                this.log_info('Pixel is in preview mode. Run method stopped here.');
                return;
            }
            // Load notifications data, recalculate credit and run base watchers
            let notificationsStacks;
            try {
                debugLog('[Script Init] Starting initialization tasks');
                yield this.api.decrease_credit();
                yield this.runDailyUserActivityWatch();
                yield this.runActivityIdWatch();
                shoptetCouponCodeValidator();
                debugLog('[Script Init] Loading notifications settings');
                notificationsStacks = yield this.notificationsManager.loadAndConvertNotificationsSettings();
                if (!notificationsStacks) {
                    debugError('[Script Init] No data were loaded for notifications');
                    this.log_error('No data were loaded for notifications');
                    APP_STATE = AppStates.FatalError;
                    throw Error('Loading of notifications configuration failed');
                }
                debugLog('[Script Init] Notifications loaded successfully:', notificationsStacks);
            }
            catch (error) {
                debugError('[Script Init] Initialization failed:', error);
                this.log_error('Something failed while basic requests were sent (credits manipulation, daily user activity, activity id, notifications data): ', error);
                APP_STATE = AppStates.FatalError;
                throw Error('Any of core functionalities failed');
            }
            // Register log notifications
            if (notificationsStacks.logNotifications.length > 0) {
                this.notificationsManager
                    .registerLogNotifications(notificationsStacks.logNotifications)
                    .then((r) => {
                    this.log_info('Register log notifications success');
                })
                    .catch((r) => {
                    APP_STATE = AppStates.Unhealthy;
                    this.log_error('Register log notifications failed ', r);
                });
            }
            // Register and run show notifications //
            // Check if notifications are stopped by user
            const isNotificationLoopDisabled = CookiesManager.isNotificationLoopClosedByUser();
            if (isNotificationLoopDisabled) {
                this.log_info('Notifications are stopped by customer bcs of close button click');
                return;
            }
            // Check if there are any notifications
            if (notificationsStacks.showNotifications.length == 0) {
                this.log_info('There are no notifications to show');
                return;
            }
            // Run notifications presenter - show notifications to user
            this.notificationsManager
                .runNotificationsPresenter(notificationsStacks.showNotifications, notificationsStacks.language, scriptBeginDateTime)
                .then((r) => {
                this.log_info('Notifications presenter loop success');
            })
                .catch((r) => {
                this.log_error('Notifications presenter failed ', r);
                APP_STATE = AppStates.Unhealthy;
            });
        });
    }
    /**
     * Run periodic job to check if user was in actual day active (for daily statistics)
     * @returns {Promise<void>}
     */
    runDailyUserActivityWatch() {
        return __awaiter(this, void 0, void 0, function* () {
            if (!IsAppRunning()) {
                return;
            }
            let visitId = CookiesManager.getCookie(CookiesManager.Name.DAILY_ACTIVITY);
            if (!visitId) {
                visitId = Utils.createUuid();
                CookiesManager.setCookie(CookiesManager.Name.DAILY_ACTIVITY, visitId, Constants.DAILY_ACTIVITY_EXPIRATION_IN_SECONDS);
                const isSuccess = yield this.api.sendDailyActivity(visitId);
                const watcher = this.runDailyUserActivityWatch;
                const self = this;
                setTimeout(function () {
                    return __awaiter(this, void 0, void 0, function* () {
                        watcher()
                            .then((r) => {
                            self.log_info('Daily user activity success');
                        })
                            .catch((r) => {
                            self.log_error('Daily user activity failed: ', r);
                            APP_STATE = AppStates.Unhealthy;
                        });
                    });
                }, 1000 * Constants.DAILY_ACTIVITY_WATCH_PERIOD_IN_SECONDS);
            }
        });
    }
    /**
     * Run periodic job to check if user is identified. Generate for each user (browser) id which defines them for purpose of orders and registrations stats.
     * @returns {Promise<void>}
     */
    runActivityIdWatch() {
        return __awaiter(this, void 0, void 0, function* () {
            if (!IsAppRunning()) {
                return;
            }
            CookiesManager.getOrCreateActivityId();
            const watcher = this.runActivityIdWatch;
            const self = this;
            setTimeout(function () {
                return __awaiter(this, void 0, void 0, function* () {
                    yield watcher()
                        .then((r) => {
                        self.log_info('Activity id watch success');
                    })
                        .catch((r) => {
                        self.log_error('Activity id watch failed ', r);
                        APP_STATE = AppStates.Error;
                    });
                });
            }, 1000 * Constants.ACTIVITY_ID_WATCH_PERIOD_IN_SECONDS);
        });
    }
}
//endregion
function onCloseButtonClick() {
    CookiesManager.setNotificationLoopClosedByUser();
    const mainNotificationDiv = document.getElementById(`${Constants.UNIQUE}-main-div-id`);
    if (mainNotificationDiv) {
        mainNotificationDiv.remove();
    }
}
function getParamsFromPosition(_position) {
    if (_position === 'bottomLeft') {
        return {
            top: 'auto',
            right: 'auto',
            bottom: '10px',
            left: '10px'
        };
    }
    if (_position === 'bottomRight') {
        return {
            top: 'auto',
            right: '10px',
            bottom: '10px',
            left: 'auto'
        };
    }
    if (_position === 'topLeft') {
        return {
            top: '10px',
            right: 'auto',
            bottom: 'auto',
            left: '10px'
        };
    }
    if (_position === 'topRight') {
        return {
            top: '10px',
            right: '10px',
            bottom: 'auto',
            left: 'auto'
        };
    }
    if (_position === 'top') {
        return {
            top: '10px',
            right: '-10px',
            bottom: 'auto',
            left: '-10px'
        };
    }
    if (_position === 'bottom') {
        return {
            top: 'auto',
            right: '-10px',
            bottom: '10px',
            left: '-10px'
        };
    }
}
/**
 * The getSubmits function is used to obtain all form submit buttons or elements with specific on the page and determine if they are from UPgates forms or not.
 * The reason for this distinction is that UPgates forms have buttons that are not of the submit type, but have the attribute name="formSendButton".
 * @returns {Element[]}
 */
const getSubmits = () => {
    const idElements = document.querySelectorAll('#pixel_script_7102af82-6d23-4972-97f6-26f4481d9476');
    if (idElements.length > 0) {
        return [...idElements];
    }
    const metaElement = document.querySelector('meta[name="web_author"]');
    // If there is a meta element with the attribute name="web_author" on the page and its value is "UPgates", then all buttons with the attribute name="formSendButton" are obtained.
    if (metaElement && metaElement.content === 'UPgates') {
        const formSendButtons = document.querySelectorAll('button[name="formSendButton"]');
        return [...formSendButtons];
    }
    // Else all buttons with the type attribute set to "submit" are obtained.
    const submits = document.querySelectorAll('input[type=submit]');
    const buttonsSubmits = document.querySelectorAll('button[type="submit"]');
    const withSubmits = [...submits, ...buttonsSubmits];
    if (withSubmits.length > 0) {
        return withSubmits;
    }
    // Else all buttons are obtained.
    const anyButtons = document.querySelectorAll('button');
    return [...anyButtons];
};
const callCustomFunction = (fun, att, language) => {
    fun(decodeURIComponent(att), language);
};
function getNotificationPreview(notificationSettings, type, customerName, text, visitCount, language, summaryCount, maxLastDays, reviewText, rating, addLink, linkText, linkAsButton, animationSpeed, discountCouponName, discountCouponValue, discountCouponType, discountCouponAppliableTo, uniqueStyleIdentifier) {
    return __awaiter(this, void 0, void 0, function* () {
        let notificationsManager = new NotificationsManager();
        const animation = animationSpeed !== undefined
            ? {
                animationSpeed: animationSpeed + 1,
                nextNotificationDelaySeconds: 1,
                position: 'bottomLeft',
                showAfterSeconds: 1,
                showDurationSeconds: 100000000
            }
            : {};
        const result = yield notificationsManager.showNotification(Object.assign(Object.assign({}, notificationSettings), { settings: Object.assign(Object.assign({ maxLastDays: maxLastDays, rating: rating, customerName: customerName, text: text }, notificationSettings.settings), { type: type }) }), {
            name: customerName,
            productName: text,
            imageURL: linkText,
            text: text,
            summary: reviewText,
            review: { positiveComment: reviewText },
            addLink: addLink,
            discountCouponName: discountCouponName,
            discountCouponValue: discountCouponValue,
            discountCouponType: discountCouponType,
            discountCouponAppliableTo: discountCouponAppliableTo,
            linkAsButton: linkAsButton,
            openLinkInNewWindow: true,
            linkText: linkText,
            timestamp: new Date().getTime(),
            link: linkText,
            registrationCount: summaryCount,
            maxLastDays: maxLastDays,
            rating: rating,
            customerName: customerName,
            visitCount: visitCount || summaryCount,
            orderCount: summaryCount || visitCount
        }, animation, language, true, uniqueStyleIdentifier ? 'data-' + uniqueStyleIdentifier : undefined);
        return result;
    });
}
//region Core modules
class NotificationsManager extends Logger {
    /**
     * @param api {ApiGate}
     * @param config {Configuration}
     */
    constructor(api, config, urlChecker) {
        super(config);
        this.api = api;
        this.urlChecker = urlChecker;
    }
    /**
     * Take log notifications and process them to register actions on buttons
     * @param {Array<LogNotification>} logNotifications
     * @returns {Promise<void>}
     */
    registerLogNotifications(logNotifications) {
        return __awaiter(this, void 0, void 0, function* () {
            /** @type {Array.<LogNotification>} */
            let activeLogNotifications = [];
            logNotifications.forEach((logNotification) => {
                if (logNotification.isActiveForUrl(this.urlChecker.actualUrl)) {
                    activeLogNotifications.push(logNotification);
                    this.log_info('New active log notification registered: ', logNotification);
                }
            });
            this.log_info(activeLogNotifications.length, ' active log notifications registered');
            if (activeLogNotifications.length > 0) {
                this.log_info('Searching for buttons');
                const allSubmits = getSubmits();
                this.log_info('Found buttons: ', allSubmits);
                const api = this.api;
                const log_info = this.log_info;
                allSubmits.forEach((b) => {
                    const onSubmitClick = (e) => __awaiter(this, void 0, void 0, function* () {
                        e.preventDefault();
                        const inputs = Array.from(document.querySelectorAll('input[type=text]'));
                        const allInputsValues = inputs.map((i) => { var _b; return (_b = i.value) !== null && _b !== void 0 ? _b : ''; });
                        log_info('All inputs values: ', allInputsValues);
                        activeLogNotifications.forEach((logNotification) => {
                            const notificationType = logNotification.settings.type === 'lastOrders' ? 'order' : 'registration';
                            log_info('Sending activity for notification: ', logNotification.settings.name);
                            api.sendActivity(notificationType, logNotification.campaign.id, allInputsValues);
                            log_info('Activity successfully sent');
                        });
                        b.removeEventListener('click', onSubmitClick, { once: true });
                        e.currentTarget.click();
                    });
                    b.addEventListener('click', onSubmitClick);
                });
            }
        });
    }
    /**
     *  Loop over all notifications, take data for them and display them to user
     * @param {Array<ShowNotification>} showNotifications List of all notifications configured to be shown
     * @param {string} language configured language for texts
     * @param {Date} lastNotificationFinishedAt When the last notification was shown. First run = start of pixel script Main.run()
     * @returns {Promise<void>}
     */
    runNotificationsPresenter(showNotifications_1, language_1, lastNotificationFinishedAt_1) {
        return __awaiter(this, arguments, void 0, function* (showNotifications, language, lastNotificationFinishedAt, isFirstShow = true) {
            var _b, _c;
            debugLog('[Presenter] Starting notification presenter, total:', showNotifications.length);
            debugLog('[Presenter] First show:', isFirstShow);
            this.log_info(showNotifications.length, ' total count of show notifications');
            if (!IsAppRunning()) {
                debugLog('[Presenter] App not running, stopping presenter');
                return; // It stops the loop
            }
            let validShowNotifications = this.getValidNotifications(showNotifications);
            if (validShowNotifications.length == 0) {
                debugLog('[Presenter] No valid notifications, waiting 4 minutes before retry');
                this.log_info('There are no valid notification to be shown');
                yield Utils.sleep(4 * 60 * 1000);
                this.runNotificationsPresenter(showNotifications, language, lastNotificationFinishedAt, false)
                    .then((r) => {
                    this.log_info('Notifications presenter loop success');
                })
                    .catch((r) => {
                    debugError('[Presenter] Loop failed:', r);
                    this.log_error('Notifications presented loop failed: ', r);
                    APP_STATE = AppStates.Error;
                });
                return;
            }
            this.log_info(validShowNotifications.length, '  count of valid show notifications');
            Utils.shuffleArray(validShowNotifications);
            debugLog('[Presenter] Notifications shuffled');
            let shownNotifications = 0;
            for (let notification of validShowNotifications) {
                debugLog('[Presenter] Processing notification:', notification.settings.id, notification.settings.type);
                this.log_info('Processing notification: ', notification);
                // IS notification visible for actual url?
                if (!this.urlChecker.isActualUrlInFilter(notification.campaign.urlFilter)) {
                    debugLog('[Presenter] Notification not visible on current URL:', notification.settings.id);
                    this.log_info('- notification is not visible on that url');
                    continue;
                }
                debugLog('[Presenter] Notification passed URL filter check:', notification.settings.id);
                try {
                    debugLog('[Presenter] Fetching notification data:', notification.settings.id);
                    let notificationData = yield this.getNotificationData(notification);
                    if (!notificationData || notificationData === null) {
                        debugError('[Presenter] Notification data is null:', notification.settings.id);
                        throw new Error('Notification data is null (Server returned error response)');
                    }
                    debugLog('[Presenter] Notification data fetched successfully:', notification.settings.id);
                    const visualSettingDependsOnDevice = this.config.mobileMode
                        ? notification.campaign.visualPhoneSettings
                        : notification.campaign.visualPcSettings;
                    const showDelay = Math.abs((isFirstShow
                        ? (_b = visualSettingDependsOnDevice.showAfterSeconds) !== null && _b !== void 0 ? _b : 0
                        : (_c = visualSettingDependsOnDevice.nextNotificationDelaySeconds) !== null && _c !== void 0 ? _c : 0) *
                        1000 -
                        (new Date() - lastNotificationFinishedAt));
                    debugLog('[Presenter] Show delay calculated:', showDelay, 'ms');
                    this.log_info('notification will be shown in ', showDelay, ' milliseconds');
                    shownNotifications++;
                    if (showDelay > 0) {
                        debugLog('[Presenter] Waiting for delay:', showDelay, 'ms');
                        yield Utils.sleep(showDelay);
                    }
                    debugLog('[Presenter] Showing notification:', notification.settings.id);
                    yield this.showNotification(notification, notificationData, visualSettingDependsOnDevice, language, false, undefined);
                    debugLog('[Presenter] Notification shown successfully:', notification.settings.id);
                    lastNotificationFinishedAt = new Date();
                    isFirstShow = false;
                    // Prevent repeat if notification is unrepeatable
                    if (!notification.settings.repeatNotification) {
                        CookiesManager.setNotificationIsAlreadySeen(notification.settings.id);
                    }
                }
                catch (error) {
                    debugError('[Presenter] Error processing notification:', notification.settings.id, error);
                    CookiesManager.setNotificationAsInvalid(notification.settings.id);
                    // TODO: should be great to identify if trouble is fatal or just missing enough data for notification. For fatal change state of app.
                    this.log_error('Notification is invalid: ', error);
                }
            }
            debugLog('[Presenter] Finished processing notifications, shown:', shownNotifications);
            if (shownNotifications == 0) {
                debugLog('[Presenter] No notifications shown, waiting 10 seconds');
                yield Utils.sleep(10 * 1000);
            }
            debugLog('[Presenter] Restarting notification loop');
            this.runNotificationsPresenter(showNotifications, language, new Date(), false)
                .then((r) => {
                this.log_info('Notifications presenter loop success');
            })
                .catch((r) => {
                this.log_error('Notifications presented loop failed: ', r);
                APP_STATE = AppStates.Error;
            });
        });
    }
    /**
     *  It will convert non-general format of notifications data into general format which is ideal for rendering
     * @param {ShowNotification} notificationSettings
     * @param notificationData custom format from getNotificationData method (later maybe optimize)
     * @param {string} language
     * @returns {{note: string, iconSvg: string, header: any, message: string}|{iconSvg: string, header: string, message: string}|{note: string, iconSvg: string, header: string, message: string}|{iconSvg: string, link: ({linkAsButton: any, text: any, href, target: (string)}|null), message}|{iconSvg: string, rating: number, message: string}|{iconSvg: string, header: string, message: number}|{{imageURL: string, message: string, header: string, productURL: string}|{{imageURL: string, message: string, header: string}}|{iconSvg: string, link: ({linkAsButton: any, text: any, customButtonFunction: () => void}|null), message}}
     */
    convertNotificationDataIntoSharedForm(notificationSettings, notificationData, language) {
        var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
        switch (notificationSettings.settings.type) {
            case 'lastRegistrations':
                return {
                    header: notificationData.customerLocation
                        ? notificationData.customerName +
                            (notificationData.customerLocation.startsWith('z ')
                                ? ` ${notificationData.customerLocation.trim()}`
                                : ` (${notificationData.customerLocation.trim()})`)
                        : notificationData.customerName,
                    message: (_b = notificationSettings.settings.text) !== null && _b !== void 0 ? _b : LanguageManager.getTranslate('TextSingleRegistration', language),
                    note: LanguageManager.describeAgeInMinutesMessage(notificationData.timestamp, language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'lastOrders':
                return {
                    header: notificationData.customerLocation
                        ? notificationData.customerName +
                            (notificationData.customerLocation.startsWith('z ')
                                ? ` ${notificationData.customerLocation.trim()}`
                                : ` (${notificationData.customerLocation.trim()})`)
                        : notificationData.customerName,
                    message: (_c = notificationSettings.settings.text) !== null && _c !== void 0 ? _c : LanguageManager.getTranslate('TextSingleOrder', language),
                    note: LanguageManager.describeAgeInMinutesMessage(notificationData.timestamp, language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'actualVisitors':
                return {
                    header: `${notificationData.visitCount} ${(_d = notificationSettings.settings.text) !== null && _d !== void 0 ? _d : LanguageManager.getTranslate('TextVisitorsName', language)}`,
                    message: LanguageManager.getTranslate('TextCurrentVisitors', language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'visitorSummary':
                return {
                    header: `${notificationData.visitCount} ${(_e = notificationSettings.settings.text) !== null && _e !== void 0 ? _e : LanguageManager.getTranslate('TextPeopleName', language)}`,
                    message: LanguageManager.getTranslate('TextVisitorSummary', language),
                    note: LanguageManager.getTimeWindowHumanForm(notificationSettings.settings.maxLastDays, language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'registrationSummary':
                return {
                    header: `${notificationData.registrationCount} ${(_f = notificationSettings.settings.text) !== null && _f !== void 0 ? _f : LanguageManager.getTranslate('TextPeopleName', language)}`,
                    message: LanguageManager.getTranslate('TextRegistrationSummary', language),
                    note: LanguageManager.getTimeWindowHumanForm(notificationSettings.settings.maxLastDays, language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'orderSummary':
                return {
                    header: `${notificationData.orderCount} ${(_g = notificationSettings.settings.text) !== null && _g !== void 0 ? _g : LanguageManager.getTranslate('TextPeopleName', language)}`,
                    message: LanguageManager.getTranslate('TextOrderSummary', language),
                    note: LanguageManager.getTimeWindowHumanForm(notificationSettings.settings.maxLastDays, language),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'heureka':
                return {
                    message: LanguageManager.createReviewMessage(notificationData.summary, 90),
                    rating: Number(notificationData.totalRating * 20),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'zboziCompanyRating':
                return {
                    message: LanguageManager.createReviewMessage((_h = notificationData.review) === null || _h === void 0 ? void 0 : _h.positiveComment, 90),
                    rating: Number(notificationData.rating),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'zboziProductRating':
                return {
                    header: LanguageManager.createReviewMessage((_j = notificationData.review) === null || _j === void 0 ? void 0 : _j.positiveComments, 90),
                    message: Number(notificationData.ratingStars * 20),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'spolehlivaRecenzeShopRating':
                return {
                    message: LanguageManager.createReviewMessage((_k = notificationData.summary) !== null && _k !== void 0 ? _k : notificationData.review, 90),
                    rating: Number(notificationData.rating * 20),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'spolehlivaRecenzeProductRating':
                return {
                    message: LanguageManager.createReviewMessage((_l = notificationData.summary) !== null && _l !== void 0 ? _l : notificationData.review, 90),
                    rating: Number(notificationData.rating * 20),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'individual':
                return {
                    message: notificationData.text,
                    link: notificationData.addLink
                        ? {
                            text: notificationData.linkText,
                            href: notificationData.link,
                            target: notificationData.openLinkInNewWindow ? '_blank' : '_self',
                            linkAsButton: notificationData.linkAsButton
                        }
                        : null,
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'shoptetLastOrders':
                return {
                    header: notificationData.name,
                    message: `${LanguageManager.getTranslate('ShoptetLastOrders', language)} <a href="${notificationData.productUrl}" target="_blank" class=\'${Constants.UNIQUE}-link-text\'>${notificationData.productName}</a>`,
                    imageURL: notificationData.imageURL,
                    productURL: notificationData.productUrl
                };
            case 'shopifyLastOrders':
                return {
                    header: notificationData.name,
                    message: `${LanguageManager.getTranslate('ShopifyLastOrders', language)} <a href="${notificationData.productUrl}" target="_blank" class=\'${Constants.UNIQUE}-link-text\'>${notificationData.productName}</a>`,
                    imageURL: notificationData.imageURL,
                    productURL: notificationData.productUrl
                };
            case 'eshopRychleLastOrders':
                return {
                    header: notificationData.name,
                    message: `${LanguageManager.getTranslate('EshopRychleLastOrders', language)} <a href="${notificationData.productUrl}" target="_blank" class=\'${Constants.UNIQUE}-link-text\'>${notificationData.productName}</a>`,
                    imageURL: notificationData.imageURL,
                    productURL: notificationData.productUrl
                };
            case 'shoptetCouponCode':
                const isCouponActivated = CookiesManager.checkCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON);
                return {
                    header: isCouponActivated
                        ? LanguageManager.getOtherTranslations(language).SaleUsed
                        : LanguageManager.getOtherTranslations(language).WeHaveSale,
                    message: LanguageManager.createShoptetCouponMessage(language, notificationData.discountCouponName, notificationData.discountCouponValue, notificationData.discountCouponType, notificationData.discountCouponAppliableTo),
                    iconSvg: isCouponActivated ? IconsLibrary.checkSvg : IconsLibrary.cardGiftcardSvg,
                    link: {
                        text: isCouponActivated
                            ? LanguageManager.getOtherTranslations(language).SaleUsed
                            : LanguageManager.getOtherTranslations(language).UseSale,
                        linkAsButton: true,
                        customButtonFunction: (couponName, language) => {
                            CookiesManager.setCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON, couponName, 10000000);
                            shoptetCouponCodeValidator();
                            const headerDiv = document.getElementsByClassName(`${Constants.UNIQUE}-header`)[0];
                            const button = document.getElementsByClassName(`${Constants.UNIQUE}-link-button`)[0];
                            const iconDiv = document.getElementsByClassName(`${Constants.UNIQUE}-icon-div`)[0];
                            const icon = document.getElementsByClassName(`${Constants.UNIQUE}-icon-img`)[0];
                            if (headerDiv)
                                headerDiv.innerHTML = LanguageManager.getOtherTranslations(language).SaleUsed;
                            if (button) {
                                button.innerHTML = LanguageManager.getOtherTranslations(language).SaleUsed;
                                button.classList.remove(`${Constants.UNIQUE}-link-button`);
                                button.classList.add(`${Constants.UNIQUE}-link-button-disabled`);
                            }
                            if (iconDiv) {
                                iconDiv.classList.remove(`${Constants.UNIQUE}-icon-div`);
                                iconDiv.classList.add(`${Constants.UNIQUE}-icon-div-success`);
                            }
                            if (icon) {
                                icon.innerHTML = IconsLibrary.checkSvg;
                                icon.classList.remove(`${Constants.UNIQUE}-icon-img`);
                                icon.classList.add(`${Constants.UNIQUE}-icon-img-success`);
                            }
                        }
                    }
                };
            case 'googleReviews':
                return {
                    message: LanguageManager.createReviewMessage(notificationData.text, 90),
                    rating: Number(notificationData.rating),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
            case 'trustpilotReviews':
                let ratingPercentage = 0;
                if (notificationData.stars) {
                    ratingPercentage = notificationData.stars * 20;
                }
                else if (notificationData.rating) {
                    ratingPercentage = notificationData.rating > 5 ? notificationData.rating : notificationData.rating * 20;
                }
                return {
                    message: LanguageManager.createReviewMessage(notificationData.text || notificationData.summary, 70),
                    rating: Number(ratingPercentage),
                    iconSvg: IconsLibrary.getDefaultIconSvg(notificationSettings.settings.type)
                };
        }
    }
    /**
     * Returns random element from array
     */
    getRandomElement(arr) {
        return arr[Math.floor(Math.random() * arr.length)];
    }
    /**
     *
     * @param {string} notificationType
     */
    setReviewsToLocalStorage(notificationType, reviews) {
        LocalStorageManager.setItem(`reviews-cache-${notificationType}`, reviews, Constants.REVIEWS_STORAGE_EXPIRATION_IN_SECONDS);
    }
    /**
     *
     * @param {string} notificationType
     */
    getReviewsFromLocalStorage(notificationType) {
        return LocalStorageManager.getItem(`reviews-cache-${notificationType}`);
    }
    /**
     * Depends on type of notifications load its data
     * @param {ShowNotification} notification
     * @returns {Promise<null|any>|{linkAsButton: any, name, link, linkText: any, text, addLink: any, openLinkInNewWindow: any, customButtonFunction: any, discountCouponName: any, discountCouponValue: any, discountCouponType: any, discountCouponAppliableTo: any}}
     */
    getNotificationData(notification) {
        return __awaiter(this, void 0, void 0, function* () {
            let notificationData = undefined;
            if (notification.settings.type === 'individual' || notification.settings.type === 'shoptetCouponCode') {
                notificationData = this.createIndividualNotificationData(notification.settings);
                this.log_info('custom notification data: ', notificationData);
            }
            else if (notification.settings.type === 'heureka' ||
                notification.settings.type === 'zboziCompanyRating' ||
                notification.settings.type === 'zboziProductRating' ||
                notification.settings.type === 'spolehlivaRecenzeShopRating' ||
                notification.settings.type === 'spolehlivaRecenzeProductRating' ||
                notification.settings.type === 'googleReviews' ||
                notification.settings.type === 'trustpilotReviews') {
                const localReviews = this.getReviewsFromLocalStorage(notification.settings.type);
                this.log_info('loaded reviews from local storage: ', localReviews);
                if (localReviews && localReviews.length) {
                    const randomReview = this.getRandomElement(localReviews);
                    this.log_info('notification data from local storage: ', randomReview);
                    return randomReview;
                }
                notificationData = yield this.api.getNotificationData(notification);
                this.log_info('loaded reviews from server: ', notificationData);
                if (notificationData && (notificationData === null || notificationData === void 0 ? void 0 : notificationData.reviews) && (notificationData === null || notificationData === void 0 ? void 0 : notificationData.reviews.length)) {
                    this.setReviewsToLocalStorage(notification.settings.type, notificationData.reviews);
                    const randomReview = this.getRandomElement(notificationData.reviews);
                    this.log_info('notification data: ', randomReview);
                    return randomReview;
                }
                return null;
            }
            else {
                notificationData = yield this.api.getNotificationData(notification);
                this.log_info('notification data: ', notificationData);
            }
            return notificationData;
        });
    }
    /**
     * Filter notifications to return just valid (it means it has no previous fails in defined period of time and its not one time notification displayed in defined period of time
     * @param {Array<ShowNotification>} showNotifications
     * @returns {Array<ShowNotification>|void}
     */
    getValidNotifications(showNotifications) {
        debugLog('[Filtering] Starting notification filtering, total notifications:', showNotifications.length);
        let validShowNotifications = [];
        showNotifications.forEach((notification) => {
            debugLog('[Filtering] Checking notification:', notification.settings.id, notification.settings.type);
            const isValid = CookiesManager.getIsNotificationValid(notification.settings.id);
            if (!isValid) {
                debugLog('[Filtering] Notification invalid (cookie check):', notification.settings.id);
                this.log_info('Notification already set as invalid ', notification.settings);
                return;
            }
            if (!notification.settings.repeatNotification) {
                const isAlreadySeen = CookiesManager.getIsNotificationAlreadySeen(notification.settings.id);
                if (isAlreadySeen) {
                    debugLog('[Filtering] Notification already seen:', notification.settings.id);
                    this.log_info('Notification already seen ', notification.settings);
                    return;
                }
            }
            const visualSettingDependsOnDevice = this.config.mobileMode
                ? notification.campaign.visualPhoneSettings
                : notification.campaign.visualPcSettings;
            debugLog('[Filtering] Device-specific visual settings:', visualSettingDependsOnDevice);
            if (!visualSettingDependsOnDevice || visualSettingDependsOnDevice.isActive === false) {
                debugLog('[Filtering] Notification not enabled for this device:', notification.settings.id);
                this.log_info('Notification is not enabled on this device ', notification.settings);
                return;
            }
            debugLog('[Filtering] Notification is valid, adding to list:', notification.settings.id);
            validShowNotifications.push(notification);
        });
        debugLog('[Filtering] Filtering complete, valid notifications:', validShowNotifications.length);
        return validShowNotifications;
    }
    /**
     * Return converted lists of notifications (log, show)
     * @returns {Promise<NotificationsStacks|boolean>}
     */
    loadAndConvertNotificationsSettings() {
        return __awaiter(this, void 0, void 0, function* () {
            if (!IsAppRunning()) {
                debugLog('[Loading] App not running, aborting load');
                return false;
            }
            debugLog('[Loading] Loading campaign settings from API');
            let campaignSettings = yield this.loadCampaignSettings();
            this.log_info('Raw campaign settings: ', campaignSettings);
            if (campaignSettings == null) {
                debugError('[Loading] No campaign settings - user has no remaining credits');
                this.log_error('User has no remaining credits (and no trial mode). Cant start notification loop. Please, subscribe or start a trial mode ');
                return false;
            }
            debugLog('[Loading] Processing campaign settings into notification stacks');
            return this.getNotificationsStacksFromCampaignSettings(campaignSettings);
        });
    }
    /**
     * Load notification configuration from api
     * @returns {Promise<any|null>} json data of notifications configuration
     */
    loadCampaignSettings() {
        return __awaiter(this, void 0, void 0, function* () {
            let campaignSettings = LocalStorageManager.getItem(LocalStorageManager.Name.WEBSITE_SETTINGS);
            this.log_info('Campaign settings loaded from local storage', campaignSettings);
            const campaignSettingsResponse = yield this.api.fetchCampaignSettings();
            this.log_info('Campaign settings loaded from api', campaignSettings);
            if (campaignSettingsResponse === null)
                return null;
            LocalStorageManager.setItem(LocalStorageManager.Name.WEBSITE_SETTINGS, campaignSettingsResponse, Constants.WEBSITE_SETTINGS_LOCAL_STORAGE_EXPIRATION_IN_SECONDS);
            this.log_info('Campaign settings saved into local storage');
            return campaignSettingsResponse;
        });
    }
    /**
     * Convert notifications configuration into object
     * @param campaignSettings
     * @returns {NotificationsStacks}
     */
    getNotificationsStacksFromCampaignSettings(campaignSettings) {
        /** @type {Array.<LogNotification>} */
        let logNotifications = [];
        /** @type {Array.<ShowNotification>} */
        let showNotifications = [];
        campaignSettings.campaigns.forEach((campaign) => {
            let campaignObj = convertJsonToCampaign(campaign);
            if (campaignObj.isActive) {
                campaignObj.notificationSettings.forEach((notification) => {
                    if (notification.isActive) {
                        if (notification.type === 'lastOrders' || notification.type === 'lastRegistrations') {
                            let logNotification = new LogNotification(campaignObj, notification);
                            logNotifications.push(logNotification);
                        }
                        let showNotification = new ShowNotification(campaignObj, notification);
                        showNotifications.push(showNotification);
                    }
                });
            }
        });
        return new NotificationsStacks(showNotifications, logNotifications, campaignSettings.language);
    }
    /**
     * Create result json data for custom notification
     * @param {DataNotificationSettings} notificationSettings
     * @returns {{linkAsButton: any, name, link, linkText: any, text, addLink: any, openLinkInNewWindow: any, customButtonFunction: any, discountCouponName: any, discountCouponValue: any, discountCouponType: any, discountCouponAppliableTo: any}}
     */
    createIndividualNotificationData(notificationSettings) {
        return {
            name: notificationSettings.name,
            text: notificationSettings.text,
            addLink: notificationSettings.addLink,
            linkAsButton: notificationSettings.linkAsButton,
            openLinkInNewWindow: notificationSettings.openLinkInNewWindow,
            linkText: notificationSettings.linkText,
            link: notificationSettings.link,
            customButtonFunction: notificationSettings.customButtonFunction,
            discountCouponName: notificationSettings.discountCouponName,
            discountCouponValue: notificationSettings.discountCouponValue,
            discountCouponType: notificationSettings.discountCouponType,
            discountCouponAppliableTo: notificationSettings.discountCouponAppliableTo
        };
    }
    /**
     *
     * @param {ShowNotification} notificationCompleteSettings
     * @param notificationData
     * @param {VisualPcPhoneSetting} visualSetting
     * @param language
     * @param forPreview
     */
    showNotification(notificationCompleteSettings, notificationData, visualSetting, language, forPreview, uniqueStyleIdentifier) {
        return __awaiter(this, void 0, void 0, function* () {
            var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
            const isNotificationLoopDisabled = CookiesManager.isNotificationLoopClosedByUser();
            if (isNotificationLoopDisabled) {
                this.log_info('Notifications are stopped by customer bcs of close button click');
                return;
            }
            const hexToRgba = (hex, alpha) => {
                hex = (hex !== null && hex !== void 0 ? hex : '').replace(/^#/, '');
                let r = parseInt(hex.substring(0, 2), 16);
                let g = parseInt(hex.substring(2, 4), 16);
                let b = parseInt(hex.substring(4, 6), 16);
                return `rgba(${Number.isNaN(r) ? 255 : r}, ${Number.isNaN(g) ? 255 : g}, ${Number.isNaN(b) ? 255 : b}, ${alpha})`;
            };
            const branding = notificationCompleteSettings.campaign.branding;
            const notificationSettings = notificationCompleteSettings.settings;
            const campaignNotificationVisualSettings = ((_b = notificationCompleteSettings.campaign) === null || _b === void 0 ? void 0 : _b.notificationVisualSettings) || {};
            const locationParams = getParamsFromPosition((_c = visualSetting === null || visualSetting === void 0 ? void 0 : visualSetting.position) !== null && _c !== void 0 ? _c : 'bottomLeft');
            let animationType = 'slideInFromBottom';
            if (visualSetting.position === 'top' || visualSetting.position === 'topLeft' || visualSetting.position === 'topRight') {
                animationType = 'slideInFromTop';
            }
            const animationInSeconds = Math.round((2 - (2 * visualSetting.animationSpeed) / 100) * 100) / 100;
            const backAnimationDelay = visualSetting.showDurationSeconds + animationInSeconds;
            const animationFromTop = `slideInFromTop ${animationInSeconds}s ease-in 0s 1, slideInFromTopBack ${animationInSeconds}s ease-in ${backAnimationDelay}s 1`;
            const animationFromBottom = `slideInFromBottom ${animationInSeconds}s ease-in 0s 1, slideInFromBottomBack ${animationInSeconds}s ease-in ${backAnimationDelay}s 1`;
            const notificationDataSh = this.convertNotificationDataIntoSharedForm(notificationCompleteSettings, notificationData, language);
            const notificationVisualSettings = notificationSettings.notificationVisualSettings;
            // Only create customWebBranding if logo properties exist (user has Premium/Unlimited)
            const customWebBranding = (branding && ('logo' in branding || 'logoText' in branding)) ? {
                logoDisplay: branding.logoDisplay,
                logo: branding.logo,
                logoBackgroundColor: branding.logoBackgroundColor,
                logoText: branding.logoText
            } : null;
            const textColor = (_e = (_d = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.textColor) !== null && _d !== void 0 ? _d : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.textColor) !== null && _e !== void 0 ? _e : branding === null || branding === void 0 ? void 0 : branding.textColor;
            const activeSize = (_g = (_f = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.activeSize) !== null && _f !== void 0 ? _f : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.activeSize) !== null && _g !== void 0 ? _g : branding === null || branding === void 0 ? void 0 : branding.activeSize;
            const borderRadius = (_j = (_h = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.roundness) !== null && _h !== void 0 ? _h : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.roundness) !== null && _j !== void 0 ? _j : branding === null || branding === void 0 ? void 0 : branding.borderRadius;
            const backgroundColor = (_l = (_k = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.backgroundColor) !== null && _k !== void 0 ? _k : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.backgroundColor) !== null && _l !== void 0 ? _l : branding === null || branding === void 0 ? void 0 : branding.backgroundColor;
            const backgroundOpacity = (_o = (_m = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.backgroundOpacity) !== null && _m !== void 0 ? _m : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.backgroundOpacity) !== null && _o !== void 0 ? _o : branding === null || branding === void 0 ? void 0 : branding.backgroundOpacity;
            const isShowingIcon = typeof (notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.isShowingIcon) !== 'boolean'
                ? (typeof (campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.isShowingIcon) !== 'boolean' ? branding === null || branding === void 0 ? void 0 : branding.brandingIsShowingIcon : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.isShowingIcon)
                : notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.isShowingIcon;
            const iconBackgroundColor = (_q = (_p = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.iconBackgroundColor) !== null && _p !== void 0 ? _p : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.iconBackgroundColor) !== null && _q !== void 0 ? _q : branding === null || branding === void 0 ? void 0 : branding.iconBackgroundColor;
            const iconBackgroundRadius = (_s = (_r = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.iconBackgroundRadius) !== null && _r !== void 0 ? _r : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.iconBackgroundRadius) !== null && _s !== void 0 ? _s : branding === null || branding === void 0 ? void 0 : branding.iconBackgroundRadius;
            const iconColor = (_u = (_t = notificationVisualSettings === null || notificationVisualSettings === void 0 ? void 0 : notificationVisualSettings.iconColor) !== null && _t !== void 0 ? _t : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.iconColor) !== null && _u !== void 0 ? _u : branding === null || branding === void 0 ? void 0 : branding.iconColor;
            const styleTagIdentifier = uniqueStyleIdentifier || Constants.UNIQUE;
            const myStyle = document.createElement('style');
            myStyle.setAttribute(styleTagIdentifier, '');
            // TODO: Upgrade notification logic and add it here
            myStyle.innerHTML = `
    @keyframes slideInFromTop {
        0% {
          transform: translateY(-100%);
        }
        100% {
          transform: translateY(0);
        }
    }
    @keyframes slideInFromTopBack {
        0% {
          transform: translateY(0);
        }
        100% {
          transform: translateY(-200px);
        }
    }
    @keyframes slideInFromBottom {
        0% {
          transform: translateY(100%);
        }
        100% {
          transform: translateY(0);
        }
    }
    @keyframes slideInFromBottomBack {
        0% {
          transform: translateY(0);
        }
        100% {
          transform: translateY(200px);
        }
    }
    .${styleTagIdentifier}-main-div {
        visibility: visible;
        display: flex;
        flex-direction: column;
        font-family: Montserrat;
        
        color: ${textColor || '#555770'};
        z-index: ${forPreview ? '999' : '2000000001'};
        position: ${forPreview ? 'relative' : 'fixed'};
        width: ${activeSize === 'classic' || activeSize === 'small' ? '334px' : '300px'};
        height: ${activeSize === 'classic' ? '104px' : activeSize === 'compact' ? '120px' : '90px'};
        padding: 12px;
        border-radius: ${borderRadius ? borderRadius + 'px' : '0px'};
        top: ${locationParams.top};
        right: ${locationParams.right};
        bottom: ${forPreview ? undefined : locationParams.bottom};
        left: ${forPreview ? undefined : locationParams.left};
        background-color: ${hexToRgba(backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : '#FFFFFF', backgroundOpacity !== null && backgroundOpacity !== void 0 ? backgroundOpacity : 1)};
        margin: 0 auto;
        box-shadow: 0px 1px 2px rgba(65, 32, 158, 0.06), 0px 0px 2px rgba(65, 32, 158, 0.04), 0px 4px 8px rgba(136, 100, 211, 0.16);
        box-sizing: content-box;
        animation: ${(visualSetting === null || visualSetting === void 0 ? void 0 : visualSetting.animationSpeed) !== undefined
                ? animationType === 'slideInFromTop'
                    ? animationFromTop
                    : animationFromBottom
                : 'none'};
    }
    .${styleTagIdentifier}-icon-and-message {
        display: flex;
        flex-direction: row;
    }
    .${styleTagIdentifier}-icon-div, .${styleTagIdentifier}-icon-div-success, .${styleTagIdentifier}-icon-div-error {
        visibility: visible;
        display: ${isShowingIcon ? 'flex' : 'none'};
        margin-right: 12px;
        height: 70px;
        align-items: center;
        justify-content: center;
        width: 70px;
    }
    .${styleTagIdentifier}-icon-div-success {
        background-color: ${'#eafced'};
    }
    .${styleTagIdentifier}-icon-div-error {
        background-color: ${'#f9e8e8'};
    }
    .${styleTagIdentifier}-icon-div {
        background-color: ${iconBackgroundColor || '#fff'};
        border-radius: ${iconBackgroundRadius ? iconBackgroundRadius + 'px' : '0px'};
    }
    .${styleTagIdentifier}-icon-img img {
        object-fit: cover;
    }
    .${styleTagIdentifier}-icon-img svg {
        fill: ${iconColor || '#7C76F7'};
    }
    .${styleTagIdentifier}-icon-img-success svg {
        fill: ${'#67ce7f'};
    }
    .${styleTagIdentifier}-icon-img-error svg {
        fill: ${'#cc6666'};
    }
    .${styleTagIdentifier}-message {
        visibility: visible;
        display: flex;
        flex-direction: column;
        color: ${textColor || '#555770'};
        min-height: 60px;
        max-height: 78px;
        justify-content: ${notificationSettings.type === 'individual' && !notificationSettings.signatureaddLink ? 'start' : 'space-around'};
    }
    .${styleTagIdentifier}-signature {
        font-size: 10px;
        font-weight: 400;
        display: ${(customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logoDisplay) === false ? 'none' : 'flex'};
        flex-direction: row;
        color: ${(_v = customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logoBackgroundColor) !== null && _v !== void 0 ? _v : 'inherit'};
        width: 128px;
        position: absolute;
        bottom: 12px;
        margin-top: 12px;
        gap: 4px;
        align-items: center;
        height: 16px;
    }
    .${styleTagIdentifier}-signature-image {
        height: 16px;
        width: 16px;
        min-width: 16px;
        display: ${(customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logoDisplay) === false ? 'none' : 'flex'};
        align-items: center;
        justify-content: center;
    }
    .${styleTagIdentifier}-signature-image svg path {
        fill: ${iconColor ? iconColor : '#7075F3'}
    }
    .${styleTagIdentifier}-message-span {
        margin-top: -5px;
        display: flex;
        align-items: center;
        font-weight: 400;
        font-size: 14px;
        color: ${textColor || '#555770'}
    }
    .${styleTagIdentifier}-message-container {
        flex-wrap: wrap;
        width: 100%;
        height: 100%;
        color: ${textColor || '#555770'}
    }
    .${styleTagIdentifier}-message-text {
        width: 100%;
        font-weight: 400;
        font-size: 14px;
        margin-top: 5px;
        text-align: left;
        color: ${textColor || '#555770'}
    }
    .${styleTagIdentifier}-message-text > p{
        display: block;
        margin: 0;
    }
    .${styleTagIdentifier}-cross-mark {
        font-size: 14px;
        padding: 0px;
        color: #86879D;
        position: absolute;
        cursor: pointer;
        font-weight: bold;
        right: 16px;
        top: 8px;
        background: transparent;
        border: none;
        display: none;
    }
    .${styleTagIdentifier}-main-div:hover .${styleTagIdentifier}-cross-mark {
        display: block;
    }
    .${styleTagIdentifier}-header {
        font-size: 14px;
        color: ${textColor || '#555770'}
        font-weight: 700;
        line-height: 1.5;
        text-align: left;
    }
    .${styleTagIdentifier}-note {
        font-size: 12px;
        color: ${textColor || '#555770'}
        margin-top: 0px;
        line-height: 1.5;
        text-align: left;
    }
    .${styleTagIdentifier}-rating {
        font-size: 14px;
        margin-top: 8px;
        display: flex;
        align-items: center;
        font-weight: 700;
        color: #28293D;
    } 
    .${styleTagIdentifier}-margin-right {
        margin-right: 10px;
    }
    .${styleTagIdentifier}-star-image {
        height: 16px;
        width: 16px;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .${styleTagIdentifier}-divider {
        width: 10px;
        color: #86879D;
        font-size: 12px;
        font-weight: 400;
    }
    .${styleTagIdentifier}-link-button, .${styleTagIdentifier}-link-button-disabled {
        color: ${(_x = (_w = notificationSettings.notificationVisualSettings.linkTextColor) !== null && _w !== void 0 ? _w : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.linkTextColor) !== null && _x !== void 0 ? _x : '#FFFFFF'};
        border-radius: 4px;
        border: 1px solid transparent;
        height: 28px;
        padding-left: 8px;
        padding-right: 8px;
        padding-top: 0px;
        padding-bottom: 0px;
    }
    .${styleTagIdentifier}-link-button {
        background-color: ${(_z = (_y = notificationSettings.notificationVisualSettings.linkButtonBackgroundColor) !== null && _y !== void 0 ? _y : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.linkButtonBackgroundColor) !== null && _z !== void 0 ? _z : '#7075F3'};
        cursor: pointer;
    }
    .${styleTagIdentifier}-link-button-disabled {
        background-color: ${Utils.hexToRGBA((_1 = (_0 = notificationSettings.notificationVisualSettings.linkButtonBackgroundColor) !== null && _0 !== void 0 ? _0 : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.linkButtonBackgroundColor) !== null && _1 !== void 0 ? _1 : '#7075F3', 0.5)};
    }
    .${styleTagIdentifier}-link-text {
        cursor: pointer;
        color: ${(_3 = (_2 = notificationSettings.notificationVisualSettings.linkTextColor) !== null && _2 !== void 0 ? _2 : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.linkTextColor) !== null && _3 !== void 0 ? _3 : '#7075F3'};
        font-size: 14px;
        font-weight: 700;
        text-decoration: none;
    }
    .${styleTagIdentifier}-link-span {
        font-size: 12px;
        width: 100%;
        display: flex;
        justify-content: center;
        ${(notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.link) ? `margin-top: ${notificationDataSh.link.linkAsButton ? '9px' : '22px'}` : ``};
`;
            // if style tag not exists, create it else just change inner html
            if (!Utils.isStyleTagExists(styleTagIdentifier)) {
                Utils.appendStyleTag(myStyle);
            }
            else {
                const styleTag = document.querySelector(`style[${styleTagIdentifier}]`);
                styleTag.innerHTML = myStyle.innerHTML;
            }
            let icon;
            let iconError = false;
            if ((_4 = notificationSettings.notificationVisualSettings.icon) !== null && _4 !== void 0 ? _4 : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.icon) {
                icon = IconsLibrary.getIconSvgByName((_5 = notificationSettings.notificationVisualSettings.icon) !== null && _5 !== void 0 ? _5 : campaignNotificationVisualSettings === null || campaignNotificationVisualSettings === void 0 ? void 0 : campaignNotificationVisualSettings.icon);
            }
            else if ((notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.imageURL) && (notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.productURL)) {
                icon = `<a href="${notificationDataSh.productURL}" target="_blank" class=\'${Constants.UNIQUE}-link-text\'><img width='70' height='70' src='${notificationDataSh.imageURL}' /></a>`;
            }
            else if (notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.imageURL) {
                icon = `<img width='70' height='70' src='${notificationDataSh.imageURL}' />`;
            }
            else if (notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.iconSvg) {
                icon = notificationDataSh.iconSvg; // TODO: what? || visualSetting
            }
            else {
                icon = IconsLibrary.errorSvg;
                iconError = true;
            }
            const iconColorType = notificationSettings.type === 'shoptetCouponCode' &&
                CookiesManager.checkCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON)
                ? '-success'
                : !iconError
                    ? ''
                    : '-error';
            const noteHtml = `
    <span class='${styleTagIdentifier}-note'>
        ${notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.note}
    </span>
`;
            const headerHtml = `
    <span class='${styleTagIdentifier}-header'>
        ${notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.header}
    </span>
`;
            const starHtml = `
    <div class='${styleTagIdentifier}-star-image'>
        ${IconsLibrary.starSvg}
    </div>
`;
            let ratingHtml;
            if (notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.rating) {
                let rating = Math.ceil(notificationDataSh.rating / 20);
                rating = rating === 0 ? 1 : rating;
                ratingHtml = `
            <span class='${styleTagIdentifier}-rating'>
                <div class='${styleTagIdentifier}-margin-right'>
                    ${notificationDataSh.rating} %
                </div>
                ${rating >= 5 ? starHtml : ''}
                ${rating >= 4 ? starHtml : ''}
                ${rating >= 3 ? starHtml : ''}
                ${rating >= 2 ? starHtml : ''}
                ${rating >= 1 ? starHtml : ''}
                <div class='${styleTagIdentifier}-divider'>${LanguageManager.getOtherTranslations(language).Recommends}</div>
            </span>
        `;
            }
            let linkHtml;
            if (notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.link) {
                if (notificationDataSh.link.linkAsButton === true) {
                    const isButtonDisabled = notificationSettings.type === 'shoptetCouponCode' &&
                        CookiesManager.checkCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON);
                    const onClickFunction = isButtonDisabled
                        ? ''
                        : notificationDataSh.link.customButtonFunction
                            ? `callCustomFunction(${notificationDataSh.link.customButtonFunction}, "${encodeURIComponent(notificationData.discountCouponName)}", "${language}")`
                            : `window.open("${notificationDataSh.link.href}", "${notificationDataSh.link.target ? '_blank' : ''}")`;
                    linkHtml = `
                <div class='${styleTagIdentifier}-link-span'>
                    <input 
                        type='button' 
                        class='${styleTagIdentifier}-link-button${isButtonDisabled ? '-disabled' : ''}'
                        value='${notificationDataSh.link.text}' 
                        onclick='${onClickFunction}'
                    >
                </div>
            `;
                }
                else if (notificationDataSh.link.linkAsButton === false) {
                    linkHtml = `
                <div class='${styleTagIdentifier}-link-span'>
                    <a href='${notificationDataSh.link.href}' target='${notificationDataSh.link.target ? '_blank' : ''}' class='${styleTagIdentifier}-link-text'> 
                        ${notificationDataSh.link.text}
                    </a>
                </div>
            `;
                }
            }
            const myHTML = `
  <div class='${styleTagIdentifier}-main-div' id='${styleTagIdentifier}-main-div-id'>
    <div class='${styleTagIdentifier}-icon-and-message'>
        <div class='${styleTagIdentifier}-icon-div${iconColorType}'>
            <div class='${styleTagIdentifier}-icon-img${iconColorType}'>
                ${icon}
            </div>
        </div>
        <div class='${styleTagIdentifier}-message'>
            ${(notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.header) ? headerHtml : ``}
            
            <div class='${styleTagIdentifier}-message-container'>
                <span class='${styleTagIdentifier}-message-span'>
                    <div class='${styleTagIdentifier}-message-text'>
                        ${(notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.message) || ((_6 = notificationSettings.text) === null || _6 === void 0 ? void 0 : _6.replace(/(<\/p>\n<p>)/g, '<br>'))}
                        ${linkHtml ? linkHtml : ``}
                        ${(notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.rating) ? ratingHtml : ``}
                        ${(notificationDataSh === null || notificationDataSh === void 0 ? void 0 : notificationDataSh.note) ? '<br>' + noteHtml : ``}
                    </div>
                </span>
                <button type='button' onclick='onCloseButtonClick()' class='${styleTagIdentifier}-cross-mark'>
                    X
                </button>
            </div>
        </div>
    </div>
    <div class='${styleTagIdentifier}-signature'>
         <container class='${styleTagIdentifier}-signature-image'>

            ${(customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logo)
                ? `<img width="20" height="20" src=${customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logo} />`
                : IconsLibrary.signatureSvg}
        </container>
        ${(_7 = customWebBranding === null || customWebBranding === void 0 ? void 0 : customWebBranding.logoText) !== null && _7 !== void 0 ? _7 : (language === 'en' ? 'Eshopbooster.com' : 'Overenyweb.cz')}
    </div>
  </div>
`;
            const myDiv = document.createElement('div');
            myDiv.innerHTML = myHTML;
            if (forPreview)
                return myDiv;
            document.body.appendChild(myDiv);
            const reactAppRoot2 = document.getElementById('root');
            if (reactAppRoot2) {
                reactAppRoot2.appendChild(myDiv);
            }
            else {
                document.body.appendChild(myDiv);
            }
            const nextNotificationShowAfter = (visualSetting.showDurationSeconds + (Math.round(animationInSeconds * 100) / 100) * 2) * 1000;
            yield Utils.sleep(nextNotificationShowAfter - 50);
            // delete popup after show duration
            const mainNotificationDiv = document.getElementById(`${styleTagIdentifier}-main-div-id`);
            if (mainNotificationDiv) {
                mainNotificationDiv.remove();
            }
        });
    }
}
/**
 * Class contains all api calls
 * TODO: implement better try catch of errors
 */
class ApiGate extends Logger {
    constructor(config) {
        super(config);
    }
    /**
     * Call method to decrease user credits
     * @returns {Promise<void>}
     */
    decrease_credit() {
        return __awaiter(this, void 0, void 0, function* () {
            var _b;
            if (!IsAppRunning()) {
                return;
            }
            if (navigator.webdriver || !((_b = navigator.languages) === null || _b === void 0 ? void 0 : _b.length)) {
                debugLog('[Credits] Bot detected, skipping credit decrease');
                return;
            }
            const response = yield fetch(`${this.config.backendUrl}/credits/decrease`, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    Accept: 'application/json'
                },
                body: JSON.stringify({ websiteId: this.config.websiteId })
            });
            if (response.status === 403) {
                APP_STATE = AppStates.FatalError;
            }
        });
    }
    /**
     * Load all configuration for website
     * @returns {Promise<any|null>}
     */
    fetchCampaignSettings() {
        return __awaiter(this, void 0, void 0, function* () {
            const response = yield fetch(`${this.config.backendUrl}/campaign/verbose?websiteId=${this.config.websiteId}`, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json',
                    Accept: 'application/json'
                }
            });
            if (response.status === 403) {
                return null;
            }
            else {
                this.log_info('fetchCampaignSettings response', response);
                const settings = yield response.json();
                this.log_info('fetchCampaignSettings json', settings);
                return settings;
            }
        });
    }
    /**
     * Send to api an information about user activity. If he registered or order something
     * @param {'order' | 'registration'} type defines kind of notification
     * @param {string} campaignId
     * @param {Array<string>} inputsValues array of value which should be names or locations
     */
    sendActivity(type, campaignId, inputsValues) {
        return __awaiter(this, void 0, void 0, function* () {
            const url = `${this.config.backendUrl}/activityStorage/${type}/create`;
            const activityId = CookiesManager.getOrCreateActivityId();
            const body = {
                campaignId: campaignId,
                customerLocationShards: inputsValues,
                customerNameShards: inputsValues,
                userId: activityId
            };
            const response = yield fetch(url, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    Accept: 'application/json'
                },
                body: JSON.stringify(body)
            });
            if (response.status === 403) {
                return null;
            }
            else {
                this.log_info('sendActivity response', response);
                const settings = yield response.json();
                this.log_info('sendActivity json', settings);
                return settings;
            }
        });
    }
    /**
     * Load notification data depends on type of notification
     * @param {ShowNotification} showNotification
     * @returns {Promise<any|null>}
     */
    getNotificationData(showNotification) {
        return __awaiter(this, void 0, void 0, function* () {
            let url = yield this.generateGetNotificationDataUrl(showNotification);
            const response = yield fetch(url, {
                method: 'GET',
                headers: {
                    'Content-Type': 'application/json',
                    Accept: 'application/json'
                }
            });
            if (response.status === 403 ||
                response.status === 500 ||
                response.status === 404 ||
                response.status === 400 ||
                response.status === 401) {
                return null;
            }
            else {
                this.log_info('getNotificationData response', response);
                const settings = yield response.json();
                this.log_info('getNotificationData json', settings);
                return settings;
            }
        });
    }
    /**
     * Gets route info (url and query params) for fetching of notification data for requested notification settings / campaignId / websiteId
     * @param {ShowNotification} notificationSettings
     * @param {*} campaignId
     * @param {*} websiteId
     * @returns {URL}
     */
    generateGetNotificationDataUrl(showNotification) {
        return __awaiter(this, void 0, void 0, function* () {
            const varToString = (varObj) => Object.keys(varObj)[0];
            const activityId = CookiesManager.getOrCreateActivityId();
            /**
             *
             * @param url {URL}
             * @param param
             * @param key
             */
            function appendParamIntoUrlIfFilled(url, key, param) {
                if (param)
                    url.searchParams.append(key || varToString(param), param);
            }
            const typeToUrlMap = {
                lastRegistrations: 'activityStorage/registration/random',
                lastOrders: 'activityStorage/order/random',
                actualVisitors: 'activityStorage/attendance/current',
                visitorSummary: 'activityStorage/attendance/summary',
                registrationSummary: 'activityStorage/registration/summary',
                orderSummary: 'activityStorage/order/summary',
                heureka: 'heureka/company/review/random',
                zboziCompanyRating: 'zbozi/company/review/random',
                zboziProductRating: 'zbozi/product/review/random',
                spolehlivaRecenzeShopRating: 'spolehlivaRecenze/shop/review/random',
                spolehlivaRecenzeProductRating: 'spolehlivaRecenze/product/review/random',
                shoptetLastOrders: 'shoptet/lastOrders',
                shopifyLastOrders: 'shopify/lastOrders',
                eshopRychleLastOrders: 'eshop-rychle/lastOrders',
                googleReviews: 'google-reviews/review/random',
                trustpilotReviews: 'trustpilot/review/random'
            };
            //TODO
            let notificationUrlPath = typeToUrlMap[showNotification.settings.type];
            if (!notificationUrlPath)
                return false;
            let url = new URL(`${this.config.backendUrl}/${notificationUrlPath}`);
            appendParamIntoUrlIfFilled(url, 'campaignId', showNotification.campaign.id);
            appendParamIntoUrlIfFilled(url, 'userId', activityId);
            appendParamIntoUrlIfFilled(url, 'maxLastDays', showNotification.settings.maxLastDays);
            appendParamIntoUrlIfFilled(url, 'minRegistrations', showNotification.settings.minRegistrations);
            appendParamIntoUrlIfFilled(url, 'maxLastRegistrations', showNotification.settings.maxLastRegistrations);
            appendParamIntoUrlIfFilled(url, 'fallbackToGenericCustomer', showNotification.settings.fallbackToGenericCustomer);
            appendParamIntoUrlIfFilled(url, 'showCustomerOwnRegistrations', showNotification.settings.showCustomerOwnRegistrations);
            appendParamIntoUrlIfFilled(url, 'minOrders', showNotification.settings.minOrders);
            appendParamIntoUrlIfFilled(url, 'maxLastOrders', showNotification.settings.maxLastOrders);
            appendParamIntoUrlIfFilled(url, 'showCustomerOwnOrders', showNotification.settings.showCustomerOwnOrders);
            appendParamIntoUrlIfFilled(url, 'websiteId', this.config.websiteId);
            appendParamIntoUrlIfFilled(url, 'minVisitors', showNotification.settings.minVisitors);
            appendParamIntoUrlIfFilled(url, 'days', showNotification.settings.maxLastDays);
            appendParamIntoUrlIfFilled(url, 'minReviewStars', showNotification.settings.minReviewStars);
            appendParamIntoUrlIfFilled(url, 'minReviews', showNotification.settings.minReviews);
            return url;
        });
    }
    sendDailyActivity(visitId) {
        return __awaiter(this, void 0, void 0, function* () {
            const url = `${this.config.backendUrl}/activityStorage/userAttendance/increase`;
            const requestBody = JSON.stringify({
                websiteId: this.config.websiteId,
                visitorId: visitId
            });
            const response = yield fetch(url, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    Accept: 'application/json'
                },
                body: requestBody
            });
            if (response.status === 403) {
                return false;
            }
            else {
                return true;
            }
        });
    }
}
const shoptetCouponCodeValidator = () => {
    if (!CookiesManager.checkCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON))
        return;
    const couponCode = CookiesManager.getCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON);
    if (!couponCode)
        return;
    const couponCodeInput = document.getElementById('discountCouponCode');
    if (!couponCodeInput)
        return;
    couponCodeInput.value = couponCode;
    couponCodeInput.parentElement.submit();
    CookiesManager.removeCookie(CookiesManager.Name.ACTIVATED_SHOPTET_COUPON);
};
/**
 * Class to control change of url and depends on that run registered callbacks
 */
class UrlChecker {
    /**
     * @param actualUrl {string} actual url which will be checked for change
     */
    constructor(actualUrl) {
        /**
         * Actual url to check for change, against real actual url from location}
         * @type {string}
         */
        this.actualUrl = actualUrl;
        /**
         * Array of methods which will be called if actual url will be changed
         * @type {Array}
         */
        this.onChangeCallbacks = [];
        // Run periodic script for url change check
        this.runChangeUrlChecker();
    }
    /**
     * Register method which will be called if url address will be changed
     * @param method {method} Method to call if url address is changed
     */
    registerOnChangeCallback(method) {
        this.onChangeCallbacks.push(method);
    }
    /**
     * Begin periodic runner to control url address change
     */
    runChangeUrlChecker() {
        if (this.onChangeCallbacks.length > 0 && this.actualUrl != location.href) {
            shoptetCouponCodeValidator();
            this.onChangeCallbacks.forEach((callback) => {
                callback()
                    .then((r) => { })
                    .catch((r) => { });
            });
            this.actualUrl = location.href;
        }
        var checker = this;
        setTimeout(checker.runChangeUrlChecker.bind(checker), Constants.URL_CHANGE_CHECKER_PERIOD_IN_SECONDS * 1000);
    }
    /**
     *
     * @param {UrlFilter} urlFilter
     * @param {string} url
     * @returns {boolean}
     */
    isActualUrlInFilter(urlFilter) {
        const url = this.actualUrl;
        debugLog('[URL Filter] Checking URL:', url);
        debugLog('[URL Filter] Filter rules:', urlFilter);
        // If all filter arrays are empty, allow all URLs
        if (Object.values(urlFilter).every((arr) => Array.isArray(arr) && arr.length === 0)) {
            debugLog('[URL Filter] No filter rules defined - allowing URL');
            return true;
        }
        // Check exclude rules first - if URL matches any exclude rule, reject it
        const isExcluded = (urlFilter.excludeUrlContains && urlFilter.excludeUrlContains.some((subString) => url.includes(subString))) ||
            (urlFilter.excludeUrlBeginsWith && urlFilter.excludeUrlBeginsWith.some((subString) => url.startsWith(subString))) ||
            (urlFilter.excludeUrlIsEqual && urlFilter.excludeUrlIsEqual.some((subString) => url == subString));
        if (isExcluded) {
            debugLog('[URL Filter] URL matches exclude rule - rejecting');
            return false;
        }
        // Check if any include rules are defined
        const hasIncludeRules = (urlFilter.includeUrlContains && urlFilter.includeUrlContains.length > 0) ||
            (urlFilter.includeUrlBeginsWith && urlFilter.includeUrlBeginsWith.length > 0) ||
            (urlFilter.includeUrlIsEqual && urlFilter.includeUrlIsEqual.length > 0);
        // If no include rules are defined, allow the URL (after passing exclude check)
        if (!hasIncludeRules) {
            debugLog('[URL Filter] No include rules defined - allowing URL');
            return true;
        }
        // If include rules are defined, URL must match at least one
        const isIncluded = (urlFilter.includeUrlContains && urlFilter.includeUrlContains.some((subString) => url.includes(subString))) ||
            (urlFilter.includeUrlBeginsWith && urlFilter.includeUrlBeginsWith.some((subString) => url.startsWith(subString))) ||
            (urlFilter.includeUrlIsEqual && urlFilter.includeUrlIsEqual.some((subString) => url == subString));
        debugLog('[URL Filter] Include rules defined, URL match result:', isIncluded);
        return isIncluded;
    }
}
//endregion
//region Helpers
class CookiesManager {
    static setCookie(cname, cvalue, expireSeconds) {
        const d = new Date();
        d.setTime(d.getTime() + expireSeconds * 1000);
        let expires = 'expires=' + d.toUTCString();
        let cookie_setting = cname + '=' + cvalue + ';' + expires + ';path=/';
        console.log(cookie_setting);
        document.cookie = cookie_setting;
    }
    static getCookie(cname) {
        let name = cname + '=';
        let ca = document.cookie.split(';');
        for (let i = 0; i < ca.length; i++) {
            let c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return undefined;
    }
    static checkCookie(cname) {
        let cookie_value = CookiesManager.getCookie(cname);
        if (cookie_value != undefined)
            return true;
        return false;
    }
    static isNotificationLoopClosedByUser() {
        // Check if notifications are stopped by user
        if (!this.checkCookie(this.Name.NOTIFICATIONS_CLOSED_BY_USER)) {
            this.setCookie(this.Name.NOTIFICATIONS_CLOSED_BY_USER, false);
            return false;
        }
        else {
            const notificationsClosedByUser = Utils.strToBool(this.getCookie(this.Name.NOTIFICATIONS_CLOSED_BY_USER));
            if (notificationsClosedByUser) {
                return true;
            }
            return false;
        }
    }
    static setNotificationLoopClosedByUser(isEnables = false) {
        this.setCookie(this.Name.NOTIFICATIONS_CLOSED_BY_USER, true, Constants.NOTIFICATIONS_CLOSED_BY_USER_DURATION_IN_SECONDS);
    }
    static getOrCreateActivityId() {
        let activityId = CookiesManager.getCookie(CookiesManager.Name.ACTIVITY_ID);
        if (!activityId) {
            activityId = Utils.createUuid();
            CookiesManager.setCookie(CookiesManager.Name.ACTIVITY_ID, activityId, Constants.ACTIVITY_ID_EXPIRATION_IN_SECONDS);
        }
        return activityId;
    }
    static getIsNotificationValid(notificationId) {
        let invalidationMarkExists = CookiesManager.getCookie(CookiesManager.Name.NOTIFICATION_IS_INVALID_PREFIX + '-' + notificationId);
        if (invalidationMarkExists) {
            return false;
        }
        return true;
    }
    static setNotificationAsInvalid(notificationId) {
        this.setCookie(CookiesManager.Name.NOTIFICATION_IS_INVALID_PREFIX + '-' + notificationId, true, Constants.NOTIFICATION_INVALID_STATE_DURATION_IN_SECONDS);
    }
    static getIsNotificationAlreadySeen(notificationId) {
        let alreadySeenMarkExists = CookiesManager.getCookie(CookiesManager.Name.NOTIFICATION_IS_ALREADY_SEEN + '-' + notificationId);
        if (alreadySeenMarkExists) {
            return true;
        }
        return false;
    }
    static setNotificationIsAlreadySeen(notificationId) {
        this.setCookie(CookiesManager.Name.NOTIFICATION_IS_ALREADY_SEEN + '-' + notificationId, true, Constants.NOTIFICATION_ALREADY_SEEN_STATE_DURATION_IN_SECONDS);
    }
    static removeCookie(cname) {
        CookiesManager.setCookie(cname, '', -1);
    }
}
CookiesManager.Name = {
    DEBUG_MODE: 'debug-mode-464s6544a4s54d',
    ACTIVITY_ID: 'activity-id-asre4qwgre6',
    NOTIFICATIONS_CLOSED_BY_USER: 'notifications_closed_by_user-s54g6s45',
    DAILY_ACTIVITY: 'daily-activity-4sr7t872s4',
    NOTIFICATION_IS_INVALID_PREFIX: 'invalid-notification-',
    NOTIFICATION_IS_ALREADY_SEEN: 'notification-seen-',
    ACTIVATED_SHOPTET_COUPON: 'activated-shoptet-coupon-235hnoi4h5'
};
class LocalStorageManager {
    static getItem(sname) {
        let expiration = localStorage.getItem(sname + '_expiration');
        if (expiration != null) {
            var expirationDate = new Date(JSON.parse(expiration));
            if (expirationDate <= Date.now()) {
                localStorage.removeItem(sname);
                return null;
            }
        }
        var item = localStorage.getItem(sname);
        if (item == null) {
            return null;
        }
        return JSON.parse(item);
    }
    static setItem(sname, object, expireSeconds = null) {
        if (typeof object !== 'object' || object === null) {
            throw Error('Just objects are supported in local storage manager');
        }
        localStorage.setItem(sname, JSON.stringify(object));
        if (expireSeconds != null) {
            const d = new Date();
            d.setTime(d.getTime() + expireSeconds * 1000);
            localStorage.setItem(sname + '_expiration', JSON.stringify(d));
        }
    }
}
LocalStorageManager.Name = {
    WEBSITE_SETTINGS: 'website-settings-pixel-fsj5jlkj82827'
};
class Utils {
    static createUuid() {
        return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16));
    }
    static strToBool(value) {
        return value === 'true';
    }
    static shuffleArray(array) {
        for (var i = array.length - 1; i > 0; i--) {
            var j = Math.floor(Math.random() * (i + 1));
            var temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }
    static sleep(ms) {
        return new Promise((resolve) => setTimeout(resolve, ms));
    }
    static isStyleTagExists(identifier) {
        return document.querySelector(`style[${identifier}]`) !== null;
    }
    static appendStyleTag(styleTag) {
        var link = document.createElement('link');
        link.setAttribute('rel', 'stylesheet');
        link.setAttribute('type', 'text/css');
        link.setAttribute('href', 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
        document.head.appendChild(link);
        document.head.appendChild(styleTag);
    }
    static hexToRGBA(hex, opacity) {
        let r = parseInt(hex.slice(1, 3), 16), g = parseInt(hex.slice(3, 5), 16), b = parseInt(hex.slice(5, 7), 16);
        if (opacity) {
            return `rgba(${r}, ${g}, ${b}, ${opacity})`;
        }
        else {
            return `rgb(${r}, ${g}, ${b})`;
        }
    }
    static isObjEmpty(obj) {
        return Object.keys(obj).length === 0;
    }
}
//endregion
//region DataClasses
class NotificationsStacks {
    /**
     *
     * @param showNotifications {Array.<ShowNotification>}
     * @param logNotifications {Array.<LogNotification>}
     */
    constructor(showNotifications, logNotifications, language) {
        this.showNotifications = showNotifications;
        this.logNotifications = logNotifications;
        this.language = language;
    }
}
class LogNotification {
    /**
     * @param campaign {Campaign}
     * @param notification {DataNotificationSettings}
     */
    constructor(campaign, notification) {
        this.settings = notification;
        this.campaign = campaign;
        this.isValid = true;
    }
    isActiveForUrl(url) {
        if (!url)
            return false;
        const urlFilter = this.settings.urlFilter;
        return isUrlInFilter(urlFilter, url);
    }
}
const isUrlInFilter = (urlFilter, url) => {
    if (!urlFilter)
        return false;
    if (Object.values(urlFilter).every((arr) => Array.isArray(arr) && arr.length === 0)) {
        return true;
    }
    if ((urlFilter.includeUrlContains && urlFilter.includeUrlContains.some((subString) => url.includes(subString))) ||
        (urlFilter.includeUrlBeginsWith && urlFilter.includeUrlBeginsWith.some((subString) => url.startsWith(subString))) ||
        (urlFilter.includeUrlIsEqual && urlFilter.includeUrlIsEqual.some((subString) => url == subString))) {
        if ((urlFilter.excludeUrlContains && urlFilter.excludeUrlContains.some((subString) => url.includes(subString))) ||
            (urlFilter.excludeUrlBeginsWith && urlFilter.excludeUrlBeginsWith.some((subString) => url.startsWith(subString))) ||
            (urlFilter.excludeUrlIsEqual && urlFilter.excludeUrlIsEqual.some((subString) => url == subString))) {
            return false;
        }
        return true;
    }
    return false;
};
class ShowNotification {
    /**
     *
     * @param campaign {Campaign}
     * @param notification {DataNotificationSettings}
     */
    constructor(campaign, notification) {
        this.settings = notification;
        this.campaign = campaign;
        this.isValid = true;
    }
}
class Configuration {
    constructor(websiteId, backendUrl, isMobile, previewMode = false, debugMode = false) {
        /**
         * @type {boolean}
         */
        this.previewMode = previewMode;
        /**
         * @type {string}
         */
        this.websiteId = websiteId;
        this.backendUrl = backendUrl;
        this.mobileMode = isMobile;
        this.debugMode = debugMode;
    }
}
function convertJsonToCampaign(jsonData) {
    return new Campaign(jsonData.createdAt, jsonData.id, jsonData.isActive, jsonData.lastModifiedAt, jsonData.name, jsonData.notificationSettings, jsonData.notificationSettingsCount, jsonData.urlFilter, jsonData.visualPcSettings, jsonData.visualPhoneSettings, jsonData.notificationVisualSettings, jsonData.branding);
}
class Campaign {
    constructor(createdAt, id, isActive, lastModifiedAt, name, notificationSettings, notificationSettingsCount, urlFilter, visualPcSettings, visualPhoneSettings, notificationVisualSettings, branding = {}) {
        this.createdAt = createdAt;
        this.id = id;
        this.isActive = isActive;
        this.lastModifiedAt = lastModifiedAt;
        this.name = name;
        this.branding = branding;
        /**
     @type {Array.<DataNotificationSettings>}
     */
        this.notificationSettings = notificationSettings.map((notificationSetting) => convertJsonToNotificationSettings(notificationSetting));
        this.notificationSettingsCount = notificationSettingsCount;
        this.urlFilter = convertJsonToUrlFilter(urlFilter);
        this.visualPcSettings = convertJsonToVisualPcMobileSetting(visualPcSettings);
        this.visualPhoneSettings = convertJsonToVisualPcMobileSetting(visualPhoneSettings);
        if (notificationVisualSettings)
            this.notificationVisualSettings = convertJsonToCampaingNotificationVisualSettings(notificationVisualSettings);
        else
            this.notificationVisualSettings = undefined;
    }
}
function convertJsonToNotificationSettings(jsonData) {
    return new DataNotificationSettings(jsonData.createdAt, jsonData.fallbackToGenericCustomer, jsonData.id, jsonData.isActive, jsonData.lastModifiedAt, jsonData.maxLastDays, jsonData.maxLastRegistrations, jsonData.minRegistrations, jsonData.notificationVisualSettings, jsonData.repeatNotification, jsonData.showCustomerOwnRegistrations, jsonData.text, jsonData.type, jsonData.urlFilter, jsonData.maxLastOrders, jsonData.minOrders, jsonData.showCustomerOwnOrders, jsonData.minVisitors, jsonData.minReviewStars, jsonData.minReviews, jsonData.name, jsonData.addLink, jsonData.linkAsButton, jsonData.openLinkInNewWindow, jsonData.linkText, jsonData.link, jsonData.discountCouponName, jsonData.discountCouponValue, jsonData.discountCouponType, jsonData.discountCouponAppliableTo);
}
class DataNotificationSettings {
    constructor(createdAt, fallbackToGenericCustomer, id, isActive, lastModifiedAt, maxLastDays, maxLastRegistrations, minRegistrations, notificationVisualSettings, repeatNotification, showCustomerOwnRegistrations, text, type, urlFilter, maxLastOrders, minOrders, showCustomerOwnOrders, minVisitors, minReviewStars, minReviews, name, addLink, linkAsButton, openLinkInNewWindow, linkText, link, discountCouponName, discountCouponValue, discountCouponType, discountCouponAppliableTo) {
        this.createdAt = createdAt;
        this.fallbackToGenericCustomer = fallbackToGenericCustomer;
        this.id = id;
        this.isActive = isActive;
        this.lastModifiedAt = lastModifiedAt;
        this.maxLastDays = maxLastDays;
        this.maxLastRegistrations = maxLastRegistrations;
        this.minRegistrations = minRegistrations;
        this.notificationVisualSettings = convertJsonToNotificationVisualSettings(notificationVisualSettings);
        this.repeatNotification = repeatNotification;
        this.showCustomerOwnRegistrations = showCustomerOwnRegistrations;
        this.text = text;
        this.type = type;
        this.urlFilter = convertJsonToUrlFilter(urlFilter);
        this.maxLastOrders = maxLastOrders;
        this.minOrders = minOrders;
        this.showCustomerOwnOrders = showCustomerOwnOrders;
        this.minVisitors = minVisitors;
        this.minReviewStars = minReviewStars;
        this.minReviews = minReviews;
        this.name = name;
        this.addLink = addLink;
        this.linkAsButton = linkAsButton;
        this.openLinkInNewWindow = openLinkInNewWindow;
        this.linkText = linkText;
        this.link = link;
        this.discountCouponName = discountCouponName;
        this.discountCouponValue = discountCouponValue;
        this.discountCouponType = discountCouponType;
        this.discountCouponAppliableTo = discountCouponAppliableTo;
    }
}
function convertJsonToNotificationVisualSettings(jsonData) {
    return new NotificationVisualSettings(jsonData === null || jsonData === void 0 ? void 0 : jsonData.backgroundColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.icon, jsonData === null || jsonData === void 0 ? void 0 : jsonData.iconBackgroundColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.iconColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.linkButtonBackgroundColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.linkButtonTextColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.linkTextColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.roundness, jsonData === null || jsonData === void 0 ? void 0 : jsonData.textColor, jsonData === null || jsonData === void 0 ? void 0 : jsonData.backgroundOpacity, jsonData === null || jsonData === void 0 ? void 0 : jsonData.activeSize, jsonData === null || jsonData === void 0 ? void 0 : jsonData.isShowingIcon, jsonData === null || jsonData === void 0 ? void 0 : jsonData.iconBackgroundRadius);
}
class NotificationVisualSettings {
    constructor(backgroundColor, icon, iconBackgroundColor, iconColor, linkButtonBackgroundColor, linkButtonTextColor, linkTextColor, roundness, textColor, backgroundOpacity, activeSize, isShowingIcon, iconBackgroundRadius) {
        this.backgroundColor = backgroundColor;
        this.icon = icon;
        this.iconBackgroundColor = iconBackgroundColor;
        this.iconColor = iconColor;
        this.linkButtonBackgroundColor = linkButtonBackgroundColor;
        this.linkButtonTextColor = linkButtonTextColor;
        this.linkTextColor = linkTextColor;
        this.roundness = roundness;
        this.textColor = textColor;
        this.backgroundOpacity = backgroundOpacity;
        this.activeSize = activeSize;
        this.isShowingIcon = isShowingIcon;
        this.iconBackgroundRadius = iconBackgroundRadius;
    }
}
function convertJsonToCampaingNotificationVisualSettings(jsonData) {
    return new CampaignNotificationVisualSettings(jsonData.roundness);
}
class CampaignNotificationVisualSettings {
    constructor(roundness) {
        this.roundness = roundness;
    }
}
function convertJsonToUrlFilter(jsonData) {
    return new UrlFilter(jsonData.excludeUrlBeginsWith, jsonData.excludeUrlContains, jsonData.excludeUrlIsEqual, jsonData.includeUrlBeginsWith, jsonData.includeUrlContains, jsonData.includeUrlIsEqual);
}
class UrlFilter {
    /**
     *
     * @param excludeUrlBeginsWith {Array.<string>}
     * @param excludeUrlContains {Array.<string>}
     * @param excludeUrlIsEqual {Array.<string>}
     * @param includeUrlBeginsWith {Array.<string>}
     * @param includeUrlContains {Array.<string>}
     * @param includeUrlIsEqual {Array.<string>}
     */
    constructor(excludeUrlBeginsWith = [], excludeUrlContains = [], excludeUrlIsEqual = [], includeUrlBeginsWith = [], includeUrlContains = [], includeUrlIsEqual = []) {
        this.excludeUrlBeginsWith = excludeUrlBeginsWith;
        this.excludeUrlContains = excludeUrlContains;
        this.excludeUrlIsEqual = excludeUrlIsEqual;
        this.includeUrlBeginsWith = includeUrlBeginsWith;
        this.includeUrlContains = includeUrlContains;
        this.includeUrlIsEqual = includeUrlIsEqual;
    }
}
function convertJsonToVisualPcMobileSetting(jsonData) {
    const isEmpty = Utils.isObjEmpty(jsonData);
    if (isEmpty) {
        return undefined;
    }
    return new VisualPcPhoneSetting(jsonData.animationSpeed, jsonData.nextNotificationDelaySeconds, jsonData.position, jsonData.showAfterSeconds, jsonData.showDurationSeconds);
}
class VisualPcPhoneSetting {
    constructor(animationSpeed, nextNotificationDelaySeconds, position, showAfterSeconds, showDurationSeconds) {
        this.animationSpeed = animationSpeed;
        this.nextNotificationDelaySeconds = nextNotificationDelaySeconds;
        this.position = position;
        this.showAfterSeconds = showAfterSeconds;
        this.showDurationSeconds = showDurationSeconds;
    }
}
//endregion
//region Sources
class LanguageManager {
    /**
     * Describes given time window type
     * @param {*} masLastDays
     * @returns
     */
    static getTimeWindowHumanForm(masLastDays, language) {
        let timeWindowDescription = '';
        switch (masLastDays) {
            case 1:
                language === 'hu'
                    ? (timeWindowDescription = '24 óra')
                    : language === 'pl'
                        ? (timeWindowDescription = '24 godziny')
                        : language === 'sk'
                            ? (timeWindowDescription = '24 hodín')
                            : language === 'en'
                                ? (timeWindowDescription = '24 hours')
                                : (timeWindowDescription = '24 hodin');
                break;
            case 7:
                language === 'hu'
                    ? (timeWindowDescription = '7 nap')
                    : language === 'pl'
                        ? (timeWindowDescription = '7 dni')
                        : language === 'en'
                            ? (timeWindowDescription = '7 days')
                            : (timeWindowDescription = '7 dní');
                break;
            case 30:
                language === 'hu'
                    ? (timeWindowDescription = '30 nap')
                    : language === 'pl'
                        ? (timeWindowDescription = '30 dni')
                        : language === 'en'
                            ? (timeWindowDescription = '30 days')
                            : (timeWindowDescription = '30 dní');
                break;
            default:
                break;
        }
        const lastDays = language === 'hu'
            ? 'az utolsó'
            : language === 'pl'
                ? 'w ciągu ostatnich'
                : language === 'sk'
                    ? 'za posledných'
                    : language === 'en'
                        ? 'in the last'
                        : 'za posledních';
        return `${lastDays} ${timeWindowDescription}`;
    }
    static createReviewMessage(text, maxLength) {
        if (!text)
            return ' ';
        if (text.length > maxLength)
            text = text.substring(0, maxLength) + '...';
        return `“${text}”`;
    }
    /**
     * Expect date in format Date (example: "2022-10-05T15:42:24.000Z")
     * @param {*} date
     * @returns
     */
    static describeAgeInMinutesMessage(date, language) {
        const currentDate = new Date().getTime();
        const timestamp = new Date(date).getTime();
        const diffTime = Math.abs(currentDate - timestamp);
        const diffMinutes = Math.ceil(diffTime / (1000 * 60));
        if (diffMinutes < 60) {
            // Minutes
            if (diffMinutes <= 1) {
                return language === 'hu'
                    ? 'egy perce'
                    : language === 'pl'
                        ? 'minutę temu'
                        : language === 'sk'
                            ? 'pred minútou'
                            : language === 'en'
                                ? 'a minute ago'
                                : 'před minutou';
            }
            return language === 'hu'
                ? `${diffMinutes} perccel ezelőtt`
                : language === 'pl'
                    ? `${diffMinutes} minut temu`
                    : language === 'sk'
                        ? `pred ${diffMinutes} minútami`
                        : language === 'en'
                            ? `${diffMinutes} minutes ago`
                            : `před ${diffMinutes} minutami`;
        }
        if (diffMinutes < 1440) {
            // Hours
            const hours = Math.floor(diffMinutes / 60);
            if (hours === 1)
                return language === 'hu'
                    ? 'egy órája'
                    : language === 'pl'
                        ? 'godzinę temu'
                        : language === 'sk'
                            ? 'pred hodinou'
                            : language === 'en'
                                ? 'an hour ago'
                                : 'před hodinou';
            return language === 'hu'
                ? `${hours} órával ezelőtt`
                : language === 'pl'
                    ? `${hours} godzin temu`
                    : language === 'sk'
                        ? `pred ${hours} hodinami`
                        : language === 'en'
                            ? `${hours} hours ago`
                            : `před ${hours} hodinami`;
        }
        else {
            // Days
            const days = Math.floor(diffMinutes / 60 / 24);
            if (days === 1)
                return language === 'hu' ? 'tegnap' : language === 'pl' ? 'wczoraj' : language === 'sk' ? 'včera' : language === 'en' ? 'yesterday' : 'včera';
            return language === 'hu'
                ? ` ${days} nappal ezelőtt`
                : language === 'pl'
                    ? `${days} dni temu`
                    : language === 'sk'
                        ? ` pred ${days} dňami`
                        : language === 'en'
                            ? `${days} days ago`
                            : ` před ${days} dny`;
        }
    }
}
_a = LanguageManager;
LanguageManager.languageMap = {
    TextSingleOrder: {
        cs: 'má dokončenou objednávku',
        sk: 'má dokončenú objednávku',
        pl: 'złożył/a zamówienie',
        hu: 'befejezte a megrendelést',
        en: 'completed an order'
    },
    TextSingleRegistration: {
        cs: 'se přihlásil/a k odběru novinek',
        sk: 'sa prihlásil/a k odberu noviniek',
        pl: 'dokonał/a subskrypcji newslettera',
        hu: 'feliratkozott a hírlevélre',
        en: 'subscribed to newsletter'
    },
    TextVisitorsName: {
        cs: 'návštěvníků',
        sk: 'návštevníkov',
        pl: 'użytkowników',
        hu: 'egyedi látogató',
        en: 'visitors'
    },
    TextPeopleName: {
        cs: 'lidí',
        sk: 'ľudí',
        pl: 'osób',
        hu: 'személy',
        en: 'people'
    },
    TextCurrentVisitors: {
        cs: 'si právě prohlíží tuto stránku',
        sk: 'si práve prezerá túto stránku',
        pl: 'właśnie ogląda tę stronę',
        hu: 'nézi jelenleg ezt az oldalt',
        en: 'are viewing this page right now'
    },
    TextVisitorSummary: {
        cs: 'navštívilo tuto stránku',
        sk: 'navštívilo túto stránku',
        pl: 'odwiedziło tę stronę',
        hu: 'látogatta meg ezt az oldalt',
        en: 'visited this page'
    },
    TextRegistrationSummary: {
        cs: 'se přihlásilo k odběru',
        sk: 'sa prihlásilo k odberu',
        pl: 'dokonało subskrypcji newslettera',
        hu: 'feliratkozott a hírlevélre',
        en: 'subscribed'
    },
    TextOrderSummary: {
        cs: 'si u nás nakoupilo',
        sk: 'si u nás nakúpilo',
        pl: 'zrobiło u nas zakupy',
        hu: 'vásárolt tőlünk',
        en: 'made a purchase'
    },
    ShoptetLastOrders: {
        cs: 'právě objednal: ',
        sk: 'práve objednal: ',
        pl: 'właśnie zamówił: ',
        hu: 'most rendelt: ',
        en: 'just ordered: '
    },
    ShopifyLastOrders: {
        cs: 'právě objednal: ',
        sk: 'práve objednal: ',
        pl: 'właśnie zamówił: ',
        hu: 'most rendelt: ',
        en: 'just ordered: '
    },
    EshopRychleLastOrders: {
        cs: 'právě objednal: ',
        sk: 'práve objednal: ',
        pl: 'właśnie zamówił: ',
        hu: 'most rendelt: ',
        en: 'just ordered: '
    },
    TextTrustpilotReview: {
        cs: 'hodnocení na Trustpilot',
        sk: 'hodnotenie na Trustpilot',
        pl: 'ocena w Trustpilot',
        hu: 'Trustpilot értékelés',
        en: 'Trustpilot rating'
    }
};
LanguageManager.getTranslate = (key, language) => {
    const translationNode = _a.languageMap[key];
    if (!translationNode) {
        console.error('Translation failed for key: ', key);
        return 'not defined text';
    }
    const translation = translationNode[language];
    if (!translation) {
        console.error('Translation failed for key and lang: ', key, ' ', language);
        return 'not defined text';
    }
    return translation;
};
LanguageManager.createShoptetCouponMessage = (language, discountCouponName, discountCouponValue, discountCouponType, discountCouponAppliableTo) => {
    if (language === 'hu') {
        return `Aktiválja a "<b>${discountCouponName}</b>" kedvezménykódot, és kapjon <b>${discountCouponValue} ${discountCouponType}</b> kedvezményt ${discountCouponAppliableTo}.`;
    }
    else if (language === 'sk') {
        return `Použite zľavový kód "<b>${discountCouponName}</b>" a získajte zľavu <b>${discountCouponValue} ${discountCouponType}</b> na ${discountCouponAppliableTo}.`;
    }
    else if (language === 'pl') {
        return `Aktywuj kod rabatowy "<b>${discountCouponName}</b>", i uzyskaj <b>${discountCouponValue} ${discountCouponType}</b> rabatu na ${discountCouponAppliableTo}.`;
    }
    else if (language === 'en') {
        return `Use discount code "<b>${discountCouponName}</b>" and get <b>${discountCouponValue} ${discountCouponType}</b> off on ${discountCouponAppliableTo}.`;
    }
    else {
        return `Použijte slevový kód "<b>${discountCouponName}</b>" a získejte slevu <b>${discountCouponValue} ${discountCouponType}</b> na ${discountCouponAppliableTo}.`;
    }
};
LanguageManager.getOtherTranslations = (language) => {
    const otherTranslations = {
        cs: {
            Recommends: 'doporučuje',
            UseSale: 'Použít slevu',
            WeHaveSale: 'Máme pro vás slevu!',
            SaleUsed: 'Sleva použita'
        },
        hu: {
            Recommends: 'ajánlott',
            UseSale: 'Kedvezmény aktiválása',
            WeHaveSale: 'Van egy kedvezmény!',
            SaleUsed: 'Kedvezmény aktiválva'
        },
        sk: {
            Recommends: 'odporúča',
            UseSale: 'Uplatniť zľavu',
            WeHaveSale: 'Máme pre vás zľavu!',
            SaleUsed: 'Zľava uplatnená'
        },
        pl: {
            Recommends: 'poleca',
            UseSale: 'Zastosuj zniżkę',
            WeHaveSale: 'Mamy dla Ciebie zniżkę!',
            SaleUsed: 'Zastosowano rabat'
        },
        en: {
            Recommends: 'recommends',
            UseSale: 'Use discount',
            WeHaveSale: 'We have a discount for you!',
            SaleUsed: 'Discount applied'
        }
    };
    return otherTranslations[language || 'cs'];
};
class IconsLibrary {
    static getDefaultIconSvg(notificationType) {
        switch (notificationType) {
            case 'actualVisitors':
                return this.peopleSvg;
            case 'visitorSummary':
                return this.listAltSvg;
            case 'registrationSummary':
                return this.markMailReadSvg;
            case 'orderSummary':
                return this.addShoppingCartSvg;
            case 'heureka':
                return this.heurekaSvg;
            case 'zboziCompanyRating':
                return this.zboziSvg;
            case 'zboziProductRating':
                return this.zboziSvg;
            case 'individual':
                return this.notificationsActiveSvg;
            case 'lastRegistrations':
                return this.markMailReadSvg;
            case 'lastOrders':
                return this.addShoppingCartSvg;
            case 'spolehlivaRecenzeShopRating':
                return this.spolehlivaRecenzeSvg;
            case 'spolehlivaRecenzeProductRating':
                return this.spolehlivaRecenzeSvg;
            case 'googleReviews':
                return this.googleReviewsSvg;
            case 'trustpilotReviews':
                return this.trustpilotSvg;
            default:
                return null;
        }
    }
    static getIconSvgByName(iconName) {
        switch (iconName) {
            case 'Facebook':
                return this.facebookSvg;
            case 'Instagram':
                return this.instagramSvg;
            case 'Youtube':
                return this.youtubeSvg;
            case 'LocalShipping':
                return this.localShippingSvg;
            case 'Info':
                return this.infoSvg;
            case 'Mail':
                return this.mailSvg;
            case 'CardGiftcard':
                return this.cardGiftcardSvg;
            case 'Percent':
                return this.percentSvg;
            case 'NotificationsActive':
                return this.notificationsActiveSvg;
            case 'ProductionQuantityLimits':
                return this.productionQuantityLimitsSvg;
            case 'Favorite':
                return this.favoriteSvg;
            case 'EmojiEmotions':
                return this.emojiEmotionsSvg;
            case 'SentimentSatisfiedAlt':
                return this.sentimentSatisfiedAltSvg;
            case 'TouchApp':
                return this.touchAppSvg;
            case 'Alarm':
                return this.alarmSvg;
            case 'ChildFriendly':
                return this.childFriendlySvg;
            case 'StarIcon':
                return this.starIconSvg;
            case 'Visibility':
                return this.visibilitySvg;
            case 'Face':
                return this.faceSvg;
            case 'Face3':
                return this.face3Svg;
            case 'AddShoppingCart':
                return this.addShoppingCartSvg;
            case 'MarkMailRead':
                return this.markMailReadSvg;
            case 'ListAlt':
                return this.listAltSvg;
            case 'People':
                return this.peopleSvg;
            case 'AcUnit':
                return this.acUnitSvg;
            case 'Call':
                return this.callSvg;
            case 'AddAPhoto':
                return this.addAPhotoSvg;
            case 'Apple':
                return this.appleSvg;
            case 'AutoAwesome':
                return this.autoAwesomeSvg;
            case 'Audiotrack':
                return this.audiotrackSvg;
            case 'BeachAccess':
                return this.beachAccessSvg;
            case 'Celebration':
                return this.celebrationSvg;
            case 'CheckCircle':
                return this.checkCircleSvg;
            case 'ChildCare':
                return this.childCareSvg;
            case 'Coffee':
                return this.coffeeSvg;
            case 'ColorLens':
                return this.colorLensSvg;
            case 'EmojiObjects':
                return this.emojiObjectsSvg;
            case 'EmojiNature':
                return this.emojiNatureSvg;
            case 'Euro':
                return this.euroSvg;
            case 'Extension':
                return this.extensionSvg;
            case 'FamilyRestroom':
                return this.familyRestroomSvg;
            case 'Fastfood':
                return this.fastfoodSvg;
            case 'FitnessCenter':
                return this.fitnessCenterSvg;
            case 'Flag':
                return this.flagSvg;
            case 'Flatware':
                return this.flatwareSvg;
            case 'FlutterDash':
                return this.flutterDashSvg;
            case 'Forest':
                return this.forestSvg;
            case 'Groups':
                return this.groupsSvg;
            case 'IceSkating':
                return this.iceSkatingSvg;
            case 'Icecream':
                return this.icecreamSvg;
            case 'Liquor':
                return this.liquorSvg;
            case 'Mood':
                return this.moodSvg;
            case 'NewReleases':
                return this.newReleasesSvg;
            case 'Pets':
                return this.petsSvg;
            case 'Phishing':
                return this.phishingSvg;
            case 'Rocket':
                return this.rocketSvg;
            case 'Savings':
                return this.savingsSvg;
            case 'School':
                return this.schoolSvg;
            case 'SportsBaseball':
                return this.sportsBaseballSvg;
            case 'SportsFootball':
                return this.sportsFootballSvg;
            case 'SportsHockey':
                return this.sportsHockeySvg;
            case 'SportsScore':
                return this.sportsScoreSvg;
            case 'SupportAgent':
                return this.supportAgentSvg;
            case 'TwoWheeler':
                return this.twoWheelerSvg;
            case 'Verified':
                return this.verifiedSvg;
            case 'WorkspacePremium':
                return this.workspacePremiumSvg;
            case 'LocalAtm':
                return this.localAtmSvg;
            case 'CurrencyBitcoin':
                return this.currencyBitcoinSvg;
            case 'AccessibilityNew':
                return this.accessibilityNewSvg;
            default:
                return null;
        }
    }
}
IconsLibrary.orderSvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M35.0003 31.0003C35.917 31.0003 36.667 30.2503 36.667 29.3337V26.0003H40.0003C40.917 26.0003 41.667 25.2503 41.667 24.3337C41.667 23.417 40.917 22.667 40.0003 22.667H36.667V19.3337C36.667 18.417 35.917 17.667 35.0003 17.667C34.0837 17.667 33.3337 18.417 33.3337 19.3337V22.667H30.0003C29.0837 22.667 28.3337 23.417 28.3337 24.3337C28.3337 25.2503 29.0837 26.0003 30.0003 26.0003H33.3337V29.3337C33.3337 30.2503 34.0837 31.0003 35.0003 31.0003ZM26.667 46.0003C24.8337 46.0003 23.3503 47.5003 23.3503 49.3337C23.3503 51.167 24.8337 52.667 26.667 52.667C28.5003 52.667 30.0003 51.167 30.0003 49.3337C30.0003 47.5003 28.5003 46.0003 26.667 46.0003ZM43.3337 46.0003C41.5003 46.0003 40.017 47.5003 40.017 49.3337C40.017 51.167 41.5003 52.667 43.3337 52.667C45.167 52.667 46.667 51.167 46.667 49.3337C46.667 47.5003 45.167 46.0003 43.3337 46.0003ZM28.5003 37.667H40.917C42.167 37.667 43.267 36.9837 43.8337 35.9503L49.467 25.7337C49.917 24.9337 49.617 23.917 48.817 23.467C48.017 23.0337 47.0003 23.317 46.567 24.117L40.917 34.3337H29.217L22.567 20.2837C22.3003 19.7003 21.7003 19.3337 21.067 19.3337H18.3337C17.417 19.3337 16.667 20.0837 16.667 21.0003C16.667 21.917 17.417 22.667 18.3337 22.667H20.0003L26.0003 35.317L23.7503 39.3837C22.5337 41.617 24.1337 44.3337 26.667 44.3337H45.0003C45.917 44.3337 46.667 43.5837 46.667 42.667C46.667 41.7503 45.917 41.0003 45.0003 41.0003H26.667L28.5003 37.667Z' fill='url(#paint0_linear_773_95366)'/>
        <defs>
        <linearGradient id='paint0_linear_773_95366' x1='-10.1885' y1='17.667' x2='66.1317' y2='17.5583' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        </defs>
        </svg>
        `;
IconsLibrary.registrationSvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M45.083 51.4837C44.433 52.1337 43.383 52.1337 42.733 51.4837L39.1997 47.9503C38.5497 47.3003 38.5497 46.2503 39.1997 45.6003C39.8497 44.9503 40.8997 44.9503 41.5497 45.6003L43.8997 47.9503L49.7997 42.0503C50.4497 41.4003 51.4997 41.4003 52.1497 42.0503C52.7997 42.7003 52.7997 43.7503 52.1497 44.4003L45.083 51.4837ZM35.133 49.3337H21.6663C19.833 49.3337 18.333 47.8337 18.333 46.0003V26.0003C18.333 24.167 19.833 22.667 21.6663 22.667H48.333C50.1663 22.667 51.6663 24.167 51.6663 26.0003V37.1337C50.1497 36.417 48.4663 36.0003 46.6663 36.0003C40.2163 36.0003 34.9997 41.217 34.9997 47.667C34.9997 48.2337 35.0497 48.7837 35.133 49.3337ZM34.1163 37.117C34.6497 37.4503 35.3497 37.4503 35.883 37.117L47.6663 29.7503C48.083 29.4837 48.333 29.0337 48.333 28.5503C48.333 27.4337 47.1163 26.767 46.1663 27.3503L34.9997 34.3337L23.833 27.3503C22.883 26.767 21.6663 27.4337 21.6663 28.5503C21.6663 29.0337 21.9163 29.4837 22.333 29.7503L34.1163 37.117Z' fill='url(#paint0_linear_1223_48959)'/>
        <defs>
        <linearGradient id='paint0_linear_1223_48959' x1='-9.57547' y1='22.667' x2='69.7372' y2='22.5268' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        </defs>
        </svg>
        `;
IconsLibrary.visitorsSvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M42.7832 37.8833C45.0665 39.4333 46.6665 41.5333 46.6665 44.3333V49.3333H51.6665C52.5832 49.3333 53.3332 48.5833 53.3332 47.6666V44.3333C53.3332 40.7 47.3832 38.55 42.7832 37.8833Z' fill='url(#paint0_linear_1223_49181)'/>
        <path d='M30.0007 35.9998C33.6826 35.9998 36.6673 33.0151 36.6673 29.3332C36.6673 25.6513 33.6826 22.6665 30.0007 22.6665C26.3188 22.6665 23.334 25.6513 23.334 29.3332C23.334 33.0151 26.3188 35.9998 30.0007 35.9998Z' fill='url(#paint1_linear_1223_49181)'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M39.9999 35.9998C43.6832 35.9998 46.6665 33.0165 46.6665 29.3332C46.6665 25.6498 43.6832 22.6665 39.9999 22.6665C39.2165 22.6665 38.4832 22.8332 37.7832 23.0665C39.1665 24.7832 39.9999 26.9665 39.9999 29.3332C39.9999 31.6998 39.1665 33.8832 37.7832 35.5998C38.4832 35.8332 39.2165 35.9998 39.9999 35.9998Z' fill='url(#paint2_linear_1223_49181)'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M30.0003 37.6665C25.5503 37.6665 16.667 39.8998 16.667 44.3332V47.6665C16.667 48.5832 17.417 49.3332 18.3337 49.3332H41.667C42.5837 49.3332 43.3337 48.5832 43.3337 47.6665V44.3332C43.3337 39.8998 34.4503 37.6665 30.0003 37.6665Z' fill='url(#paint3_linear_1223_49181)'/>
        <defs>
        <linearGradient id='paint0_linear_1223_49181' x1='34.2002' y1='37.8833' x2='58.5922' y2='37.8494' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        <linearGradient id='paint1_linear_1223_49181' x1='12.4865' y1='22.6665' x2='43.3138' y2='22.62' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        <linearGradient id='paint2_linear_1223_49181' x1='30.5561' y1='22.6665' x2='51.0948' y2='22.6459' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        <linearGradient id='paint3_linear_1223_49181' x1='-5.02792' y1='37.6665' x2='56.626' y2='37.4538' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        </defs>
        </svg>
        `;
IconsLibrary.summarySvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M35 31H41.6667C42.5833 31 43.3333 30.25 43.3333 29.3333C43.3333 28.4167 42.5833 27.6667 41.6667 27.6667H35C34.0833 27.6667 33.3333 28.4167 33.3333 29.3333C33.3333 30.25 34.0833 31 35 31ZM35 37.6667H41.6667C42.5833 37.6667 43.3333 36.9167 43.3333 36C43.3333 35.0833 42.5833 34.3333 41.6667 34.3333H35C34.0833 34.3333 33.3333 35.0833 33.3333 36C33.3333 36.9167 34.0833 37.6667 35 37.6667ZM35 44.3333H41.6667C42.5833 44.3333 43.3333 43.5833 43.3333 42.6667C43.3333 41.75 42.5833 41 41.6667 41H35C34.0833 41 33.3333 41.75 33.3333 42.6667C33.3333 43.5833 34.0833 44.3333 35 44.3333ZM26.6667 27.6667H30V31H26.6667V27.6667ZM26.6667 34.3333H30V37.6667H26.6667V34.3333ZM26.6667 41H30V44.3333H26.6667V41ZM48.3333 21H21.6667C20.75 21 20 21.75 20 22.6667V49.3333C20 50.25 20.75 51 21.6667 51H48.3333C49.25 51 50 50.25 50 49.3333V22.6667C50 21.75 49.25 21 48.3333 21ZM46.6667 47.6667H23.3333V24.3333H46.6667V47.6667Z' fill='url(#paint0_linear_1223_48737)'/>
        <defs>
        <linearGradient id='paint0_linear_1223_48737' x1='-4.40678' y1='21' x2='64.9546' y2='20.8953' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        </defs>
        </svg>
        `;
IconsLibrary.heurekaSvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <g clip-path='url(#clip0_951_121185)'>
        <path d='M25.5782 39.8743C25.5782 40.3498 25.2005 40.7633 24.6759 40.7633C24.1933 40.7633 23.7736 40.3912 23.7736 39.8743V36.1944H19.3671V39.8536C19.3671 40.3291 18.9894 40.7426 18.4648 40.7426C17.9822 40.7426 17.5625 40.3705 17.5625 39.8536V31.1707C17.5625 30.6952 17.9402 30.2818 18.4648 30.2818C18.9474 30.2818 19.3671 30.6539 19.3671 31.1707V34.6026H23.7946V31.1707C23.7946 30.6952 24.1723 30.2818 24.6969 30.2818C25.1795 30.2818 25.5992 30.6539 25.5992 31.1707L25.5782 39.8743ZM30.3205 33.5275C32.9435 33.5275 33.4261 35.4915 33.4261 36.5459C33.4261 37.1247 33.4261 37.7449 32.4818 37.7449H28.6418C28.6418 38.82 29.4182 39.3368 30.4464 39.3368C31.1179 39.3368 31.6005 39.1094 31.9573 38.8613C32.1251 38.7579 32.251 38.6959 32.4399 38.6959C32.8176 38.6959 33.1533 39.006 33.1533 39.3988C33.1533 39.6469 33.0274 39.8536 32.9015 39.9777C32.6497 40.2258 31.8314 40.8046 30.4254 40.8046C28.2851 40.8046 26.9422 39.6676 26.9422 37.1041C26.9632 34.83 28.2222 33.5275 30.3205 33.5275ZM28.6628 36.3805H31.7474C31.7474 35.6569 31.3277 34.9127 30.3205 34.9127C29.4182 34.9127 28.7677 35.4295 28.6628 36.3805ZM36.133 34.4372V37.9723C36.133 38.6753 36.3848 39.3368 37.5179 39.3368C38.651 39.3368 38.9028 38.6753 38.9028 37.9723V34.4372C38.9028 33.9823 39.2595 33.6102 39.7422 33.6102C40.2038 33.6102 40.5815 33.9617 40.5815 34.4372V37.9723C40.5815 39.4608 39.994 40.8253 37.5389 40.8253C35.0628 40.8253 34.4753 39.4608 34.4753 37.9723V34.4372C34.4753 33.9823 34.832 33.6102 35.3146 33.6102C35.7763 33.6102 36.133 33.9617 36.133 34.4372ZM43.7081 34.4992C44.0018 33.8996 44.7363 33.5069 45.3868 33.5069C45.8064 33.5069 46.1632 33.8583 46.1632 34.2718C46.1632 34.6852 45.8064 35.0367 45.3868 35.0367C44.3166 35.0367 43.7081 35.6983 43.7081 36.7319V39.8743C43.7081 40.3291 43.3514 40.7013 42.8687 40.7013C42.4071 40.7013 42.0294 40.3498 42.0294 39.8743V34.4372C42.0294 33.9823 42.3861 33.6102 42.8687 33.6102C43.3304 33.6102 43.7081 33.9617 43.7081 34.4372V34.4992ZM49.9192 33.5275C52.5422 33.5275 53.0248 35.4915 53.0248 36.5459C53.0248 37.1247 53.0248 37.7449 52.0805 37.7449H48.2405C48.2405 38.82 49.0169 39.3368 50.0451 39.3368C50.7166 39.3368 51.1992 39.1094 51.5559 38.8613C51.7238 38.7579 51.8497 38.6959 52.0386 38.6959C52.4163 38.6959 52.752 39.006 52.752 39.3988C52.752 39.6469 52.6261 39.8536 52.5002 39.9777C52.2484 40.2258 51.43 40.8046 50.0241 40.8046C47.8838 40.8046 46.5409 39.6676 46.5409 37.1041C46.5828 34.83 47.8209 33.5275 49.9192 33.5275ZM48.3035 36.3805H51.3671C51.3671 35.6569 50.9474 34.9127 49.9402 34.9127C49.0169 34.9127 48.3664 35.4295 48.3035 36.3805ZM58.7114 40.4118L56.4241 37.3521L55.9415 37.7243V39.9157C55.9415 40.3705 55.5848 40.7013 55.1022 40.7013C54.6195 40.7013 54.2628 40.3498 54.2628 39.9157V30.5919C54.2628 30.1371 54.6195 29.8063 55.1022 29.8063C55.5638 29.8063 55.9415 30.1577 55.9415 30.5919V35.967L58.7533 33.7963C58.9422 33.6309 59.11 33.6102 59.2989 33.6102C59.7605 33.6102 60.0963 33.9617 60.0963 34.3958C60.0963 34.6232 59.9914 34.8713 59.7815 35.0367L57.7461 36.5665L60.0123 39.5022C60.1382 39.6676 60.1802 39.8536 60.1802 39.9777C60.1802 40.4325 59.8235 40.7633 59.3828 40.7633C59.0471 40.7426 58.8373 40.6186 58.7114 40.4118ZM62.3835 35.5535C62.2156 35.6569 62.0897 35.7189 61.9218 35.7189C61.5441 35.7189 61.2084 35.4088 61.2084 35.016C61.2084 34.8506 61.2713 34.6646 61.3972 34.4992C61.8169 34.0237 62.5933 33.5069 63.9153 33.5069C65.8248 33.5069 66.9789 34.4372 66.9789 36.0497V39.9363C66.9789 40.3912 66.6222 40.7219 66.1815 40.7219C65.7199 40.7219 65.3841 40.3705 65.3841 39.9363C64.9645 40.5979 64.293 40.8253 63.3487 40.8253C61.8379 40.8253 60.8307 39.895 60.8307 38.5305C60.8307 37.1247 61.9848 36.4012 63.3068 36.4012H65.3422V36.1117C65.3422 35.4088 64.8176 34.9747 63.9153 34.9747C63.2228 34.9747 62.7402 35.2641 62.3835 35.5535ZM65.3212 38.0964V37.6829H63.5166C62.8451 37.6829 62.4464 37.993 62.4464 38.5512C62.4464 39.1301 62.8661 39.4815 63.7474 39.4815C64.5448 39.4608 65.3212 38.9647 65.3212 38.0964Z' fill='#009ED4'/>
        <path d='M14.6669 40.0397L12.6105 38.0137C13.4918 37.0627 13.9954 35.7809 13.9954 34.4165C13.9744 31.4188 11.5193 29 8.49771 29C5.45508 29 3 31.4188 3 34.4165C3 37.4142 5.45508 39.833 8.49771 39.833C9.44197 39.833 10.3023 39.6056 11.0787 39.1921L13.303 41.3835C13.6597 41.7349 14.2682 41.7349 14.6249 41.3835C15.0026 40.9907 15.0026 40.4118 14.6669 40.0397ZM4.57377 34.4165C4.57377 32.2871 6.35738 30.5298 8.51869 30.5298C9.31607 30.5298 10.0295 30.7573 10.68 31.1707L8.43475 34.7679L7.44853 33.5482C7.32262 33.3621 7.0918 33.2588 6.86098 33.2588C6.69311 33.2588 6.54623 33.3208 6.39934 33.4242C6.08459 33.6722 6.02164 34.1271 6.27344 34.4372L7.84721 36.4632C7.97312 36.6492 8.20393 36.7526 8.43475 36.7526H8.47672C8.70754 36.7526 8.93836 36.6286 9.06426 36.4012L11.7502 32.2044C12.2118 32.8453 12.4636 33.6102 12.4636 34.4372C12.4636 36.5665 10.68 38.3238 8.51869 38.3238C6.35738 38.2825 4.57377 36.5459 4.57377 34.4165Z' fill='#FF6700'/>
        </g>
        <defs>
        <clipPath id='clip0_951_121185'>
        <rect width='64' height='12.6316' fill='white' transform='translate(3 29)'/>
        </clipPath>
        </defs>
        </svg>
        `;
IconsLibrary.zboziSvg = `<svg width='62' height='12' viewBox='0 0 62 12' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M14.0462 3.97696C12.0418 4.98155 6.8178 6.59657 6.11783 6.83862C5.66059 6.9965 4.15143 7.54064 4.07093 8.11487C3.9589 8.91296 5.73575 9.11462 6.7643 9.23887C7.45768 9.32271 9.15043 9.51037 10.6883 9.42733C12.1843 9.34653 14.2784 9.02449 14.3236 9.35989C14.376 9.75033 11.7689 10.6921 10.7145 10.9418C9.81542 11.1545 7.03214 11.5895 5.17825 11.5448C3.63629 11.5078 1.13687 11.3048 0.237615 9.7962C-0.0760487 9.26993 -0.0760487 8.21722 0.2191 7.75968C0.546414 7.2524 0.903228 6.74689 1.6961 6.39749C3.20714 5.73152 10.0726 3.16986 10.2802 3.12528C10.7396 3.02582 11.344 2.7284 10.135 2.62942C9.17867 2.55072 8.21948 2.50003 7.25982 2.50035C6.80054 2.50067 6.34237 2.51725 5.88387 2.54058C5.51529 2.55958 5.09101 2.59772 4.80464 2.30771C4.54998 2.0502 4.3449 1.54791 4.28715 1.18886C4.23286 0.852656 4.35353 0.569725 4.62075 0.37C5.19096 -0.0555232 6.08001 -0.00563213 6.74719 0.0104618C7.10165 0.0189915 9.13286 0.179609 9.7958 0.23465C11.5411 0.379495 14.006 0.70427 14.7581 2.49842C15.1709 3.48353 14.0462 3.97696 14.0462 3.97696Z' fill='#DC1F27'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M20.3085 11.6702C19.3704 11.8132 17.6127 11.5715 16.9767 11.3328C16.3131 11.0837 15.1162 10.5574 15.0219 10.1221C14.9361 9.72539 15.4172 9.42588 15.5239 7.81761C15.5623 7.23775 15.5355 6.75188 15.5239 6.17137C15.5121 5.5796 15.532 3.71383 15.5184 3.39276C15.5184 3.39276 15.5132 0.682704 15.7828 0.375471C16.1128 -0.000803975 17.049 1.33563 17.2863 1.61663C17.6371 2.03202 17.0423 6.08108 17.151 6.20887C17.2651 6.34229 17.9142 4.92103 19.9782 5.16421C21.6299 5.35895 23.3189 6.49003 23.3189 8.9326C23.3189 9.71396 23.054 10.2077 22.7275 10.5763C22.2032 11.1687 21.5681 11.4772 20.3085 11.6702ZM17.3007 7.94862C17.1934 8.10521 17.0379 8.95932 17.1824 9.26912C17.2533 9.42137 18.4218 9.57459 18.746 9.59277C19.4402 9.63091 20.0429 9.56219 20.5199 9.36359C20.9404 9.18833 21.173 8.80224 21.0719 8.00253C20.98 7.27493 20.1651 6.64163 19.2059 6.73594C18.2467 6.83009 17.7343 7.31548 17.3007 7.94862Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M28.8516 4.78119C30.8519 4.85683 32.3435 7.14088 31.689 8.97977C31.4375 9.68629 31.0201 10.4557 30.322 10.9188C29.2935 11.601 27.7584 11.928 26.5546 11.6596C26.1738 11.5747 25.7759 11.4272 25.4316 11.2389C24.8532 10.9228 24.2152 10.4823 23.9968 9.81504C23.8845 9.47144 23.828 8.95804 23.91 8.60188C23.9945 8.2351 24.1523 7.77852 24.3687 7.4708C24.7934 6.86632 25.4201 6.27535 26.0349 5.87686C26.8083 5.37522 27.9073 4.7453 28.8516 4.78119ZM26.4416 9.47321C27.0162 9.68355 27.6138 9.69804 28.2314 9.62401C28.9134 9.54241 29.5641 9.13894 29.8712 8.49486C30.1336 7.94525 30.0802 7.26834 29.6082 6.85698C29.1201 6.43065 28.4057 6.43243 27.8289 6.64229C27.298 6.83526 26.7376 7.03595 26.3254 7.4457C26.033 7.73619 25.6383 8.20356 25.7125 8.65548C25.7743 9.03143 26.1038 9.34944 26.4416 9.47321Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M33.8081 4.18121C34.4037 4.18121 34.9926 4.22257 35.5831 4.30626C36.254 4.40138 37.2482 4.48539 37.4895 5.20977C37.9199 6.50244 36.6278 7.4243 36.072 8.06548C35.8864 8.27953 35.1426 9.09404 35.0176 9.34607C35.2762 9.49188 35.8589 9.43233 36.1578 9.42589C39.2648 9.35894 40.0414 8.55409 40.2807 8.51482C40.7465 8.43837 40.0935 9.7048 40.0112 9.84562C39.1208 11.3654 38.2593 11.3601 36.6752 11.5649C36.1619 11.6312 35.6352 11.6694 35.1177 11.6502C34.4444 11.6254 33.6269 11.553 33.0634 11.1354C32.3365 10.5962 32.5302 9.83613 32.9084 9.17499C33.1816 8.69765 35.3722 6.74143 35.3493 6.31446C34.7565 6.13566 33.74 6.23431 33.2955 6.40555C32.9842 6.52529 32.5043 6.72904 32.3192 6.30818C32.1879 6.00996 32.3346 5.60472 32.4118 5.30988C32.6096 4.55314 33.032 4.18121 33.8081 4.18121Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M33.0311 0.704441C33.0311 0.704441 35.5064 0.9819 38.9257 2.1603C39.9446 2.51146 40.9861 2.78265 41.6303 3.27013C42.433 3.87735 42.9496 4.27439 43.0986 4.6571C43.2954 5.16181 43.3774 5.7811 43.2383 7.0184C43.1369 7.91869 42.6732 10.63 42.4812 11.0012C42.1939 11.5562 41.6254 11.2075 41.3346 10.8309C40.5559 9.8226 40.951 8.45671 41.2342 7.33384C41.3731 6.78295 41.9229 5.5141 41.785 4.93456C41.6461 4.35084 41.2496 4.42535 40.4583 4.15497C40.0553 4.01721 38.4244 3.62886 36.3687 3.241C34.3859 2.86698 34.3978 2.91526 33.614 2.76848C32.9321 2.64086 32.1505 2.58711 31.6676 2.48491C31.02 2.34811 30.7645 2.15901 30.6296 1.91438C30.3934 1.48741 30.3382 0.761253 30.5601 0.590496C30.7823 0.41974 33.0311 0.704441 33.0311 0.704441Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M42.5664 2.58711C42.5717 2.06744 43.4429 1.7314 44.0596 1.41338C44.688 1.08909 45.5031 0.650532 46.1808 0.446139C46.6939 0.291477 47.0791 0.543507 47.2615 1.0606C47.3661 1.35754 47.4055 1.71772 47.3118 2.02334C47.1744 2.47284 46.7181 2.59628 46.3144 2.67305C43.9551 3.12079 42.5743 3.0173 42.5664 2.58711Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M57.9884 9.87782C57.2318 9.93318 56.5186 10.0651 55.7507 9.98999C55.5022 9.96521 55.0752 9.94428 54.8656 9.80362C54.2519 9.38872 56.402 8.6505 56.6667 8.55377C57.4121 8.2805 58.9142 7.83582 58.9142 7.83582C58.9142 7.83582 60.3254 7.47628 60.3675 6.6967C60.4194 5.75086 59.471 5.3226 58.7452 5.08602C58.4431 5.01697 58.1459 4.96435 57.8392 4.93296C57.633 4.91092 57.4235 4.90223 57.2155 4.89466C56.8241 4.88066 56.4427 4.91977 56.0526 4.96805C55.6533 5.01698 54.8039 5.04305 54.6806 5.55757C54.6188 5.8199 54.3296 6.36033 54.5718 6.59772C54.8284 6.85039 55.2456 6.74498 55.5608 6.71359C55.996 6.66934 56.4264 6.58629 56.8599 6.54203C57.1797 6.5092 57.5969 6.43694 57.8601 6.67738C58.1831 6.97657 57.3262 7.25982 57.1555 7.33466C56.5076 7.61775 55.8303 7.82102 55.1808 8.09799C54.5718 8.35791 53.961 8.60785 53.3669 8.89947C53.0939 9.0324 52.8389 9.19672 52.5824 9.35637L52.4589 9.26979L51.7104 9.35171C51.7104 9.35171 50.9618 9.41447 50.9601 9.41447C50.4584 9.45728 49.9502 9.47209 49.4465 9.49623C49.1948 9.50556 48.8002 9.51522 48.6023 9.32306C48.1686 8.90076 48.4106 8.31606 48.6963 7.90841C49.01 7.46454 49.4498 7.13558 49.9014 6.85603C50.205 6.66837 50.5411 6.51516 50.8821 6.41038C51.1129 6.33861 51.3514 6.27954 51.592 6.24317C51.626 6.31125 51.6651 6.37948 51.7023 6.44611C51.7216 6.48442 52.2822 6.24317 52.3357 6.21452C52.5078 6.12311 52.7481 5.93916 52.7531 5.71674C52.7611 5.44604 52.5337 5.1763 52.3274 5.04112C52.0967 4.89016 51.8353 4.84059 51.5642 4.83801C51.2703 4.83399 50.9748 4.85217 50.6856 4.89128C50.481 4.91977 50.2797 4.96628 50.08 5.02534C49.7487 5.12432 49.4335 5.25854 49.1332 5.43107C48.7338 5.65993 48.3439 5.96684 48.0306 6.30803C47.8812 6.47025 47.7464 6.65067 47.6342 6.84267C47.4897 7.08729 47.3841 7.35783 47.2997 7.6303C47.0707 8.38366 47.1409 9.32242 47.4718 10.0333C47.6995 10.5219 48.0516 10.9456 48.503 11.2307C49.0715 11.5897 49.7908 11.7079 50.4423 11.5794C50.715 11.5271 50.9568 11.4539 51.2085 11.349C51.4749 11.2382 51.7346 11.1565 51.9833 11.0091C52.0321 10.9825 52.5628 10.6701 52.5935 10.7118C52.6768 10.8227 52.725 10.9584 52.8148 11.0643C52.9007 11.1666 53.0096 11.26 53.1132 11.3398C53.3326 11.5088 53.5811 11.5756 53.8491 11.6077C54.5197 11.6905 55.2003 11.732 55.8758 11.741C56.4147 11.7486 56.9605 11.7112 57.4963 11.6596C57.8439 11.6261 58.1916 11.5794 58.5373 11.5363C59.4177 11.4254 60.145 11.2249 61.0984 10.8027C61.5482 10.5856 61.8275 10.3062 61.9998 10.1002C61.8989 10.0349 61.782 9.97873 61.6716 9.93254C60.9782 9.64703 60.1873 9.63512 59.4502 9.73184C59.1106 9.77626 58.7714 9.81022 58.4318 9.8408C58.284 9.85512 58.1362 9.86671 57.9884 9.87782Z' fill='black'/>
        <path fill-rule='evenodd' clip-rule='evenodd' d='M46.2863 10.7345C46.294 10.6083 46.2802 10.482 46.2445 10.3844C46.1501 10.1303 45.8885 9.87232 45.6283 9.82323C45.393 9.77946 45.1096 9.82549 44.9177 9.98031C44.814 10.0645 44.701 10.2003 44.6467 10.3265C44.5275 10.6033 44.5399 11.0147 44.7148 11.2599C45.0106 11.6753 45.636 11.6753 45.9842 11.3386C46.1516 11.1782 46.2693 10.9736 46.2863 10.7345Z' fill='black'/>
        </svg>`;
IconsLibrary.individualSvg = `<svg width='70' height='70' viewBox='0 0 70 70' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M44.9996 42.6667V34.3334C44.9996 29.2167 42.2663 24.9334 37.4996 23.8001V22.6667C37.4996 21.2834 36.3663 20.1667 34.983 20.1667C33.5996 20.1667 32.4996 21.2834 32.4996 22.6667V23.8001C27.7163 24.9334 24.9996 29.2001 24.9996 34.3334V42.6667L22.833 44.8167C21.783 45.8667 22.5163 47.6667 23.9996 47.6667H45.9496C47.433 47.6667 48.183 45.8667 47.133 44.8167L44.9996 42.6667ZM34.983 52.6667C36.8163 52.6667 38.3163 51.1667 38.3163 49.3334H31.6496C31.6496 51.1667 33.133 52.6667 34.983 52.6667ZM26.283 23.8834C26.983 23.2501 26.9996 22.1667 26.333 21.5001C25.6996 20.8667 24.6663 20.8501 24.0163 21.4667C21.1663 24.0667 19.1996 27.6001 18.5663 31.5667C18.4163 32.5834 19.1996 33.5001 20.233 33.5001C21.033 33.5001 21.733 32.9167 21.8663 32.1167C22.3663 28.8834 23.9663 26.0001 26.283 23.8834V23.8834ZM45.9996 21.4667C45.333 20.8501 44.2996 20.8667 43.6663 21.5001C42.9996 22.1667 43.033 23.2334 43.7163 23.8667C46.0163 25.9834 47.633 28.8667 48.133 32.1001C48.2496 32.9001 48.9496 33.4834 49.7663 33.4834C50.783 33.4834 51.583 32.5667 51.4163 31.5501C50.783 27.6001 48.833 24.0834 45.9996 21.4667V21.4667Z' fill='url(#paint0_linear_1223_44583)'/>
        <defs>
        <linearGradient id='paint0_linear_1223_44583' x1='-8.21053' y1='20.1668' x2='67.8338' y2='20.0506' gradientUnits='userSpaceOnUse'>
        <stop stop-color='#7075F3'/>
        <stop offset='0.447917' stop-color='#8A96FF'/>
        <stop offset='1' stop-color='#BD95FF'/>
        </linearGradient>
        </defs>
        </svg>
        `;
IconsLibrary.signatureSvg = `<svg width='14' height='14' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M6.00033 0.166687C2.78033 0.166687 0.166992 2.78002 0.166992 6.00002C0.166992 9.22002 2.78033 11.8334 6.00033 11.8334C9.22033 11.8334 11.8337 9.22002 11.8337 6.00002C11.8337 2.78002 9.22033 0.166687 6.00033 0.166687ZM4.41949 8.50252L2.32533 6.40835C2.09783 6.18085 2.09783 5.81335 2.32533 5.58585C2.55283 5.35835 2.92033 5.35835 3.14783 5.58585L4.83366 7.26585L8.84699 3.25252C9.07449 3.02502 9.44199 3.02502 9.66949 3.25252C9.89699 3.48002 9.89699 3.84752 9.66949 4.07502L5.24199 8.50252C5.02033 8.73002 4.64699 8.73002 4.41949 8.50252Z' fill='#7075F3'/>
        </svg>
        `;
IconsLibrary.starSvg = `<svg width='13' height='13' viewBox='0 0 13 13' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M8.59742 4.6931L7.47807 1.00763C7.25725 0.284241 6.23689 0.284241 6.02368 1.00763L4.89672 4.6931H1.50822C0.769608 4.6931 0.465023 5.64492 1.06658 6.07134L3.83829 8.05114L2.7494 11.5615C2.52858 12.2696 3.35096 12.8407 3.93728 12.3915L6.74707 10.2594L9.55686 12.3991C10.1432 12.8483 10.9656 12.2772 10.7447 11.5691L9.65585 8.05875L12.4276 6.07895C13.0291 5.64492 12.7245 4.70071 11.9859 4.70071H8.59742V4.6931Z' fill='#EF9F42'/>
        </svg>
        `;
IconsLibrary.facebookSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M 5 3 h 14 a 2 2 0 0 1 2 2 v 14 a 2 2 0 0 1 -2 2 H 5 a 2 2 0 0 1 -2 -2 V 5 a 2 2 0 0 1 2 -2 m 13 2 h -2.5 A 3.5 3.5 0 0 0 12 8.5 V 11 h -2 v 3 h 2 v 7 h 3 v -7 h 3 v -3 h -3 V 9 a 1 1 0 0 1 1 -1 h 2 V 5 Z'/>
        </svg>
        `;
IconsLibrary.instagramSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4H7.6m9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8 1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z'/>
        </svg>
        `;
IconsLibrary.youtubeSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M10 15l5.19-3L10 9v6m11.56-7.83c.13.47.22 1.1.28 1.9.07.8.1 1.49.1 2.09L22 12c0 2.19-.16 3.8-.44 4.83-.25.9-.83 1.48-1.73 1.73-.47.13-1.33.22-2.65.28-1.3.07-2.49.1-3.59.1L12 19c-4.19 0-6.8-.16-7.83-.44-.9-.25-1.48-.83-1.73-1.73-.13-.47-.22-1.1-.28-1.9-.07-.8-.1-1.49-.1-2.09L2 12c0-2.19.16-3.8.44-4.83.25-.9.83-1.48 1.73-1.73.47-.13 1.33-.22 2.65-.28 1.3-.07 2.49-.1 3.59-.1L12 5c4.19 0 6.8.16 7.83.44.9.25 1.48.83 1.73 1.73z'/>
        </svg>
        `;
IconsLibrary.localShippingSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9 1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/>
        </svg>
        `;
IconsLibrary.infoSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z'/>
        </svg>
        `;
IconsLibrary.mailSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4-8 5-8-5V6l8 5 8-5v2z'/>
        </svg>
        `;
IconsLibrary.cardGiftcardSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20 6h-2.18c.11-.31.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.07.69.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2h16v2zm0-5H4V8h5.08L7 10.83 8.62 12 11 8.76l1-1.36 1 1.36L15.38 12 17 10.83 14.92 8H20v6z'/>
        </svg>
        `;
IconsLibrary.percentSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M7.5 11C9.43 11 11 9.43 11 7.5S9.43 4 7.5 4 4 5.57 4 7.5 5.57 11 7.5 11zm0-5C8.33 6 9 6.67 9 7.5S8.33 9 7.5 9 6 8.33 6 7.5 6.67 6 7.5 6zM4.0025 18.5832 18.59 3.9955l1.4142 1.4143L5.4167 19.9974zM16.5 13c-1.93 0-3.5 1.57-3.5 3.5s1.57 3.5 3.5 3.5 3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5zm0 5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/>
        </svg>
        `;
IconsLibrary.notificationsActiveSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M7.58 4.08 6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c.15-2.65 1.51-4.97 3.55-6.42zm12.39 6.42h2c-.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42zM18 11c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2v-5zm-6 11c.14 0 .27-.01.4-.04.65-.14 1.18-.58 1.44-1.18.1-.24.15-.5.15-.78h-4c.01 1.1.9 2 2.01 2z'/>
        </svg>
        `;
IconsLibrary.productionQuantityLimitsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M13 10h-2V8h2v2zm0-4h-2V1h2v5zM7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-8.9-5h7.45c.75 0 1.41-.41 1.75-1.03L21 4.96 19.25 4l-3.7 7H8.53L4.27 2H1v2h2l3.6 7.59-1.35 2.44C4.52 15.37 5.48 17 7 17h12v-2H7l1.1-2z'/>
        </svg>
        `;
IconsLibrary.favoriteSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z'/>
        </svg>
        `;
IconsLibrary.emojiEmotionsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM8.5 8c.83 0 1.5.67 1.5 1.5S9.33 11 8.5 11 7 10.33 7 9.5 7.67 8 8.5 8zM12 18c-2.28 0-4.22-1.66-5-4h10c-.78 2.34-2.72 4-5 4zm3.5-7c-.83 0-1.5-.67-1.5-1.5S14.67 8 15.5 8s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/>
        </svg>
        `;
IconsLibrary.sentimentSatisfiedAltSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-2.5c2.33 0 4.32-1.45 5.12-3.5h-1.67c-.69 1.19-1.97 2-3.45 2s-2.75-.81-3.45-2H6.88c.8 2.05 2.79 3.5 5.12 3.5z'/>
        </svg>
        `;
IconsLibrary.touchAppSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M9 11.24V7.5C9 6.12 10.12 5 11.5 5S14 6.12 14 7.5v3.74c1.21-.81 2-2.18 2-3.74C16 5.01 13.99 3 11.5 3S7 5.01 7 7.5c0 1.56.79 2.93 2 3.74zm9.84 4.63-4.54-2.26c-.17-.07-.35-.11-.54-.11H13v-6c0-.83-.67-1.5-1.5-1.5S10 6.67 10 7.5v10.74c-3.6-.76-3.54-.75-3.67-.75-.31 0-.59.13-.79.33l-.79.8 4.94 4.94c.27.27.65.44 1.06.44h6.79c.75 0 1.33-.55 1.44-1.28l.75-5.27c.01-.07.02-.14.02-.2 0-.62-.38-1.16-.91-1.38z'/>
        </svg>
        `;
IconsLibrary.alarmSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m22 5.72-4.6-3.86-1.29 1.53 4.6 3.86L22 5.72zM7.88 3.39 6.6 1.86 2 5.71l1.29 1.53 4.59-3.85zM12.5 8H11v6l4.75 2.85.75-1.23-4-2.37V8zM12 4c-4.97 0-9 4.03-9 9s4.02 9 9 9c4.97 0 9-4.03 9-9s-4.03-9-9-9zm0 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z'/>
        </svg>
        `;
IconsLibrary.childFriendlySvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M13 2v8h8c0-4.42-3.58-8-8-8zm6.32 13.89C20.37 14.54 21 12.84 21 11H6.44l-.95-2H2v2h2.22s1.89 4.07 2.12 4.42c-1.1.59-1.84 1.75-1.84 3.08C4.5 20.43 6.07 22 8 22c1.76 0 3.22-1.3 3.46-3h2.08c.24 1.7 1.7 3 3.46 3 1.93 0 3.5-1.57 3.5-3.5 0-1.04-.46-1.97-1.18-2.61zM8 20c-.83 0-1.5-.67-1.5-1.5S7.17 17 8 17s1.5.67 1.5 1.5S8.83 20 8 20zm9 0c-.83 0-1.5-.67-1.5-1.5S16.17 17 17 17s1.5.67 1.5 1.5S17.83 20 17 20z'/>
        </svg>
        `;
IconsLibrary.starIconSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z'/>
        </svg>
        `;
IconsLibrary.visibilitySvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z'/>
        </svg>
        `;
IconsLibrary.faceSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M9 11.75c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zm6 0c-.69 0-1.25.56-1.25 1.25s.56 1.25 1.25 1.25 1.25-.56 1.25-1.25-.56-1.25-1.25-1.25zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8 0-.29.02-.58.05-.86 2.36-1.05 4.23-2.98 5.21-5.37C11.07 8.33 14.05 10 17.42 10c.78 0 1.53-.09 2.25-.26.21.71.33 1.47.33 2.26 0 4.41-3.59 8-8 8z'/>
        </svg>
        `;
IconsLibrary.face3Svg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M22.91 11.96C22.39 6.32 17.66 2 12 2S1.61 6.32 1.09 11.96l-.9 9.86c-.1 1.17.82 2.18 2 2.18h19.62c1.18 0 2.1-1.01 1.99-2.18l-.89-9.86zM4.54 9.13c.87.55 1.89.87 2.96.87 1.86 0 3.5-.93 4.5-2.35C13 9.07 14.64 10 16.5 10c1.07 0 2.09-.32 2.96-.87.34.89.54 1.86.54 2.87 0 4.41-3.59 8-8 8s-8-3.59-8-8c0-1.01.2-1.98.54-2.87z'/>
        </svg>
        `;
IconsLibrary.addShoppingCartSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11 9h2V6h3V4h-3V1h-2v3H8v2h3v3zm-4 9c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zm10 0c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm-9.83-3.25.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.86-7.01L19.42 4h-.01l-1.1 2-2.76 5H8.53l-.13-.27L6.16 6l-.95-2-.94-2H1v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.13 0-.25-.11-.25-.25z'/>
        </svg>
        `;
IconsLibrary.markMailReadSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 19c0-3.87 3.13-7 7-7 1.08 0 2.09.25 3 .68V6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h8.08c-.05-.33-.08-.66-.08-1zM4 6l8 5 8-5v2l-8 5-8-5V6zm13.34 16-3.54-3.54 1.41-1.41 2.12 2.12 4.24-4.24L23 16.34 17.34 22z'/>
        </svg>
        `;
IconsLibrary.listAltSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M19 5v14H5V5h14m1.1-2H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6zM7 7h2v2H7zm0 4h2v2H7zm0 4h2v2H7z'/>
        </svg>
        `;
IconsLibrary.peopleSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z'/>
        </svg>
`;
IconsLibrary.acUnitSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M22 11h-4.17l3.24-3.24-1.41-1.42L15 11h-2V9l4.66-4.66-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93 6.34 4.34 11 9v2H9L4.34 6.34 2.93 7.76 6.17 11H2v2h4.17l-3.24 3.24 1.41 1.42L9 13h2v2l-4.66 4.66 1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24 1.42-1.41L13 15v-2h2l4.66 4.66 1.41-1.42L17.83 13H22z'/>
        </svg>
        `;
IconsLibrary.callSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20.01 15.38c-1.23 0-2.42-.2-3.53-.56-.35-.12-.74-.03-1.01.24l-1.57 1.97c-2.83-1.35-5.48-3.9-6.89-6.83l1.95-1.66c.27-.28.35-.67.24-1.02-.37-1.11-.56-2.3-.56-3.53 0-.54-.45-.99-.99-.99H4.19C3.65 3 3 3.24 3 3.99 3 13.28 10.73 21 20.01 21c.71 0 .99-.63.99-1.18v-3.45c0-.54-.45-.99-.99-.99z'/>
        </svg>
        `;
IconsLibrary.addAPhotoSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M3 4V1h2v3h3v2H5v3H3V6H0V4h3zm3 6V7h3V4h7l1.83 2H21c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V10h3zm7 9c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-3.2-5c0 1.77 1.43 3.2 3.2 3.2s3.2-1.43 3.2-3.2-1.43-3.2-3.2-3.2-3.2 1.43-3.2 3.2z'/>
        </svg>
        `;
IconsLibrary.appleSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z'/>
        </svg>
        `;
IconsLibrary.autoAwesomeSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m19 9 1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25L19 9zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12l-5.5-2.5zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25L19 15z'/>
        </svg>
        `;
IconsLibrary.audiotrackSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 3v9.28c-.47-.17-.97-.28-1.5-.28C8.01 12 6 14.01 6 16.5S8.01 21 10.5 21c2.31 0 4.2-1.75 4.45-4H15V6h4V3h-7z'/>
        </svg>
        `;
IconsLibrary.beachAccessSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m13.127 14.56 1.43-1.43 6.44 6.443L19.57 21zm4.293-5.73 2.86-2.86c-3.95-3.95-10.35-3.96-14.3-.02 3.93-1.3 8.31-.25 11.44 2.88zM5.95 5.98c-3.94 3.95-3.93 10.35.02 14.3l2.86-2.86C5.7 14.29 4.65 9.91 5.95 5.98zm.02-.02-.01.01c-.38 3.01 1.17 6.88 4.3 10.02l5.73-5.73c-3.13-3.13-7.01-4.68-10.02-4.3z'/>
        </svg>
        `;
IconsLibrary.celebrationSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m2 22 14-5-9-9zm12.53-9.47 5.59-5.59c.49-.49 1.28-.49 1.77 0l.59.59 1.06-1.06-.59-.59c-1.07-1.07-2.82-1.07-3.89 0l-5.59 5.59 1.06 1.06zm-4.47-5.65-.59.59 1.06 1.06.59-.59c1.07-1.07 1.07-2.82 0-3.89l-.59-.59-1.06 1.07.59.59c.48.48.48 1.28 0 1.76zm7 5-1.59 1.59 1.06 1.06 1.59-1.59c.49-.49 1.28-.49 1.77 0l1.61 1.61 1.06-1.06-1.61-1.61c-1.08-1.07-2.82-1.07-3.89 0zm-2-6-3.59 3.59 1.06 1.06 3.59-3.59c1.07-1.07 1.07-2.82 0-3.89l-1.59-1.59-1.06 1.06 1.59 1.59c.48.49.48 1.29 0 1.77z'/>
        </svg>
        `;
IconsLibrary.checkCircleSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z'/>
        </svg>
        `;
IconsLibrary.childCareSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M22.94 12.66c.04-.21.06-.43.06-.66s-.02-.45-.06-.66c-.25-1.51-1.36-2.74-2.81-3.17-.53-1.12-1.28-2.1-2.19-2.91C16.36 3.85 14.28 3 12 3s-4.36.85-5.94 2.26c-.92.81-1.67 1.8-2.19 2.91-1.45.43-2.56 1.65-2.81 3.17-.04.21-.06.43-.06.66s.02.45.06.66c.25 1.51 1.36 2.74 2.81 3.17.52 1.11 1.27 2.09 2.17 2.89C7.62 20.14 9.71 21 12 21s4.38-.86 5.97-2.28c.9-.8 1.65-1.79 2.17-2.89 1.44-.43 2.55-1.65 2.8-3.17zM19 14c-.1 0-.19-.02-.29-.03-.2.67-.49 1.29-.86 1.86C16.6 17.74 14.45 19 12 19s-4.6-1.26-5.85-3.17c-.37-.57-.66-1.19-.86-1.86-.1.01-.19.03-.29.03-1.1 0-2-.9-2-2s.9-2 2-2c.1 0 .19.02.29.03.2-.67.49-1.29.86-1.86C7.4 6.26 9.55 5 12 5s4.6 1.26 5.85 3.17c.37.57.66 1.19.86 1.86.1-.01.19-.03.29-.03 1.1 0 2 .9 2 2s-.9 2-2 2zM7.5 14c.76 1.77 2.49 3 4.5 3s3.74-1.23 4.5-3h-9z'/>
        </svg>
        `;
IconsLibrary.coffeeSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M18.5 3H6c-1.1 0-2 .9-2 2v5.71c0 3.83 2.95 7.18 6.78 7.29 3.96.12 7.22-3.06 7.22-7v-1h.5c1.93 0 3.5-1.57 3.5-3.5S20.43 3 18.5 3zM16 5v3H6V5h10zm2.5 3H18V5h.5c.83 0 1.5.67 1.5 1.5S19.33 8 18.5 8zM4 19h16v2H4v-2z'/>
        </svg>
        `;
IconsLibrary.colorLensSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9c.83 0 1.5-.67 1.5-1.5 0-.39-.15-.74-.39-1.01-.23-.26-.38-.61-.38-.99 0-.83.67-1.5 1.5-1.5H16c2.76 0 5-2.24 5-5 0-4.42-4.03-8-9-8zm-5.5 9c-.83 0-1.5-.67-1.5-1.5S5.67 9 6.5 9 8 9.67 8 10.5 7.33 12 6.5 12zm3-4C8.67 8 8 7.33 8 6.5S8.67 5 9.5 5s1.5.67 1.5 1.5S10.33 8 9.5 8zm5 0c-.83 0-1.5-.67-1.5-1.5S13.67 5 14.5 5s1.5.67 1.5 1.5S15.33 8 14.5 8zm3 4c-.83 0-1.5-.67-1.5-1.5S16.67 9 17.5 9s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z'/>
        </svg>
        `;
IconsLibrary.emojiObjectsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 3c-.46 0-.93.04-1.4.14-2.76.53-4.96 2.76-5.48 5.52-.48 2.61.48 5.01 2.22 6.56.43.38.66.91.66 1.47V19c0 1.1.9 2 2 2h.28c.35.6.98 1 1.72 1s1.38-.4 1.72-1H14c1.1 0 2-.9 2-2v-2.31c0-.55.22-1.09.64-1.46C18.09 13.95 19 12.08 19 10c0-3.87-3.13-7-7-7zm2 16h-4v-1h4v1zm0-2h-4v-1h4v1zm-1.5-5.59V14h-1v-2.59L9.67 9.59l.71-.71L12 10.5l1.62-1.62.71.71-1.83 1.82z'/>
        </svg>
        `;
IconsLibrary.emojiNatureSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M21.94 4.88c-.18-.53-.69-.88-1.26-.88H19.6l-.31-.97C19.15 2.43 18.61 2 18 2s-1.15.43-1.29 1.04L16.4 4h-1.07c-.57 0-1.08.35-1.26.88-.19.56.04 1.17.56 1.48l.87.52-.4 1.24c-.23.58-.04 1.25.45 1.62.23.17.51.26.78.26.31 0 .61-.11.86-.32l.81-.7.81.7c.25.21.55.32.86.32.27 0 .55-.09.78-.26.5-.37.68-1.04.45-1.62l-.39-1.24.87-.52c.51-.31.74-.92.56-1.48zM18 7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-4.51 3.51c-.43-.43-.94-.73-1.49-.93V8h-1v1.38c-.11-.01-.23-.03-.34-.03-1.02 0-2.05.39-2.83 1.17-.16.16-.3.34-.43.53L6 10.52c-1.56-.55-3.28.27-3.83 1.82-.27.75-.23 1.57.12 2.29.23.48.58.87 1 1.16-.38 1.35-.06 2.85 1 3.91s2.57 1.38 3.91 1c.29.42.68.77 1.16 1 .42.2.85.3 1.29.30.34 0 .68-.06 1.01-.17 1.56-.55 2.38-2.27 1.82-3.85l-.52-1.37c.18-.13.36-.27.53-.43.87-.87 1.24-2.04 1.14-3.17H16v-1h-1.59c-.19-.55-.49-1.06-.92-1.5zm-8.82 3.78c-.25-.09-.45-.27-.57-.51s-.13-.51-.04-.76c.19-.52.76-.79 1.26-.61l3.16 1.19c-1.15.6-2.63 1.11-3.81.69zm6.32 5.65c-.25.09-.52.08-.76-.04-.24-.11-.42-.32-.51-.57-.42-1.18.09-2.65.7-3.8l1.18 3.13c.18.52-.09 1.1-.61 1.28zm1.21-5.34-.61-1.61c0-.01-.01-.02-.02-.03l-.06-.12c-.02-.04-.04-.07-.07-.11l-.09-.09-.09-.09c-.03-.03-.07-.05-.11-.07-.04-.02-.07-.05-.12-.06-.01 0-.02-.01-.03-.02l-1.6-.6c.36-.29.79-.46 1.26-.46.53 0 1.04.21 1.41.59.73.73.77 1.88.13 2.67z'/>
        </svg>
        `;
IconsLibrary.euroSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M15 18.5c-2.51 0-4.68-1.42-5.76-3.5H15l1-2H8.58c-.05-.33-.08-.66-.08-1s.03-.67.08-1H15l1-2H9.24C10.32 6.92 12.5 5.5 15 5.5c1.61 0 3.09.59 4.23 1.57L21 5.3C19.41 3.87 17.3 3 15 3c-3.92 0-7.24 2.51-8.48 6H3l-1 2h4.06c-.04.33-.06.66-.06 1s.02.67.06 1H3l-1 2h4.52c1.24 3.49 4.56 6 8.48 6 2.31 0 4.41-.87 6-2.3l-1.78-1.77c-1.13.98-2.6 1.57-4.22 1.57z'/>
        </svg>
        `;
IconsLibrary.extensionSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z'/>
        </svg>
        `;
IconsLibrary.familyRestroomSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M16 4c0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm4 18v-6h2.5l-2.54-7.63C19.68 7.55 18.92 7 18.06 7h-.12c-.86 0-1.63.55-1.9 1.37l-.86 2.58c1.08.6 1.82 1.73 1.82 3.05v8h3zm-7.5-10.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5S11 9.17 11 10s.67 1.5 1.5 1.5zM5.5 6c1.11 0 2-.89 2-2s-.89-2-2-2-2 .89-2 2 .89 2 2 2zm2 16v-7H9V9c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v6h1.5v7h4zm6.5 0v-4h1v-4c0-.82-.68-1.5-1.5-1.5h-2c-.82 0-1.5.68-1.5 1.5v4h1v4h3z'/>
        </svg>
        `;
IconsLibrary.fastfoodSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M18.06 22.99h1.66c.84 0 1.53-.64 1.63-1.46L23 5.05h-5V1h-1.97v4.05h-4.97l.3 2.34c1.71.47 3.31 1.32 4.27 2.26 1.44 1.42 2.43 2.89 2.43 5.29v8.05zM1 21.99V21h15.03v.99c0 .55-.45 1-1.01 1H2.01c-.56 0-1.01-.45-1.01-1zm15.03-7c0-8-15.03-8-15.03 0h15.03zM1.02 17h15v2h-15z'/>
        </svg>
        `;
IconsLibrary.fitnessCenterSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20.57 14.86 22 13.43 20.57 12 17 15.57 8.43 7 12 3.43 10.57 2 9.14 3.43 7.71 2 5.57 4.14 4.14 2.71 2.71 4.14l1.43 1.43L2 7.71l1.43 1.43L2 10.57 3.43 12 7 8.43 15.57 17 12 20.57 13.43 22l1.43-1.43L16.29 22l2.14-2.14 1.43 1.43 1.43-1.43-1.43-1.43L22 16.29z'/>
        </svg>
        `;
IconsLibrary.flagSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M14.4 6 14 4H5v17h2v-7h5.6l.4 2h7V6z'/>
        </svg>
        `;
IconsLibrary.flatwareSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M16 7.08c0 1.77-.84 3.25-2 3.82V21h-2V10.9c-1.16-.57-2-2.05-2-3.82C10.01 4.83 11.35 3 13 3c1.66 0 3 1.83 3 4.08zM17 3v18h2v-8h2V7c0-1.76-1.24-4-4-4zM8.28 3c-.4 0-.72.32-.72.72V7h-.84V3.72C6.72 3.32 6.4 3 6 3s-.72.32-.72.72V7h-.84V3.72c0-.4-.32-.72-.72-.72S3 3.32 3 3.72V9c0 1.1.9 2 2 2v10h2V11c1.1 0 2-.9 2-2V3.72c0-.4-.32-.72-.72-.72z'/>
        </svg>
        `;
IconsLibrary.flutterDashSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11.07 11.7c.29-.39.81-.56 1.27-.37.17.07.32.18.43.33.22.28.25.59.22.85-.05.33-.25.63-.54.79 0 0-4.87 2.95-5.07 2.69s3.69-4.29 3.69-4.29zM22 10c0 2.5-1 3-1.5 3-.23 0-.44-.1-.62-.26-.48 3.32-2.36 5.31-5.33 5.99.11.44.48.77.95.77h.58c.22 0 .41.15.48.36.17.52.66 1.02 1.02 1.32.25.21.24.59-.03.78-.34.24-.9.49-1.79.53-.18.01-.35-.07-.45-.22-.13-.2-.31-.56-.31-1.01 0-.3.04-.57.09-.8-.78-.16-1.39-.78-1.55-1.56-.49.06-1 .1-1.54.1-.88 0-1.7-.09-2.45-.25-.02.08-.05.16-.05.25 0 .55.45 1 1 1h.58c.22 0 .41.15.48.36.17.52.66 1.02 1.02 1.32.25.21.24.59-.03.78-.34.24-.9.49-1.79.53-.18.01-.35-.07-.45-.22-.13-.2-.31-.56-.31-1.01 0-.3.04-.57.09-.8-.9-.19-1.59-1-1.59-1.96 0-.18.03-.36.08-.53-2.46-.86-4.03-2.78-4.46-5.74-.18.17-.38.27-.62.27C3 13 2 12.5 2 10c0-2.27 1.7-4.5 3-4.5.43 0 .49.49.5.85 1.28-1.78 3.26-3.02 5.55-3.29.2-.96 1.08-1.56 1.95-1.56v1s.33-.5 1-.5c.67 0 1 .5 1 .5-.49 0-.85.35-.96.77 1.82.48 3.39 1.59 4.46 3.08.01-.36.07-.85.5-.85 1.3 0 3 2.23 3 4.5zM5 11c0 .81.1 1.53.25 2.21.18-.69.46-1.33.83-1.92-.21-.47-.34-.99-.34-1.54C5.75 7.68 7.43 6 9.5 6c.96 0 1.84.37 2.5.97.66-.6 1.54-.97 2.5-.97 2.07 0 3.75 1.68 3.75 3.75 0 .55-.12 1.07-.34 1.54.37.59.66 1.24.84 1.94.15-.68.25-1.41.25-2.23 0-3.86-3.14-7-7-7s-7 3.14-7 7zm12.98 4.29c0-.1.02-.19.02-.29 0-1.01-.26-1.95-.7-2.78-.69.78-1.68 1.28-2.8 1.28-.27 0-.54-.03-.79-.09.14-.23.23-.49.27-.77.01-.07.01-.13.02-.19.17.03.33.05.5.05 1.52 0 2.75-1.23 2.75-2.75S16.02 7 14.5 7c-.67 0-1.32.25-1.83.72l-.67.6-.67-.6C10.82 7.25 10.17 7 9.5 7 7.98 7 6.75 8.23 6.75 9.75c0 1.34.96 2.46 2.23 2.7l-.76.83c-.6-.22-1.12-.59-1.53-1.05C6.26 13.06 6 14 6 15c0 .08.01.15.01.24C7.13 17.06 9.14 18 12 18c2.88 0 4.88-.91 5.98-2.71zM16 9.75c0 .97-.67 1.75-1.5 1.75S13 10.72 13 9.75 13.67 8 14.5 8s1.5.78 1.5 1.75zm-.75-.87c0-.21-.17-.38-.38-.38s-.37.17-.37.38.17.38.38.38.37-.18.37-.38zM11 9.75c0 .97-.67 1.75-1.5 1.75S8 10.72 8 9.75 8.67 8 9.5 8s1.5.78 1.5 1.75zm-.75-.87c0-.21-.17-.38-.38-.38s-.37.17-.37.38.17.38.38.38.37-.18.37-.38z'/>
        </svg>
        `;
IconsLibrary.forestSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M16 12 9 2 2 12h1.86L0 18h7v4h4v-4h7l-3.86-6z'/>
        </svg>
        `;
IconsLibrary.groupsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 12.75c1.63 0 3.07.39 4.24.9 1.08.48 1.76 1.56 1.76 2.73V18H6v-1.61c0-1.18.68-2.26 1.76-2.73 1.17-.52 2.61-.91 4.24-.91zM4 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm1.13 1.1c-.37-.06-.74-.1-1.13-.1-.99 0-1.93.21-2.78.58C.48 14.9 0 15.62 0 16.43V18h4.5v-1.61c0-.83.23-1.61.63-2.29zM20 13c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4 3.43c0-.81-.48-1.53-1.22-1.85-.85-.37-1.79-.58-2.78-.58-.39 0-.76.04-1.13.1.4.68.63 1.46.63 2.29V18H24v-1.57zM12 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3z'/>
        </svg>
        `;
IconsLibrary.iceSkatingSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M8 8.5c0-.28.22-.5.5-.5h2.52L11 7H8.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5H11V3H3v15h3v2H2v2h16c2.76 0 5-2.24 5-5h-2c0 1.66-1.34 3-3 3h-2v-2h3v-2.88c0-2.1-1.55-3.53-3.03-3.88l-2.7-.67c-.87-.22-1.57-.81-1.95-1.57H8.5c-.28 0-.5-.22-.5-.5zM14 20H8v-2h6v2z'/>
        </svg>
        `;
IconsLibrary.icecreamSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m8.79 12.4 3.26 6.22 3.17-6.21c-.11-.08-.21-.16-.3-.25-.84.53-1.85.84-2.92.84s-2.08-.31-2.92-.84c-.09.09-.19.17-.29.24zm-1.96.59C5.25 12.9 4 11.6 4 10c0-1.49 1.09-2.73 2.52-2.96C6.75 4.22 9.12 2 12 2s5.25 2.22 5.48 5.04C18.91 7.27 20 8.51 20 10c0 1.59-1.24 2.9-2.81 2.99L12.07 23 6.83 12.99z'/>
        </svg>
        `;
IconsLibrary.liquorSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M3 14c0 1.3.84 2.4 2 2.82V20H3v2h6v-2H7v-3.18C8.16 16.4 9 15.3 9 14V6H3v8zm2-6h2v3H5V8zm15.63.54-.95-.32c-.4-.13-.68-.51-.68-.94V3c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v4.28c0 .43-.28.81-.68.95l-.95.32c-.82.27-1.37 1.03-1.37 1.89V20c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-9.56c0-.86-.55-1.62-1.37-1.9zM16 4h1v1h-1V4zm-3 6.44.95-.32C15.18 9.72 16 8.57 16 7.28V7h1v.28c0 1.29.82 2.44 2.05 2.85l.95.31V12h-7v-1.56zM20 20h-7v-2h7v2z'/>
        </svg>
        `;
IconsLibrary.moodSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z'/>
        </svg>
        `;
IconsLibrary.newReleasesSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m23 12-2.44-2.78.34-3.68-3.61-.82-1.89-3.18L12 3 8.6 1.54 6.71 4.72l-3.61.81.34 3.68L1 12l2.44 2.78-.34 3.69 3.61.82 1.89 3.18L12 21l3.4 1.46 1.89-3.18 3.61-.82-.34-3.68L23 12zm-10 5h-2v-2h2v2zm0-4h-2V7h2v6z'/>
        </svg>
        `;
IconsLibrary.petsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M17.34 14.86c-.87-1.02-1.6-1.89-2.48-2.91-.46-.54-1.05-1.08-1.75-1.32-.11-.04-.22-.07-.33-.09-.25-.04-.52-.04-.78-.04s-.53 0-.79.05c-.11.02-.22.05-.33.09-.7.24-1.28.78-1.75 1.32-.87 1.02-1.6 1.89-2.48 2.91-1.31 1.31-2.92 2.76-2.62 4.79.29 1.02 1.02 2.03 2.33 2.32.73.15 3.06-.44 5.54-.44h.18c2.48 0 4.81.58 5.54.44 1.31-.29 2.04-1.31 2.33-2.32.31-2.04-1.3-3.49-2.61-4.8z'/>
        </svg>
        `;
IconsLibrary.phishingSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M19 9c0-1.3-.84-2.4-2-2.82V2h-2v4.18C13.84 6.6 13 7.7 13 9s.84 2.4 2 2.82V15c0 2.21-1.79 4-4 4s-4-1.79-4-4v-1h3L5 9v6c0 3.31 2.69 6 6 6s6-2.69 6-6v-3.18c1.16-.42 2-1.52 2-2.82zm-3 1c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z'/>
        </svg>
        `;
IconsLibrary.rocketSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M12 2.5s4.5 2.04 4.5 10.5c0 2.49-1.04 5.57-1.6 7H9.1c-.56-1.43-1.6-4.51-1.6-7C7.5 4.54 12 2.5 12 2.5zm2 8.5c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2zm-6.31 9.52c-.48-1.23-1.52-4.17-1.67-6.87l-1.13.75c-.56.38-.89 1-.89 1.67V22l3.69-1.48zM20 22v-5.93c0-.67-.33-1.29-.89-1.66l-1.13-.75c-.15 2.69-1.2 5.64-1.67 6.87L20 22z'/>
        </svg>
        `;
IconsLibrary.savingsSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m19.83 7.5-2.27-2.27c.07-.42.18-.81.32-1.15.08-.18.12-.37.12-.58 0-.83-.67-1.5-1.5-1.5-1.64 0-3.09.79-4 2h-5C4.46 4 2 6.46 2 9.5S4.5 21 4.5 21H10v-2h2v2h5.5l1.68-5.59 2.82-.94V7.5h-2.17zM13 9H8V7h5v2zm3 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z'/>
        </svg>
        `;
IconsLibrary.schoolSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3 1 9l11 6 9-4.91V17h2V9L12 3z'/>
        </svg>
        `;
IconsLibrary.sportsBaseballSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M3.81 6.28C2.67 7.9 2 9.87 2 12s.67 4.1 1.81 5.72C6.23 16.95 8 14.68 8 12S6.23 7.05 3.81 6.28zm16.38 0C17.77 7.05 16 9.32 16 12s1.77 4.95 4.19 5.72C21.33 16.1 22 14.13 22 12s-.67-4.1-1.81-5.72z'/>
        </svg>
        `;
IconsLibrary.sportsFootballSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M3.02 15.62c-.08 2.42.32 4.34.67 4.69s2.28.76 4.69.67l-5.36-5.36zM13.08 3.28c-2.33.42-4.79 1.34-6.62 3.18s-2.76 4.29-3.18 6.62l7.63 7.63c2.34-.41 4.79-1.34 6.62-3.18s2.76-4.29 3.18-6.62l-7.63-7.63zM9.9 15.5l-1.4-1.4 5.6-5.6 1.4 1.4-5.6 5.6zm11.08-7.12c.08-2.42-.32-4.34-.67-4.69s-2.28-.76-4.69-.67l5.36 5.36z'/>
        </svg>
        `;
IconsLibrary.sportsHockeySvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M2 17v3h2v-4H3c-.55 0-1 .45-1 1zm7-1H5v4l4.69-.01c.38 0 .72-.21.89-.55l.87-1.9-1.59-3.48L9 16zm12.71.29c-.18-.18-.43-.29-.71-.29h-1v4h2v-3c0-.28-.11-.53-.29-.71zm-8.11-3.45L17.65 4H14.3l-1.76 3.97-.49 1.1-.05.14L9.7 4H6.35l4.05 8.84 1.52 3.32.08.18 1.42 3.1c.17.34.51.55.89.55L19 20v-4h-4l-1.4-3.16z'/>
        </svg>
        `;
IconsLibrary.sportsScoreSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11 6H9V4h2v2zm4-2h-2v2h2V4zM9 14h2v-2H9v2zm10-4V8h-2v2h2zm0 4v-2h-2v2h2zm-6 0h2v-2h-2v2zm6-10h-2v2h2V4zm-6 4V6h-2v2h2zm-6 2V8h2V6H7V4H5v16h2v-8h2v-2H7zm8 2h2v-2h-2v2zm-4-2v2h2v-2h-2zM9 8v2h2V8H9zm4 2h2V8h-2v2zm2-4v2h2V6h-2z'/>
        </svg>
        `;
IconsLibrary.supportAgentSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M21 12.22C21 6.73 16.74 3 12 3c-4.69 0-9 3.65-9 9.28-.6.34-1 .98-1 1.72v2c0 1.1.9 2 2 2h1v-6.1c0-3.87 3.13-7 7-7s7 3.13 7 7V19h-8v2h8c1.1 0 2-.9 2-2v-1.22c.59-.31 1-.92 1-1.64v-2.3c0-.7-.41-1.31-1-1.62z'/>
        </svg>
        `;
IconsLibrary.twoWheelerSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20 11c-.18 0-.36.03-.53.05L17.41 9H20V6l-3.72 1.86L13.41 5H9v2h3.59l2 2H11l-4 2-2-2H0v2h4c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4l2 2h3l3.49-6.1 1.01 1.01c-.91.73-1.5 1.84-1.5 3.09 0 2.21 1.79 4 4 4s4-1.79 4-4-1.79-4-4-4zM4 17c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm16 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z'/>
        </svg>
        `;
IconsLibrary.verifiedSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='m23 12-2.44-2.79.34-3.69-3.61-.82-1.89-3.2L12 2.96 8.6 1.5 6.71 4.69 3.1 5.5l.34 3.7L1 12l2.44 2.79-.34 3.7 3.61.82L8.6 22.5l3.4-1.47 3.4 1.46 1.89-3.19 3.61-.82-.34-3.69L23 12zm-12.91 4.72-3.8-3.81 1.48-1.48 2.32 2.33 5.85-5.87 1.48 1.48-7.33 7.35z'/>
        </svg>
        `;
IconsLibrary.workspacePremiumSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M9.68 13.69 12 11.93l2.31 1.76-.88-2.85L15.75 9h-2.84L12 6.19 11.09 9H8.25l2.31 1.84-.88 2.85zM20 10c0-4.42-3.58-8-8-8s-8 3.58-8 8c0 2.03.76 3.87 2 5.28V23l6-2 6 2v-7.72c1.24-1.41 2-3.25 2-5.28zm-8-6c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6 2.69-6 6-6z'/>
        </svg>
        `;
IconsLibrary.localAtmSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M11 17h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4V8h-2V7h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1zm9-13H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4V6h16v12z'/>
        </svg>
        `;
IconsLibrary.currencyBitcoinSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M17.06 11.57c.59-.69.94-1.59.94-2.57 0-1.86-1.27-3.43-3-3.87V3h-2v2h-2V3H9v2H6v2h2v10H6v2h3v2h2v-2h2v2h2v-2c2.21 0 4-1.79 4-4 0-1.45-.78-2.73-1.94-3.43zM10 7h4c1.1 0 2 .9 2 2s-.9 2-2 2h-4V7zm5 10h-5v-4h5c1.1 0 2 .9 2 2s-.9 2-2 2z'/>
        </svg>
        `;
IconsLibrary.accessibilityNewSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'>
        <path d='M20.5 6c-2.61.7-5.67 1-8.5 1s-5.89-.3-8.5-1L3 8c1.86.5 4 .83 6 1v13h2v-6h2v6h2V9c2-.17 4.14-.5 6-1l-.5-2zM12 6c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z'/>
        </svg>
        `;
IconsLibrary.checkSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'><path d="M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path></svg>`;
IconsLibrary.errorSvg = `<svg width='50' height='50' viewBox='-0.5 -2 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg>`;
IconsLibrary.spolehlivaRecenzeSvg = `<img width='62' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAAAZCAYAAADDq1t2AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH5woKDzY32GUKGAAAEu1JREFUaN7VmnmUVdWV/z/fc+57NVIFBQUyyAwiyoygCIgBaY2amFEz2bamMyzbJJpOtNNtWjOb0Tj9TLT9mZ/dGG2TKOKsUURRE0FUlCFQgMxQRRVFVb167957dv/xXhXFlJhe3Vn57bXuqnrnnrvPPvu799nDvQLEQTKOQbYT8g3RzCi1L+PCPMn6Ap3gGoJFi9M0uqusT7xRE2PkwLo4mQ7jpD+yjI61PCNHjSaEMB/p1iDLYlzvvPvF5g3reVdkMGbseOK48BVJlwMthl3inFvVsGHDEdNHjBpFSMMc5/QzcOWg7znnf75x49uMHDmWNE1PRrpRkEP6kvd+48Y/vEtZShRFEUNHjCCkYb6k28C84Crn3GJ3FM30vMhmwMzRsaF8tifc41z6EY/VO8M5o9JZONkTfy3ynb8qtNp8M7BQ0r3R45+uK5TQOuTqce/olxM4US0Y40wjHOrj0ZHsj3Ud3GF/YBgwWqjC6XAVdE0TiCrQaNAIsDqVbMp7j5w+5KT5ks4TvPfYJnVs+vHNt5DmOzMGlwRzYwPu7WC2rKKqiuhPPKtCjG1ZUlUxqE/H1Y4wBpQEtASzp0FViHnCFjhseAp9egD859Dh849wKclhBIAgcADHUuqxyDmHUBfv0DV2NPLeEyxA93xDEgic84h4HdACFIAN3vuufXTxP/xoOOL3bTf91FyUmQGcC9YQ4Otl5ZXNb69+Q38KGMzKOPB8boCTTXAGhlvfVqj4fM2JHbuoD+x4quK2+qpwiUlNZ359yK+WP7tBZmZTps0gIF5f8QozT5tDe1srkmP4iNEsWfzAUYGbO3euNTU1EycxzkWsXbO6CIiFLmFAx8RcgE2aPJX29nZAOHkGDxrCc0uflJmZnEPqccwCIQTGnjAOM1FWXsbqN1YCrocSja4DpLS01q1dbYOGDHugLJvZBMSFQvz64CGDcd6ZmdGruhcrXv09IQQ575l52ixr3tdkQvSpq+OVl5YrTeOuvewAPgdpQ/2AwateXb5UdFleT6qrBbMKM8PMMBCYYoy4JGjfyig/RQPfD0QMOruiLTMnf0t2due9y5/dYGZmo0eP6t3SvG9Cy76mCcOGj+y9e9fOUR0dHe9tb2+b/9bqVQPnzj3bAJOEc46/Oec8G1BXxbZt20bmch0L4zg+t7Mzd/LQYcOzJ0+YgnNOko5wo5K1SyoeMtNPOZWWlubj4rhwZpLEH4jjePamTX/oPWHidAPknDsEFIA0TYbHcXxOHBcWtB1oHTRj5lwg2JGeZKjkoVt2pUSRqwlmB4BcFPnKre+80zvXkZuQ7+ycuHfvnvpfLPqlSeKGn/zEtm99p28ul5uQy+Umbt+2rd+cM+bZrNNnW64jNxAYDpYDRY07t9VOmDjNsCIwh4ja1NLHcm9qcLKm7Bv5t8tOAFi/o3aXoUeLZhkGRC65O33h4VuSlzR7/1MdFWzzwJXUVEknjDsJM7cwyP1Wzj3tfeZu5/zjoAfBLZHc49u2NVxUX1cvM7MJk6baurVv11X1GfRN5J8xosUQ/UaKnvE+e2fbgdax02fMMu/9Eeddl/LMzIYMPi5qbNx9sZx/QvKPStGvwT0u5399oLV51qxZZ1g2W9Zzu5GZfRF4GtxDkn9Yco/t2bPzAoooHnGgdq238MxJSO4C5JaBnnPOzZFz45CWgHte8tde+YXPObOU3Y0FnPNXObnnJT0uafqypc9ox45dl8rpSXCPgVsM7mnJP3CgrfWUqdNOtUPMIvJA2kImSs72xNdmlH5976tlFdM+1pHGcfQdM/9zUBtYf0dyeaRkSa+qwn3JFn/eO4/fkdnf1suS1AhQjlw/w/c33PvBjQTfCSo3cxPB3Vpd2+dvxo49iX3NTRWS+06Afw6m4aVjowDqD+5TSHfu3b3z+DSkxzi9YNq0U8hkqz4oRbcITZTcftAqRILcmeBv27lj+4jOXEfPhyskXQgaAsRAObiJkn40YuSYcSFNj7LWwfDhpApwdQHXD1QZQro6iG2GakELqyprB540YbLd/4ub+0k6B3xv0B4zWzF02MiPSdwk/MngmsGtAqXgFgjdum9f44hDgElS7K2lfTNgZ2OGLHy4T2XHRSQdVMzT7l37Kq5IzH3I8P9uaCdYrbNwvlf8y8E1+W/sfTpUjh1awMAgGECAzYZdBnYW2A1gnQZ1SP+Q7zyQcc69x3AXYxBkywPhQ2Z2DrCoqAnNAXepjhrojYcee8wam/b2NukL4HqBX2Nm7wshzDZLLzWsGTFJ0gct2OFOsBR4P4TzwJ4oKX0kMMfMjkhJuisArGeyZwDZsvI24NeloZGSZuTznTjvpwAnWDF1eVBYAvoiuCrgTeDcEJLZYJ8BawWdIunjxeymtGezaob37xwuwqmlkawjvabwh8yU/SvTivI+IdrZPOq5ptygzybBLwzmv2emvTKrcpZ8pU9F/pPTR7f12I8Bdqtz0d0+il5J0+R6sGdKN6d4nxmGtABUAe6AYV/3kX8km80uM0uuAVtb8qCz8u0dFRwlW/uXa67BOTdKaHxJk62STnOOT0sai9EOwqSZjTtWSwergTzwgyjKPBFFmWeN9HawpMS2/hAkSj/UtTPpiPJMCG88KtgOykhaOHzwOITOAlUaNAbcg0ijgXEl5q1mNltynzazUWDtJXZnOLMy0kZvZljza6F3mTo/KguDDy5oYzOk/1mTDY/XZDofHVjX8GTvil33BjKpG5b+UzB/JdAhzHvSC775s92eg1sIDtvqHDRsXKuKiupcyUoAqsHVy3RcKaw3mtm6ypoa1q97U0mhcxfYhtIhUo9z1TosI5NUzNhEXRFcAGaCu7F0fVdyQ0rjdb3qhmSKoDjAFcA1lZdXk81mEbQDSQlcIR0zAfSAs0MzJ+88He1t64GS4Wn2hs1vjgfmWXHmspZc7k1J9UBJVp0u6aeSu1Fy3wY3sMswotxbNsI7TfU7ozNqy/OzZGG8sFLyri5XGmV5G+WCIQKG25qad7RUkARedi60iFBJsY7JmnU/6oBeYEyZOtPWrX9d9X0Hdykqb2YHDO0vaaCXx9fn29q3TZo83VqaG6sgDCgxasOss5TGdptwMXUEM+sQdFn7U8CDJf1Z6W8ANm3duS0eNngMyLCi10hyPWuZLpfoMq1D1gshgBWzyZ7uZGY456jvPyBtb2//FbgLgVGSLjc4IWAp8MCAmuo0jfO5ogGQAXsMtOQwWVNgl4t8WOJJ73NKrhDpNGQV1u3tVtxEDBSKkcNQR2LR13L58h35FjfX++RqsAElb98ivZg7zNIuS5Nkxr6mPfX1fQd9EjintPkNZmwGWy4sCPVz6B/jfOfolpbmgd5nrgA3GYShl3vV9z9gIl9SMsDxufaOmo4DHZUYm8C2l8ZdGgr3ZbNlN8dx7h6zpL9ZUg7hdyePO8V6NDX+KBlgRr6kKEBDOjraaocOG1EdQugxq+i5Elz8d5dihBfB3ih6hf7eRA3YGjOeLSsrx4wGirULEGQki7LZ7M1pml8USAYGQiYEW+Yw3S+075gSJoJOw4ViRRNwNx2Iqx+pruy4OXL5J7ySvxfmDbWmFv3Ht7/wYSTrtryAO9WkJYZfauh2g75WtJj/W1ZR0SZ4pOj+BvBxyT0j559D7lpwWWATcGfS2YmZbQR2dgEu556Vc98LgWaMRSUe7/Eueihf6Lg9ijIPI31N0vXgpsVJ4VDl2+H9moOOU+wqWAPFmAHoU95Hv/Xe/6Ct7UBZyWoPAfKrV31RfXr3bQJ7qMQ3U2RnS06cMmHnW2+s0J49e7ea2X2lxxYK91Ch0HG789FicFeDrnNOM1x2/KPXB3OfMvT6EfKFUumTdC3uXu5IKm/sVdZ2hZR8QkrLEWnArUvwV654p/LRxS/VEOyQjKUhoOqATgy4yoDbH7Ab0pD8+1ev/T61vWqbLE2/gNnDQB7cUOHGmskDK8E+f+FFl7y25q1V2rdn70bgh8A+oDdiqsHfee9PD2l6IxZugXAAdLrQZyXNEewBrk+S+LeVFVUlmYr+UPQd66ne7nuZKMPmTRu3gH4AthdUK7mp4P42k8nMK3qSoUNKVhUztuJedhZHaAIe3L5pM5Ljkss+E0IIPwZ+BrSDzQV9VkWZdxu6LknSJ2X2AWhaTOeOaHQUxbd5wllFGVUEpfOg4IZb1hFXfTibKZwjhTGCTow/FIJ7uWJOfosEo8aOJ0kKF5t0N+YN+JxkW0EzQZ3A8jjOv3zarAXxb+6/SwATJ0yylpaWGjk/B2kSkAWtN7PnBg8evuPFF54oVv5mNmjQkKisvOIUg1mC3kADFh4dMGDg7h3bt5X5KDpF6BSgr4m9wAvt7e2r9uzekZoZI0eMnSIxgWKMe+a2m+5sfOnVpdxzzz0DheYBGcNWLnjPwtV3/NttOq7/IFdeWTVNzs0G+oBthrDEUI3gVCCY2bKZp53+zn2L7hEEjh86PJPJZN9jxgCJpiRJnnpnS0OeUvfhfRdcaCtXvFzufTRD0nSDOsEeM1u2f9++1/e1NAV556gsM1obIX5HV0QWbgKwvCBnXWGmBIya47RsYXZweJXhhVILz8PALFJO3jlGjh1ncSG+OIguYD7hI//LKFNWsilY/9ZKJC8rGZtzjs9++nJ7dtmzSJ4oyhBCyonjJ/HA/Xd3t5BL4DBp8nRLQ4p3njSkXHLJZVz9lS8pTRObMnk6SZzgMxmSkFBeVs6rv39JkkMSc06fZ037GjGD1W+twvtIAIsW/ad965vXY2bU1vbm5VeWyyxgFpg69VTLF2KKuUzC/LMWsPrNN9m5YzuSY+Lkadx/7/9TCGl3pjhx8jRLkgTvPG++sbLLsLpjkpnZxEnTCCGQyWaKMnvPqtd+X5K1lPQFC8RrMv8YKfkBMVi7obSoye5+LCK16Mt+cvxj9ToymzTEmHHjLS4ULjZxtxWB+WQmk71347rV/53OeI8T3P77j/9/SIeU07JQThDWCUrVbvhbzTJfNvzThvYXrTacueaZ+uy70JTAig0n/VUqtRvt5S+u6m6qAlz8mU+bmR0h9GWXfcYaGhoMilYPcOWXruqe26POMoCf/vSmwy3qj70pso985OPdcki47lCYrrbvKM8/WYF1Fvx1q7fWPDD59KakaW11dU1ZPNn75HxDe9/YXn3j1AtbEh2WdxrihBPHWyFf+LCJm4vhlc9nstkHN6x9+6/KY44//vgy75zr7OzMV1RU9TEsd9LJk9pfW7E8isor6wyLt27a0gzo+aWv2Qc/MN/1qq2tMwshl8vtP+nkyema1a9F5ZXVdZjiTZsbmrv4CqIkKeTLyyt7pyHkJ02ZceD5555ytbU1FQbOguGckBRaW1tz02bMC+vfXlXjvatIQ9oyaMjwfA9gshRW6AMuTt8bEt2YnZp/S1VQ10s0tQ6Hlm3QO0Z+lgjLLeNRclifz3Dc+W932be/9a0apEGALITtC885t/Xn/+eWowHTVYoeLEn/AsBMnXWGNe3adoXQQhkbJJ2DeCqE8BPBV03MBXKCO/IduTuy5WU1ctHVBueLkBdcEYyNhl3n5eYaLpdidzTt2fvzfv37Xir0UYe2IGaZWSPGN0T4vZy73czGhmIRgtDWYOFy0DyhL0rqZ7AiBPtWd4wxApeddaLmz4n0sWvXBakgLyj1/SR1tSWL9bcdRU+Gw3vPeeedbxs2biSYMWbMCTzy8INK06N1h/8UIP87wJw0daa1tzT9CNxVwlYCL0haYSHMRPoY8EOwscB5oPdjdpo5fTegX3sLGwSPIF1k8EngRwFGA+9zxvkGZxm6zokXBKvN7BPASixc6Jy7CDgumE0HLQAtxtIbTe5ewQqKXYsvAWu7gXEOpaWKtvjW0NDBl/bv6hgy3NGHi/THPOYvCsykydOttbXlh6ArgPMzmcyTcVzoB24pqB+EJUA/4HxD/yqzOUEMTLEzq8rLGuNcrr+56NkU1w8LjyD6Oux9Mr5suKqAvgac3b9h7dLGkWMeMjHBgp1elol2xoX4RJwWCSUKXITjvQHdZOhpR9gELAAGdb9aDgG6ved/Tgd/lVG/ZAoCOoAdPoqI44KjmAy1gXYUvwtik8x+h9k8Seas67MDADlDbcJtx8IOg83CfofZfKQEaG879xOw5pV8aUFL43gYzv0smCtH9vFsxm8MaRoZzgzbDWwFfgPk/7yvGd49GH8uIH9ZAA9answM7zyFQrwP7EWwasN2m1nezMYhNiI9BYzz0k8KhcK/IDcKeN6ZVTtsj5PlESeYsaPYHg0SQWN6DUVIziQPVeb0PZPmyLHVi/PTNPkHsDWO0OiwjJltongshj/5Mcb/lmqgR0PhL0ylL1pagd1AEkUZBg0akuzdu+v7kgYLfV/O5c3srhDCLifdJXQS8FGgE3jZQrjByQ0V3BBQXuIuC2GXHO0q8i30LQsAzcAeRBlyAwV7wSbJmIa0KYTwQQfflLjGpAuAN4Bb/wt2xkM55gW6wAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0xMC0xMFQxNTo1NDo1NSswMDowMDVhRCkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMTAtMTBUMTU6NTQ6NTUrMDA6MDBEPPyVAAAAAElFTkSuQmCC' />`;
IconsLibrary.googleReviewsSvg = `<svg width="70" height="70" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
        <path d="M21.7428 12.2242C21.7428 11.5608 21.684 10.9113 21.5733 10.281H12.2571V13.9565H17.6269C17.4055 15.1714 16.7046 16.1975 15.6681 16.8609V19.282H18.4702C20.2613 17.6222 21.7428 15.1437 21.7428 12.2242Z" fill="#4285F4"/>
        <path d="M12.2571 22C14.6134 22 16.5987 21.1183 18.4702 19.282L15.6681 16.8609C14.7626 17.4627 13.6084 17.8347 12.2571 17.8347C9.70068 17.8347 7.55331 16.1056 6.80236 13.8389H3.90678V16.3322C5.77823 19.7431 8.79674 22 12.2571 22Z" fill="#34A853"/>
        <path d="M6.80236 13.8389C6.61397 13.237 6.50923 12.5945 6.50923 11.9311C6.50923 11.2677 6.61397 10.6252 6.80236 10.0233V7.53003H3.90678C3.20868 8.84005 2.80859 10.3338 2.80859 11.9311C2.80859 13.5284 3.20868 15.0221 3.90678 16.3322L6.80236 13.8389Z" fill="#FBBC05"/>
        <path d="M12.2571 6.02751C13.6671 6.02751 14.9205 6.50933 15.9177 7.45772L18.3916 4.9853C16.5908 3.30617 14.6134 2.33716 12.2571 2.33716C8.79674 2.33716 5.77823 4.59406 3.90678 8.00492L6.80236 10.4982C7.55331 8.23157 9.70068 6.02751 12.2571 6.02751Z" fill="#EA4335"/>
    </svg>`;
IconsLibrary.trustpilotSvg = `<svg width="70" height="70" viewBox="0 0 799.89 761" xmlns="http://www.w3.org/2000/svg">
        <path d="M799.89 290.83H494.44L400.09 0l-94.64 290.83L0 290.54l247.37 179.92L152.72 761l247.37-179.63L647.16 761l-94.35-290.54z" fill="#00b67a"/>
        <path d="M574.04 536.24l-21.23-65.78-152.72 110.91z" fill="#005128"/>
    </svg>`;
//endregion
//region Run script
try {
    let previewMode = document.getElementById('notify-script').getAttribute('preview-mode') !== null ? true : false;
    let debugMode = document.getElementById('notify-script').getAttribute('debug-mode') !== null ? true : false;
    let isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
    let websiteId = document.getElementById('notify-script').getAttribute('website-id');
    let backendUrl = document.getElementById('notify-script').getAttribute('backend-url');
    const _config = new Configuration(websiteId, backendUrl, isMobile, previewMode, debugMode);
    const main = new Main(_config);
    main.run()
        .then((r) => {
        console.log('Script is successfuly running');
    })
        .catch((r) => {
        console.error('Při běhu pixel scriptu došlo k neočekávané chybě, kontaktujte prosím support ověřeného webu. Chyba: ', r);
    });
}
catch (r) {
    console.error('Při běhu pixel scriptu došlo k neočekávané chybě, kontaktujte prosím support ověřeného webu. Chyba: ', r);
    // TODO: something terribly failed - maybe send slack bot message?
}
//endregion
