Skip to main content

EN

Towards Einstein Telescope: results from TeRABIT and ETIC

30 June 2025 | Conferences & Workshops
Towards Einstein Telescope: the results of TeRABIT and ETIC

The event “Verso Einstein Telescope: i risultati di TeRABIT e ETIC - Dai progetti PNRR reti iperveloci e laboratori avanzati per lo sviluppo della ricerca e del territori (Towards Einstein Telescope: the results of TeRABIT and ETIC – Ultra-fast networks and advanced laboratories from PNRR projects to support research and regional development)” is an opportunity to present the outcomes and future perspectives of the strategic TeRABIT and ETIC projects, funded by the PNRR and key to Italy’s scientific and technological growth.

A moment of dialogue between institutions, universities and research bodies on the crucial role of infrastructure and advanced connectivity. The focus of the day will be the achievements in Sardinia in the areas of fibre optic networks, supercomputing, and cutting-edge laboratories, which also support Italy’s bid to host the Einstein Telescope.

  • Find out more

  • Programme

  • Interviews

  • Videos of the session

  • Photo Gallery

TeRABIT and ETIC event

Università degli Studi di Cagliari, Aula Magna del Rettorato
Via Università, 40

9 July 2025, Cagliari

Interviews & Press reviews

  • Einstein Telescope, Tira: "Con TeRABIT ed Etic, Sardegna al centro d'Europa"

  • RAI News TGR - Einstein Telescope: i nuovi laboratori ETIC e i risultati di TeRABIT

  • RAI News TGR - Einstein Telescope: una rete ad altissima velocità in Sardegna

Videos of the session

Photo Gallery

Would you like to learn more about GARR events?

Contact us

GARR Workshop 2025

28 May 2025 | Conferences & Workshops
WORKSHOP GARR 2025

The 2025 edition of the GARR - Net Makers workshop is hosted by the Department of Architecture of Roma Tre University from 3 to 5 November

The workshop has always been an important event for networking experts from the research and education community: an opportunity for discussion and comparison on current technological topics, but also for professional updating.

  • Interviews

  • The Visual Story

  • Videos of the sessions

  • Slide

  • Photo Gallery

  • Programme

GARR Workshop 2025

Roma Tre University
Departiment of Architecture

Entry from:
Piazza Orazio Giustiniani, 4
Largo Giovanni Battista Marzi, 10

3-5 NOVEMBER 2025, ROME

GARR Workshop: The Visual Story

Interviews

