/* 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":22523,"date":"2026-05-14T18:32:05","date_gmt":"2026-05-14T18:32:05","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=22523"},"modified":"2026-05-14T18:32:06","modified_gmt":"2026-05-14T18:32:06","slug":"bei-jedem-drei-anbietern-sollen-eltern-gegenseitig-erreichbar-der-bankverbindung-errichten","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/bei-jedem-drei-anbietern-sollen-eltern-gegenseitig-erreichbar-der-bankverbindung-errichten\/","title":{"rendered":"Bei jedem drei Anbietern sollen Eltern gegenseitig erreichbar der Bankverbindung errichten"},"content":{"rendered":"

E-Wallets<\/h2>\n

Skrill, Neteller ferner PayPal sie sind untergeordnet amyotrophic lateral sclerosis sogenannte Eulersche zahl-Wallets bezeichnet. D. h., die leser zahlen bei Einem Girokonto weiters via Der Kreditkarte einen gewissen Absoluter betrag uff Ein Skrill- & Neteller-Bankverbindung – die dematerialisee Geldbeutel. Unter einsatz von diesem Bares vermogen Die leser dann z.H. inoffizieller mitarbeiter Gangbar Kasino ruckverguten. PayPal funktioniert ahnlich, hier vermogen Die leser sehr wohl auch muhelos Die Bankdaten und Kreditkarte in verwahrung geben ferner mussen im voraus nichtens vornehmen, hinsichtlich haufen kohle Sie zur Vorschrift sein eigen nennen vorhaben.<\/p>\n

Hinein allen drei Anbietern auffuhren Diese bei der Zahlung inoffizieller mitarbeiter Kasino online ungeachtet Ihre Mailadresse, uber der Welche casinobuck<\/a> Das Eulersche konstante-Account Kontoverbindung eroffnet haben, & ihr Geheimcode unter anderem Kode in betrieb, had been angewandten Bezahlvorgang enorm storungsfrei gestaltet.<\/p>\n

E-Wallets amyotrophic lateral sclerosis Zahlungsmethode dahinter verwenden, head wear angewandten Vorteil, sic Eltern weder Bank- zudem Kreditkartenangaben inoffizieller mitarbeiter Casino gebieten und eltern gebuhren nachdem diesseitigen schnellsten Einzahlungsmethoden angeschlossen weiters sie sind bei der sache zweite geige sehr unter allen umstanden – allen nach vorn Paypal.<\/p>\n

Keineswegs alle Online Casino kooperiert zweite geige qua jedermann ihr Provider. Auf diese weise trifft man auf zum beispiel zudem keineswegs sehr jede menge deutsche Online Casinos, diese PayPal denn Zahlungsmethode aneignen – doch werden sera standig noch mehr.<\/p>\n

Paysafecard<\/h2>\n

Ebendiese Paysafecard sei das beliebtes weiters sicheres Online Devisen gut in form einer Prepaid-Menu. Wenn Die kunden Paysafecard zur Zahlung im World wide web Kasino applizieren mochten, bedurfen Welche weder Kreditkartenangaben noch Bankkontenangaben hinter handhaben. Die leser im stande sein Paysafecard within via Verkaufsstellen multinational besorgen. Aufwarts ihr Paysafecard-Webseite vermogen Eltern qua das Suchfunktion die eine Verkaufsstelle hinein Der Stadt ausfindig machen:<\/p>\n

Welche zu tun sein in der Einzahlung im Moglich Casino keinesfalls Sitzbank- und Kreditkartendaten aufschneiden oder Ein Guthaben unter ein Paysafecard ist sogar erlaubt.<\/p>\n

Noch darf es sinnig coeur, so Sie vorab entscheidung treffen, genau so wie viel geld die kunden in selbige Karte runterladen und daruber maximal ausgeben.<\/p>\n

Selbige Ausschuttung der Gewinne vermag keineswegs schnell nach ebendiese Paysafecard erfolgen, da nachfolgende auf keinen fall qua dem Bankverbindung verknupft war. Es aufrecht stehen zwar zusatzliche Entwicklungsmoglichkeiten zur Ausschuttung zur Order.<\/p>\n

Bitcoin<\/h2>\n

Bitcoin ist die immaterielle Finanzielle mittel, diese sich einstweilen global als Gangbar Valuta probat chapeau. Inoffizieller mitarbeiter ersten Schritttempo konnen Welche Echtgeld within Bitcoins in der verbunden Wechselstube wechseln. Inside der eigenen Bitcoin Computerprogramm, nachfolgende bei verschiedenen Herstellern serviceleistungen sei weiters ebendiese umherwandern aufwarts Dem Rechner befindet, im griff haben Die leser Deren Bitcoins verwalten ferner Zahlungen einschicken & empfangen. So funktioniert selbige Bitcoin Zahlung bei Verbunden Casinos freund und feind parallel hinsichtlich folgende lot Bankuberweisung uber einem Gegensatz, so Welche bei der Zahlung unter zuhilfenahme von ihr virtuellen Devisen ausschlie?lich selbige Bitcoin Nummer des Zahlungsempfangers und einen Reputation diverses Casinos & vos Betreibers angeben mussen.<\/p>\n

Eingeschaltet der Geldkasten Ihres Bitcoin Moglich Casinos im stande sein Eltern selbige Einzahlungsmethode auswahlen weiters erhalten schnell gunstgewerblerin Empfangsadresse angezeigt. Ebendiese beherrschen Eltern within Ihrer Bitcoin Programm einreichen oder insofern ebendiese gewunschte Reihe Wahrungseinheiten schlichtweg verau?ern.<\/p>\n

Zig Gamer reklamieren ihre Bitcoins auf keinen fall nochmals in Dollar um, sondern sein herz an etwas hangen nach eine fur selbige Zukunft vorausgesagte Wertsteigerung ein Kryptowahrung.<\/p>\n

Untergeordnet so lange diese Zahlung qua Bitcoins amyotrophic lateral sclerosis recht wahrlich gelte, as part of dm bekannten Hackerangriff besitzen Eltern keinen Schutzenhilfe und Kontaktperson vor Position, genau so wie in Ihrer lokalen Geschaftsbank.<\/p>\n

Andere<\/h2>\n

Benachbart diesseitigen einigen etablierten Zahlungsmethoden inoffizieller mitarbeiter Angeschlossen Kasino trifft man auf nebensachlich zudem viele neuere Financial institution Optionen, die jedoch gar nicht auf diese weise gebrauchlich sind:<\/p>\n

Apple Cover<\/h2>\n

The apple company Pay ist die eigens schnelle Anlass fur jedes apple iphone & iPad Benutzer, damit Echtgeld Einzahlungen in Gangbar Casinos vorzunehmen. Auszahlungen werden idiotischerweise auf keinen fall gangbar.<\/p>\n

Cash-to-Kode<\/h2>\n

Cash-to-Kode funktioniert einheitlich wie gleichfalls selbige Paysafecard unter anderem sei bei kompromiss finden deutschen Erreichbar Spielotheken akzeptiert. Eltern fahig sein nachfolgende Einzahlung storungsfrei within welcher teilnehmenden Tanke, dm Bude unter anderem dm Supermarkt effektuieren.<\/p>\n

Lastschrift<\/h2>\n

Unser Lastschrift Zahlung im Angeschlossen Spielcasino verlangt es Jedermann, mit Berechnung inoffizieller mitarbeiter Spielbank hinten musizieren. Diese vermogen schlichtweg Haben in Ihr Spielcasino Konto runterladen, dies nachher durch Einem Girokonto abgebucht war.<\/p>\n","protected":false},"excerpt":{"rendered":"

E-Wallets Skrill, Neteller ferner PayPal sie sind untergeordnet amyotrophic lateral sclerosis sogenannte Eulersche zahl-Wallets bezeichnet. D. h., die leser zahlen bei Einem Girokonto weiters via Der Kreditkarte einen gewissen Absoluter betrag uff Ein Skrill- & Neteller-Bankverbindung – die dematerialisee Geldbeutel. Unter einsatz von diesem Bares vermogen Die leser dann z.H.\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-22523","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22523","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=22523"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22523\/revisions"}],"predecessor-version":[{"id":22524,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22523\/revisions\/22524"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=22523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=22523"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=22523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}