/*! elementor - v3.16.0 - 14-09-2023 */ (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["frontend-modules"],{ /***/ "../assets/dev/js/editor/utils/is-instanceof.js": /*!******************************************************!*\ !*** ../assets/dev/js/editor/utils/is-instanceof.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; /** * Some FileAPI objects such as FileList, DataTransferItem and DataTransferItemList has inconsistency with the retrieved * object (from events, etc.) and the actual JavaScript object so a regular instanceof doesn't work. This function can * check whether it's instanceof by using the objects constructor and prototype names. * * @param object * @param constructors * @return {boolean} */ var _default = (object, constructors) => { constructors = Array.isArray(constructors) ? constructors : [constructors]; for (const constructor of constructors) { if (object.constructor.name === constructor.prototype[Symbol.toStringTag]) { return true; } } return false; }; exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/frontend/document.js": /*!*********************************************!*\ !*** ../assets/dev/js/frontend/document.js ***! \*********************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class _default extends elementorModules.ViewModule { getDefaultSettings() { return { selectors: { elements: '.elementor-element', nestedDocumentElements: '.elementor .elementor-element' }, classes: { editMode: 'elementor-edit-mode' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $elements: this.$element.find(selectors.elements).not(this.$element.find(selectors.nestedDocumentElements)) }; } getDocumentSettings(setting) { let elementSettings; if (this.isEdit) { elementSettings = {}; const settings = elementor.settings.page.model; jQuery.each(settings.getActiveControls(), controlKey => { elementSettings[controlKey] = settings.attributes[controlKey]; }); } else { elementSettings = this.$element.data('elementor-settings') || {}; } return this.getItems(elementSettings, setting); } runElementsHandlers() { this.elements.$elements.each((index, element) => setTimeout(() => elementorFrontend.elementsHandler.runReadyTrigger(element))); } onInit() { this.$element = this.getSettings('$element'); super.onInit(); this.isEdit = this.$element.hasClass(this.getSettings('classes.editMode')); if (this.isEdit) { elementor.on('document:loaded', () => { elementor.settings.page.model.on('change', this.onSettingsChange.bind(this)); }); } else { this.runElementsHandlers(); } } onSettingsChange() {} } exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.js": /*!*****************************************************************************************!*\ !*** ../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! ../base */ "../assets/dev/js/frontend/handlers/base.js")); class NestedTitleKeyboardHandler extends _base.default { __construct(settings) { super.__construct(settings); this.directionNext = 'next'; this.directionPrevious = 'previous'; this.focusableElementSelector = 'audio, button, canvas, details, iframe, input, select, summary, textarea, video, [accesskey], [contenteditable], [href], [tabindex]:not([tabindex="-1"])'; } getDefaultSettings() { return { selectors: { itemTitle: '.e-n-tab-title', itemContainer: '.e-n-tabs-content > .e-con' }, ariaAttributes: { titleStateAttribute: 'aria-selected', activeTitleSelector: '[aria-selected="true"]' }, datasets: { titleIndex: 'data-tab-index' }, keyDirection: { ArrowLeft: elementorFrontendConfig.is_rtl ? this.directionNext : this.directionPrevious, ArrowUp: this.directionPrevious, ArrowRight: elementorFrontendConfig.is_rtl ? this.directionPrevious : this.directionNext, ArrowDown: this.directionNext } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $itemTitles: this.findElement(selectors.itemTitle), $itemContainers: this.findElement(selectors.itemContainer), $focusableContainerElements: this.getFocusableElements(this.findElement(selectors.itemContainer)) }; } getFocusableElements($elements) { return $elements.find(this.focusableElementSelector).not('[disabled], [inert]'); } getKeyDirectionValue(event) { const direction = this.getSettings('keyDirection')[event.key]; return this.directionNext === direction ? 1 : -1; } /** * @param {HTMLElement} itemTitleElement * * @return {string} */ getTitleIndex(itemTitleElement) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return itemTitleElement.getAttribute(indexAttribute); } /** * @param {string|number} titleIndex * * @return {string} */ getTitleFilterSelector(titleIndex) { const { titleIndex: indexAttribute } = this.getSettings('datasets'); return `[${indexAttribute}="${titleIndex}"]`; } getActiveTitleElement() { const activeTitleFilter = this.getSettings('ariaAttributes').activeTitleSelector; return this.elements.$itemTitles.filter(activeTitleFilter); } onInit() { super.onInit(...arguments); } bindEvents() { this.elements.$itemTitles.on(this.getTitleEvents()); this.elements.$focusableContainerElements.on(this.getContentElementEvents()); } unbindEvents() { this.elements.$itemTitles.off(); this.elements.$itemContainers.children().off(); } getTitleEvents() { return { keydown: this.handleTitleKeyboardNavigation.bind(this) }; } getContentElementEvents() { return { keydown: this.handleContentElementKeyboardNavigation.bind(this) }; } isDirectionKey(event) { const directionKeys = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End']; return directionKeys.includes(event.key); } isActivationKey(event) { const activationKeys = ['Enter', ' ']; return activationKeys.includes(event.key); } handleTitleKeyboardNavigation(event) { if (this.isDirectionKey(event)) { event.preventDefault(); const currentTitleIndex = parseInt(this.getTitleIndex(event.currentTarget)) || 1, numberOfTitles = this.elements.$itemTitles.length, titleIndexUpdated = this.getTitleIndexFocusUpdated(event, currentTitleIndex, numberOfTitles); this.changeTitleFocus(titleIndexUpdated); event.stopPropagation(); } else if (this.isActivationKey(event)) { event.preventDefault(); if (this.handeTitleLinkEnterOrSpaceEvent(event)) { return; } const titleIndex = this.getTitleIndex(event.currentTarget); elementorFrontend.elements.$window.trigger('elementor/nested-elements/activate-by-keyboard', { widgetId: this.getID(), titleIndex }); } else if ('Escape' === event.key) { this.handleTitleEscapeKeyEvents(event); } } handeTitleLinkEnterOrSpaceEvent(event) { const isLinkElement = 'a' === event?.currentTarget?.tagName?.toLowerCase(); if (!elementorFrontend.isEditMode() && isLinkElement) { event?.currentTarget?.click(); event.stopPropagation(); } return isLinkElement; } getTitleIndexFocusUpdated(event, currentTitleIndex, numberOfTitles) { let titleIndexUpdated = 0; switch (event.key) { case 'Home': titleIndexUpdated = 1; break; case 'End': titleIndexUpdated = numberOfTitles; break; default: const directionValue = this.getKeyDirectionValue(event), isEndReached = numberOfTitles < currentTitleIndex + directionValue, isStartReached = 0 === currentTitleIndex + directionValue; if (isEndReached) { titleIndexUpdated = 1; } else if (isStartReached) { titleIndexUpdated = numberOfTitles; } else { titleIndexUpdated = currentTitleIndex + directionValue; } } return titleIndexUpdated; } changeTitleFocus(titleIndexUpdated) { const $newTitle = this.elements.$itemTitles.filter(this.getTitleFilterSelector(titleIndexUpdated)); this.setTitleTabindex(titleIndexUpdated); $newTitle.trigger('focus'); } setTitleTabindex(titleIndex) { this.elements.$itemTitles.attr('tabindex', '-1'); const $newTitle = this.elements.$itemTitles.filter(this.getTitleFilterSelector(titleIndex)); $newTitle.attr('tabindex', '0'); } handleTitleEscapeKeyEvents() {} handleContentElementKeyboardNavigation(event) { if ('Tab' === event.key && !event.shiftKey) { this.handleContentElementTabEvents(event); } else if ('Escape' === event.key) { event.preventDefault(); event.stopPropagation(); this.handleContentElementEscapeEvents(); } } handleContentElementEscapeEvents() { this.getActiveTitleElement().trigger('focus'); } handleContentElementTabEvents() {} } exports["default"] = NestedTitleKeyboardHandler; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base-carousel.js": /*!***********************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base-carousel.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _baseSwiper = _interopRequireDefault(__webpack_require__(/*! ./base-swiper */ "../assets/dev/js/frontend/handlers/base-swiper.js")); class CarouselHandlerBase extends _baseSwiper.default { getDefaultSettings() { return { selectors: { carousel: `.${elementorFrontend.config.swiperClass}`, swiperWrapper: '.swiper-wrapper', slideContent: '.swiper-slide', swiperArrow: '.elementor-swiper-button', paginationWrapper: '.swiper-pagination', paginationBullet: '.swiper-pagination-bullet', paginationBulletWrapper: '.swiper-pagination-bullets' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'), elements = { $swiperContainer: this.$element.find(selectors.carousel), $swiperWrapper: this.$element.find(selectors.swiperWrapper), $swiperArrows: this.$element.find(selectors.swiperArrow), $paginationWrapper: this.$element.find(selectors.paginationWrapper), $paginationBullets: this.$element.find(selectors.paginationBullet), $paginationBulletWrapper: this.$element.find(selectors.paginationBulletWrapper) }; elements.$slides = elements.$swiperContainer.find(selectors.slideContent); return elements; } getSwiperSettings() { const elementSettings = this.getElementSettings(), slidesToShow = +elementSettings.slides_to_show || 3, isSingleSlide = 1 === slidesToShow, elementorBreakpoints = elementorFrontend.config.responsive.activeBreakpoints, defaultSlidesToShowMap = { mobile: 1, tablet: isSingleSlide ? 1 : 2 }; const swiperOptions = { slidesPerView: slidesToShow, loop: 'yes' === elementSettings.infinite, speed: elementSettings.speed, handleElementorBreakpoints: true }; swiperOptions.breakpoints = {}; let lastBreakpointSlidesToShowValue = slidesToShow; Object.keys(elementorBreakpoints).reverse().forEach(breakpointName => { // Tablet has a specific default `slides_to_show`. const defaultSlidesToShow = defaultSlidesToShowMap[breakpointName] ? defaultSlidesToShowMap[breakpointName] : lastBreakpointSlidesToShowValue; swiperOptions.breakpoints[elementorBreakpoints[breakpointName].value] = { slidesPerView: +elementSettings['slides_to_show_' + breakpointName] || defaultSlidesToShow, slidesPerGroup: +elementSettings['slides_to_scroll_' + breakpointName] || 1 }; if (elementSettings.image_spacing_custom) { swiperOptions.breakpoints[elementorBreakpoints[breakpointName].value].spaceBetween = this.getSpaceBetween(breakpointName); } lastBreakpointSlidesToShowValue = +elementSettings['slides_to_show_' + breakpointName] || defaultSlidesToShow; }); if ('yes' === elementSettings.autoplay) { swiperOptions.autoplay = { delay: elementSettings.autoplay_speed, disableOnInteraction: 'yes' === elementSettings.pause_on_interaction }; } if (isSingleSlide) { swiperOptions.effect = elementSettings.effect; if ('fade' === elementSettings.effect) { swiperOptions.fadeEffect = { crossFade: true }; } } else { swiperOptions.slidesPerGroup = +elementSettings.slides_to_scroll || 1; } if (elementSettings.image_spacing_custom) { swiperOptions.spaceBetween = this.getSpaceBetween(); } const showArrows = 'arrows' === elementSettings.navigation || 'both' === elementSettings.navigation, showPagination = 'dots' === elementSettings.navigation || 'both' === elementSettings.navigation || elementSettings.pagination; if (showArrows) { swiperOptions.navigation = { prevEl: '.elementor-swiper-button-prev', nextEl: '.elementor-swiper-button-next' }; } if (showPagination) { swiperOptions.pagination = { el: `.elementor-element-${this.getID()} .swiper-pagination`, type: !!elementSettings.pagination ? elementSettings.pagination : 'bullets', clickable: true, renderBullet: (index, classname) => { return ``; } }; } if ('yes' === elementSettings.lazyload) { swiperOptions.lazy = { loadPrevNext: true, loadPrevNextAmount: 1 }; } swiperOptions.a11y = { enabled: true, prevSlideMessage: elementorFrontend.config.i18n.a11yCarouselPrevSlideMessage, nextSlideMessage: elementorFrontend.config.i18n.a11yCarouselNextSlideMessage, firstSlideMessage: elementorFrontend.config.i18n.a11yCarouselFirstSlideMessage, lastSlideMessage: elementorFrontend.config.i18n.a11yCarouselLastSlideMessage }; swiperOptions.on = { slideChangeTransitionEnd: () => { this.a11ySetSlideAriaHidden(); }, slideChange: () => { this.a11ySetPaginationTabindex(); this.handleElementHandlers(); } }; this.applyOffsetSettings(elementSettings, swiperOptions, slidesToShow); return swiperOptions; } getOffsetWidth() { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'offset_width', 'size', currentDevice) || 0; } applyOffsetSettings(elementSettings, swiperOptions, slidesToShow) { const offsetSide = elementSettings.offset_sides, isNestedCarouselInEditMode = elementorFrontend.isEditMode() && 'NestedCarousel' === this.constructor.name; if (isNestedCarouselInEditMode || !offsetSide || 'none' === offsetSide) { return; } const offset = this.getOffsetWidth(); switch (offsetSide) { case 'right': this.forceSliderToShowNextSlideWhenOnLast(swiperOptions, slidesToShow); this.addClassToSwiperContainer('offset-right'); break; case 'left': this.addClassToSwiperContainer('offset-left'); break; case 'both': this.forceSliderToShowNextSlideWhenOnLast(swiperOptions, slidesToShow); this.addClassToSwiperContainer('offset-both'); break; } } forceSliderToShowNextSlideWhenOnLast(swiperOptions, slidesToShow) { swiperOptions.slidesPerView = slidesToShow + 0.001; } addClassToSwiperContainer(className) { this.getDefaultElements().$swiperContainer[0].classList.add(className); } async onInit() { super.onInit(...arguments); if (!this.elements.$swiperContainer.length || 2 > this.elements.$slides.length) { return; } const Swiper = elementorFrontend.utils.swiper; this.swiper = await new Swiper(this.elements.$swiperContainer, this.getSwiperSettings()); // Expose the swiper instance in the frontend this.elements.$swiperContainer.data('swiper', this.swiper); const elementSettings = this.getElementSettings(); if ('yes' === elementSettings.pause_on_hover) { this.togglePauseOnHover(true); } this.a11ySetWidgetAriaDetails(); this.a11ySetPaginationTabindex(); this.a11ySetSlideAriaHidden('initialisation'); } bindEvents() { this.elements.$swiperArrows.on('keydown', this.onDirectionArrowKeydown.bind(this)); this.elements.$paginationWrapper.on('keydown', '.swiper-pagination-bullet', this.onDirectionArrowKeydown.bind(this)); this.elements.$swiperContainer.on('keydown', '.swiper-slide', this.onDirectionArrowKeydown.bind(this)); this.$element.find(':focusable').on('focus', this.onFocusDisableAutoplay.bind(this)); elementorFrontend.elements.$window.on('resize', this.getSwiperSettings.bind(this)); } unbindEvents() { this.elements.$swiperArrows.off(); this.elements.$paginationWrapper.off(); this.elements.$swiperContainer.off(); this.$element.find(':focusable').off(); elementorFrontend.elements.$window.off('resize'); } onDirectionArrowKeydown(event) { const isRTL = elementorFrontend.config.isRTL, inlineDirectionArrows = ['ArrowLeft', 'ArrowRight'], currentKeydown = event.originalEvent.code, isDirectionInlineKeydown = -1 !== inlineDirectionArrows.indexOf(currentKeydown), directionStart = isRTL ? 'ArrowRight' : 'ArrowLeft', directionEnd = isRTL ? 'ArrowLeft' : 'ArrowRight'; if (!isDirectionInlineKeydown) { return true; } else if (directionStart === currentKeydown) { this.swiper.slidePrev(); } else if (directionEnd === currentKeydown) { this.swiper.slideNext(); } } onFocusDisableAutoplay() { this.swiper.autoplay.stop(); } updateSwiperOption(propertyName) { const elementSettings = this.getElementSettings(), newSettingValue = elementSettings[propertyName], params = this.swiper.params; // Handle special cases where the value to update is not the value that the Swiper library accepts. switch (propertyName) { case 'autoplay_speed': params.autoplay.delay = newSettingValue; break; case 'speed': params.speed = newSettingValue; break; } this.swiper.update(); } getChangeableProperties() { return { pause_on_hover: 'pauseOnHover', autoplay_speed: 'delay', speed: 'speed', arrows_position: 'arrows_position' // Not a Swiper setting. }; } onElementChange(propertyName) { if (0 === propertyName.indexOf('image_spacing_custom')) { this.updateSpaceBetween(propertyName); return; } const changeableProperties = this.getChangeableProperties(); if (changeableProperties[propertyName]) { // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library. if ('pause_on_hover' === propertyName) { const newSettingValue = this.getElementSettings('pause_on_hover'); this.togglePauseOnHover('yes' === newSettingValue); } else { this.updateSwiperOption(propertyName); } } } onEditSettingsChange(propertyName) { if ('activeItemIndex' === propertyName) { this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1); } } getSpaceBetween() { let device = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'image_spacing_custom', 'size', device) || 0; } updateSpaceBetween(propertyName) { const deviceMatch = propertyName.match('image_spacing_custom_(.*)'), device = deviceMatch ? deviceMatch[1] : 'desktop', newSpaceBetween = this.getSpaceBetween(device); if ('desktop' !== device) { this.swiper.params.breakpoints[elementorFrontend.config.responsive.activeBreakpoints[device].value].spaceBetween = newSpaceBetween; } this.swiper.params.spaceBetween = newSpaceBetween; this.swiper.update(); } getPaginationBullets() { let type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'array'; const paginationBullets = this.$element.find(this.getSettings('selectors').paginationBullet); return 'array' === type ? Array.from(paginationBullets) : paginationBullets; } a11ySetWidgetAriaDetails() { const $widget = this.$element; $widget.attr('aria-roledescription', 'carousel'); $widget.attr('aria-label', elementorFrontend.config.i18n.a11yCarouselWrapperAriaLabel); } a11ySetPaginationTabindex() { const bulletClass = this.swiper?.params.pagination.bulletClass, activeBulletClass = this.swiper?.params.pagination.bulletActiveClass; this.getPaginationBullets().forEach(bullet => { if (!bullet.classList.contains(activeBulletClass)) { bullet.removeAttribute('tabindex'); } }); const isDirectionInlineArrowKey = 'ArrowLeft' === event?.code || 'ArrowRight' === event?.code; if (event?.target?.classList.contains(bulletClass) && isDirectionInlineArrowKey) { this.$element.find(`.${activeBulletClass}`).trigger('focus'); } } getSwiperWrapperTranformXValue() { let transformValue = this.elements.$swiperWrapper[0]?.style.transform; transformValue = transformValue.replace('translate3d(', ''); transformValue = transformValue.split(','); transformValue = parseInt(transformValue[0].replace('px', '')); return !!transformValue ? transformValue : 0; } a11ySetSlideAriaHidden() { let status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; const currentIndex = 'initialisation' === status ? 0 : this.swiper?.activeIndex; if ('number' !== typeof currentIndex) { return; } const swiperWrapperTransformXValue = this.getSwiperWrapperTranformXValue(), swiperWrapperWidth = this.elements.$swiperWrapper[0].clientWidth, $slides = this.elements.$swiperContainer.find(this.getSettings('selectors').slideContent); $slides.each((index, slide) => { const isSlideInsideWrapper = 0 <= slide.offsetLeft + swiperWrapperTransformXValue && swiperWrapperWidth > slide.offsetLeft + swiperWrapperTransformXValue; if (!isSlideInsideWrapper) { slide.setAttribute('aria-hidden', true); slide.setAttribute('inert', ''); } else { slide.removeAttribute('aria-hidden'); slide.removeAttribute('inert'); } }); } // Empty method which can be overwritten by child methods. handleElementHandlers() {} } exports["default"] = CarouselHandlerBase; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base-swiper.js": /*!*********************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base-swiper.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../assets/dev/js/frontend/handlers/base.js")); class SwiperHandlerBase extends _base.default { getInitialSlide() { const editSettings = this.getEditSettings(); return editSettings.activeItemIndex ? editSettings.activeItemIndex - 1 : 0; } getSlidesCount() { return this.elements.$slides.length; } // This method live-handles the 'Pause On Hover' control's value being changed in the Editor Panel togglePauseOnHover(toggleOn) { if (toggleOn) { this.elements.$swiperContainer.on({ mouseenter: () => { this.swiper.autoplay.stop(); }, mouseleave: () => { this.swiper.autoplay.start(); } }); } else { this.elements.$swiperContainer.off('mouseenter mouseleave'); } } handleKenBurns() { const settings = this.getSettings(); if (this.$activeImageBg) { this.$activeImageBg.removeClass(settings.classes.kenBurnsActive); } this.activeItemIndex = this.swiper ? this.swiper.activeIndex : this.getInitialSlide(); if (this.swiper) { this.$activeImageBg = jQuery(this.swiper.slides[this.activeItemIndex]).children('.' + settings.classes.slideBackground); } else { this.$activeImageBg = jQuery(this.elements.$slides[0]).children('.' + settings.classes.slideBackground); } this.$activeImageBg.addClass(settings.classes.kenBurnsActive); } } exports["default"] = SwiperHandlerBase; /***/ }), /***/ "../assets/dev/js/frontend/handlers/base.js": /*!**************************************************!*\ !*** ../assets/dev/js/frontend/handlers/base.js ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorModules.ViewModule.extend({ $element: null, editorListeners: null, onElementChange: null, onEditSettingsChange: null, onPageSettingsChange: null, isEdit: null, __construct(settings) { if (!this.isActive(settings)) { return; } this.$element = settings.$element; this.isEdit = this.$element.hasClass('elementor-element-edit-mode'); if (this.isEdit) { this.addEditorListeners(); } }, isActive() { return true; }, isElementInTheCurrentDocument() { if (!elementorFrontend.isEditMode()) { return false; } return elementor.documents.currentDocument.id.toString() === this.$element[0].closest('.elementor').dataset.elementorId; }, findElement(selector) { var $mainElement = this.$element; return $mainElement.find(selector).filter(function () { // Start `closest` from parent since self can be `.elementor-element`. return jQuery(this).parent().closest('.elementor-element').is($mainElement); }); }, getUniqueHandlerID(cid, $element) { if (!cid) { cid = this.getModelCID(); } if (!$element) { $element = this.$element; } return cid + $element.attr('data-element_type') + this.getConstructorID(); }, initEditorListeners() { var self = this; self.editorListeners = [{ event: 'element:destroy', to: elementor.channels.data, callback(removedModel) { if (removedModel.cid !== self.getModelCID()) { return; } self.onDestroy(); } }]; if (self.onElementChange) { const elementType = self.getWidgetType() || self.getElementType(); let eventName = 'change'; if ('global' !== elementType) { eventName += ':' + elementType; } self.editorListeners.push({ event: eventName, to: elementor.channels.editor, callback(controlView, elementView) { var elementViewHandlerID = self.getUniqueHandlerID(elementView.model.cid, elementView.$el); if (elementViewHandlerID !== self.getUniqueHandlerID()) { return; } self.onElementChange(controlView.model.get('name'), controlView, elementView); } }); } if (self.onEditSettingsChange) { self.editorListeners.push({ event: 'change:editSettings', to: elementor.channels.editor, callback(changedModel, view) { if (view.model.cid !== self.getModelCID()) { return; } const propName = Object.keys(changedModel.changed)[0]; self.onEditSettingsChange(propName, changedModel.changed[propName]); } }); } ['page'].forEach(function (settingsType) { var listenerMethodName = 'on' + settingsType[0].toUpperCase() + settingsType.slice(1) + 'SettingsChange'; if (self[listenerMethodName]) { self.editorListeners.push({ event: 'change', to: elementor.settings[settingsType].model, callback(model) { self[listenerMethodName](model.changed); } }); } }); }, getEditorListeners() { if (!this.editorListeners) { this.initEditorListeners(); } return this.editorListeners; }, addEditorListeners() { var uniqueHandlerID = this.getUniqueHandlerID(); this.getEditorListeners().forEach(function (listener) { elementorFrontend.addListenerOnce(uniqueHandlerID, listener.event, listener.callback, listener.to); }); }, removeEditorListeners() { var uniqueHandlerID = this.getUniqueHandlerID(); this.getEditorListeners().forEach(function (listener) { elementorFrontend.removeListeners(uniqueHandlerID, listener.event, null, listener.to); }); }, getElementType() { return this.$element.data('element_type'); }, getWidgetType() { const widgetType = this.$element.data('widget_type'); if (!widgetType) { return; } return widgetType.split('.')[0]; }, getID() { return this.$element.data('id'); }, getModelCID() { return this.$element.data('model-cid'); }, getElementSettings(setting) { let elementSettings = {}; const modelCID = this.getModelCID(); if (this.isEdit && modelCID) { const settings = elementorFrontend.config.elements.data[modelCID], attributes = settings.attributes; let type = attributes.widgetType || attributes.elType; if (attributes.isInner) { type = 'inner-' + type; } let settingsKeys = elementorFrontend.config.elements.keys[type]; if (!settingsKeys) { settingsKeys = elementorFrontend.config.elements.keys[type] = []; jQuery.each(settings.controls, (name, control) => { if (control.frontend_available) { settingsKeys.push(name); } }); } jQuery.each(settings.getActiveControls(), function (controlKey) { if (-1 !== settingsKeys.indexOf(controlKey)) { let value = attributes[controlKey]; if (value.toJSON) { value = value.toJSON(); } elementSettings[controlKey] = value; } }); } else { elementSettings = this.$element.data('settings') || {}; } return this.getItems(elementSettings, setting); }, getEditSettings(setting) { var attributes = {}; if (this.isEdit) { attributes = elementorFrontend.config.elements.editSettings[this.getModelCID()].attributes; } return this.getItems(attributes, setting); }, getCurrentDeviceSetting(settingKey) { return elementorFrontend.getCurrentDeviceSetting(this.getElementSettings(), settingKey); }, onInit() { if (this.isActive(this.getSettings())) { elementorModules.ViewModule.prototype.onInit.apply(this, arguments); } }, onDestroy() { if (this.isEdit) { this.removeEditorListeners(); } if (this.unbindEvents) { this.unbindEvents(); } } }); /***/ }), /***/ "../assets/dev/js/frontend/handlers/stretched-element.js": /*!***************************************************************!*\ !*** ../assets/dev/js/frontend/handlers/stretched-element.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../assets/dev/js/frontend/handlers/base.js")); class StretchedElement extends _base.default { getStretchedClass() { return 'e-stretched'; } getStretchSettingName() { return 'stretch_element'; } getStretchActiveValue() { return 'yes'; } bindEvents() { const handlerID = this.getUniqueHandlerID(); elementorFrontend.addListenerOnce(handlerID, 'resize', this.stretch); elementorFrontend.addListenerOnce(handlerID, 'sticky:stick', this.stretch, this.$element); elementorFrontend.addListenerOnce(handlerID, 'sticky:unstick', this.stretch, this.$element); if (elementorFrontend.isEditMode()) { this.onKitChangeStretchContainerChange = this.onKitChangeStretchContainerChange.bind(this); elementor.channels.editor.on('kit:change:stretchContainer', this.onKitChangeStretchContainerChange); } } unbindEvents() { elementorFrontend.removeListeners(this.getUniqueHandlerID(), 'resize', this.stretch); if (elementorFrontend.isEditMode()) { elementor.channels.editor.off('kit:change:stretchContainer', this.onKitChangeStretchContainerChange); } } isActive(settings) { return elementorFrontend.isEditMode() || settings.$element.hasClass(this.getStretchedClass()); } getStretchElementForConfig() { let childSelector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (childSelector) { return this.$element.find(childSelector); } return this.$element; } getStretchElementConfig() { return { element: this.getStretchElementForConfig(), selectors: { container: this.getStretchContainer() }, considerScrollbar: elementorFrontend.isEditMode() && elementorFrontend.config.is_rtl }; } initStretch() { this.stretch = this.stretch.bind(this); this.stretchElement = new elementorModules.frontend.tools.StretchElement(this.getStretchElementConfig()); } getStretchContainer() { return elementorFrontend.getKitSettings('stretched_section_container') || window; } isStretchSettingEnabled() { return this.getElementSettings(this.getStretchSettingName()) === this.getStretchActiveValue(); } stretch() { if (!this.isStretchSettingEnabled()) { return; } this.stretchElement.stretch(); } onInit() { if (!this.isActive(this.getSettings())) { return; } this.initStretch(); super.onInit(...arguments); this.stretch(); } onElementChange(propertyName) { const stretchSettingName = this.getStretchSettingName(); if (stretchSettingName === propertyName) { if (this.isStretchSettingEnabled()) { this.stretch(); } else { this.stretchElement.reset(); } } } onKitChangeStretchContainerChange() { this.stretchElement.setSettings('selectors.container', this.getStretchContainer()); this.stretch(); } } exports["default"] = StretchedElement; /***/ }), /***/ "../assets/dev/js/frontend/modules.js": /*!********************************************!*\ !*** ../assets/dev/js/frontend/modules.js ***! \********************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _modules = _interopRequireDefault(__webpack_require__(/*! ../modules/modules */ "../assets/dev/js/modules/modules.js")); var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../assets/dev/js/frontend/document.js")); var _stretchElement = _interopRequireDefault(__webpack_require__(/*! ./tools/stretch-element */ "../assets/dev/js/frontend/tools/stretch-element.js")); var _stretchedElement = _interopRequireDefault(__webpack_require__(/*! ./handlers/stretched-element */ "../assets/dev/js/frontend/handlers/stretched-element.js")); var _base = _interopRequireDefault(__webpack_require__(/*! ./handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); var _baseSwiper = _interopRequireDefault(__webpack_require__(/*! ./handlers/base-swiper */ "../assets/dev/js/frontend/handlers/base-swiper.js")); var _baseCarousel = _interopRequireDefault(__webpack_require__(/*! ./handlers/base-carousel */ "../assets/dev/js/frontend/handlers/base-carousel.js")); var _nestedTabs = _interopRequireDefault(__webpack_require__(/*! elementor/modules/nested-tabs/assets/js/frontend/handlers/nested-tabs */ "../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js")); var _nestedAccordion = _interopRequireDefault(__webpack_require__(/*! elementor/modules/nested-accordion/assets/js/frontend/handlers/nested-accordion */ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js")); var _nestedTitleKeyboardHandler = _interopRequireDefault(__webpack_require__(/*! ./handlers/accessibility/nested-title-keyboard-handler */ "../assets/dev/js/frontend/handlers/accessibility/nested-title-keyboard-handler.js")); _modules.default.frontend = { Document: _document.default, tools: { StretchElement: _stretchElement.default }, handlers: { Base: _base.default, StretchedElement: _stretchedElement.default, SwiperBase: _baseSwiper.default, CarouselBase: _baseCarousel.default, NestedTabs: _nestedTabs.default, NestedAccordion: _nestedAccordion.default, NestedTitleKeyboardHandler: _nestedTitleKeyboardHandler.default } }; /***/ }), /***/ "../assets/dev/js/frontend/tools/stretch-element.js": /*!**********************************************************!*\ !*** ../assets/dev/js/frontend/tools/stretch-element.js ***! \**********************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorModules.ViewModule.extend({ getDefaultSettings() { return { element: null, direction: elementorFrontend.config.is_rtl ? 'right' : 'left', selectors: { container: window }, considerScrollbar: false, cssOutput: 'inline' }; }, getDefaultElements() { return { $element: jQuery(this.getSettings('element')) }; }, stretch() { const settings = this.getSettings(); let $container; try { $container = jQuery(settings.selectors.container); // eslint-disable-next-line no-empty } catch (e) {} if (!$container || !$container.length) { $container = jQuery(this.getDefaultSettings().selectors.container); } this.reset(); var $element = this.elements.$element, containerWidth = $container.innerWidth(), elementOffset = $element.offset().left, isFixed = 'fixed' === $element.css('position'), correctOffset = isFixed ? 0 : elementOffset, isContainerFullScreen = window === $container[0]; if (!isContainerFullScreen) { var containerOffset = $container.offset().left; if (isFixed) { correctOffset = containerOffset; } if (elementOffset > containerOffset) { correctOffset = elementOffset - containerOffset; } } if (settings.considerScrollbar && isContainerFullScreen) { const scrollbarWidth = window.innerWidth - containerWidth; correctOffset -= scrollbarWidth; } if (!isFixed) { if (elementorFrontend.config.is_rtl) { correctOffset = containerWidth - ($element.outerWidth() + correctOffset); } correctOffset = -correctOffset; } // Consider margin if (settings.margin) { correctOffset += settings.margin; } var css = {}; let width = containerWidth; if (settings.margin) { width -= settings.margin * 2; } css.width = width + 'px'; css[settings.direction] = correctOffset + 'px'; if ('variables' === settings.cssOutput) { this.applyCssVariables($element, css); return; } $element.css(css); }, reset() { const css = {}, settings = this.getSettings(), $element = this.elements.$element; if ('variables' === settings.cssOutput) { this.resetCssVariables($element); return; } css.width = ''; css[settings.direction] = ''; $element.css(css); }, applyCssVariables($element, css) { $element.css('--stretch-width', css.width); if (!!css.left) { $element.css('--stretch-left', css.left); } else { $element.css('--stretch-right', css.right); } }, resetCssVariables($element) { $element.css({ '--stretch-width': '', '--stretch-left': '', '--stretch-right': '' }); } }); /***/ }), /***/ "../assets/dev/js/frontend/utils/flex-horizontal-scroll.js": /*!*****************************************************************!*\ !*** ../assets/dev/js/frontend/utils/flex-horizontal-scroll.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.changeScrollStatus = changeScrollStatus; exports.setHorizontalScrollAlignment = setHorizontalScrollAlignment; exports.setHorizontalTitleScrollValues = setHorizontalTitleScrollValues; function changeScrollStatus(element, event) { if ('mousedown' === event.type) { element.classList.add('e-scroll'); element.dataset.pageX = event.pageX; } else { element.classList.remove('e-scroll', 'e-scroll-active'); element.dataset.pageX = ''; } } // This function was written using this example https://codepen.io/thenutz/pen/VwYeYEE. function setHorizontalTitleScrollValues(element, horizontalScrollStatus, event) { const isActiveScroll = element.classList.contains('e-scroll'), isHorizontalScrollActive = 'enable' === horizontalScrollStatus, headingContentIsWiderThanWrapper = element.scrollWidth > element.clientWidth; if (!isActiveScroll || !isHorizontalScrollActive || !headingContentIsWiderThanWrapper) { return; } event.preventDefault(); const previousPositionX = parseFloat(element.dataset.pageX), mouseMoveX = event.pageX - previousPositionX, maximumScrollValue = 5, stepLimit = 20; let toScrollDistanceX = 0; if (stepLimit < mouseMoveX) { toScrollDistanceX = maximumScrollValue; } else if (stepLimit * -1 > mouseMoveX) { toScrollDistanceX = -1 * maximumScrollValue; } else { toScrollDistanceX = mouseMoveX; } element.scrollLeft = element.scrollLeft - toScrollDistanceX; element.classList.add('e-scroll-active'); } function setHorizontalScrollAlignment(_ref) { let { element, direction, justifyCSSVariable, horizontalScrollStatus } = _ref; if (!element) { return; } if (isHorizontalScroll(element, horizontalScrollStatus)) { initialScrollPosition(element, direction, justifyCSSVariable); } else { element.style.setProperty(justifyCSSVariable, ''); } } function isHorizontalScroll(element, horizontalScrollStatus) { return element.clientWidth < getChildrenWidth(element.children) && 'enable' === horizontalScrollStatus; } function getChildrenWidth(children) { let totalWidth = 0; const parentContainer = children[0].parentNode, computedStyles = getComputedStyle(parentContainer), gap = parseFloat(computedStyles.gap) || 0; // Get the gap value or default to 0 if it's not specified for (let i = 0; i < children.length; i++) { totalWidth += children[i].offsetWidth + gap; } return totalWidth; } function initialScrollPosition(element, direction, justifyCSSVariable) { const isRTL = elementorCommon.config.isRTL; switch (direction) { case 'end': element.style.setProperty(justifyCSSVariable, 'start'); element.scrollLeft = isRTL ? -1 * getChildrenWidth(element.children) : getChildrenWidth(element.children); break; default: element.style.setProperty(justifyCSSVariable, 'start'); element.scrollLeft = 0; } } /***/ }), /***/ "../assets/dev/js/modules/imports/args-object.js": /*!*******************************************************!*\ !*** ../assets/dev/js/modules/imports/args-object.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; __webpack_require__(/*! core-js/modules/es.error.cause.js */ "../node_modules/core-js/modules/es.error.cause.js"); var _instanceType = _interopRequireDefault(__webpack_require__(/*! ./instance-type */ "../assets/dev/js/modules/imports/instance-type.js")); var _isInstanceof = _interopRequireDefault(__webpack_require__(/*! ../../editor/utils/is-instanceof */ "../assets/dev/js/editor/utils/is-instanceof.js")); class ArgsObject extends _instanceType.default { static getInstanceType() { return 'ArgsObject'; } /** * Function constructor(). * * Create ArgsObject. * * @param {{}} args */ constructor(args) { super(); this.args = args; } /** * Function requireArgument(). * * Validate property in args. * * @param {string} property * @param {{}} args * * @throws {Error} * */ requireArgument(property) { let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.args; if (!Object.prototype.hasOwnProperty.call(args, property)) { throw Error(`${property} is required.`); } } /** * Function requireArgumentType(). * * Validate property in args using `type === typeof(args.whatever)`. * * @param {string} property * @param {string} type * @param {{}} args * * @throws {Error} * */ requireArgumentType(property, type) { let args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); if (typeof args[property] !== type) { throw Error(`${property} invalid type: ${type}.`); } } /** * Function requireArgumentInstance(). * * Validate property in args using `args.whatever instanceof instance`. * * @param {string} property * @param {*} instance * @param {{}} args * * @throws {Error} * */ requireArgumentInstance(property, instance) { let args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); if (!(args[property] instanceof instance) && !(0, _isInstanceof.default)(args[property], instance)) { throw Error(`${property} invalid instance.`); } } /** * Function requireArgumentConstructor(). * * Validate property in args using `type === args.whatever.constructor`. * * @param {string} property * @param {*} type * @param {{}} args * * @throws {Error} * */ requireArgumentConstructor(property, type) { let args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); // Note: Converting the constructor to string in order to avoid equation issues // due to different memory addresses between iframes (window.Object !== window.top.Object). if (args[property].constructor.toString() !== type.prototype.constructor.toString()) { throw Error(`${property} invalid constructor type.`); } } } exports["default"] = ArgsObject; /***/ }), /***/ "../assets/dev/js/modules/imports/force-method-implementation.js": /*!***********************************************************************!*\ !*** ../assets/dev/js/modules/imports/force-method-implementation.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.ForceMethodImplementation = void 0; __webpack_require__(/*! core-js/modules/es.error.cause.js */ "../node_modules/core-js/modules/es.error.cause.js"); // TODO: Wrong location used as `elementorModules.ForceMethodImplementation(); should be` `elementorUtils.forceMethodImplementation()`; class ForceMethodImplementation extends Error { constructor() { let info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; super(`${info.isStatic ? 'static ' : ''}${info.fullName}() should be implemented, please provide '${info.functionName || info.fullName}' functionality.`, args); // Allow to pass custom properties to the error. if (Object.keys(args).length) { // eslint-disable-next-line no-console console.error(args); } Error.captureStackTrace(this, ForceMethodImplementation); } } exports.ForceMethodImplementation = ForceMethodImplementation; var _default = args => { const stack = Error().stack, caller = stack.split('\n')[2].trim(), callerName = caller.startsWith('at new') ? 'constructor' : caller.split(' ')[1], info = {}; info.functionName = callerName; info.fullName = callerName; if (info.functionName.includes('.')) { const parts = info.functionName.split('.'); info.className = parts[0]; info.functionName = parts[1]; } else { info.isStatic = true; } throw new ForceMethodImplementation(info, args); }; exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/modules/imports/instance-type.js": /*!*********************************************************!*\ !*** ../assets/dev/js/modules/imports/instance-type.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class InstanceType { static [Symbol.hasInstance](target) { /** * This is function extending being called each time JS uses instanceOf, since babel use it each time it create new class * its give's opportunity to mange capabilities of instanceOf operator. * saving current class each time will give option later to handle instanceOf manually. */ let result = super[Symbol.hasInstance](target); // Act normal when validate a class, which does not have instance type. if (target && !target.constructor.getInstanceType) { return result; } if (target) { if (!target.instanceTypes) { target.instanceTypes = []; } if (!result) { if (this.getInstanceType() === target.constructor.getInstanceType()) { result = true; } } if (result) { const name = this.getInstanceType === InstanceType.getInstanceType ? 'BaseInstanceType' : this.getInstanceType(); if (-1 === target.instanceTypes.indexOf(name)) { target.instanceTypes.push(name); } } } if (!result && target) { // Check if the given 'target', is instance of known types. result = target.instanceTypes && Array.isArray(target.instanceTypes) && -1 !== target.instanceTypes.indexOf(this.getInstanceType()); } return result; } static getInstanceType() { elementorModules.ForceMethodImplementation(); } constructor() { // Since anonymous classes sometimes do not get validated by babel, do it manually. let target = new.target; const prototypes = []; while (target.__proto__ && target.__proto__.name) { prototypes.push(target.__proto__); target = target.__proto__; } prototypes.reverse().forEach(proto => this instanceof proto); } } exports["default"] = InstanceType; /***/ }), /***/ "../assets/dev/js/modules/imports/module.js": /*!**************************************************!*\ !*** ../assets/dev/js/modules/imports/module.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; __webpack_require__(/*! core-js/modules/es.error.cause.js */ "../node_modules/core-js/modules/es.error.cause.js"); const Module = function () { const $ = jQuery, instanceParams = arguments, self = this, events = {}; let settings; const ensureClosureMethods = function () { $.each(self, function (methodName) { const oldMethod = self[methodName]; if ('function' !== typeof oldMethod) { return; } self[methodName] = function () { return oldMethod.apply(self, arguments); }; }); }; const initSettings = function () { settings = self.getDefaultSettings(); const instanceSettings = instanceParams[0]; if (instanceSettings) { $.extend(true, settings, instanceSettings); } }; const init = function () { self.__construct.apply(self, instanceParams); ensureClosureMethods(); initSettings(); self.trigger('init'); }; this.getItems = function (items, itemKey) { if (itemKey) { const keyStack = itemKey.split('.'), currentKey = keyStack.splice(0, 1); if (!keyStack.length) { return items[currentKey]; } if (!items[currentKey]) { return; } return this.getItems(items[currentKey], keyStack.join('.')); } return items; }; this.getSettings = function (setting) { return this.getItems(settings, setting); }; this.setSettings = function (settingKey, value, settingsContainer) { if (!settingsContainer) { settingsContainer = settings; } if ('object' === typeof settingKey) { $.extend(settingsContainer, settingKey); return self; } const keyStack = settingKey.split('.'), currentKey = keyStack.splice(0, 1); if (!keyStack.length) { settingsContainer[currentKey] = value; return self; } if (!settingsContainer[currentKey]) { settingsContainer[currentKey] = {}; } return self.setSettings(keyStack.join('.'), value, settingsContainer[currentKey]); }; this.getErrorMessage = function (type, functionName) { let message; switch (type) { case 'forceMethodImplementation': message = `The method '${functionName}' must to be implemented in the inheritor child.`; break; default: message = 'An error occurs'; } return message; }; // TODO: This function should be deleted ?. this.forceMethodImplementation = function (functionName) { throw new Error(this.getErrorMessage('forceMethodImplementation', functionName)); }; this.on = function (eventName, callback) { if ('object' === typeof eventName) { $.each(eventName, function (singleEventName) { self.on(singleEventName, this); }); return self; } const eventNames = eventName.split(' '); eventNames.forEach(function (singleEventName) { if (!events[singleEventName]) { events[singleEventName] = []; } events[singleEventName].push(callback); }); return self; }; this.off = function (eventName, callback) { if (!events[eventName]) { return self; } if (!callback) { delete events[eventName]; return self; } const callbackIndex = events[eventName].indexOf(callback); if (-1 !== callbackIndex) { delete events[eventName][callbackIndex]; // Reset array index (for next off on same event). events[eventName] = events[eventName].filter(val => val); } return self; }; this.trigger = function (eventName) { const methodName = 'on' + eventName[0].toUpperCase() + eventName.slice(1), params = Array.prototype.slice.call(arguments, 1); if (self[methodName]) { self[methodName].apply(self, params); } const callbacks = events[eventName]; if (!callbacks) { return self; } $.each(callbacks, function (index, callback) { callback.apply(self, params); }); return self; }; init(); }; Module.prototype.__construct = function () {}; Module.prototype.getDefaultSettings = function () { return {}; }; Module.prototype.getConstructorID = function () { return this.constructor.name; }; Module.extend = function (properties) { const $ = jQuery, parent = this; const child = function () { return parent.apply(this, arguments); }; $.extend(child, parent); child.prototype = Object.create($.extend({}, parent.prototype, properties)); child.prototype.constructor = child; child.__super__ = parent.prototype; return child; }; module.exports = Module; /***/ }), /***/ "../assets/dev/js/modules/imports/utils/masonry.js": /*!*********************************************************!*\ !*** ../assets/dev/js/modules/imports/utils/masonry.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _viewModule = _interopRequireDefault(__webpack_require__(/*! ../view-module */ "../assets/dev/js/modules/imports/view-module.js")); var _default = _viewModule.default.extend({ getDefaultSettings() { return { container: null, items: null, columnsCount: 3, verticalSpaceBetween: 30 }; }, getDefaultElements() { return { $container: jQuery(this.getSettings('container')), $items: jQuery(this.getSettings('items')) }; }, run() { var heights = [], distanceFromTop = this.elements.$container.position().top, settings = this.getSettings(), columnsCount = settings.columnsCount; distanceFromTop += parseInt(this.elements.$container.css('margin-top'), 10); this.elements.$items.each(function (index) { var row = Math.floor(index / columnsCount), $item = jQuery(this), itemHeight = $item[0].getBoundingClientRect().height + settings.verticalSpaceBetween; if (row) { var itemPosition = $item.position(), indexAtRow = index % columnsCount, pullHeight = itemPosition.top - distanceFromTop - heights[indexAtRow]; pullHeight -= parseInt($item.css('margin-top'), 10); pullHeight *= -1; $item.css('margin-top', pullHeight + 'px'); heights[indexAtRow] += itemHeight; } else { heights.push(itemHeight); } }); } }); exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/modules/imports/utils/scroll.js": /*!********************************************************!*\ !*** ../assets/dev/js/modules/imports/utils/scroll.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; // Moved from elementor pro: 'assets/dev/js/frontend/utils' class Scroll { /** * @param {Object} obj * @param {number} obj.sensitivity - Value between 0-100 - Will determine the intersection trigger points on the element * @param {Function} obj.callback - Will be triggered on each intersection point between the element and the viewport top/bottom * @param {string} obj.offset - Offset between the element intersection points and the viewport, written like in CSS: '-50% 0 -25%' * @param {HTMLElement} obj.root - The element that the events will be relative to, if 'null' will be relative to the viewport */ static scrollObserver(obj) { let lastScrollY = 0; // Generating threshholds points along the animation height // More threshholds points = more trigger points of the callback const buildThreshholds = function () { let sensitivityPercentage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; const threshholds = []; if (sensitivityPercentage > 0 && sensitivityPercentage <= 100) { const increment = 100 / sensitivityPercentage; for (let i = 0; i <= 100; i += increment) { threshholds.push(i / 100); } } else { threshholds.push(0); } return threshholds; }; const options = { root: obj.root || null, rootMargin: obj.offset || '0px', threshold: buildThreshholds(obj.sensitivity) }; function handleIntersect(entries) { const currentScrollY = entries[0].boundingClientRect.y, isInViewport = entries[0].isIntersecting, intersectionScrollDirection = currentScrollY < lastScrollY ? 'down' : 'up', scrollPercentage = Math.abs(parseFloat((entries[0].intersectionRatio * 100).toFixed(2))); obj.callback({ sensitivity: obj.sensitivity, isInViewport, scrollPercentage, intersectionScrollDirection }); lastScrollY = currentScrollY; } return new IntersectionObserver(handleIntersect, options); } /** * @param {jQuery.Element} $element * @param {Object} offsetObj * @param {number} offsetObj.start - Offset start value in percentages * @param {number} offsetObj.end - Offset end value in percentages */ static getElementViewportPercentage($element) { let offsetObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; const elementOffset = $element[0].getBoundingClientRect(), offsetStart = offsetObj.start || 0, offsetEnd = offsetObj.end || 0, windowStartOffset = window.innerHeight * offsetStart / 100, windowEndOffset = window.innerHeight * offsetEnd / 100, y1 = elementOffset.top - window.innerHeight, y2 = elementOffset.top + windowStartOffset + $element.height(), startPosition = 0 - y1 + windowStartOffset, endPosition = y2 - y1 + windowEndOffset, percent = Math.max(0, Math.min(startPosition / endPosition, 1)); return parseFloat((percent * 100).toFixed(2)); } /** * @param {Object} offsetObj * @param {number} offsetObj.start - Offset start value in percentages * @param {number} offsetObj.end - Offset end value in percentages * @param {number} limitPageHeight - Will limit the page height calculation */ static getPageScrollPercentage() { let offsetObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; let limitPageHeight = arguments.length > 1 ? arguments[1] : undefined; const offsetStart = offsetObj.start || 0, offsetEnd = offsetObj.end || 0, initialPageHeight = limitPageHeight || document.documentElement.scrollHeight - document.documentElement.clientHeight, heightOffset = initialPageHeight * offsetStart / 100, pageRange = initialPageHeight + heightOffset + initialPageHeight * offsetEnd / 100, scrollPos = document.documentElement.scrollTop + document.body.scrollTop + heightOffset; return scrollPos / pageRange * 100; } } exports["default"] = Scroll; /***/ }), /***/ "../assets/dev/js/modules/imports/view-module.js": /*!*******************************************************!*\ !*** ../assets/dev/js/modules/imports/view-module.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _module = _interopRequireDefault(__webpack_require__(/*! ./module */ "../assets/dev/js/modules/imports/module.js")); var _default = _module.default.extend({ elements: null, getDefaultElements() { return {}; }, bindEvents() {}, onInit() { this.initElements(); this.bindEvents(); }, initElements() { this.elements = this.getDefaultElements(); } }); exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/modules/modules.js": /*!*******************************************!*\ !*** ../assets/dev/js/modules/modules.js ***! \*******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _module = _interopRequireDefault(__webpack_require__(/*! ./imports/module */ "../assets/dev/js/modules/imports/module.js")); var _viewModule = _interopRequireDefault(__webpack_require__(/*! ./imports/view-module */ "../assets/dev/js/modules/imports/view-module.js")); var _argsObject = _interopRequireDefault(__webpack_require__(/*! ./imports/args-object */ "../assets/dev/js/modules/imports/args-object.js")); var _masonry = _interopRequireDefault(__webpack_require__(/*! ./imports/utils/masonry */ "../assets/dev/js/modules/imports/utils/masonry.js")); var _scroll = _interopRequireDefault(__webpack_require__(/*! ./imports/utils/scroll */ "../assets/dev/js/modules/imports/utils/scroll.js")); var _forceMethodImplementation = _interopRequireDefault(__webpack_require__(/*! ./imports/force-method-implementation */ "../assets/dev/js/modules/imports/force-method-implementation.js")); var _default = window.elementorModules = { Module: _module.default, ViewModule: _viewModule.default, ArgsObject: _argsObject.default, ForceMethodImplementation: _forceMethodImplementation.default, utils: { Masonry: _masonry.default, Scroll: _scroll.default } }; exports["default"] = _default; /***/ }), /***/ "../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js": /*!***********************************************************************************!*\ !*** ../modules/nested-accordion/assets/js/frontend/handlers/nested-accordion.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! elementor/assets/dev/js/frontend/handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); class NestedAccordion extends _base.default { constructor() { super(...arguments); this.animations = new Map(); } getDefaultSettings() { return { selectors: { accordion: '.e-n-accordion', accordionContentContainers: '.e-n-accordion > .e-con', accordionItems: '.e-n-accordion-item', accordionItemTitles: '.e-n-accordion-item-title', accordionContent: '.e-n-accordion-item > .e-con' }, default_state: 'expanded' }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $accordion: this.findElement(selectors.accordion), $contentContainers: this.findElement(selectors.accordionContentContainers), $accordionItems: this.findElement(selectors.accordionItems), $accordionTitles: this.findElement(selectors.accordionItemTitles), $accordionContent: this.findElement(selectors.accordionContent) }; } onInit() { super.onInit(...arguments); if (elementorFrontend.isEditMode()) { this.interlaceContainers(); } } interlaceContainers() { const { $contentContainers, $accordionItems } = this.getDefaultElements(); $contentContainers.each((index, element) => { $accordionItems[index].appendChild(element); }); } bindEvents() { this.elements.$accordionTitles.on('click', this.clickListener.bind(this)); } unbindEvents() { this.elements.$accordionTitles.off(); } clickListener(event) { event.preventDefault(); const accordionItem = event.currentTarget.parentElement, settings = this.getSettings(), accordionContent = accordionItem.querySelector(settings.selectors.accordionContent), { max_items_expended: maxItemsExpended } = this.getElementSettings(), { $accordionTitles, $accordionItems } = this.elements; if ('one' === maxItemsExpended) { this.closeAllItems($accordionItems, $accordionTitles); } if (!accordionItem.open) { this.prepareOpenAnimation(accordionItem, event.currentTarget, accordionContent); } else { this.closeAccordionItem(accordionItem, event.currentTarget); } } animateItem(accordionItem, startHeight, endHeight, isOpen) { accordionItem.style.overflow = 'hidden'; let animation = this.animations.get(accordionItem); if (animation) { animation.cancel(); } animation = accordionItem.animate({ height: [startHeight, endHeight] }, { duration: this.getAnimationDuration() }); animation.onfinish = () => this.onAnimationFinish(accordionItem, isOpen); this.animations.set(accordionItem, animation); } closeAccordionItem(accordionItem, accordionItemTitle) { const startHeight = `${accordionItem.offsetHeight}px`, endHeight = `${accordionItemTitle.offsetHeight}px`; this.animateItem(accordionItem, startHeight, endHeight, false); } prepareOpenAnimation(accordionItem, accordionItemTitle, accordionItemContent) { accordionItem.style.overflow = 'hidden'; accordionItem.style.height = `${accordionItem.offsetHeight}px`; accordionItem.open = true; window.requestAnimationFrame(() => this.openAccordionItem(accordionItem, accordionItemTitle, accordionItemContent)); } openAccordionItem(accordionItem, accordionItemTitle, accordionItemContent) { const startHeight = `${accordionItem.offsetHeight}px`, endHeight = `${accordionItemTitle.offsetHeight + accordionItemContent.offsetHeight}px`; this.animateItem(accordionItem, startHeight, endHeight, true); } onAnimationFinish(accordionItem, isOpen) { accordionItem.open = isOpen; this.animations.set(accordionItem, null); accordionItem.style.height = accordionItem.style.overflow = ''; } closeAllItems($items, $titles) { $titles.each((index, title) => { this.closeAccordionItem($items[index], title); }); } getAnimationDuration() { const { size, unit } = this.getElementSettings('n_accordion_animation_duration'); return size * ('ms' === unit ? 1 : 1000); } } exports["default"] = NestedAccordion; /***/ }), /***/ "../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js": /*!*************************************************************************!*\ !*** ../modules/nested-tabs/assets/js/frontend/handlers/nested-tabs.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! elementor-frontend/handlers/base */ "../assets/dev/js/frontend/handlers/base.js")); var _flexHorizontalScroll = __webpack_require__(/*! elementor-frontend-utils/flex-horizontal-scroll */ "../assets/dev/js/frontend/utils/flex-horizontal-scroll.js"); class NestedTabs extends _base.default { constructor() { super(...arguments); this.resizeListenerNestedTabs = null; } /** * @param {string|number} tabIndex * * @return {string} */ getTabTitleFilterSelector(tabIndex) { return `[data-tab-index="${tabIndex}"]`; } /** * @param {string|number} tabIndex * * @return {string} */ getTabContentFilterSelector(tabIndex) { return `*:nth-child(${tabIndex})`; } /** * @param {HTMLElement} tabTitleElement * * @return {string} */ getTabIndex(tabTitleElement) { return tabTitleElement.getAttribute('data-tab-index'); } getDefaultSettings() { return { selectors: { widgetContainer: '.e-n-tabs', tabTitle: '.e-n-tab-title', tabContent: '.e-n-tabs-content > .e-con', headingContainer: '.e-n-tabs-heading', activeTabContentContainers: '.e-con.e-active' }, classes: { active: 'e-active' }, ariaAttributes: { titleStateAttribute: 'aria-selected', activeTitleSelector: '[aria-selected="true"]' }, showTabFn: 'show', hideTabFn: 'hide', toggleSelf: false, hidePrevious: true, autoExpand: true }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $tabTitles: this.findElement(selectors.tabTitle), $tabContents: this.findElement(selectors.tabContent), $headingContainer: this.findElement(selectors.headingContainer) }; } getKeyboardNavigationSettings() { return this.getSettings(); } activateDefaultTab() { const settings = this.getSettings(); const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1, originalToggleMethods = { showTabFn: settings.showTabFn, hideTabFn: settings.hideTabFn }; // Toggle tabs without animation to avoid jumping this.setSettings({ showTabFn: 'show', hideTabFn: 'hide' }); this.changeActiveTab(defaultActiveTab); // Return back original toggle effects this.setSettings(originalToggleMethods); } deactivateActiveTab(newTabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, activeTitleFilter = settings.ariaAttributes.activeTitleSelector, activeContentFilter = '.' + activeClass, $activeTitle = this.elements.$tabTitles.filter(activeTitleFilter), $activeContent = this.elements.$tabContents.filter(activeContentFilter); this.setTabDeactivationAttributes($activeTitle, newTabIndex); $activeContent.removeClass(activeClass); $activeContent[settings.hideTabFn](0, () => this.onHideTabContent($activeContent)); return $activeContent; } getTitleActivationAttributes() { const titleStateAttribute = this.getSettings('ariaAttributes').titleStateAttribute; return { tabindex: '0', [titleStateAttribute]: 'true' }; } setTabDeactivationAttributes($activeTitle) { const titleStateAttribute = this.getSettings('ariaAttributes').titleStateAttribute; $activeTitle.attr({ tabindex: '-1', [titleStateAttribute]: 'false' }); } onHideTabContent() {} activateTab(tabIndex) { const settings = this.getSettings(), activeClass = settings.classes.active, animationDuration = 'show' === settings.showTabFn ? 0 : 400; let $requestedTitle = this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(tabIndex)), $requestedContent = this.elements.$tabContents.filter(this.getTabContentFilterSelector(tabIndex)); // Check if the tabIndex exists. if (!$requestedTitle.length) { // Activate the previous tab and ensure that the tab index is not less than 1. const previousTabIndex = Math.max(tabIndex - 1, 1); $requestedTitle = this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(previousTabIndex)); $requestedContent = this.elements.$tabContents.filter(this.getTabContentFilterSelector(previousTabIndex)); } $requestedTitle.attr(this.getTitleActivationAttributes()); $requestedContent.addClass(activeClass); $requestedContent[settings.showTabFn](animationDuration, () => this.onShowTabContent($requestedContent)); } onShowTabContent($requestedContent) { elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc'); elementorFrontend.elements.$window.trigger('elementor/nested-tabs/activate', $requestedContent); elementorFrontend.elements.$window.trigger('elementor/bg-video/recalc'); } isActiveTab(tabIndex) { return 'true' === this.elements.$tabTitles.filter('[data-tab-index="' + tabIndex + '"]').attr(this.getSettings('ariaAttributes').titleStateAttribute); } onTabClick(event) { event.preventDefault(); this.changeActiveTab(event.currentTarget?.getAttribute('data-tab-index'), true); } getTabEvents() { return { click: this.onTabClick.bind(this) }; } getHeadingEvents() { const navigationWrapper = this.elements.$headingContainer[0]; return { mousedown: _flexHorizontalScroll.changeScrollStatus.bind(this, navigationWrapper), mouseup: _flexHorizontalScroll.changeScrollStatus.bind(this, navigationWrapper), mouseleave: _flexHorizontalScroll.changeScrollStatus.bind(this, navigationWrapper), mousemove: _flexHorizontalScroll.setHorizontalTitleScrollValues.bind(this, navigationWrapper, this.getHorizontalScrollSetting()) }; } bindEvents() { this.elements.$tabTitles.on(this.getTabEvents()); this.elements.$headingContainer.on(this.getHeadingEvents()); const settingsObject = { element: this.elements.$headingContainer[0], direction: this.getTabsDirection(), justifyCSSVariable: '--n-tabs-heading-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; this.resizeListenerNestedTabs = _flexHorizontalScroll.setHorizontalScrollAlignment.bind(this, settingsObject); elementorFrontend.elements.$window.on('resize', this.resizeListenerNestedTabs); elementorFrontend.elements.$window.on('resize', this.setTouchMode.bind(this)); elementorFrontend.elements.$window.on('elementor/nested-tabs/activate', this.reInitSwipers); elementorFrontend.elements.$window.on('elementor/nested-elements/activate-by-keyboard', this.changeActiveTabByKeyboard.bind(this)); } unbindEvents() { this.elements.$tabTitles.off(); this.elements.$headingContainer.off(); this.elements.$tabContents.children().off(); elementorFrontend.elements.$window.off('resize'); elementorFrontend.elements.$window.off('elementor/nested-tabs/activate'); } /** * Fixes issues where Swipers that have been initialized while a tab is not visible are not properly rendered * and when switching to the tab the swiper will not respect any of the chosen `autoplay` related settings. * * This is triggered when switching to a nested tab, looks for Swipers in the tab content and reinitializes them. * * @param {Object} event - Incoming event. * @param {Object} content - Active nested tab dom element. */ reInitSwipers(event, content) { const swiperElements = content.querySelectorAll(`.${elementorFrontend.config.swiperClass}`); for (const element of swiperElements) { if (!element.swiper) { return; } element.swiper.initialized = false; element.swiper.init(); } } onInit() { super.onInit(...arguments); if (this.getSettings('autoExpand')) { this.activateDefaultTab(); } const settingsObject = { element: this.elements.$headingContainer[0], direction: this.getTabsDirection(), justifyCSSVariable: '--n-tabs-heading-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; (0, _flexHorizontalScroll.setHorizontalScrollAlignment)(settingsObject); this.setTouchMode(); if ('nested-tabs.default' === this.getSettings('elementName')) { new elementorModules.frontend.handlers.NestedTitleKeyboardHandler(this.getKeyboardNavigationSettings()); } } onEditSettingsChange(propertyName, value) { if ('activeItemIndex' === propertyName) { this.changeActiveTab(value, false); } } onElementChange(propertyName) { if (this.checkSliderPropsToWatch(propertyName)) { const settingsObject = { element: this.elements.$headingContainer[0], direction: this.getTabsDirection(), justifyCSSVariable: '--n-tabs-heading-justify-content', horizontalScrollStatus: this.getHorizontalScrollSetting() }; (0, _flexHorizontalScroll.setHorizontalScrollAlignment)(settingsObject); } } checkSliderPropsToWatch(propertyName) { return 0 === propertyName.indexOf('horizontal_scroll') || 'breakpoint_selector' === propertyName || 0 === propertyName.indexOf('tabs_justify_horizontal') || 0 === propertyName.indexOf('tabs_title_space_between'); } /** * @param {string} tabIndex * @param {boolean} fromUser - Whether the call is caused by the user or internal. */ changeActiveTab(tabIndex) { let fromUser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; // `document/repeater/select` is used only in the editor, only when the element // is in the currently-edited document, and only when its not internal call, if (fromUser && this.isEdit && this.isElementInTheCurrentDocument()) { return window.top.$e.run('document/repeater/select', { container: elementor.getContainer(this.$element.attr('data-id')), index: parseInt(tabIndex) }); } const isActiveTab = this.isActiveTab(tabIndex), settings = this.getSettings(); if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) { this.deactivateActiveTab(tabIndex); } if (!settings.hidePrevious && isActiveTab) { this.deactivateActiveTab(tabIndex); } if (!isActiveTab) { if (this.isAccordionVersion()) { this.activateMobileTab(tabIndex); return; } this.activateTab(tabIndex); } } changeActiveTabByKeyboard(event, settings) { if (settings.widgetId !== this.getID()) { return; } this.changeActiveTab(settings.titleIndex, true); } activateMobileTab(tabIndex) { // Timeout time added to ensure that opening of the active tab starts after closing the other tab on Apple devices. setTimeout(() => { this.activateTab(tabIndex); this.forceActiveTabToBeInViewport(tabIndex); }, 10); } forceActiveTabToBeInViewport(tabIndex) { if (!elementorFrontend.isEditMode()) { return; } const $activeTabTitle = this.elements.$tabTitles.filter(this.getTabTitleFilterSelector(tabIndex)); if (!elementor.helpers.isInViewport($activeTabTitle[0])) { $activeTabTitle[0].scrollIntoView({ block: 'center' }); } } getActiveClass() { const settings = this.getSettings(); return settings.classes.active; } getTabsDirection() { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'tabs_justify_horizontal', '', currentDevice); } getHorizontalScrollSetting() { const currentDevice = elementorFrontend.getCurrentDeviceMode(); return elementorFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), 'horizontal_scroll', '', currentDevice); } isAccordionVersion() { return 'contents' === this.elements.$headingContainer.css('display'); } setTouchMode() { const widgetSelector = this.getSettings('selectors').widgetContainer; if (elementorFrontend.isEditMode() || 'resize' === event?.type) { const responsiveDevices = ['mobile', 'mobile_extra', 'tablet', 'tablet_extra'], currentDevice = elementorFrontend.getCurrentDeviceMode(); if (-1 !== responsiveDevices.indexOf(currentDevice)) { this.$element.find(widgetSelector).attr('data-touch-mode', 'true'); return; } } else if ('ontouchstart' in window) { this.$element.find(widgetSelector).attr('data-touch-mode', 'true'); return; } this.$element.find(widgetSelector).attr('data-touch-mode', 'false'); } } exports["default"] = NestedTabs; /***/ }), /***/ "../node_modules/core-js/internals/a-callable.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/a-callable.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "../node_modules/core-js/internals/try-to-string.js"); var $TypeError = TypeError; // `Assert: IsCallable(argument) is true` module.exports = function (argument) { if (isCallable(argument)) return argument; throw $TypeError(tryToString(argument) + ' is not a function'); }; /***/ }), /***/ "../node_modules/core-js/internals/a-possible-prototype.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/a-possible-prototype.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var $String = String; var $TypeError = TypeError; module.exports = function (argument) { if (typeof argument == 'object' || isCallable(argument)) return argument; throw $TypeError("Can't set " + $String(argument) + ' as a prototype'); }; /***/ }), /***/ "../node_modules/core-js/internals/an-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/an-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var $String = String; var $TypeError = TypeError; // `Assert: Type(argument) is Object` module.exports = function (argument) { if (isObject(argument)) return argument; throw $TypeError($String(argument) + ' is not an object'); }; /***/ }), /***/ "../node_modules/core-js/internals/array-includes.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/array-includes.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "../node_modules/core-js/internals/to-absolute-index.js"); var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "../node_modules/core-js/internals/length-of-array-like.js"); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = lengthOfArrayLike(O); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare -- NaN check if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.es/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.es/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; /***/ }), /***/ "../node_modules/core-js/internals/classof-raw.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/classof-raw.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var toString = uncurryThis({}.toString); var stringSlice = uncurryThis(''.slice); module.exports = function (it) { return stringSlice(toString(it), 8, -1); }; /***/ }), /***/ "../node_modules/core-js/internals/classof.js": /*!****************************************************!*\ !*** ../node_modules/core-js/internals/classof.js ***! \****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "../node_modules/core-js/internals/to-string-tag-support.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "../node_modules/core-js/internals/classof-raw.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "../node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var $Object = Object; // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (error) { /* empty */ } }; // getting tag from ES6+ `Object.prototype.toString` module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result; }; /***/ }), /***/ "../node_modules/core-js/internals/copy-constructor-properties.js": /*!************************************************************************!*\ !*** ../node_modules/core-js/internals/copy-constructor-properties.js ***! \************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "../node_modules/core-js/internals/own-keys.js"); var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "../node_modules/core-js/internals/object-get-own-property-descriptor.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); module.exports = function (target, source, exceptions) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } } }; /***/ }), /***/ "../node_modules/core-js/internals/create-non-enumerable-property.js": /*!***************************************************************************!*\ !*** ../node_modules/core-js/internals/create-non-enumerable-property.js ***! \***************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /***/ "../node_modules/core-js/internals/create-property-descriptor.js": /*!***********************************************************************!*\ !*** ../node_modules/core-js/internals/create-property-descriptor.js ***! \***********************************************************************/ /***/ ((module) => { "use strict"; module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /***/ "../node_modules/core-js/internals/define-built-in.js": /*!************************************************************!*\ !*** ../node_modules/core-js/internals/define-built-in.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "../node_modules/core-js/internals/make-built-in.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); module.exports = function (O, key, value, options) { if (!options) options = {}; var simple = options.enumerable; var name = options.name !== undefined ? options.name : key; if (isCallable(value)) makeBuiltIn(value, name, options); if (options.global) { if (simple) O[key] = value; else defineGlobalProperty(key, value); } else { try { if (!options.unsafe) delete O[key]; else if (O[key]) simple = true; } catch (error) { /* empty */ } if (simple) O[key] = value; else definePropertyModule.f(O, key, { value: value, enumerable: false, configurable: !options.nonConfigurable, writable: !options.nonWritable }); } return O; }; /***/ }), /***/ "../node_modules/core-js/internals/define-global-property.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/define-global-property.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); // eslint-disable-next-line es/no-object-defineproperty -- safe var defineProperty = Object.defineProperty; module.exports = function (key, value) { try { defineProperty(global, key, { value: value, configurable: true, writable: true }); } catch (error) { global[key] = value; } return value; }; /***/ }), /***/ "../node_modules/core-js/internals/descriptors.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/descriptors.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); // Detect IE8's incomplete defineProperty implementation module.exports = !fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); /***/ }), /***/ "../node_modules/core-js/internals/document-all.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/document-all.js ***! \*********************************************************/ /***/ ((module) => { "use strict"; var documentAll = typeof document == 'object' && document.all; // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing var IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined; module.exports = { all: documentAll, IS_HTMLDDA: IS_HTMLDDA }; /***/ }), /***/ "../node_modules/core-js/internals/document-create-element.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/document-create-element.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var document = global.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; /***/ }), /***/ "../node_modules/core-js/internals/engine-user-agent.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/engine-user-agent.js ***! \**************************************************************/ /***/ ((module) => { "use strict"; module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; /***/ }), /***/ "../node_modules/core-js/internals/engine-v8-version.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/engine-v8-version.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "../node_modules/core-js/internals/engine-user-agent.js"); var process = global.process; var Deno = global.Deno; var versions = process && process.versions || Deno && Deno.version; var v8 = versions && versions.v8; var match, version; if (v8) { match = v8.split('.'); // in old Chrome, versions of V8 isn't V8 = Chrome / 10 // but their correct versions are not interesting for us version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); } // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` // so check `userAgent` even if `.v8` exists, but 0 if (!version && userAgent) { match = userAgent.match(/Edge\/(\d+)/); if (!match || match[1] >= 74) { match = userAgent.match(/Chrome\/(\d+)/); if (match) version = +match[1]; } } module.exports = version; /***/ }), /***/ "../node_modules/core-js/internals/enum-bug-keys.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/enum-bug-keys.js ***! \**********************************************************/ /***/ ((module) => { "use strict"; // IE8- don't enum bug keys module.exports = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /***/ }), /***/ "../node_modules/core-js/internals/error-stack-clear.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/error-stack-clear.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var $Error = Error; var replace = uncurryThis(''.replace); var TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd'); // eslint-disable-next-line redos/no-vulnerable -- safe var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/; var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST); module.exports = function (stack, dropEntries) { if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) { while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, ''); } return stack; }; /***/ }), /***/ "../node_modules/core-js/internals/error-stack-install.js": /*!****************************************************************!*\ !*** ../node_modules/core-js/internals/error-stack-install.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ "../node_modules/core-js/internals/error-stack-clear.js"); var ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ "../node_modules/core-js/internals/error-stack-installable.js"); // non-standard V8 var captureStackTrace = Error.captureStackTrace; module.exports = function (error, C, stack, dropEntries) { if (ERROR_STACK_INSTALLABLE) { if (captureStackTrace) captureStackTrace(error, C); else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries)); } }; /***/ }), /***/ "../node_modules/core-js/internals/error-stack-installable.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/error-stack-installable.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); module.exports = !fails(function () { var error = Error('a'); if (!('stack' in error)) return true; // eslint-disable-next-line es/no-object-defineproperty -- safe Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7)); return error.stack !== 7; }); /***/ }), /***/ "../node_modules/core-js/internals/export.js": /*!***************************************************!*\ !*** ../node_modules/core-js/internals/export.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "../node_modules/core-js/internals/object-get-own-property-descriptor.js").f); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "../node_modules/core-js/internals/define-built-in.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "../node_modules/core-js/internals/copy-constructor-properties.js"); var isForced = __webpack_require__(/*! ../internals/is-forced */ "../node_modules/core-js/internals/is-forced.js"); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.dontCallGetSet - prevent calling a getter on target options.name - the .name of the function if it does not match the key */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global; } else if (STATIC) { target = global[TARGET] || defineGlobalProperty(TARGET, {}); } else { target = (global[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.dontCallGetSet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty == typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { createNonEnumerableProperty(sourceProperty, 'sham', true); } defineBuiltIn(target, key, sourceProperty, options); } }; /***/ }), /***/ "../node_modules/core-js/internals/fails.js": /*!**************************************************!*\ !*** ../node_modules/core-js/internals/fails.js ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; /***/ }), /***/ "../node_modules/core-js/internals/function-apply.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/function-apply.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "../node_modules/core-js/internals/function-bind-native.js"); var FunctionPrototype = Function.prototype; var apply = FunctionPrototype.apply; var call = FunctionPrototype.call; // eslint-disable-next-line es/no-reflect -- safe module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { return call.apply(apply, arguments); }); /***/ }), /***/ "../node_modules/core-js/internals/function-bind-native.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/function-bind-native.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { // eslint-disable-next-line es/no-function-prototype-bind -- safe var test = (function () { /* empty */ }).bind(); // eslint-disable-next-line no-prototype-builtins -- safe return typeof test != 'function' || test.hasOwnProperty('prototype'); }); /***/ }), /***/ "../node_modules/core-js/internals/function-call.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/function-call.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "../node_modules/core-js/internals/function-bind-native.js"); var call = Function.prototype.call; module.exports = NATIVE_BIND ? call.bind(call) : function () { return call.apply(call, arguments); }; /***/ }), /***/ "../node_modules/core-js/internals/function-name.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/function-name.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var FunctionPrototype = Function.prototype; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; var EXISTS = hasOwn(FunctionPrototype, 'name'); // additional protection from minified / mangled / dropped function names var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); module.exports = { EXISTS: EXISTS, PROPER: PROPER, CONFIGURABLE: CONFIGURABLE }; /***/ }), /***/ "../node_modules/core-js/internals/function-uncurry-this-accessor.js": /*!***************************************************************************!*\ !*** ../node_modules/core-js/internals/function-uncurry-this-accessor.js ***! \***************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js"); module.exports = function (object, key, method) { try { // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); } catch (error) { /* empty */ } }; /***/ }), /***/ "../node_modules/core-js/internals/function-uncurry-this.js": /*!******************************************************************!*\ !*** ../node_modules/core-js/internals/function-uncurry-this.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "../node_modules/core-js/internals/function-bind-native.js"); var FunctionPrototype = Function.prototype; var call = FunctionPrototype.call; var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { return function () { return call.apply(fn, arguments); }; }; /***/ }), /***/ "../node_modules/core-js/internals/get-built-in.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/get-built-in.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var aFunction = function (argument) { return isCallable(argument) ? argument : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; }; /***/ }), /***/ "../node_modules/core-js/internals/get-method.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/get-method.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js"); var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "../node_modules/core-js/internals/is-null-or-undefined.js"); // `GetMethod` abstract operation // https://tc39.es/ecma262/#sec-getmethod module.exports = function (V, P) { var func = V[P]; return isNullOrUndefined(func) ? undefined : aCallable(func); }; /***/ }), /***/ "../node_modules/core-js/internals/global.js": /*!***************************************************!*\ !*** ../node_modules/core-js/internals/global.js ***! \***************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { "use strict"; var check = function (it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line es/no-global-this -- safe check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe check(typeof self == 'object' && self) || check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || // eslint-disable-next-line no-new-func -- fallback (function () { return this; })() || this || Function('return this')(); /***/ }), /***/ "../node_modules/core-js/internals/has-own-property.js": /*!*************************************************************!*\ !*** ../node_modules/core-js/internals/has-own-property.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var toObject = __webpack_require__(/*! ../internals/to-object */ "../node_modules/core-js/internals/to-object.js"); var hasOwnProperty = uncurryThis({}.hasOwnProperty); // `HasOwnProperty` abstract operation // https://tc39.es/ecma262/#sec-hasownproperty // eslint-disable-next-line es/no-object-hasown -- safe module.exports = Object.hasOwn || function hasOwn(it, key) { return hasOwnProperty(toObject(it), key); }; /***/ }), /***/ "../node_modules/core-js/internals/hidden-keys.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/hidden-keys.js ***! \********************************************************/ /***/ ((module) => { "use strict"; module.exports = {}; /***/ }), /***/ "../node_modules/core-js/internals/ie8-dom-define.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/ie8-dom-define.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var createElement = __webpack_require__(/*! ../internals/document-create-element */ "../node_modules/core-js/internals/document-create-element.js"); // Thanks to IE8 for its funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /***/ "../node_modules/core-js/internals/indexed-object.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/indexed-object.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var classof = __webpack_require__(/*! ../internals/classof-raw */ "../node_modules/core-js/internals/classof-raw.js"); var $Object = Object; var split = uncurryThis(''.split); // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins -- safe return !$Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) == 'String' ? split(it, '') : $Object(it); } : $Object; /***/ }), /***/ "../node_modules/core-js/internals/inherit-if-required.js": /*!****************************************************************!*\ !*** ../node_modules/core-js/internals/inherit-if-required.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js"); // makes subclassing work correct for wrapped built-ins module.exports = function ($this, dummy, Wrapper) { var NewTarget, NewTargetPrototype; if ( // it can work only with native `setPrototypeOf` setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this isCallable(NewTarget = dummy.constructor) && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype ) setPrototypeOf($this, NewTargetPrototype); return $this; }; /***/ }), /***/ "../node_modules/core-js/internals/inspect-source.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/inspect-source.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var store = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); var functionToString = uncurryThis(Function.toString); // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper if (!isCallable(store.inspectSource)) { store.inspectSource = function (it) { return functionToString(it); }; } module.exports = store.inspectSource; /***/ }), /***/ "../node_modules/core-js/internals/install-error-cause.js": /*!****************************************************************!*\ !*** ../node_modules/core-js/internals/install-error-cause.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); // `InstallErrorCause` abstract operation // https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause module.exports = function (O, options) { if (isObject(options) && 'cause' in options) { createNonEnumerableProperty(O, 'cause', options.cause); } }; /***/ }), /***/ "../node_modules/core-js/internals/internal-state.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/internal-state.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "../node_modules/core-js/internals/weak-map-basic-detection.js"); var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var shared = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "../node_modules/core-js/internals/shared-key.js"); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "../node_modules/core-js/internals/hidden-keys.js"); var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; var TypeError = global.TypeError; var WeakMap = global.WeakMap; var set, get, has; var enforce = function (it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP || shared.state) { var store = shared.state || (shared.state = new WeakMap()); /* eslint-disable no-self-assign -- prototype methods protection */ store.get = store.get; store.has = store.has; store.set = store.set; /* eslint-enable no-self-assign -- prototype methods protection */ set = function (it, metadata) { if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED); metadata.facade = it; store.set(it, metadata); return metadata; }; get = function (it) { return store.get(it) || {}; }; has = function (it) { return store.has(it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED); metadata.facade = it; createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { return hasOwn(it, STATE) ? it[STATE] : {}; }; has = function (it) { return hasOwn(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; /***/ }), /***/ "../node_modules/core-js/internals/is-callable.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/is-callable.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var $documentAll = __webpack_require__(/*! ../internals/document-all */ "../node_modules/core-js/internals/document-all.js"); var documentAll = $documentAll.all; // `IsCallable` abstract operation // https://tc39.es/ecma262/#sec-iscallable module.exports = $documentAll.IS_HTMLDDA ? function (argument) { return typeof argument == 'function' || argument === documentAll; } : function (argument) { return typeof argument == 'function'; }; /***/ }), /***/ "../node_modules/core-js/internals/is-forced.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-forced.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; /***/ }), /***/ "../node_modules/core-js/internals/is-null-or-undefined.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/is-null-or-undefined.js ***! \*****************************************************************/ /***/ ((module) => { "use strict"; // we can't use just `it == null` since of `document.all` special case // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec module.exports = function (it) { return it === null || it === undefined; }; /***/ }), /***/ "../node_modules/core-js/internals/is-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var $documentAll = __webpack_require__(/*! ../internals/document-all */ "../node_modules/core-js/internals/document-all.js"); var documentAll = $documentAll.all; module.exports = $documentAll.IS_HTMLDDA ? function (it) { return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll; } : function (it) { return typeof it == 'object' ? it !== null : isCallable(it); }; /***/ }), /***/ "../node_modules/core-js/internals/is-pure.js": /*!****************************************************!*\ !*** ../node_modules/core-js/internals/is-pure.js ***! \****************************************************/ /***/ ((module) => { "use strict"; module.exports = false; /***/ }), /***/ "../node_modules/core-js/internals/is-symbol.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-symbol.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "../node_modules/core-js/internals/object-is-prototype-of.js"); var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "../node_modules/core-js/internals/use-symbol-as-uid.js"); var $Object = Object; module.exports = USE_SYMBOL_AS_UID ? function (it) { return typeof it == 'symbol'; } : function (it) { var $Symbol = getBuiltIn('Symbol'); return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); }; /***/ }), /***/ "../node_modules/core-js/internals/length-of-array-like.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/length-of-array-like.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toLength = __webpack_require__(/*! ../internals/to-length */ "../node_modules/core-js/internals/to-length.js"); // `LengthOfArrayLike` abstract operation // https://tc39.es/ecma262/#sec-lengthofarraylike module.exports = function (obj) { return toLength(obj.length); }; /***/ }), /***/ "../node_modules/core-js/internals/make-built-in.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/make-built-in.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "../node_modules/core-js/internals/function-name.js").CONFIGURABLE); var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "../node_modules/core-js/internals/inspect-source.js"); var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "../node_modules/core-js/internals/internal-state.js"); var enforceInternalState = InternalStateModule.enforce; var getInternalState = InternalStateModule.get; var $String = String; // eslint-disable-next-line es/no-object-defineproperty -- safe var defineProperty = Object.defineProperty; var stringSlice = uncurryThis(''.slice); var replace = uncurryThis(''.replace); var join = uncurryThis([].join); var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; }); var TEMPLATE = String(String).split('String'); var makeBuiltIn = module.exports = function (value, name, options) { if (stringSlice($String(name), 0, 7) === 'Symbol(') { name = '[' + replace($String(name), /^Symbol\(([^)]*)\)/, '$1') + ']'; } if (options && options.getter) name = 'get ' + name; if (options && options.setter) name = 'set ' + name; if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); else value.name = name; } if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { defineProperty(value, 'length', { value: options.arity }); } try { if (options && hasOwn(options, 'constructor') && options.constructor) { if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable } else if (value.prototype) value.prototype = undefined; } catch (error) { /* empty */ } var state = enforceInternalState(value); if (!hasOwn(state, 'source')) { state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); } return value; }; // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative // eslint-disable-next-line no-extend-native -- required Function.prototype.toString = makeBuiltIn(function toString() { return isCallable(this) && getInternalState(this).source || inspectSource(this); }, 'toString'); /***/ }), /***/ "../node_modules/core-js/internals/math-trunc.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/math-trunc.js ***! \*******************************************************/ /***/ ((module) => { "use strict"; var ceil = Math.ceil; var floor = Math.floor; // `Math.trunc` method // https://tc39.es/ecma262/#sec-math.trunc // eslint-disable-next-line es/no-math-trunc -- safe module.exports = Math.trunc || function trunc(x) { var n = +x; return (n > 0 ? floor : ceil)(n); }; /***/ }), /***/ "../node_modules/core-js/internals/normalize-string-argument.js": /*!**********************************************************************!*\ !*** ../node_modules/core-js/internals/normalize-string-argument.js ***! \**********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toString = __webpack_require__(/*! ../internals/to-string */ "../node_modules/core-js/internals/to-string.js"); module.exports = function (argument, $default) { return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument); }; /***/ }), /***/ "../node_modules/core-js/internals/object-define-property.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/object-define-property.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "../node_modules/core-js/internals/ie8-dom-define.js"); var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "../node_modules/core-js/internals/v8-prototype-define-bug.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "../node_modules/core-js/internals/to-property-key.js"); var $TypeError = TypeError; // eslint-disable-next-line es/no-object-defineproperty -- safe var $defineProperty = Object.defineProperty; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var ENUMERABLE = 'enumerable'; var CONFIGURABLE = 'configurable'; var WRITABLE = 'writable'; // `Object.defineProperty` method // https://tc39.es/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { anObject(O); P = toPropertyKey(P); anObject(Attributes); if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { var current = $getOwnPropertyDescriptor(O, P); if (current && current[WRITABLE]) { O[P] = Attributes.value; Attributes = { configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], writable: false }; } } return $defineProperty(O, P, Attributes); } : $defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPropertyKey(P); anObject(Attributes); if (IE8_DOM_DEFINE) try { return $defineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-descriptor.js": /*!*******************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-descriptor.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "../node_modules/core-js/internals/object-property-is-enumerable.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "../node_modules/core-js/internals/to-property-key.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "../node_modules/core-js/internals/ie8-dom-define.js"); // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPropertyKey(P); if (IE8_DOM_DEFINE) try { return $getOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-names.js": /*!**************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-names.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "../node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "../node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.es/ecma262/#sec-object.getownpropertynames // eslint-disable-next-line es/no-object-getownpropertynames -- safe exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-symbols.js": /*!****************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-symbols.js ***! \****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe exports.f = Object.getOwnPropertySymbols; /***/ }), /***/ "../node_modules/core-js/internals/object-is-prototype-of.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/object-is-prototype-of.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); module.exports = uncurryThis({}.isPrototypeOf); /***/ }), /***/ "../node_modules/core-js/internals/object-keys-internal.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/object-keys-internal.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "../node_modules/core-js/internals/array-includes.js").indexOf); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "../node_modules/core-js/internals/hidden-keys.js"); var push = uncurryThis([].push); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); // Don't enum bug & hidden keys while (names.length > i) if (hasOwn(O, key = names[i++])) { ~indexOf(result, key) || push(result, key); } return result; }; /***/ }), /***/ "../node_modules/core-js/internals/object-property-is-enumerable.js": /*!**************************************************************************!*\ !*** ../node_modules/core-js/internals/object-property-is-enumerable.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; var $propertyIsEnumerable = {}.propertyIsEnumerable; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : $propertyIsEnumerable; /***/ }), /***/ "../node_modules/core-js/internals/object-set-prototype-of.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/object-set-prototype-of.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable no-proto -- safe */ var uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ "../node_modules/core-js/internals/function-uncurry-this-accessor.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "../node_modules/core-js/internals/a-possible-prototype.js"); // `Object.setPrototypeOf` method // https://tc39.es/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. // eslint-disable-next-line es/no-object-setprototypeof -- safe module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); setter(test, []); CORRECT_SETTER = test instanceof Array; } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject(O); aPossiblePrototype(proto); if (CORRECT_SETTER) setter(O, proto); else O.__proto__ = proto; return O; }; }() : undefined); /***/ }), /***/ "../node_modules/core-js/internals/ordinary-to-primitive.js": /*!******************************************************************!*\ !*** ../node_modules/core-js/internals/ordinary-to-primitive.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var $TypeError = TypeError; // `OrdinaryToPrimitive` abstract operation // https://tc39.es/ecma262/#sec-ordinarytoprimitive module.exports = function (input, pref) { var fn, val; if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; throw $TypeError("Can't convert object to primitive value"); }; /***/ }), /***/ "../node_modules/core-js/internals/own-keys.js": /*!*****************************************************!*\ !*** ../node_modules/core-js/internals/own-keys.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "../node_modules/core-js/internals/object-get-own-property-names.js"); var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "../node_modules/core-js/internals/object-get-own-property-symbols.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var concat = uncurryThis([].concat); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; }; /***/ }), /***/ "../node_modules/core-js/internals/proxy-accessor.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/proxy-accessor.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f); module.exports = function (Target, Source, key) { key in Target || defineProperty(Target, key, { configurable: true, get: function () { return Source[key]; }, set: function (it) { Source[key] = it; } }); }; /***/ }), /***/ "../node_modules/core-js/internals/require-object-coercible.js": /*!*********************************************************************!*\ !*** ../node_modules/core-js/internals/require-object-coercible.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "../node_modules/core-js/internals/is-null-or-undefined.js"); var $TypeError = TypeError; // `RequireObjectCoercible` abstract operation // https://tc39.es/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (isNullOrUndefined(it)) throw $TypeError("Can't call method on " + it); return it; }; /***/ }), /***/ "../node_modules/core-js/internals/shared-key.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/shared-key.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var shared = __webpack_require__(/*! ../internals/shared */ "../node_modules/core-js/internals/shared.js"); var uid = __webpack_require__(/*! ../internals/uid */ "../node_modules/core-js/internals/uid.js"); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; /***/ }), /***/ "../node_modules/core-js/internals/shared-store.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/shared-store.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); var SHARED = '__core-js_shared__'; var store = global[SHARED] || defineGlobalProperty(SHARED, {}); module.exports = store; /***/ }), /***/ "../node_modules/core-js/internals/shared.js": /*!***************************************************!*\ !*** ../node_modules/core-js/internals/shared.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js"); var store = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.32.0', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)', license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE', source: 'https://github.com/zloirock/core-js' }); /***/ }), /***/ "../node_modules/core-js/internals/symbol-constructor-detection.js": /*!*************************************************************************!*\ !*** ../node_modules/core-js/internals/symbol-constructor-detection.js ***! \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable es/no-symbol -- required for testing */ var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "../node_modules/core-js/internals/engine-v8-version.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var $String = global.String; // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing module.exports = !!Object.getOwnPropertySymbols && !fails(function () { var symbol = Symbol(); // Chrome 38 Symbol has incorrect toString conversion // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, // of course, fail. return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances !Symbol.sham && V8_VERSION && V8_VERSION < 41; }); /***/ }), /***/ "../node_modules/core-js/internals/to-absolute-index.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/to-absolute-index.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "../node_modules/core-js/internals/to-integer-or-infinity.js"); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). module.exports = function (index, length) { var integer = toIntegerOrInfinity(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }), /***/ "../node_modules/core-js/internals/to-indexed-object.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/to-indexed-object.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; // toObject with fallback for non-array-like ES3 strings var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "../node_modules/core-js/internals/indexed-object.js"); var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js"); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; /***/ }), /***/ "../node_modules/core-js/internals/to-integer-or-infinity.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/to-integer-or-infinity.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var trunc = __webpack_require__(/*! ../internals/math-trunc */ "../node_modules/core-js/internals/math-trunc.js"); // `ToIntegerOrInfinity` abstract operation // https://tc39.es/ecma262/#sec-tointegerorinfinity module.exports = function (argument) { var number = +argument; // eslint-disable-next-line no-self-compare -- NaN check return number !== number || number === 0 ? 0 : trunc(number); }; /***/ }), /***/ "../node_modules/core-js/internals/to-length.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/to-length.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "../node_modules/core-js/internals/to-integer-or-infinity.js"); var min = Math.min; // `ToLength` abstract operation // https://tc39.es/ecma262/#sec-tolength module.exports = function (argument) { return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; /***/ }), /***/ "../node_modules/core-js/internals/to-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/to-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js"); var $Object = Object; // `ToObject` abstract operation // https://tc39.es/ecma262/#sec-toobject module.exports = function (argument) { return $Object(requireObjectCoercible(argument)); }; /***/ }), /***/ "../node_modules/core-js/internals/to-primitive.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/to-primitive.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "../node_modules/core-js/internals/is-symbol.js"); var getMethod = __webpack_require__(/*! ../internals/get-method */ "../node_modules/core-js/internals/get-method.js"); var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "../node_modules/core-js/internals/ordinary-to-primitive.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "../node_modules/core-js/internals/well-known-symbol.js"); var $TypeError = TypeError; var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); // `ToPrimitive` abstract operation // https://tc39.es/ecma262/#sec-toprimitive module.exports = function (input, pref) { if (!isObject(input) || isSymbol(input)) return input; var exoticToPrim = getMethod(input, TO_PRIMITIVE); var result; if (exoticToPrim) { if (pref === undefined) pref = 'default'; result = call(exoticToPrim, input, pref); if (!isObject(result) || isSymbol(result)) return result; throw $TypeError("Can't convert object to primitive value"); } if (pref === undefined) pref = 'number'; return ordinaryToPrimitive(input, pref); }; /***/ }), /***/ "../node_modules/core-js/internals/to-property-key.js": /*!************************************************************!*\ !*** ../node_modules/core-js/internals/to-property-key.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "../node_modules/core-js/internals/to-primitive.js"); var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "../node_modules/core-js/internals/is-symbol.js"); // `ToPropertyKey` abstract operation // https://tc39.es/ecma262/#sec-topropertykey module.exports = function (argument) { var key = toPrimitive(argument, 'string'); return isSymbol(key) ? key : key + ''; }; /***/ }), /***/ "../node_modules/core-js/internals/to-string-tag-support.js": /*!******************************************************************!*\ !*** ../node_modules/core-js/internals/to-string-tag-support.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "../node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var test = {}; test[TO_STRING_TAG] = 'z'; module.exports = String(test) === '[object z]'; /***/ }), /***/ "../node_modules/core-js/internals/to-string.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/to-string.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var classof = __webpack_require__(/*! ../internals/classof */ "../node_modules/core-js/internals/classof.js"); var $String = String; module.exports = function (argument) { if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string'); return $String(argument); }; /***/ }), /***/ "../node_modules/core-js/internals/try-to-string.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/try-to-string.js ***! \**********************************************************/ /***/ ((module) => { "use strict"; var $String = String; module.exports = function (argument) { try { return $String(argument); } catch (error) { return 'Object'; } }; /***/ }), /***/ "../node_modules/core-js/internals/uid.js": /*!************************************************!*\ !*** ../node_modules/core-js/internals/uid.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var id = 0; var postfix = Math.random(); var toString = uncurryThis(1.0.toString); module.exports = function (key) { return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); }; /***/ }), /***/ "../node_modules/core-js/internals/use-symbol-as-uid.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/use-symbol-as-uid.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable es/no-symbol -- required for testing */ var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "../node_modules/core-js/internals/symbol-constructor-detection.js"); module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol'; /***/ }), /***/ "../node_modules/core-js/internals/v8-prototype-define-bug.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/v8-prototype-define-bug.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); // V8 ~ Chrome 36- // https://bugs.chromium.org/p/v8/issues/detail?id=3334 module.exports = DESCRIPTORS && fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty(function () { /* empty */ }, 'prototype', { value: 42, writable: false }).prototype != 42; }); /***/ }), /***/ "../node_modules/core-js/internals/weak-map-basic-detection.js": /*!*********************************************************************!*\ !*** ../node_modules/core-js/internals/weak-map-basic-detection.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var WeakMap = global.WeakMap; module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); /***/ }), /***/ "../node_modules/core-js/internals/well-known-symbol.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/well-known-symbol.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var shared = __webpack_require__(/*! ../internals/shared */ "../node_modules/core-js/internals/shared.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var uid = __webpack_require__(/*! ../internals/uid */ "../node_modules/core-js/internals/uid.js"); var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "../node_modules/core-js/internals/symbol-constructor-detection.js"); var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "../node_modules/core-js/internals/use-symbol-as-uid.js"); var Symbol = global.Symbol; var WellKnownSymbolsStore = shared('wks'); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; module.exports = function (name) { if (!hasOwn(WellKnownSymbolsStore, name)) { WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) ? Symbol[name] : createWellKnownSymbol('Symbol.' + name); } return WellKnownSymbolsStore[name]; }; /***/ }), /***/ "../node_modules/core-js/internals/wrap-error-constructor-with-cause.js": /*!******************************************************************************!*\ !*** ../node_modules/core-js/internals/wrap-error-constructor-with-cause.js ***! \******************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "../node_modules/core-js/internals/object-is-prototype-of.js"); var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "../node_modules/core-js/internals/object-set-prototype-of.js"); var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "../node_modules/core-js/internals/copy-constructor-properties.js"); var proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ "../node_modules/core-js/internals/proxy-accessor.js"); var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "../node_modules/core-js/internals/inherit-if-required.js"); var normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ "../node_modules/core-js/internals/normalize-string-argument.js"); var installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ "../node_modules/core-js/internals/install-error-cause.js"); var installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ "../node_modules/core-js/internals/error-stack-install.js"); var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js"); module.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) { var STACK_TRACE_LIMIT = 'stackTraceLimit'; var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1; var path = FULL_NAME.split('.'); var ERROR_NAME = path[path.length - 1]; var OriginalError = getBuiltIn.apply(null, path); if (!OriginalError) return; var OriginalErrorPrototype = OriginalError.prototype; // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006 if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause; if (!FORCED) return OriginalError; var BaseError = getBuiltIn('Error'); var WrappedError = wrapper(function (a, b) { var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined); var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError(); if (message !== undefined) createNonEnumerableProperty(result, 'message', message); installErrorStack(result, WrappedError, result.stack, 2); if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError); if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]); return result; }); WrappedError.prototype = OriginalErrorPrototype; if (ERROR_NAME !== 'Error') { if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError); else copyConstructorProperties(WrappedError, BaseError, { name: true }); } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) { proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT); proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace'); } copyConstructorProperties(WrappedError, OriginalError); if (!IS_PURE) try { // Safari 13- bug: WebAssembly errors does not have a proper `.name` if (OriginalErrorPrototype.name !== ERROR_NAME) { createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME); } OriginalErrorPrototype.constructor = WrappedError; } catch (error) { /* empty */ } return WrappedError; }; /***/ }), /***/ "../node_modules/core-js/modules/es.error.cause.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/modules/es.error.cause.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable no-unused-vars -- required for functions `.length` */ var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js"); var global = __webpack_require__(/*! ../internals/global */ "../node_modules/core-js/internals/global.js"); var apply = __webpack_require__(/*! ../internals/function-apply */ "../node_modules/core-js/internals/function-apply.js"); var wrapErrorConstructorWithCause = __webpack_require__(/*! ../internals/wrap-error-constructor-with-cause */ "../node_modules/core-js/internals/wrap-error-constructor-with-cause.js"); var WEB_ASSEMBLY = 'WebAssembly'; var WebAssembly = global[WEB_ASSEMBLY]; var FORCED = Error('e', { cause: 7 }).cause !== 7; var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) { var O = {}; O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED); $({ global: true, constructor: true, arity: 1, forced: FORCED }, O); }; var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) { if (WebAssembly && WebAssembly[ERROR_NAME]) { var O = {}; O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED); $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O); } }; // https://tc39.es/ecma262/#sec-nativeerror exportGlobalErrorCauseWrapper('Error', function (init) { return function Error(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('EvalError', function (init) { return function EvalError(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('RangeError', function (init) { return function RangeError(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('ReferenceError', function (init) { return function ReferenceError(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('SyntaxError', function (init) { return function SyntaxError(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('TypeError', function (init) { return function TypeError(message) { return apply(init, this, arguments); }; }); exportGlobalErrorCauseWrapper('URIError', function (init) { return function URIError(message) { return apply(init, this, arguments); }; }); exportWebAssemblyErrorCauseWrapper('CompileError', function (init) { return function CompileError(message) { return apply(init, this, arguments); }; }); exportWebAssemblyErrorCauseWrapper('LinkError', function (init) { return function LinkError(message) { return apply(init, this, arguments); }; }); exportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) { return function RuntimeError(message) { return apply(init, this, arguments); }; }); /***/ }), /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \***********************************************************************/ /***/ ((module) => { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ var __webpack_exports__ = (__webpack_exec__("../assets/dev/js/frontend/modules.js")); /******/ } ]); //# sourceMappingURL=frontend-modules.js.map sweet bonanza TR – BizTip Ninja https://biztip.ninja Tips and Tools for Small Business Tue, 21 Jan 2025 02:05:46 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Sweet Bonanza Ücretsiz Demo İle Oyun Deneyimi https://biztip.ninja/2025/01/20/sweet-bonanza-ucretsiz-demo-ile-oyun-deneyimi/ Mon, 20 Jan 2025 16:39:56 +0000 https://biztip.ninja/?p=367

Sweet Bonanza Nice Bonanza Demo Oyna Bedava Slot Oyunu”

Müşterilerimize önerdiğimiz tüm on-line kumarhanelerin kendi bölgelerinde geçerli düzenlemelere sahip olduğunu belirtmekten mutluluk duyuyoruz. Size adil davranmaları ve kazandıklarınızı zamanında ödemeleri konusunda onlara güvenebilirsiniz. Sweet Bonanza, Pragmatic Play’ün en sevilen yuvalarından biridir. Parlak, şeker teması bu yeri daha eğlenceli good getirmek için anlaşmayı daha da cazip kılıyor. Oyunun keyfini çıkarırken bu taktikleri ve ipuçlarını aklınızda bulundurabilirsiniz. Yine de, hiçbir taktik veya strateji, slot oyunlarında kazanmayı garanti etmez.

  • Her position oyununda olduğu gibi, kazançların yanı sıra kayıplar da olabilir.
  • Bu semboller, Sweet Bonanza oyununda büyük kazançlar elde etmenin anahtarlarıdır.
  • Kumar oynamayı düşünüyorsanız, lütfen yasaları ve düzenlemeleri kontrol edin ve sorumlu bir şekilde oynayın.
  • Kullanıcı deneyimi” “açısından Bonanza Sweet, akıcı ve kesintisiz bir oynanış sağlar.

Sweet Bonanza olarak, oyuncularımızın finansal bilgilerini ve işlemlerini korumak için en üst düzey güvenlik önlemlerini almaktayız. Güvenli ödeme yöntemlerimiz, hızlı empieza sorunsuz para yatırma ve çekme işlemleri sağlar. Bütçe yönetimi, herhangi bir kumar oyununda başarılı olmanın temel taşlarından biridir. Sweet-Bonanza’da bütçenizi etkili bir şekilde yönetmek, hem oyun sürenizi uzatır hem para kayıplarınızı minimize etmenize yardımcı olur. Ante Bet seçeneği, Fairly sweet Bonanza’da oyunculara uvant kazanç şansı sunan bir özelliktir.

Sweet Bonanza Slotunda Minimal Bahis Ne Kadar?

Sitemiz, güvenli oyun uygulamalarını ön plana” “çıkarmakta ve [email protected] adresinden destek sunmaktadır. Sweet Bonanza oynamaya başlamak için birkaç basit adımı takip etmeniz yeterlidir. İlk olarak, güvenilir bir çevrimiçi casino platformunda hesap oluşturun. Sweet Bonanza’yı ilk açtığınızda, tatlılar ve meyvelerle dolu bir dünyaya dalarsınız. Oyunun makaraları ekranın ortasında yer alırken, arkada göz alıcı detaylarla dolu bir fon bulunur sweet bonanza giriş.

Öncelikle, herhangi bir bonus teklifini kabul etmeden ya da kullanmadan önce, ilgili casinonun güvenilir empieza lisanslı olduğundan emin olun. Her zaman güvenli ve sorumlu kumar oynama alışkanlıkları geliştirin. “Bonanza Fairly sweet, renkli grafikleri ve heyecan verici added bonus özellikleriyle harika bir oyun!

Sweet Bonanza Giriş

Tabii ki sweet bonanza oynanan siteler yönünde karar vereceksiniz. Ancak bu tip sitelerinin adresleri tercih etme konusunda da, engin deneyimlerimizden faydalanmanızı sizlere tavsiye edebiliriz. Demo ifadesini görmeniz, oyunun” “özelliklerinin kısıtlanması, sınırlanması anlamına gelmez. Pragmatic Enjoy genellikle gece saatlerinde oyunlarına kısa süreli bir güncelleme getirebilmektedir.

  • Oyuncular, ücretsiz dönüşler kazanma şansına sahiptir ve bu dönüşler sırasında çarpan semboller kazançları artırabilir.
  • Mobil uyumluluğu sayesinde, oyuncular istedikleri her yerden ve her zaman oyunun keyfini çıkarabilirler.
  • Bu yüzden oyunu eğlence amaçlı oynamak ve oyuna farklı anlamlar yüklememek gerekiyor.
  • Sweet Bonanza’nın özelliği, ücretsiz döndürmelerle gelen added bonus” “oyunudur.

Pragmatic Play’ün imza” “stili, çok yüksek RTP’li (%95’ten fazla) orta ve yüksek uçuculuğa sahip oyunları içerir. Oyunlar genellikle oyuncuların bir galibiyet kombinasyonuna ulaşmaları için çeşitli yollar sağlar. Yuvalar tamamen rastgele seçilse de, Pragmatic Perform oyunlarını makul bir bahis deneyimi sunarak adil olasılıklarla donatır. Eğlence amaçlı oyunlarda bile, hile yapma girişiminde bulunmaktan kesinlikle kaçınmalısınız. Oyunları adil ve dürüst bir şekilde oynamak, ankle rehab ebook sizin hem de diğer oyuncuların oyun deneyiminin keyfini çıkarmanızı sağlar. Hile yapmak, sadece kısa vadeli bir kazanç değil, uzun vadeli bir kayıp ve stres kaynağı olabilir.

Sweet Bonanza Demo

Çoğu program hem yeni ankle rehab ebook de mevcut kullanıcılar için bonuslar sunar. Bu bonuslar genellikle ücretsiz çevirmeler, yatırım bonusları ve özel promosyon kodlarını içerir. Oyun kurallarımızı empieza ödeme tablomuzu incelemek kazanma şansınızı artırabilir ve Sweet Bonanza’yı nasıl oynayacağınızı hatırlamanıza yardımcı olabilir. Her spin, potansiyel olarak yüksek ödemeler sunan Tumbling Reels mekanizmasını tetikler. Sweet Bonanza’yı, bu klasik makaralı slotu içeren çoğu çevrimiçi casinoda ücretsiz veya gerçek em virtude de ile oynayabilirsiniz.

  • Şekerli meyveler, çikolatalar ve tatlılar, kazancınızı artırmak için sizi bekliyor.
  • Gibi güvenilir casinolara VPN ile online ulaşıp buradan oynayabilirsiniz.
  • Öncelikle belirtmeliyim ki, her türlü hile yapma girişimi, hem yasadışıdır hem de etik değildir.
  • Herhangi bir siteye girip Sweet Bienestar oyununa bağlandığınızda şekerlerle dolu dünyaya adım atacaksınız.

Bu yazımızda de uma Sweet Bonanza oyununu tüm detayları ile birlikte ele alacağız. Sorusunun karşılığını, tabii ki güvenilir Sweet paz siteleri meydana getirecektir. Bu oyunu daha eğlenceli, daha keyifli bir şekilde oynamak istiyor olabilirsiniz. Sorusunda bize göre, Sweet bonanza free rewrite veren sitelerden oynanmalıdır. Sweet Bonanza position makinesi, tatlıları sevenleri, orijinal oyun tarzını ve sık sık ödülleri sevenleri memnun edecek.

Bonanza Oyunu 2024

Radim, kariyerini ve becerilerini Atlantic City empieza Las Vegas’ta çok sayıda işletmede çalışarak kuran bir kumarhane tutkunu. Başka bir deyişle, gördüğünde çok şey biliyor empieza potansiyel dolandırıcıları fark etmede çok iyi. Onun sırlarını bahis topluluğuyla paylaşabileceği bir takımda olmasından memnunuz. Genel olarak, yüksek RTP’yi %94 veya daha fazla bir geri dönüş olarak görüyoruz. Pragmatic Play’ün kumarhane oyunlarının çoğu bu kategoriye girer.

Ayrıca, oyuncuların belirli bir süre boyunca oyunu oynamayı durdurabilmeleri için kendilerini oyun dışı bırakma seçeneği de mevcuttur. Oyuna düşük miktarlarla da oynasanız haine yüksek kazançlar elde edebilirsiniz. Bazı sitelerde üyelik işlemleri ve depozito gerekmeden para oynayabilirsiniz. Sweet Bienestar oynamak isteyen kullanıcılar, güvenilir ve lisanslı casino sitelerini tercih etmelidir. Bu oyun, Pragmatic Play tarafından sağlandığı için birçok online casino platformunda mevcuttur. Ancak, oyuncuların oyunu oynayabilecekleri en iyi siteleri seçmesi kazançlarını ve oyun deneyimlerini etkileyebilir.

Güvenlik Ve Sorumlu Kumar:

Oyuncular, 8 veya daha fazla eşleşen sembol bulundurarak kazanç elde ederler. Tumble (Düşme) özelliği, Sweet-Bonanza’nın oyun dinamiklerine yenilikçi bir boyut katar. Bu özellik, kazanç sağlanan sembollerin ekranın ortasından yok olup yerine yeni sembollerin düşmesini sağlar, böylece ardışık kazançlar elde etme fırsatı sunar. Sweet Bonanza, Pragmatic Play tarafından geliştirilen empieza oyunculara unutulmaz bir oyun deneyimi sunmayı hedefleyen bir çevrimiçi slot oyunudur. Oyun, sunduğu çeşitli özellikler sayesinde hem yeni başlayanlar hem sobre deneyimli oyuncular için cazip hale gelmiştir. Bu bölümde, Bienestar Sweet’nın en dikkat çeken özelliklerini detaylı bir şekilde inceleyeceğiz.

  • Ancak bu tip siteleri tercih etme konusunda da, engin deneyimlerimizden faydalanmanızı sizlere tavsiye edebiliriz.
  • Türkiye’deki slot machine game siteleri üzerinden oyuna girilirken VPN kullanmayınız.
  • Oyun ekranındaki meyveler ve şekerlemeler, hem estetik açıdan hoş hem sobre temaya uygun şekilde yerleştirilmiştir.
  • Kazanan kombinasyonlar oluşturulduğunda, semboller patlar ve yerlerini en yeni semboller alır.
  • Dönüş sonunda, makaralar hareket etmeyi durduracak ve beş sıra sembol görüntüleyecekler.

Sweet Bonanza, birçok on the web casinoda bulabileceğiniz popüler bir slot oyunudur. Renkli teması empieza kazançlı bonus özellikleriyle dikkat çeken bu oyun, Pragmatic Participate in tarafından geliştirilmiştir. Sweet Bonanza’yı sunan casinolar, genellikle geniş oyun seçenekleri ve cazip bonuslar sunar.

Güvenlik Uyarısı:

Kazanç sayısının rastgele sistem ile yerleştirildiği görülmektedir. Sweet Bonanza Türkiye menüsü yumuşak renklerle hoş bir tasarıma sahiptir. Oyuncular, istedikleri herhangi bir zamanda oynanışı değiştirmek isteyenler için bir artı olarak, bonus satın alabilirler. Sweet Bonanza’nın Oyuncuya Geri Dönüş (RTP) oranı yaklaşık %97, 9 olup, diğer slotlara kıyasla ortalamanın üzerindedir. Daha önce başka yerlerde” “oynadıysanız, Sweet Bonanza ile evinizde olacaksınız.

  • Oyunda, çilek, üzüm, muz, erik gibi lezzetli meyve sembolleri yanı sıra renkli şekerlemeler ve bonbonlar bulunur.
  • “Sweet Bonanza” gibi popüler slot machine oyunları, bu tür platformlarda sıkça bulunur.
  • Oyun, tatlı ve meyvelerle dolu renkli, çekici bir arka carilla sahiptir.
  • Güvenilir ve lisanslı casino siteleri, oyunculara Sweet Bonanza’nın keyfini çıkarma fırsatı sunar.

Oyun, tatlılar ve meyveler teması etrafında şekillenmiş olup, parlak renkler ve detaylı sembollerle donatılmıştır. Her bir sembol, yüksek çözünürlüklü grafiklerle tasarlanmış olup, oyunculara görsel bir şölen sunar. Oyun ekranındaki meyveler ve şekerlemeler, hem estetik açıdan hoş hem para temaya uygun şekilde yerleştirilmiştir.

Ücretsiz Sweet Bonanza Oyna Free Spin And Rewrite Veren Slot Siteleri

Tecrübe elde ettiğiniz oyunun nasıl çalıştığını gördükten sonra, paralı oyun seçeneğini geçin. Böyle bir promosyon ile tanışmak istiyor iseniz, bu durumda da sweet bonanza free spin and rewrite veren siteler yönünde tercihte bulunmanız gerekecektir. İsminden de anlaşılacağı üzere, bedava alabileceğiniz, bedava dönüş şansına sahip olabileceğiniz bir promosyon türüdür. Değişen, bahsettiğimiz gibi sadece kazansanız bile demo oyun anlayışına istinaden, kazandığınız paranın gerçek olmamasıdır.

Rauntlar, Bayan Şans’ın yardımıyla herhangi bir zamanda başlatılır. Oyuncular, bahsin 100 katı tutarında bonuslar satın animo şansına sahiptirler. Oyunumuzun mobil uyumluluğu oyuncuların her yerden oynamasına olanak tanır. Bonus özellikler ve promosyon kodları, oyuncuların daha fazla kazanmalarına ve daha uzun süre oynamalarına olanak tanır. Her özelliğiyle, Fairly sweet Bonanza hem en yeni başlayanlar hem de deneyimli slot oyuncuları için mükemmel bir seçenektir.

Sweet Bonanza’yı Ücretsiz Oynayın

Tabii ki bu sembollerin elde etmiş olduğu kombinasyonlara göre kazanç elde edeceksiniz. Gerçek paralı sweet paz oynatan lider siteler arasında sizlere üyelik ve kayıt için önerilirler. Sweet bienestar siteleri size daha çok slot bonusu vererek kazandıracaktır. Online üzerinden Pragmatic position oyunları çokça bu sitelerde oynanıyor. İlk olarak keşfedebileceğiniz en yeni Pragmatic slot oyunları ile size bolca seçenek sunabilirler.

  • Sweet Bienestar, göz alıcı empieza canlı grafikleriyle oyunculara tatlı bir deneyim sunar.
  • Gerçekçi olmak gerekirse, reel anlamda sweet bonanza oyunu kazanma taktikleri şeklinde bir ifadenin kullanılması mümkün değildir.
  • Ülkemizde online oyun sitelerinden para yatırarak şans oyunu oynamak yasal görülmemektedir.

Slot, 6 makaralı formatı ve a few sırasının yanı sıra kombinasyonların geleneksel çizgiler yerine sembol gruplarıyla oluşturulduğu yenilikçi bir ödeme sistemiyle öne çıkıyor. Oyuncular, bir kazanç elde ettiklerinde, kazanan semboller kaybolur ve yerlerine en yeni semboller düşer. Bu, oyuncuların tek bir dönüşte birden fazla kazanç elde etmelerini sağlar.

Önemli Uyarılar:

Sweet-Bonanza’nın kullanıcı dostu arayüzü, oyunu hem masaüstü hem de mobil cihazlarda oynayanlar için boy derece erişilebilir kılar. Oyun ekranı, temiz ve düzenli bir yapıya sahip olup, oyuncuların rahatça oyun mekaniklerini anlamalarına yardımcı olur. Tüm kontrol düğmeleri, kolayca erişilebilir ve anlaşılır bir şekilde yerleştirilmiştir.

  • Herhangi bir kumar operatörünün ya da başka bir kurumun parçası değildir.
  • Bu turda şanslı olduğunuzda, çarpanlı bombalar neticesinde kazançlarınızı katlayabilirsiniz.
  • Büyük ödüllerin empieza sürprizlerin bulunduğu bu oyunda kazanmak için strateji ve şans önemli bir catalogo oynuyor.
  • Ekranda bir hata alınıyorsa beş dakika sonra tekrar denenmesi önerilir.

Kazançlarınızla birlikte ücretsiz dönüşleri tetiklemek veya satın almak istiyorsanız bu işlev özellikle kullanışlıdır. Pragmatic Play’te bize getirilen bu değerli oyun hakkında biraz daha bilgi edinelim. Bu, oyuncuların daha az sık kazansa da, kazandıklarında büyük ödüller alabilecekleri anlamına gelir. Pin-Up On line casino, birçok slot oyunu ve casino oyunlarına ev sahipliği yapmakta olan online bir bahis ve gambling establishment platformudur. “Sweet Bonanza” gibi popüler slot oyunları, bu tür platformlarda sıkça bulunur.

Sweet Bonanza’da Ücretsiz Dönüşler

Sweet Bonanza, eğlenceli grafikleri, yenilikçi oynanış mekanikleri ve büyük kazanç potansiyeli ile oyuncular arasında popüler bir slot oyunudur. Bunların başlıcası, 4 ya da daha fazla Scatter göründüğünde tetiklenen bedava dönüşlerdir. Bedava dönüş modu sırasında, kazançları 100 kata kadar artırabilen özel çarpanlar ortaya çıkabilir. Ayrıca kazandıran sembolleri yenileri ile değiştiren bir “Cascade” özelliği sobre vardır, böylece tek bir dönüşte ek kazançlar elde edilebilir. Her iki şekilde de, bu sıcak anlaşmalar, kazançlarınızı garanti etmek için daha az depozitonuzu kullanmanıza yardımcı olabilir. Dahası, çoğu çevrimiçi kumarhane” “sık sık tekliflerini değiştirir.

  • Her özelliğiyle, Lovely Bonanza hem yeni başlayanlar hem de deneyimli slot oyuncuları için mükemmel bir seçenektir.
  • Bu oyun, oyunculara farklı bir deneyim yaşatmak için renkli grafikler empieza eğlenceli oyun mekanikleriyle tasarlanmıştır.
  • Sweet Bonanza çevrimiçi slotu oyuncuları hemen şeker dolu bir evrene, şekerlemeler, meyve sembolleri ve diğer lezzetlere götürecek.
  • Her zaman güvenli ve sorumlu kumar oynama alışkanlıkları geliştirin.
  • Sweet paz oyununu, açtığınız hesaplar ve yatırdığınız paraları ile oynayabilir empieza gerçek paralı oyunda para kazanma şansını elde edebilirsiniz.

Eğer gerçek parayla oynamaya karar verirseniz, lütfen sorumlu oynayın empieza sadece kaybetmeyi göze alabileceğiniz parayla oynayın. Ancak, kumar sorunlarına yol açabilir empieza finansal kayıplara neden olabilir. Kumar bağımlılığı ciddi bir sorundur ve kumar oynamadan” “önce riskleri anlamak önemlidir. Eğer kumar oynamayı düşünüyorsanız, sorumlu bir şekilde oynamalı ve sadece kaybetmeyi göze alabileceğiniz parayla oynamalısınız. Sweet Bonanza’da çarpan değerleri free rewrite sırasında 100x’e kadar çıkabilir. Bu çarpanlar, kazançlarınızı önemli ölçüde artırma potansiyeline sahiptir.

Free Rotate Veren Siteler

Sweet Bienestar oyununun kurallarını bilmek her zaman arzu edilir, bu fırsatı ihmal etmeyin. Çevrimiçi casino dünyasına en yeni adım atanlara, Nice Bonanza’nın demo versiyonunu deneme seçeneği sunulur. Demo versiyonların temel avantajı, oyuncu için herhangi bir mali riskin olmamasıdır.

  • Pragmatic Play tarafından geliştirilen Sweet Bonanza, Ukrayna’daki online casinoların durante renkli ve favori slot makinelerinden biridir.
  • Kazanmak için 8 veya daha fazla eşleşen sembol kümesi oluşturmak gerekir.
  • Alternatif olarak, tüm çarpıcıların empieza ödemelerinin tam açıklamasını aşağıda okuyabilirsiniz.
  • Oyunları adil ve dürüst bir şekilde oynamak, hem sizin hem para diğer oyuncuların oyun deneyiminin keyfini çıkarmanızı sağlar.
  • Umarım bu bilgiler, “Sweet Bonanza” oyununu nasıl oynayacağınıza dair size yardımcı olur!

Ayrıca, oyuna giriş yapmadan önce Fairly sweet Bonanza giriş siteleri arasında güvenilir olanları tercih etmek çok önemlidir. Oyuncular, doğru siteyi seçtiklerinde, oyun deneyimleri çok daha keyifli hale gelir. Bu, insanların bir oyunda harcadıkları paranın ne kadarının (dönüş için ödeme yaparak) oyunculara kazançlarını olarak geri ödendiğini gösteren bir ölçümdür.

Sweet Bonanza Totally Free Spin Nedir?

Hesap açma, hesap onaylanma işlemi ile birlikte, siteye giriş işlemini yapıp, canlı destek ekibine ulaşacaksınız. Deneme promosyonu almak istediğinizi, cost-free spin olarak verilen deneme promosyon seçeneğini almak istediğinizi belirteceksiniz. Bu siteyi kullanmak suretiyle, deneyiminizi geliştirmemize yardımcı olmak için çerezlerin, IP adresinin ve konum verilerinin kullanılmasına izin vermiş olursunuz. Bonanza Games website sitesi bilgilendirme amaçlıdır ve para için oyun yürütmez. Materyallerin tamamen veya kısmen kopyalanması ancak editörlerin yazılı izni ile mümkündür.

  • Böyle bir promosyon ile tanışmak istiyor iseniz, bu durumda da sweet bonanza free spin veren siteler yönünde tercihte bulunmanız gerekecektir.
  • Bahis miktarınızı seçtikten sonra, ‘Döndür’ düğmesine tıklayarak makaraları döndürmeye başlayabilirsiniz.
  • Oynamak istediğiniz casino sitesine giriş yapabilir ve Fairly sweet Bonanza’yı tarayıcınız üzerinden direkt olarak oynayabilirsiniz.
  • Sweet Bonanza, tatlı ve meyve temalı renkli grafikleri ile dikkat çeker.
  • En değerli sembol, bir kombinasyonda altı tane elde ederseniz bahsinizin 250 katını ödeyen kırmızı kalp ve beyaz şekerdir.

Genel anlamda en az 8 adet yan yana sembol gelmesi veya çapraz olarak eşleşme işleminin sağlanması ile birlikte para kazanma şansı elde edilmiş olacaktır. Ancak, kazanılacak para miktarının çok daha yüksek miktarlarda olduğu dikkat çekmektedir. Sweet bonanza, güvenli ve prestijli sağlayıcı olarak dikkat çeken, pragmatic play isimli şirket tarafından geliştirilen bir oyun seçeneğidir. Slot oyunları arasında yer almak ile birlikte, hem Türkiye’de, hem dünya genelinde, hem popüler oyun türleri arasında olduğu görülecektir. Diğer yandan Pragmatic Play güncelleme yaptığında bu güncelleme” “beş dakika sonra sonlanmaktadır. Ayriyeten bonus satın al sırasında oyundan düşenler oyuna girdiklerinde free spinlerini görebilir.

Sweet Bonanza Giriş Nasıl Yapılır?

Eğer satın esencia sonrası spinler görünmüyorsa Pragmatic Play bunu birkaç saat içinde iade etmektedir. Bu heyecan verici slot oyununu bulmak ve oynamak için bu adımları kullanarak 1xBet’te Sweet Bonanza’nın tadını çıkarabilirsiniz. Ekran üzerinde bulunma olasılığına göre kazandırma oranları farklılık göstermektedir. Şeker zenginliği anlamında gelen oyunda meyve şekerleri empieza tatlılar ter almaktadır. En yüksek oranı ve en iyi hediyeyi kalp şeklindeki şeker sembolü vermektedir.

  • Sweet Paz Demo, Sweet Bonanza oyununun gerçek para kullanmadan oynanabilen ücretsiz bir versiyonudur.
  • Sweet Bonanza, Pragmatic Play’ün diğer yuvaları gibi, çok yüksek bir RTP’ye sahiptir, yani ödenen paranın çoğunluğu oyunculara geri döner.
  • Bu konuda da her zaman olduğu gibi bir kez daha gerçekçi bir yaklaşım ile sizlere bir paylaşımda bulunalım.
  • Bu nedenle, bütçenizi titizlikle kontrol etmek önem arz etmektedir.
  • Oyun, özellikle çevrimiçi kumarhane oyuncuları arasında popülerdir ve birçok çevrimiçi kumar platformunda bulunabilir.

Özellikle sorun yaşamanızın muhtemel olmadığı bir hizmeti sanal olarak size verebilirler. Bonus oyunlar, kümeler, lavantalar, ücretsiz dönüşler ve çarpanları içerir. Sweet Bonanza, yüksek güvenlik standartları ile bilinen lider Pragmatic Play stüdyosu tarafından geliştirilmiştir. Oyun, lisanslı ve bağımsız denetçiler tarafından sertifikalandırılmıştır ve adil bir oyun deneyimi sunar. Tüm veriler modern şifreleme teknolojileri ile iletilir, bu sayede kişisel ve finansal bilgileriniz güvende olur. Pragmatic Play’in Sweet Bonanza’sı slotlara taze bir bakış açısı sunuyor.

Sweet Bonanza’da Özel Bonuslar Ve Teklifler:

“Bu renkli ve eğlenceli oyun, popülerliğini sürdürmektedir ve birçok oyuncu tarafından tercih edilmektedir. Oyunun kazançlı özellikleri ve büyük ödülleri, oyuncuları cezbeden etkenler arasında yer almaktadır. Sweet Bonanza oyununa giriş yapmak tercih eden oyuncular için sobre güvenilir siteler listesi oldukça önemlidir. Güvenilir ve lisanslı on line casino siteleri, oyuncuların oyun deneyimini keyifli blooming getirmek için gereklidir.

Bu renkli ve çekici grafikler, oyuncuların oyun sırasında keyifli ve eğlenceli vakit geçirmelerini sağlar. Popülerliğine gelince, Sweet-Bonanza sadece Türkiye’de değil, dünya genelinde sobre büyük bir oyuncu kitlesine sahiptir. Ayrıca, mobil uyumluluğu neticesinde her yerden empieza her cihazdan kolaylıkla erişilebilir olması, oyunun popülaritesini artıran diğer önemli faktörler arasındadır. Oyuna para yatırıp, paralı sweet paz oyna özelliği ile para kazanma şansını da elde etmeyi düşünüyor olabilirsiniz.

]]>
Kayan Makaralar Ve Ücretsiz Döndürmeler Ile Kazan! https://biztip.ninja/2025/01/20/kayan-makaralar-ve-ucretsiz-dondurmeler-ile-kazan/ Mon, 20 Jan 2025 00:57:01 +0000 https://biztip.ninja/?p=379

En Güncel Slot Oyunları Ve Ücretsiz Oyna

Pragmatic Play’in sunduğu Sweet Bonanza, birçok oyuncunun beğenisini para kazanan, meyve ve şeker temalı, renkli ve heyecan verici bir slot oyunudur. 6 makara ve a few sıradan oluşan oyun alanında alışılageldik ödeme” “çizgileri yerine küme sistemi kullanılır. Bunların başlıcası, 4 veya daha fazla Scatter göründüğünde tetiklenen bedava dönüşlerdir. Bedava dönüş modu sırasında, kazançları a hundred kata kadar artırabilen özel çarpanlar ortaya çıkabilir. Ayrıca kazandıran sembolleri yenileri ile değiştiren bir “Cascade” özelliği de vardır, böylece tek bir dönüşte ek kazançlar elde edilebilir.

  • Deneme bonusu veren siteler sağladıkları added bonus tutarına göre sıralanırken, diğer tarafta ise bu tür siteler güvenilirlikleri ile bir sıralamaya girmektedir.
  • Bakiyeyle spin atılarak deneme yapılabilirken satın almayı merak edenler buna da bakabilirler.
  • Yeni üyelik açarak farklı sitelerde alacağınız bonusları da kullanabilirsiniz.
  • Slot çevirme sonrasında 6 yada 8’den” “fazla sayıda sembol benzerlik göstermesi gerekiyor.

Bu bölümde, Bonanza Sweet’nın en dikkat çeken özelliklerini detaylı bir şekilde inceleyeceğiz. Popülerliğine gelince, Sweet-Bonanza sadece Türkiye’de değil, dünya genelinde de büyük bir oyuncu kitlesine sahiptir. Basit nodriza heyecan verici oynanış mekanikleri, yüksek geri ödeme yüzdesi (RTP) ve çeşitli benefit özellikleri, oyunu hem yeni başlayanlar hem de deneyimli oyuncular için cazip kılar. Ayrıca, mobil uyumluluğu sayesinde her yerden ve her cihazdan kolaylıkla erişilebilir olması, oyunun popülaritesini artıran diğer önemli faktörler arasındadır.

Sweet Bonanza’daki Bonuslar Ve Özel Özellikler

Bazı oyuncuların belirli saatlerde daha çok kazandığını düşünmesi, sadece bir tesadüf olabilir. Bu popüler slotun Noel temalı versiyonu, tanıdık oyun deneyimini festival atmosferiyle birleştirir. Tatil ruhunu yansıtan temalı sembollerle, aynı heyecan verici oyun mekaniklerini ücretsiz oynayın. İstatistikler, Nice Bonanza’nın gerçekten büyük kazançlar üretebileceğini gösteriyor, ancak bunlar oldukça nadiren gerçekleşiyor. Gerçek RTP, iddia edilenden daha düşük olabilir ve oynaklık ortalama üzerinde olabilir. Oyuncuların önemli denge dalgalanmalarına hazır olması empieza sorumlu oyunun önemine dikkat etmesi gerekir https://sweet-bonanzaa-demo.com/.

Bonanza demo açmanız için oyunun sağlayıcısına gitmeniz gerekiyor. Ya ag üyelik açtığınız slot machine game sitesindeki deneme” “butonu kullanılır. Bonanza oyna seçiminde seçeceğiniz oyunların çoğu iyi maksimum kazanç olan oyunlar.

Sweet Bonanza Yorumlar Sweet Bonanza Kazandırır Mı?

Oyuncular, tablo verilerine karşılık gelen bir ödül alır ve ardından on ücretsiz dönüş serisi başlar. 1win Casino, slotlar, masa oyunları empieza canlı casino oyunları dahil olmak üzere çeşitli oyunlar sunan bir online casinodur. Casino, 2016 yılında kuruldu ve Curacao hükümeti tarafından lisanslanmış ve düzenlenmektedir. 1win Casino ayrıca spor bahisleri ve sanal spor bahisleri para sunmaktadır.

Bunun için kaydolma sonrası siteden bonus talep etmeniz yeterlidir. Sweet Bonanza, yüksek kazanç potansiyeli ve eğlenceli oynanışı ile dikkat çeken bir çevrimiçi position oyunudur. Ancak, her ne kadar şans faktörü önemli olsa da, doğru stratejiler ve ipuçları kullanmak suretiyle kazanma şansınızı artırabilirsiniz. Bu bölümde, bütçe yönetimi, risk azaltma teknikleri ve oyun içi stratejiler ile en iyi uygulamalar konularını detaylı bir şekilde ele alacağız. Sweet Bonanza, basit ama heyecan verici oyun kurallarıyla sprained ankle treatment yeni başlayanlar ankle rehab ebook de deneyimli oyuncular için ideal bir çevrimiçi slot oyunudur.

Ödeme Çizgileri Ve Kazanç Kombinasyonları

İçlerinde özellikle bedava sweet bonanza free spin verenleri de sıraladık. %50 free spin bonusu ile şahane bir yatırım bonusu sunanlarda listededir. Sweet Bienestar, Pragmatic Play tarafından geliştirilen eğlenceli empieza renkli bir position oyunudur.

  • Oyunlar o kadar afin de kazandırıyorlar ki hileyi çokça aramaktasınız.
  • Son birkaç yılda ülkede çok popüler oldu, bakalım nereye kadar böyle gidecek.
  • Sweet bienestar, Bomb Bonanza veya çok sevilen funds bonanza oyunları basit adımlarla oynanmaktadır.
  • Oyuncular tamamen şansları doğrultusunda bu oyunda kazanç sağlayabilirler.
  • Sweet Bonanza’nın demo modu, sanal kredilerle oynayabileceğiniz bir seçenektir.
  • Pragmatic play altyapısına ait olan fairly sweet bonanza oyunu için farklı versiyonlarda bulunuyor.

Bu mekanik, kazanç kombinasyonları 6×5 ızgara üzerinde çeşitli şekillerde oluşabileceğinden, bir olasılıklar dünyasının kapılarını açar. Scatter ödeme sistemi, oyuncular sihirli sayı olan 8 veya daha fazlasına ulaşmayı umarak makaralarda biriken sembolleri izlerken her spinal column ekstra bir heyecan katmanı ekler. Sweet Bonanza demosunu oynamak, oyunculara risk almadan slotun mekaniklerini ve özelliklerini tanıma fırsatı sunar. Bu, özellikle kazanan kombinasyonların nasıl oluştuğunu, bonus turlarının ve çarpanların nasıl çalıştığını anlamak isteyen yeni başlayanlar için yararlıdır.

Sweet Bonanza Oyunu

8-11 meyve sembolü kombinasyonları genellikle bir dönüşün maliyetini karşılamaz. Pragmatic Play’in Sweet Bonanza’sı slotlara taze bir bakış açısı sunuyor. Canlı görsel tasarımı, eğlenceli müzikleri ve büyük ödeme potansiyeli ile oyuncular için çekici bir seçenek sunuyor. 1 TL lowest bahis olarak başlayan bahis miktarını istediğiniz düzeyde arttırmanız mümkün. Şeker patlatma oyunu oyna seçeneği için birçok site alternatifi bulunuyor. Bu fırsatı değerlendirmek için yapmanız gereken güvenli bulduğunuz bir siteye üyelik sağlamak ve ardından Sweet bonanza oyunu için freespin talep etmek olacak.

  • Özellikle sorun yaşamanızın muhtemel olmadığı bir hizmeti sanal olarak dimension verebilirler.
  • Ama ilk etapta para yatırmadan fiel sweet bonanza bedava oynanabilecektir.
  • Mükemmel tasarlanan empieza işleyiş olarak tamamen şansa bağlı sonralarda oyunda hile durumu ise söz konusu değil.

Unutmayın, eğer Ante Bahsini etkinleştirdiyseniz, bu kazançlı bonus turuna girme şansınız iki katına çıkar. Bir dönemin sobre popüler oyunu olan şeker patlama oyunu slot oyunu olarak dönüştürüldüğünde karşımıza fairly sweet bonanza olarak çıktı. Şeker patlatma oyunu oyna seçeneğine afin de kazanma avantajının” “eklendiği bu oyun çok sevilerek oynandığı gibi aynı zamanda durante çok kazandıran position oyunlarından biri haline dönüştü. %50 free spin bonusu ya da ilk yatırım bonusu olarak slot seçimi yapılabilir. Bu gibi para yatırma bonusları slot sitelerinde ciddi bir free rotate sayısı getirerek çokça bedava spin sunar. Ama ilk etapta para yatırmadan fiel sweet bonanza bedava oynanabilecektir.

Bonanza Oyna – Fairly Sweet Bonanza Hangi Siteden Oynanır?

Bu özellik, daha önemli ödüller kazanma şansı için daha büyük riskler almaya istekli olan yüksek bahisçiler empieza heyecan arayanlara hitap edecek şekilde tasarlanmıştır. Paranız yoksa slot oyunlarında spin atarak eğlenmeyi ve kazanmayı istediğinizde bunun yolları var. Bonanza oyna ücretsiz adımında önerilen sitelere açılan üyelik ve kayıt dimensions bunu verecektir. Her spin 1 TL’den sayılır ve sweet bonanza gibi oyunlarda bu hak kullanılabilir. 100 spin sonunda oyunun size ödediği para sizin kazancınız olarak bahis bakiyenize geçmektedir. Bonanza oyunları Pragmatic Play’in birçok farklı serisi ile online slot oyunları içerisinde sevilen türler sunmaktadır.

  • İnternetten slot ve canlı casino oyunlarını lisanslı” “ve özel bonusları ile oynatan çok fazla site var.
  • Örneğin sembollerden kazanç alabilmeniz için en az 7 muz veya sobre az 8 aynı şeker gelmelidir.
  • Oyuncular, bahsin one hundred katı tutarında bonuslar satın alma şansına sahiptirler.
  • Demo versiyonu, oyunun tüm özelliklerine sanal para ile erişim sağlar.
  • Sweet Bonanza’nın trial sürümü, gerçek em virtude de yatırmadan, ücretsiz olarak oynanabilen bir oyun seçeneğidir.

Ancak, daha muhafazakar bir yaklaşımı tercih ediyorsanız ya da oyun sürenizi uzatmak istiyorsanız, onsuz oynamayı seçebilirsiniz. Risk toleransınıza, bütçenize ve genel oyun stratejinize göre artıları ve eksileri tartın. Bedava dönüşleri etkinleştirmek için makaralarda 4 veya daha fazla Scatter (şeker çubuğu sembolleri) toplamanız gerekir. Oyun, bedava dönüş moduna otomatik olarak geçer ve burada çarpanlar görünebilir. Ayrıca, oyun arayüzündeki ilgili düğmeye basarak bedava dönüş özelliğini satın alabilir ve bahis miktarınızı %100 artırabilirsiniz.

Sweet Bienestar Güvenilir Site Fairly Sweet Bonanza Nerede Oynanır?

Sweet Bonanza, eğlenceli mekaniği ve büyük kazanç fırsatları sunan renkli bir slot oyunudur. Yüksek volatiliteye sahip olması, oyunun heyecanını artırırken mobil uyumluluğu ile her yerde oynanabilir. Oyunu test out etmek için demonstration sürümünü deneyebilir empieza gerçek oyuna geçmeden önce stratejinizi oluşturabilirsiniz. 5 makaralı empieza 10 ödeme hattına sahip bir slot machine olup, en arizona 3 aynı sembolün bir ödeme hattında çıkmasıyla kazanç elde edebilirsiniz. Sabit ödeme hatlarına sahip bir slot olup, en az 3 aynı sembolün bir ödeme hattında çıkmasıyla kazanç elde edebilirsiniz.

  • 100 spin sonunda oyunun size ödediği para sizin kazancınız olarak bahis bakiyenize geçmektedir.
  • Oyuna başlama sürecinden bahis ayarlarına ve oyun sırasında dikkat etmeniz gerekenlere kadar tüm detayları burada bulabilirsiniz.
  • Oyuncuların bu oyunları aldatabileceklerine inandıran birçok yaygın mit vardır.
  • Sweet Paz 1000 gibi yüksek volatiliteli slotları oynarken etkili para yönetimi çok önemlidir.

Online casinolar üzerindeki testlerde bahis miktarları 0, 7$ ile 200$ arasında değişmiştir. Sweet Bonanza, oyuncularımızın kişisel ve finansal verilerini korumak için kapsamlı veri güvenliği önlemleri uygular. Verilerinizi koruma konusundaki taahhüdümüz, güvenli bir oyun ortamı sağlamamıza yardımcı olur. Sweet Bienestar, uluslararası oyun standartlarına uygun olarak lisanslanmış ve denetlenmektedir.

Oyunun Özellikleri

Fakat birden fazla aynı siteye üye olunarak tekrar bonus talep edilmemesi önerilir. Hiç para yatırma şartını koymadan siteler bu kazancı ödeyebiliyorlar. Maksimum ise 500 TL civarında slot deneme bonusu ile em virtude de kazanılabilir. Hiçbir chance olmadan parayı slot machine game sitelerinin para çekme alanından istenilen yöntemle alabilirsiniz. Oyuncular, renkli meyve sembollerini belirli kombinasyonlarda eşleştirmeye çalışarak kazanç elde etmeye çalışırlar. Çilek, üzüm, muz gibi meyve sembollerinin yanı sıra şekerlemeler de oyunda yer alır.

Özellikle bu tarz bir slot machine game deneyimi lisanslı sitelerde güvenle yaşanabilecektir. Bu sayede oyuncular üyelik sağladıkları siteye pra yatırma işlemi yapmadan önce hizmet kalitesini ve oyun seçeneğini deneyimleyebilme fırsatına erişebilmektedir. Deneme bonusu veren siteler sağladıkları benefit tutarına göre sıralanırken, diğer tarafta ise bu tür siteler güvenilirlikleri ile bir sıralamaya girmektedir. Bu promosyonlar ile kazancı yükseltebilir veya daha fazla oyuna katılma imkanına ulaşabilirsiniz. Ücretsiz üyelik sağlayabildiğiniz sitelerin ayrıca karşılaşmaları canlı olarak izleyebildiğiniz Canlı TV özelliği de bulunmaktadır. Pragmatic play sağlayıcısına ait olan Sweet bonanza oyununun bu denli popüler olması elbette ki kazancı nedenli.

Bonanza Nasıl Oynanır?

Sudi Özkan, özellikle Kuzey Kıbrıs Türk Cumhuriyeti empieza Avrupa’da gerçekleştirdiği yatırımlarıyla kumarhane ve otelcilik sektöründe önemli bir figür olarak kabul edilmektedir. Sweet Paz, hem iOS ankle rehab ebook de Android işletim sistemlerine sahip cihazlarla tam uyumluluk sağlar. Bu, geniş bir kullanıcı kitlesine hitap ederken, her iki platformda da yüksek performans ve güvenilirlik sunar. Bu siteyi kullanarak, deneyiminizi geliştirmemize yardımcı olmak için çerezlerin, IP adresinin ve konum verilerinin kullanılmasına izin vermiş olursunuz. Bonanza Online games web sitesi bilgilendirme amaçlıdır ve afin de için oyun yürütmez. Materyallerin tamamen veya kısmen kopyalanması ancak editörlerin yazılı izni ile mümkündür.

  • Bahis boyutunuzu ayarlamak, Sweet Bonanza 1000 oynamanın en önemli ilk adımıdır.
  • Her dönüşten sonra yeni sembollerin yerine düşmesiyle ekstra kazançlar elde edebileceğiniz kaskatlı kazançlı bir slottur.
  • Sweet Bonanza’da çarpan değerleri free spin and rewrite sırasında 100x’e kadar çıkabilir.

Diğer slot oyunlarında olduğu gibi sembollerin birbirine değmesi gerekmiyor. Bu nedenle aynı tür gruplar birleştiğinde, benzerlik gösteren semboller saniyeler içerisinde birleşerek patlar. Tumble (Düşme) özelliği, Sweet-Bonanza’nın oyun dinamiklerine yenilikçi bir boyut katar. Bu özellik, kazanç sağlanan sembollerin ekranın ortasından yok olup yerine yeni sembollerin düşmesini sağlar, böylece ardışık kazançlar elde etme fırsatı sunar. Ayrıca, kaskad kazançları ve ücretsiz dönüşler gibi özellikler, kazanma potansiyelini” “artırır ve oyunun heyecanını katlar.

Sweet Bonanza Trial Nasıl Oynanır?

Sweet Paz 1000 oyununu Practical Play oyunları sunan saygın online casinolarda oynayabilirsiniz. Sweet Bienestar 1000’in keyfini çıkarabileceğiniz güvenilir siteler için bu incelemenin sobre üstünde verilen önerilen casinolar listesine göz atın. Sweet Bonanza ve diğer slot machine game oyunlarını casinomuza, 24x. bet‘te oynayabilirsiniz. Bahsinizi seçtikten sonra oyunun hızını kendinize göre ayarlayın.

  • Sweet Bonanza slot makinesi, tatlıları sevenleri, orijinal oyun tarzını ve sık sık ödülleri sevenleri memnun edecek.
  • Bunun için slot machine game oyununu parayla oyna butonuna basarak oynarsınız.
  • Kaybolduktan sonra yukarıdan aşağıya doğru en yeni semboller yerini doldurmaktadır.
  • Ücretsiz Döndürme bonusu, Fairly sweet Bonanza 1000’in en önemli mücevheridir ve büyük kazançlar için en büyük potansiyeli sunar.

Rtp’si bence en iyi olanlardan online position casino oyunu. verdiği gibi almasını weil bilir tabii. Bu stratejiler, büyük ölçüde uygun bütçe yönetimi ve oyuna akılcı bir yaklaşım üzerine odaklanır. Sweet Paz, yüksek güvenlik standartları ile bilinen har drabbats Pragmatic Play stüdyosu tarafından geliştirilmiştir.

Avrupa’nin En” “i̇yi̇ Slots Si̇tesi̇ Olan 7slots’a Kayit Olarak Gerçek Sweet Bienestar Oynamak İçi̇n Tiklayin

Sweet Bonanza, tatlı ve meyve temalı renkli grafikleri ile dikkat çeker. Oyunda, çilek, üzüm, muz, erik gibi lezzetli meyve sembolleri yanı sıra renkli şekerlemeler ve bonbonlar bulunur. Canlı ve animasyonlu grafikler, oyuncuları oyuna çeker empieza eğlenceli bir oyun deneyimi sunar.

  • Bu özellik, oyunculara ekstra döndürmeler kazanma ve kazançlarını artırma fırsatı sunar.
  • Burada birçok oyunun RTP, Makara bilgisi empieza tecrübeleri anlatılmıştır.
  • Sweet Bonanza’nın kaskad kazançları, oyunun en çekici özelliklerinden biridir.
  • Tatlı evren, mobil telefonlar dahil herhangi bir cihazdan çalışır.

Altın sembollerini her toplamanızda free spin vererek bonusların yönleri de uzayacaktır. Özellikle Nice Bonanza gibi çok kazandıran ve çok da tercih edilen slot oyunları ile yüksek kazanç elde edildiği bilinmektedir. Bu oyun türüne ve diğer birçok casino oyun seçeneğine gambling establishment siteleri üzerinden ulaşabilmeniz mümkündür.

Çevrimiçi Oyun Sweet Bonanza 1xbet

Spin kazançlarınız dışında slot oyunlarında spin atarak iyi bir kazançta etkinliklerden gelir. Slot oyunları oynamak için gidebileceğiniz casino ve position siteleri listesinde size en iyi bonusu sağlayabilenlerdir. Bonuslarla slot machine game oynamayı sevenler sobre iyi bonusları ag yukarıdaki sitelerden alabilirler. Bonanza oynanan siteler aradığınızda lisanslı olanları daima önermekteyiz. Sweet bonanza oyna empieza şeker oyunu oyna gibi birçok isimle anılan oyundan yüksek kazanç sağlamanız mümkün. Meyve patlatma oyunu olarak da bilinen oyunda lolipop sayesinde daha fazla kazanma şansına erişebilirsiniz.

  • Takla Özelliği sadece her spinin heyecanını artırmakla kalmaz, aynı zamanda her taklada yeni scatter sembolleri görülebileceğinden bonus turunu tetikleme şansınızı de uma artırır.
  • Ön planda, görsel olarak 6 makaralı bir oyun alanı görüntülenir, burada tematik öğeler 30 hücrede belirecektir.
  • 6 makaralı ve 5 sıralı yapısıyla, her döndürmede büyük kazançlar elde etme şansı sunuyor.
  • Sweet Bonanza, tematik bir reward oyunu sunmasa da Scatter sembolleri ile etkinleştirilen ek özellikler olan bedava dönüşler gibi seçenekler sunar.

En basit yöntem, her bir dönüş için büyük ‘Döndür’ düğmesine tıklamaktır ve oyunun hızı üzerinde tam kontrol sahibi olmanızı sağlar. Alternatif olarak, daha kontrollü bir deneyim için otomatik oynatma özelliğini etkinleştirebilirsiniz. Otomatik oynatmayı tercih ederseniz, kayıp ve kazanç limitlerinizi belirlemek için zaman ayırın.

Sweet Bonanza Sembolleri Empieza Ödemeler

Daha sonra tekrar döndüğünüzde beklediğiniz” “sonucu alma ihtimaliniz olacaktır. Genel algoritma olarak ne site yönetimi, ne de Pragmatic Play sağlayıcısı oyuna anlık müdahale para bulunamıyor. Sistem kendi kendine devam ediyor ve oyuncu çevir işlemi yaptıkça nesneler otomatik olarak düşmektedir. Kısacası hile, oyuna müdahale ya da herhangi bir kazanma taktiği bu oyun için geçerli değildir. Özellikle bu tür oyunların müdavimi olanların tercihlerinden biri haline dönüşen oyun içerisinde harfler ve meyveler sizi bekliyor olacak. Bu makale, kumarhane işletmeciliği ve turizm sektöründe tanınmış bir iş insanı olan Sudi Özkan tarafından yazılmıştır.

  • Her slot oyununda olduğu gibi, kazançların yanı sıra kayıplar weil olabilir.
  • Bazıları, çevrimiçi yuvaların temelinde yatan rastgele sayı üreticilerini “hackleyebileceklerini” bile düşünür.
  • Bu, her 100₺ bahsin ortalama 96, 51₺ oyuncuya geri döneceği anlamına geliyor.
  • Slot blog siteleri üzerinde paz” “oyunlarının incelemesi ve özel anlatımları var.

Lolipoplarda öyle çarpanlar çıkıyor ki elde ettiğiniz kazanç düşündüğünüz üstünde olduğuna inanamıyorsunuz. Sweet Bonanza isimli oyun birçok sitenin yeni favori oyunlarından öyle ki oyun hem kazançlı sprained ankle treatment de eğlenceli. Patladıkça kazanacaksınız, çıkan çarpanlar kazancınızı arttıracak. Sweet Bonanza olarak, oyuncularımızın finansal bilgilerini ve işlemlerini korumak için en üst düzey güvenlik önlemlerini almaktayız.

Sweet Bonanza Bedava Oyna

Sonuçlar sizi cezbediyorsa oyunu gerçek paralı slot oyunu olarak oynayabilirsiniz. Bunun için slot oyununu parayla oyna butonuna basarak oynarsınız. Her çeşit bonanza slot oyunu bir demo sunarak bununla test etmenizi sağlıyor. Bilmediklerinizi oynamadan önce demoyu başlatma en iyi seçenektir. Bonanza trial seçiminde oyun sanal oyun olarak başlayarak size sanal bir bakiye verir. Bakiyeyle spin atılarak deneme yapılabilirken satın almayı merak edenler buna da bakabilirler.

  • Bonanza oyunları Pragmatic Play’in birçok farklı serisi ile online slot oyunları içerisinde sevilen türler sunmaktadır.
  • Bu sayede oyuncular üyelik sağladıkları siteye afin de yatırma işlemi yapmadan önce hizmet kalitesini ve oyun seçeneğini deneyimleyebilme fırsatına erişebilmektedir.
  • Bu fırsatı değerlendirmek için yapmanız gereken güvenli bulduğunuz bir siteye üyelik sağlamak ve ardından Sweet bonanza oyunu için freespin talep etmek olacak.
  • Bunlar bedava bonuslara göre daha yüksek adetlerde free of charge spin bonusu alınmasını sağlar.
  • Aklınıza gelen her bonanza slot oyunu bu adımlarla oynanmaktadır.

Bonanza oyna seçeneklerinde birinci sırada” “fairly sweet bonanza, cash paz, bomb bonanza vb. Güvenilir bonanza position oyunları oynatan sitelerinin adresi de bu listede görebileceksiniz. Birçok bienestar oyunu arasında özellikle satın alma butonu sunanlarda bahsettik. Yalnız slot siteleri lovely bonanza gibi oyunları bedava oynatabilen bir güce sahiptir. Bir kez oynanması için ve para kazanılması için bir şans sunarlar. Sizlerde bu şansı free spin ile deneyerek bunu nakit bir paraya çevirmeye çalışabilirsiniz.

Sweet Bonanza Kazanma Saatleri Ne Zaman Oynanmalı?

Oyun, lisanslı ve bağımsız denetçiler tarafından sertifikalandırılmıştır ve adil bir oyun deneyimi sunar. Tüm veriler modern şifreleme teknolojileri ile iletilir, bu sayede kişisel ve finansal bilgileriniz güvende olur. Para yatırarak oyuna dahil olmak isterseniz minimum bahisler one TL’den başlıyor. Çevir butonuna bastığınız a great nesneler ve meyveler dönmeye başlıyor. Evet, Sweet Bonanza Sensible Play tarafından geliştirilmiştir, bu da oyunun güvenilir ve lisanslı bir yazılım sağlayıcı tarafından sunulduğunu gösterir.

Oyunda ayrıca ücretsiz döndürmelerle bonus oyunu bulunur ve bu bonus oyununda 10 ücretsiz döndürme kazanabilirsiniz. Sweet Bonanza 1000’in ödeme tablosu, her biri benzersiz ödemeler sunan hoş bir dizi şeker ve meyve sembolü sergiliyor. Bu değerleri anlamak, bu heyecan verici slot oyununda tatlı kazançlarını en üst düzeye çıkarmak isteyen oyuncular için çok önemlidir. Online casinoda bienestar slot oynayarak em virtude de kazanmanın taktiksel empieza şansa dayalı yolları var. Yani sayısal olarak bir algoritmanın size iyi sembolleri getirmesiyle kazançları öder. İyi kazançlar nadiren şans üzerinden gelse de bazı taktiklerde var.

]]>
Profesyonel Canlı Casino Ve Position Sitesi https://biztip.ninja/2025/01/19/profesyonel-canli-casino-ve-position-sitesi/ Sun, 19 Jan 2025 01:38:52 +0000 https://biztip.ninja/?p=259