/* Stili della galleria (prefisso garr- per non collidere con la pagina ospite) */ .garr-video-facade { position: relative; display: block; width: 100%; padding: 0; border: 0; aspect-ratio: 16 / 9; background-color: #000; background-size: cover; background-position: center; cursor: pointer; overflow: hidden; } .garr-play-icon { position: absolute; top: 50%; left: 50%; width: 68px; height: 48px; transform: translate(-50%, -50%); background: rgba(0, 0, 0, 0.6); border-radius: 12px; transition: background 0.2s ease; } .garr-play-icon::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); border-style: solid; border-width: 11px 0 11px 19px; border-color: transparent transparent transparent #fff; } .garr-video-facade:hover .garr-play-icon, .garr-video-facade:focus .garr-play-icon { background: #c00; } .garr-video-frame { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
// Configurazione // MAX_VIDEOS: numero intero positivo per limitare i video mostrati. // Lascia null / undefined / -1 (o qualunque valore non intero-positivo) // per mostrare TUTTI i video disponibili con il tag. const MAX_VIDEOS = null; const TAG_FILTER = 'interviste-ws25'; const API_BASE_URL = 'https://garr.tv/api/v1/videos'; const SITE_BASE_URL = 'https://garr.tv'; const PAGE_SIZE = 100; // massimo consentito dall'API PeerTube per singola richiesta // True se MAX_VIDEOS non rappresenta un limite valido => mostra tutti i video function shouldFetchAll() { return !(Number.isInteger(MAX_VIDEOS) && MAX_VIDEOS > 0); } // Escape dei caratteri speciali HTML (testo e attributi) function escapeHtml(value) { return String(value == null ? '' : value) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); } // Funzione per recuperare i video (gestisce limite e paginazione) async function fetchRecentVideos() { const limit = shouldFetchAll() ? Infinity : MAX_VIDEOS; const collected = []; let start = 0; let total = Infinity; try { while (collected.length < limit && start < total) { const pageCount = Math.min(PAGE_SIZE, limit - collected.length); const apiUrl = API_BASE_URL + '?tagsOneOf=' + encodeURIComponent(TAG_FILTER) + '&sort=-publishedAt' + '&start=' + start + '&count=' + pageCount; const response = await fetch(apiUrl); if (!response.ok) { throw new Error('Request failed with status: ' + response.status); } const data = await response.json(); total = data.total || 0; const pageVideos = data.data || []; if (pageVideos.length === 0) { break; } collected.push.apply(collected, pageVideos); start += pageVideos.length; } return processVideoData(collected); } catch (error) { console.error('Error fetching videos:', error); return []; } } // Funzione per processare i dati dei video function processVideoData(videoList) { return videoList.map(function (video) { // Usa embedPath / previewPath forniti dall'API (più robusti di un URL costruito a mano) const embedUrl = video.embedPath ? SITE_BASE_URL + video.embedPath : SITE_BASE_URL + '/videos/embed/' + video.uuid; const thumbnailPath = video.previewPath || video.thumbnailPath || ''; const thumbnailUrl = thumbnailPath ? SITE_BASE_URL + thumbnailPath : ''; return { title: video.name || '', videoSrc: embedUrl, thumbnailUrl: thumbnailUrl, publishedAt: video.originallyPublishedAt || video.publishedAt }; }); } // Funzione per creare una card video (facade: anteprima + tasto play, l'iframe si carica al click) function createVideoCard(video) { const safeTitle = escapeHtml(video.title); const safeEmbed = escapeHtml(video.videoSrc); const safeThumb = escapeHtml(video.thumbnailUrl); const thumbStyle = safeThumb ? ' style="background-image:url(\'' + safeThumb + '\');"' : ''; return '
' + '
' + '

' + safeTitle + '

' + '
' + '' + '' + '' + '
' + '
' + '
'; } // Sostituisce la facade cliccata con l'iframe del player (carica un solo player, su gesto utente) function handleFacadeClick(event) { const facade = event.target.closest('.garr-video-facade'); if (!facade) { return; } const embedUrl = facade.getAttribute('data-embed'); const title = facade.getAttribute('data-title') || ''; const iframe = document.createElement('iframe'); iframe.className = 'garr-video-frame'; iframe.setAttribute('title', title); iframe.setAttribute('src', embedUrl + (embedUrl.indexOf('?') === -1 ? '?' : '&') + 'autoplay=1'); iframe.setAttribute('allow', 'autoplay; fullscreen'); iframe.setAttribute('allowfullscreen', ''); iframe.setAttribute('frameborder', '0'); iframe.setAttribute('sandbox', 'allow-same-origin allow-scripts allow-popups allow-forms'); facade.replaceWith(iframe); } // Funzione per renderizzare i video function renderVideos(videos) { const container = document.getElementById('garr-videos-container'); if (videos.length === 0) { container.innerHTML = '

Nessun video trovato.

'; return; } const videosHTML = videos.map(createVideoCard).join(''); container.innerHTML = '
' + videosHTML + '
'; // Delego il click sul container: il player parte solo quando l'utente clicca container.addEventListener('click', handleFacadeClick); } // Funzione principale async function initVideoGallery() { const container = document.getElementById('garr-videos-container'); container.innerHTML = '

Caricamento video...

'; const videos = await fetchRecentVideos(); renderVideos(videos); } // Avvia l'applicazione quando il DOM è pronto if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initVideoGallery); } else { initVideoGallery(); }

Videos of the sessions

Click on the menu at the top left of the player to browse the playlist

Slide

document.documentElement.classList.add("k-ui-j5", "k-ui-j5-site");document.documentElement.classList.add('k-js-enabled');

Photogallery

Would you like to learn more about GARR events?

Contact us

Rome Science Festival 2025

01 April 2025 | Conferences & Workshops
Festival delle Scienze 2025

From 8 to 13 April, the 20th edition of the Rome Science Festival returns to the Auditorium Parco della Musica Ennio Morricone.

This year’s theme, “Corpi – Bodies”, explores the many dimensions of corporeality: from human bodies, with their shapes, functions, and transformations, to animal and plant bodies, microscopic entities such as viruses and bacteria, celestial bodies, and, thanks to technological advancements, hybrid and mechanical entities like robots and automatons.

