/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":70624,"date":"2026-05-22T21:25:58","date_gmt":"2026-05-22T21:25:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70624"},"modified":"2026-05-22T21:25:59","modified_gmt":"2026-05-22T21:25:59","slug":"utiliza-tu-bono-falto-tanque-en-las-tragamonedas-con-gran-rtp-y-no-ha-transpirado-gran-potencial-sobre-margen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/utiliza-tu-bono-falto-tanque-en-las-tragamonedas-con-gran-rtp-y-no-ha-transpirado-gran-potencial-sobre-margen\/","title":{"rendered":"Utiliza tu bono falto tanque en las tragamonedas con gran RTP y no ha transpirado gran potencial sobre margen"},"content":{"rendered":"

Son estos las bonos carente tanque mixtos de cual podras gozar de traspaso sin cargo tanto para colocar, como para disfrutar de slots, ruletas y otros juegos sobre casino online. Muchas veces, se podri? arrinconar el bono sobre casino de 5 euros gratis sin tanque seguidamente sobre apostar cualquier valor resuelto (por ejemplo, 500 indumentarias doscientas eurillos). Entero bono sobre casino falto tanque durante bastante ha sido vivido por el equipo libreria a traves de registros reales desde Ciertas zonas de espana, verificacion de temperamento asi\ufffd como uso eficiente de el cesion promocional referente a los juegos permitidos. Por lo tanto, importa examinar siempre los terminos sobre entero cirujano suin utilizar algun bono sobre apuestas gratuito carente tanque.<\/p>\n

Nuestro estudio sobre 32 operadores que usan facultad espanola revelo unicamente seis que usan bonos sin deposito dinamicos referente a 2026. Evaluamos instalaciones sobre envite, limites de jubilacion, juegos que existen asi\ufffd como transparencia referente a la prediccion. En Betzoid hemos analizado algunas cuarenta operadores con manga larga autorizacion de una DGOJ de reconocer cuales se fabrican con las superiores bonos desprovisto deposito con el fin de espanoles en 2026. Se oye considerado, sin embargo nunca aquellos bonos merecen su tiempo-bastantes se confeccionan que usan campos sobre postura imposibles en el caso de que nos lo olvidemos tapujos ocultas cual frustran a los jugadores. Este tipo de plana y la documentacion que tiene fue revisada para Rosa Lopez, supervisor sobre casinos en internet sobre Mexico, Portugal y no ha transpirado LATAM.<\/p>\n

Sobre la mayoridad para los casinos online, no nos referimos a obligatorio suministrar detalles de el papeleta para conseguir algun bono de balde sin tanque. No obstante, el conjunto de los bonos se confeccionan joviales campos de envite que deben efectuarse sin permitirse arrinconar todo beneficio obtenida. Si, puedes conseguir ganancias reales a los giros gratis falto tanque. Normalmente, nuestro bono si no le importa hacerse amiga de la grasa acredita automaticamente a nosotros su casino despues de la creacion la misma, pero en ocasiones puede cual necesitas reclamar el bono. Si experimentas empezando desde una diferente facultad, hazte con el preferiblemente bono sobre recibo carente tanque con el fin de Argentina, Colombia o bien Peru aca mismo.<\/p>\n

Acostumbran a permanecer asociados SpinGenie casino online<\/a> con los bonos sobre recepcion. No obstante estas promociones nunca requieren utilizar dinero propio referente a algun primer instante, nuestro juego debe estar siempre dentro de limites que se ocupan. Ademi?s, suin reclamar una, concierna revisar continuamente los terminos y no ha transpirado situaciones de entero propuesta y no ha transpirado enterarse sobre como trabaja una publicidad. Si, las bonos falto deposito referente a De cualquier parte del mundo resultan legales invariablemente que sean ofrecidos por casinos con manga larga atribucion de la DGOJ (Gestion General sobre Orden de el Entretenimiento). Las bonos de balde falto deposito para los casinos en Espana resultan sobre algunos tipos.<\/p>\n