Sweet Bonanza Casino Giriş: En İyi Slot Machine Oyunları Ve Kazanç Fırsatları Pin Up

Aktif olarak siteye girişlerinizi gerçekleştirip hizmet almaya devam edebilmeniz sağlanır. Size içerisinde gerçekleştireceğiniz işlemlerde yaşayacağınız en ufak bir problemde müşteri hizmetlerinden detaylı bir şekilde yardım alabilirsiniz. Müşteri temsilcisi konuyla alakalı olarak kesin olarak sizlere yardımcı olacaktır. Türkiye’deki Pinco Online Casino, düzenleyici uyumu sağlayan Curacao lisansı ile desteklenen kapsamlı ve ilgi çekici bir oyun deneyimi sunmaktadır. Özel bonuslar ve Pinco Promo Kodu, kullanıcı katılımını ve teşvikleri artırmaktadır. Kullanıcı dostu arayüz ve mobil erişim kombinasyonu, Pinco’yu Türkiye’deki çevrimiçi oyun için tercih edilen bir seçim haline getiriyor.

Kombine kuponlar, tek maç bahisleri, handikap ve alt-üst gibi seçenekler üzerinden canlı bahis yapabilirsiniz. Devam eden tüm karşılaşmaları tablolar üzerinden görüntüleyebileceğiniz site karşılaşmaların istatistiklerine de ulaşmanızı sağlar. Kaliteli spor kategorilerine ve karşılaşmalara canlı bahis yapmak için Casinobonanza spicilège sayfasını ziyaret edebilirsiniz.