GARR provides a contribution on the importance of digital infrastructures supporting researchers in multidisciplinary collaborations and on the promising frontiers of sensing research, specifically the unconventional use of optical fibre as an environmental sensor.

  • Website event

  • Programme

Rome Science Festival 2025

Auditorium Parco della Musica Ennio Morricone

8-13 APRIL 2025, ROMA

The participation of GARR

Saturday 12th April at 12:00

Conference: "Il mare che ascolta e racconta. Esplorare il pianeta e il cosmo attraverso il monitoraggio degli oceani - The sea that listens and tells. Exploring the planet and the cosmos through ocean monitoring"
In the ocean depths, far from the light and noise of the surface, a network of electronic eyes and ears surveys the unknown. Its task? To listen to the sea, monitoring climate change, biodiversity, and ecosystems. But as they explore the depths, these marine observers also pick up signals from space, collecting valuable data about the universe.
Unique observers, windows to the cosmos, and laboratories for exploring the oceans, they serve as a bridge between the heart of the sea and the infinity of space.

Speakers include Paolo Bolletta, GARR optical infrastructure expert, Fabrizio Bocchino, Researcher at the INAF Palermo Astronomical Observatory, Luigi Antonio Fusco, Professor at the University of Salerno and associate at INFN – Naples Section, Giuditta Marinaro, Senior Technologist at INGV, coordinator of international activities for EMSO-ERIC and responsible for research on Geosphere-Ocean-Atmosphere interactions. The session is moderated by science journalist and communicator Giorgia Burzachechi

More
  • event website

  • Programma completo

Would you like to learn more about GARR events?

Contact us

GARR Conference 2025

03 February 2025 | Conferences & Workshops
GARR Conference 2025

The 2025 edition of the GARR Conference, titled "Digital Frontiers. Shared and independent infrastructures for the future of research", was hosted by the University of Bari Aldo Moro at the Department of Law from 13 to 15 May.. The day of 12 May will be dedicated to training opportunities.

The Conference serves as a key forum for discussion and networking for those who use the GARR network for study, teaching, and research, as well as for those working to innovate and continuously improve the services offered, meeting the evolving needs of users. This annual gathering provides a platform to share experiences, ideas, and visions on the use of digital infrastructures and services across a wide range of disciplines and contexts.

  • Interviews

  • Videos of the sessions

  • Slide

  • Gallery

  • Go to the website

GARR Conference 2025

University of Bari

13-15 MAY 2025, BARI

Interviews

