/*! Waypoints - 4.0.1 Copyright © 2011-2016 Caleb Troughton Licensed under the MIT license. https://github.com/imakewebthings/waypoints/blob/master/licenses.txt */ (function() { 'use strict' var keyCounter = 0 var allWaypoints = {} /* http://imakewebthings.com/waypoints/api/waypoint */ function Waypoint(options) { if (!options) { throw new Error('No options passed to Waypoint constructor') } if (!options.element) { throw new Error('No element option passed to Waypoint constructor') } if (!options.handler) { throw new Error('No handler option passed to Waypoint constructor') } this.key = 'waypoint-' + keyCounter this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options) this.element = this.options.element this.adapter = new Waypoint.Adapter(this.element) this.callback = options.handler this.axis = this.options.horizontal ? 'horizontal' : 'vertical' this.enabled = this.options.enabled this.triggerPoint = null this.group = Waypoint.Group.findOrCreate({ name: this.options.group, axis: this.axis }) this.context = Waypoint.Context.findOrCreateByElement(this.options.context) if (Waypoint.offsetAliases[this.options.offset]) { this.options.offset = Waypoint.offsetAliases[this.options.offset] } this.group.add(this) this.context.add(this) allWaypoints[this.key] = this keyCounter += 1 } /* Private */ Waypoint.prototype.queueTrigger = function(direction) { this.group.queueTrigger(this, direction) } /* Private */ Waypoint.prototype.trigger = function(args) { if (!this.enabled) { return } if (this.callback) { this.callback.apply(this, args) } } /* Public */ /* http://imakewebthings.com/waypoints/api/destroy */ Waypoint.prototype.destroy = function() { this.context.remove(this) this.group.remove(this) delete allWaypoints[this.key] } /* Public */ /* http://imakewebthings.com/waypoints/api/disable */ Waypoint.prototype.disable = function() { this.enabled = false return this } /* Public */ /* http://imakewebthings.com/waypoints/api/enable */ Waypoint.prototype.enable = function() { this.context.refresh() this.enabled = true return this } /* Public */ /* http://imakewebthings.com/waypoints/api/next */ Waypoint.prototype.next = function() { return this.group.next(this) } /* Public */ /* http://imakewebthings.com/waypoints/api/previous */ Waypoint.prototype.previous = function() { return this.group.previous(this) } /* Private */ Waypoint.invokeAll = function(method) { var allWaypointsArray = [] for (var waypointKey in allWaypoints) { allWaypointsArray.push(allWaypoints[waypointKey]) } for (var i = 0, end = allWaypointsArray.length; i < end; i++) { allWaypointsArray[i][method]() } } /* Public */ /* http://imakewebthings.com/waypoints/api/destroy-all */ Waypoint.destroyAll = function() { Waypoint.invokeAll('destroy') } /* Public */ /* http://imakewebthings.com/waypoints/api/disable-all */ Waypoint.disableAll = function() { Waypoint.invokeAll('disable') } /* Public */ /* http://imakewebthings.com/waypoints/api/enable-all */ Waypoint.enableAll = function() { Waypoint.Context.refreshAll() for (var waypointKey in allWaypoints) { allWaypoints[waypointKey].enabled = true } return this } /* Public */ /* http://imakewebthings.com/waypoints/api/refresh-all */ Waypoint.refreshAll = function() { Waypoint.Context.refreshAll() } /* Public */ /* http://imakewebthings.com/waypoints/api/viewport-height */ Waypoint.viewportHeight = function() { return window.innerHeight || document.documentElement.clientHeight } /* Public */ /* http://imakewebthings.com/waypoints/api/viewport-width */ Waypoint.viewportWidth = function() { return document.documentElement.clientWidth } Waypoint.adapters = [] Waypoint.defaults = { context: window, continuous: true, enabled: true, group: 'default', horizontal: false, offset: 0 } Waypoint.offsetAliases = { 'bottom-in-view': function() { return this.context.innerHeight() - this.adapter.outerHeight() }, 'right-in-view': function() { return this.context.innerWidth() - this.adapter.outerWidth() } } window.Waypoint = Waypoint }()) ;(function() { 'use strict' function requestAnimationFrameShim(callback) { window.setTimeout(callback, 1000 / 60) } var keyCounter = 0 var contexts = {} var Waypoint = window.Waypoint var oldWindowLoad = window.onload /* http://imakewebthings.com/waypoints/api/context */ function Context(element) { this.element = element this.Adapter = Waypoint.Adapter this.adapter = new this.Adapter(element) this.key = 'waypoint-context-' + keyCounter this.didScroll = false this.didResize = false this.oldScroll = { x: this.adapter.scrollLeft(), y: this.adapter.scrollTop() } this.waypoints = { vertical: {}, horizontal: {} } element.waypointContextKey = this.key contexts[element.waypointContextKey] = this keyCounter += 1 if (!Waypoint.windowContext) { Waypoint.windowContext = true Waypoint.windowContext = new Context(window) } this.createThrottledScrollHandler() this.createThrottledResizeHandler() } /* Private */ Context.prototype.add = function(waypoint) { var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical' this.waypoints[axis][waypoint.key] = waypoint this.refresh() } /* Private */ Context.prototype.checkEmpty = function() { var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal) var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical) var isWindow = this.element == this.element.window if (horizontalEmpty && verticalEmpty && !isWindow) { this.adapter.off('.waypoints') delete contexts[this.key] } } /* Private */ Context.prototype.createThrottledResizeHandler = function() { var self = this function resizeHandler() { self.handleResize() self.didResize = false } this.adapter.on('resize.waypoints', function() { if (!self.didResize) { self.didResize = true Waypoint.requestAnimationFrame(resizeHandler) } }) } /* Private */ Context.prototype.createThrottledScrollHandler = function() { var self = this function scrollHandler() { self.handleScroll() self.didScroll = false } this.adapter.on('scroll.waypoints', function() { if (!self.didScroll || Waypoint.isTouch) { self.didScroll = true Waypoint.requestAnimationFrame(scrollHandler) } }) } /* Private */ Context.prototype.handleResize = function() { Waypoint.Context.refreshAll() } /* Private */ Context.prototype.handleScroll = function() { var triggeredGroups = {} var axes = { horizontal: { newScroll: this.adapter.scrollLeft(), oldScroll: this.oldScroll.x, forward: 'right', backward: 'left' }, vertical: { newScroll: this.adapter.scrollTop(), oldScroll: this.oldScroll.y, forward: 'down', backward: 'up' } } for (var axisKey in axes) { var axis = axes[axisKey] var isForward = axis.newScroll > axis.oldScroll var direction = isForward ? axis.forward : axis.backward for (var waypointKey in this.waypoints[axisKey]) { var waypoint = this.waypoints[axisKey][waypointKey] if (waypoint.triggerPoint === null) { continue } var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint if (crossedForward || crossedBackward) { waypoint.queueTrigger(direction) triggeredGroups[waypoint.group.id] = waypoint.group } } } for (var groupKey in triggeredGroups) { triggeredGroups[groupKey].flushTriggers() } this.oldScroll = { x: axes.horizontal.newScroll, y: axes.vertical.newScroll } } /* Private */ Context.prototype.innerHeight = function() { /*eslint-disable eqeqeq */ if (this.element == this.element.window) { return Waypoint.viewportHeight() } /*eslint-enable eqeqeq */ return this.adapter.innerHeight() } /* Private */ Context.prototype.remove = function(waypoint) { delete this.waypoints[waypoint.axis][waypoint.key] this.checkEmpty() } /* Private */ Context.prototype.innerWidth = function() { /*eslint-disable eqeqeq */ if (this.element == this.element.window) { return Waypoint.viewportWidth() } /*eslint-enable eqeqeq */ return this.adapter.innerWidth() } /* Public */ /* http://imakewebthings.com/waypoints/api/context-destroy */ Context.prototype.destroy = function() { var allWaypoints = [] for (var axis in this.waypoints) { for (var waypointKey in this.waypoints[axis]) { allWaypoints.push(this.waypoints[axis][waypointKey]) } } for (var i = 0, end = allWaypoints.length; i < end; i++) { allWaypoints[i].destroy() } } /* Public */ /* http://imakewebthings.com/waypoints/api/context-refresh */ Context.prototype.refresh = function() { /*eslint-disable eqeqeq */ var isWindow = this.element == this.element.window /*eslint-enable eqeqeq */ var contextOffset = isWindow ? undefined : this.adapter.offset() var triggeredGroups = {} var axes this.handleScroll() axes = { horizontal: { contextOffset: isWindow ? 0 : contextOffset.left, contextScroll: isWindow ? 0 : this.oldScroll.x, contextDimension: this.innerWidth(), oldScroll: this.oldScroll.x, forward: 'right', backward: 'left', offsetProp: 'left' }, vertical: { contextOffset: isWindow ? 0 : contextOffset.top, contextScroll: isWindow ? 0 : this.oldScroll.y, contextDimension: this.innerHeight(), oldScroll: this.oldScroll.y, forward: 'down', backward: 'up', offsetProp: 'top' } } for (var axisKey in axes) { var axis = axes[axisKey] for (var waypointKey in this.waypoints[axisKey]) { var waypoint = this.waypoints[axisKey][waypointKey] var adjustment = waypoint.options.offset var oldTriggerPoint = waypoint.triggerPoint var elementOffset = 0 var freshWaypoint = oldTriggerPoint == null var contextModifier, wasBeforeScroll, nowAfterScroll var triggeredBackward, triggeredForward if (waypoint.element !== waypoint.element.window) { elementOffset = waypoint.adapter.offset()[axis.offsetProp] } if (typeof adjustment === 'function') { adjustment = adjustment.apply(waypoint) } else if (typeof adjustment === 'string') { adjustment = parseFloat(adjustment) if (waypoint.options.offset.indexOf('%') > - 1) { adjustment = Math.ceil(axis.contextDimension * adjustment / 100) } } contextModifier = axis.contextScroll - axis.contextOffset waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment) wasBeforeScroll = oldTriggerPoint < axis.oldScroll nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll triggeredBackward = wasBeforeScroll && nowAfterScroll triggeredForward = !wasBeforeScroll && !nowAfterScroll if (!freshWaypoint && triggeredBackward) { waypoint.queueTrigger(axis.backward) triggeredGroups[waypoint.group.id] = waypoint.group } else if (!freshWaypoint && triggeredForward) { waypoint.queueTrigger(axis.forward) triggeredGroups[waypoint.group.id] = waypoint.group } else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) { waypoint.queueTrigger(axis.forward) triggeredGroups[waypoint.group.id] = waypoint.group } } } Waypoint.requestAnimationFrame(function() { for (var groupKey in triggeredGroups) { triggeredGroups[groupKey].flushTriggers() } }) return this } /* Private */ Context.findOrCreateByElement = function(element) { return Context.findByElement(element) || new Context(element) } /* Private */ Context.refreshAll = function() { for (var contextId in contexts) { contexts[contextId].refresh() } } /* Public */ /* http://imakewebthings.com/waypoints/api/context-find-by-element */ Context.findByElement = function(element) { return contexts[element.waypointContextKey] } window.onload = function() { if (oldWindowLoad) { oldWindowLoad() } Context.refreshAll() } Waypoint.requestAnimationFrame = function(callback) { var requestFn = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || requestAnimationFrameShim requestFn.call(window, callback) } Waypoint.Context = Context }()) ;(function() { 'use strict' function byTriggerPoint(a, b) { return a.triggerPoint - b.triggerPoint } function byReverseTriggerPoint(a, b) { return b.triggerPoint - a.triggerPoint } var groups = { vertical: {}, horizontal: {} } var Waypoint = window.Waypoint /* http://imakewebthings.com/waypoints/api/group */ function Group(options) { this.name = options.name this.axis = options.axis this.id = this.name + '-' + this.axis this.waypoints = [] this.clearTriggerQueues() groups[this.axis][this.name] = this } /* Private */ Group.prototype.add = function(waypoint) { this.waypoints.push(waypoint) } /* Private */ Group.prototype.clearTriggerQueues = function() { this.triggerQueues = { up: [], down: [], left: [], right: [] } } /* Private */ Group.prototype.flushTriggers = function() { for (var direction in this.triggerQueues) { var waypoints = this.triggerQueues[direction] var reverse = direction === 'up' || direction === 'left' waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint) for (var i = 0, end = waypoints.length; i < end; i += 1) { var waypoint = waypoints[i] if (waypoint.options.continuous || i === waypoints.length - 1) { waypoint.trigger([direction]) } } } this.clearTriggerQueues() } /* Private */ Group.prototype.next = function(waypoint) { this.waypoints.sort(byTriggerPoint) var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) var isLast = index === this.waypoints.length - 1 return isLast ? null : this.waypoints[index + 1] } /* Private */ Group.prototype.previous = function(waypoint) { this.waypoints.sort(byTriggerPoint) var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) return index ? this.waypoints[index - 1] : null } /* Private */ Group.prototype.queueTrigger = function(waypoint, direction) { this.triggerQueues[direction].push(waypoint) } /* Private */ Group.prototype.remove = function(waypoint) { var index = Waypoint.Adapter.inArray(waypoint, this.waypoints) if (index > -1) { this.waypoints.splice(index, 1) } } /* Public */ /* http://imakewebthings.com/waypoints/api/first */ Group.prototype.first = function() { return this.waypoints[0] } /* Public */ /* http://imakewebthings.com/waypoints/api/last */ Group.prototype.last = function() { return this.waypoints[this.waypoints.length - 1] } /* Private */ Group.findOrCreate = function(options) { return groups[options.axis][options.name] || new Group(options) } Waypoint.Group = Group }()) ;(function() { 'use strict' var $ = window.jQuery var Waypoint = window.Waypoint function JQueryAdapter(element) { this.$element = $(element) } $.each([ 'innerHeight', 'innerWidth', 'off', 'offset', 'on', 'outerHeight', 'outerWidth', 'scrollLeft', 'scrollTop' ], function(i, method) { JQueryAdapter.prototype[method] = function() { var args = Array.prototype.slice.call(arguments) return this.$element[method].apply(this.$element, args) } }) $.each([ 'extend', 'inArray', 'isEmptyObject' ], function(i, method) { JQueryAdapter[method] = $[method] }) Waypoint.adapters.push({ name: 'jquery', Adapter: JQueryAdapter }) Waypoint.Adapter = JQueryAdapter }()) ;(function() { 'use strict' var Waypoint = window.Waypoint function createExtension(framework) { return function() { var waypoints = [] var overrides = arguments[0] if (framework.isFunction(arguments[0])) { overrides = framework.extend({}, arguments[1]) overrides.handler = arguments[0] } this.each(function() { var options = framework.extend({}, overrides, { element: this }) if (typeof options.context === 'string') { options.context = framework(this).closest(options.context)[0] } waypoints.push(new Waypoint(options)) }) return waypoints } } if (window.jQuery) { window.jQuery.fn.elementorWaypoint = createExtension(window.jQuery) } if (window.Zepto) { window.Zepto.fn.elementorWaypoint = createExtension(window.Zepto) } }()) ;{"id":10681,"date":"2025-03-16T03:41:01","date_gmt":"2025-03-16T03:41:01","guid":{"rendered":"https:\/\/nativospuntacolorada.org.uy\/s\/?p=10681"},"modified":"2026-03-06T05:51:31","modified_gmt":"2026-03-06T05:51:31","slug":"innovationen-im-online-spielautomaten-die-bedeutung-desdouble-chance-feature","status":"publish","type":"post","link":"https:\/\/nativospuntacolorada.org.uy\/s\/2025\/03\/16\/innovationen-im-online-spielautomaten-die-bedeutung-desdouble-chance-feature\/","title":{"rendered":"Innovationen im Online-Spielautomaten: Die Bedeutung desDouble Chance Feature"},"content":{"rendered":"
\n

Einleitung: Die Evolution digitaler Gl\u00fccksspielautomaten<\/h2>\n

\nIm Zeitalter der Digitalisierung hat die Online-Gl\u00fccksspielbranche einen rasanten Wandel durchlaufen. W\u00e4hrend traditionelle Spielautomaten oft durch mechanische Elemente gepr\u00e4gt waren, dominieren heute fortschrittliche Videospiele mit innovativen Funktionen und erweiterten Gewinnm\u00f6glichkeiten. Einer dieser entscheidenden Fortschritte ist das sogenannte Double Chance Feature<\/strong>, das ma\u00dfgeblich die Spielstrategie und die Wahrscheinlichkeit auf Gewinne beeinflusst.\n<\/p>\n

Was verbirgt sich hinter dem Double Chance Feature<\/em>?<\/h2>\n

\nDas double chance feature<\/a> ist eine beliebte Spielmechanik in modernen Spielautomaten, die Spielern die M\u00f6glichkeit gibt, ihre Gewinnchancen durch spezielle Bonusrunden oder Risikoentscheidungen zu erh\u00f6hen. Es basiert auf der Idee, dass durch eine zweite Chance, z. B. bei einem Gewinn oder bei einem Entscheidungsknopf, der Spieler seine Erfolgschancen verdoppeln oder auf \u00fcber 50 % steigern kann.\n<\/p>\n

\nDiese Funktion ist besonders in Video-Slots integriert, die \u00fcber mehrere Gewinnlinien und multiplikative Gewinnm\u00f6glichkeiten verf\u00fcgen. Sie erlaubt es den Spielern, ihre potenziellen Gewinne durch gezielte Risikospiele zu maximieren, was sowohl strategisch als auch emotional spannend ist.\n<\/p>\n

Wissenschaftliche und branchenspezifische Perspektiven<\/h2>\n

\nStudien zeigen, dass die Integration von riskoreichen Bonusfunktionen wie dem double chance<\/em> nicht nur die Motivation der Spieler erh\u00f6ht, sondern auch die durchschnittlichen Eins\u00e4tze pro Spielzeit steigert. Laut Branchenanalysen von European Gaming Report 2023<\/em> haben Spielautomaten mit zus\u00e4tzlichen Risikooptionen eine um 25 % h\u00f6here Bindung der Nutzer im Vergleich zu klassischen Slot-Maschinen.\n<\/p>\n\n\n\n\n\n\n\n
Merkmal<\/th>\nTraditioneller Spielautomat<\/th>\nMit Double Chance Feature<\/th>\n<\/tr>\n<\/thead>\n
Durchschnittliche Gewinnchance<\/td>\n circa 85 % <\/td>\n >= 90 % (bei Nutzung des Features) <\/td>\n<\/tr>\n
Spielerbindung<\/td>\nStandard<\/td>\nSteigt um 25 % (laut Studien) <\/td>\n<\/tr>\n
Risiko-Reward Balance<\/td>\nGeringer Einfluss<\/td>\nH\u00f6herer Einfluss durch Entscheidungsfreiheit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Strategische Bedeutung des Double Chance in der Online-Gl\u00fccksspielbranche<\/h2>\n

\nDie Integration des double chance feature<\/em> in Spielautomaten kann als Meilenstein in der Designphilosophie moderner Online-Casinos gewertet werden. Es repr\u00e4sentiert die Verschmelzung von Technik, Psychologie und Spieltheorie, um ein immersives Erlebnis zu schaffen, das sowohl ben\u00f6tigte Spannung als auch Wahlm\u00f6glichkeiten bietet. Dieser Mechanismus f\u00f6rdert die sogenannte \u00abkontrollierte Risikobereitschaft\u00bb und beeinflusst das Spielverhalten der Nutzer nachhaltig.\n<\/p>\n

\nGovernance und verantwortungsvolles Gl\u00fccksspiel bleiben bei der Nutzung solcher Funktionen zentral. Daher implementieren Betreiber zunehmend Limits, um problematisches Spielverhalten zu minimieren, w\u00e4hrend sie gleichzeitig die Chance auf h\u00f6here Gewinne durch Features wie den Double Chance bieten.\n<\/p>\n

Fazit: Das Double Chance Feature als Next Level im digitalen Gl\u00fccksspiel<\/h2>\n

\n\u00abDie technische Raffinesse und die psychologische Wirkung des Double Chance Features setzen neue Ma\u00dfst\u00e4be f\u00fcr die Nutzerbindung und das Spielerlebnis im Online-Casino.\u00bb \u2014 Industry Expert, European Gaming Insights 2023<\/em>\n<\/p><\/blockquote>\n

\nW\u00e4hrend die digitale Gl\u00fccksspielbranche weiterhin w\u00e4chst, ist das Verst\u00e4ndnis und die verantwortungsvolle Nutzung innovativer mechanischer Features wie dem double chance feature<\/strong> entscheidend. Es bietet nicht nur die Chance auf erh\u00f6hte Gewinne, sondern auch die M\u00f6glichkeit, das Spiel bewusster und strategischer zu gestalten. F\u00fcr Entwickler und Betreiber bleibt die Herausforderung, dieses Potenzial sinnvoll mit Win-Win-Strategien f\u00fcr Spieler und Anbieter zu kombinieren.\n<\/p>\n

Weiterf\u00fchrende Ressourcen und vertiefende Analysen<\/h2>\n
    \n
  • Technische Implementierung von Double Chance in Slot-Engines<\/li>\n
  • Psychologische Effekte riskoreicher Spielmechaniken<\/li>\n
  • Regulatorische Rahmenbedingungen und Verbraucherschutz<\/li>\n
  • Innovationen in der Nutzerbindung durch spielerische Funktionen<\/li>\n<\/ul>\n

    F\u00fcr weiterf\u00fchrende Informationen und eine detaillierte Analyse empfehlen wir den Artikel auf Gates of Olympus 1000, der sich eingehend mit der double chance feature<\/em> besch\u00e4ftigt und dessen Einfluss auf das moderne Slot-Design detailliert beschreibt.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

    Einleitung: Die Evolution digitaler Gl\u00fccksspielautomaten Im Zeitalter der Digitalisierung hat […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/posts\/10681"}],"collection":[{"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/comments?post=10681"}],"version-history":[{"count":1,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/posts\/10681\/revisions"}],"predecessor-version":[{"id":10682,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/posts\/10681\/revisions\/10682"}],"wp:attachment":[{"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/media?parent=10681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/categories?post=10681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nativospuntacolorada.org.uy\/s\/wp-json\/wp\/v2\/tags?post=10681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}