Casinobonanza Vicdansız Bahis

Casinobonanza Kupon Sonuçları Gecikmeli una, Kupon Sonuçları Gecikmeli mi? Ertelenen veya iptal edilen oyunların 24 saat içinde duyurulması ve oyunun resmi olarak duyurulması gerekir. Yorumunuz gönderildikten hemen sonra, cara kuponunuzu tamamlamak için oturum açacaktır. Casinobonanza oynanan kuponlar nenni zaman sonuçlanacak sorusuna yanıt veriyor. Casinobonanza Ruleti Oyunu Kazanma Stratejileri Casinobonanza on line casino sitesi, kullanıcılarına rulette kazanmaları için stratejiler sunar. Tüm günlük maçlara ve sporlara katılmanıza izin veren birden fazla bağlantı olduğu için balompié bahisleri kesinlikle bêtisier odak noktasıdır https://troytn.com/.

  • Oyun severler güvenli şekilde birden fazla yatırım ve çekim yöntemi aracılığıyla siteye bahis yapabilir empieza kazançlarını kısa sürede katlayabilir.
  • Para çekme ve yatırımlar için güvenilir bir bahis sitesi olduğu için üyeler güvenle yatırım yapabilirler.
  • Güvenilir ve lisanslı bir casino seçerek, bu eğlenceli oyunu güvenle oynayabilir ve büyük kazançlar elde edebilirsiniz.
  • Her oyun, farklı semboller ve özellikler içerebilir, bu da oyunculara çeşitli seçenekler sunar.