/* Stili della galleria (prefisso garr- per non collidere con la pagina ospite) */ .garr-video-facade { position: relative; display: block; width: 100%; padding: 0; border: 0; aspect-ratio: 16 / 9; background-color: #000; background-size: cover; background-position: center; cursor: pointer; overflow: hidden; } .garr-play-icon { position: absolute; top: 50%; left: 50%; width: 68px; height: 48px; transform: translate(-50%, -50%); background: rgba(0, 0, 0, 0.6); border-radius: 12px; transition: background 0.2s ease; } .garr-play-icon::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); border-style: solid; border-width: 11px 0 11px 19px; border-color: transparent transparent transparent #fff; } .garr-video-facade:hover .garr-play-icon, .garr-video-facade:focus .garr-play-icon { background: #c00; } .garr-video-frame { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
// Configurazione // MAX_VIDEOS: numero intero positivo per limitare i video mostrati. // Lascia null / undefined / -1 (o qualunque valore non intero-positivo) // per mostrare TUTTI i video disponibili con il tag. const MAX_VIDEOS = null; const TAG_FILTER = 'interviste-conf25'; const API_BASE_URL = 'https://garr.tv/api/v1/videos'; const SITE_BASE_URL = 'https://garr.tv'; const PAGE_SIZE = 100; // massimo consentito dall'API PeerTube per singola richiesta // True se MAX_VIDEOS non rappresenta un limite valido => mostra tutti i video function shouldFetchAll() { return !(Number.isInteger(MAX_VIDEOS) && MAX_VIDEOS > 0); } // Escape dei caratteri speciali HTML (testo e attributi) function escapeHtml(value) { return String(value == null ? '' : value) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); } // Funzione per recuperare i video (gestisce limite e paginazione) async function fetchRecentVideos() { const limit = shouldFetchAll() ? Infinity : MAX_VIDEOS; const collected = []; let start = 0; let total = Infinity; try { while (collected.length < limit && start < total) { const pageCount = Math.min(PAGE_SIZE, limit - collected.length); const apiUrl = API_BASE_URL + '?tagsOneOf=' + encodeURIComponent(TAG_FILTER) + '&sort=-publishedAt' + '&start=' + start + '&count=' + pageCount; const response = await fetch(apiUrl); if (!response.ok) { throw new Error('Request failed with status: ' + response.status); } const data = await response.json(); total = data.total || 0; const pageVideos = data.data || []; if (pageVideos.length === 0) { break; } collected.push.apply(collected, pageVideos); start += pageVideos.length; } return processVideoData(collected); } catch (error) { console.error('Error fetching videos:', error); return []; } } // Funzione per processare i dati dei video function processVideoData(videoList) { return videoList.map(function (video) { // Usa embedPath / previewPath forniti dall'API (più robusti di un URL costruito a mano) const embedUrl = video.embedPath ? SITE_BASE_URL + video.embedPath : SITE_BASE_URL + '/videos/embed/' + video.uuid; const thumbnailPath = video.previewPath || video.thumbnailPath || ''; const thumbnailUrl = thumbnailPath ? SITE_BASE_URL + thumbnailPath : ''; return { title: video.name || '', videoSrc: embedUrl, thumbnailUrl: thumbnailUrl, publishedAt: video.originallyPublishedAt || video.publishedAt }; }); } // Funzione per creare una card video (facade: anteprima + tasto play, l'iframe si carica al click) function createVideoCard(video) { const safeTitle = escapeHtml(video.title); const safeEmbed = escapeHtml(video.videoSrc); const safeThumb = escapeHtml(video.thumbnailUrl); const thumbStyle = safeThumb ? ' style="background-image:url(\'' + safeThumb + '\');"' : ''; return '
' + '
' + '

' + safeTitle + '

' + '
' + '' + '' + '' + '
' + '
' + '
'; } // Sostituisce la facade cliccata con l'iframe del player (carica un solo player, su gesto utente) function handleFacadeClick(event) { const facade = event.target.closest('.garr-video-facade'); if (!facade) { return; } const embedUrl = facade.getAttribute('data-embed'); const title = facade.getAttribute('data-title') || ''; const iframe = document.createElement('iframe'); iframe.className = 'garr-video-frame'; iframe.setAttribute('title', title); iframe.setAttribute('src', embedUrl + (embedUrl.indexOf('?') === -1 ? '?' : '&') + 'autoplay=1'); iframe.setAttribute('allow', 'autoplay; fullscreen'); iframe.setAttribute('allowfullscreen', ''); iframe.setAttribute('frameborder', '0'); iframe.setAttribute('sandbox', 'allow-same-origin allow-scripts allow-popups allow-forms'); facade.replaceWith(iframe); } // Funzione per renderizzare i video function renderVideos(videos) { const container = document.getElementById('garr-videos-container'); if (videos.length === 0) { container.innerHTML = '

Nessun video trovato.

'; return; } const videosHTML = videos.map(createVideoCard).join(''); container.innerHTML = '
' + videosHTML + '
'; // Delego il click sul container: il player parte solo quando l'utente clicca container.addEventListener('click', handleFacadeClick); } // Funzione principale async function initVideoGallery() { const container = document.getElementById('garr-videos-container'); container.innerHTML = '

Caricamento video...

'; const videos = await fetchRecentVideos(); renderVideos(videos); } // Avvia l'applicazione quando il DOM è pronto if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initVideoGallery); } else { initVideoGallery(); }

Videos of the sessions

Click on the menu at the top left of the player to browse the playlist

Slide

Photo Gallery

Would you like to learn more about GARR events?

Contact us

GARR Workshop 2024

31 July 2024 | Conferences & Workshops
WORKSHOP GARR 2024

In this edition of the GARR Workshop 2024, we provide updates on the state of the new GARR-T network, enhanced by the European TeRABIT and ICSC projects. Attendees learn about the latest GARR services and the innovative use of fibre infrastructure for no-data services, including time-frequency signal transmission, sensing, and quantum communication. We also focus on security, especially on NIS2, digital identities, cloud technology, and the many applications and services supporting researchers in Italy and across Europe.

