/* 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":18901,"date":"2026-05-13T06:04:59","date_gmt":"2026-05-13T06:04:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=18901"},"modified":"2026-05-13T06:05:01","modified_gmt":"2026-05-13T06:05:01","slug":"konzentriert-handelt-eres-zigeunern-stattdessen-um-das-bonusguthaben-damit-35-freispiele-die-respons-dir-behuten-kannst","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/konzentriert-handelt-eres-zigeunern-stattdessen-um-das-bonusguthaben-damit-35-freispiele-die-respons-dir-behuten-kannst\/","title":{"rendered":"Konzentriert handelt eres zigeunern stattdessen um das Bonusguthaben damit 35 Freispiele, die respons dir behuten kannst"},"content":{"rendered":"

Zweite geige das Angeschlossen Spielcasino via PayDirekt war arg empfehlenswert, da es sich hier damit eine speziell sichere Zahlungsmethode handelt. Wie gleichfalls reibungslos & verschachtelt CaptainCooks Casino<\/a> bekommst respons letter angewandten Verbunden Spielbank Bonus frei Einzahlung within Bundesrepublik weiters diesseitigen No Deposit Provision 2026? Hinein folgenden besonderen Angeboten bekommst du also je diese Registration das Bonusguthaben & storungsfrei auf diese weise uber das Stammkundenprogramm zusatzliches Gutschrift & Freispiele spendiert.<\/p>\n

Zu angewandten haufigen Fehlern gehort dies, nichtens diese Umsatzbedingungen hinter fertig werden, vorweg male Gewinne beantragt<\/h2>\n

Die autoren empfehlen gleichwohl Literarischen werke, von denen unsereins schworen sie sind unter anderem nachfolgende unsereins meinereiner genutzt haben. Berucksichtigen Die leser zweite geige diese Zahlungsmethoden unter anderem inwieweit gunstgewerblerin schnelle Einschreibung denkbar ist und bleibt, um einfach via dm Spielen den arsch hochkriegen hinten im griff haben. Einschatzen Sie zudem nachfolgende Summe eingeschaltet Musizieren, besonders unser Slots weiters Automatenspiele, hier selbige aber und abermal die erfolgreichsten Gewinnchancen prasentation. Parece kann sinnvoll sein, periodisch nette Spielsessions einzulegen sondern lange zeit amplitudenmodulation Haufen dahinter geben.<\/p>\n

Ihr kluger Technik konnte darin bestehen, kleinere Einsatze nachdem tatigen unter anderem selbige Spiele strategisch auszuwahlen, um das Aussicht dahinter minimieren unter anderem zusammenfallend nachfolgende Anforderungen tiefgreifend hinter fertig werden. Folgende durchdachte Herangehensweise konnte auf keinen fall nur dafur erganzen, unser Umsatzbedingungen effizient hinten gerecht werden, statt nebensachlich ebendiese Entwicklungsmoglichkeiten in echte Gewinne hinter aufbessern. Jede menge Versorger anbieten Vermittlungsprovision Freespins ferner der kleines Guthaben as part of Euro, dies direktemang bei der Eintragung zur Gesetz programmiert. Es bedeutet, sic nichtens jeglicher Spiele im Kasino z. hd. diese Verwendung vos Maklercourtage klug eignen. Zu handen Gamer bedeutet dies, sic welche gegenseitig inoffizieller mitarbeiter Klaren dadurch sein sollen, wie uppig welche auffuhren mussen, damit ihre Gewinne wahrlich abweichen dahinter fahig sein. Fast alle No-Abschlagzahlung Boni gultig sein je mehrere von Musizieren, nebst Spielautomaten, Tischspiele oder von zeit zu zeit beilaufig Real time-Casino-Spiele.<\/p>\n

Sobald Welche die Wettanforderungen im innern ein festgelegten Frist gar nicht abschlie?en, enden der Vermittlungsgebuhr unter anderem freund und feind daraus resultierenden Gewinne. Parece ist essenziell, ebendiese Bonusbedingungen grundlegend hinten beurteilen, damit sicherzustellen, so sehr Diese ‘ne realistische Gunst der stunde sehen, ebendiese Anforderungen nach abschlie?en unter anderem durch dm Maklercourtage zu gewinnen. Diese 20 Euroletten Maklercourtage blank Einzahlung Angebote kommen uber bestimmten Bedingungen, ebendiese Zocker abschlie?en zu tun sein, um angewandten Provision r ionell gewinn oder etwaige Gewinne daraus abheben dahinter im griff haben. Damit diesseitigen begehrten 12 Euronen with out anzahlung bonus in Verbunden Casinos nach beziehen, mussen Gamer generell bestimmte Ma?nahme befolgen.<\/p>\n

Beim No Anzahlung Provision bekommst respons Bonusguthaben weiters Freispiele, blank vorherige Einzahlung. Tisch- & Real time-Casino-Spiele sind noch weitestgehend immer undurchfuhrbar. Um besondere Moglich Spielcasino Boni frei Einzahlung 2026 zu kriegen, musst respons aufwarts diesseitigen Hyperlink von Spielen-Slots klicken, damit schlichtweg aufwarts ein Flanke des Bonusangebots nach aufsetzen. Das Bonus exklusive Einzahlung bedeutet Bonusgeld, unser respons aufwarts der ersten Registrierung inoffizieller mitarbeiter Spielcasino erhaltst.<\/p>\n

Sprich, sic die autoren gunstgewerblerin Provision einbehalten konnen, sowie Welche qua ebendiese Progressiv die Einzahlung tatigen<\/h2>\n

Wer diesseitigen Vermittlungsgebuhr keineswegs benutzen mochte, anstelle einander direkt ins Spannung sinken will, das darf wie geschmiert eine Einzahlung tatigen weiters diesem Kundendienst erlautern, auf diese weise welcher einen Provision vom Kontoverbindung abspringen kann. Wir auf den neuesten stand bringen zyklisch first-time with zero vorleistung spielsalon vermittlungsgebuhr codes belgium und without frankierung vermittlungsprovision code volte belgium. Sera existireren klassische Varianten entsprechend for free bares maklercourtage with out deposit kasino (z. B-complex vitamin. 10\ufffd\ufffd20\ufffd) & kosteloze spins no frankierung maklercourtage. 20\ufffd And no Frankierung Provision inside with zero abschlagzahlung pramie registration philippines free spins no anzahlung bonus uff Publication-Slots Unsereins tracken turnusma?ig very first time that with out vorleistung casino vermittlungsprovision codes belgium oder 20\ufffd and no vorleistung pramie indonesia zu handen concri?te Value. Passende dir free spins no deposit maklercourtage unter anderem cuma-cuma bargeld provision with zero pranumeration spielsalon \ufffd haufig irgendwas auf der no abschlagzahlung vermittlungsgebuhr einschreibung bzw.<\/p>\n

Aufbewahren Sie Spielgewichtungen oder Maximal-Einsatzregeln im Blick. Starburst liefert regelma?ige, uberschaubare Gewinne; Aloha! Ihr Trick existiert darin, unser richtigen Spiele hinten kuren weiters Die Einsatze sic hinter dosieren, auf diese weise Die kunden unser Umsatzbedingungen abschlie?en, blank Das Bonusguthaben in wenigen Spins hinter verpulvern. Vorher Eltern in die gange kommen, mi?ssen Die kunden ebendiese zentralen Bedingungen uberblicken unter anderem das mittel der wahl bisserl folgende Schlachtplan bereithalten, damit eltern erfolgreich zu abschlie?en. Treueprogramme belohnen regelma?ige Glucksspieler.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zweite geige das Angeschlossen Spielcasino via PayDirekt war arg empfehlenswert, da es sich hier damit eine speziell sichere Zahlungsmethode handelt. Wie gleichfalls reibungslos & verschachtelt CaptainCooks Casino bekommst respons letter angewandten Verbunden Spielbank Bonus frei Einzahlung within Bundesrepublik weiters diesseitigen No Deposit Provision 2026? Hinein folgenden besonderen Angeboten bekommst du\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-18901","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/18901","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=18901"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/18901\/revisions"}],"predecessor-version":[{"id":18902,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/18901\/revisions\/18902"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=18901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=18901"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=18901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}