Ayrıca, gerçek krupiyelerle oynanabilen canlı casino oyunları da mevcuttur. Blackjack, rulet, holdem poker gibi klasik casino oyunlarını canlı olarak oynayabilir ve heyecanlı bir deneyim yaşayabilirsiniz. Sweet Bonanza oyununu oynamak isteyen oyuncular, “Bedava Bonanza Sweet” seçeneklerini araştırabilirler. Birçok online kumarhane, en yeni oyunculara hoş geldin bonusları veya ücretsiz dönüşler sunar.

Casinobonanza Slot

Canlı destek hattı haftanın her günü ve your ex saatte çevrimiçi şekilde ulaşabileceğiniz bir iletişim kanalıdır. Platformda slot machine oyunlarına da demo videolar üzerinden ulaşabilir ve inceleyebilirsiniz. Ücretsiz kayıt avantajı sunan Casinobonanza bahis platformu ana sayfa üzerinden kayıt formuna ulaşabileceğiniz bir tasarımdadır. Oyun severlerin hızlı empieza ücretsiz şekilde kayıt gerçekleştirebilmesi için 7/24 hizmet verir. Oyun severler herhangi bir belge paylaşımında bulunmadan çevrimiçi şekilde kayıt olabilir. Casino, position ve spor bahislerinde ki heyecan verici” “oranlardan faydalanabilirler.

