<!DOCTYPE html>
<html lang='en'>
<head>

<meta content='c88806c0-12ae-417c-9ecb-e4b06b8037d8' name='onetrust-data-domain'>
<meta content='https://tags.tiqcdn.com/utag/vmware/microsites-privacy/prod/utag.js' name='microsites-utag'>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src='//www.vmware.com/files/templates/inc/utag_data.js'></script>
<script src='//tags.tiqcdn.com/utag/vmware/microsites-privacy/prod/utag.sync.js'></script>
<script>function OptanonWrapper() { { window.dataLayer.push({ event: 'OneTrustGroupsUpdated' }); } }</script>
<script>
        function setGTM(w,d,s,l,i){ w[l]=w[l]||[]; w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'}); var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; j.async=true; j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); }
        if (document.cookie.indexOf('OptanonConsent') > -1 && document.cookie.indexOf('groups=') > -1) { setGTM(window,document,'script','dataLayer','GTM-W8CQ8TL'); } else{ waitForOnetrustActiveGroups(); } var timer; function waitForOnetrustActiveGroups() { if (document.cookie.indexOf('OptanonConsent') > -1 && document.cookie.indexOf('groups=') > -1) { clearTimeout(timer); setGTM(window,document,'script','dataLayer','GTM-W8CQ8TL'); } else{ timer=setTimeout(waitForOnetrustActiveGroups, 250); } }
    </script>

<meta content='width=device-width,initial-scale=1,shrink-to-fit=no' id='Viewport' name='viewport'>
<link rel="stylesheet" type="text/css" media="all" href="/css/main-589b2bb8a76e9ef4d73532d286c6db6a.css" />
<link href="/images/favicon-9d25009f65637a49ac8d91eb1cf7b75e.ico" rel='shortcut icon' type='image/vnd.microsoft.icon'>
<meta name='description' content='Level up your Java code and explore what Spring can do for you.' />
<link rel="manifest" href="/manifest-0e3065c2bbd1ef7a320e80861393f1a6.json">
<meta name="theme-color" content="#6db33f">
<meta name="apple-mobile-web-app-title" content="spring">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<title>Spring | Home</title>
<meta property="og:site_name" content="Spring">
<meta property="og:type" content="website">
<meta property="og:title" content="Spring makes Java simple.">
<meta property="og:description" content="Level up your Java code and explore what Spring can do for you.">
<meta property="og:url" content="https://spring.io/">
<meta property="og:image" content="/images/OG-Spring.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="600">
<meta name="twitter:title" content="Spring">
<meta name="twitter:description" content="Level up your Java code and explore what Spring can do for you.">
<meta name="twitter:url" content="https://spring.io/">
<meta name="twitter:site" content="@springcentral">
<meta name="twitter:creator" content="@springcentral">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://spring.io/images/OG-Spring.png">
<script src="/js/run_prettify-b8b4abd61389be25d5219fffabfab796.js"></script>
</head>
<body id="index">
<script src="/js/theme-f367e6936a70ad2e6b3dcb91c6673a9f.js"></script>
<header>
<nav id='nav'>
<div id='nav-inner' class='container flex jc-between ai-center'>
<a id='logo-focus' tabindex='1' href='/'>
<img id='springlogo' class='block' src="/images/spring-logo-9146a4d3298760c2e7e49595184e1975.svg" alt="Spring">
</a>
<ul id='nav-items' class='flex jc-between'>
<li><div class='has-menu' id='why-hov'><span tabindex='2'>Why Spring</span><div class='nav-arrow'></div></div></li>
<li><div class='has-menu' id='learn-hov'><span tabindex='11'>Learn</span><div class='nav-arrow'></div></div></li>
<li><div class='has-menu' id='projects-hov'><span tabindex='17'>Projects</span><div class='nav-arrow'></div></div></li>
<li><a class='z-5 rel' href='/training' tabindex='30'>Training</a></li>
<li><a class='z-5 rel' href='/support' tabindex='31'>Support</a></li>
<li><a class='has-menu' id='community-hov'><span tabindex='32'>Community</span><div class='nav-arrow'></div></a></li>
<li>
<a id="switch-theme" class="theme-switch">
<span>
<i class="fas fa-moon"></i>
<i class="fas fa-sun"></i>
</span>
</a>
</li>

</ul>
</div>
<div id='dropdown-menus' class='container rel'>
<div id='scope' class='abs rad-5'></div>
<div id='why-items' class='drop-menu'>
<div id='why-target' class='drop-target'></div>
<ul>
<li><a tabindex='3' href='/why-spring'>Overview</a></li>
<li><a tabindex='4' href='/microservices'>Microservices</a></li>
<li><a tabindex='5' href='/reactive'>Reactive</a></li>
<li><a tabindex='6' href='/event-driven'>Event Driven</a></li>
<li><a tabindex='7' href='/cloud'>Cloud</a></li>
<li><a tabindex='8' href='/web-applications'>Web Applications</a></li>
<li><a tabindex='9' href='/serverless'>Serverless</a></li>
<li><a tabindex='10' href='/batch'>Batch</a></li>
</ul>
</div>
<div id='learn-items' class='drop-menu'>
<div id='learn-target' class='drop-target'></div>
<ul>
<li><a tabindex='12' href='/learn'>Overview</a></li>
<li><a tabindex='13' href='/quickstart'>Quickstart</a></li>
<li><a tabindex='14' href='/guides'>Guides</a></li>

<li><a tabindex='16' href='/blog'>Blog</a></li>
</ul>
</div>
<div id='project-items' class='drop-menu'>
<div id='project-target' class='drop-target'></div>
<ul>
<li><a tabindex='18' href='/projects'>Overview</a></li>
<li><a tabindex='19' href='/projects/spring-boot'>Spring Boot</a></li>
<li><a tabindex='20' href='/projects/spring-framework'>Spring Framework</a></li>
<li><a tabindex='21' href='/projects/spring-cloud'>Spring Cloud</a></li>
<li><a tabindex='22' href='/projects/spring-cloud-dataflow'>Spring Cloud Data Flow</a></li>
<li><a tabindex='23' href='/projects/spring-data'>Spring Data</a></li>
<li><a tabindex='24' href='/projects/spring-integration'>Spring Integration</a></li>
<li><a tabindex='25' href='/projects/spring-batch'>Spring Batch</a></li>
<li><a tabindex='26' href='/projects/spring-security'>Spring Security</a></li>
<li><a tabindex='27' class='blue mb-2 inline-block' href='/projects'>View all projects</a></li>
<li class='uppercase smallest'>Development Tools</li>
<li><a tabindex='28' href='/tools'>Spring Tools 4</a></li>
<li><a tabindex='29' href='https://start.spring.io'>Spring Initializr <svg class='external-link-icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polyline points="15 10.94 15 15 1 15 1 1 5.06 1" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /><polyline points="8.93 1 15 1 15 7.07" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /><line x1="15" y1="1" x2="8" y2="8" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /></svg></a></li>
</ul>
</div>
<div id='community-items' class='drop-menu'>
<div id='community-target' class='drop-target'></div>
<ul>
<li><a tabindex='33' href='/community'>Overview</a></li>
<li><a tabindex='34' href='/events'>Events</a></li>
<li><a tabindex='35' href='/team'>Team</a></li>
</ul>
</div>
</div>
</nav>
<div id='mobile-nav-open' class='pointer'>
<div id="hamburger">
<div class="burger-bar"></div>
<div class="burger-bar"></div>
<div class="burger-bar"></div>
</div>
<svg version="1.1" class='mobile-close pointer' id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 14.6 14.6" style="enable-background:new 0 0 14.6 14.6;" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#000000;stroke-widdata-th-3;stroke-miterlimit:10;}</style><title>close</title><line class="st0" x1="1.5" y1="1.5" x2="13.1" y2="13.1" /><line class="st0" x1="13.1" y1="1.5" x2="1.5" y2="13.1" /></svg>
</div>
<nav id='mobile-nav' class='border-box rel'>
<div class='rel'>
<div id='mobile-why' class='mobile-category flex jc-between ai-center'>
<div class='mobile-title antialiased cursor-d'>Why Spring</div>
<div class="mobile-nav-arrow"></div>
</div>
<div id='mobile-why-items' class='mobile-expanded-category'>
<ul>
<li><a href='/why-spring'>Overview</a></li>
<li><a href='/microservices'>Microservices</a></li>
<li><a href='/reactive'>Reactive</a></li>
<li><a href='/event-driven'>Event Driven</a></li>
<li><a href='/cloud'>Cloud</a></li>
<li><a href='/web-applications'>Web Applications</a></li>
<li><a href='/serverless'>Serverless</a></li>
<li><a href='/batch'>Batch</a></li>
</ul>
</div>
<div id='mobile-learn' class='mobile-category flex jc-between ai-center'>
<div class='mobile-title antialiased cursor-d'>Learn</div>
<div class="mobile-nav-arrow"></div>
</div>
<div id='mobile-learn-items' class='mobile-expanded-category'>
<ul>
<li><a href='/learn'>Overview</a></li>
<li><a href='/quickstart'>Quickstart</a></li>
<li><a href='/guides'>Guides</a></li>

<li><a href='/blog'>Blog</a></li>
</ul>
</div>
<div id='mobile-projects' class='mobile-category flex jc-between ai-center'>
<div class='mobile-title antialiased cursor-d'>Projects</div>
<div class="mobile-nav-arrow"></div>
</div>
<div id='mobile-project-items' class='mobile-expanded-category'>
<ul>
<li><a href='/projects'>Overview</a></li>
<li><a href='/projects/spring-boot'>Spring Boot</a></li>
<li><a href='/projects/spring-framework'>Spring Framework</a></li>
<li><a href='/projects/spring-cloud'>Spring Cloud</a></li>
<li><a href='/projects/spring-cloud-dataflow'>Spring Cloud Data Flow</a></li>
<li><a href='/projects/spring-data'>Spring Data</a></li>
<li><a href='/projects/spring-integration'>Spring Integration</a></li>
<li><a href='/projects/spring-batch'>Spring Batch</a></li>
<li><a href='/projects/spring-security'>Spring Security</a></li>
<li><a class='blue mb-2 inline-block' href='/projects'>View all projects</a></li>
<p class='uppercase smallest white'>Development Tools</p>
<li><a href='/tools'>Spring Tools 4</a></li>
<li><a href='https://start.spring.io'>Spring Initializr <svg class='external-link-icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><polyline points="15 10.94 15 15 1 15 1 1 5.06 1" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /><polyline points="8.93 1 15 1 15 7.07" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /><line x1="15" y1="1" x2="8" y2="8" fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="2" /></svg></a></li>
</ul>
</div>
<a href='/training' class='mobile-link block'><div class='mobile-title antialiased'>Training</div></a>
<a href='/support' class='mobile-link block'><div class='mobile-title antialiased'>Support</div></a>
<div id='mobile-community' class='mobile-category flex jc-between ai-center'>
<div class='mobile-title antialiased cursor-d'>Community</div>
<div class="mobile-nav-arrow"></div>
</div>
<div id='mobile-community-items' class='mobile-expanded-category'>
<ul>
<li><a href='/community'>Overview</a></li>
<li><a href='/events'>Events</a></li>
<li><a href='/team'>Team</a></li>
</ul>
</div>

</div>
</nav>
<div id="search-nav" role="search">
<div class="container relative">
<form id="searchheaderform" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓">
<input type="text" name="q" id="searchheaderinput" autocomplete="off" placeholder="Search for documentation, guides, and posts...">
<input type="submit" value="" id="searchheadersubmit" data-disable-with="">
</form>

</div>
</div>
</header>
<div id="main">
<div id='hero' role='banner'>
<div class='container'>
<div class='left-geo'>
<div class='relative'>
<div class='quarter-circle1'></div>
<div class='quarter-circle2'></div>
<div class='semicircle'></div>
</div>
</div>
<div class='right-geo'>
<div class='relative'>
<div class='quarter-circle1'></div>
<div class='quarter-circle2'></div>
<div class='square'></div>
</div>
</div>
<div class='center relative'>
<div class='h1 antialiased mx-auto'>
<h1 class='h1 antialiased mx-auto'>
<div>Spring makes Java</div>
<div id='wordWrapper'>
<div>simple.</div>
<div>modern.</div>
<div>productive.</div>
<div>reactive.</div>
<div>cloud-ready.</div>
</div>
</h1>
</div>
<a href='/why-spring' class='button uppercase transparent animate'>Why Spring</a>
<a href='/quickstart' class='button uppercase transparent animate'>Quickstart</a>
</div>
</div>
</div>
<div class='content' role='main'>
<div class='container'>
<div id='news' class='flex jc-between mx-auto'>
<div class='new-tag uppercase inline-block grow-0'>News</div>
<div id='subnews' class='flex jc-between'>
<a href="https://www.brighttalk.com/webcast/14893/535189" class='news-item blue link-animate grow-0'>Spring Cloud Gateway - commercial updates</a>
<div class='vdivider'></div>
<a href="https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement" class='news-item blue link-animate grow-0'>Spring Framework CVE-2022-22965</a>
 </div>
</div>
</div>
<hr class='light mt-0'>
<br>
<section class='mb-5' role="contentinfo" aria-label="What Spring can do">
<div class='container'>
<h2 class='h2 antialiased'>
What Spring can do
</h2>
</div>
<div class='container cards grid flex jc-between flex-wrap'>
<a href='/microservices' class='card block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-microservices" aria-hidden='true' focusable='false' data-icon='icon-microservices' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path d="M98.5,57.1L73.6,42.7l6-3.5c0.2-0.1,0.4-0.4,0.4-0.7V23.3c0-0.3-0.1-0.5-0.4-0.6c-0.1,0-0.1,0-0.2,0L66.3,15
	c-0.2-0.1-0.5-0.1-0.8,0l-13.2,7.7c-0.1,0-0.1,0.1-0.2,0.2c0,0-0.1,0.1-0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.2v6.9L49.8,29
	l-11.4,6.6V31c0-0.3-0.1-0.5-0.4-0.6c-0.1,0-0.1,0-0.2,0l-13.2-7.6c-0.2-0.1-0.5-0.1-0.8,0l-13.2,7.6c-0.1,0-0.1,0.1-0.2,0.2
	c0,0-0.1,0-0.1,0.1c0,0.1,0,0.1-0.1,0.2c0,0,0,0.1,0,0.1v15.2c0,0.3,0.1,0.5,0.4,0.7l4.1,2.4L1.5,57.1l25.5,14.7v1.8
	c0,0.3,0.1,0.5,0.4,0.7l13.2,7.6c0.1,0.1,0.2,0.1,0.4,0.1H41c0.1,0,0.3,0,0.4-0.1l1.5-0.9l7.3,4.2L65.9,76l6.8,4l24-14l-6.8-3.9
	L98.5,57.1z M54.3,23.3l11.7-6.8l11.8,6.8L66,30.1l-6.3-3.7C59.7,26.5,54.3,23.3,54.3,23.3z M53.5,31.1v-6.4l5.5,3.1l6.3,3.6v6.4v7
	l-11.8-6.7v-5.3L53.5,31.1z M12.7,31l11.7-6.8L36.1,31l-11.7,6.8l-6.3-3.7L12.7,31z M12,32.3l6.9,4l4.9,2.8v6.8v6.7l-5.8-3.3
	l-1.5-0.9L12,45.8L12,32.3z M28.4,72.6v-1.7V59.7l2.4,1.3l9.4,5.4v11.2v2.2l-11.8-6.8V72.6z M29.2,58.3l11.7-6.8l11.7,6.8l-11.7,6.8
	l-9.8-5.6L29.2,58.3L29.2,58.3z M54.9,64l17.6-10.2L87,62.1L66,74.3L55,68L54.9,64z M50.2,83.4l-5.8-3.3l10.2-5.9
	c0.2-0.1,0.4-0.4,0.4-0.7v-3.9l9.5,5.5L50.2,83.4z M93.8,66l-21,12.2l-5.3-3.1l21-12.2L93.8,66z M72.6,52L54.9,62.3v-4
	c0-0.3-0.1-0.5-0.4-0.7c-0.1,0-0.1,0-0.2,0l-13.2-7.6c-0.2-0.1-0.5-0.1-0.8,0l-13.2,7.6l0,0c-0.1,0-0.1,0.1-0.1,0.1
	c0,0-0.1,0.1-0.1,0.1c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0,0.1,0,0.2V70L4.5,57l11.9-6.9l7.5,4.5c0.1,0.1,0.2,0.1,0.4,0.1h0.1
	c0.1,0,0.3,0,0.4-0.1l13.2-7.7c0.2-0.1,0.4-0.4,0.4-0.7v-8.9l11.4-6.6l2.1,1.2v6.6c0,0.3,0.1,0.5,0.4,0.7l13.2,7.6
	c0.1,0.1,0.2,0.1,0.4,0.1h0.1c0.1,0,0.3,0,0.4-0.1l5.7-3.3l23.4,13.5l-7.1,4.1L72.6,52z" fill="currentColor" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Microservices</h3>
<p>Quickly deliver production&#8209;grade features with independently evolvable microservices.</p>
</a>
<a href='/reactive' class='card block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-reactive" aria-hidden='true' focusable='false' data-icon='icon-reactive' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<g>
<path fill="currentColor" d="M92.5,38.3c0-0.9-0.2-1.7-0.6-2.5C91,34,89.4,32.3,87,30.9c-2.8-1.6-6.6-2.9-11.2-3.8
		c-1.6-2.7-3.8-4.9-6.6-6.5c-2.4-1.4-5.1-2.3-8.1-2.8c-6.6-1-13.8,0.3-20.5,3.8c-8.8-1.1-16.3-0.1-21.1,2.7
		c-4.8,2.8-6.6,7.3-4.9,12.4c-4.4,3-6.8,6.1-6.9,9.2c0,0.1-0.1,0.2-0.1,0.3c0,0,0,0,0,0l0,15c0,1,0.2,1.9,0.6,2.8
		c0.9,1.8,2.5,3.5,5,4.9c2.8,1.6,6.6,2.9,11.2,3.8c1.6,2.7,3.8,4.9,6.7,6.5c2.4,1.4,5.1,2.3,8.1,2.8c1.4,0.2,2.9,0.3,4.4,0.3
		c4.1,0,8.3-0.8,12.4-2.4c0.1-0.1,0.3-0.1,0.4-0.2c0.5-0.2,1-0.4,1.6-0.7c0.4-0.2,0.7-0.4,1.1-0.5c0.2-0.1,0.4-0.2,0.7-0.3
		c1.1,0.1,2.2,0.2,3.3,0.3c1.2,0.1,2.3,0.1,3.4,0.1c1,0,1.9,0,2.8-0.1c0.1,0,0.2,0,0.3,0c0.7,0,1.3-0.1,2-0.2c0.1,0,0.2,0,0.3,0
		c0.6-0.1,1.1-0.2,1.7-0.3c0.1,0,0.1,0,0.2,0c2.8-0.5,5.2-1.3,7.2-2.5c3.6-2.1,5.5-5.1,5.6-8.7l0-4.2c4.1-2.9,6.3-6.1,6.3-9.1l0-15
		C92.6,38.5,92.6,38.4,92.5,38.3z M77.5,75.4V62.1c1.1-0.4,2.2-0.9,3.2-1.4c1.2-0.7,2.3-1.6,3.1-2.5c0.3-0.3,0.5-0.6,0.8-1
		c0,0,0,0,0,0c0-0.1,0.1-0.1,0.1-0.2l0,5.9l0,0.5l0,0.3l0,3.3c0,3-1.7,5.6-4.8,7.4C79.2,74.7,78.4,75.1,77.5,75.4z M38.2,23
		c-0.1,0.1-0.2,0.1-0.3,0.2c-0.7,0.4-1.4,0.9-2.1,1.4c0,0,0,0,0,0c-0.7,0.5-1.4,1-2,1.5c-0.1,0.1-0.3,0.2-0.4,0.3
		c-0.6,0.5-1.2,1.1-1.8,1.6c-0.1,0.1-0.2,0.2-0.3,0.3c-0.5,0.5-1.1,1.1-1.6,1.6c-0.1,0.1-0.1,0.1-0.2,0.2c-0.6,0.2-1.2,0.4-1.7,0.5
		c-0.1,0-0.1,0-0.2,0.1c-0.7,0.2-1.3,0.5-2,0.7c-0.2,0.1-0.4,0.1-0.6,0.2c-0.5,0.2-0.9,0.3-1.4,0.5c-0.2,0.1-0.5,0.2-0.7,0.3
		c-0.4,0.2-0.8,0.3-1.1,0.5c-0.2,0.1-0.5,0.2-0.7,0.3c-0.3,0.2-0.7,0.3-1,0.5c-0.2,0.1-0.5,0.2-0.7,0.3c-0.3,0.2-0.6,0.3-0.9,0.5
		c-0.2,0.1-0.4,0.2-0.7,0.4c-0.3,0.2-0.6,0.3-0.9,0.5c-0.2,0.1-0.4,0.2-0.6,0.4c-0.1,0.1-0.2,0.1-0.4,0.2c-1.3-4.3,0.2-7.9,4.3-10.3
		c3.3-1.9,8-2.9,13.6-2.9C35.2,22.8,36.7,22.8,38.2,23z M43.2,22c5.8-2.6,12-3.5,17.6-2.7c2.8,0.4,5.3,1.3,7.5,2.6
		c2.2,1.3,4,2.9,5.4,4.8c0,0-0.1,0-0.1,0c-0.9-0.1-1.8-0.3-2.8-0.4c-0.2,0-0.4,0-0.7-0.1c-0.8-0.1-1.7-0.2-2.5-0.2
		c-0.2,0-0.3,0-0.5,0c-1-0.1-2-0.1-3.1-0.2c-0.2,0-0.4,0-0.7,0c-0.9,0-1.8,0-2.7,0c-0.1,0-0.3,0-0.4,0c-0.1,0-0.1,0-0.2,0
		c-0.7,0-1.3,0-2,0c-0.2,0-0.4,0-0.6,0c-0.1,0-0.1,0-0.2-0.1c-1-0.4-2-0.7-3-1c-0.2-0.1-0.4-0.1-0.5-0.2c-1-0.3-2.1-0.6-3.1-0.9
		c-0.2-0.1-0.4-0.1-0.6-0.2c-1-0.3-2.1-0.5-3.1-0.8c-0.1,0-0.2,0-0.3-0.1c-1-0.2-2-0.4-3-0.6C43.5,22.1,43.4,22.1,43.2,22z
		 M76.7,28.9c3.8,0.8,7.1,2,9.5,3.4c2.1,1.2,3.6,2.6,4.3,4.2c0.7,1.6,0.6,3.1,0,4.5c-0.1,0.2-0.2,0.4-0.3,0.6c0,0,0,0.1-0.1,0.1
		c-0.1,0.1-0.2,0.3-0.3,0.4c-0.1,0.1-0.2,0.3-0.3,0.4c-0.1,0.1-0.1,0.2-0.2,0.2c-1.2,1.6-2.9,2.9-4.3,3.9c0,0,0-0.1,0-0.1
		c0,0,0-0.1-0.1-0.1c-0.1-0.1-0.1-0.3-0.2-0.4c-0.1-0.2-0.2-0.5-0.4-0.7c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.3-0.5-0.4-0.7
		c-0.1-0.2-0.2-0.3-0.3-0.5c-0.2-0.3-0.3-0.5-0.5-0.8c-0.1-0.1-0.2-0.3-0.3-0.4c-0.2-0.3-0.4-0.5-0.6-0.8c-0.1-0.1-0.2-0.3-0.3-0.4
		c-0.3-0.4-0.6-0.7-0.9-1c0,0-0.1-0.1-0.1-0.1c-0.4-0.4-0.7-0.8-1.1-1.2c-0.1-0.1-0.2-0.2-0.4-0.3c-0.2-0.2-0.5-0.5-0.7-0.7
		c0-0.3,0-0.5,0-0.8c0-0.1,0-0.2,0-0.4c0-0.4,0-0.9,0-1.3c0-0.1,0-0.3,0-0.4c0-0.3-0.1-0.6-0.1-0.9c0-0.2,0-0.3-0.1-0.5
		c0-0.3-0.1-0.5-0.1-0.8c0-0.2-0.1-0.3-0.1-0.5c-0.1-0.3-0.1-0.5-0.2-0.8c0-0.1-0.1-0.3-0.1-0.4c-0.1-0.4-0.2-0.8-0.4-1.1
		c0,0,0-0.1,0-0.1C77,29.6,76.8,29.2,76.7,28.9z M58.7,63.8l0,9.2l0,4.1c-0.7,0.4-1.4,0.7-2.1,1c-0.2,0.1-0.5,0.2-0.7,0.3
		c-0.5,0.2-1,0.4-1.5,0.6c-0.3,0.1-0.5,0.2-0.8,0.3c-0.7,0.2-1.3,0.4-2,0.6c-0.3,0.1-0.7,0.2-1,0.2c-0.3,0.1-0.7,0.2-1,0.2
		c-0.4,0.1-0.8,0.2-1.2,0.2c-0.3,0-0.5,0.1-0.8,0.1c-1,0.1-2.1,0.2-3.1,0.3V67.4v0c0.1,0,0.1,0,0.2,0c0.9,0,1.9-0.1,2.9-0.2
		c0.3,0,0.5-0.1,0.8-0.1c0.4-0.1,0.8-0.1,1.2-0.2c0.3-0.1,0.7-0.1,1-0.2c0.4-0.1,0.7-0.2,1.1-0.2c0.7-0.2,1.3-0.4,2-0.6
		c0.3-0.1,0.5-0.2,0.8-0.3c0.2-0.1,0.4-0.1,0.6-0.2c0.1,0,0.2-0.1,0.3-0.1c0.2-0.1,0.4-0.1,0.5-0.2c0.2-0.1,0.5-0.2,0.7-0.3
		c0,0,0,0,0,0c0.2-0.1,0.4-0.2,0.6-0.3c0.4-0.2,0.8-0.3,1.1-0.5C58.4,63.9,58.5,63.8,58.7,63.8C58.6,63.8,58.6,63.8,58.7,63.8
		C58.6,63.8,58.6,63.8,58.7,63.8L58.7,63.8z M40.6,23.4c0.1,0,0.1-0.1,0.2-0.1c0,0,0,0,0,0c0,0,0,0,0,0c0.1,0,0.2,0,0.3,0
		c0.8,0.1,1.6,0.2,2.4,0.4c0.2,0,0.4,0.1,0.6,0.1c0.9,0.2,1.8,0.3,2.7,0.5c0.1,0,0.3,0.1,0.4,0.1c0.8,0.2,1.6,0.4,2.4,0.6
		c0.2,0.1,0.4,0.1,0.6,0.2c0.9,0.3,1.8,0.5,2.8,0.8c0,0,0.1,0,0.1,0c0,0,0,0,0,0c-0.9,0.1-1.9,0.1-2.8,0.2c-0.2,0-0.5,0-0.7,0.1
		c-0.8,0.1-1.7,0.2-2.5,0.3c-0.3,0-0.6,0.1-0.9,0.1c-1.1,0.1-2.1,0.3-3.2,0.4c-1.1,0.2-2.1,0.4-3.2,0.5c-0.3,0.1-0.7,0.1-1,0.2
		c-0.7,0.1-1.5,0.3-2.2,0.4c-0.3,0.1-0.7,0.2-1,0.2c-0.8,0.2-1.5,0.4-2.2,0.5c-0.3,0.1-0.5,0.1-0.8,0.2c-0.1,0-0.2,0-0.3,0.1
		c0,0,0,0,0,0c0,0,0.1-0.1,0.2-0.1c0.5-0.5,1.1-1,1.7-1.5c0.1-0.1,0.2-0.2,0.4-0.3c0.5-0.4,1-0.8,1.6-1.2c0.1-0.1,0.2-0.2,0.4-0.3
		c0.6-0.4,1.2-0.9,1.9-1.3c0.1-0.1,0.3-0.2,0.4-0.3C39.4,24,40,23.7,40.6,23.4z M16.3,37.4C16.4,37.4,16.4,37.4,16.3,37.4
		c0.2-0.1,0.4-0.2,0.6-0.4c0.1-0.1,0.3-0.2,0.4-0.2c0.9-0.5,1.9-1,2.9-1.5c0.2-0.1,0.3-0.1,0.5-0.2c0.4-0.2,0.8-0.4,1.2-0.5
		c0.2-0.1,0.4-0.2,0.5-0.2c0.4-0.2,0.8-0.3,1.2-0.5c0.2-0.1,0.3-0.1,0.5-0.2c0.5-0.2,1.1-0.4,1.7-0.6c0,0,0.1,0,0.1,0
		c0.5-0.2,1.1-0.4,1.7-0.6c0,0,0,0,0,0c-0.4,0.5-0.8,1.1-1.2,1.7c-0.1,0.2-0.2,0.3-0.3,0.5c-0.3,0.5-0.6,0.9-0.8,1.4
		c-0.1,0.2-0.2,0.3-0.3,0.5c-0.3,0.6-0.7,1.2-0.9,1.9c-0.3,0.6-0.6,1.3-0.8,1.9c-0.1,0.2-0.1,0.4-0.2,0.6c-0.2,0.4-0.3,0.9-0.4,1.3
		c-0.1,0.2-0.1,0.5-0.2,0.7c-0.1,0.4-0.2,0.9-0.3,1.3c0,0.2-0.1,0.5-0.1,0.7c0,0.1,0,0.2-0.1,0.3c0,0,0,0,0,0c0,0,0,0-0.1-0.1
		c-0.1-0.1-0.2-0.2-0.3-0.3c-0.3-0.3-0.5-0.5-0.8-0.8c-0.1-0.1-0.2-0.3-0.4-0.4c-0.2-0.2-0.4-0.5-0.6-0.7c-0.1-0.1-0.2-0.3-0.3-0.4
		c-0.2-0.2-0.4-0.5-0.6-0.7c-0.1-0.1-0.2-0.2-0.3-0.4c-0.2-0.3-0.5-0.7-0.7-1c0,0,0-0.1-0.1-0.1c-0.2-0.4-0.5-0.7-0.7-1.1
		c-0.1-0.1-0.1-0.2-0.2-0.4c-0.1-0.2-0.3-0.5-0.4-0.7c-0.1-0.1-0.1-0.3-0.2-0.4C16.5,37.6,16.4,37.5,16.3,37.4
		C16.4,37.4,16.3,37.4,16.3,37.4z M33.3,30.7c0.7-0.2,1.4-0.3,2.1-0.5c0.4-0.1,0.8-0.2,1.1-0.3c0.8-0.2,1.5-0.3,2.3-0.5
		c0.3-0.1,0.7-0.1,1-0.2c1.1-0.2,2.3-0.4,3.4-0.6c1.2-0.2,2.3-0.3,3.5-0.5c0.4-0.1,0.9-0.1,1.3-0.1c0.7-0.1,1.4-0.2,2.2-0.2
		c0.5,0,1-0.1,1.5-0.1c0.7-0.1,1.3-0.1,2-0.1c0.5,0,1.1,0,1.6-0.1c0.6,0,1.2-0.1,1.8-0.1c0,0,0,0,0,0c0,0,0,0,0,0
		c0.5,0.2,1,0.4,1.5,0.6c0.4,0.2,0.9,0.3,1.3,0.5c0.6,0.2,1.2,0.5,1.7,0.8c0.3,0.2,0.7,0.3,1.1,0.5c0.7,0.3,1.3,0.6,1.9,1
		c0.3,0.1,0.5,0.2,0.8,0.4c0.9,0.5,1.8,0.9,2.6,1.4c0.8,0.5,1.7,1,2.4,1.5c0.2,0.1,0.4,0.3,0.7,0.5c0.5,0.4,1.1,0.7,1.6,1.1
		c0.3,0.2,0.5,0.4,0.8,0.6c0.4,0.3,0.9,0.7,1.3,1c0.3,0.2,0.6,0.5,0.8,0.7c0.3,0.3,0.6,0.5,1,0.8c0,0,0,0,0,0c0,0,0,0,0,0
		c0,0.3-0.1,0.6-0.1,0.9c0,0.3-0.1,0.5-0.1,0.8c-0.1,0.4-0.2,0.8-0.3,1.2c-0.1,0.2-0.1,0.5-0.2,0.7c-0.1,0.4-0.3,0.9-0.4,1.3
		c-0.1,0.2-0.1,0.4-0.2,0.6c-0.2,0.6-0.5,1.3-0.8,1.9c-0.3,0.7-0.6,1.3-1,2c-0.1,0.2-0.2,0.4-0.3,0.6c-0.3,0.4-0.5,0.9-0.8,1.3
		c-0.2,0.2-0.3,0.5-0.5,0.7c-0.3,0.4-0.5,0.8-0.8,1.1c-0.2,0.2-0.4,0.5-0.6,0.7c-0.3,0.3-0.5,0.6-0.8,1c0,0,0,0,0,0c0,0,0,0,0,0
		c-0.6,0.2-1.2,0.3-1.8,0.5c-0.4,0.1-0.8,0.2-1.2,0.3c-0.7,0.2-1.4,0.3-2.1,0.5c-0.4,0.1-0.8,0.2-1.1,0.3c-0.8,0.2-1.5,0.3-2.3,0.5
		c-0.3,0.1-0.7,0.1-1,0.2c-1.1,0.2-2.3,0.4-3.4,0.6c-1.2,0.2-2.3,0.3-3.5,0.5c-0.3,0-0.6,0.1-1,0.1c-0.8,0.1-1.7,0.2-2.5,0.3
		c-0.5,0-0.9,0.1-1.4,0.1c-0.7,0.1-1.4,0.1-2.1,0.2c-0.5,0-1,0-1.6,0.1c-0.6,0-1.2,0.1-1.8,0.1c0,0,0,0,0,0c0,0,0,0,0,0
		c-0.5-0.2-1-0.4-1.5-0.6c-0.4-0.2-0.8-0.3-1.3-0.5c-0.6-0.2-1.2-0.5-1.7-0.8c-0.3-0.2-0.7-0.3-1-0.5c-0.7-0.3-1.3-0.6-1.9-1
		c-0.3-0.1-0.5-0.2-0.8-0.4c-0.9-0.5-1.8-0.9-2.6-1.4c-0.8-0.5-1.7-1-2.4-1.5c-0.2-0.2-0.5-0.3-0.7-0.5c-0.5-0.3-1.1-0.7-1.6-1.1
		c-0.3-0.2-0.6-0.4-0.8-0.6c-0.4-0.3-0.9-0.6-1.3-1c-0.3-0.2-0.6-0.5-0.9-0.7c-0.3-0.3-0.6-0.5-0.9-0.8c0,0,0,0,0,0c0,0,0,0,0,0
		c0-0.3,0.1-0.6,0.1-0.9c0-0.3,0.1-0.5,0.1-0.8c0.1-0.4,0.2-0.8,0.3-1.2c0.1-0.3,0.1-0.5,0.2-0.8c0.1-0.4,0.3-0.8,0.4-1.3
		c0.1-0.2,0.1-0.5,0.2-0.7c0.2-0.6,0.5-1.3,0.8-1.9c0.3-0.7,0.6-1.3,1-1.9c0.1-0.2,0.3-0.4,0.4-0.7c0.2-0.4,0.5-0.8,0.7-1.2
		c0.2-0.2,0.3-0.5,0.5-0.7c0.3-0.4,0.5-0.8,0.8-1.1c0.2-0.2,0.4-0.5,0.6-0.7c0.3-0.3,0.5-0.6,0.8-1c0,0,0,0,0,0c0,0,0,0,0,0
		c0.6-0.2,1.2-0.3,1.8-0.5C32.5,30.9,32.9,30.8,33.3,30.7z M39.9,59.2c0.1,0,0.2,0,0.3,0c0.8,0,1.7,0,2.5,0c0.1,0,0.1,0,0.2,0.1
		c1,0.4,2,0.7,3,1c0.2,0.1,0.4,0.1,0.5,0.2c1,0.3,2.1,0.6,3.1,0.9c0.2,0.1,0.4,0.1,0.6,0.2c1,0.3,2.1,0.5,3.1,0.8
		c0.1,0,0.2,0,0.3,0.1c1,0.2,2,0.4,3,0.6c0.1,0,0.2,0,0.3,0.1c-0.2,0.1-0.5,0.2-0.7,0.3c-0.1,0-0.2,0.1-0.4,0.2
		c-0.2,0.1-0.4,0.2-0.6,0.3c-0.2,0.1-0.3,0.1-0.5,0.2c-0.3,0.1-0.6,0.2-0.9,0.3c0,0-0.1,0-0.1,0c-0.2,0.1-0.3,0.1-0.5,0.2
		c-0.3,0.1-0.5,0.2-0.8,0.2c-0.3,0.1-0.6,0.2-0.8,0.2c-0.1,0-0.2,0-0.2,0.1c0,0,0,0,0,0c-0.6,0.2-1.2,0.3-1.9,0.4
		c-0.5,0.1-0.9,0.2-1.4,0.2c-0.3,0-0.5,0.1-0.8,0.1c-0.5,0.1-1,0.1-1.5,0.2c-0.2,0-0.4,0-0.6,0c-0.5,0-1.1,0.1-1.6,0.1
		c-0.8,0-1.5,0-2.2-0.1c-0.7,0-1.4-0.1-2.1-0.2c-0.1,0-0.2,0-0.3-0.1c-2.7-0.4-5.1-1.3-7.2-2.5c-2.2-1.3-4-2.9-5.4-4.8c0,0,0,0,0,0
		c0.6,0.1,1.2,0.2,1.8,0.3c0.2,0,0.4,0,0.6,0.1c0.4,0.1,0.9,0.1,1.3,0.2c0.2,0,0.5,0,0.7,0.1c0.4,0,0.8,0.1,1.2,0.1
		c0.3,0,0.5,0,0.8,0.1c0.4,0,0.8,0.1,1.2,0.1c0.3,0,0.5,0,0.8,0c0.4,0,0.8,0,1.2,0.1c0.3,0,0.6,0,0.9,0c0.4,0,0.8,0,1.2,0
		c0.3,0,0.6,0,0.9,0C39.3,59.2,39.6,59.2,39.9,59.2z M67.7,55.6C67.7,55.6,67.7,55.6,67.7,55.6c0,0-0.1,0.1-0.1,0.1
		c-0.5,0.5-1.1,1-1.7,1.5c-0.1,0.1-0.2,0.2-0.3,0.3c-0.5,0.4-1,0.8-1.6,1.2c-0.1,0.1-0.2,0.2-0.4,0.3c-0.6,0.4-1.2,0.9-1.9,1.3
		c-0.1,0.1-0.3,0.2-0.4,0.3c-0.6,0.4-1.2,0.7-1.8,1c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0
		c-0.1,0-0.1,0-0.2,0c-0.8-0.1-1.6-0.2-2.4-0.4c-0.2,0-0.4-0.1-0.6-0.1c-0.9-0.2-1.8-0.3-2.7-0.5c-0.1,0-0.3-0.1-0.4-0.1
		c-0.8-0.2-1.6-0.4-2.5-0.6c-0.2-0.1-0.4-0.1-0.6-0.2c-0.9-0.3-1.8-0.5-2.8-0.8c0,0-0.1,0-0.1,0c0,0,0,0,0,0
		c0.9-0.1,1.9-0.1,2.8-0.2c0.2,0,0.5,0,0.7-0.1c0.8-0.1,1.7-0.2,2.5-0.3c0.3,0,0.6-0.1,0.9-0.1c1.1-0.1,2.1-0.3,3.2-0.4
		c1.1-0.2,2.1-0.4,3.2-0.5c0.3-0.1,0.7-0.1,1-0.2c0.7-0.1,1.5-0.3,2.2-0.4c0.4-0.1,0.7-0.2,1.1-0.2c0.7-0.2,1.5-0.3,2.2-0.5
		c0.3-0.1,0.6-0.1,0.9-0.2C67.5,55.7,67.6,55.7,67.7,55.6z M79.9,59.3c-0.9,0.5-1.9,1-3,1.3c-4,1.4-9.1,1.9-15,1.4
		c0,0,0.1,0,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0.7-0.4,1.4-0.9,2.1-1.4c0,0,0,0,0,0c0.7-0.5,1.4-1,2-1.5
		c0.1-0.1,0.3-0.2,0.4-0.3c0.6-0.5,1.2-1.1,1.8-1.6c0.1-0.1,0.2-0.2,0.3-0.3c0.6-0.5,1.1-1.1,1.6-1.7c0,0,0.1-0.1,0.1-0.1
		c0.5-0.2,1.1-0.3,1.6-0.5c0.1,0,0.3-0.1,0.4-0.1c0.7-0.2,1.3-0.4,2-0.7c0.2-0.1,0.4-0.2,0.6-0.2c0.4-0.2,0.9-0.3,1.3-0.5
		c0.2-0.1,0.5-0.2,0.7-0.3c0.4-0.2,0.8-0.3,1.1-0.5c0.2-0.1,0.5-0.2,0.7-0.3c0.3-0.2,0.7-0.3,1-0.5c0.2-0.1,0.5-0.2,0.7-0.3
		c0.3-0.2,0.6-0.3,0.9-0.5c0.2-0.1,0.5-0.2,0.7-0.4c0.3-0.2,0.6-0.3,0.9-0.5c0.2-0.1,0.4-0.2,0.6-0.3c0,0,0,0,0.1,0
		c0.1-0.1,0.2-0.1,0.4-0.2c0.1,0.5,0.2,1,0.3,1.4c0,0,0,0.1,0,0.1c0,0.3,0.1,0.7,0.1,1c0,0.6,0,1.2-0.1,1.7c0,0,0,0.1,0,0.1
		c-0.1,0.8-0.4,1.5-0.8,2.2C83,57,81.7,58.3,79.9,59.3z M83.7,47.6C83.7,47.6,83.7,47.6,83.7,47.6c-0.2,0.1-0.4,0.2-0.6,0.4
		c-0.1,0.1-0.3,0.2-0.4,0.3c-0.5,0.3-0.9,0.5-1.4,0.8c0,0,0,0,0,0c-0.5,0.3-1,0.5-1.5,0.7c-0.2,0.1-0.3,0.2-0.5,0.2
		c-0.4,0.2-0.7,0.3-1.1,0.5c-0.2,0.1-0.4,0.2-0.6,0.3c-0.4,0.2-0.8,0.3-1.2,0.5c-0.2,0.1-0.4,0.2-0.6,0.2c-0.5,0.2-1,0.4-1.6,0.6
		c-0.1,0-0.1,0.1-0.2,0.1c-0.5,0.2-1.1,0.4-1.7,0.6c0,0,0,0,0,0c0.4-0.5,0.8-1.1,1.2-1.7c0.1-0.2,0.2-0.3,0.3-0.5
		c0.3-0.5,0.6-0.9,0.8-1.4c0.1-0.2,0.2-0.3,0.3-0.5c0.3-0.6,0.7-1.2,0.9-1.9c0.3-0.6,0.6-1.3,0.8-1.9c0.1-0.2,0.1-0.4,0.2-0.6
		c0.2-0.4,0.3-0.9,0.4-1.3c0.1-0.2,0.1-0.5,0.2-0.7c0.1-0.4,0.2-0.9,0.3-1.3c0-0.2,0.1-0.4,0.1-0.7c0-0.1,0-0.2,0.1-0.3c0,0,0,0,0,0
		c0,0,0.1,0.1,0.1,0.1c0.1,0.1,0.2,0.2,0.3,0.3c0.3,0.3,0.5,0.5,0.8,0.8c0.1,0.1,0.2,0.3,0.4,0.4c0.2,0.2,0.4,0.5,0.6,0.7
		c0.1,0.1,0.2,0.3,0.3,0.4c0.2,0.2,0.4,0.5,0.6,0.7c0.1,0.1,0.2,0.3,0.3,0.4c0.2,0.3,0.5,0.6,0.7,0.9c0,0.1,0.1,0.1,0.1,0.2
		c0.2,0.4,0.4,0.7,0.7,1.1c0.1,0.1,0.1,0.2,0.2,0.4c0.1,0.2,0.3,0.5,0.4,0.7c0.1,0.1,0.1,0.3,0.2,0.4C83.6,47.3,83.7,47.4,83.7,47.6
		C83.7,47.5,83.7,47.6,83.7,47.6z M23.3,48.4c0.1,0.1,0.3,0.2,0.5,0.4c0.3,0.2,0.5,0.4,0.8,0.6c0.4,0.3,0.9,0.7,1.3,1
		c0.3,0.2,0.5,0.4,0.8,0.6c0.5,0.3,1,0.7,1.5,1c0.2,0.2,0.5,0.3,0.7,0.5c0.8,0.5,1.6,1,2.4,1.4c1.1,0.6,2.2,1.2,3.3,1.8
		c0.3,0.2,0.7,0.3,1,0.5c0.9,0.4,1.8,0.9,2.7,1.3c0.2,0.1,0.4,0.2,0.6,0.3c0,0,0,0,0,0c-0.1,0-0.2,0-0.3,0c-1.1,0-2.1,0-3.2-0.1
		c-0.2,0-0.3,0-0.5,0c-0.9,0-1.8-0.1-2.7-0.2c-0.2,0-0.4,0-0.6-0.1c-1-0.1-2-0.2-2.9-0.3c-0.2,0-0.4-0.1-0.6-0.1
		c-0.8-0.1-1.6-0.2-2.4-0.4c-0.1,0-0.2,0-0.4-0.1c0,0,0,0,0,0c0,0,0,0,0,0c-0.1-0.2-0.2-0.4-0.3-0.6c0-0.1-0.1-0.2-0.1-0.3
		c-0.2-0.3-0.3-0.7-0.4-1.1c0-0.1-0.1-0.2-0.1-0.3c-0.1-0.3-0.2-0.6-0.3-0.9c0-0.1-0.1-0.3-0.1-0.4c-0.1-0.3-0.1-0.5-0.2-0.8
		c0-0.1-0.1-0.3-0.1-0.4c-0.1-0.3-0.1-0.5-0.1-0.8c0-0.1,0-0.2-0.1-0.4c0-0.4-0.1-0.7-0.1-1.1c0,0,0-0.1,0-0.1
		C23.3,49.1,23.3,48.7,23.3,48.4C23.3,48.4,23.3,48.4,23.3,48.4z M76.8,36.6c-0.2-0.1-0.3-0.2-0.5-0.4c-0.2-0.2-0.5-0.4-0.7-0.6
		c-0.4-0.3-0.9-0.7-1.3-1c-0.3-0.2-0.5-0.4-0.8-0.6c-0.5-0.3-1-0.7-1.5-1c-0.2-0.2-0.5-0.3-0.7-0.5c-0.8-0.5-1.6-1-2.4-1.4
		c-1.1-0.6-2.2-1.2-3.3-1.8c-0.3-0.2-0.7-0.3-1-0.5c-0.9-0.4-1.8-0.9-2.7-1.3c-0.2-0.1-0.4-0.2-0.6-0.3c0,0,0,0,0,0
		c0.1,0,0.2,0,0.3,0c1.1,0,2.2,0,3.2,0.1c0.1,0,0.2,0,0.4,0c1,0,1.9,0.1,2.9,0.2c0.2,0,0.4,0,0.5,0c1,0.1,2,0.2,3,0.3
		c0.2,0,0.4,0.1,0.5,0.1c0.8,0.1,1.7,0.2,2.5,0.4c0.1,0,0.2,0,0.3,0c0,0,0,0,0,0c0,0,0,0,0,0c0.1,0.2,0.2,0.4,0.3,0.6
		c0,0.1,0.1,0.2,0.1,0.3c0.2,0.3,0.3,0.7,0.4,1.1c0,0.1,0.1,0.2,0.1,0.3c0.1,0.3,0.2,0.6,0.3,0.8c0,0.1,0.1,0.3,0.1,0.4
		c0.1,0.3,0.1,0.5,0.2,0.8c0,0.1,0.1,0.3,0.1,0.4c0.1,0.3,0.1,0.5,0.1,0.8c0,0.1,0,0.2,0.1,0.4c0,0.4,0.1,0.8,0.1,1.2c0,0,0,0,0,0
		C76.8,35.9,76.8,36.2,76.8,36.6C76.8,36.6,76.8,36.6,76.8,36.6z M15,38.3c0,0.1,0.1,0.1,0.1,0.2c0.1,0.1,0.1,0.3,0.2,0.5
		c0.1,0.2,0.2,0.5,0.4,0.7c0.1,0.2,0.2,0.3,0.3,0.5c0.1,0.2,0.3,0.5,0.4,0.7c0.1,0.2,0.2,0.3,0.3,0.5c0.2,0.2,0.3,0.5,0.5,0.7
		c0.1,0.2,0.2,0.3,0.3,0.5c0.2,0.3,0.4,0.5,0.6,0.8c0.1,0.1,0.2,0.3,0.3,0.4c0.3,0.3,0.6,0.6,0.9,1c0.1,0.1,0.1,0.1,0.2,0.2
		c0.4,0.4,0.7,0.8,1.1,1.2c0.1,0.1,0.3,0.2,0.4,0.4c0.2,0.2,0.5,0.4,0.7,0.7c0,0.3,0,0.5,0,0.8c0,0.1,0,0.2,0,0.4c0,0.4,0,0.9,0,1.3
		c0,0.1,0,0.3,0,0.4c0,0.3,0.1,0.6,0.1,0.9c0,0.2,0,0.3,0.1,0.5c0,0.3,0.1,0.6,0.1,0.8c0,0.2,0.1,0.3,0.1,0.5
		c0.1,0.3,0.1,0.6,0.2,0.9c0,0.1,0.1,0.3,0.1,0.4c0.1,0.4,0.2,0.8,0.4,1.2c0,0,0,0,0,0c0.1,0.4,0.3,0.7,0.4,1c0,0,0,0,0,0
		c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1,0-0.2,0c-0.4-0.1-0.8-0.2-1.2-0.3c-0.3-0.1-0.6-0.2-1-0.3c-0.1,0-0.2-0.1-0.3-0.1
		c-2.6-0.7-4.9-1.6-6.7-2.7c-2.1-1.2-3.6-2.6-4.3-4.2C7.6,44.4,11.8,40.5,15,38.3z" />
<path fill="currentColor" d="M44.6,44.2c1.2,0.7,2.7,1.1,4.3,1.3c1,0.1,2,0.1,3,0c1.6-0.2,3.1-0.6,4.3-1.3c1.2-0.7,2-1.6,2.2-2.5
		c0.2-0.6,0.2-1.1,0-1.7c-0.3-0.9-1-1.8-2.3-2.5c-1.2-0.7-2.7-1.1-4.3-1.3c-1-0.1-2-0.1-3,0c-1.6,0.2-3.1,0.6-4.3,1.3
		c-1.2,0.7-2,1.6-2.2,2.5c-0.2,0.6-0.2,1.1,0,1.7C42.6,42.7,43.3,43.5,44.6,44.2z" />
</g>
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Reactive</h3>
<p>Spring's asynchronous, nonblocking architecture means you can get more from your computing resources.</p>
</a>
<a href='/cloud' class='card block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-cloud" aria-hidden='true' focusable='false' data-icon='icon-cloud' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="currentColor" d="M81.7,43.2c-3-11.1-10.9-21.9-19.6-26.9c-5.6-3.2-10.9-3.8-15-1.7c-0.9-1-1.9-1.8-3.1-2.5
	c-2.3-1.4-4.6-1.5-6.3-0.5l-8.9,5.2l0,0l-0.1,0.1L28.7,17c-1.6,1.1-2.5,3-2.4,5l-4,2.3l0,0h-0.1c-0.8,0.5-1.6,1.2-2.2,2
	c-1.6-0.8-3.5-0.7-5.1,0.1c-1.6,1-2.4,3-2.4,5.5c0,0.3,0,0.7,0.1,1c-1.9,0-3.8,0.7-5.2,2c-2,1.9-2.9,4.8-2.8,8.5
	c0.3,8.8,6.8,19.2,14.6,23.3l41,21.5c1.3,0.5,2.7,0.8,4.1,0.8c1.6,0,3.2-0.5,4.5-1.4c1.9-1.5,3.2-3.7,3.4-6.2l0.5,0.3H73
	c1.4,0.6,2.8,0.8,4.3,0.9c1.4,0,2.7-0.3,3.9-1l0.2-0.1l0,0l8.9-5.2c2.8-1.7,4.4-5,4.4-9.5C94.7,58.5,89,48.1,81.7,43.2z M87.2,50.7
	l-8,4.6c-1.7-2.4-3.8-4.4-6.2-6.1l8-4.6C83.4,46.2,85.5,48.3,87.2,50.7z M61.4,17.6c5,3.1,9.3,7.3,12.5,12.3l-8,4.6
	c-3.2-5-7.6-9.2-12.6-12.4c-4.4-2.5-8.6-3.4-12.2-2.5l5.8-3.3c0.2,0.1,0.4,0.1,0.6,0C51.1,14,56,14.5,61.4,17.6z M71.1,79L32.8,57.1
	c-7.4-4.3-13.5-14.7-13.4-23.2c0-1.9,0.4-3.8,1.2-5.6c1.1,0.6,2.1,1.5,2.9,2.4c0.3,0.3,0.7,0.3,1,0.1c3.5-2.3,8.4-2.1,13.8,0.8
	c8.5,4.5,16.3,14.6,19.4,25.1c0.1,0.2,0.2,0.3,0.3,0.4c7.1,4.2,12.8,13.6,13.1,21.6C71.1,78.8,71.1,78.9,71.1,79z M68.1,86.5
	c-1.8,1.3-4.4,1.5-7.2,0.4L20,65.4c-7.3-3.9-13.5-13.7-13.8-22c-0.1-3.2,0.7-5.8,2.3-7.4c1.2-1.1,2.7-1.7,4.3-1.6h0.7
	c0.2,0,0.5-0.1,0.6-0.2c0.2-0.2,0.2-0.4,0.2-0.7c-0.1-0.6-0.2-1.1-0.2-1.7c-0.1-2,0.5-3.5,1.6-4.2c1.1-0.6,2.3-0.6,3.5-0.1
	c-0.9,1.9-1.4,4.1-1.3,6.2c0,9,6.3,20,14.2,24.6l39,22.4C70.9,83,69.9,85.1,68.1,86.5L68.1,86.5z M59,55.9
	c-3.3-10.8-11.4-21.1-20.1-25.7c-5.6-3-10.8-3.3-14.8-1c-0.8-0.8-1.8-1.6-2.8-2.2c0.5-0.6,1.1-1.1,1.8-1.5l0,0l0.1-0.1l4.2-2.4
	c0.2-0.1,0.4-0.4,0.4-0.6c0-2,0.6-3.5,1.8-4.2s2.7-0.5,4.4,0.4c1.2,0.8,2.3,1.8,3.2,2.9l0.9,1L39,22c3.6-2.1,8.4-1.6,13.5,1.4
	c8.3,4.8,15.7,15.2,18.5,25.8l0.1,0.5l0.4,0.3c6.9,4.4,12.2,14,12.2,21.9c0.1,3.7-0.9,6.5-3,8c-1.9,1.3-4.5,1.5-7.4,0.4l0,0
	l-0.7-0.4c0-0.4,0-0.9,0-1.3C72.3,70.2,66.4,60.3,59,55.9z" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Cloud</h3>
<p>Your code, any cloud&mdash;we’ve got you covered. Connect and scale your services, whatever your platform.</p>
</a>
<a href='/web-applications' class='card block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-webapps" aria-hidden='true' focusable='false' data-icon='icon-webapps' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="currentColor" d="M33.44,13.35l-4.28,2.47L17.8,9.28l0,25.2,5.64,3.25,0,16.29-7.56-7.58V69.18l6-5.83.33-.28h2.09a16.4,16.4,0,0,0,6.55,8.29l35,20.22a7.18,7.18,0,0,0,3.55,1.06,4.41,4.41,0,0,0,2.25-.58h0l9.22-5.34c1.57-.91,2.44-2.76,2.45-5.21l.08-39.36ZM66.67,43.2l-41-23.65,3.45-2,37.51,21.6ZM25,20.85,66.67,45l0,15.94-41.73-24Zm8.48-5.77L81.15,42.6l-7.72,4.5-5.26-3V38.3L30.66,16.69ZM19.27,33.61l0-21.74,8.37,4.82-4.19,2.43,0,16.88Zm5.64,5L68.14,63.5l0-17.67,4.47,2.59v4.73l-.08,26.58h0l0,7.09c0,1.87-.6,3.24-1.69,3.88h0l-.12,0-.09,0h0l-.18.08h0l-.13,0-.1,0h0L70,91h0a.89.89,0,0,1-.25,0v0l-.22,0h-.28v0H69v0l-.22,0-.1,0v0l-.24,0h0l-.27-.08-.1,0v0l-.23-.07v0l-.31-.12-.11-.05v0l-.21-.09v0c-.21-.1-.43-.21-.66-.34v0h0L31.54,70a14.73,14.73,0,0,1-5.66-6.93H32.4l-7.54-7.55Z" />
<path fill="currentColor" d="M30.51,28.55h0C29.12,27.74,28,28.39,28,30h0a5.52,5.52,0,0,0,2.51,4.34h0c1.39.81,2.52.17,2.53-1.43A5.53,5.53,0,0,0,30.51,28.55Z" />
<path fill="currentColor" d="M39.14,33.53h0c-1.39-.81-2.52-.16-2.52,1.44a5.49,5.49,0,0,0,2.5,4.34c1.4.81,2.53.17,2.53-1.43h0A5.52,5.52,0,0,0,39.14,33.53Z" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Web apps</h3>
<p>Frameworks for fast, secure, and responsive web applications connected to any data store.</p>
</a>
</div>
<div class='container cards flex jc-between flex-wrap mw-850'>
<a href='/serverless' class='card third block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-serverless" aria-hidden='true' focusable='false' data-icon='icon-serverless' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="currentColor" d="M77.2,52.3c-0.4-0.2-0.9-0.1-1.1,0.3c0,0,0,0,0,0L59.8,80.1c-0.2,0.4-0.1,0.9,0.3,1.1c0.1,0.1,0.3,0.1,0.4,0.1
	c0.3,0,0.6-0.2,0.7-0.4l16.2-27.5C77.7,53,77.6,52.5,77.2,52.3C77.2,52.3,77.2,52.3,77.2,52.3z" />
<path fill="currentColor" d="M71.4,74.9c-0.4-0.2-0.9-0.1-1.1,0.3c0,0,0,0,0,0l-6.8,11.6c-0.2,0.4-0.1,0.9,0.3,1.1C63.9,88,64,88,64.2,88
	c0.3,0,0.6-0.2,0.7-0.4L71.7,76C71.9,75.6,71.8,75.1,71.4,74.9z" />
<path fill="currentColor" d="M77.2,36.7c0.4-0.2,0.5-0.7,0.3-1.1c-0.1-0.1-0.2-0.2-0.3-0.3l-10-5.8l4.3-14.9l0,0c0.2-0.1,0.3-0.3,0.3-0.6
	c0-0.3-0.2-0.6-0.4-0.7L56.6,4.8c-0.3-0.1-0.6-0.1-0.8,0L34.4,17.1c0,0,0,0-0.1,0.1c-0.1,0.1-0.1,0.1-0.2,0.2c0,0,0,0.1-0.1,0.1
	c0,0,0,0.1-0.1,0.1L22.5,62.5c-0.1,0.4,0.1,0.7,0.4,0.9l9.3,5.4l-5.5,16.8c-0.1,0.4,0,0.8,0.4,1l14.8,8.6c0.1,0.1,0.3,0.1,0.4,0.1
	c0.1,0,0.2,0,0.3-0.1c0.2-0.1,0.3-0.2,0.4-0.4l0,0l34.2-58C77.1,36.9,77.2,36.8,77.2,36.7z M56.2,6.5l13.2,7.7L49.7,25.5l-13.2-7.7
	L56.2,6.5z M24.3,61.7l11-42.6l0.5,0.3l12.9,7.5l-6.3,24.6l-4.8,18.4l-0.1,0.2L33,67.4l-8.8-5.1L24.3,61.7z M45.3,87.5l9.5-28.7
	c0-0.1,0-0.2,0-0.3c0-0.3-0.1-0.5-0.3-0.7c-0.3-0.2-0.7-0.2-1,0l0,0l-14,11.3l0,0l4.4-16.9l3.9-15.2l0.3-0.8l0.2-1l0.3-1.1l1.8-7
	l19.1-11l-3.7,12.5l-0.2,0.8l-0.2,0.8l-3.8,12.9L61.3,44l-0.2,0.5c0,0.1,0,0.2,0,0.3c0,0.2,0.1,0.4,0.3,0.6c0.3,0.2,0.6,0.2,0.9,0.1
	l11.9-6.8L45.3,87.5z" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Serverless</h3>
<p>The ultimate flexibility. Scale up on demand and scale to zero when there’s no demand.</p>
</a>
<a href='/event-driven' class='card third block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-streams" aria-hidden='true' focusable='false' data-icon='icon-streams' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="currentColor" d="M73.8,15.9c-5.4-3.1-10.5-3.6-14.3-1.4c-0.2,0.1-0.4,0.3-0.6,0.4L21,37.4l-0.2,0.1c-0.1,0-0.1,0.1-0.2,0.1
	l-0.4,0.2l0,0c-3.5,2.3-5.4,6.7-5.4,12.6c0,6.3,2.2,13.2,5.8,19.4h-8.5V88h18.2v-6.6c1.2,1,2.6,1.9,4,2.7c2.7,1.7,5.8,2.6,9,2.7
	c1.9,0,3.7-0.4,5.3-1.4l0,0l39-23.1v-0.1c3.7-2.3,5.7-6.8,5.7-12.8C93.3,37.2,84.6,22.1,73.8,15.9z M28.8,80.1v6.4H13.6V71.3h15.2
	L28.8,80.1L28.8,80.1z M44.6,65.6v8h-8v-8H44.6z M40,42.4v-3.8h11.3v11.3h-4.7C44.7,47.1,42.5,44.6,40,42.4z M44.9,49.9H40v-5.5
	C41.8,46.1,43.4,47.9,44.9,49.9L44.9,49.9z M26.4,57.8v-6.5h6.5v6.5H26.4z M52.5,81.4c1.4-2.7,2.2-5.8,2.1-8.9
	c0-6.9-2.7-14.6-6.9-21.2h5.1V37.1H38.5v4.1c-1.1-0.8-2.2-1.6-3.4-2.3c-2.7-1.7-5.9-2.6-9.1-2.7l29.5-17.5c-1.4,2.7-2.1,5.7-2,8.8
	c0,7.9,3.5,16.8,8.8,23.9h-2.8v6.5H66v-2.2c2.1,2.1,4.4,4,6.9,5.5c2.7,1.7,5.8,2.6,9,2.7h0.2L52.5,81.4z M91.8,49.5
	c0,5.6-1.9,9.7-5.2,11.6s-8,1.5-12.8-1.4c-2.9-1.7-5.5-3.8-7.7-6.3v-2.1h-1.8c-5.5-7-9.2-16-9.2-23.9c0-5.2,1.7-9.1,4.6-11.2
	l1.2-0.7c1.2-0.6,2.6-0.9,4-0.9c2.9,0.1,5.7,1,8.2,2.5C83.4,23.1,91.8,37.7,91.8,49.5z" />
<rect fill="currentColor" x="38.1" y="67.1" width="5" height="5" />
<rect fill="currentColor" x="3.3" y="61.9" width="6.5" height="6.5" />
<path fill="currentColor" d="M62.5,37.2h8v-8h-8L62.5,37.2z M64,30.7h5v5h-5V30.7z" />
<rect fill="currentColor" x="92.8" y="25" width="3.2" height="3.2" />
<rect fill="currentColor" x="77.6" y="38.3" width="3.2" height="3.2" />
<rect fill="currentColor" x="86.1" y="42.3" width="3.2" height="3.2" />
<rect fill="currentColor" x="74.3" y="47.4" width="3.2" height="3.2" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Event Driven</h3>
<p>Integrate with your enterprise. React to business events. Act on your streaming data in realtime.</p>
</a>
<a href='/batch' class='card third block quarter border-box center border mb-2 rad-5 shadow-hover'>
<div class="mw-100"><div>
<svg class="icon-batch" aria-hidden='true' focusable='false' data-icon='icon-batch' role='img' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="currentColor" d="M88.1,27.8L53.2,7.7c-0.2-0.1-0.5-0.1-0.8,0c-0.2,0.1-0.4,0.4-0.4,0.7V17l-7.5-4.3c-0.2-0.1-0.5-0.1-0.8,0
	c-0.2,0.1-0.4,0.4-0.4,0.6V22l-7.5-4.4c-0.2-0.1-0.5-0.1-0.8,0c-0.2,0.1-0.4,0.4-0.4,0.6l-0.1,31h-2.6c-0.4,0-0.7,0.3-0.8,0.8v2.4
	h-0.1c-0.8,0.1-1.6,0.3-2.3,0.5c-0.5,0.1-0.9,0.2-1.4,0.4l-3.4-2c-0.2-0.1-0.5-0.1-0.8,0l-6.5,3.8c-0.2,0.1-0.4,0.4-0.4,0.7V60h-2.7
	c-0.4,0-0.8,0.3-0.8,0.8v11.8v5.4c0,0.4,0.3,0.7,0.7,0.8c0,0,0,0,0,0h2.7v3.9c0,0.3,0.1,0.5,0.4,0.7l6.6,3.8
	c0.1,0.1,0.2,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1l0,0l3.4-2l0.9,0.3c0.6,0.2,1.3,0.3,1.9,0.5c0.3,0.1,0.7,0.1,1,0.2v2.4
	c0,0.4,0.3,0.8,0.7,0.8h9.3c0.4,0,0.7-0.3,0.8-0.7c0,0,0,0,0,0V86h0.1c0.4-0.1,0.8-0.2,1.3-0.3l0.4-0.1c0.7-0.2,1.3-0.3,1.9-0.5l0,0
	l3.4,1.9c0.1,0.1,0.2,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1l0,0l5-2.9l14.7,8.5c0.2,0.1,0.5,0.1,0.7,0c0.2-0.1,0.4-0.4,0.4-0.7v-8.7
	l7.5,4.3c0.1,0.1,0.2,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1c0.2-0.1,0.4-0.4,0.4-0.7v-8.7l7.5,4.3c0.1,0.1,0.2,0.1,0.4,0.1
	c0.1,0,0.3,0,0.4-0.1c0.2-0.1,0.4-0.4,0.4-0.7l0.2-53.4C88.5,28.3,88.3,28,88.1,27.8z M86.9,80.6l-7.1-4.1l0.1-43
	c0-0.3-0.1-0.5-0.4-0.7l-25.9-15V9.6L87,28.9L86.9,80.6z M78.2,77.3v8.2L71,81.5v-8.2v-1.7l0.1-17.4c0.1-0.2,0.1-0.5,0-0.7
	L58.3,31.2v-0.1c0-0.3-0.1-0.5-0.4-0.7l-4.4-2.5l-0.7-0.4L52,27l-7.1-4.1v-8.3l7.1,4.1l0.8,0.4l0.8,0.4l24.8,14.3l-0.1,41.7
	L78.2,77.3L78.2,77.3z M69.5,82.3v8.3l-12.9-7.4l0,0c0.2-0.1,0.4-0.4,0.4-0.7v-3.9h2.7c0.4,0,0.7-0.3,0.8-0.8v-2.5v-8.2v-1.7v-4.7
	c0-0.4-0.3-0.7-0.8-0.7h-0.1L57,60v-4c0-0.3-0.1-0.5-0.4-0.7l-3.2-1.8L52.7,53L52,52.6l-1.9-1.1c-0.2-0.1-0.5-0.1-0.8,0l-1.6,0.9
	l-1.8,1c-0.4-0.1-0.7-0.2-1.1-0.3l-0.8-0.2l-0.8-0.2c-0.4-0.1-0.8-0.2-1.2-0.2v-2.4c0-0.4-0.3-0.7-0.8-0.8h-5.2l0.1-29.7l7.2,4.1
	l0.8,0.4l0.8,0.4l7.1,4.1l0.8,0.4l0.8,0.4l3.1,1.8v14.7v0.3c0,0.3,0.1,0.5,0.4,0.7l12.7,7.3l-0.1,16.2v1.7v8.3L69.5,82.3L69.5,82.3z
	 M53.7,83.2L50.5,85V75l1.3-0.8l0.8-0.4l0.7-0.4h0.1l0.4-0.2l0.8-0.4l0.8-0.4l0.4-0.2v10l-0.4,0.2l-0.7,0.4L53.7,83.2z M19,61.5
	c0.3,0,0.6-0.2,0.7-0.5c0.4-0.9,1-1.8,1.8-2.5c0.3-0.3,0.3-0.8,0-1c-0.1-0.1-0.1-0.1-0.2-0.1l-2.5-1.5l4.9-2.8l3.3,1.9
	c0.2,0.1,0.4,0.1,0.6,0.1c0.6-0.2,1.2-0.4,1.8-0.5s1.2-0.3,1.9-0.4c0.3,0,0.6-0.1,0.9-0.2c0.4-0.1,0.6-0.4,0.6-0.7v-2.2h7.5v2.2
	c0,0.4,0.3,0.7,0.6,0.7c0.8,0.1,1.5,0.3,2.2,0.4l0.8,0.2l0.8,0.2c0.3,0.1,0.6,0.2,0.9,0.3c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.3-0.1
	l2-1.2l1.4-0.7l2.3,1.3l0.8,0.4l0.8,0.4l1.1,0.7l-1.1,0.7l-0.8,0.4l-0.6,0.4c0,0-0.1,0.1-0.1,0.1c-0.1,0.1-0.2,0.3-0.2,0.5
	c0,0.2,0.1,0.5,0.2,0.6l0,0c0.3,0.3,0.5,0.5,0.8,0.8c0.3,0.3,0.5,0.7,0.7,1.1c0.1,0.2,0.2,0.4,0.3,0.6c0.1,0.3,0.4,0.4,0.7,0.4h4.4
	v3v0.8h-4.4c-0.3,0-0.6,0.2-0.7,0.4c-0.4,1-1,1.9-1.8,2.6c-0.2,0.2-0.2,0.4-0.2,0.6c0,0.2,0.2,0.4,0.4,0.6l1.3,0.8l1.2,0.7l0,0
	l-1,0.6l-0.8,0.4l0,0l-0.7,0.4l-2.4,1.4l0,0l-3.1-1.8l-0.2-0.1l0,0c-0.1,0-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.3,0l0,0h-0.1h-0.1
	c-1.4,0.5-2.9,0.8-4.4,1.1c-0.4,0-0.6,0.4-0.6,0.7v2.2h-7.6l0,0v-2.2c0-0.3-0.2-0.6-0.5-0.7h-0.1c-0.6-0.1-1.1-0.2-1.6-0.3h-0.1
	c-0.5-0.1-1-0.2-1.6-0.4L28.5,72c-0.2-0.1-0.5-0.1-0.7-0.2l0,0c-0.2-0.1-0.4,0-0.6,0.1L27,72l-3.1,1.8l0,0L19,70.9l2.5-1.4
	c0.2-0.1,0.3-0.3,0.4-0.6c0-0.2-0.1-0.5-0.2-0.6c-0.8-0.7-1.4-1.6-1.8-2.5c-0.1-0.3-0.4-0.4-0.7-0.4h-4.4v-3.7L19,61.5L19,61.5z
	 M32.9,80.8v-3.4h7.8v3.4v4.8v2h-7.8L32.9,80.8z M18,78.6v-6.6l2.3,1.3l0.8,0.4l2,1.2v0.2V85L18,82.1V78.6z" />
<path fill="currentColor" d="M29.9,67.8c1.5,0.8,3.1,1.3,4.7,1.5c0.2,0,0.5,0.1,0.8,0.1h0.8c0.2,0,0.5,0,0.7,0c2.4,0,4.8-0.5,6.9-1.7
	l0.3-0.2c0.2-0.1,0.5-0.3,0.7-0.5c0.2-0.2,0.4-0.3,0.6-0.5c0.9-0.8,1.4-2,1.5-3.2c-0.1-1.4-0.8-2.8-1.9-3.6
	c-0.2-0.2-0.5-0.4-0.8-0.5c-0.1-0.1-0.3-0.2-0.4-0.3s-0.2-0.1-0.3-0.2c-2.2-1.1-4.7-1.6-7.2-1.5h-0.8l-0.8,0.1
	c-1.7,0.2-3.3,0.7-4.8,1.5c-2,1.1-3.1,2.7-3,4.4S27.9,66.6,29.9,67.8z" />
<rect fill="none" width="100" height="100" />
</svg>
</div></div>
<h3 class='h3 antialiased'>Batch</h3>
<p>Automated tasks. Offline processing of data at a time to suit you.</p>
</a>
</div>
</section>
<section class='container mb-5' role="contentinfo" aria-label="What have we here?">
<div id='whathavewe' class='flex jc-between'>
<div class='terminal rad-5 border-box'>
<code>
<span class='terminal-blue'>@SpringBootApplication</span><br>
<span class='terminal-blue'>@RestController</span><br>
<span class='terminal-green'>public</span> class DemoApplication {<br>
<div class='indent'>
<br>
<span class='terminal-blue'>@GetMapping</span>(<span class='terminal-lime'>&quot;/helloworld&quot;</span>)<br>
<span class='terminal-green'>public</span> String hello() {
<div class='indent typed-placeholder'>return String.format(<span class='terminal-lime'>"Hello World!"</span>);</div>
<div class='indent typed'>
</div>
}
</div>
}
</code>
</div>
<aside class='text'>
<h2 class='h2'>Level up your Java™ code</h2>
<p>With <a class='blue link-animate' href='/projects/spring-boot'>Spring Boot</a> in your app, just a few lines of code is all you need to start building services like a boss.</p><p>New to Spring? Try our simple <a class='blue link-animate' href='/quickstart'>quickstart guide</a>.</p>
</aside>
</div>
</section>
<section class='mb-7' role="contentinfo" aria-label="Quote">
<div class='container'>
<img class='big-quote' src="/images/quote-08c1b712d6a6f2a891a0c524f236ca60.svg" alt='"'>
<blockquote class='h3 center green antialiased'>
Originally [Netflix's Java] libraries and frameworks were built in-house. I'm very proud to say, as of early 2019, we've moved our platform almost entirely over to Spring Boot.”
</blockquote>
<div class='flex ai-center jc-center quoted-with-video'>
<img class='rad-50' src="/images/wicksell-dbd69bebcb1a4151a1fdb92809f4c830.jpg" alt='Taylor Wicksell' title="Taylor Wicksell">
<div>
<span class='quoted antialiased'>Taylor Wicksell, Senior Software Engineer, Netflix</span>
<br />
<a class='blue link-animate lightbox' href="https://www.youtube.com/watch?v=mln3_o6qlBo">Watch now</a>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<footer>
<div id='top'>
<div class='container flex jc-between mx-auto'>
<div id='green-circle-sm'></div>

<img id='circle-grid' src="/images/footer-circles-dc4b03d4edc1f3b7b42a45bdcce411c8.svg" alt="">
<div class='third'>
<h2 class='bold h3 antialiased'>Get ahead</h2>
<p>VMware offers training and certification to turbo-charge your progress.</p>
<a href='/training' class='blue link-animate'>Learn more</a>
</div>
<div class='third'>
<h2 class='bold h3 antialiased'>Get support</h2>
<p>Spring Runtime offers support and binaries for OpenJDK&trade;, Spring, and Apache Tomcat&reg; in one simple subscription.</p>
<a href='/support' class='blue link-animate'>Learn more</a>
</div>
<div class='third'>
<h2 class='bold h3 antialiased'>Upcoming events</h2>
<div class='footer-event'>
<p>Check out all the upcoming events in the Spring community.</p>
<a href='/events' class='blue link-animate'>View all</a>
</div>
</div>
</div>
</div>
<div id='bottom'>
<div id='bottom-top'>
<div id='footer-over' class='mx-auto'>
<div class='container flex jc-between mx-auto'>
<div class='left'>
<div class='flex jc-between'>
<div class='footer-column'>
<p><strong><a href='/why-spring'>Why Spring</a></strong></p>
<ul>
<li><a href='/microservices'>Microservices</a></li>
<li><a href='/reactive'>Reactive</a></li>
<li><a href='/event-driven'>Event Driven</a></li>
<li><a href='/cloud'>Cloud</a></li>
<li><a href='/web-applications'>Web Applications</a></li>
<li><a href='/serverless'>Serverless</a></li>
<li><a href='/batch'>Batch</a></li>
</ul>
</div>
<div class='footer-column'>
<p><strong><a href='/learn'>Learn</a></strong></p>
<ul>
<li><a href='/quickstart'>Quickstart</a></li>
<li><a href='/guides'>Guides</a></li>
<li><a href='/blog'>Blog</a></li>
</ul>
</div>
<div class='footer-column'>
<p><strong><a href='/community'>Community</a></strong></p>
<ul>
<li><a href='/events'>Events</a></li>
<li><a href='/team'>Team</a></li>
</ul>
</div>
<div class='footer-column'>
<p><strong><a href='/projects'>Projects</a></strong></p>
<p><strong><a href='/training'>Training</a></strong></p>
<p><strong><a href='/support'>Support</a></strong></p>
<p><strong><a href='/thank-you'>Thank You</a></strong></p>
</div>
</div>
</div>
<div class='right'>
<h2 class='h3 mb-2 antialiased hide'>Get the Spring newsletter</h2>
<h2 class='h3 mb-2 antialiased confirmation'>Thank you!</h2>
<script src="//app-sj05.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_4723"></form>
<script>
                            MktoForms2.loadForm("https://app-sj05.marketo.com", "625-IUJ-009", 4723 , function(form){
                                form.onSuccess(function(values, followUpUrl){
                                    form.getFormElem().hide();
                                    $('.hide').hide();
                                    $('.confirmation').show();
                                    return false;
                                });
                            });
                        </script>
</div>
</div>
</div>
</div>
<div id='bottom-bottom'>
<div class='flex container jc-between'>
<div id="spring-links">
<img id='springlogo-foot' src="/images/spring-logo-9146a4d3298760c2e7e49595184e1975.svg" alt="Spring">
<p class='smallest antialiased'>© <script>var d = new Date();
                    document.write(d.getFullYear());</script> <a href='https://www.vmware.com/'>VMware</a>, Inc. or its affiliates. <a href='https://www.vmware.com/help/legal.html'>Terms of Use</a> • <a href='https://www.vmware.com/help/privacy.html' rel="noopener noreferrer">Privacy</a> • <a href='/trademarks'>Trademark Guidelines</a> <span id='thank-you-mobile'>• <a href='/thank-you'>Thank you</a></span> • <a href="https://www.vmware.com/help/privacy/california-privacy-rights.html">Your California Privacy Rights</a> • <a class="ot-sdk-show-settings">Cookie Settings</a> <span id='teconsent'></span></p>
<p class='smallest antialiased'>Apache®, Apache Tomcat®, Apache Kafka®, Apache Cassandra&trade;, and Apache Geode&trade; are trademarks or registered trademarks of the Apache Software Foundation in the United States and/or other countries. Java&trade;, Java&trade; SE, Java&trade; EE, and OpenJDK&trade; are trademarks of Oracle and/or its affiliates. Kubernetes® is a registered trademark of the Linux Foundation in the United States and other countries. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Windows® and Microsoft® Azure are registered trademarks of Microsoft Corporation. “AWS” and “Amazon Web Services” are trademarks or registered trademarks of Amazon.com Inc. or its affiliates. All other trademarks and copyrights are property of their respective owners and are only mentioned for informative purposes. Other names may be trademarks of their respective owners.</p>
</div>
<div id='social-icons' class='flex jc-between'>
<a href='https://www.youtube.com/user/SpringSourceDev' title="Youtube"><svg id='youtube-icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><circle class="cls-1" cx="20" cy="20" r="20" /><path class="cls-2" d="M30.91,14.53a2.89,2.89,0,0,0-2-2C27.12,12,20,12,20,12s-7.12,0-8.9.47a2.9,2.9,0,0,0-2,2A30.56,30.56,0,0,0,8.63,20a30.44,30.44,0,0,0,.46,5.47,2.89,2.89,0,0,0,2,2C12.9,28,20,28,20,28s7.12,0,8.9-.47a2.87,2.87,0,0,0,2-2A30.56,30.56,0,0,0,31.37,20,28.88,28.88,0,0,0,30.91,14.53ZM17.73,23.41V16.59L23.65,20Z" /></svg></a>
<a href='https://github.com/spring-projects' title="Github"><svg id='github-icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75.93 75.93"><path class="cls-1" d="M38,0a38,38,0,1,0,38,38A38,38,0,0,0,38,0Z" /></g><path class="cls-2" d="M38,15.59A22.95,22.95,0,0,0,30.71,60.3c1.15.21,1.57-.5,1.57-1.11s0-2,0-3.9c-6.38,1.39-7.73-3.07-7.73-3.07A6.09,6.09,0,0,0,22,48.86c-2.09-1.42.15-1.39.15-1.39a4.81,4.81,0,0,1,3.52,2.36c2,3.5,5.37,2.49,6.67,1.91a4.87,4.87,0,0,1,1.46-3.07c-5.09-.58-10.45-2.55-10.45-11.34a8.84,8.84,0,0,1,2.36-6.15,8.29,8.29,0,0,1,.23-6.07s1.92-.62,6.3,2.35a21.82,21.82,0,0,1,11.49,0c4.38-3,6.3-2.35,6.3-2.35a8.29,8.29,0,0,1,.23,6.07,8.84,8.84,0,0,1,2.36,6.15c0,8.81-5.37,10.75-10.48,11.32a5.46,5.46,0,0,1,1.56,4.25c0,3.07,0,5.54,0,6.29s.42,1.33,1.58,1.1A22.94,22.94,0,0,0,38,15.59Z" /></svg></a>
<a href='https://twitter.com/springcentral' title="Twitter"><svg id='twitter-icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75.93 75.93"><circle class="cls-1" cx="37.97" cy="37.97" r="37.97" /><path id="Twitter-2" data-name="Twitter" class="cls-2" d="M55.2,22.73a15.43,15.43,0,0,1-4.88,1.91,7.56,7.56,0,0,0-5.61-2.49A7.78,7.78,0,0,0,37,30a7.56,7.56,0,0,0,.2,1.79,21.63,21.63,0,0,1-15.84-8.23,8,8,0,0,0,2.37,10.52,7.66,7.66,0,0,1-3.48-1v.09A7.84,7.84,0,0,0,26.45,41a7.54,7.54,0,0,1-2,.28A7.64,7.64,0,0,1,23,41.09a7.71,7.71,0,0,0,7.18,5.47,15.21,15.21,0,0,1-9.55,3.37,15.78,15.78,0,0,1-1.83-.11,21.41,21.41,0,0,0,11.78,3.54c14.13,0,21.86-12,21.86-22.42,0-.34,0-.68,0-1a15.67,15.67,0,0,0,3.83-4.08,14.9,14.9,0,0,1-4.41,1.24A7.8,7.8,0,0,0,55.2,22.73Z" /></svg></a>
</div>
</div>
</div>
</div>
</footer>
<script src="/js/main-a025bb3500634a64f17be026aaec6b3a.js"></script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7100efa788dd2a48","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