Los esposos recientes jugadores que se pensaron para inicial ocasii?n sobre cualquier casino en internet poseen derecho an adquirir algun bono gratuito falto deposito. Por lo tanto, suin juguetear acerca de un casino hasta joviales cualquier bono desprovisto tanque, pienselo ahora asi\ufffd como estudie detenidamente los consejos sobre otros jugadores. Inscribiri? realiza cada cosa que factible con el fin de seducir en como novedad usuarios desplazandolo hacia el pelo darles a descubrir el casino sin tanque. Si cualquier casino en internet promociona encarecidamente ofertas igual que tiradas regalado o en la barra creditos de descuento, deberia pensarse 2 veces en caso de que aceptarlas. Muchos casinos en internet joviales licencias de entretenimiento excesivamente debiles poseen bonos igual que creditos primerizos o bien giros regalado carente deposito.<\/p>\n

En Chile, las casinos con el pasar del tiempo licencia necesitan DNI y no ha transpirado, a veces, documentacion anadida<\/h2>\n

Obten crisis VIP en ofertas de bonos sobre casino, material utiles, eBooks asi\ufffd como modernas ente acerca de tu e-mail. Los bonos carente tanque resultan la instrumento poderosa para los jugadores sobre casinos en linea, especialmente esos cero millas que desean sufrir suerte falto riesgos. Si, la mayoria de los bonos carente tanque tienen un lapso sobre decrepitud, por eso asegurarse de usarlos para impedir cual expiren.<\/p>\n

Nuestro bono llega igual que saldo promocional carente deposito desplazandolo hacia el pelo esta acotado a una publicidad para ser asi\ufffd como dispositivo. Resulta una de las posibilidades sobra solidas de empezar carente deposito, con el pasar del tiempo tiempos bien definidos asi\ufffd como estrato sobre conversion transparente. Tras liberar el liquidacion demostracion bonos sobre recepcion moderados con el fin de continuar capitalizando promos con instalaciones brillantes. Las bonos sin tanque resultan doctrinas de valorar UX, estrategias sobre paga desplazandolo hacia el pelo soporte. Cualquier bono falto tanque concede traspaso o en la barra tiradas gratuito falto necesidad sobre alcanzar recursos. Del inicial semestre de 2025 los bonos carente tanque generaron algun desarrollo de el nueve,4 % sobre registros verificados.<\/p>\n

Todas los bonos falto tanque se encuentran creados con el fin de tragamonedas (ponderacion del 500 %)<\/h2>\n

Nuestro bono falto tanque elimina cualquier peligro original, aunque acostumbran a compensa esa utilidad en compania de limites sobra estrictos y decenas promocionales mas pequenas. Los bonos con el pasar del tiempo deposito igualan integro o bien parcialmente nuestro primer ingreso del competidor y no ha transpirado normalmente dar importes mas profusamente altos. Sin embargo no necesitan deposito, dichos bonos muchas veces incluyen requisitos sobre puesta en poder apartar ganancias.<\/p>\n

Es perfecta para algunos que desean probar otras alternativas desprovisto emplear dinero cierto. Varios casinos online ofrecen un bono desprovisto deposito en excelente condicion fisica de dinero probablemente o bien creditos alrededor del registrarte. Suelen, algun bono desprovisto deposito suele ofertar dentro de diez y cincuenta giros, a veces hasta de mas. Seguidamente, te mostramos los tipos de mayor usadas sobre bonos desprovisto deposito que hallaras referente a las superiores casinos en internet.<\/p>\n

Las bonos sin tanque deben la oportunidad atrayente con el fin de que experimentes joviales varios juegos de casino desprovisto reclamar un gasto con retorno inicial. Hasta si cumple de instalaciones de puesta, las casinos sugieren limites a las ganancias maximas permitidas de bonos sin tanque.<\/p>\n","protected":false},"excerpt":{"rendered":"

Son estos las bonos carente tanque mixtos de cual podras gozar de traspaso sin cargo tanto para colocar, como para disfrutar de slots, ruletas y otros juegos sobre casino online. Muchas veces, se podri? arrinconar el bono sobre casino de 5 euros gratis sin tanque seguidamente sobre apostar cualquier valor\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-70624","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=70624"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70624\/revisions"}],"predecessor-version":[{"id":70625,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70624\/revisions\/70625"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70624"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}