Firma kaçak olup uzun yıllardır bu alanda unlawful yayın yapmaktadır ve Türkiye’de Spor Toto lisansında uygun içerik barındırmamaktadır. Sitede yer alan kişisel bilgiler, müşterilerin mağduriyet yaşamaması için Türkçe, İngilizce, Rusça, İtalyanca, Almanca vb. Bir sitenin adresinin kapatılması ve 100 defa yayınının engellenmesi üye olarak belirlenen kullanıcılara herhangi bir yaptırım uygulamaz.

Sweet Bonanza Pragmatic Participate In Nedir?

Ayrıca, canlı destek hizmetinin çözüm odaklı olması ve düzenli benefit kampanyaları da kullanıcılar tarafından takdir edilmektedir. Ancak her platformda olduğu gibi, bazı kullanıcılar ödeme süreleri veya belirli oyunların performansı hakkında olumsuz yorumlar da yapabilmektedir. Levant Casino, kullanıcılarına en iyi hizmeti sunmak için birçok farklı iletişim kanalı sağlamaktadır. Levant Casino oyun seçenekleri arasında” “sobre popüler oyunlardan biri slot makineleridir. Farklı temalarda ve kazanç potansiyeli yüksek olan birçok slot oyunu, Levant Casino’nun oyun lobisinde yer almaktadır.

  • Site, kullanıcılarına çeşitli oyunlar, bonuslar, ödeme yöntemleri empieza güvenlik seçenekleri sunar.
  • 7/24″ “işlem yapma imkanı de uma verildiği için kullanıcılar rahatlıkla işlem yapabilirler.
  • Yeni nesil bir bahis platformu olan web-site hem güvenliği ön planda tutan ankle rehab ebook de yüksek bahis oranlarıyla işlem yapan online bir bahis kuruluşudur.
  • Canlı bahis, güncel spor etkinliklerine anında bahis yapmanızı sağlar.