The GARR Workshop has long been a crucial gathering for networking experts from the university, education, and research sectors, offering a valuable platform for discussion, exchange, and professional development on the latest technological trends.

Additionally, on 4th November, we will host an event dedicated to training opportunities, featuring in-person courses tailored for GARR user community.

  • Interviews

  • Videos of the sessions

  • Slide

  • Photo Gallery

  • Event website

GARR Workshop 2024

Biblioteca Nazionale Centrale di Roma

5-7 NOVEMBER 2024, ROME

Interviews

/* Stili della galleria (prefisso garr- per non collidere con la pagina ospite) */ .garr-video-facade { position: relative; display: block; width: 100%; padding: 0; border: 0; aspect-ratio: 16 / 9; background-color: #000; background-size: cover; background-position: center; cursor: pointer; overflow: hidden; } .garr-play-icon { position: absolute; top: 50%; left: 50%; width: 68px; height: 48px; transform: translate(-50%, -50%); background: rgba(0, 0, 0, 0.6); border-radius: 12px; transition: background 0.2s ease; } .garr-play-icon::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); border-style: solid; border-width: 11px 0 11px 19px; border-color: transparent transparent transparent #fff; } .garr-video-facade:hover .garr-play-icon, .garr-video-facade:focus .garr-play-icon { background: #c00; } .garr-video-frame { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
// Configurazione // MAX_VIDEOS: numero intero positivo per limitare i video mostrati. // Lascia null / undefined / -1 (o qualunque valore non intero-positivo) // per mostrare TUTTI i video disponibili con il tag. const MAX_VIDEOS = null; const TAG_FILTER = 'interviste-ws24'; const API_BASE_URL = 'https://garr.tv/api/v1/videos'; const SITE_BASE_URL = 'https://garr.tv'; const PAGE_SIZE = 100; // massimo consentito dall'API PeerTube per singola richiesta // True se MAX_VIDEOS non rappresenta un limite valido => mostra tutti i video function shouldFetchAll() { return !(Number.isInteger(MAX_VIDEOS) && MAX_VIDEOS > 0); } // Escape dei caratteri speciali HTML (testo e attributi) function escapeHtml(value) { return String(value == null ? '' : value) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); } // Funzione per recuperare i video (gestisce limite e paginazione) async function fetchRecentVideos() { const limit = shouldFetchAll() ? Infinity : MAX_VIDEOS; const collected = []; let start = 0; let total = Infinity; try { while (collected.length < limit && start < total) { const pageCount = Math.min(PAGE_SIZE, limit - collected.length); const apiUrl = API_BASE_URL + '?tagsOneOf=' + encodeURIComponent(TAG_FILTER) + '&sort=-publishedAt' + '&start=' + start + '&count=' + pageCount; const response = await fetch(apiUrl); if (!response.ok) { throw new Error('Request failed with status: ' + response.status); } const data = await response.json(); total = data.total || 0; const pageVideos = data.data || []; if (pageVideos.length === 0) { break; } collected.push.apply(collected, pageVideos); start += pageVideos.length; } return processVideoData(collected); } catch (error) { console.error('Error fetching videos:', error); return []; } } // Funzione per processare i dati dei video function processVideoData(videoList) { return videoList.map(function (video) { // Usa embedPath / previewPath forniti dall'API (più robusti di un URL costruito a mano) const embedUrl = video.embedPath ? SITE_BASE_URL + video.embedPath : SITE_BASE_URL + '/videos/embed/' + video.uuid; const thumbnailPath = video.previewPath || video.thumbnailPath || ''; const thumbnailUrl = thumbnailPath ? SITE_BASE_URL + thumbnailPath : ''; return { title: video.name || '', videoSrc: embedUrl, thumbnailUrl: thumbnailUrl, publishedAt: video.originallyPublishedAt || video.publishedAt }; }); } // Funzione per creare una card video (facade: anteprima + tasto play, l'iframe si carica al click) function createVideoCard(video) { const safeTitle = escapeHtml(video.title); const safeEmbed = escapeHtml(video.videoSrc); const safeThumb = escapeHtml(video.thumbnailUrl); const thumbStyle = safeThumb ? ' style="background-image:url(\'' + safeThumb + '\');"' : ''; return '
' + '
' + '

' + safeTitle + '

' + '
' + '' + '' + '' + '
' + '
' + '
'; } // Sostituisce la facade cliccata con l'iframe del player (carica un solo player, su gesto utente) function handleFacadeClick(event) { const facade = event.target.closest('.garr-video-facade'); if (!facade) { return; } const embedUrl = facade.getAttribute('data-embed'); const title = facade.getAttribute('data-title') || ''; const iframe = document.createElement('iframe'); iframe.className = 'garr-video-frame'; iframe.setAttribute('title', title); iframe.setAttribute('src', embedUrl + (embedUrl.indexOf('?') === -1 ? '?' : '&') + 'autoplay=1'); iframe.setAttribute('allow', 'autoplay; fullscreen'); iframe.setAttribute('allowfullscreen', ''); iframe.setAttribute('frameborder', '0'); iframe.setAttribute('sandbox', 'allow-same-origin allow-scripts allow-popups allow-forms'); facade.replaceWith(iframe); } // Funzione per renderizzare i video function renderVideos(videos) { const container = document.getElementById('garr-videos-container'); if (videos.length === 0) { container.innerHTML = '

Nessun video trovato.

'; return; } const videosHTML = videos.map(createVideoCard).join(''); container.innerHTML = '
' + videosHTML + '
'; // Delego il click sul container: il player parte solo quando l'utente clicca container.addEventListener('click', handleFacadeClick); } // Funzione principale async function initVideoGallery() { const container = document.getElementById('garr-videos-container'); container.innerHTML = '

