CINXE.COM
Security Issues (Symfony Docs)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="robots" content="index, follow, all" /> <meta name="Author" content="Symfony" /> <meta name="color-scheme" content="light dark"> <meta name="view-transition" content="same-origin" /> <meta name="description" content="This document explains how Symfony security issues are handled by the Symfony core team (Symfony being the code hosted on the main symfony/symfony Git repository). Reporting a Security Issue If you t…"> <meta name="Keywords" content="symfony3, symfony2, symfony, project, framework, php, php5, php7, php8, open-source, components, symphony, symfony framework, symfony tutorial" /> <link rel="preconnect" href="https://connect.symfony.com"> <title>Security Issues (Symfony Docs)</title> <link rel="canonical" href="https://symfony.com/doc/current/contributing/code/security.html" /> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono&display=swap" rel="stylesheet"> <link rel="search" type="application/opensearchdescription+xml" href="https://symfony.com/opensearch/documentation.xml" title="Symfony documentation" /> <link rel="stylesheet" href="/assets/vendor/bootstrap/dist/css/bootstrap.min-1712f0378f8675ca7cd423d6262fcccf.css"> <link rel="stylesheet" href="/assets/styles/color-palette-d0d7a9d5fc86e4b1e9ad91ec0c957a96.css"> <link rel="stylesheet" href="/assets/styles/app-39ad25b073804b5438d03471928d0b16.css"> <link rel="stylesheet" href="/assets/styles/ui-components-155eb1e4e796922e265a182e612ed047.css"> <link rel="stylesheet" href="/assets/@symfony/ux-live-component/live.min-5108f988fb2a3dbb292d6feebc9db7e8.css"> <link rel="stylesheet" href="/assets/styles/search-42da4f901c7d6eabaf3c8671eb7664cf.css"> <link rel="stylesheet" href="/assets/styles/doc-18b41f70c1a0fecfc75a0b1dbb868dc0.css"> <link rel="stylesheet" href="/assets/styles/code-14f7094c46fcc117c0276b407fbada0f.css"> <link rel="stylesheet" href="/assets/styles/terminal_window-fbcf5e4dfdb661df120a5f5e2f2d2083.css"> <script type="importmap" data-turbo-track="reload"> { "imports": { "app": "/assets/app-8a87453761810fb014e976bf960715d7.js", "bootstrap/dist/css/bootstrap.min.css": "data:application/javascript,", "bootstrap/js/src/offcanvas": "/assets/vendor/bootstrap/js/src/offcanvas-6e548788bdb299ccf15bad01f85a1c4e.js", "/assets/styles/color-palette.css": "data:application/javascript,", "/assets/styles/app.css": "data:application/javascript,", "/assets/styles/ui-components.css": "data:application/javascript,", "/assets/stimulus.js": "/assets/stimulus-97656ab68e522ab9732b853e32a2116f.js", "@symfony/stimulus-bundle": "/assets/@symfony/stimulus-bundle/loader-870999a02e9fc147c034d522826ea70d.js", "@hotwired/stimulus": "/assets/vendor/@hotwired/stimulus/stimulus.index-b5b1d00e42695b8959b4a1e94e3bc92a.js", "/assets/@symfony/stimulus-bundle/controllers.js": "/assets/@symfony/stimulus-bundle/controllers-30ef92e440b067edafb440f89903311e.js", "/assets/@symfony/ux-live-component/live_controller.js": "/assets/@symfony/ux-live-component/live_controller-b4fdb1f53d5a5f813f85327cceb706b8.js", "/assets/@symfony/ux-live-component/live.min.css": "data:application/javascript,", "/assets/controllers/eventsmap_controller.js": "/assets/controllers/eventsmap_controller-dec85c248dc518bcca1ff8c1772842bc.js", "search": "/assets/search-04960a6f9bd1902ecc44ef024e74ecb9.js", "/assets/styles/search.css": "data:application/javascript,", "mousetrap": "/assets/vendor/mousetrap/mousetrap.index-2fcbabba04c2773c43d7b248b7bfcc5e.js", "doc": "/assets/doc-f53df194d5b1babeef5401af8562c6af.js", "/assets/styles/doc.css": "data:application/javascript,", "/assets/code.js": "/assets/code-5fce8b30c71ee457fcb7e2630873c57e.js", "/assets/styles/code.css": "data:application/javascript,", "/assets/styles/terminal_window.css": "data:application/javascript,", "new-home": "/assets/new-home-9a08d54a40d4a2fbb00487afc11859af.js", "/assets/styles/new-home.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fnew-home-30a9da07f1ac1f13638453adae0c8ede.css%22%7D%29%29", "admin-bundles": "/assets/admin-bundles-ff6540dd6bb0d162e8fd444b0c404fea.js", "admin-blog": "/assets/admin-blog-a64407de34fbdd1ac8c240b95f6cbdcd.js", "/assets/@symfony/ux-leaflet-map/map_controller.js": "/assets/@symfony/ux-leaflet-map/map_controller-975755623ba9069450e62093d97cea8f.js", "terminal-recording-player": "/assets/asciinema-player-4aaff97af7e331a12fb59d2752290c4d.js", "backers": "/assets/backers-8abb46ccd02a5fbd206198fcd2c9f297.js", "/assets/styles/backers.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fbackers-bcb27fa37219d1ba529093e1479b5a19.css%22%7D%29%29", "blog": "/assets/blog-770e3fee93dddddd01dac29b396d3383.js", "/assets/styles/blog.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fblog-cad297648479c9b81fe847ad0bdf657d.css%22%7D%29%29", "cloud": "/assets/cloud-e761264af9ecf3b01ad5d8deb5e43ad5.js", "/assets/styles/cloud.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fcloud-ece740794b00d30e70c83763358dc8ad.css%22%7D%29%29", "code": "/assets/code-5fce8b30c71ee457fcb7e2630873c57e.js", "components": "/assets/components-c0eda134e831efcfe777f1b2abcd9c4e.js", "/assets/styles/components.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fcomponents-610c937560331814d9ddbc0d7e2c5fb3.css%22%7D%29%29", "components-downloads": "/assets/components-downloads-899b46584825ee6e9d0a168305dda680.js", "/assets/styles/components-downloads.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fcomponents-downloads-ce0cd3bd06382f1b5c2900a9b0643329.css%22%7D%29%29", "download": "/assets/download-a62ed9c2100a867a69b0768dce5aa27b.js", "/assets/styles/download.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fdownload-53c1d7854a73633d8e350387f980bb96.css%22%7D%29%29", "home": "/assets/home-10e0171d98f18dd5c029ff7bf1e272c6.js", "/assets/styles/home.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fhome-7f88a24d2c54119eca4a3c47aaf482ac.css%22%7D%29%29", "jobs": "/assets/jobs-be103937b00f2d766b914ddead1b381b.js", "/assets/styles/jobs.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fjobs-93b54b3ece823ef64e87f7cc5733340e.css%22%7D%29%29", "legacy": "/assets/legacy-f0a43a9e33b14a100a510cae76a194f6.js", "/assets/styles/legacy.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Flegacy-66528d42bff9478c9d5fef1226c8366d.css%22%7D%29%29", "releases": "/assets/releases-0fb630489a14d353cc90a5f15f4546eb.js", "/assets/styles/releases.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Freleases-2190108805c62f78be931070b1b36bad.css%22%7D%29%29", "support": "/assets/support-3d2321b292a7d005102aa200f6d974ca.js", "@popperjs/core": "/assets/vendor/@popperjs/core/core.index-ceb5b6c0f9e1d3f6c78ef733facfdcda.js", "sortablejs": "/assets/vendor/sortablejs/sortablejs.index-fae068bf1dd93b9616d070d86b7c859d.js", "tom-select": "/assets/vendor/tom-select/tom-select.index-c0036889cf3e94dade1e56c11996b014.js", "tom-select/dist/css/tom-select.bootstrap5.min.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fvendor%2Ftom-select%2Fdist%2Fcss%2Ftom-select.bootstrap5.min-ada7defe0a460fb59edebd9cb32f027a.css%22%7D%29%29", "clipboard": "/assets/vendor/clipboard/clipboard.index-925566f98181665b5a61fea1bcd9033d.js", "asciinema-player": "/assets/vendor/asciinema-player/asciinema-player.index-570112964ad129943315d4774ff2848c.js", "asciinema-player/dist/bundle/asciinema-player.min.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fvendor%2Fasciinema-player%2Fdist%2Fbundle%2Fasciinema-player.min-a05dfa789a7206f64313b61ebd22be96.css%22%7D%29%29", "@symfony/ux-live-component": "/assets/@symfony/ux-live-component/live_controller-b4fdb1f53d5a5f813f85327cceb706b8.js", "bootstrap": "/assets/vendor/bootstrap/bootstrap.index-c0423c99f6075e6b1cef7579b5c00d32.js", "bootstrap/js/src/collapse": "/assets/vendor/bootstrap/js/src/collapse-674fb69f06f8ee1254928307c13a98ee.js", "bootstrap/js/src/tab": "/assets/vendor/bootstrap/js/src/tab-7e2e431aae5d98b88d2f18d7c8e234f6.js", "bootstrap/js/src/dropdown": "/assets/vendor/bootstrap/js/src/dropdown-5c9d4a6d933f30fca054706951f97f80.js", "bootstrap/js/src/popover": "/assets/vendor/bootstrap/js/src/popover-138f0dbb5d2642645c5968a4782d3c67.js", "@symfony/ux-map/abstract-map-controller": "/assets/@symfony/ux-map/abstract_map_controller-eb94e55237a8107b072a686404d36758.js", "@symfony/ux-leaflet-map/map-controller": "/assets/@symfony/ux-leaflet-map/map_controller-975755623ba9069450e62093d97cea8f.js", "leaflet": "/assets/vendor/leaflet/leaflet.index-0fc72e43e04be464c7bda1ae45ac26ac.js", "leaflet/dist/leaflet.min.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fvendor%2Fleaflet%2Fdist%2Fleaflet.min-af732ed3306b383c4b260f42b19ee75f.css%22%7D%29%29", "@hotwired/turbo": "/assets/vendor/@hotwired/turbo/turbo.index-810f44ef1a202a441e4866b7a4c72d11.js", "emoji-mart": "/assets/vendor/emoji-mart/emoji-mart.index-dda5113ca0dd7ec52a0d00ea99c8e945.js", "@symfony/ux-leaflet-map": "/assets/@symfony/ux-leaflet-map/map_controller-975755623ba9069450e62093d97cea8f.js" } } </script> <!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support --> <script async src="https://ga.jspm.io/npm:es-module-shims@1.10.0/dist/es-module-shims.js" data-turbo-track="reload"></script> <link rel="modulepreload" href="/assets/app-8a87453761810fb014e976bf960715d7.js"> <link rel="modulepreload" href="/assets/vendor/bootstrap/js/src/offcanvas-6e548788bdb299ccf15bad01f85a1c4e.js"> <link rel="modulepreload" href="/assets/stimulus-97656ab68e522ab9732b853e32a2116f.js"> <link rel="modulepreload" href="/assets/@symfony/stimulus-bundle/loader-870999a02e9fc147c034d522826ea70d.js"> <link rel="modulepreload" href="/assets/vendor/@hotwired/stimulus/stimulus.index-b5b1d00e42695b8959b4a1e94e3bc92a.js"> <link rel="modulepreload" href="/assets/@symfony/stimulus-bundle/controllers-30ef92e440b067edafb440f89903311e.js"> <link rel="modulepreload" href="/assets/@symfony/ux-live-component/live_controller-b4fdb1f53d5a5f813f85327cceb706b8.js"> <link rel="modulepreload" href="/assets/controllers/eventsmap_controller-dec85c248dc518bcca1ff8c1772842bc.js"> <link rel="modulepreload" href="/assets/search-04960a6f9bd1902ecc44ef024e74ecb9.js"> <link rel="modulepreload" href="/assets/vendor/mousetrap/mousetrap.index-2fcbabba04c2773c43d7b248b7bfcc5e.js"> <link rel="modulepreload" href="/assets/doc-f53df194d5b1babeef5401af8562c6af.js"> <link rel="modulepreload" href="/assets/code-5fce8b30c71ee457fcb7e2630873c57e.js"> <script type="module" data-turbo-track="reload">import 'app';import 'search';import 'doc';</script> <link rel="stylesheet" href="https://connect.symfony.com/css/sln.css"> <script type="text/javascript" defer> document.head.appendChild(Object.assign(document.createElement('script'), { src: 'https://connect.symfony.com/sln.js?customize_url=https%3A%2F%2Fsymfony.com%2Faccount%2Fsln_customiser.js', async: true, })); </script> <link rel="shortcut icon" type="image/svg+xml" href="/favicons/favicon.svg"> <link rel="alternate icon" type="image/png" sizes="180x180" href="/favicons/favicon-180x180.png"> <link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#5bbad5"> <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png"> <link rel="manifest" href="/static/webmanifest.json"> <meta name="msapplication-config" content="/static/browserconfig.xml" /> <meta name="theme-color" content="#ffffff"> <meta name="apple-mobile-web-app-title" content="Symfony"> <meta property="fb:pages" content="211720082183067"> <meta name="twitter:site" content="@symfony"> <meta name="twitter:card" content="summary_large_image" /> <meta property="og:type" content="website"> <meta property="og:title" content="Security Issues (Symfony Docs)"> <meta property="og:image" content="https://symfony.com/images/opengraph/symfony.png"> <meta property="og:image:alt" content="This document explains how Symfony security issues are handled by the Symfony core team (Symfony being the code hosted on the main symfony/symfony Git repository). Reporting a Security Issue If you t…"> <meta property="og:url" content="https://symfony.com/doc/current/contributing/code/security.html"> <meta property="og:description" content="This document explains how Symfony security issues are handled by the Symfony core team (Symfony being the code hosted on the main symfony/symfony Git repository). Reporting a Security Issue If you t…"> <meta name="msapplication-TileColor" content="#262626"> <meta name="application-name" content="Symfony"> <meta name="msapplication-tooltip" content="Official Symfony website"> <meta name="theme-color" content="#262626"> <script async="true" data-browser-key="708cc1e7d4caf1babcf4add8f85ee4bab46c2fc9583f44e11b2bd8fb8a6d87ab" data-sample-rate="0.010000" data-parent-trace-id="237d4a50c4cc751b123c3c1ba6c284ed" data-transaction-name="App\Controller\DocController::docAction" data-collector="https://ingest.blackfire.io" src="https://admin.pipeline.blackfire.io/js/probe.js"></script></head> <body data-turbo="false" class="" data-is-doc-page data-doc-book="symfony" data-doc-page="contributing/code/security"> <a href="#main-content" class="show-on-focus skip-to-content">Skip to content</a> <script> function setSymfonyWebsiteColorScheme () { const selectedColorScheme = localStorage.getItem('colorScheme') || 'sync'; const resolvedColorScheme = 'sync' === selectedColorScheme ? matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : selectedColorScheme; document.body.classList.remove('light-theme', 'dark-theme'); document.body.classList.add('light' === resolvedColorScheme ? 'light-theme' : 'dark-theme'); document.body.setAttribute('data-bs-theme', resolvedColorScheme); localStorage.setItem('colorScheme', selectedColorScheme); document.body.style.colorScheme = resolvedColorScheme; } setSymfonyWebsiteColorScheme(); window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function (e) { setSymfonyWebsiteColorScheme(); }); document.body.classList.add( (navigator.appVersion.indexOf('Win') !== -1) ? 'windows' : (navigator.appVersion.indexOf('Mac') !== -1) ? 'macos' : 'linux' ); </script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","name":"Symfony","url":"https:\/\/symfony.com","potentialAction":{"@type":"SearchAction","target":"https:\/\/symfony.com\/search?q={query}","query-input":"required name=query"}}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/symfony.com","name":"Symfony","logo":"\/images\/logos\/sf-positive.svg","sameAs":["https:\/\/github.com\/symfony","https:\/\/stackoverflow.com\/questions\/tagged\/symfony","https:\/\/twitter.com\/symfony","https:\/\/www.facebook.com\/SymfonyFramework","https:\/\/www.youtube.com\/user\/SensioLabs"]}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Event","eventAttendanceMode":"OfflineEventAttendanceMode","eventStatus":"https:\/\/schema.org\/EventScheduled","name":"SymfonyCon Vienna 2024","image":"\/images\/conferences\/sfcon.svg","organizer":{"@type":"Organization","name":"Symfony","url":"https:\/\/live.symfony.com"},"location":{"@type":"Place","address":{"@type":"PostalAddress","streetAddress":"Austria Center Vienna, Entrance n\u00b02, Bruno-Kreisky-Platz 1, , A-1220 Wien, Austria","addressLocality":"Vienna","addressCountry":"AT"},"geo":{"@type":"GeoCoordinates","latitude":48.235390000000002,"longitude":16.414549999999998}},"url":"https:\/\/live.symfony.com\/2024-vienna-con\/","startDate":"2024-12-05","endDate":"2024-12-06","offers":[{"@type":"Offer","price":399,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2023-12-07T00:00:00+01:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":490,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2024-04-09T00:00:00+02:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":659,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2024-10-17T00:00:00+02:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":759,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2024-11-21T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":919,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2024-12-03T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2024-vienna-con\/registration\/","validFrom":"2024-12-07T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"}]}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Event","eventAttendanceMode":"OnlineEventAttendanceMode","eventStatus":"https:\/\/schema.org\/EventScheduled","name":"Symfony January 2025","image":"\/images\/conferences\/sfcon.svg","organizer":{"@type":"Organization","name":"Symfony","url":"https:\/\/live.symfony.com"},"location":{"@type":"VirtualLocation","url":"https:\/\/live.symfony.com\/2025-online-january\/"},"url":"https:\/\/live.symfony.com\/2025-online-january\/","startDate":"2025-01-16","endDate":"2025-01-17","offers":[{"@type":"Offer","price":79,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-january\/registration\/","validFrom":"2024-06-06T00:00:00+02:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":119,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-january\/registration\/","validFrom":"2024-09-10T00:00:00+02:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-january\/registration\/","validFrom":"2024-11-12T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-january\/registration\/","validFrom":"2025-01-18T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"}]}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Event","eventAttendanceMode":"OfflineEventAttendanceMode","eventStatus":"https:\/\/schema.org\/EventScheduled","name":"SymfonyLive Paris 2025","image":"\/images\/conferences\/sflive.svg","organizer":{"@type":"Organization","name":"Symfony","url":"https:\/\/live.symfony.com"},"location":{"@type":"Place","address":{"@type":"PostalAddress","streetAddress":"17, boulevard Jourdan, 75014 Paris","addressLocality":"Paris","addressCountry":"FR"},"geo":{"@type":"GeoCoordinates","latitude":48.820039999999999,"longitude":2.3388499999999999}},"url":"https:\/\/live.symfony.com\/2025-paris\/","startDate":"2025-03-27","endDate":"2025-03-28","offers":[{"@type":"Offer","price":349,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2024-03-29T15:00:00+01:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":399,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2024-09-26T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":499,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2025-01-23T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":549,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2025-02-27T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":599,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2025-03-26T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-paris\/registration\/","validFrom":"2025-03-30T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"}]}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Event","eventAttendanceMode":"OfflineEventAttendanceMode","eventStatus":"https:\/\/schema.org\/EventScheduled","name":"SymfonyLive Berlin 2025","image":"\/images\/conferences\/sflive.svg","organizer":{"@type":"Organization","name":"Symfony","url":"https:\/\/live.symfony.com"},"location":{"@type":"Place","address":{"@type":"PostalAddress","streetAddress":"CineStar CUBIX, Rathausstrasse 1, 10178 Berlin, Germany","addressLocality":"Berlin","addressCountry":"DE"},"geo":{"@type":"GeoCoordinates","latitude":52.520310000000002,"longitude":13.41194}},"url":"https:\/\/live.symfony.com\/2025-berlin\/","startDate":"2025-04-03","endDate":"2025-04-04","offers":[{"@type":"Offer","price":399,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-berlin\/registration\/","validFrom":"2024-07-09T00:00:00+02:00","availability":"https:\/\/schema.org\/SoldOut"},{"@type":"Offer","price":499,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-berlin\/registration\/","validFrom":"2024-10-08T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":549,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-berlin\/registration\/","validFrom":"2025-01-28T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":599,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-berlin\/registration\/","validFrom":"2025-03-04T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":649,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-berlin\/registration\/","validFrom":"2025-04-01T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"}]}</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Event","eventAttendanceMode":"OnlineEventAttendanceMode","eventStatus":"https:\/\/schema.org\/EventScheduled","name":"Symfony June 2025","image":"\/images\/conferences\/sfcon.svg","organizer":{"@type":"Organization","name":"Symfony","url":"https:\/\/live.symfony.com"},"location":{"@type":"VirtualLocation","url":"https:\/\/live.symfony.com\/2025-online-june\/"},"url":"https:\/\/live.symfony.com\/2025-online-june\/","startDate":"2025-06-12","endDate":"2025-06-13","offers":[{"@type":"Offer","price":79,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-june\/registration\/","validFrom":"2024-10-01T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":119,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-june\/registration\/","validFrom":"2025-02-20T00:00:00+01:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-june\/registration\/","validFrom":"2025-05-08T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"},{"@type":"Offer","price":149,"priceCurrency":"EUR","url":"https:\/\/live.symfony.com\/2025-online-june\/registration\/","validFrom":"2025-06-14T00:00:00+02:00","availability":"https:\/\/schema.org\/InStock"}]}</script> <div id="sln"></div> <header> <div class="ui-page-container ui-page-container-wide"> <nav class="navbar navbar-expand-lg"> <a class="navbar-brand" href="/" aria-label="Symfony"> <span aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="260" height="66" viewBox="0 0 260 66"><circle fill="#1A171B" cx="32.455" cy="32.665" r="32.455"/><path fill="#FFF" d="M46.644 12.219c-3.297.115-6.175 1.932-8.317 4.446-2.372 2.756-3.95 6.025-5.087 9.362-2.034-1.667-3.603-3.825-6.866-4.766-2.522-.724-5.171-.425-7.607 1.39-1.154.862-1.949 2.165-2.327 3.39-.979 3.183 1.029 6.016 1.941 7.033l1.994 2.137c.411.419 1.401 1.512.917 3.079-.523 1.704-2.577 2.807-4.684 2.157-.941-.287-2.293-.988-1.99-1.975.125-.404.414-.706.569-1.055.142-.3.21-.525.253-.657.385-1.257-.141-2.892-1.487-3.307-1.256-.385-2.541-.08-3.039 1.537-.565 1.837.314 5.171 5.023 6.623 5.517 1.695 10.184-1.309 10.846-5.227.417-2.454-.691-4.277-2.721-6.622l-1.654-1.829c-1.002-1.001-1.346-2.707-.309-4.018.875-1.106 2.121-1.578 4.162-1.023 2.979.809 4.307 2.876 6.523 4.543-.915 3.001-1.513 6.013-2.054 8.714l-.33 2.014c-1.584 8.308-2.793 12.87-5.935 15.489-.633.45-1.538 1.124-2.902 1.171-.715.022-.946-.47-.956-.684-.017-.502.406-.732.687-.958.42-.229 1.055-.609 1.012-1.826-.046-1.438-1.237-2.685-2.959-2.628-1.29.044-3.256 1.258-3.182 3.48.077 2.295 2.216 4.015 5.441 3.906 1.724-.059 5.574-.761 9.368-5.271 4.416-5.17 5.651-11.097 6.58-15.435l1.037-5.727c.576.069 1.192.115 1.862.131 5.5.116 8.251-2.733 8.292-4.805.027-1.254-.823-2.488-2.013-2.46-.852.024-1.922.591-2.179 1.769-.251 1.156 1.75 2.199.186 3.212-1.111.719-3.103 1.226-5.908.814l.51-2.819c1.041-5.346 2.325-11.922 7.196-12.082.355-.018 1.654.016 1.684.875.009.287-.062.36-.398 1.017-.342.512-.471.948-.455 1.449.047 1.365 1.085 2.262 2.586 2.208 2.01-.065 2.588-2.022 2.555-3.027-.081-2.361-2.57-3.853-5.865-3.745z"/><path fill="#1A171B" d="M196.782 23.534c7.48 0 12.499 5.407 12.499 12.887 0 7.048-5.116 12.886-12.499 12.886-7.435 0-12.55-5.838-12.55-12.886 0-7.48 5.018-12.887 12.55-12.887zm0 22.109c5.306 0 7.671-4.827 7.671-9.222 0-4.68-2.847-9.217-7.671-9.217-4.877 0-7.724 4.537-7.724 9.217.001 4.394 2.365 9.222 7.724 9.222zM183.61 25.825v-1.713h-6.518v-2.341c0-3.33.483-5.842 4.391-5.842.072 0 .149.005.224.008.008 0 .007-.012.016-.012 1.085.08 1.987-.804 2.048-1.887l.08-1.486c-.915-.146-1.884-.29-3.039-.29-6.709 0-8.255 3.91-8.255 9.896v1.955h-5.795v1.913c.149.99.996 1.752 2.031 1.752.006 0 .009.005.016.005h3.748V48.73h2.5l.006-.001c1.04 0 1.892-.779 2.03-1.779V27.783h4.538a2.052 2.052 0 0 0 1.979-1.958zm-60.435-1.713c-.008 0-.013.006-.024.006-.956 0-1.882.657-2.286 1.545l-6.244 18.82h-.096l-6.106-18.81c-.399-.893-1.329-1.555-2.291-1.555-.011 0-.015-.006-.024-.006h-3.164l8.351 22.977c.291.821.871 2.077.871 2.606 0 .483-1.353 6.08-5.409 6.08-.1 0-.201-.009-.3-.017-1.034-.057-1.815.665-1.989 1.779l-.124 1.57c.82.145 1.645.338 3.092.338 5.984 0 7.769-5.455 9.46-10.185l9.073-25.149h-2.79zm-28.843 5c-3.747-1.917-7.847-3.218-7.918-7.076.012-4.097 3.776-5.172 6.677-5.169.012-.002.024-.002.031-.002 1.26 0 2.268.125 3.251.34.013 0 .011-.016.027-.016 1.039.076 1.911-.737 2.034-1.762l.083-1.488c-1.902-.473-3.889-.712-5.619-.712-6.309.039-10.992 3.213-11.007 9.268.009 5.296 3.578 7.349 7.416 9.207 3.764 1.81 7.888 3.305 7.924 7.674-.023 4.56-4.423 6.241-7.455 6.247-1.773-.006-3.698-.449-5.32-.96-1.017-.168-1.851.729-1.982 1.917l-.138 1.327c2.23.72 4.517 1.348 6.815 1.348h.027c7.065-.051 12.557-2.869 12.578-10.185-.011-5.645-3.604-8.016-7.424-9.958zm68.623 19.617l.006-.001c.98 0 1.796-.687 2.004-1.604V32.947c0-5.358-2.267-9.413-8.546-9.413-2.219 0-5.934 1.257-7.623 4.779-1.306-3.331-4.15-4.779-7-4.779-3.619 0-6.082 1.303-7.816 4.152h-.099v-1.532a2.058 2.058 0 0 0-2.055-2.036c-.008 0-.014-.006-.022-.006h-2.169v24.617h2.456l.006-.001a2.06 2.06 0 0 0 2.059-2.059c0-.03.011-.042.016-.063v-10.28c0-4.585 1.834-9.122 6.467-9.122 3.669 0 4.396 3.811 4.396 6.853V48.73h2.49l.007-.001a2.05 2.05 0 0 0 2.037-1.873v-10.53c0-4.585 1.835-9.122 6.468-9.122 3.667 0 4.393 3.811 4.393 6.853V48.73h2.525zm70.113 0l.008-.001a2.054 2.054 0 0 0 2.049-1.964v-12.66c0-6.611-2.85-10.571-9.222-10.571-3.426 0-6.705 1.691-8.059 4.491h-.097v-1.839c0-.001-.004-.001-.004-.006a2.057 2.057 0 0 0-2.058-2.061c-.011 0-.015-.006-.022-.006h-2.311v24.617h2.493l.007-.001a2.05 2.05 0 0 0 2.038-1.895v-9.495c0-5.984 2.319-10.135 7.482-10.135 3.96.24 5.211 3.038 5.211 8.783v12.742h2.485zm24.428-24.617c-.011 0-.014.006-.026.006-.954 0-1.883.657-2.283 1.545l-6.242 18.82h-.102l-6.104-18.81c-.401-.893-1.331-1.555-2.293-1.555-.007 0-.015-.006-.021-.006h-3.164l8.351 22.977c.291.821.873 2.077.873 2.606 0 .483-1.355 6.08-5.41 6.08-.102 0-.201-.009-.301-.017-1.033-.057-1.815.665-1.99 1.779l-.122 1.57c.82.145 1.645.338 3.091.338 5.984 0 7.772-5.455 9.462-10.185l9.074-25.149h-2.793z"/></svg></span> </a> <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#header-nav-menu" aria-controls="header-nav-menu" aria-expanded="false" aria-label="Toggle navigation"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg> </button> <div class="offcanvas offcanvas-end" tabindex="-1" id="header-nav-menu"> <div class="offcanvas-header justify-content-end"> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close">Close</button> </div> <div class="offcanvas-body align-items-center"> <div id="sensiolabs-highlight-responsive-menu"></div> <ul class="navbar-nav flex-grow-1" role="menubar" aria-label="Menu"> <li role="none" class="nav-item"> <span tabindex="0" class="nav-header" role="menuitem" aria-haspopup="true" aria-expanded="false">About</span> <div class="submenu"> <ul role="menu" aria-label="About"> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M6 13q.687 1 2 1c1.313 0 2-.875 2-1.5c0-1.5-2-1-2-2C8 9.875 8.516 9 9.5 9c2.5 0 1.563 2 5.5 2q1 0 1-1"></path><path d="M9 17q-.143 1 1 1q2.571 0 3-6c.286-4 1.571-6 3-6q.857 0 1 1"></path><path d="M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2a10 10 0 0 1 10 10"></path></g></svg> </span> <a role="menuitem" class="nav-link" href="/what-is-symfony">What is Symfony?</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 7a4 4 0 1 0 8 0a4 4 0 1 0-8 0M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2m1-17.87a4 4 0 0 1 0 7.75M21 21v-2a4 4 0 0 0-3-3.85"></path></svg> </span> <a role="menuitem" class="nav-link" href="/community">Community</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 6h3a1 1 0 0 1 1 1v11a2 2 0 0 1-4 0V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v12a3 3 0 0 0 3 3h11M8 8h4m-4 4h4m-4 4h4"></path></svg> </span> <a role="menuitem" class="nav-link" href="/blog/">News</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 8a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm4 2v.01m4-.01v.01m4-.01v.01m4-.01v.01M6 14v.01M18 14v.01M10 14l4 .01"></path></svg> </span> <a role="menuitem" class="nav-link" href="/doc/current/contributing/index.html">Contributing</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0m9 5v.01"></path><path d="M12 13.5a1.5 1.5 0 0 1 1-1.5a2.6 2.6 0 1 0-3-4"></path></g></svg> </span> <a role="menuitem" class="nav-link" href="/support">Support</a> </li> </ul> </div> </li> <li role="none" class="nav-item"> <span tabindex="0" class="nav-header" role="menuitem" aria-haspopup="true" aria-expanded="false">Documentation</span> <div class="submenu"> <ul role="menu" aria-label="Documentation"> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M5 5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1zm4 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM5 8h4m0 8h4"></path><path d="m13.803 4.56l2.184-.53c.562-.135 1.133.19 1.282.732l3.695 13.418a1.02 1.02 0 0 1-.634 1.219l-.133.041l-2.184.53c-.562.135-1.133-.19-1.282-.732L13.036 5.82a1.02 1.02 0 0 1 .634-1.219zM14 9l4-1m-2 8l3.923-.98"></path></g></svg> </span> <a role="menuitem" class="nav-link" href="/doc/current/index.html">Symfony Docs</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M19 4v16H7a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"></path><path d="M19 16H7a2 2 0 0 0-2 2M9 8h6"></path></g></svg> </span> <a role="menuitem" class="nav-link" href="/book">Symfony Book</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m15 10l4.553-2.276A1 1 0 0 1 21 8.618v6.764a1 1 0 0 1-1.447.894L15 14zM3 8a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg> </span> <a role="menuitem" class="nav-link" href="https://symfonycasts.com">Screencasts</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m12 3l8 4.5v9L12 21l-8-4.5v-9zm0 9l8-4.5M12 12v9m0-9L4 7.5"></path></svg> </span> <a role="menuitem" class="nav-link" href="/bundles">Symfony Bundles</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6.657 18C4.085 18 2 15.993 2 13.517s2.085-4.482 4.657-4.482c.393-1.762 1.794-3.2 3.675-3.773c1.88-.572 3.956-.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486s-1.551 3.487-3.465 3.487H6.657"></path></svg> </span> <a role="menuitem" class="nav-link" href="/doc/cloud/">Symfony Cloud</a> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M22 9L12 5L2 9l10 4zv6"></path><path d="M6 10.6V16a6 3 0 0 0 12 0v-5.4"></path></g></svg> </span> <a role="menuitem" class="nav-link" href="https://sensiolabs.com/training?utm_source=symfony&utm_medium=symfony_submenu&utm_campaign=permanent_referral">Training</a> </li> </ul> </div> </li> <li role="none" class="nav-item menu-services"> <span tabindex="0" class="nav-header" role="menuitem" aria-haspopup="true" aria-expanded="false">Services</span> <div class="submenu"> <ul role="menu" aria-label="Services"> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6.657 18C4.085 18 2 15.993 2 13.517s2.085-4.482 4.657-4.482c.393-1.762 1.794-3.2 3.675-3.773c1.88-.572 3.956-.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486s-1.551 3.487-3.465 3.487H6.657"></path></svg> </span> <span> <a role="menuitem" class="nav-link" href="/cloud/">Platform.sh for Symfony</a> <span class="nav-link-description">Best platform to deploy Symfony apps</span> </span> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M8 5H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.697M18 12V7a2 2 0 0 0-2-2h-2"></path><path d="M8 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2m0 6h4m-4 4h3m3 2.5a2.5 2.5 0 1 0 5 0a2.5 2.5 0 1 0-5 0m4.5 2L21 22"></path></g></svg> </span> <span> <a role="menuitem" class="nav-link" href="https://insight.symfony.com">SymfonyInsight</a> <span class="nav-link-description">Automatic quality checks for your apps</span> </span> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M12 15a3 3 0 1 0 6 0a3 3 0 1 0-6 0"></path><path d="M13 17.5V22l2-1.5l2 1.5v-4.5"></path><path d="M10 19H5a2 2 0 0 1-2-2V7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-1 1.73M6 9h12M6 12h3m-3 3h2"></path></g></svg> </span> <span> <a role="menuitem" class="nav-link" href="https://certification.symfony.com">Symfony Certification</a> <span class="nav-link-description">Prove your knowledge and boost your career</span> </span> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M3 9a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm5-2V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m-4 5v.01"></path><path d="M3 13a20 20 0 0 0 18 0"></path></g></svg> </span> <span> <a role="menuitem" class="nav-link" href="https://sensiolabs.com/?utm_source=symfony&utm_medium=symfony_submenu&utm_campaign=permanent_referral">SensioLabs</a> <span class="nav-link-description">Professional services to help you with Symfony</span> </span> </li> <li role="none" class="nav-link-with-icon"> <span class="nav-link-icon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 12c2-2.96 0-7-1-8c0 3.038-1.773 4.741-3 6c-1.226 1.26-2 3.24-2 5a6 6 0 1 0 12 0c0-1.532-1.056-3.94-2-5c-1.786 3-2.791 3-4 2"></path></svg> </span> <span> <a role="menuitem" class="nav-link" href="https://www.blackfire.io/?utm_source=symfony&utm_medium=symfonycom_footer&utm_campaign=profiler">Blackfire</a> <span class="nav-link-description">Profile and monitor performance of your apps</span> </span> </li> </ul> </div> </li> <li role="none" class="d-lg-none"> <span class="nav-header">Other</span> </li> <li role="none" class="nav-item nav-item-standalone"> <a role="menuitem" class="nav-link" href="/blog/">Blog</a> </li> <li role="none" class="nav-item nav-item-standalone"> <a role="menuitem" class="nav-link" href="/download">Download</a> </li> </ul> <div class="sensiolabs d-none d-lg-block text-center position-relative"> <span class="byline">sponsored by</span> <a target="_blank" class="ui-stretched-link d-inline-block mt-2 mt-md-0" rel="external noopener" href="https://sensiolabs.com/?utm_source=symfony&utm_medium=symfony_sponsoredby&utm_campaign=permanent_referral" title="SensioLabs, PHP services and software solutions for enterprise and community."> <span class="dark-theme d-md-none"> <svg version="1.1" x="0px" y="0px" viewBox="0 0 326.866 51.069" width="81px" height="13px" enable-background="new 0 0 326.866 51.069" space="preserve" class="logo-sensiolabs" fill="currentColor" aria-hidden="true"><style> .logo-sensiolabs path.sensio-word { fill: #000000; } .logo-sensiolabs path.labs-word { fill: #82E83F; } .dark-theme .logo-sensiolabs path.sensio-word { fill: #FFFFFF; } </style><g> <path class="sensio-word" d="M10.459,33.728c0,6.486,5.091,9.012,10.872,9.012c3.784,0,9.563-1.094,9.563-6.073c0-5.26-7.362-6.147-14.586-8.059 c-7.294-1.911-14.656-4.71-14.656-13.861C1.652,4.779,11.147,0,20.022,0c10.253,0,19.679,4.439,19.679,15.702H29.242 c-0.344-5.87-4.54-7.373-9.7-7.373c-3.44,0-7.431,1.434-7.431,5.531c0,3.755,2.338,4.232,14.655,7.374 c3.577,0.887,14.586,3.141,14.586,14.2c0,8.944-7.087,15.635-20.435,15.635c-10.871,0-21.053-5.323-20.916-17.342H10.459z"></path> <path class="sensio-word" d="M51.453,34.488c0.275,6.192,3.302,9.013,8.737,9.013c3.922,0,7.088-2.408,7.707-4.611h8.6 c-2.753,8.395-8.6,11.973-16.65,11.973c-11.215,0-18.165-7.706-18.165-18.713c0-10.666,7.363-18.784,18.165-18.784 c12.109,0,17.957,10.183,17.27,21.123H51.453z M67.347,28.295c-0.895-4.953-3.027-7.568-7.775-7.568 c-6.192,0-7.981,4.816-8.118,7.568H67.347z"></path> <path class="sensio-word" d="M78.026,14.327h9.287v4.956h0.207c2.477-3.991,6.742-5.918,10.871-5.918c10.389,0,13.004,5.847,13.004,14.653v21.88h-9.771 v-20.09c0-5.849-1.72-8.738-6.263-8.738c-5.297,0-7.567,2.958-7.567,10.182v18.646h-9.769V14.327z"></path> <path class="sensio-word" d="M121.47,38.34c0.069,4.267,3.647,5.986,7.5,5.986c2.817,0,6.396-1.101,6.396-4.54c0-2.96-4.059-3.991-11.075-5.505 c-5.642-1.238-11.282-3.233-11.282-9.496c0-9.08,7.842-11.42,15.479-11.42c7.773,0,14.93,2.613,15.685,11.352h-9.289 c-0.272-3.783-3.164-4.814-6.672-4.814c-2.199,0-5.434,0.412-5.434,3.301c0,3.509,5.503,3.99,11.074,5.3 c5.711,1.306,11.284,3.37,11.284,9.974c0,9.359-8.118,12.386-16.235,12.386c-8.256,0-16.307-3.096-16.721-12.522H121.47z"></path> <path class="sensio-word" d="M155.728,8.823h-9.769v-8.05h9.769V8.823z M145.959,14.327h9.769v35.571h-9.769V14.327z"></path> <path class="sensio-word" d="M175.05,13.365c11.214,0,18.438,7.43,18.438,18.783c0,11.283-7.225,18.714-18.438,18.714 c-11.146,0-18.37-7.431-18.37-18.714C156.68,20.795,163.904,13.365,175.05,13.365 M175.05,43.501c6.674,0,8.669-5.711,8.669-11.353 c0-5.712-1.995-11.422-8.669-11.422c-6.604,0-8.601,5.71-8.601,11.422C166.449,37.79,168.445,43.501,175.05,43.501"></path> </g><g> <path class="labs-word" d="M195.349,49.579V1.357h9.817v40.03h19.409v8.191H195.349z"></path> <path class="labs-word" d="M234.742,25.104l-8.457-1.526c0.95-3.404,2.587-5.925,4.909-7.562c2.32-1.636,5.77-2.454,10.347-2.454 c4.157,0,7.252,0.492,9.286,1.476c2.034,0.984,3.467,2.233,4.295,3.748c0.83,1.515,1.244,4.295,1.244,8.341l-0.1,10.879 c0,3.096,0.149,5.378,0.447,6.849c0.299,1.47,0.857,3.046,1.676,4.726h-9.221c-0.243-0.619-0.541-1.536-0.895-2.753 c-0.156-0.552-0.266-0.917-0.332-1.095c-1.592,1.549-3.295,2.709-5.107,3.482c-1.813,0.774-3.748,1.161-5.805,1.161 c-3.626,0-6.483-0.983-8.572-2.951c-2.09-1.968-3.135-4.455-3.135-7.463c0-1.989,0.476-3.764,1.426-5.323 c0.951-1.559,2.283-2.752,3.997-3.581c1.713-0.829,4.185-1.554,7.412-2.173c4.356-0.817,7.374-1.58,9.054-2.288v-0.929 c0-1.791-0.441-3.068-1.326-3.831s-2.554-1.144-5.008-1.144c-1.658,0-2.951,0.326-3.881,0.979 C236.069,22.323,235.317,23.467,234.742,25.104z M247.212,32.665c-1.193,0.397-3.084,0.873-5.671,1.426s-4.278,1.095-5.074,1.625 c-1.216,0.862-1.823,1.957-1.823,3.283c0,1.306,0.485,2.433,1.459,3.383c0.973,0.951,2.211,1.427,3.715,1.427 c1.68,0,3.283-0.553,4.809-1.658c1.127-0.841,1.867-1.868,2.222-3.085c0.243-0.796,0.364-2.31,0.364-4.543V32.665z"></path> <path class="labs-word" d="M260.093,49.579V0.959h9.318V18.47c2.875-3.271,6.279-4.908,10.215-4.908c4.289,0,7.838,1.554,10.646,4.66 c2.808,3.106,4.212,7.567,4.212,13.382c0,6.015-1.432,10.646-4.295,13.896s-6.341,4.875-10.431,4.875 c-2.012,0-3.996-0.503-5.953-1.509s-3.643-2.493-5.058-4.461v5.174H260.093z M269.345,31.205c0,3.648,0.575,6.347,1.725,8.093 c1.614,2.477,3.759,3.715,6.435,3.715c2.056,0,3.808-0.879,5.257-2.637c1.447-1.758,2.172-4.527,2.172-8.309 c0-4.023-0.729-6.926-2.188-8.705c-1.46-1.78-3.328-2.67-5.604-2.67c-2.234,0-4.092,0.868-5.572,2.604 C270.086,25.031,269.345,27.668,269.345,31.205z"></path> <path class="labs-word" d="M293.967,39.53l9.353-1.427c0.398,1.813,1.205,3.19,2.422,4.13c1.215,0.939,2.918,1.409,5.107,1.409 c2.409,0,4.223-0.442,5.438-1.327c0.817-0.618,1.228-1.447,1.228-2.487c0-0.707-0.222-1.293-0.664-1.758 c-0.464-0.441-1.504-0.851-3.117-1.227c-7.518-1.658-12.283-3.173-14.294-4.544c-2.786-1.901-4.179-4.544-4.179-7.927 c0-3.051,1.205-5.615,3.615-7.694c2.409-2.077,6.146-3.117,11.209-3.117c4.82,0,8.402,0.785,10.746,2.354 c2.344,1.57,3.957,3.892,4.842,6.965l-8.789,1.625c-0.376-1.37-1.089-2.421-2.139-3.15c-1.051-0.729-2.549-1.095-4.494-1.095 c-2.454,0-4.212,0.344-5.273,1.028c-0.707,0.486-1.061,1.117-1.061,1.891c0,0.663,0.309,1.227,0.928,1.691 c0.84,0.619,3.742,1.492,8.707,2.62c4.963,1.127,8.429,2.51,10.396,4.146c1.945,1.658,2.918,3.969,2.918,6.932 c0,3.229-1.348,6.003-4.045,8.324c-2.698,2.321-6.689,3.482-11.973,3.482c-4.799,0-8.596-0.973-11.393-2.919 C296.659,45.511,294.829,42.869,293.967,39.53z"></path> </g></svg> </span> <span class="d-none d-md-inline-block"> <svg version="1.1" x="0px" y="0px" viewBox="0 0 326.866 51.069" width="81px" height="13px" enable-background="new 0 0 326.866 51.069" space="preserve" class="logo-sensiolabs" fill="currentColor" aria-hidden="true"><style> .logo-sensiolabs path.sensio-word { fill: #000000; } .logo-sensiolabs path.labs-word { fill: #82E83F; } .dark-theme .logo-sensiolabs path.sensio-word { fill: #FFFFFF; } </style><g> <path class="sensio-word" d="M10.459,33.728c0,6.486,5.091,9.012,10.872,9.012c3.784,0,9.563-1.094,9.563-6.073c0-5.26-7.362-6.147-14.586-8.059 c-7.294-1.911-14.656-4.71-14.656-13.861C1.652,4.779,11.147,0,20.022,0c10.253,0,19.679,4.439,19.679,15.702H29.242 c-0.344-5.87-4.54-7.373-9.7-7.373c-3.44,0-7.431,1.434-7.431,5.531c0,3.755,2.338,4.232,14.655,7.374 c3.577,0.887,14.586,3.141,14.586,14.2c0,8.944-7.087,15.635-20.435,15.635c-10.871,0-21.053-5.323-20.916-17.342H10.459z"></path> <path class="sensio-word" d="M51.453,34.488c0.275,6.192,3.302,9.013,8.737,9.013c3.922,0,7.088-2.408,7.707-4.611h8.6 c-2.753,8.395-8.6,11.973-16.65,11.973c-11.215,0-18.165-7.706-18.165-18.713c0-10.666,7.363-18.784,18.165-18.784 c12.109,0,17.957,10.183,17.27,21.123H51.453z M67.347,28.295c-0.895-4.953-3.027-7.568-7.775-7.568 c-6.192,0-7.981,4.816-8.118,7.568H67.347z"></path> <path class="sensio-word" d="M78.026,14.327h9.287v4.956h0.207c2.477-3.991,6.742-5.918,10.871-5.918c10.389,0,13.004,5.847,13.004,14.653v21.88h-9.771 v-20.09c0-5.849-1.72-8.738-6.263-8.738c-5.297,0-7.567,2.958-7.567,10.182v18.646h-9.769V14.327z"></path> <path class="sensio-word" d="M121.47,38.34c0.069,4.267,3.647,5.986,7.5,5.986c2.817,0,6.396-1.101,6.396-4.54c0-2.96-4.059-3.991-11.075-5.505 c-5.642-1.238-11.282-3.233-11.282-9.496c0-9.08,7.842-11.42,15.479-11.42c7.773,0,14.93,2.613,15.685,11.352h-9.289 c-0.272-3.783-3.164-4.814-6.672-4.814c-2.199,0-5.434,0.412-5.434,3.301c0,3.509,5.503,3.99,11.074,5.3 c5.711,1.306,11.284,3.37,11.284,9.974c0,9.359-8.118,12.386-16.235,12.386c-8.256,0-16.307-3.096-16.721-12.522H121.47z"></path> <path class="sensio-word" d="M155.728,8.823h-9.769v-8.05h9.769V8.823z M145.959,14.327h9.769v35.571h-9.769V14.327z"></path> <path class="sensio-word" d="M175.05,13.365c11.214,0,18.438,7.43,18.438,18.783c0,11.283-7.225,18.714-18.438,18.714 c-11.146,0-18.37-7.431-18.37-18.714C156.68,20.795,163.904,13.365,175.05,13.365 M175.05,43.501c6.674,0,8.669-5.711,8.669-11.353 c0-5.712-1.995-11.422-8.669-11.422c-6.604,0-8.601,5.71-8.601,11.422C166.449,37.79,168.445,43.501,175.05,43.501"></path> </g><g> <path class="labs-word" d="M195.349,49.579V1.357h9.817v40.03h19.409v8.191H195.349z"></path> <path class="labs-word" d="M234.742,25.104l-8.457-1.526c0.95-3.404,2.587-5.925,4.909-7.562c2.32-1.636,5.77-2.454,10.347-2.454 c4.157,0,7.252,0.492,9.286,1.476c2.034,0.984,3.467,2.233,4.295,3.748c0.83,1.515,1.244,4.295,1.244,8.341l-0.1,10.879 c0,3.096,0.149,5.378,0.447,6.849c0.299,1.47,0.857,3.046,1.676,4.726h-9.221c-0.243-0.619-0.541-1.536-0.895-2.753 c-0.156-0.552-0.266-0.917-0.332-1.095c-1.592,1.549-3.295,2.709-5.107,3.482c-1.813,0.774-3.748,1.161-5.805,1.161 c-3.626,0-6.483-0.983-8.572-2.951c-2.09-1.968-3.135-4.455-3.135-7.463c0-1.989,0.476-3.764,1.426-5.323 c0.951-1.559,2.283-2.752,3.997-3.581c1.713-0.829,4.185-1.554,7.412-2.173c4.356-0.817,7.374-1.58,9.054-2.288v-0.929 c0-1.791-0.441-3.068-1.326-3.831s-2.554-1.144-5.008-1.144c-1.658,0-2.951,0.326-3.881,0.979 C236.069,22.323,235.317,23.467,234.742,25.104z M247.212,32.665c-1.193,0.397-3.084,0.873-5.671,1.426s-4.278,1.095-5.074,1.625 c-1.216,0.862-1.823,1.957-1.823,3.283c0,1.306,0.485,2.433,1.459,3.383c0.973,0.951,2.211,1.427,3.715,1.427 c1.68,0,3.283-0.553,4.809-1.658c1.127-0.841,1.867-1.868,2.222-3.085c0.243-0.796,0.364-2.31,0.364-4.543V32.665z"></path> <path class="labs-word" d="M260.093,49.579V0.959h9.318V18.47c2.875-3.271,6.279-4.908,10.215-4.908c4.289,0,7.838,1.554,10.646,4.66 c2.808,3.106,4.212,7.567,4.212,13.382c0,6.015-1.432,10.646-4.295,13.896s-6.341,4.875-10.431,4.875 c-2.012,0-3.996-0.503-5.953-1.509s-3.643-2.493-5.058-4.461v5.174H260.093z M269.345,31.205c0,3.648,0.575,6.347,1.725,8.093 c1.614,2.477,3.759,3.715,6.435,3.715c2.056,0,3.808-0.879,5.257-2.637c1.447-1.758,2.172-4.527,2.172-8.309 c0-4.023-0.729-6.926-2.188-8.705c-1.46-1.78-3.328-2.67-5.604-2.67c-2.234,0-4.092,0.868-5.572,2.604 C270.086,25.031,269.345,27.668,269.345,31.205z"></path> <path class="labs-word" d="M293.967,39.53l9.353-1.427c0.398,1.813,1.205,3.19,2.422,4.13c1.215,0.939,2.918,1.409,5.107,1.409 c2.409,0,4.223-0.442,5.438-1.327c0.817-0.618,1.228-1.447,1.228-2.487c0-0.707-0.222-1.293-0.664-1.758 c-0.464-0.441-1.504-0.851-3.117-1.227c-7.518-1.658-12.283-3.173-14.294-4.544c-2.786-1.901-4.179-4.544-4.179-7.927 c0-3.051,1.205-5.615,3.615-7.694c2.409-2.077,6.146-3.117,11.209-3.117c4.82,0,8.402,0.785,10.746,2.354 c2.344,1.57,3.957,3.892,4.842,6.965l-8.789,1.625c-0.376-1.37-1.089-2.421-2.139-3.15c-1.051-0.729-2.549-1.095-4.494-1.095 c-2.454,0-4.212,0.344-5.273,1.028c-0.707,0.486-1.061,1.117-1.061,1.891c0,0.663,0.309,1.227,0.928,1.691 c0.84,0.619,3.742,1.492,8.707,2.62c4.963,1.127,8.429,2.51,10.396,4.146c1.945,1.658,2.918,3.969,2.918,6.932 c0,3.229-1.348,6.003-4.045,8.324c-2.698,2.321-6.689,3.482-11.973,3.482c-4.799,0-8.596-0.973-11.393-2.919 C296.659,45.511,294.829,42.869,293.967,39.53z"></path> </g></svg> </span> </a> </div> </div> </div> </nav> </div> </header> <aside class="highlight-top-horizontal"> <style> .top-horizontal-highlights { background: #18181B; font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; position: relative; width: 100%; } .top-horizontal-highlights a::after { content: ''; position: absolute; top: 0; left: 0; height: 100%; width: 100%; } .top-horizontal-highlight { align-items: center; display: flex; flex-wrap: nowrap; padding: 12px 0; } a.top-horizontal-highlight-title, a.top-horizontal-highlight-title:hover { color: #ff33ff; font-weight: 600; } .top-horizontal-highlight-data { color: #ffffff; display: none; font-size: 15px; margin-left: 30px; } .truncate-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nowrap-text { white-space: nowrap; } .only-visible-on-small-screens { display: inline-block; } @media (min-width: 768px) { .top-horizontal-highlight-data { display: block; margin-left: 30px; } .only-visible-on-small-screens { display: none; } } .dark-theme .top-horizontal-highlights { background: #ee82ee; } .dark-theme a.top-horizontal-highlight-title, .dark-theme a.top-horizontal-highlight-title:hover { color: #18181B; } .dark-theme .top-horizontal-highlight-data { color: #18181B; } </style> <div class="top-horizontal-highlights"> <div class="ui-page-container"> <div class="top-horizontal-highlight"> <a class="top-horizontal-highlight-title" href="https://symfony.com/blog/black-friday-2024-offers-from-the-symfony-ecosystem"> <span class="nowrap-text">Black Friday 2024 <span class="only-visible-on-small-screens">discounts</span></span> </a> <span class="top-horizontal-highlight-data truncate-text"> 30% discount on all SymfonyInsight yearly Team plans <strong>(offer ends in 6 days)</strong> </span> </div> </div> </div> </aside> <nav class="breadcrumb-nav d-none d-sm-block" aria-label="breadcrumb"> <div class="ui-page-container ui-page-container-wide"> <ol class="breadcrumb ui-text-muted flex-nowrap pt-2"> <li class="breadcrumb-item "> <a href="/" class="ui-link-muted">Home</a> </li> <li class="breadcrumb-item text-truncate"> <a href="/doc/current/index.html" class="ui-link-muted">Documentation</a> </li> <li class="breadcrumb-item text-truncate"> <a href="/doc/current/contributing/index.html" class="ui-link-muted">Contributing</a> </li> <li class="breadcrumb-item text-truncate"> <a href="/doc/current/contributing/code/index.html" class="ui-link-muted">Code</a> </li> <li class="breadcrumb-item text-truncate active" aria-current="page"> Security Issues </li> </ol> </div> </nav> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"\/","name":"Home"}},{"@type":"ListItem","position":2,"item":{"@id":"\/doc\/current\/index.html","name":"Documentation"}},{"@type":"ListItem","position":3,"item":{"@id":"\/doc\/current\/contributing\/index.html","name":"Contributing"}},{"@type":"ListItem","position":4,"item":{"@id":"\/doc\/current\/contributing\/code\/index.html","name":"Code"}},{"@type":"ListItem","position":5,"item":{"@id":"\/doc\/current\/contributing\/code\/security.html","name":"Security Issues"}}]}</script> <main id="main-content" class="ui-page-main-content "> <div class="ui-page-container ui-page-container-wide"> <div class="ui-page-grid-content-left-sidebar-right-sidebar"> <aside class="sidebar sidebar-left"> <div class="ui-sidebar-content-sticky"> <div class="doc-sidebar-search mt-2 mb-3"> <button type="button" class="form-search-input-button d-flex flex-fill align-items-center flex-nowrap w-100 rounded-5 ui-border-primary ui-text-muted ui-text-sm px-2 py-1 ui-hover-outline-link ui-cursor-pointer"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class="me-2"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m18 11l-6-6"></path></svg> Search Symfony Docs </button> </div> <div class="doc-action doc-alternative-selector branch-selector"> <span class="label">Version:</span> <select class="form-select ui-text-sm"> <optgroup label="Maintained Versions"> <option data-url="https://symfony.com/doc/7.3/contributing/code/security.html"> 7.3 (dev) </option> <option data-url="https://symfony.com/doc/7.2/contributing/code/security.html"> 7.2 </option> <option selected data-url="https://symfony.com/doc/current/contributing/code/security.html"> 7.1 (current) </option> <option data-url="https://symfony.com/doc/6.4/contributing/code/security.html"> 6.4 </option> <option data-url="https://symfony.com/doc/5.x/contributing/code/security.html"> 5.x </option> </optgroup> <optgroup label="Unmaintained Versions"> <option data-url="https://symfony.com/doc/7.0/contributing/code/security.html"> 7.0 </option> <option data-url="https://symfony.com/doc/6.3/contributing/code/security.html"> 6.3 </option> <option data-url="https://symfony.com/doc/6.2/contributing/code/security.html"> 6.2 </option> <option data-url="https://symfony.com/doc/6.1/contributing/code/security.html"> 6.1 </option> <option data-url="https://symfony.com/doc/6.0/contributing/code/security.html"> 6.0 </option> <option data-url="https://symfony.com/doc/4.x/contributing/code/security.html"> 4.x </option> <option data-url="https://symfony.com/doc/3.x/contributing/code/security.html"> 3.x </option> <option data-url="https://symfony.com/doc/2.x/contributing/code/security.html"> 2.x </option> </optgroup> </select> </div> <div class="doc-sidebar-menu"> <div class="toctree-wrapper toctree-programmatic toctree-size-lg"> <p class="toctree-title">Table of Contents</p> <ul class="toctree toctree-level-1 toctree-length-6"> <li> <a href="#reporting-a-security-issue">Reporting a Security Issue</a> </li> <li> <a href="#security-bug-bounties">Security Bug Bounties</a> </li> <li> <a href="#resolving-process">Resolving Process</a> </li> <li> <a href="#collaborating-with-downstream-open-source-projects">Collaborating with Downstream Open-Source Projects</a> </li> <li> <a href="#issue-severity">Issue Severity</a> <ul class="toctree toctree-level-2 toctree-length-5"> <li> <a href="#attack-complexity">Attack Complexity</a> </li> <li> <a href="#impact">Impact</a> </li> <li> <a href="#affected-projects">Affected Projects</a> </li> <li> <a href="#score-totals">Score Totals</a> </li> <li> <a href="#severity-levels">Severity levels</a> </li> </ul> </li> <li> <a href="#security-advisories">Security Advisories</a> </li> </ul> </div> </div> </div> </aside> <article class="content" lang="en"> <div class="ui-heading"> <h1 id="security-issues" class="ui-heading-title"> Security Issues </h1> </div> <a class="doc-action content-edit ui-link-muted mb-2" href="https://github.com/symfony/symfony-docs/edit/7.1/contributing/code/security.rst"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" height="18" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z" /> </svg> Edit this page </a> <div class="ui-prose"> <div class="section"> <p>This document explains how Symfony security issues are handled by the Symfony core team (Symfony being the code hosted on the main <code translate="no" class="notranslate">symfony/symfony</code> <a href="https://github.com/symfony/symfony" class="reference external" rel="external noopener noreferrer" target="_blank">Git repository</a>).</p> <div class="section"> <h2 id="reporting-a-security-issue"><a class="headerlink" href="#reporting-a-security-issue" title="Permalink to this headline">Reporting a Security Issue</a></h2> <p>If you think that you have found a security issue in Symfony, don't use the bug tracker and don't publish it publicly. Instead, all security issues must be sent to <strong>security [at] symfony.com</strong>. Emails sent to this address are forwarded to the Symfony core team private mailing-list.</p> <p>The following issues are not considered security issues and should be handled as regular bug fixes (if you have any doubts, don't hesitate to send us an email for confirmation):</p> <ul> <li>Any security issues found in debug tools that must never be enabled in production (including the web profiler or anything enabled when <code translate="no" class="notranslate">APP_DEBUG</code> is set to <code translate="no" class="notranslate">true</code> or <code translate="no" class="notranslate">APP_ENV</code> set to anything but <code translate="no" class="notranslate">prod</code>);</li> <li>Any security issues found in classes provided to help for testing that should never be used in production (like for instance mock classes that contain <code translate="no" class="notranslate">Mock</code> in their name or classes in the <code translate="no" class="notranslate">Test</code> namespace);</li> <li>Any fix that can be classified as <strong>security hardening</strong> like route enumeration, login throttling bypasses, denial of service attacks, timing attacks, or lack of <code translate="no" class="notranslate">SensitiveParameter</code> attributes.</li> </ul> <p>In any case, the core team has the final decision on which issues are considered security vulnerabilities.</p> </div> <div class="section"> <h2 id="security-bug-bounties"><a class="headerlink" href="#security-bug-bounties" title="Permalink to this headline">Security Bug Bounties</a></h2> <p>Symfony is an Open-Source project where most of the work is done by volunteers. We appreciate that developers are trying to find security issues in Symfony and report them responsibly, but we are currently unable to pay bug bounties.</p> </div> <div class="section"> <h2 id="resolving-process"><a class="headerlink" href="#resolving-process" title="Permalink to this headline">Resolving Process</a></h2> <p>For each report, we first try to confirm the vulnerability. When it is confirmed, the core team works on a solution following these steps:</p> <ol class="arabic"> <li>Send an acknowledgment to the reporter;</li> <li>Work on a patch;</li> <li>Get a CVE identifier from <a href="https://cveform.mitre.org/" class="reference external" rel="external noopener noreferrer" target="_blank">mitre.org</a>;</li> <li><p>Write a security announcement for the official Symfony <a href="https://symfony.com/blog/" class="reference external">blog</a> about the vulnerability. This post should contain the following information:</p> <ul> <li>a title that always include the "Security release" string;</li> <li>a description of the vulnerability;</li> <li>the affected versions;</li> <li>the possible exploits;</li> <li>how to patch/upgrade/workaround affected applications;</li> <li>the CVE identifier;</li> <li>credits.</li> </ul></li> <li>Send the patch and the announcement to the reporter for review;</li> <li>Apply the patch to all maintained versions of Symfony;</li> <li>Package new versions for all affected versions;</li> <li>Publish the post on the official Symfony <a href="https://symfony.com/blog/" class="reference external">blog</a> (it must also be added to the "`Security Advisories`_" category);</li> <li>Update the public <a href="https://github.com/FriendsOfPHP/security-advisories" class="reference external" rel="external noopener noreferrer" target="_blank">security advisories database</a> maintained by the FriendsOfPHP organization and which is used by <a href="../../setup.html#security-checker" class="reference internal">the check:security command</a>.</li> </ol> <div class="admonition admonition-note "> <p class="admonition-title"> <svg fill="none" width="24" height="24" viewbox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span>Note</span> </p><p>Releases that include security issues should not be done on Saturday or Sunday, except if the vulnerability has been publicly posted.</p> </div> <div class="admonition admonition-note "> <p class="admonition-title"> <svg fill="none" width="24" height="24" viewbox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span>Note</span> </p><p>While we are working on a patch, please do not reveal the issue publicly.</p> </div> <div class="admonition admonition-note "> <p class="admonition-title"> <svg fill="none" width="24" height="24" viewbox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path></svg> <span>Note</span> </p><p>The resolution takes anywhere between a couple of days to a month depending on its complexity and the coordination with the downstream projects (see next paragraph).</p> </div> </div> <div class="section"> <h2 id="collaborating-with-downstream-open-source-projects"><a class="headerlink" href="#collaborating-with-downstream-open-source-projects" title="Permalink to this headline">Collaborating with Downstream Open-Source Projects</a></h2> <p>As Symfony is used by many large Open-Source projects, we standardized the way the Symfony security team collaborates on security issues with downstream projects. The process works as follows:</p> <ol class="arabic"> <li>After the Symfony security team has acknowledged a security issue, it immediately sends an email to the downstream project security teams to inform them of the issue;</li> <li>The Symfony security team creates a private Git repository to ease the collaboration on the issue and access to this repository is given to the Symfony security team, to the Symfony contributors that are impacted by the issue, and to one representative of each downstream projects;</li> <li>All people with access to the private repository work on a solution to solve the issue via pull requests, code reviews, and comments;</li> <li>Once the fix is found, all involved projects collaborate to find the best date for a joint release (there is no guarantee that all releases will be at the same time but we will try hard to make them at about the same time). When the issue is not known to be exploited in the wild, a period of two weeks is considered a reasonable amount of time.</li> </ol> <p>The list of downstream projects participating in this process is kept as small as possible in order to better manage the flow of confidential information prior to disclosure. As such, projects are included at the sole discretion of the Symfony security team.</p> <p>As of today, the following projects have validated this process and are part of the downstream projects included in this process:</p> <ul> <li>Drupal (releases typically happen on Wednesdays)</li> <li>eZPublish</li> </ul> </div> <div class="section"> <h2 id="issue-severity"><a class="headerlink" href="#issue-severity" title="Permalink to this headline">Issue Severity</a></h2> <p>In order to determine the severity of a security issue we take into account the complexity of any potential attack, the impact of the vulnerability and also how many projects it is likely to affect. This score out of 15 is then converted into a level of: Low, Medium, High, Critical, or Exceptional.</p> <div class="section"> <h3 id="attack-complexity"><a class="headerlink" href="#attack-complexity" title="Permalink to this headline">Attack Complexity</a></h3> <p><em>Score of between 1 and 5 depending on how complex it is to exploit the vulnerability</em></p> <ul> <li>4 - 5 Basic: attacker must follow a set of simple steps</li> <li>2 - 3 Complex: attacker must follow non-intuitive steps with a high level of dependencies</li> <li>1 - 2 High: A successful attack depends on conditions beyond the attacker's control. That is, a successful attack cannot be accomplished at will, but requires the attacker to invest in some measurable amount of effort in preparation or execution against the vulnerable component before a successful attack can be expected.</li> </ul> </div> <div class="section"> <h3 id="impact"><a class="headerlink" href="#impact" title="Permalink to this headline">Impact</a></h3> <p><em>Scores from the following areas are added together to produce a score. The score for Impact is capped at 6. Each area is scored between 0 and 4.</em></p> <ul> <li>Integrity: Does this vulnerability cause non-public data to be accessible? If so, does the attacker have control over the data disclosed? (0-4)</li> <li>Disclosure: Can this exploit allow system data (or data handled by the system) to be compromised? If so, does the attacker have control over modification? (0-4)</li> <li>Code Execution: Does the vulnerability allow arbitrary code to be executed on an end-users system, or the server that it runs on? (0-4)</li> <li>Availability: Is the availability of a service or application affected? Is it reduced availability or total loss of availability of a service / application? Availability includes networked services (e.g. databases) or resources such as consumption of network bandwidth, processor cycles, or disk space. (0-4)</li> </ul> </div> <div class="section"> <h3 id="affected-projects"><a class="headerlink" href="#affected-projects" title="Permalink to this headline">Affected Projects</a></h3> <p><em>Scores from the following areas are added together to produce a score. The score for Affected Projects is capped at 4.</em></p> <ul> <li>Will it affect some or all using a component? (1-2)</li> <li>Is the usage of the component that would cause such a thing already considered bad practice? (0-1)</li> <li>How common/popular is the component (e.g. Console vs HttpFoundation vs Lock)? (0-2)</li> <li>Are a number of well-known open source projects using Symfony affected that requires coordinated releases? (0-1)</li> </ul> </div> <div class="section"> <h3 id="score-totals"><a class="headerlink" href="#score-totals" title="Permalink to this headline">Score Totals</a></h3> <ul> <li>Attack Complexity: 1 - 5</li> <li>Impact: 1 - 6</li> <li>Affected Projects: 1 - 4</li> </ul> </div> <div class="section"> <h3 id="severity-levels"><a class="headerlink" href="#severity-levels" title="Permalink to this headline">Severity levels</a></h3> <ul> <li>Low: 1 - 5</li> <li>Medium: 6 - 10</li> <li>High: 11 - 12</li> <li>Critical: 13 - 14</li> <li>Exceptional: 15</li> </ul> </div> </div> <div class="section"> <h2 id="security-advisories"><a class="headerlink" href="#security-advisories" title="Permalink to this headline">Security Advisories</a></h2> <div class="admonition admonition-tip "> <p class="admonition-title"> <svg fill="none" width="24" height="24" viewbox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path></svg> <span>Tip</span> </p><p>You can check your Symfony application for known security vulnerabilities using <a href="../../setup.html#security-checker" class="reference internal">the check:security command</a>.</p> </div> <p>Check the <a href="https://symfony.com/blog/category/security-advisories" class="reference external">Security Advisories</a> blog category for a list of all security vulnerabilities that were fixed in Symfony releases, starting from Symfony 1.0.0.</p> </div> </div> </div> <div class="ui-text-sm ui-text-muted mt-4"> This work, including the code samples, is licensed under a <a class="ui-link-muted" rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons BY-SA 3.0</a> license. </div> <div id="doc-mobile-shortcuts-bar"> <div> <details class="toc"> <summary> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 6h11M9 12h11M9 18h11M5 6v.01M5 12v.01M5 18v.01"></path></svg> TOC </summary> <ul class="toc-contents toctree is-empty"></ul> </details> </div> <div> <button type="button" class="form-search-input-button d-flex flex-fill align-items-center flex-nowrap w-100 shadow-none"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m18 11l-6-6"></path></svg> Search </button> </div> <div> <details class="version"> <summary> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 7a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-6a2 2 0 0 1-2-2zM7 7v10M4 8v8"></path></svg> Version </summary> <div class="version-contents is-empty"></div> </details> </div> </div> </article> <aside class="sidebar sidebar-right"> <div class="ui-sidebar-content-sticky"> <div class="mb-3 px-1"> <p class="ui-text-sm text-center mb-1"> <strong>Symfony 7.1</strong> is <a href="/backers">backed</a> by </p> <div class="doc-backer doc-backer-release"> <div class="backer_logo"><a class="link stretched-link" href="http://getrector.com/" target="_blank" rel="noopener"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 189.3 46.4" class="backer-logo-rector"><style> .dark-theme .backer-logo-rector path.logo-rector-word { fill: #fff; } </style><linearGradient id="a"><stop offset="0" stop-color="#d08a70"/><stop offset="1" stop-color="#955848"/></linearGradient><radialGradient xlink:href="#a" id="h" cx="0" cy="0" r="1" gradientTransform="matrix(56.96474 0 0 -76.9024 469 256)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#a" id="i" cx="0" cy="0" r="1" gradientTransform="matrix(69.1537 0 0 -107.18825 468.333 88)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient id="j" cx="0" cy="0" r="1" gradientTransform="matrix(12.66626 0 0 -12.66626 445.667 148.34)" gradientUnits="userSpaceOnUse" spreadMethod="pad"><stop offset="0" stop-color="#f9ea39"/><stop offset="1" stop-color="#945515"/></radialGradient><linearGradient id="b"><stop offset="0" stop-color="#d08a70"/><stop offset="1" stop-color="#bf3818"/></linearGradient><radialGradient xlink:href="#b" id="l" cx="0" cy="0" r="1" gradientTransform="matrix(0 -17.81527 -35.63054 0 98.833 7.666)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="m" cx="0" cy="0" r="1" gradientTransform="matrix(0 -16.6966 -33.3932 0 151.667 7.666)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="n" cx="0" cy="0" r="1" gradientTransform="matrix(0 -11.70201 -23.40402 0 89.501 30.006)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="o" cx="0" cy="0" r="1" gradientTransform="matrix(0 -6.8836 -13.7672 0 80.834 52.172)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="q" cx="0" cy="0" r="1" gradientTransform="matrix(0 -11.9638 -23.9276 0 236.417 7.666)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="r" cx="0" cy="0" r="1" gradientTransform="matrix(0 -14.05142 -28.10284 0 197.667 7.666)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="s" cx="0" cy="0" r="1" gradientTransform="matrix(0 -17.81527 -35.63054 0 134.667 30.34)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="t" cx="0" cy="0" r="1" gradientTransform="matrix(0 -16.52167 -33.04334 0 114.071 52.34)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="u" cx="0" cy="0" r="1" gradientTransform="matrix(0 -11.29369 -22.98834 0 88.917 72.174)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="v" cx="0" cy="0" r="1" gradientTransform="matrix(0 -9.69276 -19.947 0 86.506 92.34)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><clipPath id="c"><path d="M0 1052h1041V0H0z"/></clipPath><clipPath id="e"><path d="M0 1052h1041V0H0z"/></clipPath><clipPath id="g"><path d="M0 1052h1041V0H0z"/></clipPath><clipPath id="k"><path d="M0 1052h1041V0H0z"/></clipPath><clipPath id="p"><path d="M0 1052h1041V0H0z"/></clipPath><clipPath id="w"><path d="M0 1052h1041V0H0z"/></clipPath><mask id="d" width="1" height="1" x="0" y="0" maskUnits="userSpaceOnUse"><image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAADbCAAAAAD8Vhi/AAAAAXNCSVQI5gpbmQAABJhJREFUaIHtm9uS2zgOhvEDJHWw3Yck+wD7/q+W6XZs60QSwF44k+3MtLpr53KLX5VvJPErAIYoXEj4t5lv21LoHwMQEZH/c0Oj0Wg0Go1Go9FoNBqNRqPRaDQajUaj0Wg0Go1Go9FoNBqNRqPRaPx/wsQ7Z8Lni8FkAAAntnde2cZn6wl8v4qhRE5OpP+bQgAQmEBwclKYk/8ey4cKZgbAxMx0T6ISFXJXf/MS+ge1EGIWMJgFAQQz8lh/xkL6y7EfBYQCc2DhyCIMruRatVKpFdX8V0X2ogAzmBNSkJREJIDNtWjdKgtrUHP7RMEQiMQQ05C6jkMAyHKxbVtz4WyobOUjBQAWhBSHvh+7vku9MJFuZdvWZVlYMtyJbV8BIQ4IqRsO43E8DkPfcyCrZVvn6xxjXDhTQaju+4lARFJ3OB2ODw+n4zh0Qcjrti63wzVNgRxEWpnqvoIRUnc4PpyeH58eTqe+i0JW8zrfLufxNYDYlUxUdEfBAglxOJwev3z5+vx4OvZdYHjN23w9DL0ATmrZ3HW3FiQxdsN4fPr67duXx9PYJwGolryMXRIiqqpuqqxs7yuEJYRhPD4+P//r29PjcUiBATfNfRcjyLSUXDcRB3YUxEFiPx6fnr8+Pz89jF0AE9w9psjslvOyLmv0Cjb4+4kEkZT64+nh8fHh4ZASA0TkzgB5ycsyLdNaKjP7Ti2EOKQuDcfT6XQcusiMe4kswTVv83Tp+m5hqSDWndaSmOIwDuNh6KMI/rwZ2YJ14zKOfdenKMLOjp0NkUMIXdenrovxvwYiQELquq7vQgAzGLSzpzIzJLCkEN4KiAAWSTGmKMIEwMDvK4B7ewnzX68AM7EIM1iciMh2EoGZE9zx969s3O8/un+B4zuJuMLNVGutZr+fMndTVf15fLcWruY1l1Jy0d+2a3fXkreSS9Vancjd31WYudZStmXdcq5vJO5Wy7Zty5Jrra5Ge63l5prLOq/TvPSRQbh3J5nXsq7TPC3Lurm6qe/dI6S15nW+Hq5DDEyJAZCTW93m6Xq7TnPeSi7m5k7ynkAYBIkcUxC5ryZzMy15uf14/f7Hy+uPy7zUWn1XAefAHIQFANzNTauWbZ2u55c/Xr6fX8+3daumaju1UIhmTlOM4qRlPfQpEFxznqcfr99fzufLtBVTJd8tJ1XUuoDhpusyj2MXwFbzNt/O55fXl5frsm7V1AHfKaehAORw17Iut8PYBYHVbZ1vl8v5/HqZt1yqqu9GYWCqALGr1nW+HLuUAt0V0+1yuc7LmmvR+5TwfhRemUDuppqnqR/6FIVM87rO83xd1jnnrOb3Jt9LBK7m5rWs/dx1XRQhU83rtmzTtpVSVJU+eCASkZFzBWqp29KnEIKQVa1bziXnejf87Pvd+UIgTBKihJACiwiZei21Fqu1uJvpZwqCMLFIEBZhFocSqVqtZmqu/mu++GjWYhaCsDAEBCJ3dTM1c3s7sX00dxrByWH05/5oRm5m7r/NjR8PjRCi+3KwE5mzm7sZ3m5Dn82dRAwQyMXp/ic6/WUE/lxBBGIyAu6Ov+3H/wG5LNpDfU+nuAAAAABJRU5ErkJggg==" width="1" height="1" image-rendering="optimizeSpeed" preserveAspectRatio="none"/></mask><mask id="f" width="1" height="1" x="0" y="0" maskUnits="userSpaceOnUse"><image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAADbCAAAAAD8Vhi/AAAAAXNCSVQI5gpbmQAABJhJREFUaIHtm9uS2zgOhvEDJHWw3Yck+wD7/q+W6XZs60QSwF44k+3MtLpr53KLX5VvJPErAIYoXEj4t5lv21LoHwMQEZH/c0Oj0Wg0Go1Go9FoNBqNRqPRaDQajUaj0Wg0Go1Go9FoNBqNRqPRaPx/wsQ7Z8Lni8FkAAAntnde2cZn6wl8v4qhRE5OpP+bQgAQmEBwclKYk/8ey4cKZgbAxMx0T6ISFXJXf/MS+ge1EGIWMJgFAQQz8lh/xkL6y7EfBYQCc2DhyCIMruRatVKpFdX8V0X2ogAzmBNSkJREJIDNtWjdKgtrUHP7RMEQiMQQ05C6jkMAyHKxbVtz4WyobOUjBQAWhBSHvh+7vku9MJFuZdvWZVlYMtyJbV8BIQ4IqRsO43E8DkPfcyCrZVvn6xxjXDhTQaju+4lARFJ3OB2ODw+n4zh0Qcjrti63wzVNgRxEWpnqvoIRUnc4PpyeH58eTqe+i0JW8zrfLufxNYDYlUxUdEfBAglxOJwev3z5+vx4OvZdYHjN23w9DL0ATmrZ3HW3FiQxdsN4fPr67duXx9PYJwGolryMXRIiqqpuqqxs7yuEJYRhPD4+P//r29PjcUiBATfNfRcjyLSUXDcRB3YUxEFiPx6fnr8+Pz89jF0AE9w9psjslvOyLmv0Cjb4+4kEkZT64+nh8fHh4ZASA0TkzgB5ycsyLdNaKjP7Ti2EOKQuDcfT6XQcusiMe4kswTVv83Tp+m5hqSDWndaSmOIwDuNh6KMI/rwZ2YJ14zKOfdenKMLOjp0NkUMIXdenrovxvwYiQELquq7vQgAzGLSzpzIzJLCkEN4KiAAWSTGmKMIEwMDvK4B7ewnzX68AM7EIM1iciMh2EoGZE9zx969s3O8/un+B4zuJuMLNVGutZr+fMndTVf15fLcWruY1l1Jy0d+2a3fXkreSS9Vancjd31WYudZStmXdcq5vJO5Wy7Zty5Jrra5Ge63l5prLOq/TvPSRQbh3J5nXsq7TPC3Lurm6qe/dI6S15nW+Hq5DDEyJAZCTW93m6Xq7TnPeSi7m5k7ynkAYBIkcUxC5ryZzMy15uf14/f7Hy+uPy7zUWn1XAefAHIQFANzNTauWbZ2u55c/Xr6fX8+3daumaju1UIhmTlOM4qRlPfQpEFxznqcfr99fzufLtBVTJd8tJ1XUuoDhpusyj2MXwFbzNt/O55fXl5frsm7V1AHfKaehAORw17Iut8PYBYHVbZ1vl8v5/HqZt1yqqu9GYWCqALGr1nW+HLuUAt0V0+1yuc7LmmvR+5TwfhRemUDuppqnqR/6FIVM87rO83xd1jnnrOb3Jt9LBK7m5rWs/dx1XRQhU83rtmzTtpVSVJU+eCASkZFzBWqp29KnEIKQVa1bziXnejf87Pvd+UIgTBKihJACiwiZei21Fqu1uJvpZwqCMLFIEBZhFocSqVqtZmqu/mu++GjWYhaCsDAEBCJ3dTM1c3s7sX00dxrByWH05/5oRm5m7r/NjR8PjRCi+3KwE5mzm7sZ3m5Dn82dRAwQyMXp/ic6/WUE/lxBBGIyAu6Ov+3H/wG5LNpDfU+nuAAAAABJRU5ErkJggg==" width="1" height="1" image-rendering="optimizeSpeed" preserveAspectRatio="none"/></mask><mask id="x" width="1" height="1" x="0" y="0" maskUnits="userSpaceOnUse"><image xlink:href="data:image/png;base64,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" width="1" height="1" image-rendering="optimizeSpeed" preserveAspectRatio="none"/></mask><path class="logo-rector-word" d="M18 22.7q0 5.3-4.2 6.8l5.6 8h-6.1l-5-7.1H5v7H0v-22h8.4q5.2 0 7.4 1.7 2.2 1.8 2.2 5.7zM8.6 26q2.5 0 3.4-.8 1-.8 1-2.6t-1-2.5q-1-.7-3.3-.7H5V26zM39 15.3v4.4H28v4.6h10v4.2H28v4.6h11.4v4.4H23.1V15.3zM54 33q3.6 0 5.9-2.9l3.2 3.3q-3.8 4.2-9 4.2-5 0-8.4-3.2-3.3-3.2-3.3-8.2 0-5 3.4-8.2 3.4-3.3 8.3-3.3 5.4 0 9.1 4.1l-3 3.5q-2.4-2.9-6-2.9-2.7 0-4.7 1.9-2 1.8-2 4.9 0 3 1.9 5 2 1.8 4.6 1.8m22.5-13.5v17.9h-5v-18h-6.2v-4.2h17.5v4.3zm26.2 6.7q0-3-1.9-5.1-1.9-2.1-4.7-2.1-2.7 0-4.6 2.1-2 2-2 5t2 5.1q1.9 2 4.6 2 2.8 0 4.7-2 2-2 2-5m1.6 8.1q-3.3 3.3-8.3 3.3-4.9 0-8.2-3.3-3.4-3.3-3.4-8.2 0-4.8 3.4-8.1 3.3-3.3 8.2-3.3 5 0 8.3 3.3 3.4 3.3 3.4 8.1 0 5-3.4 8.2M130 22.7q0 5.3-4.2 6.8l5.6 8h-6.1l-5-7.1H117v7h-5v-22h8.5q5.2 0 7.4 1.7 2.2 1.8 2.2 5.7zm-9.4 3.4q2.5 0 3.4-.8 1-.8 1-2.6t-1-2.5q-1-.7-3.3-.7h-3.8v6.6z"/><path fill="#74c079" d="m166.2 31.7 4.4 14.9h14.9v-34l-19.3-11z"/><path fill="#7c4c40" d="M160.9 31.2v15.4h5.4V31.2z"/><g clip-path="url(#c)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#e3e3e3" d="M410.6 1.6c-.9 2.9-.6 4.4-.3 7.4.4 2.8.7 5-.9 7-2.1 2.8-3.2 2.2-1.6 5.6.7 1.6 1.1 1.4 1.3 3.1 0 1.2-.3 2.5-.4 3.6-.3 2.5-.7 5.4-.4 8 .8 5.7 3.5 9 1.3 15-2.1 5.8 0 10.6-.3 16.6-8 2.7-1.4 10.8-1.3 15.8 0 3.4-1.4 6-.4 9.6.7 2.7 2.1 6.7 4 8.4.4 2.3-1.5 4.2-1.6 6.6 0 2.6.5 5.5 2.2 7.4-1.6.8-3 3.6-3.3 5.2-.6 3 1.2 3.8 1.7 6 1 4.8-.9 9-.6 13.8.2 2.6 1.6 3.7 1 6.3-.5 2.4-2.5 3.7-2 6.3.4 2.3 3.1 3 3.7 4.7.8 2.3-1.5 4.2-2 6.3-.6 2-.2 3.9.6 5.8.5 1.3 3.2 1.8.4 3-.8 2.8 0 4.3 2 6.2-2.5 3.5-3.2 7-4 11-.7 3-2.5 6.6-2 9.7.4 1.9 1.5 3 1.6 5 .1 1.7-.9 3.2-1.2 4.7-1 4.4.9 4.6 2.5 8 1.5 3.1-1 5-1.9 7.7-.8 2.7.3 5.4 0 8.3-.3 2.6-2.2 4.5-1.1 7 .8 2 3.6 3 4 5 .6 1.9-1 4.9-1.6 6.6-1 3.1-.9 4.5 0 7.7 1.2 5.2-.9 10.6-.7 16.3.2 6 1.7 10.4 0 16-1.7 5.8 3.8 8.2 2.7 14-.5 2.6-1.9 4.7-2.3 7-.6 2.7.2 5.8-.4 8.3-1 4.6.2 11.3-1.7 15.7l-.6.3c1 1.5 4.4 4.3 6.3 4.3 2.6-2.9 8.3-3.3 12-2 2.4.8 3.5 3.5 6 3.7 1.9.1 3.8-1.6 5.3-2.3 7-3.4 14.4.2 21.4.7 3.2.2 6.5.2 9.7 0 1.3 0 2.7 0 4-.4.4-.2 1.7-1.9 2.5-2 2.2-.4 2 .8 3.8 1.5 1.8.7 2 .6 4 .6 3 0 6.2-.3 9.3 0 2.9.2 5.7 1 8.7.6 2.7-.3 5-1.5 7.7-1.6 4.8-.3 8.8 2.7 13.3 4v667.5L73.5 757.4 75 0h336.3l-.7 1.6"/></g><image xlink:href="data:image/png;base64,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" width="1" height="1" image-rendering="optimizeSpeed" mask="url(#d)" preserveAspectRatio="none" transform="matrix(2.92153 0 0 9.69418 161.273 31.235)"/><g clip-path="url(#e)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#b72222" fill-rule="evenodd" d="M305 1013V912c-4.6-1.8-9.5-3-13.6-5.7-4.3-2.6-7.7-6.6-11.5-10-3-2.5-5.4-6-8.8-7.6-15.3-7.3-31-13.8-46.2-21.2-7-3.4-13.5-8.3-20.3-12.4l-20.4-12.6v80.2c0 3.2-.7 6.5.1 9.5.7 2.7 2.5 5.9 4.7 7.1 1.4.8 4.7-1.6 6.9-3 1-.5 1.3-2.1 1.9-3.3l2.2.5c2.4 4.7 4.5 9.6 7.4 14 2 3.1 4.7 6.7 8 8 2.8 1.2 4.8 2.2 4.7 5.1-.3 6.5 5.1 10.1 7 15.5.1.6 1.2 1.4 1.8 1.3 4.1-.2 3.5 2.3 3.9 5.2.4 3.2 2.3 6.3 3.6 9.4 1 2.4 2.5 4.6 3.4 7 3.5 9.4 5.4 14.4 16.3 14 16.3-.6 32.6 0 48.9 0"/><path fill="#952e2e" d="m217.4 894 2 2.3c0 .2.2.3.3.4a9 9 0 0 1-2.3-2.7m17 54.3c1.6-2.3 5.7-5 5.9-7.6-1.8-.2-3.2 1.3-4.7 1.9-1.7.6-3 .7-5 .7-3.4 0-7.7.4-10.5 2.4 1-.3 1.2.3 1.7.5 1.3 2.5 1.4 4 1.6 7a19 19 0 0 1 5 2.8c2.7-.9 4.2-5.2 6-7.7m15 42.4c4.8 7.1 7.3.6 11.6-2.4 4.4-3 11.5-1 14.6 3-2.7.4-6-2.2-9-2-2.5.2-3 1.4-4.3 3.4-1.5 2.5-4.1 9.8-8.7 6.4 1.6 3.8 4.4 7 1.1 11-1.5 1.8-6 4.3-8.6 3.9-1.4-2.3-1.9-4-2.8-6.3-.8-2.3-2.8-3.5-4-5.4-1.2-2-1-5-2.5-7-1.6-2-5-2.1-6.4-4.4-1.2-1.9-.2-5.6-.1-7.6.2-5.1-1-2.6-4.3-4.6-2-1.3-1.7-4-3-6-1.4-1.8-4-3-4.7-5.4-.7-2.7 1.8-5.4-1-7.6-2.1-1.6-7-1.5-9.6-2.7-6-3-2-7.6-4-12.3-.7-1.5-2.7-5.1-3.6-6.1-2-2.3-3.3-1.8-5.6-.3-2.3 1.6-2.6 3.7-5.8 3.4-3.3-.4-4-2.2-4.7-4.7 0-.3 0-.4-.3-.3l-.5-1.3c0-2.8.2-2.5.8-5 2 1.7 3.5 3.8 5.4 5.6 1.8-2 2.3-4.1 5-5.3 2.3-1 5.3-.7 8-.7 4.7 0 7.9-3.2 12-6 1.1-1 5.8-3.4 6.3-4.7 1-2.4-2-4.7-2.4-7-.5-3.9 3-5.7 3.7-9 .6-2.4-.9-4.7-2.3-6.6 4.2 3.7 5.3 11.1 5.9 9.1.8-2.8 1.5 5.6 1.1 8.3-.4 3.3.2 5.6-1.4 8.5-1.2 2-4.3 7-6.6 7.5-1.8 3.2-7.8 11.5.9 9.5 2.8-.6 5.2-2.8 8-3.6 3.5-1 6.8-.8 10.4-1 5-.3 10-3.2 8.6-9.3-.7-3-1.3-4-1-7.4a22 22 0 0 0-.3-8.9c4 5 .4 11 5.4 14.3 6 4 4.2 8.5-1.7 11.6-4.6 2.5-3.2 8-6.3 12.1l-4.4 6.5c-1.3 1.7-3.4 3.1-4.5 5.2-.7 1.1-1.2 1.8-1 3.2 1.4.7 3.2 2.2 4 3.7 4.1-8.5 12.7-7.6 19-13 2.6-2.3 3-5.6 5.9-7.7 2.5-1.7 6.4-4 9.9-3.9-2.4 2.4-6 3-8.2 5.7-1.4 1.7-2 3.7-2.7 5.6-2.1 4.9-6.9 7-11 10.2-2.2 1.6-4 3.1-5.4 5.4-1.8 2.6-1.3 3.3-1 6.4.6 5.7 2.7 11 6 16"/><path fill="#9a9a9a" d="m521 1048 516-304.5-18-28.5-498 292.7z"/><g fill-rule="evenodd"><path fill="#6e1f1f" d="M520 325h82.3V17H520z"/><path fill="#6e1f1f" d="M520 17h82.3v308H520v19.9h104V0H520z"/><path fill="#9d2e2e" d="M520 276.2v8h72.1v32.9H520v8h82.6V17.2H520v144.4h72.1v32.9H520v8h72.1v32.9H520v8h72.1v32.8z"/><path fill="#75d5eb" d="M520 317h72.1v-32.8H520zm0-40.8h72.1v-32.9H520zm0-40.8h72.1v-33H520zm0-41h72.1v-32.8H520z"/></g></g><image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAADbCAYAAADZPUdjAAAABHNCSVQICAgIfAhkiAAACChJREFUeJztml124kgShW/+SALs3kE9145qFb2eWkXvqF9rC9M2UmZG9ENcCeEuD+A2smcqvnM42ICN8tPNyEhB+PHjh+IVvnz58tpT/3fE1574lSQAQFDVVxPxK/FqIn41XARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEcRFEBdBXARxEeTTi/j+7evZ/b0Iqqp3fYcrectAf//jz3d7/w8V8d5n+d+I+fRT4xa+f/v6ZrmbJ+Lec/0l16ZkMxFbC1hzjYxNpsZHSriWuybiLQJCCOtfAOXd6jDfcsiXUvEpimUMASEEhBhNRAiIOfExezyungur27VcOil3ScS1SZgHsgzQfkEIAYqfHJYC4OEq7Ofl/sphvJaMdxdxi4QY4zLcECJCgKXBfgDC8uxqoAoVypgFqEJEbjrOl0LyTX/9TszTAIBFH+tpMUuZEzKffVhKRCFB7EEOXgMQOcv1hnSs2bxGzHN9lhFjQky85YSUM1JOSF1G6jukrkPOnf2eT7eYImJO9v9iBGI8qx+XeJnczRIRflIQ52IYY0JIATFEE8LBza8DeKZFoCIQEUgTSGvQEAARqIq9Zk4SbltdNk3EcqZCQAg2LWLKiCkhpw6579ENA7rdgH6/Q7/f87ZDv7NbNwzohgG575C7bH8fk4mjvGuHv07FNol4EdclCSkhpYiYMlKXkbsOuess/l2HmJgKtQIpImi1oJaCWhJajAiloAFAAKQqoAEROBXPK1OxiYilOK4KYQxWFxLrQh56dP2Aru/RDT3y0CPljBCirQqqkFpRpgllHJHGCWWeNgjQqtCYAGlQnNJ3aXp8//YVv//x50aJ0NMyaNM+WE2Ilobc9+iHweK/32M47C3+XYeYE6CAtIo6FUzHEWOXMXHVWfcRqoomci6BibrE3UWsq7i1CZEFMiKlZKtC36Pb7TAcDtg/PmL3cMBwOCypAIBWKso4Ynx6QsoJAYH9lUClQUSgEqExQgBoa6dpdcVxbjY1zlvjuCyZKSXkvkO/GzA8HLD/7dFkPD5g2O+Qug5QoNaC6fkZOWcgBIjaqtFKRSwVITaE0KxgqlLUdfXh+7evGyQiRVgWlPdcElk35r4g9z363Q7DYY/d4wMOvz1ieDggdT2CKmopJgFAbRV1mlD7CVM+IuW0FNalJgfF1csHNusj7AzNB7rUiVlGysi5Q9d16PoBw96mye7wgNx1ABRlmqCqKFNBPxwx9qcmK8S59wjL0jzf67x3udCC31+EKBAiR49TGrCWEYB5l5kiYmT3mK3bBIAoskwn6xdWHepSgwKgAYpwdgjXNFZ3F6FQxlVh+6N1ZBXLJkqUhU+W+S+tQbg6SJOls9TltfyfON3bpuT2vcb9awRYuUNAUA4c7AtE0aShtYpaC2qxPmE6HpE7K4qtr1Ysy4Tp+RnTeESdJrSpoLUGaRXa2qnFVl1Kkqou1ekS90+EKqPLuGrgmbS9g9SGVuce4YjxiY0UgFYrVw1FqxXT0zPG/zxhfHrGNFpj1UpFqw3ahEnQ8+sWejkh2zVUAKACRYSqIGhYYt9qQ50KyvGIMSeEYK+ppaI/PiMm9hHV+ojj0xPGv/7C+PyMMk2opUBahSy9BDdny0Jl9ehSndgkESJiBRHz3A7QBrQYEasthRNTowprpccJue8RU7L0tIZSrJeYno8Yn54wUcacCpHV9JDTRZtPUSyXqm77oWXuqiikNdRalxVl7hRrmTCNo60cvIqlYs3TvNco44hyHK2fKBUiFdpsO35tNwmcrlRtkggAS7srKogCSADQ8OJ6g8nJU0HpxmWphCgEavWkzLvPsvwsrUEqr0+ovXZ578+0+1xkAJCmQMSpA6zVDlYU2qx41lKsU4xpEQhuqKRWa62Xe5sSIgJRtVrEa5q3LKObFcuzZAA2cCgEp3kdRSDSEOr55Xt7vXDJZa/RGqSpTQkWSKicxn6FhPUF3E2vUM0DXpbO1qxRaoJWq110mYoVz1UdKMcR0zRZYZzsNZYIqwsizVYKPX+PS2x/hWrFvAKEGK2zELHusSl7DkEQW0EkrNqhuXNUQFSsbqxWhXngt9SFuybi6u8o8ODnqKtaMpbWmnWgVasDrTUrluwkReepsFomRW6qC2s+5HMN4NT+IgSICGIMdoZxWnL/sQiqbeVfnn1dnruOn52su30IfPMHwPNOEvPHgKen5h2KdYh8TG9fGYDXE/thifgHy4ZpubJynoeXTdI7n7+7f1HkM3034r/Vr7svn+/5zbd/w6Xj2PQ7VB+Rjk/3HaqZrWTcmsTNPw2/91R56///FN+8fc+U/E+LmHmrkPdI2d851tPh0/cekAAAAABJRU5ErkJggg==" width="1" height="1" image-rendering="optimizeSpeed" mask="url(#f)" preserveAspectRatio="none" transform="matrix(2.92153 0 0 9.69418 161.273 31.235)"/><g clip-path="url(#g)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#fff" d="M866 459.7H638v245.6h228z"/><path fill="#75d5eb" d="M853 471H650.3v221.3H853z"/><path fill="#fff" d="M894.7 100h-228v245.7h228z"/><path fill="#75d5eb" d="M881.7 111.3H679v221.4h202.7z"/></g><path fill="url(#h)" d="M426.3 187.7h85.4v136.6h-85.4z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#i)" d="M425.7 0H511v176h-85.3z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#j)" d="M433 148.3a12.7 12.7 0 1 1 25.3 0 12.7 12.7 0 0 1-25.3 0" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><g clip-path="url(#k)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#a7a7a7" d="M349.8 796.2c-5.9 3.2-9.9 6.7-11.8 11.5-5.4 2.2-11 5.8-13.7 9.1-4.7 6 1.6 16.6 8 19.2 6.2 2.5 10.3.8 14.1-1.7 3 1.1 6.3.7 10-2.3v.7a53.2 53.2 0 0 0 2.8-3.3 49 49 0 0 0 11.1-26c.8-15.1-10.6-12.5-20.5-7.2M473.7 774c.6-3.8-1.1-6.8-5.4-8-9.5-2.7-20.7 5-30.5 5.2a84.1 84.1 0 0 0-32.8 7.3c-4.8 2-15.7.6-20 3.6-3.1 2.2-4.3 9.7-5.4 13.2-1.4 4.7-3.5 9.9-4 14.7-.5 5.6 1.3 11.2.6 16.6-7.7 2.3-9.6 9.3-.4 12.1-16 3.5-2.4 26 1.9 35.3 2.6 5.7 8.6 9.5 13.1 14.8 3 3.6 5.3 4.9 4.7 9-.4 2.9-4.2 4.1-3 8.8 3 .8 6 1.3 9 2.2.4 5.9 2 10.8 2 16.4 0 6.6-4 8.7-6.5 14.1l-1-.7c.3 1.3-.5 2.7-3.5 4.2-6.4 3.2-17-1.2-23-3.6a151.7 151.7 0 0 1-39.4-24.6c-9-7.4-16.5-15.5-27.8-19a422.5 422.5 0 0 1-78.7-34.6c-19.8-11.1-45-26.3-56.5-46.9 7.2-6 20.5-1.9 29.2-2.7 7.4-.8 24.7 3.2 30.7-2 3.2-2.9.3-9.8 4.1-12.6 4.5-3.2 9.3 3 11.8 6 2.8 3.7 3.6 10.4 8.1 11.9 2.6.8 5.3-1.5 8-1.4 2.3 0 5 1.7 7.3 2 11 1.6 14.8-8.7 24.7-9.3 5-.3 11 1 16 0 4.7-1 7.1-7.4 12.7-4.5 3.4 1.8 2.3 5.5 6.6 4.5 1.8-.4 3.4-3.4 4.6-4.7 2.8-3.3 4.9-6.7 8.3-9.8 4-3.6 8-5.1 12.5-6.8 2.7-1 3.5-2.2 7.3-2.7 2.2-.2 6.5 1 8 .5a31 31 0 0 0 10.1-7.7c4.3-4.8 2.9-8.6 2.6-14.8-.3-5.9.3-9.8.6-14.7.3-4.8-4.2-10.3-2.5-13.8 5-9.6 15.6 13.7 14.5 19.9-.7 4.3-6.4 9.2-4.7 14 2 5.6 6.8 1.8 10.8-.5 3.8-2.4 8.8-5.7 13.3-6.2 6-.8 10 2.3 16-.8 11.7-6.3 11.2-17.5 12.1-29.2 6.3 5.2 7.5 12.5 5.8 20.5-1.6 7.6-7.8 9.5-10.5 16 11 .5 20-5.5 30.6-4.5 3.8.3 11.8.8 12 6 0 2.7-2.2 4.9-4 7.3M198 452.4c-5 3.7-6.7 9.9.6 12.8 4.8 1.9 12.4.3 17.3-.2 11-1 26.4.6 36.2-5.2 1-.5 1-.5 1.8-1.5l1.3.7c-7.1-9.2-12.5-12.8-24.5-13.3-10.5-.5-24.2.6-32.7 6.7m236-66.2c-2 1.3-4.3.4-6 1.4-3.6 2.3-5.3 6.5-9.2 8.1-8.4 3.4-18.7-2.1-26.7-3.4-8.3-1.2-21.4-5.7-29.2-.5-3.2 2.1-4.2 6.3-8.2 8.4-4 2-8.4 2.1-13.2 2.3-4.2 9.6-14.7 11-24 13-4.7 1-10.1 4-14.9 4-4.6.1-9.2-1.7-13.8-2.6-10.8-2.3-20.2-8-31.4-.7-4.5 3-5.2 7.5-6.5 12.3-1.4 5.3-2.6 8.6 3.2 11.3 5.3 2.6 11.7.2 17.3 1.2 6.1 1 7.2 5.5 12.2 8.7 8.4 5.5 25 .3 29 11.2-8 .7-16 3.7-24.6 4.1-12 .6-24 2.1-35.9 2.7-21.6 1-45.3 3-65.3-2l-4.7-3.4c-2.2-10.3 13-14.8 20-17.3a90.8 90.8 0 0 0 25.5-15.9c7.6-6.4 15.9-15.1 25.2-20.1a32 32 0 0 1 28.1-2.1c8.8 2.8 19.7 6.8 28.4 2.6 8.3-4 17-7.8 26-10.7 4-1.2 9.7-1.4 13.5-3.6 5.7-3.3 3-9.2 7.4-12.8 6.3-5.1 25.5.5 31.9 2.6 7.7 2.6 18 4.1 26.7 3.3 7.8-.7 14.6-3.8 21.9-5.8-.6.7-2 3.2-2.7 3.7"/><path fill="#994343" d="M521 1048 .4 753.2l17.2-30.4 521 295z"/><path fill="#775553" d="M250.5 3c-2.2 3.8-2.5 9.4-5.8 12.2-7.3 6-22.2-2-30.7-2.2-12.4-.2-20.8 7.3-32.7 8.7-13.6 1.5-21.1 1.8-21.4 17.2-4.7-1.5-17-2.8-21.2 0-4.5 3-1.9 11-4.7 15.6-4.2 7-10.8 3.8-17.3 7.7-4.2 2.5-5.8 8.4-6 14-12-3-10.3 8-16.2 14.8-5 5.7-13.7 6.5-19.5 9.8V0h177.3a58.4 58.4 0 0 0-1.8 3"/><path fill="#7c4c40" d="M370.7 101.7h-228v244.6h228zm38 358.3h-228v244.7h228z"/></g><path fill="url(#l)" d="M74.8 0h48v15.3h-48z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#m)" d="M129.3 0H174v15.3h-44.7z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#n)" d="M74.8 22.3h29.4v15.4H74.8z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#o)" d="M74.8 44.5h12v15.3h-12z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><g clip-path="url(#p)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#51c4de" d="M250.3 261.7h-96v72h96zm108-.4h-96v72h96zm0-148h-96V250h96zm-108-.3h-96v136.7h96z"/><path d="M288.3 619.7h-96v72h96z"/><path fill="#51c4de" d="M396.3 620.3h-96v72h96zm0-148h-96V609h96zm-108-.3h-96v136.7h96z"/></g><path fill="url(#q)" d="m226.8 15.3-5.5-1.4V0h30.2v1.4l-.8 1.3c-2.2 3.8-2.5 9.4-5.8 12.2a8.2 8.2 0 0 1-.6.4z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#r)" d="M179.3 15.3V0H216v13.4a18 18 0 0 0-2-.2c-4.4 0-8.4.9-12.1 2.1z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#s)" d="M156.4 38a39.1 39.1 0 0 0-15.4 0h-30.3V22.7h48V38z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#t)" d="M92 60V44.7h44.1c-.4 3.3-.2 7.2-1.8 10-2.6 4.2-5.9 4.7-9.6 5.3z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#u)" d="M74.8 79.8V64.5H103v12.3c-1.1.7-2 1.8-2.7 3z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><path fill="url(#v)" d="M75 100V84.7h23c-1 2.3-2 4.7-3.7 6.8-4.2 4.9-11 6.1-16.5 8.5z" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"/><g fill-rule="evenodd" clip-path="url(#w)" transform="matrix(.04427 0 0 -.04427 143.301 46.551)"><path fill="#51c4de" d="m246.7 679-3.1 11-1 .2-4.1-17.2h-.9l-3.5 18.7h27l-4-9.8-5.8 10z"/><path d="m305.7 135 6.2 26-29.4-2.2-.2 1 26.4 8v.8l-27.4 5.2.1 1 31.7 1.7-6.5 15 1.1.5 11.2-14.2 17.8 16.3.8-.6-10.7-24.2 21.6-13.4-.4-1.2c-5.4 1-10.9 1.4-16.1 2.9-5.7 1.5-9.5.5-12.6-5-3.5-6.3-8.2-12-12.4-18l-1.2.4"/></g><image xlink:href="data:image/png;base64,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" width="1" height="1" image-rendering="optimizeSpeed" mask="url(#x)" preserveAspectRatio="none" transform="matrix(22.8411 0 0 14.78474 166.364 .16)"/></svg> </a></div> </div> <div class="doc-backer doc-backer-release"> <div class="backer_logo"><a class="link stretched-link" href="https://jolicode.com" target="_blank" rel="noopener"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 395.505 91.806" class="backer-logo-jolicode"> <style> .backer-logo-jolicode path.jolicode-logo-letter { fill: #2b2b2a; } .dark-theme .backer-logo-jolicode path.jolicode-logo-letter { fill: #FFFFFF; } </style> <g transform="matrix(1.25 0 0 -1.25 -174.487 572.131)"> <path class="jolicode-logo-letter" d="M201.208 440.446v.063l-.007-.002a2.967 2.967 0 01-5.912-.48h-.002v-41.854c0-2.17-.776-4.033-2.331-5.587-1.554-1.555-3.368-2.332-5.44-2.332-2.393 0-4.366.777-5.921 2.332-1.53 1.505-2.32 3.403-2.368 5.7v17.417h-.01l.002.055a2.962 2.962 0 01-3.084 2.827 2.957 2.957 0 01-2.826-2.896h-.004v-17.516c0-3.797 1.358-7.079 4.07-9.843 2.666-2.714 5.97-4.07 9.919-4.07 3.849 0 7.13 1.356 9.844 4.07 2.713 2.715 4.07 5.994 4.07 9.843v41.873c.008.13.01.26 0 .391v.01M260.363 446.628c1.01 0 1.868.364 2.578 1.093.71.73 1.065 1.596 1.065 2.606 0 1.027-.355 1.896-1.065 2.605-.728.73-1.588 1.093-2.578 1.093-1.009 0-1.869-.364-2.578-1.093a3.591 3.591 0 01-1.065-2.605c0-1.029.353-1.9 1.065-2.62a3.487 3.487 0 012.578-1.079M198.173 454.025c-1.009 0-1.869-.364-2.579-1.093a3.598 3.598 0 01-1.064-2.605c0-1.029.354-1.9 1.064-2.62a3.49 3.49 0 012.58-1.079c1.008 0 1.867.364 2.577 1.093.711.73 1.065 1.596 1.065 2.606 0 1.027-.354 1.896-1.065 2.605-.728.73-1.588 1.093-2.578 1.093M226.212 413.086c-.05-2.294-.84-4.194-2.37-5.697-1.578-1.555-3.403-2.332-5.476-2.332-2.145 0-4.057.777-5.736 2.332-1.652 1.528-2.48 3.428-2.48 5.697v13.619c.025 2.122.803 3.947 2.333 5.478 1.554 1.553 3.367 2.33 5.439 2.33 2.369 0 4.342-.777 5.92-2.33 1.53-1.506 2.32-3.405 2.37-5.7v-13.397zm-8.067 27.423c-3.85 0-7.13-1.358-9.843-4.072-2.715-2.714-4.071-5.994-4.071-9.843v-13.618c0-3.85 1.356-7.131 4.07-9.845 2.714-2.714 5.995-4.07 9.844-4.07 3.847 0 7.14 1.356 9.88 4.07 2.738 2.714 4.108 5.996 4.108 9.845v13.618c0 3.849-1.37 7.129-4.108 9.843-2.74 2.714-6.033 4.072-9.88 4.072M373.107 419.822v6.771c0 2.171.777 4.035 2.332 5.59 1.553 1.553 3.367 2.33 5.438 2.33 2.371 0 4.343-.779 5.923-2.337 1.43-1.409 2.205-3.153 2.33-5.23l-16.023-7.124zm21.98 6.771c0 3.998-1.37 7.278-4.106 9.844-2.886 2.714-6.18 4.072-9.88 4.072-3.849 0-7.13-1.358-9.846-4.072-2.713-2.714-4.069-5.994-4.069-9.844v-13.618c0-3.848 1.356-7.13 4.07-9.844 2.714-2.714 5.996-4.07 9.844-4.07 3.847 0 7.031 1.333 9.55 3.997 2.957 3.158 4.437 6.464 4.437 9.917v2.32a2.972 2.972 0 01-2.97 2.941 2.974 2.974 0 01-2.938-2.524l-.012.003v-.096a2.98 2.98 0 01-.024-.355 3 3 0 01.024-.357v-1.82c-.05-2.295-.839-4.196-2.367-5.699-1.58-1.554-3.406-2.332-5.478-2.332-2.368 0-4.33.795-5.883 2.387-1.555 1.591-2.332 3.557-2.332 5.9l21.98 9.772v3.478zM358.912 413.086c-.05-2.294-.84-4.194-2.368-5.697-1.58-1.555-3.405-2.332-5.476-2.332-2.147 0-4.059.777-5.738 2.332-1.652 1.528-2.48 3.428-2.48 5.697v13.619c.026 2.122.803 3.947 2.333 5.478 1.555 1.553 3.368 2.33 5.44 2.33 2.368 0 4.341-.777 5.921-2.33 1.527-1.506 2.318-3.405 2.368-5.7v-13.397zm2.988 44.048a2.967 2.967 0 01-2.967-2.871l-.02-.001V437.99c-2.345 1.678-5.033 2.518-8.068 2.518-3.849 0-7.128-1.358-9.843-4.072-2.714-2.714-4.07-5.994-4.07-9.843v-13.618c0-3.85 1.356-7.131 4.07-9.845 2.715-2.714 5.994-4.07 9.843-4.07 3.848 0 7.143 1.356 9.88 4.07 2.74 2.714 4.11 5.996 4.11 9.845v40.732c.021.149.037.299.037.454a2.972 2.972 0 01-2.972 2.972"></path> <path class="jolicode-logo-letter" d="M328.538 413.086c-.05-2.294-.838-4.194-2.368-5.697-1.58-1.555-3.403-2.332-5.476-2.332-2.147 0-4.059.777-5.738 2.332-1.652 1.528-2.48 3.428-2.48 5.697v2.235c.003.07.012.138.012.208v3.072l-.012-.004v8.108c.026 2.122.803 3.947 2.333 5.478 1.555 1.553 3.368 2.33 5.44 2.33 2.37 0 4.341-.777 5.921-2.33 1.53-1.506 2.318-3.405 2.368-5.7v-13.397zm-8.067 27.423c-3.849 0-7.128-1.358-9.843-4.072-2.714-2.714-4.069-5.994-4.069-9.843v-11.365c-.046-2.877-1.099-5.333-3.174-7.36-2.122-2.098-4.65-3.144-7.587-3.144-2.985 0-5.527 1.046-7.624 3.145-1.91 1.91-2.94 4.174-3.11 6.784v1.282l-.034-.004v22.688c0 2.96 1.047 5.483 3.144 7.568 2.097 2.085 4.64 3.127 7.624 3.127 2.936 0 5.465-1.048 7.587-3.145.863-.855 1.786-2.264 2.541-3.608a2.893 2.893 0 015.138 2.644l.007.004c-.806 1.772-1.962 3.413-3.469 4.919-3.207 3.233-7.14 4.848-11.804 4.848-4.614 0-8.549-1.61-11.804-4.828-3.257-3.22-4.886-7.1-4.886-11.638v-22.982c0-.24.023-.467.032-.703-.027-3.936-.802-5.606-2.329-7.252-1.553-1.68-3.367-2.517-5.44-2.517-2.368 0-4.342.777-5.92 2.332-1.53 1.503-2.319 3.403-2.369 5.697v27.423l-.016-.002v.036a2.953 2.953 0 11-5.9-.25c0-.01.003-.02.003-.032h-.007v-26.904l-.025-.011c0-2.172-.777-4.095-2.332-5.772-1.554-1.68-3.368-2.517-5.44-2.517-2.369 0-4.34.777-5.92 2.332-1.53 1.503-2.32 3.403-2.368 5.697v41.468c.003.062.01.123.01.186a2.965 2.965 0 01-5.93 0v-.01h-.003v-41.754c0-3.85 1.37-7.131 4.11-9.845 2.738-2.714 6.031-4.07 9.88-4.07 3.847 0 7.128 1.356 9.843 4.07.413.414.785.848 1.135 1.286.355-.438.73-.872 1.147-1.286 2.738-2.714 6.032-4.07 9.881-4.07 3.85 0 7.13 1.356 9.843 4.07a14.8 14.8 0 011.758 2.11c.386-.467.795-.926 1.243-1.37 3.23-3.206 7.166-4.81 11.804-4.81 4.613 0 8.548 1.61 11.804 4.83.45.445.861.906 1.25 1.376a15.002 15.002 0 011.776-2.136c2.715-2.714 5.994-4.07 9.843-4.07 3.848 0 7.143 1.356 9.882 4.07 2.737 2.714 4.107 5.996 4.107 9.845v13.618c0 3.849-1.37 7.129-4.107 9.843-2.739 2.714-6.034 4.072-9.882 4.072"></path> <path d="M433.546 396.935c-.69 0-1.38.262-1.905.788a2.697 2.697 0 000 3.81l17.846 17.847-17.846 17.847a2.695 2.695 0 103.812 3.811l19.752-19.752a2.692 2.692 0 000-3.811l-19.752-19.752a2.687 2.687 0 00-1.907-.788M162.037 397.637c-.69 0-1.378.263-1.905.789l-19.753 19.752a2.695 2.695 0 000 3.811l19.752 19.752a2.694 2.694 0 003.81 0 2.694 2.694 0 000-3.811l-17.846-17.847 17.847-17.846a2.694 2.694 0 00-1.905-4.6M401.738 390.904a2.694 2.694 0 00-2.49 3.723l21.248 51.558a2.695 2.695 0 104.983-2.053l-21.248-51.557a2.695 2.695 0 00-2.493-1.67" fill="#e9ce37"></path> </g> </svg> </a></div> </div> <div class="doc-backer doc-backer-release"> <div class="backer_logo"><a class="link stretched-link" href="https://les-tilleuls.coop/" target="_blank" rel="noopener"><?xml version="1.0" encoding="utf-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1197.2 169.48" width="1197.2" height="169.48" style="enable-background:new 0 0 1197.2 169.48;" xml:space="preserve"> <style type="text/css"> .lestilleuls-logo-st0{fill:#EC4D28;} .dark-theme .lestilleuls-logo-wordmark-dark { fill: #fff; } </style> <g> <g> <g> <path class="lestilleuls-logo-wordmark-dark" d="M385.53,96.15h40v15h-40V96.15z"/> <path class="lestilleuls-logo-wordmark-dark" d="M505.53,139.48h-20v-22.26c0-11.99,8.31-21.77,20-24.41L505.53,139.48z"/> <path class="lestilleuls-logo-wordmark-dark" d="M745.53,137.09c-3.41,0.99-7.79,1.92-13.17,2.77c-5.37,0.85-11.02,1.28-16.93,1.28c-6,0-10-0.81-13.98-2.44 c-3.99-1.62-7.14-3.9-9.47-6.83c-2.33-2.93-3.99-6.43-4.97-10.49c-0.99-4.06-1.48-8.53-1.48-13.4V67.82h20v37.75 c0,6.49,0.85,11.19,2.56,14.07c1.7,2.89,3.89,4.33,8.56,4.33c1.43,0,2.96-0.07,4.58-0.2c1.62-0.13,3.05-0.29,4.31-0.47V67.82h20 V137.09z"/> <g> <path class="lestilleuls-logo-st0" d="M1054.11,136.58c-5.77-3.05-10.31-7.4-13.61-13.07c-3.3-5.66-4.96-12.28-4.96-19.86 c0-7.49,1.67-14.09,5.02-19.79c3.35-5.71,7.93-10.08,13.75-13.13c5.82-3.05,12.34-4.57,19.56-4.57c7.23,0,13.75,1.52,19.56,4.57 c5.82,3.05,10.4,7.43,13.75,13.13c3.35,5.71,5.02,12.3,5.02,19.79c0,7.49-1.7,14.09-5.09,19.79 c-3.39,5.71-8.02,10.08-13.88,13.13c-5.86,3.05-12.41,4.57-19.63,4.57C1066.38,141.15,1059.88,139.63,1054.11,136.58z M1084.64,117.11c3.04-3.13,4.56-7.62,4.56-13.46c0-5.84-1.48-10.32-4.43-13.46c-2.95-3.13-6.59-4.7-10.91-4.7 c-4.41,0-8.06,1.55-10.97,4.64c-2.91,3.1-4.36,7.6-4.36,13.53c0,5.84,1.43,10.32,4.3,13.46c2.86,3.14,6.45,4.7,10.77,4.7 C1077.92,121.81,1081.6,120.25,1084.64,117.11z"/> </g> <g> <path class="lestilleuls-logo-st0" d="M969.11,136.58c-5.77-3.05-10.31-7.4-13.61-13.07c-3.3-5.66-4.96-12.28-4.96-19.86 c0-7.49,1.67-14.09,5.02-19.79c3.35-5.71,7.93-10.08,13.75-13.13c5.82-3.05,12.34-4.57,19.56-4.57s13.75,1.52,19.56,4.57 c5.82,3.05,10.4,7.43,13.75,13.13c3.35,5.71,5.02,12.3,5.02,19.79c0,7.49-1.7,14.09-5.09,19.79 c-3.39,5.71-8.02,10.08-13.88,13.13c-5.86,3.05-12.41,4.57-19.63,4.57C981.38,141.15,974.88,139.63,969.11,136.58z M999.64,117.11c3.04-3.13,4.56-7.62,4.56-13.46c0-5.84-1.48-10.32-4.43-13.46c-2.95-3.13-6.59-4.7-10.91-4.7 c-4.41,0-8.06,1.55-10.97,4.64c-2.91,3.1-4.36,7.6-4.36,13.53c0,5.84,1.43,10.32,4.3,13.46c2.86,3.14,6.45,4.7,10.77,4.7 C992.92,121.81,996.6,120.25,999.64,117.11z"/> </g> <path class="lestilleuls-logo-st0" d="M945.13,129.56c-2.09-3.58-3.67-7.44-4.77-11.55c-2.85,2.53-6.21,3.81-10.09,3.81 c-4.32,0-7.91-1.57-10.77-4.7c-2.86-3.13-4.3-7.62-4.3-13.46c0-5.92,1.45-10.43,4.36-13.53c2.91-3.09,6.56-4.64,10.97-4.64 c3.84,0,7.13,1.24,9.89,3.72c1.11-4.05,2.7-7.87,4.79-11.43c1.48-2.52,3.16-4.84,5.02-6.98c-0.04-0.02-0.09-0.05-0.13-0.07 c-5.82-3.05-12.34-4.57-19.56-4.57s-13.75,1.52-19.56,4.57c-5.82,3.05-10.4,7.43-13.75,13.13c-3.35,5.71-5.02,12.3-5.02,19.79 c0,7.58,1.65,14.2,4.96,19.86c3.3,5.66,7.84,10.02,13.61,13.07c5.77,3.05,12.27,4.57,19.5,4.57c7.22,0,13.77-1.52,19.63-4.57 c0.06-0.03,0.11-0.07,0.17-0.1C948.25,134.35,946.58,132.05,945.13,129.56z"/> <path class="lestilleuls-logo-wordmark-dark" d="M233.87,119.48h-35v-100c-12.51,4.03-20,16.13-20,29.33v90.67h55V119.48z"/> <path class="lestilleuls-logo-wordmark-dark" d="M410.53,19.48v20h35v100h20v-100l18.33,0c11.05,0,20-8.95,20-20v0L410.53,19.48z"/> <path class="lestilleuls-logo-wordmark-dark" d="M668.01,136.65c-1.08,0.54-2.53,1.08-4.33,1.62c-1.81,0.54-3.81,1.02-6.02,1.42c-2.21,0.41-4.58,0.74-7.1,1.02 c-2.53,0.27-5.05,0.41-7.58,0.41c-6.41,0-11.98-0.95-16.71-2.84c-4.74-1.89-8.66-4.49-11.77-7.78c-3.11-3.29-5.41-7.19-6.9-11.7 c-1.49-4.51-2.23-9.38-2.23-14.61c0-6.31,0.97-11.84,2.91-16.58c1.94-4.74,4.49-8.68,7.64-11.84c3.16-3.16,6.79-5.55,10.89-7.17 c4.1-1.62,8.32-2.44,12.65-2.44c10.1,0,18.09,3.09,23.95,9.27c5.86,6.18,8.8,15.27,8.8,27.27c0,1.17-0.05,2.46-0.14,3.86 c-0.09,1.4-0.18,2.64-0.27,3.72h-45.74c0.45,4.15,2.39,7.44,5.82,9.88c3.43,2.44,8.03,3.65,13.8,3.65c3.7,0,7.33-0.34,10.89-1.02 c1.11-0.21,2.17-0.44,3.15-0.68L668.01,136.65z M652.72,96.26c-0.09-1.71-0.39-3.38-0.88-5.01c-0.5-1.63-1.26-3.07-2.3-4.33 c-1.04-1.26-2.35-2.3-3.92-3.11c-1.58-0.81-3.54-1.22-5.89-1.22c-2.26,0-4.19,0.38-5.82,1.15c-1.62,0.77-2.98,1.78-4.06,3.04 c-1.08,1.26-1.92,2.73-2.5,4.4c-0.59,1.67-1.02,3.36-1.29,5.07H652.72z"/> <path class="lestilleuls-logo-wordmark-dark" d="M371.13,105.81c-1.67-1.84-3.95-3.56-6.83-5.15c-2.89-1.59-6.54-3.21-10.96-4.85c-2.17-0.81-3.95-1.57-5.35-2.25 c-1.4-0.68-2.5-1.31-3.32-1.9c-0.81-0.59-1.35-1.2-1.62-1.83c-0.27-0.63-0.41-1.35-0.41-2.16c0-3.52,3.16-5.28,9.47-5.28 c3.43,0,6.52,0.32,9.27,0.95c2.56,0.59,4.93,1.26,7.15,2.01V68.54c-1.61-0.43-3.42-0.84-5.46-1.23 c-3.97-0.77-8.12-1.15-12.45-1.15c-8.66,0-15.47,1.94-20.43,5.82c-4.96,3.88-7.44,9.16-7.44,15.83c0,3.43,0.49,6.36,1.49,8.79 c0.99,2.44,2.39,4.53,4.2,6.29c1.8,1.76,3.99,3.27,6.56,4.53c2.57,1.26,5.43,2.48,8.59,3.65c4.06,1.54,7.08,2.91,9.07,4.13 c1.98,1.22,2.98,2.64,2.98,4.26c0,2.07-0.77,3.47-2.3,4.19c-1.54,0.72-4.15,1.08-7.85,1.08c-3.52,0-7.08-0.38-10.69-1.15 c-1.91-0.41-3.79-0.89-5.65-1.46l-8.29,14.65c1.62,0.72,4.53,1.62,8.73,2.71c4.19,1.08,9.45,1.62,15.76,1.62 c9.65,0,17.12-1.8,22.39-5.4c5.28-3.6,7.92-8.91,7.92-15.93c0-2.97-0.34-5.58-1.02-7.83C373.97,109.7,372.8,107.65,371.13,105.81 z"/> <path class="lestilleuls-logo-wordmark-dark" d="M852.67,105.84c-1.67-1.84-3.95-3.56-6.83-5.15c-2.89-1.59-6.54-3.21-10.96-4.85c-2.17-0.81-3.95-1.57-5.35-2.25 c-1.4-0.68-2.5-1.31-3.32-1.9c-0.81-0.59-1.35-1.2-1.62-1.83c-0.27-0.63-0.41-1.35-0.41-2.16c0-3.52,3.16-5.28,9.47-5.28 c3.43,0,6.52,0.32,9.27,0.95c2.56,0.59,4.93,1.26,7.15,2.01V68.57c-1.61-0.43-3.42-0.84-5.46-1.23 c-3.97-0.77-8.12-1.15-12.45-1.15c-8.66,0-15.47,1.94-20.43,5.82c-4.96,3.88-7.44,9.16-7.44,15.83c0,3.43,0.49,6.36,1.49,8.79 c0.99,2.44,2.39,4.53,4.2,6.29c1.8,1.76,3.99,3.27,6.56,4.53c2.57,1.26,5.43,2.48,8.59,3.65c4.06,1.54,7.08,2.91,9.07,4.13 c1.98,1.22,2.98,2.64,2.98,4.26c0,2.07-0.77,3.47-2.3,4.19c-1.54,0.72-4.15,1.08-7.85,1.08c-3.52,0-7.08-0.38-10.69-1.15 c-1.91-0.41-3.79-0.89-5.65-1.46l-8.29,14.65c1.62,0.72,4.53,1.62,8.73,2.71c4.19,1.08,9.45,1.62,15.76,1.62 c9.65,0,17.12-1.8,22.39-5.4c5.28-3.6,7.92-8.91,7.92-15.93c0-2.97-0.34-5.58-1.02-7.83 C855.51,109.74,854.34,107.69,852.67,105.84z"/> <path class="lestilleuls-logo-wordmark-dark" d="M553.72,141.15c-5.82-0.09-10.54-0.72-14.16-1.88c-3.62-1.16-6.49-2.79-8.59-4.9c-2.1-2.1-3.54-4.65-4.3-7.65 c-0.76-3-1.14-6.38-1.14-10.13v-77.1h20v73.08c0,1.79,0.13,3.4,0.4,4.83c0.27,1.43,0.78,2.64,1.54,3.62 c0.76,0.99,1.86,1.79,3.29,2.42c1.43,0.63,3.36,1.03,5.77,1.21L553.72,141.15z"/> <path class="lestilleuls-logo-wordmark-dark" d="M593.72,141.15c-5.82-0.09-10.54-0.72-14.16-1.88c-3.62-1.16-6.49-2.79-8.59-4.9c-2.1-2.1-3.54-4.65-4.3-7.65 c-0.76-3-1.14-6.38-1.14-10.13v-77.1h20v73.08c0,1.79,0.13,3.4,0.4,4.83c0.27,1.43,0.78,2.64,1.54,3.62 c0.76,0.99,1.86,1.79,3.29,2.42c1.43,0.63,3.36,1.03,5.77,1.21L593.72,141.15z"/> <path class="lestilleuls-logo-wordmark-dark" d="M793.72,141.15c-5.82-0.09-10.54-0.72-14.16-1.88c-3.62-1.16-6.49-2.79-8.59-4.9c-2.1-2.1-3.54-4.65-4.3-7.65 c-0.76-3-1.14-6.38-1.14-10.13v-77.1h20v73.08c0,1.79,0.13,3.4,0.4,4.83c0.27,1.43,0.78,2.64,1.54,3.62 c0.76,0.99,1.86,1.79,3.29,2.42c1.43,0.63,3.36,1.03,5.77,1.21L793.72,141.15z"/> <path class="lestilleuls-logo-st0" d="M507.2,72.82c0,3.8-1.19,6.7-3.58,8.69c-2.38,1.99-5.08,2.98-8.09,2.98s-5.71-0.99-8.09-2.98 c-2.38-1.99-3.58-4.88-3.58-8.69s1.19-6.7,3.58-8.69c2.38-1.99,5.08-2.98,8.09-2.98s5.71,0.99,8.09,2.98 C506.01,66.12,507.2,69.01,507.2,72.82z"/> <path class="lestilleuls-logo-st0" d="M887.2,129.48c0,3.8-1.19,6.7-3.58,8.69c-2.38,1.99-5.08,2.98-8.09,2.98c-3.01,0-5.71-0.99-8.09-2.98 c-2.38-1.99-3.58-4.88-3.58-8.69c0-3.8,1.19-6.7,3.58-8.69c2.38-1.99,5.08-2.98,8.09-2.98c3.01,0,5.71,0.99,8.09,2.98 C886.01,122.78,887.2,125.68,887.2,129.48z"/> <path class="lestilleuls-logo-st0" d="M1192.18,83.86c-3.35-5.71-7.93-10.08-13.75-13.13c-5.82-3.05-12.34-4.57-19.56-4.57s-13.75,1.52-19.56,4.57 c-5.82,3.05-10.4,7.43-13.75,13.13c-3.22,5.49-4.88,11.81-5,18.96h-0.02v66.67h20v-32.21c5.41,2.57,11.43,3.87,18.07,3.87 c7.22,0,13.77-1.52,19.63-4.57c5.86-3.05,10.49-7.43,13.88-13.13c3.39-5.7,5.09-12.3,5.09-19.79S1195.53,89.56,1192.18,83.86z M1169.64,117.11c-3.04,3.14-6.72,4.7-11.04,4.7c-4.32,0-7.91-1.57-10.77-4.7c-2.86-3.13-4.3-7.62-4.3-13.46 c0-5.92,1.45-10.43,4.36-13.53c2.91-3.09,6.56-4.64,10.97-4.64c4.32,0,7.95,1.57,10.91,4.7c2.95,3.14,4.43,7.62,4.43,13.46 C1174.2,109.49,1172.68,113.98,1169.64,117.11z"/> <path class="lestilleuls-logo-wordmark-dark" d="M307.26,136.87c-1.08,0.54-2.53,1.08-4.33,1.62c-1.81,0.54-3.81,1.02-6.02,1.42c-2.21,0.41-4.58,0.74-7.1,1.02 c-2.53,0.27-5.05,0.41-7.58,0.41c-6.41,0-11.98-0.95-16.71-2.84c-4.74-1.89-8.66-4.49-11.77-7.78c-3.11-3.29-5.41-7.19-6.9-11.7 c-1.49-4.51-2.23-9.38-2.23-14.61c0-6.31,0.97-11.84,2.91-16.58c1.94-4.74,4.49-8.68,7.64-11.84c3.16-3.16,6.79-5.55,10.89-7.17 c4.1-1.62,8.32-2.44,12.65-2.44c10.1,0,18.09,3.09,23.95,9.27c5.86,6.18,8.8,15.27,8.8,27.27c0,1.17-0.05,2.46-0.14,3.86 c-0.09,1.4-0.18,2.64-0.27,3.72h-45.74c0.45,4.15,2.39,7.44,5.82,9.88c3.43,2.44,8.03,3.65,13.8,3.65c3.7,0,7.33-0.34,10.89-1.02 c1.11-0.21,2.17-0.44,3.15-0.68L307.26,136.87z M291.97,96.48c-0.09-1.71-0.39-3.38-0.88-5.01c-0.5-1.63-1.26-3.07-2.3-4.33 c-1.04-1.26-2.35-2.3-3.92-3.11c-1.58-0.81-3.54-1.22-5.89-1.22c-2.26,0-4.19,0.38-5.82,1.15c-1.62,0.77-2.98,1.78-4.06,3.04 c-1.08,1.26-1.92,2.73-2.5,4.4c-0.59,1.67-1.02,3.36-1.29,5.07H291.97z"/> </g> <g> <path class="lestilleuls-logo-st0" d="M84.52,75.41C70.6,75.05,59.04,65.02,56.34,51.8c-0.93-0.26-1.82-0.61-2.66-1.06 c-2.08-1.1-3.71-2.66-4.9-4.7c-1.19-2.04-1.78-4.42-1.78-7.14c0-2.7,0.6-5.07,1.81-7.12c1.2-2.05,2.85-3.63,4.94-4.72 c2.09-1.1,4.44-1.65,7.04-1.65c2.6,0,4.94,0.55,7.04,1.65c2.09,1.1,3.74,2.67,4.94,4.72c1.2,2.05,1.81,4.42,1.81,7.12 c0,2.69-0.61,5.07-1.83,7.12c-1.22,2.05-2.88,3.63-4.99,4.72c-0.97,0.5-1.99,0.89-3.07,1.16c2.54,8.68,10.43,15.1,19.84,15.44 l0-30.84c-0.36-0.15-0.71-0.31-1.05-0.49c-2.08-1.1-3.71-2.66-4.9-4.7c-1.19-2.04-1.78-4.42-1.78-7.14c0-2.69,0.6-5.07,1.81-7.12 c1.2-2.05,2.85-3.63,4.94-4.72c2.09-1.1,4.44-1.65,7.04-1.65c2.6,0,4.94,0.55,7.04,1.65c2.09,1.1,3.74,2.67,4.94,4.72 c1.2,2.05,1.81,4.42,1.81,7.12c0,2.7-0.61,5.07-1.83,7.12c-1.22,2.05-2.88,3.63-4.99,4.72c-0.3,0.16-0.6,0.3-0.91,0.43v45 c9.96-3.92,17.42-12.85,19.24-23.68c-0.8-0.25-1.58-0.57-2.31-0.96c-2.08-1.1-3.71-2.66-4.9-4.7c-1.19-2.04-1.78-4.42-1.78-7.14 c0-2.7,0.6-5.07,1.81-7.12c1.2-2.05,2.85-3.63,4.94-4.72c2.09-1.1,4.44-1.65,7.04-1.65c2.6,0,4.94,0.55,7.04,1.65 c2.09,1.1,3.74,2.67,4.94,4.72c1.2,2.05,1.81,4.42,1.81,7.12c0,2.69-0.61,5.07-1.83,7.12c-1.22,2.05-2.88,3.63-4.99,4.72 c-1.14,0.59-2.35,1.02-3.64,1.29c-2.14,15.16-13.02,27.55-27.36,31.89v11.73c19.05-2.1,35.19-13.96,43.32-30.45V33.7 c0-18.61-15.09-33.7-33.7-33.7h-44.2C46.19,9.66,35.57,27.13,35.57,47.03c0,24.03,15.48,44.5,36.99,51.98v13.52 c-28.74-7.92-49.91-34.28-49.91-65.5c0-18.24,7.24-34.81,18.98-47.03H33.7C15.09,0,0,15.09,0,33.7v72.56 c0,18.61,15.09,33.7,33.7,33.7h50.83V75.41z"/> <path class="lestilleuls-logo-st0" d="M126.19,44.95c0-2.1-0.53-3.71-1.59-4.84c-1.06-1.13-2.37-1.69-3.92-1.69c-1.59,0-2.9,0.56-3.95,1.67 c-1.05,1.11-1.57,2.74-1.57,4.87c0,2.1,0.51,3.71,1.55,4.84c1.03,1.13,2.32,1.69,3.88,1.69c1.55,0,2.88-0.56,3.97-1.69 C125.64,48.66,126.19,47.05,126.19,44.95z"/> <path class="lestilleuls-logo-st0" d="M96.63,114.69l0,25.27h9.63c18.61,0,33.7-15.09,33.7-33.7V93.61C128.86,105.36,113.64,113.18,96.63,114.69z" /> <path class="lestilleuls-logo-st0" d="M60.78,32.36c-1.59,0-2.9,0.56-3.95,1.67c-1.05,1.11-1.57,2.73-1.57,4.87c0,2.1,0.51,3.71,1.55,4.84 c1.03,1.13,2.32,1.69,3.88,1.69c1.55,0,2.88-0.56,3.97-1.69c1.09-1.13,1.64-2.74,1.64-4.84c0-2.1-0.53-3.71-1.59-4.84 C63.64,32.92,62.34,32.36,60.78,32.36z"/> <path class="lestilleuls-logo-st0" d="M90.58,17.62c-1.59,0-2.9,0.56-3.95,1.67c-1.05,1.11-1.57,2.73-1.57,4.86c0,2.1,0.51,3.71,1.55,4.84 c1.03,1.13,2.32,1.69,3.88,1.69c1.55,0,2.88-0.56,3.97-1.69c1.09-1.13,1.64-2.74,1.64-4.84c0-2.1-0.53-3.71-1.59-4.84 C93.44,18.19,92.13,17.62,90.58,17.62z"/> </g> </g> </g> </svg> </a></div> </div> </div> <div class="doc-sidebar-highlight"> <div class="ui-highlights"> <div class="ui-highlight-item ui-highlight-hidden"> <div class="ui-highlight-carbon"> <script defer async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CKYILK3J&placement=symfonycom" id="_carbonads_js"></script> </div> </div> </div> </div> <div class="ui-highlights"> <div class="ui-highlight-item ui-highlight-visible"> <div class="ui-highlight-symfony"> <a href="https://www.blackfire.io/profiler?utm_source=symfony&utm_medium=ad_red_logo&utm_campaign=profiler"> <img loading="lazy" src="/images/network/blackfire_02.png" height="100" width="130" alt="Symfony Code Performance Profiling" /> </a> <p class="ui-highlight-symfony-text"> <a href="https://www.blackfire.io/profiler?utm_source=symfony&utm_medium=ad_red_logo&utm_campaign=profiler">Symfony Code Performance Profiling</a> </p> </div> </div> <div class="ui-highlight-item ui-highlight-hidden"> <div class="ui-highlight-symfony"> <a href="https://sensiolabs.com/services?utm_source=symfony&utm_medium=ad_visual&utm_campaign=permanent_referral"> <img loading="lazy" src="/images/network/slsolutions_01.webp" height="100" width="130" alt="Peruse our complete Symfony & PHP solutions catalog for your web development needs." /> </a> <p class="ui-highlight-symfony-text"> <a href="https://sensiolabs.com/services?utm_source=symfony&utm_medium=ad_visual&utm_campaign=permanent_referral">Peruse our complete Symfony & PHP solutions catalog for your web development needs.</a> </p> </div> </div> </div> </div> </aside> </div> </div> </main> <footer> <h2 class="visually-hidden">Symfony footer</h2> <div class="footer-content"> <section class="footer-top-wrapper"> <div class="ui-page-container ui-page-container-wide"> <div class="footer-top"> <div class="symfony-contributor"> <div class="d-flex align-items-start px-4 py-3 ui-contributor ui-contributor-horizontal"> <img loading="lazy" width="48" height="48" alt="Avatar of Marco Woehr, a Symfony contributor" src="https://www.gravatar.com/avatar/70712f178a1c6a9109454dcf402fa45b?size=48&rating=g&default=retro" onerror="this.onerror=null; this.src='data:image/svg+xml;utf8,\ <svg xmlns=\'http://www.w3.org/2000/svg\' width=\'100%\' height=\'100%\'>\ <style>\ rect { fill: %23f3f4f6; }\ @media (prefers-color-scheme: dark) { rect { fill: %23374151; } }\ </style>\ <rect width=\'100%\' height=\'100%\'/>\ </svg>'" class="ui-avatar d-inline-block me-3"> <div> <p class="mb-1"> Thanks <strong> Marco Woehr </strong> for being a Symfony contributor </p> <p class="mb-1"> <span role="tooltip" aria-label="1 commit"> <strong>1</strong> commit</span> • <span role="tooltip" aria-label="6 lines of code/doc changed"><strong>6</strong> lines changed</span> </p> </div> </div> <p class="mt-3 mb-0"><a class="ui-link fw-semibold" href="/contributors">View all contributors</a> that help us make Symfony</p> </div> <div class="contribute-to-symfony"> <div class="ui-heading"> <h3 id="become-a-symfony-contributor" class="ui-heading-title ui-text-md"> Become a Symfony contributor </h3> </div> <p class="mb-3"> Be an active part of the community and contribute ideas, code and bug fixes. Both experts and newcomers are welcome. </p> <a class="ui-link fw-semibold" href="/doc/current/contributing/index.html">Learn how to contribute</a> </div> </div> </div> </section> <section class="footer-bottom-wrapper"> <div class="ui-page-container ui-page-container-wide"> <div class="footer-bottom"> <p class="mb-3"> <b>Symfony</b>™ is a trademark of Symfony SAS. <a href="/trademark">All rights reserved</a>. </p> <ul class="ui-sitemap "> <li> <p class="mb-2 fw-semibold"><a href="/what-is-symfony">What is Symfony?</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="What is Symfony?"> <li class="" role="menuitem"> <a href="/what-is-symfony"> What is Symfony? </a> </li> <li class="" role="menuitem"> <a href="/at-a-glance"> Symfony at a Glance </a> </li> <li class="" role="menuitem"> <a href="/components"> Symfony Components </a> </li> <li class="" role="menuitem"> <a href="/releases"> Symfony Releases </a> </li> <li class="" role="menuitem"> <a href="/doc/current/contributing/code/security.html"> Security Policy </a> </li> <li class="" role="menuitem"> <a href="/logo"> Logo & Screenshots </a> </li> <li class="" role="menuitem"> <a href="/license"> Trademark & Licenses </a> </li> <li class="" role="menuitem"> <a href="/legacy"> symfony1 Legacy </a> </li> </ul> </li> <li> <p class="mb-2 fw-semibold"><a href="/doc/current/index.html">Learn Symfony</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="Learn Symfony"> <li class="active" role="menuitem"> <a href="/doc/current/index.html"> Symfony Docs </a> </li> <li class="" role="menuitem"> <a href="/book"> Symfony Book </a> </li> <li class="" role="menuitem"> <a href="/doc/current/reference/index.html"> Reference </a> </li> <li class="" role="menuitem"> <a href="/bundles"> Bundles </a> </li> <li class="" role="menuitem"> <a href="/doc/current/best_practices.html"> Best Practices </a> </li> <li class="" role="menuitem"> <a href="https://sensiolabs.com/training?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral"> Training </a> </li> <li class="" role="menuitem"> <a href="https://university.sensiolabs.com/e-learning-platform?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral"> eLearning Platform </a> </li> <li class="" role="menuitem"> <a href="https://certification.symfony.com/"> Certification </a> </li> </ul> </li> <li> <p class="mb-2 fw-semibold"><a href="https://symfonycasts.com/">Screencasts</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="Screencasts"> <li class="" role="menuitem"> <a href="https://symfonycasts.com/tracks/symfony"> Learn Symfony </a> </li> <li class="" role="menuitem"> <a href="https://symfonycasts.com/tracks/php"> Learn PHP </a> </li> <li class="" role="menuitem"> <a href="https://symfonycasts.com/tracks/javascript"> Learn JavaScript </a> </li> <li class="" role="menuitem"> <a href="https://symfonycasts.com/tracks/drupal"> Learn Drupal </a> </li> <li class="" role="menuitem"> <a href="https://symfonycasts.com/tracks/rest"> Learn RESTful APIs </a> </li> </ul> </li> <li> <p class="mb-2 fw-semibold"><a href="/community">Community</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="Community"> <li class="" role="menuitem"> <a href="/community"> Symfony Community </a> </li> <li class="" role="menuitem"> <a href="https://connect.symfony.com/"> SymfonyConnect </a> </li> <li class="" role="menuitem"> <a href="/events/"> Events & Meetups </a> </li> <li class="" role="menuitem"> <a href="/projects"> Projects using Symfony </a> </li> <li class="" role="menuitem"> <a href="/contributors"> Contributors </a> </li> <li class="" role="menuitem"> <a href="/jobs"> Symfony Jobs </a> </li> <li class="" role="menuitem"> <a href="/backers"> Backers </a> </li> <li class="" role="menuitem"> <a href="/doc/current/contributing/code_of_conduct/code_of_conduct.html"> Code of Conduct </a> </li> <li class="" role="menuitem"> <a href="/stats/downloads"> Downloads Stats </a> </li> <li class="" role="menuitem"> <a href="/support"> Support </a> </li> </ul> </li> <li> <p class="mb-2 fw-semibold"><a href="/blog/">Blog</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="Blog"> <li class="" role="menuitem"> <a href="/blog/"> All Blog Posts </a> </li> <li class="" role="menuitem"> <a href="/blog/category/a-week-of-symfony"> A Week of Symfony </a> </li> <li class="" role="menuitem"> <a href="/blog/category/case-studies"> Case Studies </a> </li> <li class="" role="menuitem"> <a href="/blog/category/cloud"> Cloud </a> </li> <li class="" role="menuitem"> <a href="/blog/category/community"> Community </a> </li> <li class="" role="menuitem"> <a href="/blog/category/conferences"> Conferences </a> </li> <li class="" role="menuitem"> <a href="/blog/category/diversity"> Diversity </a> </li> <li class="" role="menuitem"> <a href="/blog/category/living-on-the-edge"> Living on the edge </a> </li> <li class="" role="menuitem"> <a href="/blog/category/releases"> Releases </a> </li> <li class="" role="menuitem"> <a href="/blog/category/security-advisories"> Security Advisories </a> </li> <li class="" role="menuitem"> <a href="/blog/category/symfony-insight"> Symfony Insight </a> </li> <li class="" role="menuitem"> <a href="/blog/category/twig"> Twig </a> </li> <li class="" role="menuitem"> <a href="https://sensiolabs.com/blog?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral"> SensioLabs Blog </a> </li> </ul> </li> <li> <p class="mb-2 fw-semibold"><a href="https://sensiolabs.com/?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral">Services</a></p> <ul class="ui-sitemap-menu" role="menubar" aria-label="Services"> <li class="" role="menuitem"> <a href="https://sensiolabs.com/?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral"> SensioLabs services </a> </li> <li class="" role="menuitem"> <a href="https://sensiolabs.com/training?utm_source=symfony&utm_medium=symfony_footer&utm_campaign=permanent_referral"> Train developers </a> </li> <li class="" role="menuitem"> <a href="https://insight.symfony.com/"> Manage your project quality </a> </li> <li class="" role="menuitem"> <a href="https://www.blackfire.io/?utm_source=symfony&utm_medium=symfonycom_footer&utm_campaign=profiler"> Improve your project performance </a> </li> <li class="" role="menuitem"> <a href="/cloud/"> Host Symfony projects </a> </li> </ul> <p class="mt-4 mb-2 fw-semibold"><a href="/cloud/">Powered by</a></p> <a href="/cloud/" class="block deploy-logo" title="Platform.sh, a Platform-as-a-Service optimized for Symfony developers" aria-label="Platform.sh"> <span aria-hidden="true"><svg viewBox="0 0 172.62 34.06" xmlns="http://www.w3.org/2000/svg"><g fill="currentColor"><path d="m144.07 0h28.55v11.35h-28.55z"/><path d="m144.07 24.69h28.55v3.86h-28.55z"/><path d="m144.07 15.02h28.55v5.82h-28.55z"/><path d="m0 13.85h3.61v2.15a5.45 5.45 0 0 1 1.9-1.79 5.25 5.25 0 0 1 2.66-.69 5.59 5.59 0 0 1 4.33 2 8.06 8.06 0 0 1 1.78 5.56 8.38 8.38 0 0 1 -1.79 5.71 5.6 5.6 0 0 1 -4.34 2 4.94 4.94 0 0 1 -2.15-.45 7.46 7.46 0 0 1 -2.08-1.66v7.38h-3.92zm3.83 7.07a5.66 5.66 0 0 0 1 3.65 3 3 0 0 0 2.37 1.17 2.78 2.78 0 0 0 2.24-1.08 5.55 5.55 0 0 0 .9-3.55 5.29 5.29 0 0 0 -.93-3.42 2.84 2.84 0 0 0 -2.28-1.11 3 3 0 0 0 -2.36 1.09 4.88 4.88 0 0 0 -.94 3.25z"/><path d="m16.07 28.49v-20.21h3.87v20.21z"/><path d="m25.5 18.32-3.5-.64a5.48 5.48 0 0 1 2-3.14 7.48 7.48 0 0 1 4.3-1 9.4 9.4 0 0 1 3.86.61 3.8 3.8 0 0 1 1.84 1.54 7.89 7.89 0 0 1 .52 3.47v4.52a15 15 0 0 0 .19 2.84 8 8 0 0 0 .69 2h-3.91c-.1-.26-.23-.64-.37-1.15-.07-.23-.11-.38-.14-.45a7 7 0 0 1 -2.12 1.45 6.15 6.15 0 0 1 -2.42.48 5 5 0 0 1 -3.56-1.23 4.05 4.05 0 0 1 -1.3-3.1 4.2 4.2 0 0 1 .59-2.21 3.87 3.87 0 0 1 1.66-1.49 13.49 13.49 0 0 1 3.08-.9 21.67 21.67 0 0 0 3.77-.95v-.39a2 2 0 0 0 -.56-1.58 3.26 3.26 0 0 0 -2.12-.52 2.8 2.8 0 0 0 -1.61.41 2.81 2.81 0 0 0 -.89 1.43zm5.18 3.14c-.5.16-1.29.36-2.36.59a7.55 7.55 0 0 0 -2.11.67 1.65 1.65 0 0 0 -.75 1.37 1.93 1.93 0 0 0 .6 1.41 2.13 2.13 0 0 0 1.54.59 3.34 3.34 0 0 0 2-.69 2.47 2.47 0 0 0 .93-1.28 7.73 7.73 0 0 0 .15-1.89z"/><path d="m43.81 13.85v3.09h-2.64v5.89a15.15 15.15 0 0 0 .07 2.09.82.82 0 0 0 .35.49 1 1 0 0 0 .65.2 5 5 0 0 0 1.56-.38l.33 3a7.63 7.63 0 0 1 -3.06.58 4.93 4.93 0 0 1 -1.89-.35 2.79 2.79 0 0 1 -1.18-.9 3.67 3.67 0 0 1 -.55-1.51 19.41 19.41 0 0 1 -.12-2.73v-6.38h-1.83v-3.09h1.78v-2.91l3.89-2.26v5.17z"/><path d="m44.94 13.85h2.15v-1.1a7.41 7.41 0 0 1 .39-2.75 3.18 3.18 0 0 1 1.45-1.48 5.56 5.56 0 0 1 2.67-.57 10.83 10.83 0 0 1 3.24.49l-.53 2.71a7.42 7.42 0 0 0 -1.77-.23 1.6 1.6 0 0 0 -1.21.4 2.28 2.28 0 0 0 -.33 1.5v1h2.9v3h-2.9v11.67h-3.91v-11.59h-2.15z"/><path d="m54.58 21a8 8 0 0 1 1-3.73 6.59 6.59 0 0 1 2.7-2.76 8 8 0 0 1 3.89-1 7.29 7.29 0 0 1 5.44 2.16 7.43 7.43 0 0 1 2.13 5.45 7.52 7.52 0 0 1 -2.14 5.5 7.24 7.24 0 0 1 -5.4 2.19 8.47 8.47 0 0 1 -3.84-.91 6.3 6.3 0 0 1 -2.78-2.67 8.91 8.91 0 0 1 -1-4.23zm4 .21a4.83 4.83 0 0 0 1 3.33 3.23 3.23 0 0 0 2.54 1.16 3.26 3.26 0 0 0 2.55-1.16 4.93 4.93 0 0 0 1-3.36 4.86 4.86 0 0 0 -1-3.31 3.29 3.29 0 0 0 -2.55-1.15 3.25 3.25 0 0 0 -2.54 1.15 4.86 4.86 0 0 0 -1.03 3.3z"/><path d="m75 28.49h-3.87v-14.64h3.6v2.08a6.06 6.06 0 0 1 1.66-1.93 3.07 3.07 0 0 1 1.67-.47 4.9 4.9 0 0 1 2.55.73l-1.2 3.38a3.32 3.32 0 0 0 -1.82-.64 2.11 2.11 0 0 0 -1.37.45 3 3 0 0 0 -.89 1.62 22.62 22.62 0 0 0 -.33 4.93z"/><path d="m81.77 13.85h3.57v2a5.75 5.75 0 0 1 4.56-2.33 4.87 4.87 0 0 1 2.44.58 4.39 4.39 0 0 1 1.66 1.75 6.73 6.73 0 0 1 2.09-1.75 5 5 0 0 1 2.38-.58 5.36 5.36 0 0 1 2.73.65 4.06 4.06 0 0 1 1.67 1.93 8.44 8.44 0 0 1 .4 3v9.36h-3.85v-8.34a6.16 6.16 0 0 0 -.4-2.81 1.83 1.83 0 0 0 -1.65-.83 2.66 2.66 0 0 0 -1.53.5 2.71 2.71 0 0 0 -1 1.45 10.52 10.52 0 0 0 -.32 3v7h-3.91v-8a11.17 11.17 0 0 0 -.2-2.76 1.76 1.76 0 0 0 -.64-.92 2 2 0 0 0 -1.18-.31 2.82 2.82 0 0 0 -1.59.56 2.7 2.7 0 0 0 -1 1.4 10.2 10.2 0 0 0 -.31 3v7.11h-3.92z"/><path d="m105.23 28.49v-3.88h3.87v3.88z"/><path d="m110.55 24.31 3.89-.59a2.84 2.84 0 0 0 1 1.72 3.4 3.4 0 0 0 2.12.58 3.86 3.86 0 0 0 2.27-.55 1.25 1.25 0 0 0 .5-1 1.05 1.05 0 0 0 -.27-.74 3.09 3.09 0 0 0 -1.3-.5q-4.68-1-5.94-1.89a3.79 3.79 0 0 1 -1.73-3.3 4.09 4.09 0 0 1 1.5-3.2 7 7 0 0 1 4.66-1.29 8 8 0 0 1 4.46 1 5 5 0 0 1 2 2.89l-3.66.68a2.21 2.21 0 0 0 -.89-1.31 3.18 3.18 0 0 0 -1.86-.45 4.33 4.33 0 0 0 -2.2.42.93.93 0 0 0 -.44.79.85.85 0 0 0 .39.7 14.37 14.37 0 0 0 3.62 1.09 10.82 10.82 0 0 1 4.33 1.64 3.58 3.58 0 0 1 1.21 2.88 4.4 4.4 0 0 1 -1.68 3.46 7.42 7.42 0 0 1 -5 1.45 8.07 8.07 0 0 1 -4.73-1.22 5.56 5.56 0 0 1 -2.25-3.26z"/><path d="m129.66 8.28v7.43a5.79 5.79 0 0 1 6.89-1.71 3.92 3.92 0 0 1 1.62 1.26 4.66 4.66 0 0 1 .74 1.71 15.64 15.64 0 0 1 .2 2.91v8.59h-3.87v-7.72a11.35 11.35 0 0 0 -.22-2.92 1.93 1.93 0 0 0 -.78-1 2.53 2.53 0 0 0 -1.4-.37 3.22 3.22 0 0 0 -1.72.47 2.64 2.64 0 0 0 -1.12 1.43 8.63 8.63 0 0 0 -.35 2.8v7.33h-3.87v-20.21z"/></g></svg> </span> </a> </li> </ul> <div class="my-4"> <h3><span>Follow Symfony</span></h3> <div class="d-flex align-items-center flex-wrap mt-3 row-gap-3 column-gap-4"> <a href="https://github.com/symfony" target="_blank" rel="me external noopener noreferrer" title="Symfony on GitHub"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg> </a> <a href="/slack" target="_blank" rel="external noopener noreferrer" title="Symfony on Slack"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M5.042 15.165a2.53 2.53 0 0 1-2.52 2.523A2.53 2.53 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52a2.527 2.527 0 0 1 2.521 2.52v6.313A2.53 2.53 0 0 1 8.834 24a2.53 2.53 0 0 1-2.521-2.522zM8.834 5.042a2.53 2.53 0 0 1-2.521-2.52A2.53 2.53 0 0 1 8.834 0a2.53 2.53 0 0 1 2.521 2.522v2.52zm0 1.271a2.53 2.53 0 0 1 2.521 2.521a2.53 2.53 0 0 1-2.521 2.521H2.522A2.53 2.53 0 0 1 0 8.834a2.53 2.53 0 0 1 2.522-2.521zm10.122 2.521a2.53 2.53 0 0 1 2.522-2.521A2.53 2.53 0 0 1 24 8.834a2.53 2.53 0 0 1-2.522 2.521h-2.522zm-1.268 0a2.53 2.53 0 0 1-2.523 2.521a2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.53 2.53 0 0 1 2.523 2.522zm-2.523 10.122a2.53 2.53 0 0 1 2.523 2.522A2.53 2.53 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522zm0-1.268a2.527 2.527 0 0 1-2.52-2.523a2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.53 2.53 0 0 1-2.522 2.523z"></path></svg> </a> <a href="https://twitter.com/symfony" target="_blank" rel="me external noopener noreferrer" title="Symfony on Twitter"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584l-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"></path></svg> </a> <a href="https://mastodon.social/@symfony" target="_blank" rel="me external noopener noreferrer" title="Symfony on Mastodon"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127C.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611c.118 1.24.325 2.47.62 3.68c.55 2.237 2.777 4.098 4.96 4.857c2.336.792 4.849.923 7.256.38q.398-.092.786-.213c.585-.184 1.27-.39 1.774-.753a.06.06 0 0 0 .023-.043v-1.809a.05.05 0 0 0-.02-.041a.05.05 0 0 0-.046-.01a20.3 20.3 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.6 5.6 0 0 1-.319-1.433a.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546c.376 0 .75 0 1.125-.01c1.57-.044 3.224-.124 4.768-.422q.059-.011.11-.024c2.435-.464 4.753-1.92 4.989-5.604c.008-.145.03-1.52.03-1.67c.002-.512.167-3.63-.024-5.545m-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976c-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35c-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102q0-1.965 1.011-3.12c.696-.77 1.608-1.164 2.74-1.164c1.311 0 2.302.5 2.962 1.498l.638 1.06l.638-1.06c.66-.999 1.65-1.498 2.96-1.498c1.13 0 2.043.395 2.74 1.164q1.012 1.155 1.012 3.12z"></path></svg> </a> <a href="https://www.linkedin.com/company/symfony-sas/" target="_blank" rel="me external noopener noreferrer" title="Symfony on LinkedIn"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z"></path></svg> </a> <a href="https://www.facebook.com/SymfonyFramework" target="_blank" rel="me external noopener noreferrer" title="Symfony on Facebook"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978c.401 0 .955.042 1.468.103a9 9 0 0 1 1.141.195v3.325a9 9 0 0 0-.653-.036a27 27 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.7 1.7 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103l-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647"></path></svg> </a> <a href="https://www.youtube.com/symfonytv" target="_blank" rel="me external noopener noreferrer" title="Symfony on YouTube"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M23.498 6.186a3.02 3.02 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.02 3.02 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.02 3.02 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.02 3.02 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814M9.545 15.568V8.432L15.818 12z"></path></svg> </a> <a href="https://bsky.app/profile/symfony.bsky.social" target="_blank" rel="me external noopener noreferrer" title="Symfony on BlueSky"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565C.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479c.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056q-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078c5.013 5.19 6.87-1.113 7.823-4.308c.953 3.195 2.05 9.271 7.733 4.308c4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364c.246-.828.624-5.79.624-6.478c0-.69-.139-1.861-.902-2.206c-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8"></path></svg> </a> <a href="https://www.threads.net/@symfony" target="_blank" rel="me external noopener noreferrer" title="Symfony on Threads"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="currentColor" d="M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098c1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015c-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164c1.43 1.783 3.631 2.698 6.54 2.717c2.623-.02 4.358-.631 5.8-2.045c1.647-1.613 1.618-3.593 1.09-4.798c-.31-.71-.873-1.3-1.634-1.75c-.192 1.352-.622 2.446-1.284 3.272c-.886 1.102-2.14 1.704-3.73 1.79c-1.202.065-2.361-.218-3.259-.801c-1.063-.689-1.685-1.74-1.752-2.964c-.065-1.19.408-2.285 1.33-3.082c.88-.76 2.119-1.207 3.583-1.291a14 14 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757c-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32l-1.757-1.18c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388q.163.07.321.142c1.49.7 2.58 1.761 3.154 3.07c.797 1.82.871 4.79-1.548 7.158c-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69q-.362 0-.739.021c-1.836.103-2.98.946-2.916 2.143c.067 1.256 1.452 1.839 2.784 1.767c1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221"></path></svg> </a> <a href="https://symfonycasts.com/" target="_blank" rel="me external noopener noreferrer" title="Symfony Screencasts"> <svg viewBox="0 0 300 300" space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421" width="32px" height="32px" fill="currentColor" aria-hidden="true"><g><path d="M300 30c0-16.557-13.443-30-30-30H30C13.443 0 0 13.443 0 30v240c0 16.557 13.443 30 30 30h240c16.557 0 30-13.443 30-30V30z" style="fill: currentColor"></path><path d="M94.679 204.481c-4.374-1.925-9.01-2.625-13.734-2.625-18.632 0-32.278 12.51-32.278 31.317 0 19.42 12.859 31.841 32.191 31.841 3.587 0 9.272-.262 13.909-2.187l-.257-4.156a3.1 3.1 0 0 0-3.988-2.776c-2.99.903-6.622 1.421-9.577 1.421-12.684 0-23.006-9.534-23.006-23.881 0-13.733 9.36-23.881 23.444-23.881 3.038 0 5.994.528 8.787 1.582a3.098 3.098 0 0 0 4.178-2.646l.331-4.009zm13.522 19.85a3.1 3.1 0 0 0 4.404 2.615c2.741-1.268 5.876-1.996 8.866-1.996 8.223 0 11.022 3.937 11.022 11.635-3.237-.175-5.511-.175-8.748-.175-8.485 0-20.732 3.499-20.732 14.696 0 9.709 6.736 13.908 16.358 13.908 7.523 0 11.897-4.111 13.822-6.823h.175v5.774h4.352a3.098 3.098 0 0 0 3.093-3.296 125.34 125.34 0 0 1-.097-5.452v-18.458c0-12.159-5.161-18.457-17.933-18.457-5.686 0-10.585 1.75-14.696 4.199l.114 1.83zm44.173 38.234c3.761 2.012 8.048 2.449 12.247 2.449 7.96 0 15.57-4.373 15.57-13.908 0-14.259-19.332-11.635-19.332-20.732 0-3.674 3.674-5.424 7.873-5.424 1.107 0 3.2.377 5.127.913a3.097 3.097 0 0 0 3.926-2.68l.307-3.131c-3.237-.963-6.386-1.75-10.235-1.75-8.835 0-15.746 4.461-15.746 13.734 0 12.509 19.333 11.809 19.333 19.944 0 4.812-4.637 6.386-8.398 6.386-1.512 0-3.954-.43-6.366-1.29a3.097 3.097 0 0 0-4.141 2.732l-.165 2.757zm71.142 0c3.761 2.012 8.048 2.449 12.247 2.449 7.96 0 15.57-4.373 15.57-13.908 0-14.259-19.332-11.635-19.332-20.732 0-3.674 3.674-5.424 7.873-5.424 1.107 0 3.2.377 5.127.913a3.097 3.097 0 0 0 3.926-2.68l.307-3.131c-3.237-.963-6.386-1.75-10.235-1.75-8.835 0-15.746 4.461-15.746 13.734 0 12.509 19.333 11.809 19.333 19.944 0 4.812-4.637 6.386-8.398 6.386-1.512 0-3.954-.43-6.366-1.29a3.097 3.097 0 0 0-4.141 2.732l-.165 2.757zm-29.36-43.213v-12.947h5.123a3.1 3.1 0 0 1 3.099 3.1v9.847h11.81v3.548a3.1 3.1 0 0 1-3.1 3.1h-8.71v24.406c0 5.161 3.15 7.96 6.911 7.96.702 0 1.351-.06 1.947-.167a3.101 3.101 0 0 1 3.652 3.05v2.541c-1.837.525-4.374 1.224-6.999 1.224-8.485 0-13.733-4.024-13.733-12.946V226h-5.052a3.1 3.1 0 0 1-3.099-3.1v-3.548h8.151zm-61.663 27.292c0 6.649-4.286 11.722-12.422 11.722-3.761 0-8.31-2.537-8.31-7.26 0-7.873 11.022-8.573 15.483-8.573 1.75 0 3.499.175 5.249.175v3.936zm136.934-67.652H30.577c-.355-.024-.449-.012-.794-.109-1.164-.326-2.062-1.423-2.145-2.636a3.007 3.007 0 0 1 1.409-2.719c.344-.209.73-.346 1.129-.401.133-.019.268-.019.401-.028H53c-7.987-7.798-9.293-17.234-7.409-23.363 2.511-8.144 8.984-9.683 15.314-7.741 6.779 2.096 9.432 10.333 7.493 16.657-.216.677-.562 1.805-1.274 3.324-.787 1.738-2.245 3.272-2.869 5.31-.693 2.253.33 4.211 2.099 5.813h27.289c1.97-1.871 3.447-4.169 4.233-6.74 2.444-7.89-2.548-13.398-4.615-15.512l-10.054-10.762c-4.598-5.12-14.713-19.398-9.779-35.432 1.904-6.184 5.91-12.742 11.724-17.083 12.275-9.147 25.621-10.648 38.327-6.995 16.448 4.729 24.347 15.602 34.59 24.005 5.735-16.818 13.683-33.283 25.635-47.176 10.794-12.652 25.297-21.822 41.908-22.39 16.596-.548 29.142 6.974 29.556 18.882.167 5.068-2.74 14.92-12.864 15.261-7.572.262-12.8-4.263-13.036-11.135-.085-2.519.566-4.724 2.292-7.301 1.688-3.304 2.049-3.683 2.006-5.12-.152-4.333-6.692-4.493-8.482-4.409-24.548.811-31.018 33.939-36.263 60.875l-2.569 14.205c14.136 2.067 24.172-.481 29.77-4.102 7.881-5.117-2.205-10.374-.933-16.191 1.288-5.931 6.683-8.794 10.969-8.914 6-.148 10.283 6.077 10.144 12.395-.216 10.444-14.069 24.793-41.783 24.207a96.847 96.847 0 0 1-9.38-.665l-5.228 28.86c-1.387 6.478-2.91 13.66-4.945 21.237h94.561l.401.028c.132.027.265.045.394.082a3.005 3.005 0 0 1 2.09 2.237c.272 1.308-.46 2.759-1.711 3.302-.246.107-.506.18-.773.217-.132.018-.267.018-.401.027zm-127.085-5.893c.469-2.383.942-4.832 1.422-7.35l1.674-10.152c2.723-13.608 5.741-28.784 10.342-43.905-11.162-8.404-17.847-18.821-32.86-22.892-10.29-2.793-16.562-.423-20.973 5.155-5.222 6.604-3.488 15.2 1.557 20.241l8.336 9.223c10.222 11.808 15.809 20.999 13.707 33.359-1.024 6.057-3.949 11.682-8.315 16.321h25.11z" style="fill: var(--footer-bottom-background)"></path></g></svg> </a> <a href="https://feeds.feedburner.com/symfony/blog" target="_blank" rel="external noopener noreferrer" title="Symfony Blog RSS"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="32px"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 19a1 1 0 1 0 2 0a1 1 0 1 0-2 0M4 4a16 16 0 0 1 16 16M4 11a9 9 0 0 1 9 9"></path></svg> </a> </div> </div> <div class="theme"> <form class="d-flex align-items-center"> <label for="color-scheme-switcher"> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" font-size="21px" class="me-1 ui-text-muted"><path fill="currentColor" d="M17 3.34A10 10 0 1 1 2 12l.005-.324A10 10 0 0 1 17 3.34M8 5.072A8 8 0 0 0 12.001 20L12 4a8 8 0 0 0-4 1.072"></path></svg> <span class="visually-hidden">Site appearance:</span> </label> <select id="color-scheme-switcher" autocomplete="off"> <option value="light">Light mode</option> <option value="dark">Dark mode</option> <option value="sync" selected>Sync with system</option> </select> </form> </div> <script async> const colorSchemeSwitcher = document.getElementById('color-scheme-switcher'); const currentScheme = localStorage.getItem('colorScheme'); colorSchemeSwitcher.value = currentScheme; colorSchemeSwitcher.addEventListener('change', function () { const selectedColorScheme = colorSchemeSwitcher.value; let resolvedColorScheme = selectedColorScheme; if ('sync' === resolvedColorScheme) { resolvedColorScheme = matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; } document.body.classList.remove('light-theme', 'dark-theme'); document.body.classList.add('light' === resolvedColorScheme ? 'light-theme' : 'dark-theme'); localStorage.setItem('colorScheme', selectedColorScheme); document.body.style.colorScheme = resolvedColorScheme; }); </script> </div> </div> </section> </div> </footer> <div id="search-modal-backdrop" class="search-container" style="display: none"> <div role="dialog" aria-modal="true" id="search-modal-content" tabindex="-1"> <button aria-label="Close modal" id="search-modal-close-button">CLOSE</button> <div class="search-container" data-controller="live" data-live-name-value="Search" data-live-url-value="/_components/Search" id="live-2308103015-0" data-live-props-value="{"query":null,"@attributes":{"id":"live-2308103015-0"},"@checksum":"T8w3JMMlYNTMVShvf\/H5DoH+tLNjpWjA5vhKHU9v+GQ="}"> <form id="form-search"> <div class="form-group form-search-input"> <label for="form-search-input" class="visually-hidden">Search Symfony Docs</label> <input type="search" name="q" data-model="query" value="" class="mousetrap form-control ui-form-control-rounded ui-form-control-search-icon form-search-input" placeholder="Search Symfony Docs" aria-label="Search in Symfony documentation" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false"> </div> <button type="submit" class="visually-hidden">Search</button> </form> </div> </div> </div> </body> </html>