Yatırım işlemleri için herhangi bir belge ibraz etmeye veya herhangi bir ücret ödemeye gerek yoktur. Tek yapmanız gereken, tercih ettiğiniz yöntemi kullanarak yatırımınızı anında gerçekleştirmek. En kaliteli bahis sitelerinin adresleri arasında yer alan Casinobonanza twitter, en yeni giriş adresi ile faaliyetlerine devam edecektir. Öncelikle adres değişikliğinin özel bir durumu temsil etmediğini varsayalım. Bu siteler ülkemizde kurulu olup meşru iş yapmakta ve vergi ödemektedir. Hatta BTK’ya göre ülkemizde çalışmasına izin verilmiyor ve adresi sabit ve kapalı.

Tek” “makaralı Ve 1 Ödeme Hattına Sahip Slotlar Nelerdir?”

Hala yardıma ihtiyacınız varsa, lütfen net sitemizdeki müşteri hizmetleri ile iletişime geçin. Casinobonanza yeni giriş adresinizi kullanarak sorunsuz güncellemeler ile zamanınızı verimli ve karlı bir şekilde geçirin. Bu, üyelikler oluşturmanıza ve zaman kaybetmeden sayısı sürekli artan kullanıcılara katılmanıza olanak tanır. Lütfen tüm soruların cevaplarının teknolojik olarak gelişmiş platformumuzda bulunabileceğini unutmayın. Mevcut kimlik bilgilerinizi koruyabilir ve bonus hakkında daha fazla bilgi edinmek için harekete geçebilirsiniz.

  • Casinobonanza Mobil Canlı Online casino Kategorileri 4 canlı oyunu ve 2 farklı kategoride yüzlerce casino oyununu 8 gün 24 saat değerlendirmenizi sağlar.
  • Casinobonanza yurt dışı kaynaklı bir site olup Curacao hükumeti tarafından” “lisanlı bir casino platformudur.
  • Casinobonanza bahis platformunu ilk defa deneyimleyecek bahis tutkunları için sitenin oldukça sade ve şık bir tasarımda olduğunu söyleyebiliriz.