Caricamento video...

'; const videos = await fetchRecentVideos(); renderVideos(videos); } // Avvia l'applicazione quando il DOM è pronto if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initVideoGallery); } else { initVideoGallery(); }

Videos of the sessions

Click on the menu at the top left of the player to browse the playlist

Slide

Photogallery

Would you like to learn more about GARR events?

Contact us

Maker Faire Rome 2024

17 April 2024 | Conferences & Workshops
Maker Faire Rome 2024

The Maker Faire Rome - The European Edition is the European event that makes innovation accessible to everyone, connecting businesses, academia, people, and ideas in a simple and direct way. This event serves as a key meeting point for industry experts, makers, and innovators, who share their projects with a wide and curious audience.

GARR is participating with a dedicated stand, where experts are showcasing a miniature yet fully operational network, using the same hardware employed in the GARR infrastructure. This showcase allows visitors to explore the various layers of connectivity up close and discover the mechanisms that make the GARR network so resilient and efficient.

To make the experience even more interactive, GARR has created the activity “Network Invaders”: participants can simulate real-world scenarios, such as the breakage of a link, while practically and engagingly exploring how a complex network functions. The aim is to offer an immersive experience, allowing the public to dive into the world of networks and technological innovation in a stimulating and interactive way.

  • Video press review

  • Gallery

  • event website

Maker Faire Rome 2024

Gazometro Ostiense

25-27 OCTOBER 2024, ROME

video press review

(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function t(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=t(i);fetch(i.href,o)}})();var W,f,se,P,Y,fe,j,C={},ae=[],we=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,K=Array.isArray;function S(_,e){for(var t in e)_[t]=e[t];return _}function de(_){var e=_.parentNode;e&&e.removeChild(_)}function $e(_,e,t){var r,i,o,l={};for(o in e)o=="key"?r=e[o]:o=="ref"?i=e[o]:l[o]=e[o];if(arguments.length>2&&(l.children=arguments.length>3?W.call(arguments,2):t),typeof _=="function"&&_.defaultProps!=null)for(o in _.defaultProps)l[o]===void 0&&(l[o]=_.defaultProps[o]);return U(_,l,r,i,null)}function U(_,e,t,r,i){var o={type:_,props:e,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++se};return i==null&&f.vnode!=null&&f.vnode(o),o}function B(_){return _.children}function D(_,e){this.props=_,this.context=e}function T(_,e){if(e==null)return _.__?T(_.__,_.__.__k.indexOf(_)+1):null;for(var t;ev?H>x-v?k+=g-v:k--:k=g=0||s=0){if((u=e[l])&&i==u.key&&o===u.type)return l;l--}if(s
torna su