CINXE.COM
Visual Studio Dev Essentials - Visual Studio
<!DOCTYPE html> <html class="avada-html-layout-wide avada-html-header-position-top" lang="en-US" > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <!-- [START] Adobe Target DNS Prefetch Integration for Home Page ---> <!-- [END] Adobe Target DNS Prefetch Integration for Home Page ---> <!--- Fav icon for Edge ----> <script> var newrelic_browser_appID = '926586826'; var newrelic_browser_agent_id = '926586826'; var is_adobe_target_needed = ''; var adobe_at_config_js = '/wp-content/themes/Avada-Child-Theme/assets/js/adobe-target/prod/at-config.js'; var adobe_at_js = '/wp-content/themes/Avada-Child-Theme/assets/js/adobe-target/prod/at.js'; //End Google Tag Manager </script> <title> Visual Studio Dev Essentials - Visual Studio</title> <meta name="description" content="Everything you need to build and deploy your app on any platform including tools, services, training, and more. Join our free developer program." /> <meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1"/> <link rel="canonical" href="https://visualstudio.microsoft.com/dev-essentials/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="Visual Studio Dev Essentials - Visual Studio" /> <meta property="og:description" content="Everything you need to build and deploy your app on any platform including tools, services, training, and more. Join our free developer program." /> <meta property="og:url" content="https://visualstudio.microsoft.com/dev-essentials/" /> <meta property="og:site_name" content="Visual Studio" /> <meta property="og:image" content="https://visualstudio.microsoft.com/wp-content/uploads/2020/07/Facebook.png" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:description" content="Everything you need to build and deploy your app on any platform including tools, services, training, and more. Join our free developer program." /> <meta name="twitter:title" content="Visual Studio Dev Essentials - Visual Studio" /> <meta name="twitter:image" content="https://visualstudio.microsoft.com/wp-content/uploads/2020/07/Twitter.png" /> <script type="application/ld+json"> {"@context": "https://schema.org", "@graph": [ { "@type": "WebSite", "@id": "https://visualstudio.microsoft.com/#website", "url": "https://visualstudio.microsoft.com/", "name": "Visual Studio", "description": "Any Developer, Any App, Any Platform", "potentialAction": { "@type": "SearchAction", "target": "https://visualstudio.microsoft.com/?s={search_term_string}", "query-input": "required name=search_term_string" } }, { "@type": "ImageObject", "@id": "https://visualstudio.microsoft.com/dev-essentials/#primaryimage", "url": "https://visualstudio.microsoft.com/wp-content/uploads/2020/07/Facebook.png", "width": 1200, "height": 628 }, { "@type": "WebPage", "@id": "https://visualstudio.microsoft.com/dev-essentials/#webpage", "url": "https://visualstudio.microsoft.com/dev-essentials/", "inLanguage": "en_US", "name": "Visual Studio Dev Essentials - Visual Studio", "isPartOf": { "@id": "http://localhost/#website" }, "primaryImageOfPage": { "@id": "https://visualstudio.microsoft.com/dev-essentials/ '#primaryimage" }, "datePublished": "2019-07-31T12:51:22+00:00", "dateModified": "2024-07-19T14:15:48+00:00", "description": "Everything you need to build and deploy your app on any platform including tools, services, training, and more. Join our free developer program." } ] } </script><meta name='robots' content='max-image-preview:large' /> <link rel="alternate" type="application/rss+xml" title="Visual Studio » Feed" href="https://visualstudio.microsoft.com/feed/" /> <link rel="alternate" type="application/rss+xml" title="Visual Studio » Comments Feed" href="https://visualstudio.microsoft.com/comments/feed/" /> <link rel="shortcut icon" href="https://visualstudio.microsoft.com/wp-content/uploads/2017/02/Microsoft-favicon.png" type="image/x-icon" /> <!-- Apple Touch Icon --> <link rel="apple-touch-icon" sizes="180x180" href="https://visualstudio.microsoft.com/wp-content/uploads/2022/05/Microsoft-180.png"> <!-- Android Icon --> <link rel="icon" sizes="192x192" href="https://visualstudio.microsoft.com/wp-content/uploads/2022/05/Microsoft-120.png"> <!-- MS Edge Icon --> <meta name="msapplication-TileImage" content="https://visualstudio.microsoft.com/wp-content/uploads/2022/05/Microsoft-152.png"> <link rel='stylesheet' id='vscom-swimlane-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-swimlane.css?ver=6.6.2' type='text/css' media='all' /> <style id='safe-svg-svg-icon-style-inline-css' type='text/css'> .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%} </style> <link rel='stylesheet' id='microsoft-uhf-css' href='https://visualstudio.microsoft.com/wp-content/plugins/microsoft-uhf/assets/microsoft-uhf.css?ver=2.2' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-subsup-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-core/assets/css/vscom-subsup.min.css?ver=1667498184' type='text/css' media='1' /> <link rel='stylesheet' id='vscom-video-player-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-video-player.min.css?ver=1667498194' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-feature-hero-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-feature-hero.min.css?ver=1681237298' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-builder-tabs-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-builder-tabs.min.css?ver=1727200783' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-single-box-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-single-box.min.css?ver=1681924015' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-icon-cloud-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-icon-cloud.min.css?ver=1670949096' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-collage-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-collage.min.css?ver=1670949096' type='text/css' media='all' /> <link rel='stylesheet' id='vscom-extension-cards-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-extension-cards.min.css?ver=1712777490' type='text/css' media='all' /> <link rel='stylesheet' id='vscom_video_carousel-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-video-carousel.min.css?ver=1702322194' type='text/css' media='all' /> <link rel='stylesheet' id='fabric-icons-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fabric-icon-manager//assets/css/vscom-icons.css?ver=1660768558' type='text/css' media='all' /> <link rel='stylesheet' id='fusion-dynamic-css-css' href='https://visualstudio.microsoft.com/wp-content/uploads/fusion-styles/412440b8341f59411b259e50776d7a90.min.css?ver=3.11.10' type='text/css' media='all' /> <link rel='stylesheet' id='avada-fullwidth-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/fullwidth-md.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='avada-fullwidth-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/fullwidth-sm.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-image-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/image-md.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='avada-image-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/image-sm.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-section-separator-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/section-separator-md.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='avada-section-separator-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/section-separator-sm.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-tabs-lg-min-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/tabs-lg-min.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 640px)' /> <link rel='stylesheet' id='avada-tabs-lg-max-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/tabs-lg-max.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-tabs-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/tabs-md.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='avada-tabs-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/tabs-sm.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='awb-title-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/title-md.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='awb-title-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/title-sm.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='awb-meta-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/meta-md.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='awb-meta-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/meta-sm.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='awb-layout-colums-md-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/layout-columns-md.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 1084px)' /> <link rel='stylesheet' id='awb-layout-colums-sm-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/layout-columns-sm.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-max-1c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-1c.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 644px)' /> <link rel='stylesheet' id='avada-max-2c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-2c.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 735px)' /> <link rel='stylesheet' id='avada-min-2c-max-3c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-2c-max-3c.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 735px) and (max-width: 826px)' /> <link rel='stylesheet' id='avada-min-3c-max-4c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-3c-max-4c.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 826px) and (max-width: 917px)' /> <link rel='stylesheet' id='avada-min-4c-max-5c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-4c-max-5c.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 917px) and (max-width: 1008px)' /> <link rel='stylesheet' id='avada-min-5c-max-6c-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-5c-max-6c.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 1008px) and (max-width: 1099px)' /> <link rel='stylesheet' id='avada-min-shbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-shbp.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 301px)' /> <link rel='stylesheet' id='avada-min-shbp-header-legacy-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-shbp-header-legacy.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 301px)' /> <link rel='stylesheet' id='avada-max-shbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-shbp.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 300px)' /> <link rel='stylesheet' id='avada-max-shbp-header-legacy-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-shbp-header-legacy.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 300px)' /> <link rel='stylesheet' id='avada-max-sh-shbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-shbp.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 300px)' /> <link rel='stylesheet' id='avada-max-sh-shbp-header-legacy-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-shbp-header-legacy.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 300px)' /> <link rel='stylesheet' id='avada-min-768-max-1024-p-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-768-max-1024-p.min.css?ver=7.11.10' type='text/css' media='only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait)' /> <link rel='stylesheet' id='avada-min-768-max-1024-p-header-legacy-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-768-max-1024-p-header-legacy.min.css?ver=7.11.10' type='text/css' media='only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait)' /> <link rel='stylesheet' id='avada-min-768-max-1024-l-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-768-max-1024-l.min.css?ver=7.11.10' type='text/css' media='only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape)' /> <link rel='stylesheet' id='avada-min-768-max-1024-l-header-legacy-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-768-max-1024-l-header-legacy.min.css?ver=7.11.10' type='text/css' media='only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape)' /> <link rel='stylesheet' id='avada-max-sh-cbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-cbp.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 800px)' /> <link rel='stylesheet' id='avada-max-sh-sbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-sbp.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 800px)' /> <link rel='stylesheet' id='avada-max-sh-640-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-640.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 640px)' /> <link rel='stylesheet' id='avada-max-shbp-18-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-shbp-18.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 282px)' /> <link rel='stylesheet' id='avada-max-shbp-32-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-shbp-32.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 268px)' /> <link rel='stylesheet' id='avada-min-sh-cbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/min-sh-cbp.min.css?ver=7.11.10' type='text/css' media='only screen and (min-width: 800px)' /> <link rel='stylesheet' id='avada-max-640-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-640.min.css?ver=7.11.10' type='text/css' media='only screen and (max-device-width: 640px)' /> <link rel='stylesheet' id='avada-max-main-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-main.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 1099px)' /> <link rel='stylesheet' id='avada-max-cbp-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-cbp.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 800px)' /> <link rel='stylesheet' id='avada-max-sh-cbp-social-sharing-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/css/media/max-sh-cbp-social-sharing.min.css?ver=7.11.10' type='text/css' media='only screen and (max-width: 800px)' /> <link rel='stylesheet' id='fb-max-sh-cbp-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/max-sh-cbp.min.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 800px)' /> <link rel='stylesheet' id='fb-min-768-max-1024-p-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/min-768-max-1024-p.min.css?ver=3.11.10' type='text/css' media='only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait)' /> <link rel='stylesheet' id='fb-max-640-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/max-640.min.css?ver=3.11.10' type='text/css' media='only screen and (max-device-width: 640px)' /> <link rel='stylesheet' id='fb-max-1c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/max-1c.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 644px)' /> <link rel='stylesheet' id='fb-max-2c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/max-2c.css?ver=3.11.10' type='text/css' media='only screen and (max-width: 735px)' /> <link rel='stylesheet' id='fb-min-2c-max-3c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/min-2c-max-3c.css?ver=3.11.10' type='text/css' media='only screen and (min-width: 735px) and (max-width: 826px)' /> <link rel='stylesheet' id='fb-min-3c-max-4c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/min-3c-max-4c.css?ver=3.11.10' type='text/css' media='only screen and (min-width: 826px) and (max-width: 917px)' /> <link rel='stylesheet' id='fb-min-4c-max-5c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/min-4c-max-5c.css?ver=3.11.10' type='text/css' media='only screen and (min-width: 917px) and (max-width: 1008px)' /> <link rel='stylesheet' id='fb-min-5c-max-6c-css' href='https://visualstudio.microsoft.com/wp-content/plugins/fusion-builder/assets/css/media/min-5c-max-6c.css?ver=3.11.10' type='text/css' media='only screen and (min-width: 1008px) and (max-width: 1099px)' /> <link rel='stylesheet' id='avada-child-stylesheet-css' href='https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/modern-styles.min.css?1727200783' type='text/css' media='all' /> <link rel='stylesheet' id='style-vscom-dist-min-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-asset-minification/assets/css/vscom-dist.min.css?1724260366' type='text/css' media='all' /> <link rel='stylesheet' id='style-en-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-asset-minification/assets/css/en.min.css?1667498184' type='text/css' media='all' /> <meta name="ms.locale_id" content="689" /> <meta name="ms.locale_slug" content="dev-essentials" /> <script type="text/javascript"> // document.onReady document.addEventListener("DOMContentLoaded", function(event) { var locale_slug = "dev-essentials"; var locale_id = "689"; }); </script><script type="text/javascript" src="https://visualstudio.microsoft.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-utility-plugin/js/utility.min.js?ver=1675795484" id="vscom_common_js-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/js/vscom-icon-cloud.min.js?ver=1670949097" id="vscom-icon-cloud-js-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/js/vscom-collage.min.js?ver=1670949097" id="vscom-collage-js-js"></script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://visualstudio.microsoft.com/xmlrpc.php?rsd" /> <link rel='shortlink' href='https://visualstudio.microsoft.com/?p=689' /> <script type="text/javascript"> (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1; t.src="https://www.clarity.ms/tag/"+i+"?ref=wordpress";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "jmjgcz3l72"); </script> <link rel="stylesheet" href="https://www.microsoft.com/onerfstatics/marketingsites-eus-prod/west-european/shell/_scrf/css/themes=default.device=uplevel_web_pc/1b-9d8ed9/c9-be0100/a6-e969ef/43-9f2e7c/82-8b5456/a0-5d3913/43-5a5ab8/ca-ae3ce4?ver=2.0&_cf=02242021_3231" type="text/css" media="all" /><meta name="ms.shortidmsdn" content="page-689" /> <meta name="ms.lang" content="en" /> <meta name="ms.loc" content="US" /> <meta name="Ms.Locale" content="en_US" /> <link rel="alternate" hreflang="cs" href="https://visualstudio.microsoft.com/cs/dev-essentials/" /><link rel="alternate" hreflang="de" href="https://visualstudio.microsoft.com/de/dev-essentials/" /><link rel="alternate" hreflang="en" href="https://visualstudio.microsoft.com/dev-essentials/" /><link rel="alternate" hreflang="es" href="https://visualstudio.microsoft.com/es/dev-essentials/" /><link rel="alternate" hreflang="fr" href="https://visualstudio.microsoft.com/fr/dev-essentials/" /><link rel="alternate" hreflang="it" href="https://visualstudio.microsoft.com/it/dev-essentials/" /><link rel="alternate" hreflang="ja" href="https://visualstudio.microsoft.com/ja/dev-essentials/" /><link rel="alternate" hreflang="ko" href="https://visualstudio.microsoft.com/ko/dev-essentials/" /><link rel="alternate" hreflang="pl" href="https://visualstudio.microsoft.com/pl/dev-essentials/" /><link rel="alternate" hreflang="pt-br" href="https://visualstudio.microsoft.com/pt-br/dev-essentials/" /><link rel="alternate" hreflang="ru" href="https://visualstudio.microsoft.com/ru/dev-essentials/" /><link rel="alternate" hreflang="tr" href="https://visualstudio.microsoft.com/tr/dev-essentials/" /><link rel="alternate" hreflang="zh-hans" href="https://visualstudio.microsoft.com/zh-hans/dev-essentials/" /><link rel="alternate" hreflang="zh-hant" href="https://visualstudio.microsoft.com/zh-hant/dev-essentials/" /><script> var img_placeholder = 'https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/vscom-img-placeholder.png'; </script><style type="text/css" id="css-fb-visibility">@media screen and (max-width: 640px){.fusion-no-small-visibility{display:none !important;}body .sm-text-align-center{text-align:center !important;}body .sm-text-align-left{text-align:left !important;}body .sm-text-align-right{text-align:right !important;}body .sm-flex-align-center{justify-content:center !important;}body .sm-flex-align-flex-start{justify-content:flex-start !important;}body .sm-flex-align-flex-end{justify-content:flex-end !important;}body .sm-mx-auto{margin-left:auto !important;margin-right:auto !important;}body .sm-ml-auto{margin-left:auto !important;}body .sm-mr-auto{margin-right:auto !important;}body .fusion-absolute-position-small{position:absolute;top:auto;width:100%;}.awb-sticky.awb-sticky-small{ position: sticky; top: var(--awb-sticky-offset,0); }}@media screen and (min-width: 641px) and (max-width: 1084px){.fusion-no-medium-visibility{display:none !important;}body .md-text-align-center{text-align:center !important;}body .md-text-align-left{text-align:left !important;}body .md-text-align-right{text-align:right !important;}body .md-flex-align-center{justify-content:center !important;}body .md-flex-align-flex-start{justify-content:flex-start !important;}body .md-flex-align-flex-end{justify-content:flex-end !important;}body .md-mx-auto{margin-left:auto !important;margin-right:auto !important;}body .md-ml-auto{margin-left:auto !important;}body .md-mr-auto{margin-right:auto !important;}body .fusion-absolute-position-medium{position:absolute;top:auto;width:100%;}.awb-sticky.awb-sticky-medium{ position: sticky; top: var(--awb-sticky-offset,0); }}@media screen and (min-width: 1085px){.fusion-no-large-visibility{display:none !important;}body .lg-text-align-center{text-align:center !important;}body .lg-text-align-left{text-align:left !important;}body .lg-text-align-right{text-align:right !important;}body .lg-flex-align-center{justify-content:center !important;}body .lg-flex-align-flex-start{justify-content:flex-start !important;}body .lg-flex-align-flex-end{justify-content:flex-end !important;}body .lg-mx-auto{margin-left:auto !important;margin-right:auto !important;}body .lg-ml-auto{margin-left:auto !important;}body .lg-mr-auto{margin-right:auto !important;}body .fusion-absolute-position-large{position:absolute;top:auto;width:100%;}.awb-sticky.awb-sticky-large{ position: sticky; top: var(--awb-sticky-offset,0); }}</style> <script type="text/javascript"> var doc = document.documentElement; doc.setAttribute( 'data-useragent', navigator.userAgent ); </script> <style type="text/css" id="fusion-builder-page-css">#download-preview { background-size: 100%; } .dev-services{ max-width: 64rem; margin: auto; } .footer-banner .vscom-swimlane-content { justify-content: space-between; } .footer-banner .vscom-banner-modern .banner-cta-wrapper { gap: 4rem; } .footer-banner .vscom-banner-modern .banner-cta-wrapper:before { content: ""; border-right: 1px solid #fff; position: absolute; top: 0; bottom: 0; right: 298px; } @media (max-width: 1200px) { .vscom-banner-modern .vscom-banner-modern-wrapper.content-center, .vscom-banner-modern .vscom-banner-modern-wrapper.content-left { display: flex; justify-content: center; text-align: center; align-items: center; flex-direction: column; gap: 20px; } .footer-banner .vscom-banner-modern .banner-cta-wrapper:before { display: none; } }</style><!--- [Begin] WCP Cookie Consent API Implementation for Vscom !--> <script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script> <div id="cookie-banner" data-bi-id="Cookie Banner"></div> <script> window.WcpConsent && WcpConsent.init( 'en-us', "cookie-banner", function (err, _siteConsent) { if (!err) { siteConsent = _siteConsent; //siteConsent is used to get the current consent } }, onConsentChanged ); function onConsentChanged(categoryPreferences) { if ( siteConsent.isConsentRequired === true && siteConsent.getConsent().Analytics === true){ loadAdobeTarget(); // Consent for Clarity window.clarity('consent'); } else if (siteConsent.isConsentRequired === false) { // Consent is not required window.clarity('consent'); } } function loadAdobeTarget(){ var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); //Assigning the value generated from PHP script.src = adobe_at_config_js; //Executing synchronously. script.async = false; head.appendChild(script); var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); //Assigning the value generated from PHP script.src = adobe_at_js; //Executing synchronously. script.async = false; head.appendChild(script); } </script> <!--- [End] WCP Cookie Consent API Implementation for Vscom !--> <!-- [Begin] JSLL SHIM script includes --> <link rel="preconnect" href="//js.monitor.azure.com" crossorigin> <link rel="preconnect" href="//browser.events.data.microsoft.com" crossorigin> <script> var adobePageMarket = 'en' var firstPagePath = window.location.pathname.split('/')[1] if (['zh-hans', 'zh-hant', 'fr', 'de', 'it', 'ja', 'ru', 'es', 'cs', 'ko', 'pl', 'pt-br', 'tr'].indexOf(firstPagePath) >= 0) { adobePageMarket = firstPagePath } </script> <script type="text/javascript" src="https://js.monitor.azure.com/scripts/c/ms.jsll-3.min.js"> </script> <script type="text/javascript"> let userConsentDetailsCallback = function () { return siteConsent? siteConsent.getConsent(): null }; var config = { useDefaultContentName: true, useShortNameForContentBlob: false, autoCapture: { pageView: true, onLoad: true, onUnload: true, lineage: true, click: true, scroll: true, resize: false, lineage: true, jsError: true, addin: true, perf: true }, urlCollectHash: true, urlCollectQuery: true, instrumentationKey: "f194a55d6cb942d9b0e5b604e01b609b-8c663a24-3636-4cc5-a2bf-267a92b4ee4f-7662", coreData: { appId: "VSCOM", market: adobePageMarket }, // Initially set the GPC_DataSharingOptIn flag property in 1DS (One Data Source) to false advancedConfig: { propertyConfiguration :{ gpcDataSharingOptIn: false, callback: { userConsentDetails: userConsentDetailsCallback }, }, // This one is not working , so we are setting the value using awa.sku.addTelemetryInitializer((item) down below (line 53) userConsent: false, cookieCfg: { ignoreCookies: ["MSCC"] // new. check the FAQ to confirm which cookie you want to ignore! }, }, callback: { pageName: function(){return document.title} } }; awa.init(config); console.log('awa', awa.sku); //awa.config.extensionConfig.SystemPropertiesCollector //config.extensionConfig.SystemPropertiesCollector.userConsented = userConsentDetailsCallback() awa.sku.config.extensionConfig.SystemPropertiesCollector.callback.userConsentDetails = userConsentDetailsCallback awa.sku.config.extensionConfig.SystemPropertiesCollector.userConsented = false; /*awa.sku.addTelemetryInitializer((item) => { item = item || {}; item.ext = item.ext || {}; item.ext.web = item.ext.web || {}; item.ext.web.userConsent = false; item.ext.web. })*/ //tracking the search button expand click // 1DS not tracking the click on html button element even after tagging data-bi attribute document.addEventListener("DOMContentLoaded", function(event) { const element = document.getElementById('search') if(element) { element.addEventListener("click", () => { var overrideValues = { behavior: awa.behavior.SEARCHINITIATE, actionType: "CL", contentTags: { areaName: 'Search_nav', id: 'Nav Search Bar Open ' } }; if (typeof awa === "object" && typeof awa.ct === "object") { awa.ct.captureContentPageAction(overrideValues); } }); } }); </script> <!-- [End] JSLL Shim script includes --> <script> //load newrelic if user has consent if (typeof siteConsent === "object") { if (siteConsent.isConsentRequired === false || siteConsent.getConsent().Analytics === true) { ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"3631496",trustKey:"1551542",agentID: newrelic_browser_agent_id,licenseKey:"NRJS-b705b49e5f52f7729c9",applicationID: newrelic_browser_appID}; ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-b705b49e5f52f7729c9",applicationID: newrelic_browser_appID,sa:1}; ;(()=>{var __webpack_modules__={507:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";function detectPolyfillFeatures(){const featureStatus={};return checkAndAddFeature("Promise","PROMISE"),checkAndAddFeature("Array.prototype.includes","ARRAY_INCLUDES"),checkAndAddFeature("Object.assign","OBJECT_ASSIGN"),checkAndAddFeature("Object.entries","OBJECT_ENTRIES"),featureStatus;function checkAndAddFeature(funcString,featName){try{let func=eval("self."+funcString);-1!==func.toString().indexOf("[native code]")?featureStatus[featName]=Status.NATIVE:featureStatus[featName]=Status.CHANGED}catch{featureStatus[featName]=Status.UNAVAIL}}}__webpack_require__.d(__webpack_exports__,{n:()=>detectPolyfillFeatures});const Status={UNAVAIL:"NotSupported",NATIVE:"Detected",CHANGED:"Modified"}},2687:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});const n=(0,r(2141).ky)(16)},1719:(e,t,r)=>{"use strict";r.d(t,{I:()=>n});var n=0,i=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);i&&(n=+i[1])},3524:(e,t,r)=>{"use strict";let n;if(r.d(t,{H:()=>i}),r(8438).il){const e=document.createElement("div");e.innerHTML="\x3c!--[if lte IE 6]><div></div><![endif]--\x3e\x3c!--[if lte IE 7]><div></div><![endif]--\x3e\x3c!--[if lte IE 8]><div></div><![endif]--\x3e\x3c!--[if lte IE 9]><div></div><![endif]--\x3e",n=e.getElementsByTagName("div").length}var i;i=4===n?6:3===n?7:2===n?8:1===n?9:0},5970:(e,t,r)=>{"use strict";r.d(t,{P_:()=>l,Mt:()=>h,C5:()=>c,DL:()=>b,OP:()=>R,Yu:()=>m,Dg:()=>p,CX:()=>u,GE:()=>g,sU:()=>N});var n={};r.r(n),r.d(n,{agent:()=>x,match:()=>E,version:()=>P});var i=r(4580);class o{constructor(e,t){return e&&"object"==typeof e?t&&"object"==typeof t?(Object.assign(this,t),void Object.entries(e).forEach((e=>{let[t,r]=e;this[t]=r}))):console.error("setting a Configurable requires a model to set its initial properties"):console.error("setting a Configurable requires an object as input")}}const a={beacon:i.ce.beacon,errorBeacon:i.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},s={};function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!s[e])throw new Error(`Info for ${e} was never set`);return s[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");s[e]=new o(t,a),(0,i.Qy)(e,s[e],"info")}const d={allow_bfcache:!1,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0},metrics:{enabled:!0},page_action:{enabled:!0},page_view_event:{enabled:!0},page_view_timing:{enabled:!0},session_trace:{enabled:!0},spa:{enabled:!0}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error(`Configuration for ${e} was never set`);return f[e]}function p(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=new o(t,d),(0,i.Qy)(e,f[e],"config")}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}const v={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},_={};function b(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!_[e])throw new Error(`LoaderConfig for ${e} was never set`);return _[e]}function g(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");_[e]=new o(t,v),(0,i.Qy)(e,_[e],"loader_config")}const m=(0,i.mF)().o;var w=r(3524),y=r(9206),x=null,P=null;if(navigator.userAgent){var O=navigator.userAgent,k=O.match(/Version\/(\S+)\s+Safari/);k&&-1===O.indexOf("Chrome")&&-1===O.indexOf("Chromium")&&(x="Safari",P=k[1])}function E(e,t){if(!x)return!1;if(e!==x)return!1;if(!t)return!0;if(!P)return!1;for(var r=P.split("."),n=t.split("."),i=0;i<n.length;i++)if(n[i]!==r[i])return!1;return!0}var S=r(2141),C=r(8438);const T="NRBA_SESSION_ID";function A(){if(!C.il)return null;try{let e;return null===(e=window.sessionStorage.getItem(T))&&(e=(0,S.ky)(16),window.sessionStorage.setItem(T,e)),e}catch(e){return null}}var q=C.ZP?.XMLHttpRequest,I=q&&q.prototype;const j={};function R(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!j[e])throw new Error(`Runtime for ${e} was never set`);return j[e]}function N(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");var r;j[e]=new o(t,(r=e,{customTransaction:void 0,disabled:!1,features:{},loaderType:void 0,maxBytes:6===w.H?2e3:3e4,offset:(0,y.yf)(),onerror:void 0,origin:""+C.ZP?.location,ptid:void 0,releaseIds:{},sessionId:1==h(r,"privacy.cookies_enabled")?A():null,xhrWrappable:q&&I&&I.addEventListener&&!/CriOS/.test(navigator.userAgent),userAgent:n})),(0,i.Qy)(e,j[e],"runtime")}},8873:(e,t,r)=>{"use strict";r.d(t,{q:()=>n});const n=["1222","PROD"].filter((e=>e)).join(".")},1925:(e,t,r)=>{"use strict";r.d(t,{w:()=>i});const n={agentIdentifier:""};class i{constructor(e){if("object"!=typeof e)return console.error("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,n),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(n).includes(t)&&(this.sharedContext[t]=r)}))}}},2071:(e,t,r)=>{"use strict";r.d(t,{c:()=>d,ee:()=>c});var n=r(4580),i=r(9010),o=r(9599),a="nr@context";let s=(0,n.fP)();var c;function u(){}function d(e){return(0,i.X)(e,a,f)}function f(){return new u}function l(){(c.backlog.api||c.backlog.feature)&&(c.aborted=!0,c.backlog={})}s.ee?c=s.ee:(c=function e(t,r){var n={},s={},d={},p={on:_,addEventListener:_,removeEventListener:b,emit:v,get:m,listeners:g,context:h,buffer:w,abort:l,aborted:!1,isBuffering:y,debugId:r,backlog:t&&t.backlog?t.backlog:{}};return p;function h(e){return e&&e instanceof u?e:e?(0,i.X)(e,a,f):f()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!c.aborted||i){t&&o&&t.emit(e,r,n);for(var a=h(n),u=g(e),d=u.length,f=0;f<d;f++)u[f].apply(a,r);var l=x()[s[e]];return l&&l.push([p,e,r,a]),a}}function _(e,t){n[e]=g(e).concat(t)}function b(e,t){var r=n[e];if(r)for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)}function g(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(p,t)}function w(e,t){var r=x();p.aborted||(0,o.D)(e,(function(e,n){t=t||"feature",s[n]=t,t in r||(r[t]=[])}))}function y(e){return!!x()[s[e]]}function x(){return p.backlog}}(void 0,"globalEE"),s.ee=c)},3195:(e,t,r)=>{"use strict";r.d(t,{E:()=>n,p:()=>i});var n=r(2071).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4539:(e,t,r)=>{"use strict";r.d(t,{X:()=>o});var n=r(3195);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3585:(e,t,r)=>{"use strict";r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(8438),i=!1;try{var o=Object.defineProperty({},"passive",{get:function(){i=!0}});n.ZP?.addEventListener("testPassive",null,o),n.ZP?.removeEventListener("testPassive",null,o)}catch(e){}function a(e){return i?{passive:!0,capture:!!e}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];window.addEventListener(e,t,a(r))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];document.addEventListener(e,t,a(r))}},2141:(e,t,r)=>{"use strict";r.d(t,{Ht:()=>a,M:()=>o,Rl:()=>i,ky:()=>s});var n=r(8438);function i(){var e=null,t=0,r=n.ZP?.crypto||n.ZP?.msCrypto;function i(){return e?15&e[t++]:16*Math.random()|0}r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,a="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",s="",c=0;c<a.length;c++)s+="x"===(o=a[c])?i().toString(16):"y"===o?(o=3&i()|8).toString(16):o;return s}function o(){return s(16)}function a(){return s(32)}function s(e){var t=null,r=0,n=self.crypto||self.msCrypto;n&&n.getRandomValues&&Uint8Array&&(t=n.getRandomValues(new Uint8Array(31)));for(var i=[],o=0;o<e;o++)i.push(a().toString(16));return i.join("");function a(){return t?15&t[r++]:16*Math.random()|0}}},9206:(e,t,r)=>{"use strict";r.d(t,{nb:()=>c,os:()=>u,yf:()=>s,zO:()=>a});var n=r(1209),i=(new Date).getTime(),o=i;function a(){return n.G&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-o}function s(){return i}function c(e){o=e}function u(){return o}},1209:(e,t,r)=>{"use strict";r.d(t,{G:()=>n});const n=void 0!==r(8438).ZP?.performance?.timing?.navigationStart},745:(e,t,r)=>{"use strict";r.d(t,{s:()=>c,v:()=>u});var n=r(7036),i=r(1719),o=r(9206),a=r(1209),s=r(8438);let c=!0;function u(e){var t=function(){if(i.I&&i.I<9)return;if(a.G)return c=!1,s.ZP?.performance?.timing?.navigationStart}();t&&((0,n.B)(e,"starttime",t),(0,o.nb)(t))}},7036:(e,t,r)=>{"use strict";r.d(t,{B:()=>o,L:()=>a});var n=r(9206),i={};function o(e,t,r){void 0===r&&(r=(0,n.zO)()+(0,n.os)()),i[e]=i[e]||{},i[e][t]=r}function a(e,t,r,n){const o=e.sharedContext.agentIdentifier;var a=i[o]?.[r],s=i[o]?.[n];void 0!==a&&void 0!==s&&e.store("measures",t,{value:s-a})}},7233:(e,t,r)=>{"use strict";r.d(t,{e:()=>o});var n=r(8438),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n.ZP?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch{return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},8547:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(8438);const i={isFileProtocol:function(){let e=Boolean("file:"===(0,n.lW)()?.location?.protocol);e&&(i.supportabilityMetricSent=!0);return e},supportabilityMetricSent:!1}},9011:(e,t,r)=>{"use strict";r.d(t,{K:()=>o});var n=r(5970);const i=["ajax","jserrors","metrics","page_action","page_view_event","page_view_timing","session_trace","spa"];function o(e){const t={};return i.forEach((r=>{t[r]=function(e,t){return!0!==(0,n.OP)(t).disabled&&!1!==(0,n.Mt)(t,`${e}.enabled`)}(r,e)})),t}},8025:(e,t,r)=>{"use strict";r.d(t,{W:()=>i});var n=r(2071);class i{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];this.agentIdentifier=e,this.aggregator=t,this.ee=n.ee.get(e),this.externalFeatures=r,this.blocked=!1}}},9010:(e,t,r)=>{"use strict";r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},8438:(e,t,r)=>{"use strict";r.d(t,{ZP:()=>a,il:()=>n,lW:()=>s,v6:()=>i});const n=Boolean("undefined"!=typeof window&&window.document),i=Boolean("undefined"!=typeof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator);let o=(()=>{if(n)return window;if(i){if("undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope)return globalThis;if(self instanceof WorkerGlobalScope)return self}throw new Error("New Relic browser agent shutting down due to error: Unable to locate global scope. This is possibly due to code redefining browser global variables like `self` and `window`.")})();const a=o;function s(){return o}},9599:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t){var r=[],i="",o=0;for(i in e)n.call(e,i)&&(r[o]=t(i,e[i]),o+=1);return r}},248:(e,t,r)=>{"use strict";r.d(t,{$c:()=>c,Ng:()=>u,RR:()=>s});var n=r(5970),i=r(1925),o=r(8547),a={regex:/^file:\/\/(.*)/,replacement:"file://OBFUSCATED"};class s extends i.w{constructor(e){super(e)}shouldObfuscate(){return c(this.sharedContext.agentIdentifier).length>0}obfuscateString(e){if(!e||"string"!=typeof e)return e;for(var t=c(this.sharedContext.agentIdentifier),r=e,n=0;n<t.length;n++){var i=t[n].regex,o=t[n].replacement||"*";r=r.replace(i,o)}return r}}function c(e){var t=[],r=(0,n.Mt)(e,"obfuscate")||[];return t=t.concat(r),o.T.isFileProtocol()&&t.push(a),t}function u(e){for(var t=!1,r=!1,n=0;n<e.length;n++){"regex"in e[n]?"string"!=typeof e[n].regex&&e[n].regex.constructor!==RegExp&&(console&&console.warn&&console.warn('An obfuscation replacement rule contains a "regex" value with an invalid type (must be a string or RegExp)'),r=!0):(console&&console.warn&&console.warn('An obfuscation replacement rule was detected missing a "regex" value.'),r=!0);var i=e[n].replacement;i&&"string"!=typeof i&&(console&&console.warn&&console.warn('An obfuscation replacement rule contains a "replacement" value with an invalid type (must be a string)'),t=!0)}return!t&&!r}},4580:(e,t,r)=>{"use strict";r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(9206),i=r(8438);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i.ZP?.NREUM||(i.ZP.NREUM={}),void 0===i.ZP?.newrelic&&(i.ZP.newrelic=i.ZP.NREUM),i.ZP.NREUM}function s(){let e=a();if(!e.o){var t=self,r=t.XMLHttpRequest;e.o={ST:setTimeout,SI:t.setImmediate,CT:clearTimeout,XHR:r,REQ:t.Request,EV:t.Event,PR:t.Promise,MO:t.MutationObserver,FETCH:t.fetch}}return e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.zO)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},584:(e,t,r)=>{"use strict";r.d(t,{N:()=>i,e:()=>o});var n=r(3585);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return void(0,n.iz)("visibilitychange",r);function r(){if(t){if("hidden"!=document.visibilityState)return;e()}e(document.visibilityState)}}function o(){return"hidden"===document.visibilityState?-1:1/0}},6023:(e,t,r)=>{"use strict";r.d(t,{W:()=>i});var n=r(8438);function i(){return"function"==typeof n.ZP?.PerformanceObserver}},8539:e=>{e.exports=function(e,t,r){t||(t=0),void 0===r&&(r=e?e.length:0);for(var n=-1,i=r-t||0,o=Array(i<0?0:i);++n<i;)o[n]=e[t+n];return o}}},__webpack_module_cache__={},inProgress,dataWebpackPrefix;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((t,r)=>(__webpack_require__.f[r](e,t),t)),[])),__webpack_require__.u=e=>e+"."+__webpack_require__.h().slice(0,8)+"-1222.js",__webpack_require__.h=()=>"95d4308d836c4fa71ea6",__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),inProgress={},dataWebpackPrefix="NRBA:",__webpack_require__.l=(e,t,r,n)=>{if(inProgress[e])inProgress[e].push(t);else{var i,o;if(void 0!==r)for(var a=document.getElementsByTagName("script"),s=0;s<a.length;s++){var c=a[s];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==dataWebpackPrefix+r){i=c;break}}i||(o=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",dataWebpackPrefix+r),i.src=e),inProgress[e]=[t];var u=(t,r)=>{i.onerror=i.onload=null,clearTimeout(d);var n=inProgress[e];if(delete inProgress[e],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(r))),t)return t(r)},d=setTimeout(u.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=u.bind(null,i.onerror),i.onload=u.bind(null,i.onload),o&&document.head.appendChild(i)}},__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.p="https://js-agent.newrelic.com/",(()=>{var e={450:0,566:0};__webpack_require__.f.j=(t,r)=>{var n=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var i=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=i);var o=__webpack_require__.p+__webpack_require__.u(t),a=new Error;__webpack_require__.l(o,(r=>{if(__webpack_require__.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,i,[o,a,s]=r,c=0;if(o.some((t=>0!==e[t]))){for(n in a)__webpack_require__.o(a,n)&&(__webpack_require__.m[n]=a[n]);if(s)s(__webpack_require__)}for(t&&t(r);c<o.length;c++)i=o[c],__webpack_require__.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=window.webpackChunkNRBA=window.webpackChunkNRBA||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var __webpack_exports__={};(()=>{"use strict";__webpack_require__.r(__webpack_exports__);var e=__webpack_require__(507),t=__webpack_require__(3585);function r(e){if(!document||"complete"===document.readyState)return e()||!0}function n(e){r(e)||(0,t.bP)("load",e)}function i(e){r(e)||(0,t.iz)("DOMContentLoaded",e)}var o=__webpack_require__(8438),a=__webpack_require__(2071);let s=0;function c(e){(async()=>{if(!s++)try{const{aggregator:t}=await __webpack_require__.e(859).then(__webpack_require__.bind(__webpack_require__,7859));await t(e)}catch(e){console.error("Failed to successfully load all aggregators. Aborting...\n",e),a.ee.abort()}})()}var u=__webpack_require__(2687),d=__webpack_require__(3195),f=__webpack_require__(9206),l=__webpack_require__(7036),p=__webpack_require__(745),h=__webpack_require__(8025);class v extends h.W{constructor(e){super(e),o.il&&((0,p.v)(e),(0,l.B)(e,"firstbyte",(0,f.yf)()),n((()=>this.measureWindowLoaded())),i((()=>this.measureDomContentLoaded())))}measureWindowLoaded(){var e=(0,f.zO)();(0,l.B)(this.agentIdentifier,"onload",e+(0,f.os)()),(0,d.p)("timing",["load",e],void 0,void 0,this.ee)}measureDomContentLoaded(){(0,l.B)(this.agentIdentifier,"domContent",(0,f.zO)()+(0,f.os)())}}var _=__webpack_require__(584),b=__webpack_require__(5970);class g extends h.W{constructor(e){var r;if(super(e),r=this,this.isEnabled()&&o.il){if(this.pageHiddenTime=(0,_.e)(),this.performanceObserver,this.lcpPerformanceObserver,this.clsPerformanceObserver,this.fiRecorded=!1,"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){this.performanceObserver=new PerformanceObserver((function(){return r.perfObserver(...arguments)}));try{this.performanceObserver.observe({entryTypes:["paint"]})}catch(e){}this.lcpPerformanceObserver=new PerformanceObserver((function(){return r.lcpObserver(...arguments)}));try{this.lcpPerformanceObserver.observe({entryTypes:["largest-contentful-paint"]})}catch(e){}this.clsPerformanceObserver=new PerformanceObserver((function(){return r.clsObserver(...arguments)}));try{this.clsPerformanceObserver.observe({type:"layout-shift",buffered:!0})}catch(e){}}this.fiRecorded=!1;["click","keydown","mousedown","pointerdown","touchstart"].forEach((e=>{(0,t.iz)(e,(function(){return r.captureInteraction(...arguments)}))})),(0,_.N)((()=>{this.pageHiddenTime=(0,f.zO)(),(0,d.p)("docHidden",[this.pageHiddenTime],void 0,void 0,this.ee)}),!0),(0,t.bP)("pagehide",(()=>(0,d.p)("winPagehide",[(0,f.zO)()],void 0,void 0,this.ee)))}}isEnabled(){return!1!==(0,b.Mt)(this.agentIdentifier,"page_view_timing.enabled")}perfObserver(e,t){e.getEntries().forEach((e=>{"first-paint"===e.name?(0,d.p)("timing",["fp",Math.floor(e.startTime)],void 0,void 0,this.ee):"first-contentful-paint"===e.name&&(0,d.p)("timing",["fcp",Math.floor(e.startTime)],void 0,void 0,this.ee)}))}lcpObserver(e,t){var r=e.getEntries();if(r.length>0){var n=r[r.length-1];if(this.pageHiddenTime<n.startTime)return;var i=[n],o=this.addConnectionAttributes({});o&&i.push(o),(0,d.p)("lcp",i,void 0,void 0,this.ee)}}clsObserver(e){e.getEntries().forEach((e=>{e.hadRecentInput||(0,d.p)("cls",[e],void 0,void 0,this.ee)}))}addConnectionAttributes(e){var t=navigator.connection||navigator.mozConnection||navigator.webkitConnection;if(t)return t.type&&(e["net-type"]=t.type),t.effectiveType&&(e["net-etype"]=t.effectiveType),t.rtt&&(e["net-rtt"]=t.rtt),t.downlink&&(e["net-dlink"]=t.downlink),e}captureInteraction(e){if(e instanceof b.Yu.EV&&!this.fiRecorded){var t=Math.round(e.timeStamp),r={type:e.type};this.addConnectionAttributes(r),t<=(0,f.zO)()?r.fid=(0,f.zO)()-t:t>(0,f.os)()&&t<=Date.now()?(t-=(0,f.os)(),r.fid=(0,f.zO)()-t):t=(0,f.zO)(),this.fiRecorded=!0,(0,d.p)("timing",["fi",t,r],void 0,void 0,this.ee)}}}var m=__webpack_require__(4539),w="React",y="Angular",x="AngularJS",P="Backbone",O="Ember",k="Vue",E="Meteor",S="Zepto",C="Jquery";function T(){if(!o.il)return[];var e=[];try{(function(){try{if(window.React||window.ReactDOM||window.ReactRedux)return!0;if(document.querySelector("[data-reactroot], [data-reactid]"))return!0;for(var e=document.querySelectorAll("body > div"),t=0;t<e.length;t++)if(Object.keys(e[t]).indexOf("_reactRootContainer")>=0)return!0;return!1}catch(e){return!1}})()&&e.push(w),function(){try{return!!window.angular||(!!document.querySelector(".ng-binding, [ng-app], [data-ng-app], [ng-controller], [data-ng-controller], [ng-repeat], [data-ng-repeat]")||!!document.querySelector('script[src*="angular.js"], script[src*="angular.min.js"]'))}catch(e){return!1}}()&&e.push(x),function(){try{return!!(window.hasOwnProperty("ng")&&window.ng.hasOwnProperty("coreTokens")&&window.ng.coreTokens.hasOwnProperty("NgZone"))||!!document.querySelectorAll("[ng-version]").length}catch(e){return!1}}()&&e.push(y),window.Backbone&&e.push(P),window.Ember&&e.push(O),window.Vue&&e.push(k),window.Meteor&&e.push(E),window.Zepto&&e.push(S),window.jQuery&&e.push(C)}catch(e){}return e}var A=__webpack_require__(8547),q=__webpack_require__(248),I=__webpack_require__(8873);const j=Boolean(o.ZP?.Worker),R=Boolean(o.ZP?.SharedWorker),N=Boolean(o.ZP?.navigator?.serviceWorker);let L,Z,H;class z extends h.W{constructor(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),t=this,this.PfFeatStatusEnum=r,this.singleChecks(),this.eachSessionChecks(),(0,m.X)("record-supportability",(function(){return t.recordSupportability(...arguments)}),void 0,this.ee),(0,m.X)("record-custom",(function(){return t.recordCustom(...arguments)}),void 0,this.ee)}recordSupportability(e,t){var r=["sm",e,{name:e},t];return(0,d.p)("storeMetric",r,null,void 0,this.ee),r}recordCustom(e,t){var r=["cm",e,{name:e},t];return(0,d.p)("storeEventMetrics",r,null,void 0,this.ee),r}singleChecks(){this.recordSupportability(`Generic/Version/${I.q}/Detected`);const{loaderType:e}=(0,b.OP)(this.agentIdentifier);e&&this.recordSupportability(`Generic/LoaderType/${e}/Detected`),o.il&&i((()=>{T().forEach((e=>{this.recordSupportability("Framework/"+e+"/Detected")}))})),A.T.isFileProtocol()&&(this.recordSupportability("Generic/FileProtocol/Detected"),A.T.supportabilityMetricSent=!0);const t=(0,q.$c)(this.agentIdentifier);t.length>0&&this.recordSupportability("Generic/Obfuscate/Detected"),t.length>0&&!(0,q.Ng)(t)&&this.recordSupportability("Generic/Obfuscate/Invalid"),o.il&&this.reportPolyfillsNeeded(),function(e){if(!L){if(j){L=Worker;try{o.ZP.Worker=r(L,"Dedicated")}catch(e){a(e,"Dedicated")}if(R){Z=SharedWorker;try{o.ZP.SharedWorker=r(Z,"Shared")}catch(e){a(e,"Shared")}}else n("Shared");if(N){H=navigator.serviceWorker.register;try{o.ZP.navigator.serviceWorker.register=(t=H,function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return i("Service",r[1]?.type),t.apply(navigator.serviceWorker,r)})}catch(e){a(e,"Service")}}else n("Service");var t;return}n("All")}function r(e,t){return new Proxy(e,{construct:(e,r)=>(i(t,r[1]?.type),new e(...r))})}function n(t){o.v6||e(`Workers/${t}/Unavailable`)}function i(t,r){e("module"===r?`Workers/${t}/Module`:`Workers/${t}/Classic`)}function a(t,r){e(`Workers/${r}/SM/Unsupported`),console.warn(`NR Agent: Unable to capture ${r} workers.`,t)}}(this.recordSupportability.bind(this))}reportPolyfillsNeeded(){this.recordSupportability(`Generic/Polyfill/Promise/${this.PfFeatStatusEnum.PROMISE}`),this.recordSupportability(`Generic/Polyfill/ArrayIncludes/${this.PfFeatStatusEnum.ARRAY_INCLUDES}`),this.recordSupportability(`Generic/Polyfill/ObjectAssign/${this.PfFeatStatusEnum.OBJECT_ASSIGN}`),this.recordSupportability(`Generic/Polyfill/ObjectEntries/${this.PfFeatStatusEnum.OBJECT_ENTRIES}`)}eachSessionChecks(){o.il&&(0,t.bP)("pageshow",(e=>{e.persisted&&this.recordCustom("Custom/BFCache/PageRestored")}))}}var M=__webpack_require__(9010),D=__webpack_require__(8539),W=__webpack_require__.n(D),B=__webpack_require__(9599),$=o.ZP,G="fetch-",F=G+"body-",U=["arrayBuffer","blob","json","text","formData"],X=$.Request,V=$.Response,Y="prototype",J="nr@context";const Q={};function K(e){const t=function(e){return(e||a.ee).get("fetch")}(e);if(!(X&&V&&$.fetch))return t;if(Q[t.debugId])return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=W()(arguments),o={};t.emit(n+"before-start",[r],o),o[J]&&o[J].dt&&(e=o[J].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return Q[t.debugId]=!0,(0,B.D)(U,(function(e,t){r(X[Y],t,F),r(V[Y],t,F)})),r($,"fetch",G),t.on(G+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(G+"done",[null,r],n)}else t.emit(G+"done",[e],n)})),t}var ee="nr@original",te=Object.prototype.hasOwnProperty,re=!1;function ne(e,t){return e||(e=a.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c<t.length;c++)ae(a=e[s=t[c]])||(e[s]=r(a,u?s+n:n,i,s,o))},r.flag=ee,r;function r(t,r,i,o,a){return ae(t)?t:(r||(r=""),nrWrapper[ee]=t,oe(t,nrWrapper,e),nrWrapper);function nrWrapper(){var s,c,u,d;try{c=this,s=W()(arguments),u="function"==typeof i?i(s,c):i||{}}catch(t){ie([t,"",[s,c,o],u],e)}n(r+"start",[s,c,o],u,a);try{return d=t.apply(c,s)}catch(e){throw n(r+"err",[s,c,e],u,a),e}finally{n(r+"end",[s,c,d],u,a)}}}function n(r,n,i,o){if(!re||t){var a=re;re=!0;try{e.emit(r,n,i,t,o)}catch(t){ie([t,r,n,i],e)}re=a}}}function ie(e,t){t||(t=a.ee);try{t.emit("internal-error",e)}catch(e){}}function oe(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){ie([e],r)}for(var n in e)te.call(e,n)&&(t[n]=e[n]);return t}function ae(e){return!(e&&e instanceof Function&&e.apply&&!e[ee])}function se(e,t,r){var n=e[t];e[t]=function(e,t){var r=t(e);return r[ee]=e,oe(e,r,a.ee),r}(n,r)}function ce(){for(var e=arguments.length,t=new Array(e),r=0;r<e;++r)t[r]=arguments[r];return t}const ue={};function de(e){const t=function(e){return(e||a.ee).get("timer")}(e);if(ue[t.debugId])return t;ue[t.debugId]=!0;var r=ne(t),n="setTimeout",i="setInterval",s="clearTimeout",c="-start";return r.inPlace(o.ZP,[n,"setImmediate"],n+"-"),r.inPlace(o.ZP,[i],i+"-"),r.inPlace(o.ZP,[s,"clearImmediate"],s+"-"),t.on(i+c,(function(e,t,n){e[0]=r(e[0],"fn-",null,n)})),t.on(n+c,(function(e,t,n){this.method=n,this.timerDuration=isNaN(e[1])?0:+e[1],e[0]=r(e[0],"fn-",this,n)})),t}const fe={};function le(e){const t=function(e){return(e||a.ee).get("raf")}(e);if(fe[t.debugId]||!o.il)return t;fe[t.debugId]=!0;var r=ne(t),n="equestAnimationFrame";return r.inPlace(window,["r"+n,"mozR"+n,"webkitR"+n,"msR"+n],"raf-"),t.on("raf-start",(function(e){e[0]=r(e[0],"fn-")})),t}const pe={};function he(e){const t=function(e){return(e||a.ee).get("history")}(e);if(pe[t.debugId]||!o.il)return t;pe[t.debugId]=!0;var r=ne(t),n=window.history&&window.history.constructor&&window.history.constructor.prototype,i=window.history;return n&&n.pushState&&n.replaceState&&(i=n),r.inPlace(i,["pushState","replaceState"],"-"),t}const ve={};function _e(e){const r=function(e){return(e||a.ee).get("jsonp")}(e);if(ve[r.debugId]||!o.il)return r;ve[r.debugId]=!0;var n=ne(r),i=/[?&](?:callback|cb)=([^&#]+)/,s=/(.*)\.([^.]+)/,c=/^(\w+)(\.|$)(.*)$/,u=["appendChild","insertBefore","replaceChild"];function d(e,t){var r=e.match(c),n=r[1],i=r[3];return i?d(i,t[n]):t[n]}return"addEventListener"in window&&(Node&&Node.prototype&&Node.prototype.appendChild?n.inPlace(Node.prototype,u,"dom-"):(n.inPlace(HTMLElement.prototype,u,"dom-"),n.inPlace(HTMLHeadElement.prototype,u,"dom-"),n.inPlace(HTMLBodyElement.prototype,u,"dom-"))),r.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var o=(a=e.src,c=a.match(i),c?c[1]:null);var a,c;if(!o)return;var u=function(e){var t=e.match(s);if(t&&t.length>=3)return{key:t[2],parent:d(t[1],window)};return{key:e,parent:window}}(o);if("function"!=typeof u.parent[u.key])return;var f={};function l(){r.emit("jsonp-end",[],f),e.removeEventListener("load",l,(0,t.m$)(!1)),e.removeEventListener("error",p,(0,t.m$)(!1))}function p(){r.emit("jsonp-error",[],f),r.emit("jsonp-end",[],f),e.removeEventListener("load",l,(0,t.m$)(!1)),e.removeEventListener("error",p,(0,t.m$)(!1))}n.inPlace(u.parent,[u.key],"cb-",f),e.addEventListener("load",l,(0,t.m$)(!1)),e.addEventListener("error",p,(0,t.m$)(!1)),r.emit("new-jsonp",[e.src],f)}(e[0])})),r}const be={};function ge(e){const t=function(e){return(e||a.ee).get("mutation")}(e);if(be[t.debugId]||!o.il)return t;be[t.debugId]=!0;var r=ne(t),n=b.Yu.MO;return n&&(window.MutationObserver=function(e){return this instanceof n?new n(r(e,"fn-")):n.apply(this,arguments)},MutationObserver.prototype=n.prototype),t}const me={};function we(e){const t=function(e){return(e||a.ee).get("promise")}(e);if(me[t.debugId])return t;me[t.debugId]=!0;var r=a.c,n=ne(t),i=b.Yu.PR;return i&&function(){function e(e){var r=t.context(),o=n(e,"executor-",r,null,!1),a=new i(o);return t.context(a).getCtx=function(){return r},a}o.ZP.Promise=e,Object.defineProperty(o.ZP.Promise,"name",{value:"Promise"}),["all","race"].forEach((function(e){var r=i[e];i[e]=function(n){var o=!1;(0,B.D)(n,(function(t,r){Promise.resolve(r).then(s("all"===e),s(!1))}));var a=r.apply(i,arguments);return i.resolve(a);function s(e){return function(){t.emit("propagate",[null,!o],a,!1,!1),o=o||!e}}}})),["resolve","reject"].forEach((function(e){var r=i[e];i[e]=function(e){var n=r.apply(i,arguments);return e!==n&&t.emit("propagate",[e,!0],n,!1,!1),n}})),i.prototype.catch=function(e){return this.then(null,e)},Object.assign(i.prototype,{constructor:{value:e}}),(0,B.D)(Object.getOwnPropertyNames(i),(function(t,r){try{e[r]=i[r]}catch(e){}})),se(i.prototype,"then",(function(e){return function(){var i=this,o=ce.apply(this,arguments),a=r(i);a.promise=i,o[0]=n(o[0],"cb-",a,null,!1),o[1]=n(o[1],"cb-",a,null,!1);var s=e.apply(this,o);return a.nextPromise=s,t.emit("propagate",[i,!0],s,!1,!1),s}})),t.on("executor-start",(function(e){e[0]=n(e[0],"resolve-",this,null,!1),e[1]=n(e[1],"resolve-",this,null,!1)})),t.on("executor-err",(function(e,t,r){e[1](r)})),t.on("cb-end",(function(e,r,n){t.emit("propagate",[n,!0],this.nextPromise,!1,!1)})),t.on("propagate",(function(e,r,n){this.getCtx&&!r||(this.getCtx=function(){if(e instanceof Promise)var r=t.context(e);return r&&r.getCtx?r.getCtx():this})})),e.toString=function(){return""+i}}(),t}const ye={};function xe(e){var t=function(e){return(e||a.ee).get("events")}(e);if(ye[t.debugId])return t;ye[t.debugId]=!0;var r=ne(t,!0),n=XMLHttpRequest,i="addEventListener",s="removeEventListener";function c(e){for(var t=e;t&&!t.hasOwnProperty(i);)t=Object.getPrototypeOf(t);t&&u(t)}function u(e){r.inPlace(e,[i,s],"-",d)}function d(e,t){return e[1]}return"getPrototypeOf"in Object?(o.il&&c(document),c(o.ZP),c(n.prototype)):n.prototype.hasOwnProperty(i)&&(u(o.ZP),u(n.prototype)),t.on(i+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,M.X)(n,"nr@wrapped",(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(s+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}const Pe={};function Oe(e){var r=e||a.ee;const n=function(e){return(e||a.ee).get("xhr")}(r);if(Pe[n.debugId])return n;Pe[n.debugId]=!0,xe(r);var i=ne(n),s=b.Yu.XHR,c=b.Yu.MO,u=b.Yu.PR,d=b.Yu.SI,f="readystatechange",l=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],p=[],h=o.ZP.XMLHttpRequest.listeners,v=o.ZP.XMLHttpRequest=function(e){var r=new s(e);function i(){try{n.emit("new-xhr",[r],r),r.addEventListener(f,g,(0,t.m$)(!1))}catch(e){console.error(e);try{n.emit("internal-error",[e])}catch(e){}}}return this.listeners=h?[...h,i]:[i],this.listeners.forEach((e=>e())),r};function _(e,t){i.inPlace(t,["onreadystatechange"],"fn-",P)}function g(){var e=this,t=n.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,l,"fn-",P)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,v),v.prototype=s.prototype,i.inPlace(v.prototype,["open","send"],"-xhr-",P),n.on("send-xhr-start",(function(e,t){_(e,t),function(e){p.push(e),c&&(m?m.then(x):d?d(x):(w=-w,y.data=w))}(t)})),n.on("open-xhr-start",_),c){var m=u&&u.resolve();if(!d&&!u){var w=1,y=document.createTextNode(w);new c(x).observe(y,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===f||x()}));function x(){for(var e=0;e<p.length;e++)_(0,p[e]);p.length&&(p=[])}function P(e,t){return t}return n}function ke(e){return xe(e)}function Ee(e){return K(e)}function Se(e){return he(e)}function Ce(e){return le(e)}function Te(e){return de(e)}function Ae(e){return Oe(e)}var qe,Ie={};try{qe=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(Ie.console=!0,-1!==qe.indexOf("dev")&&(Ie.dev=!0),-1!==qe.indexOf("nr_dev")&&(Ie.nrDev=!0))}catch(e){}function je(e){try{Ie.console&&je(e)}catch(e){}}Ie.nrDev&&a.ee.on("internal-error",(function(e){je(e.stack)})),Ie.dev&&a.ee.on("fn-err",(function(e,t,r){je(r.stack)})),Ie.dev&&(je("NR AGENT IN DEVELOPMENT MODE"),je("flags: "+(0,B.D)(Ie,(function(e,t){return e})).join(", ")));var Re="nr@seenError";class Ne extends h.W{constructor(e){var t;super(e),t=this,this.skipNext=0,this.handleErrors=!1,this.origOnerror=o.ZP?.onerror;const r=this,n=(0,b.OP)(this.agentIdentifier);n.features.err=!0,r.ee.on("fn-start",(function(e,t,n){r.handleErrors&&(r.skipNext+=1)})),r.ee.on("fn-err",(function(e,t,n){r.handleErrors&&!n[Re]&&((0,M.X)(n,Re,(function(){return!0})),this.thrown=!0,Ze(n,void 0,r.ee))})),r.ee.on("fn-end",(function(){r.handleErrors&&!this.thrown&&r.skipNext>0&&(r.skipNext-=1)})),r.ee.on("internal-error",(e=>{(0,d.p)("ierr",[e,(0,f.zO)(),!0],void 0,void 0,r.ee)}));const i=o.ZP?.onerror;o.ZP.onerror=function(){return i&&i(...arguments),t.onerrorHandler(...arguments),!1};try{o.ZP?.addEventListener("unhandledrejection",(e=>{const t=new Error(`${e.reason}`);(0,d.p)("err",[t,(0,f.zO)(),!1,{unhandledPromiseRejection:1}],void 0,void 0,this.ee)}))}catch(e){}try{throw new Error}catch(e){"stack"in e&&(Te(this.ee),Ce(this.ee),"addEventListener"in o.ZP&&ke(this.ee),n.xhrWrappable&&Ae(this.ee),r.handleErrors=!0)}}onerrorHandler(e,t,r,n,i){try{this.skipNext?this.skipNext-=1:Ze(i||new Le(e,t,r),!0,this.ee)}catch(e){try{(0,d.p)("ierr",[e,(0,f.zO)(),!0],void 0,void 0,this.ee)}catch(e){}}return"function"==typeof this.origOnerror&&this.origOnerror.apply(this,W()(arguments))}}function Le(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}function Ze(e,t,r){var n=t?null:(0,f.zO)();(0,d.p)("err",[e,n],void 0,void 0,r)}var He=1;function ze(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===o.ZP?0:(0,M.X)(e,"nr@id",(function(){return He++}))}var Me=__webpack_require__(1719);function De(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return JSON.stringify(e).length}catch(e){return}}}var We=__webpack_require__(7233),Be=__webpack_require__(2141);class $e{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,b.DL)(this.agentIdentifier);if(!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var o=(0,Be.M)(),a=(0,Be.Ht)(),s=Date.now(),c={spanId:o,traceId:a,timestamp:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(o,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(o,s,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(o,a,s,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,a){if(!("function"==typeof o.ZP?.btoa))return null;var s={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return a&&n!==a&&(s.d.tk=a),btoa(JSON.stringify(s))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,b.Mt)(this.agentIdentifier,"distributed_tracing")&&(r=(0,b.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,We.e)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,b.Mt)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,b.Mt)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,b.Mt)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,b.Mt)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var Ge=["load","error","abort","timeout"],Fe=Ge.length,Ue=b.Yu.REQ,Xe=o.ZP?.XMLHttpRequest;class Ve extends h.W{constructor(e){super(e);const r=(0,b.OP)(this.agentIdentifier);r.xhrWrappable&&!r.disabled&&(r.features.xhr=!0,this.dt=new $e(this.agentIdentifier),this.handler=(e,t,r,n)=>(0,d.p)(e,t,r,n,this.ee),this.wrappedFetch=Ee(this.ee),Ae(this.ee),function(e,r,n,i){function a(e){var r=this;r.totalCbs=0,r.called=0,r.cbTime=0,r.end=P,r.ended=!1,r.xhrGuids={},r.lastSize=null,r.loadCaptureCalled=!1,r.params=this.params||{},r.metrics=this.metrics||{},e.addEventListener("load",(function(t){k(r,e)}),(0,t.m$)(!1)),Me.I&&(Me.I>34||Me.I<10)||e.addEventListener("progress",(function(e){r.lastSize=e.loaded}),(0,t.m$)(!1))}function s(e){this.params={method:e[0]},O(this,e[1]),this.metrics={}}function c(t,r){var n=(0,b.DL)(e);"xpid"in n&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",n.xpid);var o=i.generateTracePayload(this.parsedOrigin);if(o){var a=!1;o.newrelicHeader&&(r.setRequestHeader("newrelic",o.newrelicHeader),a=!0),o.traceContextParentHeader&&(r.setRequestHeader("traceparent",o.traceContextParentHeader),o.traceContextStateHeader&&r.setRequestHeader("tracestate",o.traceContextStateHeader),a=!0),a&&(this.dt=o)}}function u(e,n){var i=this.metrics,o=e[0],a=this;if(i&&o){var s=De(o);s&&(i.txSize=s)}this.startTime=(0,f.zO)(),this.listener=function(e){try{"abort"!==e.type||a.loadCaptureCalled||(a.params.aborted=!0),("load"!==e.type||a.called===a.totalCbs&&(a.onloadCalled||"function"!=typeof n.onload))&&a.end(n)}catch(e){try{r.emit("internal-error",[e])}catch(e){}}};for(var c=0;c<Fe;c++)n.addEventListener(Ge[c],this.listener,(0,t.m$)(!1))}function d(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||this.end(r)}function l(e,t){var r=""+ze(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+ze(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function h(){this.endTime=(0,f.zO)()}function v(e,t){t instanceof Xe&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function _(e,t){t instanceof Xe&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function g(e,t,r){t instanceof Xe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,f.zO)()))}function m(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,f.zO)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};"string"==typeof e[0]?t=e[0]:e[0]&&e[0].url?t=e[0].url:o.ZP?.URL&&e[0]&&e[0]instanceof URL&&(t=e[0].href),t&&(this.parsedOrigin=(0,We.e)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if("string"==typeof e[0]||o.ZP?.URL&&e[0]&&e[0]instanceof URL){var a={};for(var s in r)a[s]=r[s];a.headers=new Headers(r.headers||{}),c(a.headers,n)&&(this.dt=n),e.length>1?e[1]=a:e.push(a)}else e[0]&&e[0].headers&&c(e[0].headers,n)&&(this.dt=n);function c(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,f.zO)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Ue?r=i.url:o.ZP?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),O(this,r);var a=(""+(i&&i instanceof Ue&&i.method||n.method||"GET")).toUpperCase();this.params.method=a,this.txSize=De(n.body)||0}function x(e,t){var r;this.endTime=(0,f.zO)(),this.params||(this.params={}),this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(r=+this.rxSize);var i={txSize:this.txSize,rxSize:r,duration:(0,f.zO)()-this.startTime};n("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this)}function P(e){var t=this.params,r=this.metrics;if(!this.ended){this.ended=!0;for(var i=0;i<Fe;i++)e.removeEventListener(Ge[i],this.listener,!1);t.aborted||(r.duration=(0,f.zO)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):k(this,e),r.cbTime=this.cbTime,n("xhr",[t,r,this.startTime,this.endTime,"xhr"],this))}}function O(e,t){var r=(0,We.e)(t),n=e.params;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}function k(e,t){e.params.status=t.status;var r=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?De(e.response):"text"===r||""===r||void 0===r?De(e.responseText):void 0}(t,e.lastSize);if(r&&(e.metrics.rxSize=r),e.sameOrigin){var n=t.getResponseHeader("X-NewRelic-App-Data");n&&(e.params.cat=n.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",s),r.on("open-xhr-end",c),r.on("send-xhr-start",u),r.on("xhr-cb-time",d),r.on("xhr-load-added",l),r.on("xhr-load-removed",p),r.on("xhr-resolved",h),r.on("addEventListener-end",v),r.on("removeEventListener-end",_),r.on("fn-end",m),r.on("fetch-before-start",w),r.on("fetch-start",y),r.on("fn-start",g),r.on("fetch-done",x)}(this.agentIdentifier,this.ee,this.handler,this.dt))}}var Ye=__webpack_require__(6023),Je="learResourceTimings",Qe="addEventListener",Ke="removeEventListener",et="resourcetimingbufferfull",tt="bstResource",rt="-start",nt="-end",it="fn"+rt,ot="fn"+nt,at="bstTimer",st="pushState",ct=b.Yu.EV;class ut extends h.W{constructor(e){if(super(e),!o.il)return;if(!(window.performance&&window.performance.timing&&window.performance.getEntriesByType))return;(0,b.OP)(this.agentIdentifier).features.stn=!0;const r=this.ee;function n(e){if((0,d.p)(tt,[window.performance.getEntriesByType("resource")],void 0,void 0,r),window.performance["c"+Je])try{window.performance[Ke](et,n,!1)}catch(e){}else try{window.performance[Ke]("webkit"+et,n,!1)}catch(e){}}this.timerEE=Te(this.ee),this.rafEE=Ce(this.ee),Se(this.ee),ke(this.ee),this.ee.on(it,(function(e,t){e[0]instanceof ct&&(this.bstStart=(0,f.zO)())})),this.ee.on(ot,(function(e,t){var n=e[0];n instanceof ct&&(0,d.p)("bst",[n,t,this.bstStart,(0,f.zO)()],void 0,void 0,r)})),this.timerEE.on(it,(function(e,t,r){this.bstStart=(0,f.zO)(),this.bstType=r})),this.timerEE.on(ot,(function(e,t){(0,d.p)(at,[t,this.bstStart,(0,f.zO)(),this.bstType],void 0,void 0,r)})),this.rafEE.on(it,(function(){this.bstStart=(0,f.zO)()})),this.rafEE.on(ot,(function(e,t){(0,d.p)(at,[t,this.bstStart,(0,f.zO)(),"requestAnimationFrame"],void 0,void 0,r)})),this.ee.on(st+rt,(function(e){this.time=(0,f.zO)(),this.startPath=location.pathname+location.hash})),this.ee.on(st+nt,(function(e){(0,d.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,void 0,r)})),(0,Ye.W)()?((0,d.p)(tt,[window.performance.getEntriesByType("resource")],void 0,void 0,r),function(){var e=new PerformanceObserver(((e,t)=>{var n=e.getEntries();(0,d.p)(tt,[n],void 0,void 0,r)}));try{e.observe({entryTypes:["resource"]})}catch(e){}}()):Qe in window.performance&&(window.performance["c"+Je]?window.performance[Qe](et,n,(0,t.m$)(!1)):window.performance[Qe]("webkit"+et,n,(0,t.m$)(!1))),document[Qe]("scroll",this.noOp,(0,t.m$)(!1)),document[Qe]("keypress",this.noOp,(0,t.m$)(!1)),document[Qe]("click",this.noOp,(0,t.m$)(!1))}noOp(e){}}class dt extends h.W{constructor(e){super(e);(0,b.OP)(this.agentIdentifier).features.ins=!0}}var ft="-start",lt="-end",pt="-body",ht="fn"+ft,vt="fn"+lt,_t="cb"+ft,bt="cb"+lt,gt="jsTime",mt="fetch",wt="addEventListener",yt=o.ZP,xt=yt.location;class Pt extends h.W{constructor(e){if(super(e),!o.il)return;const r=(0,b.OP)(this.agentIdentifier);if(!yt[wt]||!r.xhrWrappable||r.disabled)return;r.features.spa=!0;let n,i=0;const a=this.ee.get("tracer"),s=_e(this.ee);const c=function(e){return we(e)}(this.ee),u=ke(this.ee),d=Te(this.ee),l=Ae(this.ee),p=Ee(this.ee),h=Se(this.ee),v=function(e){return ge(e)}(this.ee);function _(e,t){h.emit("newURL",[""+xt,t])}function g(){i++,n=xt.hash,this[ht]=(0,f.zO)()}function m(){i--,xt.hash!==n&&_(0,!0);var e=(0,f.zO)();this[gt]=~~this[gt]+e-this[ht],this[vt]=e}function w(e,t){e.on(t,(function(){this[t]=(0,f.zO)()}))}this.ee.on(ht,g),c.on(_t,g),s.on(_t,g),this.ee.on(vt,m),c.on(bt,m),s.on(bt,m),this.ee.buffer([ht,vt,"xhr-resolved"]),u.buffer([ht]),d.buffer(["setTimeout"+lt,"clearTimeout"+ft,ht]),l.buffer([ht,"new-xhr","send-xhr"+ft]),p.buffer([mt+ft,mt+"-done",mt+pt+ft,mt+pt+lt]),h.buffer(["newURL"]),v.buffer([ht]),c.buffer(["propagate",_t,bt,"executor-err","resolve"+ft]),a.buffer([ht,"no-"+ht]),s.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),w(p,mt+ft),w(p,mt+"-done"),w(s,"new-jsonp"),w(s,"jsonp-end"),w(s,"cb-start"),h.on("pushState-end",_),h.on("replaceState-end",_),yt[wt]("hashchange",_,(0,t.m$)(!0)),yt[wt]("load",_,(0,t.m$)(!0)),yt[wt]("popstate",(function(){_(0,i>1)}),(0,t.m$)(!0))}}var Ot=__webpack_require__(9011),kt=__webpack_require__(4580);let Et=!1;const St=(0,e.n)();try{!function(e){if(Et)return;const t=(0,kt.gG)();o.v6&&(t.info.jsAttributes={...t.info.jsAttributes,isWorker:!0});try{(0,b.CX)(u.Z,t.info),(0,b.Dg)(u.Z,t.init),(0,b.GE)(u.Z,t.loader_config),(0,b.sU)(u.Z,{loaderType:e}),function(e){var t=(0,kt.fP)(),r=a.ee.get(e),n=r.get("tracer"),i="api-",o=i+"ixn-";function s(){}(0,B.D)(["setErrorHandler","finished","addToTrace","inlineHit","addRelease"],(function(e,r){t[r]=u(i,r,!0,"api")})),t.addPageAction=u(i,"addPageAction",!0),t.setCurrentRouteName=u(i,"routeName",!0),t.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,b.OP)(e).customTransaction=(r||"http://custom.transaction")+t,u(i,"setPageViewName",!0,"api")()},t.setCustomAttribute=function(t,r){const n=(0,b.C5)(e);return(0,b.CX)(e,{...n,jsAttributes:{...n.jsAttributes,[t]:r}}),u(i,"setCustomAttribute",!0,"api")()},t.interaction=function(){return(new s).get()};var c=s.prototype={createTracer:function(e,t){var i={},a=this,s="function"==typeof t;return(0,d.p)(o+"tracer",[(0,f.zO)(),e,i],a,void 0,r),function(){if(n.emit((s?"":"no-")+"fn-start",[(0,f.zO)(),a,s],i),s)try{return t.apply(this,arguments)}catch(e){throw n.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],i),e}finally{n.emit("fn-end",[(0,f.zO)()],i)}}}};function u(e,t,n,i){return function(){return(0,d.p)("record-supportability",["API/"+t+"/called"],void 0,void 0,r),(0,d.p)(e+t,[(0,f.zO)()].concat(W()(arguments)),n?null:this,i,r),n?void 0:this}}(0,B.D)("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),(function(e,t){c[t]=u(o,t)})),t.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,d.p)("record-supportability",["API/noticeError/called"],void 0,void 0,r),(0,d.p)("err",[e,(0,f.zO)(),!1,t],void 0,void 0,r)}}(u.Z),Et=!0}catch(e){}}("spa");const e=(0,Ot.K)(u.Z);e.page_view_event&&new v(u.Z),e.page_view_timing&&new g(u.Z),e.metrics&&new z(u.Z,St),e.jserrors&&new Ne(u.Z),e.ajax&&new Ve(u.Z),e.session_trace&&new ut(u.Z),e.page_action&&new dt(u.Z),e.spa&&new Pt(u.Z),function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;t?setTimeout((()=>c(e)),r):o.il?n((()=>c(e))):c(e)}("spa")}catch(e){o.ZP?.newrelic?.ee?.abort&&o.ZP.newrelic.ee.abort()}})(),window.NRBA=__webpack_exports__})(); } } </script> <!-- [START] Adobe Target JS Integration for home page ---> <!-- [END] Adobe Target JS Integration ---> <script type="text/javascript"> var vscom_browser_redirect_params = {"pageLanguage":"en","languageUrls":{"en_US":"https:\/\/visualstudio.microsoft.com\/dev-essentials\/","en":"https:\/\/visualstudio.microsoft.com\/dev-essentials\/","US":"https:\/\/visualstudio.microsoft.com\/dev-essentials\/","zh_CN":"https:\/\/visualstudio.microsoft.com\/zh-hans\/dev-essentials\/","zh-hans":"https:\/\/visualstudio.microsoft.com\/zh-hans\/dev-essentials\/","CN":"https:\/\/visualstudio.microsoft.com\/zh-hans\/dev-essentials\/","zh_TW":"https:\/\/visualstudio.microsoft.com\/zh-hant\/dev-essentials\/","zh-hant":"https:\/\/visualstudio.microsoft.com\/zh-hant\/dev-essentials\/","TW":"https:\/\/visualstudio.microsoft.com\/zh-hant\/dev-essentials\/","fr_FR":"https:\/\/visualstudio.microsoft.com\/fr\/dev-essentials\/","fr":"https:\/\/visualstudio.microsoft.com\/fr\/dev-essentials\/","FR":"https:\/\/visualstudio.microsoft.com\/fr\/dev-essentials\/","de_DE":"https:\/\/visualstudio.microsoft.com\/de\/dev-essentials\/","de":"https:\/\/visualstudio.microsoft.com\/de\/dev-essentials\/","DE":"https:\/\/visualstudio.microsoft.com\/de\/dev-essentials\/","it_IT":"https:\/\/visualstudio.microsoft.com\/it\/dev-essentials\/","it":"https:\/\/visualstudio.microsoft.com\/it\/dev-essentials\/","IT":"https:\/\/visualstudio.microsoft.com\/it\/dev-essentials\/","ja_JP":"https:\/\/visualstudio.microsoft.com\/ja\/dev-essentials\/","ja":"https:\/\/visualstudio.microsoft.com\/ja\/dev-essentials\/","JP":"https:\/\/visualstudio.microsoft.com\/ja\/dev-essentials\/","ru_RU":"https:\/\/visualstudio.microsoft.com\/ru\/dev-essentials\/","ru":"https:\/\/visualstudio.microsoft.com\/ru\/dev-essentials\/","RU":"https:\/\/visualstudio.microsoft.com\/ru\/dev-essentials\/","es_ES":"https:\/\/visualstudio.microsoft.com\/es\/dev-essentials\/","es":"https:\/\/visualstudio.microsoft.com\/es\/dev-essentials\/","ES":"https:\/\/visualstudio.microsoft.com\/es\/dev-essentials\/","cs_CZ":"https:\/\/visualstudio.microsoft.com\/cs\/dev-essentials\/","cs":"https:\/\/visualstudio.microsoft.com\/cs\/dev-essentials\/","CZ":"https:\/\/visualstudio.microsoft.com\/cs\/dev-essentials\/","ko_KR":"https:\/\/visualstudio.microsoft.com\/ko\/dev-essentials\/","ko":"https:\/\/visualstudio.microsoft.com\/ko\/dev-essentials\/","KR":"https:\/\/visualstudio.microsoft.com\/ko\/dev-essentials\/","pl_PL":"https:\/\/visualstudio.microsoft.com\/pl\/dev-essentials\/","pl":"https:\/\/visualstudio.microsoft.com\/pl\/dev-essentials\/","PL":"https:\/\/visualstudio.microsoft.com\/pl\/dev-essentials\/","pt_BR":"https:\/\/visualstudio.microsoft.com\/pt-br\/dev-essentials\/","pt-br":"https:\/\/visualstudio.microsoft.com\/pt-br\/dev-essentials\/","BR":"https:\/\/visualstudio.microsoft.com\/pt-br\/dev-essentials\/","tr_TR":"https:\/\/visualstudio.microsoft.com\/tr\/dev-essentials\/","tr":"https:\/\/visualstudio.microsoft.com\/tr\/dev-essentials\/","TR":"https:\/\/visualstudio.microsoft.com\/tr\/dev-essentials\/"},"cookie":{"name":"_icl_visitor_lang_js","domain":"visualstudio.microsoft.com","path":"\/","expiration":720},"is404":false,"urlLocale":""}; var VScomMLBrowserRedirect=function(vscom_browser_redirect_params){"use strict";var self=this,vscom_browser_redirect_params=vscom_browser_redirect_params||window.vscom_browser_redirect_params;self.vscom_browser_redirect_params=vscom_browser_redirect_params,self.init=function(){var redirectUrl,browserLanguages;if(self.is404())self.status="404";else if(!vscom_browser_redirect_params.urlLocale){var cookieLanguage=self.readCookie(vscom_browser_redirect_params.cookie.name);if(cookieLanguage)return redirectUrl=self.redirectIfNeeded(cookieLanguage),void(self.status="cookie");browserLanguages=self.getBrowserLanguage(),redirectUrl=self.lookUpRedirectParams(browserLanguages),self.status="new";var pageLanguage=vscom_browser_redirect_params.pageLanguage.toLowerCase();void 0===redirectUrl||!1===redirectUrl.url||!1!==navigator.cookieEnabled||redirectUrl.url!==vscom_browser_redirect_params.languageUrls[pageLanguage]?void 0!==redirectUrl&&!1!==redirectUrl.url&&redirectUrl.url!==vscom_browser_redirect_params.languageUrls[pageLanguage]&&(self.status="redirect",self.redirectWithQueryString(redirectUrl.url)):self.status="no cookies"}},self.lookUpRedirectParams=function(browserLanguages){for(var redirectUrl,browserLanguagesLength=browserLanguages.length,pageLanguage=vscom_browser_redirect_params.pageLanguage.toLowerCase(),i=0;i<browserLanguagesLength;i++){var browserLanguage=browserLanguages[i];if(pageLanguage===browserLanguage)break;if(!1!==(redirectUrl=self.mapBrowserToVSCOMLang(browserLanguage)).url)break}return redirectUrl},self.getRedirectUrl=function(browserLanguage){if(!1===browserLanguage)return{url:!1,language:!1};var redirectUrl=!1,redirectLanguage=!1,languageUrls=vscom_browser_redirect_params.languageUrls,languageFirstPart=browserLanguage.substr(0,2),languageLastPart=browserLanguage.substr(3,2);return void 0===languageUrls[browserLanguage]?void 0!==languageUrls[languageFirstPart]?(redirectUrl=languageUrls[languageFirstPart],redirectLanguage=languageFirstPart):void 0!==languageUrls[languageLastPart]&&(redirectUrl=languageUrls[languageLastPart],redirectLanguage=languageLastPart):(redirectUrl=languageUrls[browserLanguage],redirectLanguage=browserLanguage),{url:redirectUrl,language:redirectLanguage}},self.is404=function(){return vscom_browser_redirect_params.is404},self.mapBrowserToVSCOMLang=function(browserLanguage){var redirectUrl;return browserLanguage=self.maybeCovertChinese(browserLanguage),redirectUrl=self.getRedirectUrl(browserLanguage)},self.redirectIfNeeded=function(language){var pageLanguage=vscom_browser_redirect_params.pageLanguage.toLowerCase(),languageUrls=vscom_browser_redirect_params.languageUrls,redirectUrl;return pageLanguage!==(language=self.maybeCovertChinese(language))&&language.substr(0,2)!==pageLanguage&&languageUrls[language]!==languageUrls[pageLanguage]&&!1!==(redirectUrl=self.getRedirectUrl(language)).url&&self.redirectWithQueryString(redirectUrl.url),redirectUrl},self.maybeCovertChinese=function(language){var simpleChinese=["hans","cn","CN"];return"zh"===language.substr(0,2)&&-1===simpleChinese.indexOf(language.substr(3,4))&&language.length>3||"TW"==language?language="zh-hant":("zh"==language||"zh"===language.substr(0,2)&&simpleChinese.indexOf(language.substr(3,4))>=0||"CN"==language)&&(language="zh-hans"),language},self.redirectWithQueryString=function(redirectTo){""===window.location.search||redirectTo.includes("?")||(redirectTo+=window.location.search),window.location=redirectTo},self.getExpirationDate=function(){var date=new Date,currentTime=date.getTime();return date.setTime(currentTime+60*vscom_browser_redirect_params.cookie.expiration*60*1e3),date},self.readCookie=function(a){var b=document.cookie.match("(^|;)\\s*"+a+"\\s*=\\s*([^;]+)");return b?b.pop():""},self.setCookie=function(browserLanguage){var cookieParams=vscom_browser_redirect_params.cookie,cookieName=cookieParams.name,path="/";cookieParams.path&&(path=cookieParams.path),window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"language-picker",label:browserLanguage}),document.cookie=cookieName+"= ; expires=Thu, 01 Jan 1970 00:00:01 GMT;",document.cookie=cookieName+"= ; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;",document.cookie=cookieName+"= ; domain= ; expires=Thu, 01 Jan 1970 00:00:01 GMT;",document.cookie=cookieName+"= ; domain= ; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;",document.cookie=cookieName+"= ; domain=."+cookieParams.domain+"; expires=Thu, 01 Jan 1970 00:00:01 GMT;",document.cookie=cookieName+"= ; domain=."+cookieParams.domain+"; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;",document.cookie=cookieName+"="+browserLanguage+"; expires="+self.getExpirationDate().toGMTString()+"; path="+path},self.getBrowserLanguage=function(){var browserLanguages=[];return navigator.languages&&(browserLanguages=navigator.languages),0===browserLanguages.length&&(navigator.language||navigator.userLanguage)&&browserLanguages.push(navigator.language||navigator.userLanguage),0===browserLanguages.length&&(navigator.browserLanguage||navigator.systemLanguage)&&browserLanguages.push(navigator.browserLanguage||navigator.systemLanguage),0!==browserLanguages.length&&(browserLanguages=browserLanguages.join("|").toLowerCase().split("|")),browserLanguages}};"undefined"!=typeof module&&module.exports&&(module.exports={VScomMLBrowserRedirect:VScomMLBrowserRedirect}); VScomMLBrowserRedirect = new VScomMLBrowserRedirect(); VScomMLBrowserRedirect.init(); </script> <script> /*! lazysizes - v4.1.3 | For lazy loading images */ !function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}(window,function(a,b){"use strict";if(b.getElementsByClassName){var c,d,e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("Event");return e||(e={}),e.instance=c,h.initEvent(d,!f,!g),h.detail=e,a.dispatchEvent(h),h},w=function(b,c){var e;!g&&(e=a.picturefill||d.pf)?(c&&c.src&&!b[i]("srcset")&&b.setAttribute("srcset",c.src),e({reevaluate:!0,elements:[b]})):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,e=d.throttleDelay,g=d.ricTimeout,h=function(){b=!1,c=f.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==d.ricTimeout&&(g=d.ricTimeout)}:A(function(){k(h)},!0);return function(a){var d;(a=a===!0)&&(g=33),b||(b=!0,d=e-(f.now()-c),0>d&&(d=0),a||9>d?i():k(i,d))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;d>a?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}};!function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b]);a.lazySizesConfig=d,k(function(){d.init&&F()})}();var D=function(){var g,l,m,o,p,y,D,F,G,H,I,J,K,L,M=/^img$/i,N=/^iframe$/i,O="onscroll"in a&&!/(gle|ing)bot/.test(navigator.userAgent),P=0,Q=0,R=0,S=-1,T=function(a){R--,a&&a.target&&u(a.target,T),(!a||0>R||!a.target)&&(R=0)},U=function(a,c){var d,f=a,g="hidden"==x(b.body,"visibility")||"hidden"!=x(a.parentNode,"visibility")&&"hidden"!=x(a,"visibility");for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)g=(x(f,"opacity")||1)>0,g&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},V=function(){var a,f,h,j,k,m,n,p,q,r=c.elements;if((o=d.loadMode)&&8>R&&(a=r.length)){f=0,S++,null==K&&("expand"in d||(d.expand=e.clientHeight>500&&e.clientWidth>500?500:370),J=d.expand,K=J*d.expFactor),K>Q&&1>R&&S>2&&o>2&&!b.hidden?(Q=K,S=0):Q=o>1&&S>1&&6>R?J:P;for(;a>f;f++)if(r[f]&&!r[f]._lazyRace)if(O)if((p=r[f][i]("data-expand"))&&(m=1*p)||(m=Q),q!==m&&(y=innerWidth+m*L,D=innerHeight+m,n=-1*m,q=m),h=r[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*L&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||"hidden"!=x(r[f],"visibility"))&&(l&&3>R&&!p&&(3>o||4>S)||U(r[f],m))){if(ba(r[f]),k=!0,R>9)break}else!k&&l&&!j&&4>R&&4>S&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=r[f][i](d.sizesAttr)))&&(j=g[0]||r[f]);else ba(r[f]);j&&!k&&ba(j)}},W=B(V),X=function(a){s(a.target,d.loadedClass),t(a.target,d.loadingClass),u(a.target,Z),v(a.target,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,e,f){var g,h,j,l,o,p;(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},p&&(u(a,T,!0),clearTimeout(m),m=k(T,2500),s(a,d.loadingClass),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(N.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){(!p||a.complete&&a.naturalWidth>1)&&(p?T(o):R--,X(o))},!0)}),ba=function(a){var b,c=M.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass)||!r(a,d.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,R++,aa(a,b,f,e,c))},ca=function(){if(!l){if(f.now()-p<999)return void k(ca,999);var a=C(function(){d.loadMode=3,W()});l=!0,d.loadMode=3,W(),j("scroll",function(){3==d.loadMode&&(d.loadMode=2),a()},!0)}};return{_:function(){p=f.now(),c.elements=b.getElementsByClassName(d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),L=d.hFac,j("scroll",W,!0),j("resize",W,!0),a.MutationObserver?new MutationObserver(W).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",W,!0),e[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ca():(j("load",ca),b[h]("DOMContentLoaded",W),k(ca,2e4)),c.elements.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;g>f;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width,d&&d!==a._lazysizesWidth&&c(a,f,e,d)))},f=function(){var b,c=a.length;if(c)for(b=0;c>b;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){F.i||(F.i=!0,E._(),D._())};return c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}}); </script> <meta name="format-detection" content="telephone=no"/> <meta name="baidu-site-verification" content="codeva-dhhqsW34IG"/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script type="text/javascript"> var doc = document.documentElement; doc.setAttribute('data-useragent', navigator.userAgent); </script> <script> function searchbuttonclick() { if (!isSearchFieldVisible()) { displaySearchField(); focusSearchField(); } else if (document.getElementById('searchinput').value) { document.getElementById('searchform').submit(); } else { closeSearchBox(); } } function focusSearchField() { var textBox = jQuery("#searchfield"); textBox = textBox.length > 0 ? textBox[0] : null; jQuery("#searchfield").focus(); if (!!textBox && textBox != document.activeElement) { textBox.focus(); } } function clearSearchText() { document.getElementById('searchinput').value=''; } function isSearchFieldVisible() { return document.getElementById('searchfield').style.display !== 'none'; } function displaySearchField() { document.getElementById('searchfield').style.display = 'inline-block'; } function closeSearchBox(){ clearSearchText(); document.getElementById('searchfield').style.display = 'none'; } </script> <script>window.performance && performance.mark && performance.mark("HeadAreaEnd")</script> </head> <body class="page-template page-template-100-modern page-template-100-modern-php page page-id-689 microsoft-uhf awb-no-sidebars fusion-image-hovers fusion-pagination-sizing fusion-button_type-flat fusion-button_span-no fusion-button_gradient-linear avada-image-rollover-circle-yes avada-image-rollover-yes avada-image-rollover-direction-left fusion-body ltr no-tablet-sticky-header no-mobile-sticky-header no-mobile-slidingbar no-desktop-totop no-mobile-totop fusion-sub-menu-fade mobile-logo-pos-left layout-wide-mode avada-has-boxed-modal-shadow-none layout-scroll-offset-full avada-has-zero-margin-offset-top avada-has-header-hidden mobile-menu-design-modern fusion-show-pagination-text fusion-header-layout-v1 avada-responsive avada-footer-fx-none avada-menu-highlight-style-bar fusion-search-form-classic fusion-main-menu-search-dropdown fusion-avatar-square avada-dropdown-styles avada-blog-layout-medium alternate avada-blog-archive-layout-large avada-header-shadow-no avada-menu-icon-position-left avada-has-100-footer avada-has-breadcrumb-mobile-hidden avada-has-titlebar-bar_and_content avada-has-pagination-padding avada-flyout-menu-direction-fade avada-ec-views-v1" > <!-- Loading Accessibility Automation Tool in all non prod env --> <!-- Loading Accessibility Automation Tool in all non prod env --> <div id="headerArea" class="uhf" data-m='{"cN":"headerArea","cT":"Area_coreuiArea","id":"a1Body","sN":1,"aN":"Body"}'> <div id="headerRegion" data-region-key="headerregion" data-m='{"cN":"headerRegion","cT":"Region_coreui-region","id":"r1a1","sN":1,"aN":"a1"}' > <div id="headerUniversalHeader" data-m='{"cN":"headerUniversalHeader","cT":"Module_coreui-universalheader","id":"m1r1a1","sN":1,"aN":"r1a1"}' data-module-id="Category|headerRegion|coreui-region|headerUniversalHeader|coreui-universalheader"> <div data-m='{"cN":"cookiebanner_cont","cT":"Container","id":"c1m1r1a1","sN":1,"aN":"m1r1a1"}'> <div id="uhfCookieAlert" data-locale="en-us"> <div id="msccBannerV2"></div> </div> </div> <a id="uhfSkipToMain" class="m-skip-to-main" href="javascript:void(0)" data-href="#main" tabindex="0" data-m='{"cN":"Skip to content_nonnav","id":"nn2m1r1a1","sN":2,"aN":"m1r1a1"}'>Skip to main content</a> <header class="c-uhfh context-uhf no-js c-sgl-stck c-category-header " itemscope="itemscope" data-header-footprint="/VisualStudio/VisualStudioHeaderMsftPROD-Dark-1, fromService: True" data-magict="true" itemtype="http://schema.org/Organization"> <div class="theme-dark js-global-head f-closed global-head-cont" data-m='{"cN":"Universal Header_cont","cT":"Container","id":"c3m1r1a1","sN":3,"aN":"m1r1a1"}'> <div class="c-uhfh-gcontainer-st"> <button type="button" class="c-action-trigger c-glyph glyph-global-nav-button" aria-label="All Microsoft expand to see list of Microsoft products and services" initialState-label="All Microsoft expand to see list of Microsoft products and services" toggleState-label="Close All Microsoft list" aria-expanded="false" data-m='{"cN":"Mobile menu button_nonnav","id":"nn1c3m1r1a1","sN":1,"aN":"c3m1r1a1"}'></button> <button type="button" class="c-action-trigger c-glyph glyph-arrow-htmllegacy c-close-search" aria-label="Close search" aria-expanded="false" data-m='{"cN":"Close Search_nonnav","id":"nn2c3m1r1a1","sN":2,"aN":"c3m1r1a1"}'></button> <a id="uhfLogo" class="c-logo c-sgl-stk-uhfLogo" itemprop="url" href="https://www.microsoft.com" aria-label="Microsoft" data-m='{"cN":"GlobalNav_Logo_cont","cT":"Container","id":"c3c3m1r1a1","sN":3,"aN":"c3m1r1a1"}'> <img alt="" itemprop="logo" class="c-image" src="https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE1MmB8?ver=6c43g" role="presentation" aria-hidden="true" /> <span itemprop="name" role="presentation" aria-hidden="true">Microsoft</span> </a> <div class="f-mobile-title"> <button type="button" class="c-action-trigger c-glyph glyph-chevron-left" aria-label="See more menu options" data-m='{"cN":"Mobile back button_nonnav","id":"nn4c3m1r1a1","sN":4,"aN":"c3m1r1a1"}'></button> <span data-global-title="Microsoft home" class="js-mobile-title">Visual Studio</span> <button type="button" class="c-action-trigger c-glyph glyph-chevron-right" aria-label="See more menu options" data-m='{"cN":"Mobile forward button_nonnav","id":"nn5c3m1r1a1","sN":5,"aN":"c3m1r1a1"}'></button> </div> <div class="c-show-pipe x-hidden-vp-mobile-st"> <a id="uhfCatLogo" class="c-logo c-cat-logo" href="https://visualstudio.microsoft.com/" aria-label="Visual Studio" itemprop="url" data-m='{"cN":"CatNav_Visual Studio_nav","id":"n6c3m1r1a1","sN":6,"aN":"c3m1r1a1"}'> <span>Visual Studio</span> </a> </div> <div class="cat-logo-button-cont x-hidden"> <button type="button" id="uhfCatLogoButton" class="c-cat-logo-button x-hidden" aria-expanded="false" aria-label="Visual Studio" data-m='{"cN":"Visual Studio_nonnav","id":"nn7c3m1r1a1","sN":7,"aN":"c3m1r1a1"}'> Visual Studio </button> </div> <nav id="uhf-g-nav" aria-label="Contextual menu" class="c-uhfh-gnav" data-m='{"cN":"Category nav_cont","cT":"Container","id":"c8c3m1r1a1","sN":8,"aN":"c3m1r1a1"}'> <ul class="js-paddle-items"> <li class="single-link js-nav-menu x-hidden-none-mobile-vp uhf-menu-item"> <a class="c-uhf-nav-link" href="https://visualstudio.microsoft.com/" data-m='{"cN":"CatNav_Home_nav","id":"n1c8c3m1r1a1","sN":1,"aN":"c8c3m1r1a1"}' > Home </a> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="devblogs-menu-item" aria-expanded="false" data-m='{"cN":"CatNav_Developer Tools_nonnav","id":"nn2c8c3m1r1a1","sN":2,"aN":"c8c3m1r1a1"}'>Developer Tools</button> <ul class="f-multi-column f-multi-column-2" data-class-idn="f-multi-column f-multi-column-2" aria-hidden="true" data-m='{"cN":"Developer Tools_cont","cT":"Container","id":"c3c8c3m1r1a1","sN":3,"aN":"c8c3m1r1a1"}'> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"Visual Studio 2022_cont","cT":"Container","id":"c1c3c8c3m1r1a1","sN":1,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_41-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_Visual Studio 2022_nonnav","id":"nn1c1c3c8c3m1r1a1","sN":1,"aN":"c1c3c8c3m1r1a1"}'>Visual Studio 2022</span> <button id="uhf-navbtn-shellmenu_41-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_Visual Studio 2022_nonnav","id":"nn2c1c3c8c3m1r1a1","sN":2,"aN":"c1c3c8c3m1r1a1"}'>Visual Studio 2022</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_41-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Overview_cont","cT":"Container","id":"c3c1c3c8c3m1r1a1","sN":3,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_42" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/" data-m='{"cN":"CatNav_Overview_nav","id":"n1c3c1c3c8c3m1r1a1","sN":1,"aN":"c3c1c3c8c3m1r1a1"}'>Overview</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Features_cont","cT":"Container","id":"c4c1c3c8c3m1r1a1","sN":4,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_43" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/features/" data-m='{"cN":"CatNav_Features_nav","id":"n1c4c1c3c8c3m1r1a1","sN":1,"aN":"c4c1c3c8c3m1r1a1"}'>Features</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Editions_cont","cT":"Container","id":"c5c1c3c8c3m1r1a1","sN":5,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_44" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/compare/" data-m='{"cN":"CatNav_Editions_nav","id":"n1c5c1c3c8c3m1r1a1","sN":1,"aN":"c5c1c3c8c3m1r1a1"}'>Editions</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Extensions_cont","cT":"Container","id":"c6c1c3c8c3m1r1a1","sN":6,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_45" class="js-subm-uhf-nav-link" href="https://marketplace.visualstudio.com/vs" data-m='{"cN":"CatNav_Extensions_nav","id":"n1c6c1c3c8c3m1r1a1","sN":1,"aN":"c6c1c3c8c3m1r1a1"}'>Extensions</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Get Started_cont","cT":"Container","id":"c7c1c3c8c3m1r1a1","sN":7,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_46" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/getting-started/" data-m='{"cN":"CatNav_Get Started_nav","id":"n1c7c1c3c8c3m1r1a1","sN":1,"aN":"c7c1c3c8c3m1r1a1"}'>Get Started</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Service Status_cont","cT":"Container","id":"c8c1c3c8c3m1r1a1","sN":8,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_47" class="js-subm-uhf-nav-link" href="https://aka.ms/vsstatus" data-m='{"cN":"CatNav_Service Status_nav","id":"n1c8c1c3c8c3m1r1a1","sN":1,"aN":"c8c1c3c8c3m1r1a1"}'>Service Status</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"FAQ Support_cont","cT":"Container","id":"c9c1c3c8c3m1r1a1","sN":9,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_48" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/support/" data-m='{"cN":"CatNav_FAQ Support_nav","id":"n1c9c1c3c8c3m1r1a1","sN":1,"aN":"c9c1c3c8c3m1r1a1"}'>FAQ Support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Documentation_cont","cT":"Container","id":"c10c1c3c8c3m1r1a1","sN":10,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_49" class="js-subm-uhf-nav-link" href="https://learn.microsoft.com/visualstudio/" data-m='{"cN":"CatNav_Documentation_nav","id":"n1c10c1c3c8c3m1r1a1","sN":1,"aN":"c10c1c3c8c3m1r1a1"}'>Documentation</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Blog_cont","cT":"Container","id":"c11c1c3c8c3m1r1a1","sN":11,"aN":"c1c3c8c3m1r1a1"}'> <a id="shellmenu_50" class="js-subm-uhf-nav-link" href="https://devblogs.microsoft.com/visualstudio/" data-m='{"cN":"CatNav_Blog_nav","id":"n1c11c1c3c8c3m1r1a1","sN":1,"aN":"c11c1c3c8c3m1r1a1"}'>Blog</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cN":"Visual Studio Code_cont","cT":"Container","id":"c2c3c8c3m1r1a1","sN":2,"aN":"c3c8c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_51-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_Visual Studio Code_nonnav","id":"nn1c2c3c8c3m1r1a1","sN":1,"aN":"c2c3c8c3m1r1a1"}'>Visual Studio Code</span> <button id="uhf-navbtn-shellmenu_51-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"cN":"CatNav_Visual Studio Code_nonnav","id":"nn2c2c3c8c3m1r1a1","sN":2,"aN":"c2c3c8c3m1r1a1"}'>Visual Studio Code</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_51-span"> <li class="js-nav-menu single-link" data-m='{"cN":"Overview_cont","cT":"Container","id":"c3c2c3c8c3m1r1a1","sN":3,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_52" class="js-subm-uhf-nav-link" href="https://code.visualstudio.com/?wt.mc_id=DX_841432" data-m='{"cN":"CatNav_Overview_nav","id":"n1c3c2c3c8c3m1r1a1","sN":1,"aN":"c3c2c3c8c3m1r1a1"}'>Overview</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Extensions_cont","cT":"Container","id":"c4c2c3c8c3m1r1a1","sN":4,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_53" class="js-subm-uhf-nav-link" href="https://marketplace.visualstudio.com/vscode" data-m='{"cN":"CatNav_Extensions_nav","id":"n1c4c2c3c8c3m1r1a1","sN":1,"aN":"c4c2c3c8c3m1r1a1"}'>Extensions</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Support_cont","cT":"Container","id":"c5c2c3c8c3m1r1a1","sN":5,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_54" class="js-subm-uhf-nav-link" href="https://support.serviceshub.microsoft.com/supportforbusiness/create?sapId=d66407ed-3967-b000-4cfb-2c318cad363d" data-m='{"cN":"CatNav_Support_nav","id":"n1c5c2c3c8c3m1r1a1","sN":1,"aN":"c5c2c3c8c3m1r1a1"}'>Support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Documentation_cont","cT":"Container","id":"c6c2c3c8c3m1r1a1","sN":6,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_55" class="js-subm-uhf-nav-link" href="https://code.visualstudio.com/docs" data-m='{"cN":"CatNav_Documentation_nav","id":"n1c6c2c3c8c3m1r1a1","sN":1,"aN":"c6c2c3c8c3m1r1a1"}'>Documentation</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Blog_cont","cT":"Container","id":"c7c2c3c8c3m1r1a1","sN":7,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_56" class="js-subm-uhf-nav-link" href="https://code.visualstudio.com/blogs" data-m='{"cN":"CatNav_Blog_nav","id":"n1c7c2c3c8c3m1r1a1","sN":1,"aN":"c7c2c3c8c3m1r1a1"}'>Blog</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"VS Code for Education_cont","cT":"Container","id":"c8c2c3c8c3m1r1a1","sN":8,"aN":"c2c3c8c3m1r1a1"}'> <a id="shellmenu_57" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vscode-edu/" data-m='{"cN":"CatNav_VS Code for Education_nav","id":"n1c8c2c3c8c3m1r1a1","sN":1,"aN":"c8c2c3c8c3m1r1a1"}'>VS Code for Education</a> </li> </ul> </li> </ul> </div> </li> <li class="single-link js-nav-menu uhf-menu-item"> <a id="c-shellmenu_58" class="c-uhf-nav-link" href="https://visualstudio.microsoft.com/downloads/" data-m='{"cN":"CatNav_Downloads_nav","id":"n4c8c3m1r1a1","sN":4,"aN":"c8c3m1r1a1"}'>Downloads</a> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="c-shellmenu_59" aria-expanded="false" data-m='{"cN":"CatNav_Buy_nonnav","id":"nn5c8c3m1r1a1","sN":5,"aN":"c8c3m1r1a1"}'>Buy</button> <ul class="" data-class-idn="" aria-hidden="true" data-m='{"cN":"Buy_cont","cT":"Container","id":"c6c8c3m1r1a1","sN":6,"aN":"c8c3m1r1a1"}'> <li class="js-nav-menu single-link" data-m='{"cN":"Individual Use_cont","cT":"Container","id":"c1c6c8c3m1r1a1","sN":1,"aN":"c6c8c3m1r1a1"}'> <a id="buy_visual_studio_menu" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/pricing/?tab=individual" data-m='{"cN":"CatNav_Individual Use_nav","id":"n1c1c6c8c3m1r1a1","sN":1,"aN":"c1c6c8c3m1r1a1"}'>Individual Use</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Small to medium teams_cont","cT":"Container","id":"c2c6c8c3m1r1a1","sN":2,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_61" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/pricing/?tab=business" data-m='{"cN":"CatNav_Small to medium teams_nav","id":"n1c2c6c8c3m1r1a1","sN":1,"aN":"c2c6c8c3m1r1a1"}'>Small to medium teams</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Large Organization_cont","cT":"Container","id":"c3c6c8c3m1r1a1","sN":3,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_62" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/vs/pricing/?tab=enterprise" data-m='{"cN":"CatNav_Large Organization_nav","id":"n1c3c6c8c3m1r1a1","sN":1,"aN":"c3c6c8c3m1r1a1"}'>Large Organization</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Sales Support_cont","cT":"Container","id":"c4c6c8c3m1r1a1","sN":4,"aN":"c6c8c3m1r1a1"}'> <a id="c-shellmenu_63" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/subscriptions/support/" data-m='{"cN":"CatNav_Sales Support_nav","id":"n1c4c6c8c3m1r1a1","sN":1,"aN":"c4c6c8c3m1r1a1"}'>Sales Support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Marketplace_cont","cT":"Container","id":"c5c6c8c3m1r1a1","sN":5,"aN":"c6c8c3m1r1a1"}'> <a id="marketplace_menu" class="js-subm-uhf-nav-link" href="https://marketplace.visualstudio.com/" data-m='{"cN":"CatNav_Marketplace_nav","id":"n1c5c6c8c3m1r1a1","sN":1,"aN":"c5c6c8c3m1r1a1"}'>Marketplace</a> </li> </ul> </div> </li> <li class="nested-menu uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button type="button" id="c-shellmenu_65" aria-expanded="false" data-m='{"cN":"CatNav_Subscriptions_nonnav","id":"nn7c8c3m1r1a1","sN":7,"aN":"c8c3m1r1a1"}'>Subscriptions</button> <ul class="" data-class-idn="" aria-hidden="true" data-m='{"cN":"Subscriptions_cont","cT":"Container","id":"c8c8c3m1r1a1","sN":8,"aN":"c8c3m1r1a1"}'> <li class="js-nav-menu single-link" data-m='{"cN":"Overview_cont","cT":"Container","id":"c1c8c8c3m1r1a1","sN":1,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_66" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/subscriptions/" data-m='{"cN":"CatNav_Overview_nav","id":"n1c1c8c8c3m1r1a1","sN":1,"aN":"c1c8c8c3m1r1a1"}'>Overview</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Support_cont","cT":"Container","id":"c2c8c8c3m1r1a1","sN":2,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_67" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/subscriptions/support/" data-m='{"cN":"CatNav_Support_nav","id":"n1c2c8c8c3m1r1a1","sN":1,"aN":"c2c8c8c3m1r1a1"}'>Support</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Administrator Portal_cont","cT":"Container","id":"c3c8c8c3m1r1a1","sN":3,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_68" class="js-subm-uhf-nav-link" href="https://manage.visualstudio.com/GetHelp" data-m='{"cN":"CatNav_Administrator Portal_nav","id":"n1c3c8c8c3m1r1a1","sN":1,"aN":"c3c8c8c3m1r1a1"}'>Administrator Portal</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Subscriber Portal_cont","cT":"Container","id":"c4c8c8c3m1r1a1","sN":4,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_69" class="js-subm-uhf-nav-link" href="https://my.visualstudio.com/GetHelp" data-m='{"cN":"CatNav_Subscriber Portal_nav","id":"n1c4c8c8c3m1r1a1","sN":1,"aN":"c4c8c8c3m1r1a1"}'>Subscriber Portal</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Dev Essentials_cont","cT":"Container","id":"c5c8c8c3m1r1a1","sN":5,"aN":"c8c8c3m1r1a1"}'> <a id="c-shellmenu_70" class="js-subm-uhf-nav-link" href="https://visualstudio.microsoft.com/dev-essentials/" data-m='{"cN":"CatNav_Dev Essentials_nav","id":"n1c5c8c8c3m1r1a1","sN":1,"aN":"c5c8c8c3m1r1a1"}'>Dev Essentials</a> </li> </ul> </div> </li> <li id="overflow-menu" class="overflow-menu x-hidden uhf-menu-item"> <div class="c-uhf-menu js-nav-menu"> <button data-m='{"pid":"More","id":"nn9c8c3m1r1a1","sN":9,"aN":"c8c3m1r1a1"}' type="button" aria-label="More" aria-expanded="false">More</button> <ul id="overflow-menu-list" aria-hidden="true" class="overflow-menu-list"> </ul> </div> </li> <li class="single-link js-nav-menu" id="c-uhf-nav-cta"> <a class="c-uhf-nav-link" href="https://visualstudio.microsoft.com/free-developer-offers/" data-m='{"cN":"CatNav_cta_Free Visual Studio_nav","id":"n10c8c3m1r1a1","sN":10,"aN":"c8c3m1r1a1"}'>Free Visual Studio</a> </li> </ul> </nav> <div class="c-uhfh-actions" data-m='{"cN":"Header actions_cont","cT":"Container","id":"c9c3m1r1a1","sN":9,"aN":"c3m1r1a1"}'> <div class="wf-menu"> <nav id="uhf-c-nav" aria-label="All Microsoft menu" data-m='{"cN":"GlobalNav_cont","cT":"Container","id":"c1c9c3m1r1a1","sN":1,"aN":"c9c3m1r1a1"}'> <ul class="js-paddle-items"> <li> <div class="c-uhf-menu js-nav-menu"> <button type="button" class="c-button-logo all-ms-nav" aria-expanded="false" data-m='{"cN":"GlobalNav_More_nonnav","id":"nn1c1c9c3m1r1a1","sN":1,"aN":"c1c9c3m1r1a1"}'> <span>All Microsoft</span></button> <ul class="f-multi-column f-multi-column-4" aria-hidden="true" data-m='{"cN":"More_cont","cT":"Container","id":"c2c1c9c3m1r1a1","sN":2,"aN":"c1c9c3m1r1a1"}'> <li class="c-w0-contr"> <h2 class="c-uhf-sronly">Global</h2> <ul class="c-w0"> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Security_cont","cT":"Container","id":"c1c2c1c9c3m1r1a1","sN":1,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_0" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/security" data-m='{"cN":"W0Nav_Microsoft Security_nav","id":"n1c1c2c1c9c3m1r1a1","sN":1,"aN":"c1c2c1c9c3m1r1a1"}'>Microsoft Security</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Azure_cont","cT":"Container","id":"c2c2c1c9c3m1r1a1","sN":2,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_1" class="js-subm-uhf-nav-link" href="https://azure.microsoft.com/en-us/" data-m='{"cN":"W0Nav_Azure_nav","id":"n1c2c2c1c9c3m1r1a1","sN":1,"aN":"c2c2c1c9c3m1r1a1"}'>Azure</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Dynamics 365_cont","cT":"Container","id":"c3c2c1c9c3m1r1a1","sN":3,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_2" class="js-subm-uhf-nav-link" href="https://dynamics.microsoft.com/en-us/" data-m='{"cN":"W0Nav_Dynamics 365_nav","id":"n1c3c2c1c9c3m1r1a1","sN":1,"aN":"c3c2c1c9c3m1r1a1"}'>Dynamics 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft 365_cont","cT":"Container","id":"c4c2c1c9c3m1r1a1","sN":4,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_3" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-365/business/" data-m='{"cN":"W0Nav_Microsoft 365_nav","id":"n1c4c2c1c9c3m1r1a1","sN":1,"aN":"c4c2c1c9c3m1r1a1"}'>Microsoft 365</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Microsoft Teams_cont","cT":"Container","id":"c5c2c1c9c3m1r1a1","sN":5,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_4" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"W0Nav_Microsoft Teams_nav","id":"n1c5c2c1c9c3m1r1a1","sN":1,"aN":"c5c2c1c9c3m1r1a1"}'>Microsoft Teams</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"Windows 365_cont","cT":"Container","id":"c6c2c1c9c3m1r1a1","sN":6,"aN":"c2c1c9c3m1r1a1"}'> <a id="shellmenu_5" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/windows-365" data-m='{"cN":"W0Nav_Windows 365_nav","id":"n1c6c2c1c9c3m1r1a1","sN":1,"aN":"c6c2c1c9c3m1r1a1"}'>Windows 365</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c7c2c1c9c3m1r1a1","sN":7,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_7-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c7c2c1c9c3m1r1a1","sN":1,"aN":"c7c2c1c9c3m1r1a1"}'>Tech & innovation</span> <button id="uhf-navbtn-shellmenu_7-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c7c2c1c9c3m1r1a1","sN":2,"aN":"c7c2c1c9c3m1r1a1"}'>Tech & innovation</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_7-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_MicrosoftCloud_cont","cT":"Container","id":"c3c7c2c1c9c3m1r1a1","sN":3,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_8" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-cloud" data-m='{"cN":"GlobalNav_More_TechInnovation_MicrosoftCloud_nav","id":"n1c3c7c2c1c9c3m1r1a1","sN":1,"aN":"c3c7c2c1c9c3m1r1a1"}'>Microsoft Cloud</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation__AI_cont","cT":"Container","id":"c4c7c2c1c9c3m1r1a1","sN":4,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_9" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/ai" data-m='{"cN":"GlobalNav_More_TechInnovation__AI_nav","id":"n1c4c7c2c1c9c3m1r1a1","sN":1,"aN":"c4c7c2c1c9c3m1r1a1"}'>AI</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_AzureSpace_cont","cT":"Container","id":"c5c7c2c1c9c3m1r1a1","sN":5,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_10" class="js-subm-uhf-nav-link" href="https://azure.microsoft.com/en-us/solutions/space/" data-m='{"cN":"GlobalNav_More_TechInnovation_AzureSpace_nav","id":"n1c5c7c2c1c9c3m1r1a1","sN":1,"aN":"c5c7c2c1c9c3m1r1a1"}'>Azure Space</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_MixedReality_cont","cT":"Container","id":"c6c7c2c1c9c3m1r1a1","sN":6,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_11" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/mixed-reality/windows-mixed-reality" data-m='{"cN":"GlobalNav_More_TechInnovation_MixedReality_nav","id":"n1c6c7c2c1c9c3m1r1a1","sN":1,"aN":"c6c7c2c1c9c3m1r1a1"}'>Mixed reality</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_MicrosoftHololens_cont","cT":"Container","id":"c7c7c2c1c9c3m1r1a1","sN":7,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_12" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/hololens" data-m='{"cN":"GlobalNav_More_TechInnovation_MicrosoftHololens_nav","id":"n1c7c7c2c1c9c3m1r1a1","sN":1,"aN":"c7c7c2c1c9c3m1r1a1"}'>Microsoft HoloLens</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_Microsoft Viva_cont","cT":"Container","id":"c8c7c2c1c9c3m1r1a1","sN":8,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_13" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/microsoft-viva" data-m='{"cN":"GlobalNav_More_TechInnovation_Microsoft Viva_nav","id":"n1c8c7c2c1c9c3m1r1a1","sN":1,"aN":"c8c7c2c1c9c3m1r1a1"}'>Microsoft Viva</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_QuantumComputing_cont","cT":"Container","id":"c9c7c2c1c9c3m1r1a1","sN":9,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_14" class="js-subm-uhf-nav-link" href="https://azure.microsoft.com/en-us/solutions/quantum-computing/" data-m='{"cN":"GlobalNav_More_TechInnovation_QuantumComputing_nav","id":"n1c9c7c2c1c9c3m1r1a1","sN":1,"aN":"c9c7c2c1c9c3m1r1a1"}'>Quantum computing</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_TechInnovation_Sustainability_cont","cT":"Container","id":"c10c7c2c1c9c3m1r1a1","sN":10,"aN":"c7c2c1c9c3m1r1a1"}'> <a id="shellmenu_15" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/sustainability/" data-m='{"cN":"GlobalNav_More_TechInnovation_Sustainability_nav","id":"n1c10c7c2c1c9c3m1r1a1","sN":1,"aN":"c10c7c2c1c9c3m1r1a1"}'>Sustainability</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c8c2c1c9c3m1r1a1","sN":8,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_16-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c8c2c1c9c3m1r1a1","sN":1,"aN":"c8c2c1c9c3m1r1a1"}'>Industries</span> <button id="uhf-navbtn-shellmenu_16-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c8c2c1c9c3m1r1a1","sN":2,"aN":"c8c2c1c9c3m1r1a1"}'>Industries</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_16-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Education_cont","cT":"Container","id":"c3c8c2c1c9c3m1r1a1","sN":3,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_17" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/education" data-m='{"cN":"GlobalNav_More_Industries_Education_nav","id":"n1c3c8c2c1c9c3m1r1a1","sN":1,"aN":"c3c8c2c1c9c3m1r1a1"}'>Education</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Automotive_cont","cT":"Container","id":"c4c8c2c1c9c3m1r1a1","sN":4,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_18" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/automotive" data-m='{"cN":"GlobalNav_More_Industries_Automotive_nav","id":"n1c4c8c2c1c9c3m1r1a1","sN":1,"aN":"c4c8c2c1c9c3m1r1a1"}'>Automotive</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Financialservices_cont","cT":"Container","id":"c5c8c2c1c9c3m1r1a1","sN":5,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_19" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/financial-services/banking" data-m='{"cN":"GlobalNav_More_Industries_Financialservices_nav","id":"n1c5c8c2c1c9c3m1r1a1","sN":1,"aN":"c5c8c2c1c9c3m1r1a1"}'>Financial services</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Government_cont","cT":"Container","id":"c6c8c2c1c9c3m1r1a1","sN":6,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_20" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/government" data-m='{"cN":"GlobalNav_More_Industries_Government_nav","id":"n1c6c8c2c1c9c3m1r1a1","sN":1,"aN":"c6c8c2c1c9c3m1r1a1"}'>Government</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Health_cont","cT":"Container","id":"c7c8c2c1c9c3m1r1a1","sN":7,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_21" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/health/microsoft-cloud-for-healthcare" data-m='{"cN":"GlobalNav_More_Industries_Health_nav","id":"n1c7c8c2c1c9c3m1r1a1","sN":1,"aN":"c7c8c2c1c9c3m1r1a1"}'>Healthcare</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Manufacturing_cont","cT":"Container","id":"c8c8c2c1c9c3m1r1a1","sN":8,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_22" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/manufacturing/microsoft-cloud-for-manufacturing" data-m='{"cN":"GlobalNav_More_Industries_Manufacturing_nav","id":"n1c8c8c2c1c9c3m1r1a1","sN":1,"aN":"c8c8c2c1c9c3m1r1a1"}'>Manufacturing</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Retail_cont","cT":"Container","id":"c9c8c2c1c9c3m1r1a1","sN":9,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_23" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry/consumer-goods" data-m='{"cN":"GlobalNav_More_Industries_Retail_nav","id":"n1c9c8c2c1c9c3m1r1a1","sN":1,"aN":"c9c8c2c1c9c3m1r1a1"}'>Retail</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Industries_Allindustries_cont","cT":"Container","id":"c10c8c2c1c9c3m1r1a1","sN":10,"aN":"c8c2c1c9c3m1r1a1"}'> <a id="shellmenu_24" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/industry" data-m='{"cN":"GlobalNav_More_Industries_Allindustries_nav","id":"n1c10c8c2c1c9c3m1r1a1","sN":1,"aN":"c10c8c2c1c9c3m1r1a1"}'>All industries</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c9c2c1c9c3m1r1a1","sN":9,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_25-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c9c2c1c9c3m1r1a1","sN":1,"aN":"c9c2c1c9c3m1r1a1"}'>Partners</span> <button id="uhf-navbtn-shellmenu_25-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c9c2c1c9c3m1r1a1","sN":2,"aN":"c9c2c1c9c3m1r1a1"}'>Partners</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_25-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Partner_FindPartner_cont","cT":"Container","id":"c3c9c2c1c9c3m1r1a1","sN":3,"aN":"c9c2c1c9c3m1r1a1"}'> <a id="shellmenu_26" class="js-subm-uhf-nav-link" href="https://partner.microsoft.com/en-US/" data-m='{"cN":"GlobalNav_More_Partner_FindPartner_nav","id":"n1c3c9c2c1c9c3m1r1a1","sN":1,"aN":"c3c9c2c1c9c3m1r1a1"}'>Find a partner</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Partner_BecomePartner_cont","cT":"Container","id":"c4c9c2c1c9c3m1r1a1","sN":4,"aN":"c9c2c1c9c3m1r1a1"}'> <a id="shellmenu_27" class="js-subm-uhf-nav-link" href="https://partner.microsoft.com/en-US/membership/cloud-solution-provider" data-m='{"cN":"GlobalNav_More_Partner_BecomePartner_nav","id":"n1c4c9c2c1c9c3m1r1a1","sN":1,"aN":"c4c9c2c1c9c3m1r1a1"}'>Become a partner</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Partner_PartnerNetwork_cont","cT":"Container","id":"c5c9c2c1c9c3m1r1a1","sN":5,"aN":"c9c2c1c9c3m1r1a1"}'> <a id="shellmenu_28" class="js-subm-uhf-nav-link" href="https://partner.microsoft.com/en-us/membership" data-m='{"cN":"GlobalNav_More_Partner_PartnerNetwork_nav","id":"n1c5c9c2c1c9c3m1r1a1","sN":1,"aN":"c5c9c2c1c9c3m1r1a1"}'>Partner Network</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Partner_AzureMarketplace_cont","cT":"Container","id":"c6c9c2c1c9c3m1r1a1","sN":6,"aN":"c9c2c1c9c3m1r1a1"}'> <a id="shellmenu_29" class="js-subm-uhf-nav-link" href="https://azuremarketplace.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_Partner_AzureMarketplace_nav","id":"n1c6c9c2c1c9c3m1r1a1","sN":1,"aN":"c6c9c2c1c9c3m1r1a1"}'>Azure Marketplace</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Partner_AppSource_cont","cT":"Container","id":"c7c9c2c1c9c3m1r1a1","sN":7,"aN":"c9c2c1c9c3m1r1a1"}'> <a id="shellmenu_30" class="js-subm-uhf-nav-link" href="https://appsource.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_Partner_AppSource_nav","id":"n1c7c9c2c1c9c3m1r1a1","sN":1,"aN":"c7c9c2c1c9c3m1r1a1"}'>AppSource</a> </li> </ul> </li> <li class="f-sub-menu js-nav-menu nested-menu" data-m='{"cT":"Container","id":"c10c2c1c9c3m1r1a1","sN":10,"aN":"c2c1c9c3m1r1a1"}'> <span id="uhf-navspn-shellmenu_31-span" style="display:none" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn1c10c2c1c9c3m1r1a1","sN":1,"aN":"c10c2c1c9c3m1r1a1"}'>Resources</span> <button id="uhf-navbtn-shellmenu_31-button" type="button" f-multi-parent="true" aria-expanded="false" data-m='{"id":"nn2c10c2c1c9c3m1r1a1","sN":2,"aN":"c10c2c1c9c3m1r1a1"}'>Resources</button> <ul aria-hidden="true" aria-labelledby="uhf-navspn-shellmenu_31-span"> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_Blog_cont","cT":"Container","id":"c3c10c2c1c9c3m1r1a1","sN":3,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_32" class="js-subm-uhf-nav-link" href="https://blogs.microsoft.com/" data-m='{"cN":"GlobalNav_More_Resources_Blog_nav","id":"n1c3c10c2c1c9c3m1r1a1","sN":1,"aN":"c3c10c2c1c9c3m1r1a1"}'>Blog</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_MicrosoftAdvertising_cont","cT":"Container","id":"c4c10c2c1c9c3m1r1a1","sN":4,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_33" class="js-subm-uhf-nav-link" href="https://about.ads.microsoft.com/en-us?s_cid=dig-src_uhfcomm" data-m='{"cN":"GlobalNav_More_Resources_MicrosoftAdvertising_nav","id":"n1c4c10c2c1c9c3m1r1a1","sN":1,"aN":"c4c10c2c1c9c3m1r1a1"}'>Microsoft Advertising</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_DeveloperCenter_cont","cT":"Container","id":"c5c10c2c1c9c3m1r1a1","sN":5,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_34" class="js-subm-uhf-nav-link" href="https://developer.microsoft.com/en-us/" data-m='{"cN":"GlobalNav_More_Resources_DeveloperCenter_nav","id":"n1c5c10c2c1c9c3m1r1a1","sN":1,"aN":"c5c10c2c1c9c3m1r1a1"}'>Developer Center</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_Documentation_cont","cT":"Container","id":"c6c10c2c1c9c3m1r1a1","sN":6,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_35" class="js-subm-uhf-nav-link" href="https://learn.microsoft.com/docs/" data-m='{"cN":"GlobalNav_More_Resources_Documentation_nav","id":"n1c6c10c2c1c9c3m1r1a1","sN":1,"aN":"c6c10c2c1c9c3m1r1a1"}'>Documentation</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_Events_cont","cT":"Container","id":"c7c10c2c1c9c3m1r1a1","sN":7,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_36" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/events" data-m='{"cN":"GlobalNav_More_Resources_Events_nav","id":"n1c7c10c2c1c9c3m1r1a1","sN":1,"aN":"c7c10c2c1c9c3m1r1a1"}'>Events</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_Licensing_cont","cT":"Container","id":"c8c10c2c1c9c3m1r1a1","sN":8,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_37" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/licensing/" data-m='{"cN":"GlobalNav_More_Resources_Licensing_nav","id":"n1c8c10c2c1c9c3m1r1a1","sN":1,"aN":"c8c10c2c1c9c3m1r1a1"}'>Licensing</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_MicrosoftLearn_cont","cT":"Container","id":"c9c10c2c1c9c3m1r1a1","sN":9,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_38" class="js-subm-uhf-nav-link" href="https://learn.microsoft.com/" data-m='{"cN":"GlobalNav_More_Resources_MicrosoftLearn_nav","id":"n1c9c10c2c1c9c3m1r1a1","sN":1,"aN":"c9c10c2c1c9c3m1r1a1"}'>Microsoft Learn</a> </li> <li class="js-nav-menu single-link" data-m='{"cN":"More_Resources_MicrosoftResearch_cont","cT":"Container","id":"c10c10c2c1c9c3m1r1a1","sN":10,"aN":"c10c2c1c9c3m1r1a1"}'> <a id="shellmenu_39" class="js-subm-uhf-nav-link" href="https://www.microsoft.com/en-us/research/" data-m='{"cN":"GlobalNav_More_Resources_MicrosoftResearch_nav","id":"n1c10c10c2c1c9c3m1r1a1","sN":1,"aN":"c10c10c2c1c9c3m1r1a1"}'>Microsoft Research</a> </li> </ul> </li> <li class="f-multi-column-info"> <a data-m='{"id":"n11c2c1c9c3m1r1a1","sN":11,"aN":"c2c1c9c3m1r1a1"}' href="https://www.microsoft.com/en-us/sitemap" aria-label="" class="c-glyph">View Sitemap</a> </li> </ul> </div> </li> </ul> </nav> </div> <form class="c-search" autocomplete="off" id="searchForm" name="searchForm" role="search" action="/en-us/search/" method="GET" data-seAutoSuggest='{"queryParams":{"market":"en-us","clientId":"7F27B536-CF6B-4C65-8638-A0F8CBDFCA65","sources":"Microsoft-Terms,Iris-Products,DCatAll-Products","filter":"+ClientType:StoreWeb","counts":"5,1,5"},"familyNames":{"Apps":"App","Books":"Book","Bundles":"Bundle","Devices":"Device","Fees":"Fee","Games":"Game","MusicAlbums":"Album","MusicTracks":"Song","MusicVideos":"Video","MusicArtists":"Artist","OperatingSystem":"Operating System","Software":"Software","Movies":"Movie","TV":"TV","CSV":"Gift Card","VideoActor":"Actor"}}' data-seautosuggestapi="https://www.microsoft.com/msstoreapiprod/api/autosuggest" data-m='{"cN":"GlobalNav_Search_cont","cT":"Container","id":"c3c1c9c3m1r1a1","sN":3,"aN":"c1c9c3m1r1a1"}' aria-expanded="false"> <input id="cli_shellHeaderSearchInput" aria-label="Search Expanded" aria-autocomplete="list" aria-expanded="false" aria-controls="universal-header-search-auto-suggest-transparent" aria-owns="universal-header-search-auto-suggest-ul" type="search" name="query" role="combobox" placeholder="Search" data-m='{"cN":"SearchBox_nav","id":"n1c3c1c9c3m1r1a1","sN":1,"aN":"c3c1c9c3m1r1a1"}' data-toggle="tooltip" data-placement="right" title="Search" /> <button id="search" aria-label="Search" class="c-glyph" data-m='{"cN":"Search_nav","id":"n2c3c1c9c3m1r1a1","sN":2,"aN":"c3c1c9c3m1r1a1"}' data-bi-mto="true" aria-expanded="false" disabled="disabled"> <span role="presentation">Search</span> <span role="tooltip" class="c-uhf-tooltip c-uhf-search-tooltip">Search</span> </button> <div class="m-auto-suggest" id="universal-header-search-auto-suggest-transparent" role="group"> <ul class="c-menu" id="universal-header-search-auto-suggest-ul" aria-label="Search Suggestions" aria-hidden="true" data-bi-dnt="true" data-bi-mto="true" data-js-auto-suggest-position="default" role="listbox" data-tel="jsll" data-m='{"cN":"search suggestions_cont","cT":"Container","id":"c3c3c1c9c3m1r1a1","sN":3,"aN":"c3c1c9c3m1r1a1"}'></ul> <ul class="c-menu f-auto-suggest-no-results" aria-hidden="true" data-js-auto-suggest-postion="default" data-js-auto-suggest-position="default" role="listbox"> <li class="c-menu-item"> <span tabindex="-1">No results</span></li> </ul> </div> </form> <button data-m='{"cN":"cancel-search","pid":"Cancel Search","id":"nn4c1c9c3m1r1a1","sN":4,"aN":"c1c9c3m1r1a1"}' id="cancel-search" class="cancel-search" aria-label="Cancel Search"> <span>Cancel</span> </button> <div id="meControl" class="c-me" data-signinsettings='{"containerId":"meControl","enabled":true,"headerHeight":48,"debug":false,"extensibleLinks":[],"userData":{"idp":"msa","firstName":"","lastName":"","memberName":"","cid":"","authenticatedState":"3"},"rpData":{"preferredIdp":"msa","msaInfo":{"signInUrl":"https://app.vsaex.visualstudio.com/go/profile?mkt=en-us\u0026wt.mc_id=o~msft~vscom~signin\u0026_ga=1.106715523.1812220160.1467138837","signOutUrl":"https://app.vssps.visualstudio.com/_signout?mkt=en-us\u0026_ga=1.265116815.1812220160.1467138837\u0026redirectUrl=https%3A%2F%2Fvisualstudio.microsoft.com","meUrl":"https://login.live.com/me.srf?wa=wsignin1.0"},"aadInfo":{"signOutUrl":"https://app.vssps.visualstudio.com/_signout?mkt=en-us\u0026_ga=1.265116815.1812220160.1467138837\u0026redirectUrl=https%3A%2F%2Fvisualstudio.microsoft.com","appId":"","siteUrl":"","blockMsaFed":true}}}' data-m='{"cN":"GlobalNav_Account_cont","cT":"Container","id":"c5c1c9c3m1r1a1","sN":5,"aN":"c1c9c3m1r1a1"}'> <div class="msame_Header"> <div class="msame_Header_name st_msame_placeholder">Sign in</div> </div> </div> </div> </div> </div> </header> </div> </div> </div> <div id="wrapper" class="vscom-win-browser "> <div class="vscom-modal-window-wrapper vscom-modal-window-wrapper--hidden" id="vscom-mobile-download-dialog"> <style> #vscom-mobile-download-dialog .vscom-modal-window-content { display: none; } #vscom-mobile-download-dialog .vscom-modal-window-content.active { display: block; } </style> <div class="vscom-modal-window vscom-modal-window--mdd"> <button class="vscom-mobile-dialog-close white-focus-outline" aria-label="Close modal"> <i class="vscom-icon vscom-icon--Cancel" id="vscom-mobile-download-dialog-close"></i> </button> <div class="vscom-modal-window-content mobile-download-dialog-form"> <div data-form-block-id="0ddbaebe-5157-ea11-a811-000d3a3b1bf3"></div> <div id="doS-uJoaJ8L9cVnALebcBTdlxs9zZdFZ4Myv2ygU4Sbg"></div> </div> <div class="vscom-modal-window-content mobile-download-dialog-generic"> <div class="vscom-modal-window-content-inner x-hidden-focus"> <h2 class="vscom-mobile-dialog-header"> This device is not currently supported for these products. </h2> <div class="vscom-mobile-dialog-products"> <a class="black-focus-outline" href="/vs/" id="vscom-mobile-dialog-click-vs"> <img src="https://visualstudio.microsoft.com/wp-content/uploads/2019/02/BrandVisualStudioWin2019-2.svg"> Visual Studio IDE <i class="vscom-icon vscom-icon--ChevronRightSmall"></i> </a> <a class="black-focus-outline" href="/vs/mac" id="vscom-mobile-dialog-click-vs-mac"> <img src="https://visualstudio.microsoft.com/wp-content/uploads/2019/09/VSforMacIcon2019-2.svg"> Visual Studio for Mac <i class="vscom-icon vscom-icon--ChevronRightSmall"></i> </a> <a class="black-focus-outline" href="https://code.visualstudio.com/?wt.mc_id=DX_841432" id="vscom-mobile-dialog-click-vscode"> <img src="https://visualstudio.microsoft.com/wp-content/uploads/2019/09/vs-code-responsive-01-1.png"> Visual Studio Code <i class="vscom-icon vscom-icon--ChevronRightSmall"></i> </a> </div> </div> <div class="vscom-modal-window-footer"> <a class="vscom-mobile-dialog-download" href="#" id="vscom-mobile-dialog-continue-download-click-generic"> <span class="vscom-mobile-dialog-download-text x-hidden-focus"> To continue downloading, click here <i class="vscom-icon vscom-icon--ChevronRightSmall"></i> </span> </a> </div> </div> </div> </div> <div id="home" style="position:relative;top:-1px;"></div> <section class="avada-page-titlebar-wrapper" aria-label="Page Title Bar"> <div class="fusion-page-title-bar fusion-page-title-bar-breadcrumbs fusion-page-title-bar-center"> <div class="fusion-page-title-row"> <div class="fusion-page-title-wrapper"> <div class="fusion-page-title-captions"> </div> </div> </div> </div> </section> <script>window.performance && performance.mark && performance.mark("MainAreaBegin")</script> <main id="main" role="main" class="clearfix width-100" style="padding-left:0px;padding-right:0px;"> <div class="fusion-row" style="max-width:100%;"> <div id="content" class="full-width"> <div id="post-689" class="post-689 page type-page status-publish hentry tag-realpage tag-realpage-tr-2"> <span class="entry-title rich-snippet-hidden">Visual Studio Dev Essentials</span><span class="updated rich-snippet-hidden">2024-07-19T14:15:48-07:00</span> <div class="post-content post-dev-essentials_dev-essentials"> <div class="fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background fusion-parallax-none vscom-hero-h3 nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-image:url("https://visualstudio.microsoft.com/wp-content/uploads/2023/02/TestingTools-scaled.webp");--awb-background-size:cover;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:calc( 1600px + );margin-left: calc(- / 2 );margin-right: calc(- / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:15px;--awb-margin-bottom-large:15px;--awb-width-medium:100%;--awb-order-medium:0;--awb-width-small:100%;--awb-order-small:0;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column"><div class="vscom-feature-hero--h3"> <div class="clr-white angled-bottom" data-bi-id="Hero"> <div class="hero-icon"> </div> <h1 style="max-width:34rem;" class="vscom-feature-hero-title">Visual Studio Dev Essentials</h1> <p>Free tools, cloud services, and training using the latest Visual Studio</p> <div class="vscom-btn-box"> <a href="https://my.visualstudio.com/Benefits?wt.mc_id=o~msft~vscom~devessentials-hero~mt689&campaign=o~msft~vscom~devessentials-hero~mt689" class="vscom-btn-primary vscom-btn-fill-grow fill-violet" aria-label="Join or access Visual Studio Dev Essentials now" data-bi-id="Hero" >Join or access now</a> <a href="/license-terms/devessentials" class="vscom-btn-wire fill-violet" data-bi-id="Hero">Terms and conditions</a> </div> </div> </div> </div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container has-pattern-background has-mask-background fusion-parallax-none download-lane nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--link_hover_color: #ffffff;--awb-background-position:center bottom;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:2rem;--awb-padding-bottom:6rem;--awb-background-image:url("https://visualstudio.microsoft.com/wp-content/uploads/2022/10/s6-two-column-bg.svg");--awb-background-size:cover;--awb-flex-wrap:wrap;" id="download-preview" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:calc( 1600px + );margin-left: calc(- / 2 );margin-right: calc(- / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:15px;--awb-margin-bottom-large:15px;--awb-width-medium:100%;--awb-order-medium:0;--awb-width-small:100%;--awb-order-small:0;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-title title fusion-title-1 fusion-sep-none fusion-title-center fusion-title-text fusion-title-size-two title-col"><h2 class="fusion-title-heading title-heading-center fusion-responsive-typography-calculated" style="margin:0;--fontSize:;line-height:;">Everything you need all in one place</h2></div><div class="fusion-text fusion-text-1 dev-services" style="--awb-content-alignment:center;"><p>Get everything you need to build and deploy your app on any platform. With state-of-the-art tools, the power of the cloud, training, and support, it’s our most comprehensive free developer program ever.</p> </div></div></div><div class="fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-padding-top:1rem;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:15px;--awb-margin-bottom-large:15px;--awb-width-medium:100%;--awb-order-medium:0;--awb-width-small:100%;--awb-order-small:0;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="fusion-content-boxes content-boxes columns row fusion-columns-1 fusion-columns-total-3 fusion-content-boxes-1 content-boxes-icon-on-top content-left fusion-content-boxes--equal-heights mac-boxes modern-vs-contentbox" id="support-overview-boxes" data-animationOffset="top-into-view" style="margin-top:2%;margin-bottom:2%;" data-bi-id='' data-bi-slot='' data-bi-id=''><style type="text/css">.fusion-content-boxes-1 .heading .content-box-heading {color:#191919;} .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover .heading .content-box-heading, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover .heading .heading-link .content-box-heading, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover .heading .content-box-heading, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover .heading .heading-link .content-box-heading, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover.link-area-box .fusion-read-more, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover.link-area-box .fusion-read-more::after, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover.link-area-box .fusion-read-more::before, .fusion-content-boxes-1 .fusion-content-box-hover .fusion-read-more:hover:after, .fusion-content-boxes-1 .fusion-content-box-hover .fusion-read-more:hover:before, .fusion-content-boxes-1 .fusion-content-box-hover .fusion-read-more:hover, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover.link-area-box .fusion-read-more, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover.link-area-box .fusion-read-more::after, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover.link-area-box .fusion-read-more::before, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover .icon .circle-no, .fusion-content-boxes-1 .heading .heading-link:hover .content-box-heading { color: #1e73be; } .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover .icon .circle-no { color: #1e73be !important; }.fusion-content-boxes-1 .fusion-content-box-hover .link-area-box.link-area-box-hover .fusion-content-box-button {background: #32145a;color: #ffffff;}.fusion-content-boxes-1 .fusion-content-box-hover .link-area-box.link-area-box-hover .fusion-content-box-button .fusion-button-text {color: #ffffff;} .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover .heading .icon > span { background-color: #1e73be !important; } .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover .heading .icon > span { border-color: #1e73be !important; } .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover.icon-hover-animation-pulsate .fontawesome-icon:after, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover.icon-hover-animation-pulsate .fontawesome-icon:after, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover.icon-wrapper-hover-animation-pulsate .icon span:after, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover.icon-wrapper-hover-animation-pulsate .icon span:after { -webkit-box-shadow:0 0 0 2px rgba(255,255,255,0.1), 0 0 10px 10px #1e73be, 0 0 0 10px rgba(255,255,255,0.5); -moz-box-shadow:0 0 0 2px rgba(255,255,255,0.1), 0 0 10px 10px #1e73be, 0 0 0 10px rgba(255,255,255,0.5); box-shadow: 0 0 0 2px rgba(255,255,255,0.1), 0 0 10px 10px #1e73be, 0 0 0 10px rgba(255,255,255,0.5); } </style><div class="fusion-column content-box-column reveal content-box-column content-box-column-1 col-lg-12 col-md-12 col-sm-12 content-box-column-last-in-row"><div class="col content-box-wrapper content-wrapper link-area-link-icon link-type-text icon-hover-animation-pulsate" style="background-color:rgba(255,255,255,0);" data-animationOffset="top-into-view"><div class="heading heading-with-icon icon-left"><div aria-hidden="true" class="image"><img decoding="async" src="https://visualstudio.microsoft.com/wp-content/uploads/2023/03/People-Community-Add.svg" width="64" height="64" alt="" /></div><h4 class="content-box-heading fusion-responsive-typography-calculated" style="font-size:24px;--fontSize:24;line-height:;">Developer tools</h4></div><div class="fusion-clearfix"></div><div class="content-container" style="color:#191919;"> <p>Editors, designers, and debuggers to develop for any platform</p> </div><a href="/dev-essentials/#dev-tools" data-bi-id=""class="vscom-arrow-link clr-violet" aria-label="Learn more about Developer tools"><span class="vscom-link-text">Learn more</span> <i class="vscom-icon vscom-icon--arrow-right"></i></a><div class="fusion-clearfix"></div></div></div><div class="fusion-column content-box-column reveal content-box-column content-box-column-2 col-lg-12 col-md-12 col-sm-12 content-box-column-last-in-row"><div class="col content-box-wrapper content-wrapper link-area-link-icon link-type-text icon-hover-animation-pulsate" style="background-color:rgba(255,255,255,0);" data-animationOffset="top-into-view"><div class="heading heading-with-icon icon-left"><div aria-hidden="true" class="image"><img decoding="async" src="https://visualstudio.microsoft.com/wp-content/uploads/2023/03/Cloud-Checkmark.svg" width="64" height="64" alt="" /></div><h4 class="content-box-heading fusion-responsive-typography-calculated" style="font-size:24px;--fontSize:24;line-height:;">Cloud services</h4></div><div class="fusion-clearfix"></div><div class="content-container" style="color:#191919;"> <p>Compute, storage, analytics, team collaboration and more</p> </div><a href="/dev-essentials/#cloud-services" data-bi-id=""class="vscom-arrow-link clr-violet" aria-label="Learn more about Cloud Services"><span class="vscom-link-text">Learn more</span> <i class="vscom-icon vscom-icon--arrow-right"></i></a><div class="fusion-clearfix"></div></div></div><div class="fusion-column content-box-column reveal content-box-column content-box-column-3 col-lg-12 col-md-12 col-sm-12 content-box-column-last content-box-column-last-in-row"><div class="col content-box-wrapper content-wrapper link-area-link-icon link-type-text icon-hover-animation-pulsate" style="background-color:rgba(255,255,255,0);" data-animationOffset="top-into-view"><div class="heading heading-with-icon icon-left"><div aria-hidden="true" class="image"><img decoding="async" src="https://visualstudio.microsoft.com/wp-content/uploads/2023/03/Laptop.svg" width="64" height="64" alt="" /></div><h4 class="content-box-heading fusion-responsive-typography-calculated" style="font-size:24px;--fontSize:24;line-height:;">Software</h4></div><div class="fusion-clearfix"></div><div class="content-container" style="color:#191919;"> <p>Trials and downloads, from operating systems to Office online apps</p> </div><a href="/dev-essentials/#software" data-bi-id=""class="vscom-arrow-link clr-violet" aria-label="Learn more about Software"><span class="vscom-link-text">Learn more</span> <i class="vscom-icon vscom-icon--arrow-right"></i></a><div class="fusion-clearfix"></div></div></div><style type="text/css"> .fusion-content-boxes-1 .fusion-content-box-hover .heading-link:hover .icon i.circle-yes, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box:hover .heading-link .icon i.circle-yes, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-link-icon-hover .heading .icon i.circle-yes, .fusion-content-boxes-1 .fusion-content-box-hover .link-area-box-hover .heading .icon i.circle-yes { background-color: #1e73be !important; border-color: #1e73be !important; }</style><div class="fusion-clearfix"></div></div></div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-3 has-pattern-background has-mask-background vscom-swimlane vscom-swimlane--whitelane nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:2rem;--awb-padding-bottom:4rem;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last" style="--awb-bg-size:cover;"><div class="fusion-column-wrapper fusion-flex-column-wrapper-legacy"><div class="fusion-menu-anchor" id="dev-tools"></div><div class="vscom-swimlane-content vscom-swimlane-bg vscom-swimlane-content--s2-bg-image-left vscom-swimlane-content--1" data-bi-id="" data-bi-id="" data-bi-slot=""><div class="vscom-swimlane--fifty-fifty vscom-swimlane--img-left"> <div class="vscom-gif-player "> <style type="text/css">.wp-image-138103.lazyloading, .wp-image-138103.lazyload { background-color: #d6d6d6; display: block; width: 100%; max-width: 561px; height: 0; padding-bottom: 62.3885918004%; } </style> <div class="vscom-image--dropshadow gifplayer-wrapper"> <a role="button" href="javascript:void(0)" aria-label="Dev Essentials Screen Shots" data-bi-id="" data-bi-area="" data-bi-hn="" data-bi-ecn="play" data-bi-name="play" data-bi-bhvr="240" > <img fetchpriority="high" decoding="async" class="img-responsive vscom-gif-player-img lazyload wp-image-138103" data-src="https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still.jpg" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/vscom-img-placeholder.png" alt="Dev Essentials Screen Shots" data-playtext="Click to play gif" data-pausetext="Click to pause gif" data-playon="auto" data-wait="true" data-aria="Screenshots of apps included in Dev Essentials" data-mode="gif" data-lazyload="true" width="561" height="350" data-srcset="https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-200x125.jpg 200w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-300x187.jpg 300w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-400x250.jpg 400w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still.jpg 561w" srcset="https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-200x125.jpg 200w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-300x187.jpg 300w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still-400x250.jpg 400w, https://visualstudio.microsoft.com/wp-content/uploads/2019/04/Dev_Essentials_Still.jpg 561w" sizes="(max-width: 561px) 100vw, 561px" /> <img decoding="async" class="gp-gif-element gif-loading lazyload" data-src="https://visualstudio.microsoft.com/wp-content/uploads/2017/04/Dev_Essentials.gif" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/vscom-img-placeholder.png" style="position: absolute; top: 0px; left: 0px;" alt="Dev Essentials Screen Shots" /> <div class="spinner"></div> <ins class="play-gif" style="display:none;" data-state="pause"> </ins> </a> </div> </div></div> <div class="vscom-swimlane--fifty-fifty"> <div class="vscom-swimlane-body"> <h2>All the tools you need</h2> <p>Tools to develop for any platform – for free. Tools include an extensible integrated development environment and code editors to create apps for macOS, Linux, and Windows, on PC or Mac.</p> <ul style="margin-left: 24px;"> <li>Visual Studio Community</li> <li>Visual Studio Code</li> <li>CODE Magazine*</li> <li>Pluralsight*</li> <li>Syncfusion Succinctly Series*</li> </ul> </div> </div></div><style>.vscom-swimlane-content--1::before { background-image: url("https://visualstudio.microsoft.com/wp-content/uploads/2022/12/s2-bg-02.png"); }</style><div class="fusion-clearfix"></div></div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-4 has-pattern-background has-mask-background vscom-swimlane nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:2rem;--awb-padding-bottom:4rem;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last" style="--awb-bg-size:cover;"><div class="fusion-column-wrapper fusion-flex-column-wrapper-legacy"><div class="fusion-menu-anchor" id="cloud-services"></div><div class="vscom-swimlane-content vscom-swimlane-bg vscom-swimlane-content--s1-bg-image-right vscom-swimlane-content--2" data-bi-id="" data-bi-id="" data-bi-slot=""><div class="vscom-swimlane--fifty-fifty"> <div class="vscom-swimlane-body"> <h2>Comprehensive set of cloud services</h2> <p>Free access to cloud services such as compute and storage, backend services for your mobile or web apps, services for IoT, machine learning, and analytics.</p> <ul style="margin-left: 24px;"> <li>Azure Free Account – includes 1 year of free services and $200 credit for the 1st month</li> <li>Azure DevOps</li> <li>Microsoft 365 Developer Program</li> <li>Power Apps Community Plan</li> </ul> <div class="vscom-link-wrapper"> <a class="vscom-arrow-link " href="https://azure.microsoft.com/free/" aria-label="Learn more about cloud services" target="_blank" rel="nofollow noopener"> <span class="vscom-link-text">Learn more</span> <i class="vscom-icon vscom-icon--arrow-right"></i> </a> </div> </div> </div> <div class="vscom-swimlane--fifty-fifty vscom-swimlane--img-right"> <span class="vscom-imageframe vscom-image--dropshadow reveal"> <style type="text/css" scoped="scoped">.wp-image-201929.lazyloading, .wp-image-201929.lazyload { background-color: #d6d6d6; display: block; width: 100%; max-width: 500px; height: 0; padding-bottom: 69.8%; } </style> <img decoding="async" data-src="https://visualstudio.microsoft.com/wp-content/uploads/2023/02/icon-cloud-dots-2.svg" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/vscom-img-placeholder.png" alt="" class="img-responsive lazyload wp-image-201929" width="500" height="349" > </span></div> </div><div class="fusion-clearfix"></div></div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-5 has-pattern-background has-mask-background vscom-swimlane vscom-swimlane--graylane nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:1rem;--awb-padding-bottom:4rem;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last" style="--awb-bg-size:cover;"><div class="fusion-column-wrapper fusion-flex-column-wrapper-legacy"><div class="fusion-menu-anchor" id="software"></div><div class="vscom-swimlane-content vscom-swimlane-bg vscom-swimlane-content--s2-bg-image-left vscom-swimlane-content--3" data-bi-id="" data-bi-id="" data-bi-slot=""><div class="vscom-swimlane--fifty-fifty vscom-swimlane--img-left"> <span class="vscom-imageframe vscom-image--dropshadow reveal"> <style type="text/css" scoped="scoped">.wp-image-171812.lazyloading, .wp-image-171812.lazyload { background-color: #d6d6d6; display: block; width: 100%; max-width: 1387px; height: 0; padding-bottom: 65.1045421774%; } </style> <img decoding="async" data-src="https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13.png" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/vscom-img-placeholder.png" alt="screenshot for welcome to Dev Essentials" class="img-responsive lazyload wp-image-171812" width="1387" height="903" data-srcset="https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-200x130.png 200w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-300x195.png 300w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-400x260.png 400w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-600x391.png 600w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-768x500.png 768w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-800x521.png 800w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-1024x667.png 1024w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-1200x781.png 1200w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13.png 1387w" srcset="https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-200x130.png 200w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-300x195.png 300w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-400x260.png 400w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-600x391.png 600w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-768x500.png 768w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-800x521.png 800w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-1024x667.png 1024w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13-1200x781.png 1200w, https://visualstudio.microsoft.com/wp-content/uploads/2021/04/DE-portal-screenshot-13.png 1387w" sizes="(max-width: 1387px) 100vw, 1387px" /> </span></div> <div class="vscom-swimlane--fifty-fifty"> <div class="vscom-swimlane-body"> <h2>Software trials and downloads</h2> <p>Free access to software trials and downloads make it easy for you to develop for multiple platforms.</p> <ul style="margin-left: 24px;"> <li>SQL Server Developer Edition</li> <li>Power BI</li> <li>Office Online</li> <li>Syncfusion Bold BI Cloud Edition*</li> </ul> </div> </div></div><style>.vscom-swimlane-content--3::before { background-image: url("https://visualstudio.microsoft.com/wp-content/uploads/2022/12/s2-bg-02.png"); }</style><div class="fusion-clearfix"></div></div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-6 has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:1rem;--awb-padding-bottom:3rem;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last fusion-column-no-min-height" style="--awb-bg-size:cover;--awb-margin-top:0px;--awb-margin-bottom:0px;"><div class="fusion-column-wrapper fusion-flex-column-wrapper-legacy"><div class="fusion-text fusion-text-2"><p style="margin-bottom: 0;">* Exclusive benefits only available through the Visual Studio Dev Essentials program.</p> </div><div class="fusion-clearfix"></div></div></div></div></div><div class="fusion-fullwidth fullwidth-box fusion-builder-row-7 fusion-flex-container has-pattern-background has-mask-background footer-banner nonhundred-percent-fullwidth non-hundred-percent-height-scrolling" style="--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:2rem;--awb-padding-bottom:2rem;--awb-background-color:#3b2e58;--awb-flex-wrap:wrap;" ><div class="fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap" style="max-width:calc( 1600px + );margin-left: calc(- / 2 );margin-right: calc(- / 2 );"><div class="fusion-layout-column fusion_builder_column fusion-builder-column-7 fusion_builder_column_1_1 1_1 fusion-flex-column" style="--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:15px;--awb-margin-bottom-large:15px;--awb-width-medium:100%;--awb-order-medium:0;--awb-width-small:100%;--awb-order-small:0;"><div class="fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column"><div class="vscom-banner-modern clr-white with-title "> <div class="vscom-banner-modern-wrapper content-left banner-row" style="max-width: ; "> <div class="banner-title-wrapper"> <span class="banner-title" style="">Free tools, cloud services, and training, included in your membership</span> </div> <div class="banner-content-wrapper"> </div> <div class="banner-cta-wrapper"> <a data-bi-id="banner" data-bi-compnm="banner" data-bi-hn="Free tools, cloud services, and training, included in your membership" data-bi-name="Join or access now" class=" vscom-btn-primary vscom-btn-fill-grow fill-violet" target="_blank" rel="noopener" href="https://my.visualstudio.com/Benefits?wt.mc_id=o~msft~vscom~devessentials-swimlane~689&amp;campaign=o~msft~vscom~devessentials-swimlane~689" aria-label="">Join or access now</a> <a data-bi-id="banner" data-bi-compnm="banner" data-bi-hn="Free tools, cloud services, and training, included in your membership" data-bi-name="Terms and conditions" class=" vscom-btn-primary vscom-btn-fill-grow fill-violet" target="_blank" rel="noopener" href="https://visualstudio.microsoft.com/license-terms/devessentials" aria-label="">Terms and conditions</a> </div> </div> </div></div></div></div></div> </div> </div> </div> </div> <!-- fusion-row --> </main> <!-- #main --> <script>window.performance && performance.mark && performance.mark("MainAreaEnd")</script> </div> <!-- wrapper --> <div id="social-experiment-footer" class="vscom-social-media vscom-social-media--dividers"> <div class="vscom-social-media-inner"> <div class="vscom-social-media-column flex-start"> <span class="vscom-social-media-text">Follow us</span> <a data-bi-id="footer-follow-social-media" data-bi-name="twitter-x" href="https://twitter.com/visualstudio" target="_blank" rel="nofollow noopener"><img src="https://visualstudio.microsoft.com/wp-content/uploads/2024/01/X-logo.svg" alt="Visual Studio on Twitter" /></a> <a data-bi-id="footer-follow-social-media" data-bi-name="facebook" href="https://www.facebook.com/visualstudio/" target="_blank" rel="nofollow noopener"><img src="https://visualstudio.microsoft.com/wp-content/uploads/2024/01/Facebook.svg" alt="Visual Studio on Facebook" /></a> <a data-bi-id="footer-follow-social-media" data-bi-name="linkedin" href="https://www.linkedin.com/showcase/microsoft-visual-studio" target="_blank" rel="nofollow noopener"><img src="https://visualstudio.microsoft.com/wp-content/uploads/2024/01/Linkedin.svg" alt="Visual Studio on Linkedin" /></a> <a data-bi-id="footer-follow-social-media" data-bi-name="youtube" href="https://www.youtube.com/user/VisualStudio/featured" target="_blank" rel="nofollow noopener"><img src="https://visualstudio.microsoft.com/wp-content/uploads/2024/01/Youtube.svg" alt="Visual Studio on Youtube" /></a> <a data-bi-id="footer-follow-social-media" data-bi-name="tiktok" href="https://www.tiktok.com/@visualstudio" target="_blank" rel="nofollow noopener"><img src="https://visualstudio.microsoft.com/wp-content/uploads/2024/10/Tiktok.svg" alt="Visual Studio on TikTok" /></a> </div> <div class="vscom-social-media-column flex-end vscom-social-media-column--col-sm"> <a data-bi-id="footer-follow-sites" href="https://visualstudio.microsoft.com/dev-essentials/">Dev Essentials</a> <span class="vscom-media-link-divider"></span> <a data-bi-id="footer-follow-sites" href="https://developercommunity.microsoft.com/VisualStudio" target="_blank" rel="nofollow noopener">Developer Community</a> <span class="vscom-media-link-divider"></span> </div> <div class="vscom-social-media-column flex-end"> <span class="vscom-social-media-text">Blogs:</span> <a data-bi-id="footer-follow-blogs" href="https://devblogs.microsoft.com/visualstudio" target="_blank" rel="nofollow noopener">Visual Studio</a> <a data-bi-id="footer-follow-blogs" href="https://devblogs.microsoft.com/dotnet" target="_blank" rel="nofollow noopener">.NET</a> <a data-bi-id="footer-follow-blogs" href="https://devblogs.microsoft.com/cppblog" target="_blank" rel="nofollow noopener">C++</a> </div> </div> </div> <a class="fusion-one-page-text-link fusion-page-load-link"></a> <!-- W3TC-include-js-head --> <!-- Fix for Multi Language picker options loading on 404 page --> <script>var domReadyScripts =[{"handle":"vscom","src":"https:\/\/visualstudio.microsoft.com\/wp-content\/plugins\/vscom-core\/assets\/js\/vscom.min.js","ver":1694020635,"deps":["classlist-polyfill"]},{"handle":"classlist-polyfill","src":"https:\/\/visualstudio.microsoft.com\/wp-content\/themes\/Avada-Child-Theme\/assets\/js\/classList.min.js","ver":1667498206}];</script><script id="vscom-dom-ready-inline" type="text/javascript">var VSCOM_Language = {"dropdown":"<select id=\"js-lang-picker\" class=\"vs-language-picker\" aria-label=\"Select Language\"><option value=\"https:\/\/visualstudio.microsoft.com\/dev-essentials\/\" selected=\"selected\">English<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/zh-hans\/dev-essentials\/\" data-lang-code=\"zh-hans\">\u7b80\u4f53\u4e2d\u6587 (Chinese, Simplified)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/zh-hant\/dev-essentials\/\" data-lang-code=\"zh-hant\">\u7e41\u9ad4\u4e2d\u6587 (Chinese, Traditional)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/fr\/dev-essentials\/\" data-lang-code=\"fr\">Fran\u00e7ais<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/de\/dev-essentials\/\" data-lang-code=\"de\">Deutsch<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/it\/dev-essentials\/\" data-lang-code=\"it\">Italiano<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/ja\/dev-essentials\/\" data-lang-code=\"ja\">\u65e5\u672c\u8a9e (Japanese)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/ru\/dev-essentials\/\" data-lang-code=\"ru\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/es\/dev-essentials\/\" data-lang-code=\"es\">Espa\u00f1ol<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/cs\/dev-essentials\/\" data-lang-code=\"cs\">\u010ce\u0161tina<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/ko\/dev-essentials\/\" data-lang-code=\"ko\">\ud55c\uad6d\uc5b4 (Korean)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/pl\/dev-essentials\/\" data-lang-code=\"pl\">polski<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/pt-br\/dev-essentials\/\" data-lang-code=\"pt-br\">Portugu\u00eas (Brasil)<\/option><option value=\"https:\/\/visualstudio.microsoft.com\/tr\/dev-essentials\/\" data-lang-code=\"tr\">T\u00fcrk\u00e7e<\/option><\/select>"};var microsoftUhfSettings = {"loginUrl":"https:\/\/app.vsaex.visualstudio.com\/go\/profile?wt.mc_id=o~msft~vscom~vssignin","logoutUrl":"https:\/\/app.vssps.visualstudio.com\/_signout?mkt=en-us&_ga=1.265116815.1812220160.1467138837","profileEndpoint":"https:\/\/app.vssps.visualstudio.com\/_apis\/profile\/profiles\/me","clientId":"d03813425c8362d0","label_profile":"Visual Studio profile","connectionDataEndpoint":"https:\/\/app.vssps.visualstudio.com\/_apis\/connectionData","ga":{"vsid_dimension":"dimension12"}};</script><link rel='stylesheet' id='vscom-gif-player-css-css' href='https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/css/vscom-gif-player.min.css?ver=1705686530' type='text/css' media='all' /> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-dom-ready-js/js/vscomDomReady.min.js?ver=1667498194" id="vscom-dom-ready-js-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/js/common.min.js?1690822824" id="vscom-common-script-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/js/dropdown-menu.min.js?ver=6.6.2" id="vscom-dropdown-js-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/plugins/vscom-fusion-extension/js/vscom-gif-player.min.js?ver=1717705780" id="vscom-gif-player-js-js"></script> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/uploads/fusion-scripts/b3ec2af5da51364b1fa3c6942258cf00.min.js?ver=3.11.10" id="fusion-scripts-js"></script> <script>var sliderBackgrounds = [];</script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script><script src="https://www.microsoft.com/onerfstatics/marketingsites-eus-prod/shell/_scrf/js/themes=default/54-af9f9f/d4-fb1f57/e1-a50eee/e7-954872/d8-97d509/f0-251fe2/46-be1318/77-04a268/11-240c7b/63-077520/a4-34de62/f9-a5b2ce/db-bc0148/dc-7e9864/6d-c07ea1/6f-dafe8c/f6-aa5278/73-a24d00/6d-1e7ed0/b7-cadaa7/c4-898cf2/ca-40b7b0/4e-ee3a55/3e-f5c39b/c3-6454d7/f9-7592d3/d0-e64f3e/92-10345d/79-499886/7e-cda2d3/58-ab4971/ca-108466/e0-3c9860/de-884374/1f-100dea/33-abe4df/2b-8e0ae6?ver=2.0&_cf=02242021_3231&iife=1"></script><script src="https://mem.gfx.ms/meversion?partner=VisualStudio&market=en-us&uhf=1" defer></script> <!--[if lte IE 8]> <script type="text/javascript" src="https://visualstudio.microsoft.com/wp-content/themes/Avada/assets/js/respond.js"></script> <![endif]--> <div id="footerArea" class="uhf" data-m='{"cN":"footerArea","cT":"Area_coreuiArea","id":"a2Body","sN":2,"aN":"Body"}'> <div id="footerRegion" data-region-key="footerregion" data-m='{"cN":"footerRegion","cT":"Region_coreui-region","id":"r1a2","sN":1,"aN":"a2"}' > <div id="footerUniversalFooter" data-m='{"cN":"footerUniversalFooter","cT":"Module_coreui-universalfooter","id":"m1r1a2","sN":1,"aN":"r1a2"}' data-module-id="Category|footerRegion|coreui-region|footerUniversalFooter|coreui-universalfooter"> <footer id="uhf-footer" class="c-uhff context-uhf" data-uhf-mscc-rq="false" data-footer-footprint="/VisualStudio/VisualStudioFooterMsft, fromService: True" data-m='{"cN":"Uhf footer_cont","cT":"Container","id":"c1m1r1a2","sN":1,"aN":"m1r1a2"}'> <nav class="c-uhff-nav" aria-label="Footer Resource links" data-m='{"cN":"Footer nav_cont","cT":"Container","id":"c1c1m1r1a2","sN":1,"aN":"c1m1r1a2"}'> <div class="c-uhff-nav-row"> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn1_cont","cT":"Container","id":"c1c1c1m1r1a2","sN":1,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">What's new</div> <ul class="c-list f-bare"> <li> <a aria-label="Surface Pro What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/surface/devices/surface-pro-11th-edition" data-m='{"cN":"Footer_WhatsNew_NewSurfacePro_nav","id":"n1c1c1c1m1r1a2","sN":1,"aN":"c1c1c1m1r1a2"}'>Surface Pro</a> </li> <li> <a aria-label="Surface Laptop What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/surface/devices/surface-laptop-7th-edition" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptop_nav","id":"n2c1c1c1m1r1a2","sN":2,"aN":"c1c1c1m1r1a2"}'>Surface Laptop</a> </li> <li> <a aria-label="Surface Laptop Studio 2 What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/d/Surface-Laptop-Studio-2/8rqr54krf1dz" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopStudio2_nav","id":"n3c1c1c1m1r1a2","sN":3,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Studio 2</a> </li> <li> <a aria-label="Surface Laptop Go 3 What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/d/Surface-Laptop-Go-3/8p0wwgj6c6l2" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopGo3_nav","id":"n4c1c1c1m1r1a2","sN":4,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Go 3</a> </li> <li> <a aria-label="Microsoft Copilot What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-copilot" data-m='{"cN":"Footer_WhatsNew_CopilotMicrosoft_nav","id":"n5c1c1c1m1r1a2","sN":5,"aN":"c1c1c1m1r1a2"}'>Microsoft Copilot</a> </li> <li> <a aria-label="AI in Windows What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/windows/copilot-ai-features" data-m='{"cN":"Whatsnew_AIinWindows_nav","id":"n6c1c1c1m1r1a2","sN":6,"aN":"c1c1c1m1r1a2"}'>AI in Windows</a> </li> <li> <a aria-label="Explore Microsoft products What's new" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-products-and-apps" data-m='{"cN":"Footer_WhatsNew_ExploreMicrosoftProducts_nav","id":"n7c1c1c1m1r1a2","sN":7,"aN":"c1c1c1m1r1a2"}'>Explore Microsoft products</a> </li> <li> <a aria-label="Windows 11 apps What's new" class="c-uhff-link" href="https://www.microsoft.com/windows/windows-11-apps" data-m='{"cN":"Footer_WhatsNew_Windows_11_apps_nav","id":"n8c1c1c1m1r1a2","sN":8,"aN":"c1c1c1m1r1a2"}'>Windows 11 apps</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn2_cont","cT":"Container","id":"c2c1c1m1r1a2","sN":2,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Microsoft Store</div> <ul class="c-list f-bare"> <li> <a aria-label="Account profile Microsoft Store" class="c-uhff-link" href="https://account.microsoft.com/" data-m='{"cN":"Footer_StoreandSupport_AccountProfile_nav","id":"n1c2c1c1m1r1a2","sN":1,"aN":"c2c1c1m1r1a2"}'>Account profile</a> </li> <li> <a aria-label="Download Center Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/download" data-m='{"cN":"Footer_StoreandSupport_DownloadCenter_nav","id":"n2c2c1c1m1r1a2","sN":2,"aN":"c2c1c1m1r1a2"}'>Download Center</a> </li> <li> <a aria-label="Microsoft Store support Microsoft Store" class="c-uhff-link" href="https://go.microsoft.com/fwlink/?linkid=2139749" data-m='{"cN":"Footer_StoreandSupport_SalesAndSupport_nav","id":"n3c2c1c1m1r1a2","sN":3,"aN":"c2c1c1m1r1a2"}'>Microsoft Store support</a> </li> <li> <a aria-label="Returns Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/returns" data-m='{"cN":"Footer_StoreandSupport_Returns_nav","id":"n4c2c1c1m1r1a2","sN":4,"aN":"c2c1c1m1r1a2"}'>Returns</a> </li> <li> <a aria-label="Order tracking Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/order-tracking" data-m='{"cN":"Footer_StoreandSupport_OrderTracking_nav","id":"n5c2c1c1m1r1a2","sN":5,"aN":"c2c1c1m1r1a2"}'>Order tracking</a> </li> <li> <a aria-label="Certified Refurbished Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/certified-refurbished-products" data-m='{"cN":"Footer_StoreandSupport_StoreLocations_nav","id":"n6c2c1c1m1r1a2","sN":6,"aN":"c2c1c1m1r1a2"}'>Certified Refurbished</a> </li> <li> <a aria-label="Microsoft Store Promise Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/why-microsoft-store?icid=footer_why-msft-store_7102020" data-m='{"cN":"Footer_StoreandSupport_MicrosoftPromise_nav","id":"n7c2c1c1m1r1a2","sN":7,"aN":"c2c1c1m1r1a2"}'>Microsoft Store Promise</a> </li> <li> <a aria-label="Flexible Payments Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/payment-financing-options?icid=footer_financing_vcc" data-m='{"cN":"Footer_StoreandSupport_Financing_nav","id":"n8c2c1c1m1r1a2","sN":8,"aN":"c2c1c1m1r1a2"}'>Flexible Payments</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn3_cont","cT":"Container","id":"c3c1c1m1r1a2","sN":3,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Education</div> <ul class="c-list f-bare"> <li> <a aria-label="Microsoft in education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education" data-m='{"cN":"Footer_Education_MicrosoftInEducation_nav","id":"n1c3c1c1m1r1a2","sN":1,"aN":"c3c1c1m1r1a2"}'>Microsoft in education</a> </li> <li> <a aria-label="Devices for education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/devices/overview" data-m='{"cN":"Footer_Education_DevicesforEducation_nav","id":"n2c3c1c1m1r1a2","sN":2,"aN":"c3c1c1m1r1a2"}'>Devices for education</a> </li> <li> <a aria-label="Microsoft Teams for Education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/products/teams" data-m='{"cN":"Footer_Education_MicrosoftTeamsforEducation_nav","id":"n3c3c1c1m1r1a2","sN":3,"aN":"c3c1c1m1r1a2"}'>Microsoft Teams for Education</a> </li> <li> <a aria-label="Microsoft 365 Education Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/education/products/microsoft-365" data-m='{"cN":"Footer_Education_Microsoft365Education_nav","id":"n4c3c1c1m1r1a2","sN":4,"aN":"c3c1c1m1r1a2"}'>Microsoft 365 Education</a> </li> <li> <a aria-label="How to buy for your school Education" class="c-uhff-link" href="https://www.microsoft.com/education/how-to-buy" data-m='{"cN":"Footer_Howtobuyforyourschool_nav","id":"n5c3c1c1m1r1a2","sN":5,"aN":"c3c1c1m1r1a2"}'>How to buy for your school</a> </li> <li> <a aria-label="Educator training and development Education" class="c-uhff-link" href="https://education.microsoft.com/" data-m='{"cN":"Footer_Education_EducatorTrainingDevelopment_nav","id":"n6c3c1c1m1r1a2","sN":6,"aN":"c3c1c1m1r1a2"}'>Educator training and development</a> </li> <li> <a aria-label="Deals for students and parents Education" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/education" data-m='{"cN":"Footer_Education_DealsForStudentsandParents_nav","id":"n7c3c1c1m1r1a2","sN":7,"aN":"c3c1c1m1r1a2"}'>Deals for students and parents</a> </li> <li> <a aria-label="Azure for students Education" class="c-uhff-link" href="https://azure.microsoft.com/en-us/free/students/" data-m='{"cN":"Footer_Education_Azureforstudents_nav","id":"n8c3c1c1m1r1a2","sN":8,"aN":"c3c1c1m1r1a2"}'>Azure for students</a> </li> </ul> </div> </div> <div class="c-uhff-nav-row"> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn4_cont","cT":"Container","id":"c4c1c1m1r1a2","sN":4,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Business</div> <ul class="c-list f-bare"> <li> <a aria-label="Microsoft Cloud Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-cloud" data-m='{"cN":"Footer_Business_Microsoft_Cloud_nav","id":"n1c4c1c1m1r1a2","sN":1,"aN":"c4c1c1m1r1a2"}'>Microsoft Cloud</a> </li> <li> <a aria-label="Microsoft Security Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/security" data-m='{"cN":"Footer_Business_Microsoft Security_nav","id":"n2c4c1c1m1r1a2","sN":2,"aN":"c4c1c1m1r1a2"}'>Microsoft Security</a> </li> <li> <a aria-label="Dynamics 365 Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/dynamics-365" data-m='{"cN":"Footer_Business_MicrosoftDynamics365_nav","id":"n3c4c1c1m1r1a2","sN":3,"aN":"c4c1c1m1r1a2"}'>Dynamics 365</a> </li> <li> <a aria-label="Microsoft 365 Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-365/business" data-m='{"cN":"Footer_Business_M365_nav","id":"n4c4c1c1m1r1a2","sN":4,"aN":"c4c1c1m1r1a2"}'>Microsoft 365</a> </li> <li> <a aria-label="Microsoft Power Platform Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/power-platform" data-m='{"cN":"Footer_DeveloperAndIT_Power Platform_nav","id":"n5c4c1c1m1r1a2","sN":5,"aN":"c4c1c1m1r1a2"}'>Microsoft Power Platform</a> </li> <li> <a aria-label="Microsoft Teams Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software" data-m='{"cN":"Footer_Business_Microsoft365_nav","id":"n6c4c1c1m1r1a2","sN":6,"aN":"c4c1c1m1r1a2"}'>Microsoft Teams</a> </li> <li> <a aria-label="Microsoft 365 Copilot Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/microsoft-365/copilot/copilot-for-work" data-m='{"cN":"Footer_CopilotMicrosoft365_nav","id":"n7c4c1c1m1r1a2","sN":7,"aN":"c4c1c1m1r1a2"}'>Microsoft 365 Copilot</a> </li> <li> <a aria-label="Small Business Business" class="c-uhff-link" href="https://www.microsoft.com/en-us/store/b/business?icid=CNavBusinessStore" data-m='{"cN":"Footer_Business-SmallBusiness_nav","id":"n8c4c1c1m1r1a2","sN":8,"aN":"c4c1c1m1r1a2"}'>Small Business</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn5_cont","cT":"Container","id":"c5c1c1m1r1a2","sN":5,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Developer & IT</div> <ul class="c-list f-bare"> <li> <a aria-label="Azure Developer & IT" class="c-uhff-link" href="https://azure.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftAzure_nav","id":"n1c5c1c1m1r1a2","sN":1,"aN":"c5c1c1m1r1a2"}'>Azure</a> </li> <li> <a aria-label="Developer Center Developer & IT" class="c-uhff-link" href="https://developer.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_DeveloperCenter_nav","id":"n2c5c1c1m1r1a2","sN":2,"aN":"c5c1c1m1r1a2"}'>Developer Center</a> </li> <li> <a aria-label="Documentation Developer & IT" class="c-uhff-link" href="https://learn.microsoft.com/docs/" data-m='{"cN":"Footer_DeveloperAndIT_Documentation_nav","id":"n3c5c1c1m1r1a2","sN":3,"aN":"c5c1c1m1r1a2"}'>Documentation</a> </li> <li> <a aria-label="Microsoft Learn Developer & IT" class="c-uhff-link" href="https://learn.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftLearn_nav","id":"n4c5c1c1m1r1a2","sN":4,"aN":"c5c1c1m1r1a2"}'>Microsoft Learn</a> </li> <li> <a aria-label="Microsoft Tech Community Developer & IT" class="c-uhff-link" href="https://techcommunity.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftTechCommunity_nav","id":"n5c5c1c1m1r1a2","sN":5,"aN":"c5c1c1m1r1a2"}'>Microsoft Tech Community</a> </li> <li> <a aria-label="Azure Marketplace Developer & IT" class="c-uhff-link" href="https://azuremarketplace.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_AzureMarketplace_nav","id":"n6c5c1c1m1r1a2","sN":6,"aN":"c5c1c1m1r1a2"}'>Azure Marketplace</a> </li> <li> <a aria-label="AppSource Developer & IT" class="c-uhff-link" href="https://appsource.microsoft.com/en-us/" data-m='{"cN":"Footer_DeveloperAndIT_AppSource_nav","id":"n7c5c1c1m1r1a2","sN":7,"aN":"c5c1c1m1r1a2"}'>AppSource</a> </li> <li> <a aria-label="Visual Studio Developer & IT" class="c-uhff-link" href="https://visualstudio.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftVisualStudio_nav","id":"n8c5c1c1m1r1a2","sN":8,"aN":"c5c1c1m1r1a2"}'>Visual Studio</a> </li> </ul> </div> <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn6_cont","cT":"Container","id":"c6c1c1m1r1a2","sN":6,"aN":"c1c1m1r1a2"}'> <div class="c-heading-4" role="heading" aria-level="2">Company</div> <ul class="c-list f-bare"> <li> <a aria-label="Careers Company" class="c-uhff-link" href="https://careers.microsoft.com/" data-m='{"cN":"Footer_Company_Careers_nav","id":"n1c6c1c1m1r1a2","sN":1,"aN":"c6c1c1m1r1a2"}'>Careers</a> </li> <li> <a aria-label="About Microsoft Company" class="c-uhff-link" href="https://www.microsoft.com/about" data-m='{"cN":"Footer_Company_AboutMicrosoft_nav","id":"n2c6c1c1m1r1a2","sN":2,"aN":"c6c1c1m1r1a2"}'>About Microsoft</a> </li> <li> <a aria-label="Company news Company" class="c-uhff-link" href="https://news.microsoft.com/" data-m='{"cN":"Footer_Company_CompanyNews_nav","id":"n3c6c1c1m1r1a2","sN":3,"aN":"c6c1c1m1r1a2"}'>Company news</a> </li> <li> <a aria-label="Privacy at Microsoft Company" class="c-uhff-link" href="https://privacy.microsoft.com/en-us" data-m='{"cN":"Footer_Company_PrivacyAtMicrosoft_nav","id":"n4c6c1c1m1r1a2","sN":4,"aN":"c6c1c1m1r1a2"}'>Privacy at Microsoft</a> </li> <li> <a aria-label="Investors Company" class="c-uhff-link" href="https://www.microsoft.com/investor/default.aspx" data-m='{"cN":"Footer_Company_Investors_nav","id":"n5c6c1c1m1r1a2","sN":5,"aN":"c6c1c1m1r1a2"}'>Investors</a> </li> <li> <a aria-label="Diversity and inclusion Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/diversity/" data-m='{"cN":"Footer_Company_DiversityAndInclusion_nav","id":"n6c6c1c1m1r1a2","sN":6,"aN":"c6c1c1m1r1a2"}'>Diversity and inclusion</a> </li> <li> <a aria-label="Accessibility Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/accessibility" data-m='{"cN":"Footer_Company_Accessibility_nav","id":"n7c6c1c1m1r1a2","sN":7,"aN":"c6c1c1m1r1a2"}'>Accessibility</a> </li> <li> <a aria-label="Sustainability Company" class="c-uhff-link" href="https://www.microsoft.com/en-us/sustainability/" data-m='{"cN":"Footer_Company_Sustainability_nav","id":"n8c6c1c1m1r1a2","sN":8,"aN":"c6c1c1m1r1a2"}'>Sustainability</a> </li> </ul> </div> </div> </nav> <div class="c-uhff-base"> <a id="locale-picker-link" aria-label="Content Language Selector. Currently set to English (United States)" class="c-uhff-link c-uhff-lang-selector c-glyph glyph-world" href="#" data-m='{"cN":"locale_picker(US)_nav","id":"n7c1c1m1r1a2","sN":7,"aN":"c1c1m1r1a2"}'>English (United States)</a> <a data-m='{"id":"n8c1c1m1r1a2","sN":8,"aN":"c1c1m1r1a2"}' href="https://aka.ms/yourcaliforniaprivacychoices" class='c-uhff-link c-uhff-ccpa'> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43"> <title>Your Privacy Choices Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/> </svg> <span>Your Privacy Choices</span> </a> <noscript> <a data-m='{"id":"n9c1c1m1r1a2","sN":9,"aN":"c1c1m1r1a2"}' href="https://aka.ms/yourcaliforniaprivacychoices" class='c-uhff-link c-uhff-ccpa'> <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43"> <title>Your Privacy Choices Opt-Out Icon</title> <path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"/> <path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"/> <path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"/> <path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"/> </svg> <span>Your Privacy Choices</span> </a> </noscript> <a data-m='{"id":"n10c1c1m1r1a2","sN":10,"aN":"c1c1m1r1a2"}' href="https://go.microsoft.com/fwlink/?linkid=2259814" class="c-uhff-link c-uhff-consumer"> <span>Consumer Health Privacy</span> </a> <nav aria-label="Microsoft corporate links"> <ul class="c-list f-bare" data-m='{"cN":"Corp links_cont","cT":"Container","id":"c11c1c1m1r1a2","sN":11,"aN":"c1c1m1r1a2"}'> <li id="c-uhff-footer_contactus"> <a class="c-uhff-link" href="https://visualstudio.microsoft.com/support/" data-mscc-ic="false" data-m='{"cN":"Footer_ContactUs_nav","id":"n1c11c1c1m1r1a2","sN":1,"aN":"c11c1c1m1r1a2"}'>Contact us</a> </li> <li id="c-uhff-footer_privacyandcookies"> <a class="c-uhff-link" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-mscc-ic="false" data-m='{"cN":"Footer_PrivacyandCookies_nav","id":"n2c11c1c1m1r1a2","sN":2,"aN":"c11c1c1m1r1a2"}'>Privacy & cookies</a> </li> <li class=" x-hidden" id="c-uhff-footer_managecookies"> <a class="c-uhff-link" href="#" data-mscc-ic="false" data-m='{"cN":"Footer_ManageCookies_nav","id":"n3c11c1c1m1r1a2","sN":3,"aN":"c11c1c1m1r1a2"}'>Manage cookies</a> </li> <li id="c-uhff-footer_termsofuse"> <a class="c-uhff-link" href="https://azure.microsoft.com/en-us/support/legal/" data-mscc-ic="false" data-m='{"cN":"Footer_TermsOfUse_nav","id":"n4c11c1c1m1r1a2","sN":4,"aN":"c11c1c1m1r1a2"}'>Terms of use</a> </li> <li id="c-uhff-footer_trademarks"> <a class="c-uhff-link" href="https://www.microsoft.com/trademarks" data-mscc-ic="false" data-m='{"cN":"Footer_Trademarks_nav","id":"n5c11c1c1m1r1a2","sN":5,"aN":"c11c1c1m1r1a2"}'>Trademarks</a> </li> <li id="c-uhff-footer_aboutourads"> <a class="c-uhff-link" href="https://choice.microsoft.com/" data-mscc-ic="false" data-m='{"cN":"Footer_Aboutourads_nav","id":"n6c11c1c1m1r1a2","sN":6,"aN":"c11c1c1m1r1a2"}'>About our ads</a> </li> <li>© Microsoft 2024</li> </ul> </nav> </div> </footer> <script id="uhf-footer-ccpa"> const globalPrivacyControlEnabled = navigator.globalPrivacyControl; const GPC_DataSharingOptIn = (globalPrivacyControlEnabled) ? false : checkThirdPartyAdsOptOutCookie(); function checkThirdPartyAdsOptOutCookie() { try { const ThirdPartyAdsOptOutCookieName = '3PAdsOptOut'; var cookieValue = getCookie(ThirdPartyAdsOptOutCookieName); return cookieValue != 1; } catch { return true; } } function getCookie(cookieName) { var cookieValue = document.cookie.match('(^|;)\\s*' + cookieName + '\\s*=\\s*([^;]+)'); return (cookieValue) ? cookieValue[2] : ''; } </script> </div> </div> </div> <!--Below DIV tag is for Usabilla Button --> <div id="usabilla-button" class="vscom-usabilla-button"> <a tabindex="0" id="usbl-integrated-button" data-bi-id="Usabilla" href="javascript:" class="vscom-usabilla-link" role="button" onclick="custom_vs_usabilla_call()" onkeypress="if(event.keyCode==32||event.keyCode==13){event.preventDefault();var bt = document.getElementById('usbl-integrated-button');bt.click(event);};" > <p class="vscom-usabilla-text"> Feedback <img class="vscom-usabilla-icon" src="https://visualstudio.microsoft.com/wp-content/themes/Avada-Child-Theme/assets/img/edit-outline.svg" alt="" /> </p> </a> </div> <!-- Implementation of the 3PDS (Third-Party Data Sharing) process is followed by embedding the Usabilla Live code --> <script type="text/javascript"> // Check if GPC_DataSharingOptIn is a boolean before setting the property to 1DS if (typeof GPC_DataSharingOptIn === 'boolean') { awa.sku.getPropertyManager().getPropertiesContext().web.gpcDataSharingOptIn = GPC_DataSharingOptIn } function custom_vs_usabilla_call() { window.lightningjs||function(n){var e="lightningjs";function t(e,t){var r,i,a,o,d,c;return t&&(t+=(/\?/.test(t)?"&":"?")+"lv=1"),n[e]||(r=window,i=document,a=e,o=i.location.protocol,d="load",c=0,function(){n[a]=function(){var t=arguments,i=this,o=++c,d=i&&i!=r&&i.id||0;function s(){return s.id=o,n[a].apply(s,arguments)}return(e.s=e.s||[]).push([o,d,t]),s.then=function(n,t,r){var i=e.fh[o]=e.fh[o]||[],a=e.eh[o]=e.eh[o]||[],d=e.ph[o]=e.ph[o]||[];return n&&i.push(n),t&&a.push(t),r&&d.push(r),s},s};var e=n[a]._={};function s(){e.P(d),e.w=1,n[a]("_load")}e.fh={},e.eh={},e.ph={},e.l=t?t.replace(/^\/\//,("https:"==o?o:"http:")+"//"):t,e.p={0:+new Date},e.P=function(n){e.p[n]=new Date-e.p[0]},e.w&&s(),r.addEventListener?r.addEventListener(d,s,!1):r.attachEvent("onload",s);var l=function(){function n(){return["<!DOCTYPE ",o,"><",o,"><head></head><",t,"><",r,' src="',e.l,'"></',r,"></",t,"></",o,">"].join("")}var t="body",r="script",o="html",d=i[t];if(!d)return setTimeout(l,100);e.P(1);var c,s=i.createElement("div"),h=s.appendChild(i.createElement("div")),u=i.createElement("iframe");s.style.display="none",d.insertBefore(s,d.firstChild).id="lightningjs-"+a,u.frameBorder="0",u.id="lightningjs-frame-"+a,/MSIE[ ]+6/.test(navigator.userAgent)&&(u.src="javascript:false"),u.allowTransparency="true",h.appendChild(u);try{u.contentWindow.document.open()}catch(n){e.domain=i.domain,c="javascript:var d=document.open();d.domain='"+i.domain+"';",u.src=c+"void(0);"}try{var p=u.contentWindow.document;p.write(n()),p.close()}catch(e){u.src=c+'d.write("'+n().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}e.P(2)};e.l&&l()}()),n[e].lv="1",n[e]}var r=window.lightningjs=t(e);r.require=t,r.modules=n}({});window.usabilla_live = lightningjs.require("usabilla_live", "//w.usabilla.com/c1a9f67c29cb.js"); window.usabilla_live("hide"); window.usabilla_live("click"); //document.getElementById("usbl-integrated-button").addEventListener("click",function(){ //window.usabilla_live("click"); //}); } </script> <!-- end usabilla live embed code --> <script src="/wp-content/themes/Avada-Child-Theme/assets/js/vscom-usabilla-a11y.js"></script> <script>window.performance && performance.mark && performance.mark("BodyAreaEnd")</script> </body> </html>