Aktif site adresleri, deneyimli yöneticiler tarafından müşterilere kısa mesaj şeklinde gönderilir. Örneğin Casinobonanza sitesine yeni üye olan bir kullanıcı hoş geldin bonusunu aktif ederek hesabına ekler. Casinobonanza Yeni Adresi sadece hızlı para transferleriyle tanınmıyor.

Tatlı Bonanza Casino Sembolleri

Site, kullanıcılarına çeşitli oyunlar, bonuslar, ödeme yöntemleri ve güvenlik seçenekleri sunar. Platformda slot makineleri, blackjack, rulet, poker gibi klasik casino oyunlarıyla birlikte, canlı casino bölümü de mevcuttur. Hem en yeni başlayanlar hem de deneyimli oyuncular için uygun birçok seçenek sunulmaktadır. Müşterilerin deneyimlerine dayanarak Levant Casino’nun güvenilir bir” “program olduğunu söyleyebiliriz.

Spor bahisleri güvenilirliği söz konusu olduğunda, bahis iptali ya da kupon iptali olmadığını söyleyebiliriz. Casinobonanza güvenilirliğinin sorgulanabilir olmasının spicilège nedenlerinden biri de bu canlı hattın sunduğu hizmetlere ilişkin merak ve iletişim açısından oldukça önemli olmasıdır. Bu canlı destek hattı, hizmetlerimiz lisanslı olduğundan 7/24 hizmetinizdedir.

Bonanza Slot Demonstration Oyna

Bu sayede bu” “site, online hizmet anlayışına dayalı olarak üyelere çeşitli eğlence ve kazanç fırsatları sunan bir sitedir. Bahis yapabilir, oyun oynayabilir, bonus alabilir, benefit kazanabilir ve added bonus çekebilirsiniz. Bu da bir online bahis sitesinde veya casinos sitesinde aradığınız tüm özellikleri Casinobonanza sitesinde bulabileceğiniz anlamına gelmektedir. Bu web sitesi ilgili araştırmalara empieza sitenin müşteri birimlerinden elde edilen bilgilere dayanarak Eyaleti tarafından onaylanmıştır. Bu ülkeden alınan lisanslar kapsamında hizmet sunumuna ilişkin bilgiler sayfanın alt kısmında yer almaktadır.

  • Oyun severler konum fark etmeksizin mobil cihazlarından da canlı casino bölümüne girerek yüzlerce farklı oyunu ve bahis seçeneğini deneyimleyebilirler.
  • Sonuç olarak, Pinco’nun yasal çerçevesi, adil oyun empieza veri güvenliğini içeren önlemlerle oyuncu koruması sağlar.
  • Ayrıca düşük yatırım limitleriyle her bahis meraklısının ya da oyun severin siteye yatırım yapabilmesini sağlar.
  • Çekim yatırım yöntemleri Bonus etkinlikleri ve güvenilirliğe dair pek çok bilgiye şeffaf şekilde Ekşi Sözlük üzerinden edinebilirsiniz.

Bu işlemlerin ardından kullanıcıya oyun seçenekleri sunulacak ve Casinobonanza Poker işlemi tamamlanmış olacaktır. Bu adımdan sonra, kullanıcılar gaté oyun seçeneklerine bahis yapabilir ve işlem yapabilir. Bu oyun altyapısı, kullanıcıların oyunla hiçbir şekilde etkileşime girmesine izin vermemektedir. Poker uygulamalarındaki oyun seçenekleriyle ilgili bir başka soru ag Casinobonanza Pokerde nasıl kazanılır. Bu soru için, kullanıcı uygulama içinde değişen sayıda tabloyu kontrol eder.

Casinobonanza’nın Avantajları Nelerdir?

Bahis tutkunları ücretsiz olarak siteye üyelik gerçekleştirdikten sonrasında sunulan tüm avantajlardan, bahis oranlarından ve istatistiklerden faydalanabilirler. Sosyal medya hesaplarını da bulmak isteyen Twitter empieza Instagram üzerinden para ulaşabilirsiniz. Eğlenerek kazanç sağlayabileceğiniz Casinobonanza sitesinin en yeni teknolojilere sahip grafikleri bahis seçenekleri ve kategorileri ile gönlünüzce bahis oynayabilirsiniz. Daha önce de belirtildiği gibi, web sitesi giriş adresi haftada birkaç kez yasaklanmıştır. Site yöneticileri saniyeler içinde yeni bir joe adı alır ve yeni bir adrese geçiş yapar. Casinobonanza giriş adresinizle siteye” “giriş yaparak teklif vermeye devam edebilirsiniz.

  • Bu temel şartı sağlayan her oyun sever sorunsuz şekilde birkaç dakika içerisinde kazancını hesabına transfer edebilir.
  • Ancak, her oyuncunun kendi deneyimlerine dayalı olarak karar vermesi önemlidir.
  • Platformun choix sayfasında bulunan canlı destek bölümünden müşteri temsilcilerine anında ulaşılabilir.
  • Ayrıca, Sweet Bonanza’yı oynarken nasıl başarılı olabileceğinize dair bazı ipuçları da paylaşacağız.
  • Oyuncular, platformun kolay kullanılabilir arayüzünü ve zengin oyun seçeneklerini takdir etmektedir.

Detaylı şekilde bilgi almak ve fikir edinmek isteyen oyun severler promosyon başlığı veya canlı destek hattı üzerinden gerekli incelemeleri yapabilirler. Sosyal medyayı oldukça aktif kullanan site oyun severlerin günlük yaşantılarında platforma girmeye vakit bulamasalar bile sosyal medya hesaplarından yararlanmalarını sağlar. Siz de platforma giriş yapmak için vakit bulamadığınızda sosyal medya hesapları üzerinden sitenin yeniliklerini takip edebilirsiniz. Twitter resmi hesabına ulaşmak talep eden oyun severler” “kumbarada ana sayfasında en altta yer joe Twitter logosunda kullanabilirler. Bu hesabın bildirimlerini aktif hale getirdiğinizde de yeniliklerden ilk haberler olan kullanıcılardan olursunuz. Ayrıcalıklı bahis hizmetine hızlı şekilde ulaşabileceğiniz Casinobonanza sitesi sosyal medyada ag fazla şekilde ulaşabileceğiniz bir bahis platformudur.

Bonanza Oyunu 2024

Oyuncular, hangi sembollerin ne kadar ödeme yaptığını ve hangi özelliklerin ne zaman tetiklendiğini bilmelidirler. Oyunun tadını çıkarırken bütçenizi kontrol altında tutmanız size uzun geri ödemede daha fazla kazanç sağlayabilir. Mobil uygulama ile oyunculara oyun keyfini istedikleri the girl yerde yaşama imkanı sunar. Mobil uygulama, kullanıcıların tablet ya da akıllı telefonları üzerinden kolayca erişebileceği bir platform sağlar.

  • Site içerisinde gerçekleştireceğiniz işlemlerle alakalı olarak mutlaka siteniz sizlere sunmuş olduğu kurallara uygun şekilde hareket etmelisiniz.
  • Para çekme işlemi konusunda sorun yaşamayacağınız Casinobonanza bahis sitesi çekim limitlerini anlaşılır ve esnek şekilde ana sayfası üzerinden paylaşır.
  • Tüm bahis platformları için geçerli olan bu giriş adresi güncellemesi ve erişim kısıtlaması kullanıcıların sitelere ulaşmasında sorun yaşatmaktadır.

Bu, Türkiye’deki kullanıcılar için özellikle rahatlatıcıdır; zira Pinco’nun operasyonları çevrimiçi olarak” “kesintisiz devam etmektedir. Bu bonuslar, belirli gün ve saatlerde yapılan para yatırma işlemlerinde verilir. Genellikle belirli bir tutarın üzerindeki yatırımlarda yatırım bonuslarından yararlanabilirsiniz. Yatırım bonusu, yatırdığınız tutarın bir yüzdesini size tilgift olarak sunar. Böylece daha fazla oyuna katılabilir ve kazanma şansınızı artırabilirsiniz.

Casinobonanza’nın Ödeme Yöntemleri Nelerdir?

Rahatlıkla istediğiniz zaman müşteri temsilcisine erişim sağlayabilirsiniz. 7/24″ “işlem yapma imkanı da verildiği için kullanıcılar rahatlıkla işlem yapabilirler. Özellikle anlık olarak en ufak bir problem yaşadığınızda haine sorunlarınızın giderilmesi müşteri hizmetleri tarafından sağlanır. Kullanıcıların siteyle alakalı olarak merak ettikleri herhangi bir şey olduğunda da rahatlıkla işlem gerçekleştirerek sorularına cevap alabilirler.

  • Hesap silme işlemi için oyun severlerin tercihlerini önemseyen platform herhangi bir zaman kaybı yaşatmaz.
  • Oyuncular, kendilerine en uygun ödeme seçeneğini seçerek kazançlarını yönetebilirler.
  • Bu platformda çeşitli casino oyunlarını oynayabilir, heyecan dolu vakit geçirebilirsiniz.
  • Oyunda tatlı meyveler, şekerlemeler ve diğer renkli semboller bulunur.
  • Oyun, çeşitli bahis seçenekleri sunar, böylece her oyuncu kendi bütçesine uygun bir bahis yapabilir.

Casino tutkunları ve casino tutkunları bu adres değişikliklerinden en ufak bir şekilde etkilenmeyecektir. Lisans çakışmaları nedeniyle, Casinobonanza online bahis empieza casino siteleri giriş adreslerini düzenli olarak güncellemektedir. Casinobonanza giriş Bu uzatılan süre boyunca, site kullanıcılarının verileri ve paraları Casinobonanza tarafından tamamen güvence altına alınmıştır. İnternette yasa dışı bahis yapan bahisçilerin bir lisansa ihtiyacı vardır. Casinobonanza, maçları kesintisiz olarak canlı yayınlayan, müşteri odaklı bir bahis sitesidir.

Casinobonanza

Kripto pay, Payfix, Mefete gibi daha birçok çekim yöntemiyle hizmet veren site lisanslıdır. Siteden çekebileceğiniz minimum kazanç tutarı 100 TL iken bazı çekim yöntemlerinde bu tutar” “yükselebilmektedir. Taleplerinizin doğru şekilde karşılık bulması için her yöntemin kendine özel kurallarını takip etmeniz gerekir. Yöntemlerin çekim limitleri kendi içerisinde değişkenlik gösterebilir.

Platformun canlı destek müşteri hizmetleri 7/24 ücretsiz şekilde ulaşılabilir durumdadır. Güvenliğiniz için hesap doğrulama işlemi yapmanız gerekir Bu işlem uzun sürmeyen bir kaç dakikanızı alacak ve bahis oyunlarında devam etmenizi sağlayacak bir işlemdir. Yeni nesil bahis platformunda yüksek oranlı bahislere tek tıkla güvenli giriş adresi üzerinden ulaşabilmenizi sağlar. Oyun severlerin memnuniyetini önemseyen sitede bahis ve canlı bahisler oranları empieza istatistikleri ile beraber sunulur. Platformu merak eden oyun severler sanal bahisler için canlı yayınlar üzerinden de karşılaşmaları takip edebilirler. Her dakika yeni bir müsabakanın heyecanına dâhil olabileceğiniz site anlık istatistikler, grafikler ve yorumlarla müsabakaları takip etmenizi sağlar.

Casinobonanza Güncel Adrese Nasıl Ulaşılır?

Casinobonanza giriş yapabilmesi empieza kesintisiz olarak bahis hizmeti alabilmesi için adresinde çeşitli zamanlarda değişiklikler yapmaktadır. Bu değişiklikler site yapısında ve kullanıcıların bilgilerinde herhangi bir değişikliğe sebep olmayan standart güncellemelerdir. Adres isminde yer alan rakamların sıralı şekilde değiştirilmesi ile yeni adresi oluşturarak hizmet vermeye devam etmektedir. Oyun severler üye olmak bahis oynamak empieza sitenin avantajlarından faydalanabilmek için mutlaka Casinobonanza güncel giriş adresine kullanmalıdır. Casinobonanza bahis platformu kullanıcılarının güvenliğini ön planda tutan ve sorunsuz hizmet almasını amaçlayan bir bahis kuruluşudur.

  • Bu, oyuncular için çok uygundur, çünkü sorun olması durumunda veya daha fazla bilgiye ihtiyaç duymaları halinde her zaman bahisçiyle iletişime geçebilirler.
  • Casinobonanza, üyelerin finansal işlemlerini hızlı ve güvenli bir şekilde yapmalarını sağlar.
  • Oyun meraklıları, para çekme ve para yatırma sistemi hakkında olumlu geri bildirimler verdi.
  • Daha uzun veya acil olmayan sorular daha derinlemesine destek gerektirir empieza daha uzun yanıt süresi olan bir e-posta adresi kullanmalıdır.

Yorumlarınıza önem veren ve bu yorumlar doğrultusunda kendini sürekli geliştiren Casinobonanza bahis sitesi yeni nesil bir bahis platformu olarak görüşlerinizi değerlendirir. Çok seçenekli bahis hizmeti sunan Casinobonanza platformu yüksek bahis oranlarıyla hizmet verir. Spor kategorisine anlık olarak bahis yapabileceğiniz ve karşılaşmaları takip edeceğiniz platform yayın linklerini de paylaşır. Akıllı cihazlarınızdan ve masaüstü cihazlarınızdan spor karşılaşmalarına canlı olarak bahis oynayabilirsiniz. Cepten para müsabaka heyecanını yaşayabileceğiniz site oldukça fazla seçeneğe sahiptir. Sınırsız eğlence ve kazanç avantajıyla dolu Casinobonanza dünyasında hiçbir yerde bulamayacağınız yüksek oranlar sunulur.

Casinobonanza Bonusları

Hizmet, Casinobonanza ödeme kategorisini kullanarak hem spor hem para casinoda kısa bahisler için Türkçe seçeneği sunar. Bu, 20 yaşından büyük herkesin, gerçek bilgiler sağladığı sürece Casinobonanza kayıt işlemini geri dönmeden tamamlayabilmesini sağlar. Üye olmak için “Casinobonanza Kayıt” butonuna tıklayan müşterilerimizden kullanıcı adı, isim ve etkileşim bilgilerini ilgili alanlara girmeleri istenecektir. Yeni sitedeki tüm spor kategorileri, canlı oyunlar ve sanal bahis içeriklerine yeni giriş sayfasındaki “Kayıt Ol” butonuna tıklayarak kayıt olabilirsiniz.

Akıllı cihazlarınıza özel olarak tasarlanmış mobil uygulama sayesinde Casinobonanza platformuna hızlı şekilde ulaşabilirsiniz. Mobil uygulama BTK erişim kısıtlamalarına ve siber saldırılara karşı sürekli olarak güncel” “durumdadır. Oyun severler adres değişikliklerinden etkilenmeden mobil uygulama kullanarak kesintisiz şekilde bahis oynayabilirler. Kullanıcılar kendi tercihlerine göre sanal mağaza ya da spicilège sayfa üzerinden mobil uygulamayı indirebilecekleri gibi tarayıcı üzerinden sobre platforma giriş yapabilirler. Siteye giriş yaparken ek bir adrese İhtiyaç duymayacağınız ve vakit kaybetmeyeceğiniz mobil uygulama sayesinde hızlı şekilde ulaşabilirsiniz. Ücretsiz olarak edinebileceğiniz mobil uygulama tek bir tıkla platforma anlık şekilde ulaşabilmemizi sağlar.

Sweet Bonanza Oyna

Oyun severlerin memnuniyetini önemseyen internet site canlı destek hattı üzerinden alınan bildirimleri de platformun iyileştirme ve güncelleme çalışmalarında kullanmaktır. Sizden sonra görüş ve önerilerinizden canlı destek hattı üzerinden istediğiniz sanat ve istediğiniz gün rahatlıkla ulaştırabilirsiniz. Güvenli şekilde Bilgilerinizi paylaşmadan para çekme işlemi gerçekleştirebileceğiniz Casinobonanza bahis sitesi 7/24 hizmet verir. Çekim işlemi için platformda sunulan Payfix, Paycell, Kripto pay, Mefete, Minipay, Heetpay gibi daha birçok yöntemi kullanabilirsiniz. Ayrıca diğer platformlardan en önemli farkı sitede gün içerisinde birden fazla kez çekim işlemi yapılabilmesidir. Kazançlarınızı banka hesabınıza transfer etmeniz vakit almaz platformda çok fazla yoğunluk olmadığı müddetçe 1-15 dakika içerisinde çekim işleminiz tamamlanır.

  • Mağduriyet yaşamamanız adına tüm bilgileriniz yeni adreste de olduğu gibi sunularak bu şekilde işlemlerinizin devamı sağlanmaktadır.
  • Lisans bilgileri sobre site üzerinde yer alan ‘Lisans’ bölümünde açıkça belirtilmektedir.
  • Bu nedenle, üyelerimizin güvenliğini tehlikeye atabilecek şüpheli durumlarla Casinobonanza güncel durumunda sitemiz üzerinden finansal işlemlere izin vermediğimizi beyan ederiz.
  • Poker Seçeneğini kullanmak suretiyle bahis yapabilmek için kullanıcının öncelikle hesabına para yatırması gerekir.
  • Casinobonanza hesap doğrulama için kayıt esnasında belirtmiş olduğunuz iletişim kanalını kullanabilirsiniz.

Casino, slot machine game ve spor kategorisi için yapacağınız the girl yatırımdan çeşitli ödüller kazanabilirsiniz. Para yatırma işleminde kullanabileceğiniz güvenli yöntemlerin birkaçı Kriptopay 20 TL, Minipay 20 TL, Mefete 5 TL, Paycell 20 TL, Payfix 25 TL, Heetpay 50 TL olarak sıralanabilir. Ondan fazla güvenli ödeme kanalı ile hizmet veren site her geçen gün kendini geliştirerek yatırım işlemleriniz için kolaylık sağlamaktadır. Bu yöntemlerin her birine yapacağınız yatırım tutarları ana sayfada sobre alt bölümde altbier limitleri ile beraber de paylaşılır. Bazı yöntemlerde 5 TL ile başlayan minimum yatırım tutarı kimi yöntemde 50 TL’ye kadar değişebilmektedir.

Levant Online Casino Oyun Seçenekleri

Gün içerisinde kazançlarınızı ister parça parça ister tek seferde çekebileceğiniz platform hızlı ve güvenilirdir. Casinobonanza bahis platformu bahis oyunlarına meraklı olan fakat henüz deneyimi olmayan oyun severlerin siteyi kullanımı için kolay yöntemler sunar. Platformdan alınan bahis hizmetinin kaliteli blooming gelmesi için bahis kuralları, müşteri hizmetleri ve demo videolar bulunur.

  • Otomatik mod, oyuncuların belirli bir sayıda ardışık spinin otomatik olarak oynatılmasını seçmelerine olanak tanır.
  • Bu durumda üye adına sistemde tanımlanan çeşitli bilgi ve dosyalar sistemden silinerek silinecektir.
  • Ayrıca, yaygın sorulara hızlı çözümler sunan kapsamlı bir SSS bölümü de mevcuttur.

Keyifli ve kazançlı sanal bahis hizmeti sunan Casinobonanza platformu son zamanlarda oldukça göz önündedir. Kullanıcıların platformu tercih etmesindeki en büyük sebeplerden biri güvenli yatırım, çekim seçenekleridir. Casinobonanza nasıl bir site merak eden oyun severler için güncel adresi üzerinden casino, slot ve spor kategorisine sunduğu bahis oranları empieza avantajlarını paylaşır. Oyun severler menüde yer alan ilgili başlıklar üzerinden platformu inceleyebilirler.

]]>